一、计算机五大组成单元
组成计算机五大单元可以合并成三大核心组件:CPU、IO设备、主存储器
1、控制单元+算数逻辑单元=>CPU
2、主存储器,即主记忆体
3、输入单元Input+输出单元Outpu=>IO设备
二、CPU工作流程
CPU的核心工作在于进行运算和判断,那么要被运算与判断的数据是从哪里来的?
CPU读取的数据都是从主存储器(内存)来的!主存储器内的数据则是从输入单元所传输进来!而CPU处理完毕的数据也必须先写回主存储器中,最后数据才从主存储器传输到输出单元。
所以计算机五大组成部分的基本工作流程就是:输入单元=>主存储器=>CPU=>主存储器=>输出单元
而CPU会从内存中取指令->解码->执行,然后再取指->解码->执行下一条指令,周而复始,直至整个程序被执行完成。
三、CPU指令集
1.cpu的架构
四大 CPU 架构:ARM,X86,MIPS,PowerPC:
#1.ARM:功耗低,在无线局域网,3G,手机终端,手持设备,有线网络通信设备应用广泛;
#2.MIPS:被CISCO公司大量采用在高端路由器上;
#3.PowerPC:是通信和工业控制领域应用广泛的处理器,华为中兴的设备,
2.中央处理器体系结构
中央处理器体系结构:
#1.冯诺依曼:程序指令存储器和数据存储器合并在一起的存储器结构;
#2.哈弗结构: 分开存储;
3.指令集
我们已经知道CPU内部是含有微指令集的,我们所使用的的软件都要经过CPU内部的微指令集来完成才行。这些指令集的设计主要又被分为两种设计理念,这就是目前世界上常见到的两种主要的CPU种类:分别是精简指令集(RISC)与复杂指令集(CISC)系统。下面我们就来谈谈这两种不同CPU种类的差异!
# 1.精简指令集(了解)
精简指令集(Reduced Instruction Set Computing,RISC):这种CPU的设计中,微指令集较为精简,每个指令的运行时间都很短,完成的动作也很单纯,指令的执行效能较佳;但是若要做复杂的事情,就要由多个指令来完成。常见的RISC指令集CPU主要例如Sun公司的SPARC系列、IBM公司的Power Architecture(包括PowerPC)系列、与ARM系列等。【注:Sun已经被Oracle收购;】
SPARC架构的计算机常用于学术领域的大型工作站中,包括银行金融体系的主服务器也都有这类的计算机架构;
PowerPC架构的应用,如Sony出产的Play Station 3(PS3)使用的就是该架构的Cell处理器。
ARM是世界上使用范围最广的CPU了,常用的各厂商的手机、PDA、导航系统、网络设备等,几乎都用该架构的CPU。
# 2.复杂指令集
复杂指令集(Complex Instruction Set Computer,CISC)与RISC不同,在CISC的微指令集中,每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂,每条指令的长度并不相同。因此指令执行较为复杂所以每条指令花费的时间较长,但每条个别指令可以处理的工作较为丰富。常见的CISC微指令集CPU主要有AMD、Intel、VIA等的x86架构的CPU。
# 3.总结:
RISC: 指令少,指令单周期执行,目标代码更大;ARM,MIPS,PowerPC
CISC: 指令复杂,指令周期长,目标代码多;X86,
CPU按照指令集可以分为精简指令集CPU和复杂指令集CPU两种,区别在于前者的指令集精简,每个指令的运行时间都很短,完成的动作也很单纯,指令的执行效能较佳;但是若要做复杂的事情,就要由多个指令来完成。后者的指令集每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂,每条指令的长度并不相同。因为指令执行较为复杂所以每条指令花费的时间较长,但每条个别指令可以处理的工作较为丰富。
4.x86架构64位
#1.x86架构
x86是针对cpu的型号或者说架构的一种统称,详细地讲,最早的那颗Intel发明出来的CPU代号称为8086,后来在8086的基础上又开发出了80285、80386....,因此这种架构的CPU就被统称为x86架构了。
由于AMD、Intel、VIA所开发出来的x86架构CPU被大量使用于个人计算机上面,因此,个人计算机常被称为x86架构的计算机!
程序员开发出的软件最终都要翻译成cpu的指令集才能运行,因此软件的版本必须与cpu的架构契合,举个例子,我们在MySQL官网下载软件MySQL时名字为:
Windows(x86,32-bit),ZIP Archive
(mysql-5.7.20-win32.zip)
我们发现名字中有x86,这其实就是告诉我们:该软件应该运行在x86架构的计算机上。
#2.64位
cpu的位数指的是cpu一次性能从内存中取出多少位二进制指令,64bit指的是一次性能从内存中取出64位二进制指令。
在2003年以前由Intel所开发的x86架构CPU由8位升级到16、32位,后来AMD依此架构修改新一代的CPU为64位,到现在,个人计算机CPU通常都是x86_64的架构。
cpu具有向下兼容性,指的是64位的cpu既可以运行64位的软件,也可以运行32位的软件,而32位的cpu只能运行32位的软件。这其实很好理解,如果把cpu的位数当成是车道的宽,而内存中软件的指令当做是待通行的车辆,宽64的车道每次肯定既可以通行64辆车,也可以通信32辆车,而宽32的车道每次却只能通行32辆车
5.内核态与用户态
内核态与用户态,代表cpu的两种工作状态:
#1.内核态:运行的程序是操作系统,可以操作计算机硬件
#2.用户态:运行的程序是应用程序,不能操作计算机硬件
6.内核态与用户态的转换
应用程序的运行必然涉及到计算机硬件的操作,那就必须有用户态切换到内核态下才能实现,所以计算机工作时在频繁发生内核态与用户态的转换
7.多线程与多核芯片
2核4线程:
2核代表有两个cpu,4线程指的是每个cpu都有两个线程=》假4核
4核8线程:
4核代表有4个cpu,8线程指的是每个cpu都有两个线程=》假8核
8.CPU历史
微处理器由一片或少数几片大规模集成电路组成的中央处理器。这些电路执行控制部件和算术逻辑部件的功能。微处理器能完成取指令、执行指令,以及与外界存储器和逻辑部件交换信息等操作,是微型计算机的运算控制部分。它可与存储器和外围电路芯片组成微型计算机。
计算机的发展主要表现在其核心部件——微处理器的发展上,每当一款新型的微处理器出现时,就会带动计算机系统的其他部件的相应发展,如计算机体系结构的进一步优化,存储器存取容量的不断增大、存取速度的不断提高,外围设备的不断改进以及新设备的不断出现等。根据微处理器的字长和功能,可将其发展划分为以下几个阶段。
第1阶段(1971——1973年)是4位和8位低档微处理器时代,通常称为第1代。
第2阶段(1974——1977年)是8位中高档微处理器时代,通常称为第2代。
第3阶段(1978——1984年)是16位微处理器时代,通常称为第3代。
第4阶段(1985——1992年)是32位微处理器时代,又称为第4代。
第5阶段(1993-2005年)是奔腾(pentium)系列微处理器时代,通常称为第5代。
第6阶段(2005年至今)是酷睿(core)系列微处理器时代,通常称为第6代。“酷睿”是一款领先节能的新型微架构,设计的出发点是提供卓然出众的性能和能效,提高每瓦特性能,也就是所谓的能效比。
9.运算器和控制器
常将运算器和控制器合称为中央处理器(Central Processing Unit,CPU)。
其中运算器用来主要负责程序运算与逻辑判断,控制器则主要协调各组件和各单元的工作,所以CPU的工作主要在于管理和运算。可以说计算机的大脑就是CPU
#1.运算器
运算器是对信息进行处理和运算的部件。经常进行的运算是算术运算和逻辑运算,所以运算器又可称为算术逻辑运算部件(Arithmetic and Logical,ALU)。
运算器的核心是加法器。运算器中还有若干个通用寄存器或累加寄存器,用来暂存操作数并存放运算结果。寄存器的存取速度比存储器的存放速度快很多。
#2.控制器
控制器是整个计算机的指挥中心,它的主要功能是按照人们预先确定的操作步骤,控制整个计算机的各部件有条不紊的自动工作。
控制器从主存中逐条地读取出指令进行分析,根据指令的不同来安排操作顺序,向各部件发出相应的操作信号,控制它们执行指令所规定的任务。
四、存储器
1.存储器的分类
#1.RAM(内存)
随机存取存储器(random access memory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。
#2.ROM (只读内存)
只读内存(Read-Only Memory)是一种只能读取资料的内存。在制造过程中,将资料以一特制光罩(mask)烧录于线路中,其资料内容在写入后就不能更改,所以有时又称为“光罩式只读内存”(mask ROM)。此内存的制造成本较低,常用于电脑中的开机启动。
#3.CMOS
存取速度慢,断电数据丢失,耗电量极低
#4.硬盘
硬盘是电脑主要的存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成。碟片外覆盖有铁磁性材料。
硬盘有固态硬盘(SSD 盘,新式硬盘)、机械硬盘(HDD 传统硬盘)、混合硬盘(HHD 一块基于传统机械硬盘诞生出来的新硬盘)。
SSD采用闪存颗粒来存储,HDD采用磁性碟片来存储,混合硬盘(HHD: Hybrid Hard Disk)是把磁性硬盘和闪存集成到一起的一种硬盘。绝大多数硬盘都是固定硬盘,被永久性地密封固定在硬盘驱动器中。
机械硬盘:
磁道:一圈数据,对应着一串二进制(1bit代表一个二进制位)
8bit比特位=1Bytes字节
1024Bytes=1KB
1024KB=1MB
1024MB=1GB
1024GB=1TB
1024TB=1PB
200G=200*1000*1000B
扇区:
一个扇区通过为512Bytes
站在硬盘的解读,一次性读写数据的最小单为为扇区
操作系统一次性读写的单位是一个block块=》8扇区的大小=4096Bytes
#5.软盘
软盘(Floppy Disk)是个人计算机(PC)中最早使用的可移介质。软盘的读写是通过软盘驱动器完成的。软盘驱动器设计能接收可移动式软盘,目前常用的就是容量为1.44MB的3.5英寸软盘。
软盘存取速度慢,容量也小,但可装可卸、携带方便。作为一种可移贮存方法,它是用于那些需要被物理移动的小文件的理想选择。
软盘在早期计算机上必备的一个硬件,也是计算机上面最早使用的可移介质。软盘英文缩写是FIoppy Disk,它作为一种可移储存硬件适用于一些需要被物理移动的小文件,软盘的读写是用过软驱也就是软盘驱动器来完成的。
#6.光盘
光盘是以光信息做为存储的载体并用来存储数据的一种物品。分不可擦写光盘,如CD-ROM、DVD-ROM等;和可擦写光盘,如CD-RW、DVD-RAM等。
光盘是利用激光原理进行读、写的设备,是迅速发展的一种辅助存储器,可以存放各种文字、声音、图形、图像和动画等多媒体数字信息。
光盘定义:即高密度光盘(Compact Disc)是近代发展起来不同于完全磁性载体的光学存储介质(例如:磁光盘也是光盘),用聚焦的氢离子激光束处理记录介质的方法存储和再生信息,又称激光光盘。
#7.U盘
U盘,全称USB闪存盘,英文名“USB flash disk”。 [1] 它是一种使用USB接口的无需物理驱动器的微型高容量移动存储产品,通过USB接口与电脑连接,实现即插即用。 [1]
U盘的称呼最早来源于朗科科技生产的一种新型存储设备,名曰“优盘”,使用USB接口进行连接。U盘连接到电脑的USB接口后,U盘的资料可与电脑交换。而之后生产的类似技术的设备由于朗科已进行专利注册,而不能再称之为“优盘”,而改称谐音的“U盘”。 [1] 后来,U盘这个称呼因其简单易记而因而广为人知,是移动存储设备之一。现在市面上出现了许多支持多种端口的U盘,即三通U盘(USB电脑端口、iOS苹果接口、安卓接口)。
2.IO延迟
IO延迟:
7200转/min
120转/s
1/120转/s=转一圈需要花费8ms
平均寻道时间:机械手臂转到数据所在磁道需要花费的时间,受限于物理工艺水平,目前机械硬盘可以达到的是5ms
平均延迟时间:转半圈需要花费4ms,受限于硬盘的转速
IO延迟=平均寻道时间+平均延迟时间
优化程序运行效率的一个核心法则:能从内存取数据,就不要从硬盘取
3.缓存
缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。
因为缓存往往使用的是RAM(断电即掉的非永久储存),所以在用完后还是会把文件送到硬盘等存储器里永久存储。电脑里最大的缓存就是内存条了,最快的是CPU上镶的L1和L2缓存,显卡的显存是给显卡运算芯片用的缓存,硬盘上也有16M或者32M的缓存。
4.虚拟内存
IO设备=设备的控制+设备本身
五、总线
计算机总线是一组能为多个部件分时共享的信息传送线,用来连接多个部件并为之提供信息交换通路。总线不仅是一组信号线,从广义上讲,总线是一组传送线路及相关的总线协议。
六、操作系统的启动流程
1.BIOS介绍
BIOS:Basic Input Output System
BIOS被写入ROM设备
裸机:
cpu
ROM:充当内存,存放BIOS系统
CMOS:充当硬盘
2.操作系统的启动流程
1.计算机加电
2.BIOS开始运行,检测硬件:cpu、内存、硬盘等
3.BIOS读取CMOS存储器中的参数,选择启动设备
4.从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位)
5.根据分区信息读入bootloader启动装载模块,启动操作系统
6.然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核
BIOS
1、存有win10系统的光盘、u盘、移动硬盘:无密码
2、本地硬盘上的win7系统:密码
3.应用程序的启动流程
应用程序的启动流程
1、双击exe快捷方式--》exe文件的绝对路径,就是在告诉操作系统
说:我有一个应用程序要执行,应用程序的文件路径是(exe文件的绝对路径)
2、操作系统会根据文件路径找到exe程序在硬盘的位置,控制其代码从硬盘加载到内存
3、然后控制cpu从内存中读取刚刚读入内存的应用程序的代码执行,应用程序完成启动