计算机硬件
1,cpu内存硬盘
CPU(中央处理器)是一块超大规模的集成电路,是一台计算机的运算核心和控制核心。它的功能主要是解释计算机指令以及处理计算
机软件中的数据。CPU主要包括运算器和高速缓存存储器及实现它们之间联系的数据、控制及状态的总线。它与内部存储器和输入/输出
(I/O)设备合称为电子计算机三大核心部件。
内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计
算机的影响非常大。内存也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计
算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳
定运行。
硬盘有机械硬盘(HDD 传统硬盘)、混合硬盘(HHD 一块基于传统机械硬盘诞生出来的新硬盘)。SSD采用闪存颗粒来存储,HDD
采用磁性碟片来存储,混合硬盘(HHD: Hybrid Hard Disk)是把磁性硬盘和闪存集成到一起的一种硬盘。绝大多数硬盘都是固定硬盘,
被永久性地密封固定在硬盘驱动器中。
如上图所示,CPU与内存和硬盘之间的关系是:CPU如果要运行一个程序,那么他需要到内存(临时性,断电则信息全部丢失)中去找
到需要运行的文件,硬盘则需要将CPU要运行的文件放入内存中待CPU运行,CPU运行的结果最后存到具有永久保存性的硬盘之中。
2,cpu之寄存器
寄存器是CPU内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。
寄存器可以分为通用寄存器、程序计数器、堆栈指针、程序状态字寄存器(PSW)这几类。
通用寄存器:保存变量和临时结果,存一些关键数据和变量的寄存器。
程序计数器:保存了将要取出的下一条指令的内存地址。在指令取出后,程序计算器就被更新以便执行后期的指令。(旁白:CPU要运行
很多或者一些时间较长的程序时,CPU的工作是每一个程序多一部分,然后停止这是程序计数器负责保存这个工作记录,CPU再去做下一
件事情,再这样的分布多点的工作时,需要程序计数器帮忙保存CPU工作记录和调取保存的工作记录以便CPU继续行。)
堆栈指针:指向内存中当前栈的顶端。该栈包含已经进入但是还没有退出的每个过程中的一个框架。在一个过程的堆栈框架中保存了有关
的输入参数、局部变量以及那些没有保存在寄存器中的临时变量。(旁白:堆栈就是先进后出,队列先进先出。吃拉吐举例,汗~~!)
程序状态字寄存器(PSW):一个非常重要的寄存器,这个寄存器包含了条码位(由比较指令设置)、CPU优先级、模式(用户态或内核态),
以及各种其他控制位。用户通常读入整个PSW,但是只对其中少量的字段写入。在系统调用和I/O中,PSW狠重要。
由PSW引出用户态和内核态,多数CPU都有两种模式,即内核态与用户态。
内核态:当cpu在内核态运行时,cpu可以执行指令集中所有的指令,包含使用硬件的所有功能。
用户态:程序在用户态下运行,只能执行cpu整个指令集的一个子集,该子集中不包含操作硬件功能的部分,因此,一般情况下,在
用户态中有关I/O和内存保护(操作系统占用的内存是受保护的,不能被别的程序占用),当然,在用户态下,将PSW中的模式设置成
内核态也是禁止的。
(旁白:当操作系统对CPU发号施令来执行操作时,CPU是允许其执行任何操作的,包括操作硬件,任何操作都可以执行,这就是内核态,
当应用程序给CPU发指令来执行操作时,CPU是会限制其操作硬件的,这就是用户态。我们平时的操作时会有许多内核态与用户态的状态
变化,就是一会要内核态执行操作一会要用户态执行操作,这中间程序状态字寄存器就起到重要作用,方便我们来回切换两种操作状态。)
3,cpu的设计演变
CPU内部指令集执行命令的过程是取指-解码-执行,如上图所示。
CPU的演变进程中,它的运行效率一直再提升,运行方式也是一直在优化。最开始取值、解码、执行这三个过程是同时进行的,其中一个
过程完成都需要等待其余两个过程执行完毕,会造成时间浪费;后来被设计成了流水线式的设计;再后面是超变量cpu,比流水线更加先进,
有多个执行单元,可以同时负责不同的事情。
4,cpu的向下兼容型
兼容性是指硬件之间、软件之间或是软硬件组合系统之间的相互协调工作的程度。兼容的概念比较广,相对于硬件来说,几种不同的电脑
部件,如CPU、主板、显示卡等,如果在工作时能够相互配合、稳定地工作,就说它们之间的兼容性比较好,反之就是兼容性不好。
CPU的向下兼容性,是指64位CPU能处理32位CPU的任务,但反之32位CPU能不能处理(或者处理时会出错)64位CPU的任务。级别高
的可以包含级别低的,反之则会出错。
5,存储器
寄存器:即L1缓存,位于CPU内部,与cpu同材质,与cpu一样快,cpu访问它无时延,容量小,存放CPU立即要用的数据。
缓存:即使L2缓存(也叫高级缓存),价格昂贵,所以其大小有限,有些机器具有两级甚至三级高速缓存,每一级高速缓存比前一级
慢但是容量大。它的存在也是分担CPU使用缓存的压力,CPU经常要用的一些数据就是放于L2缓存。这里又分为两种:高速缓存命中和
高速缓存未命中。高速缓存命中:当某个程序需要读一个存储字时,高速缓存硬件检查所需要的高速缓存行是否在高速缓存中,找到了
就是命中。高速缓存未命中:高速缓存硬件检查所需要的高速缓存行未找到需要读取的存储字,则是未命中,这是就必须访问内存,当
然这样时间也会浪费大量时间。
主存:也就是内存,是存储器系统的主力,主存通常称为随机访问存储RAM,就是我们通常所说的内存,容量一直在不断攀升,所有不
能再高速缓存中找到的,都会到主存中找,主存是易失性存储,断电后数据全部消失。
EEPROM(Electrically Erasable PROM,电可擦除可编程ROM)和闪存(flash memory)也是非易失性的,但是与ROM相
反,他们可以擦除和重写。不过重写时花费的时间比写入RAM要多。在便携式电子设备中中,闪存通常作为存储媒介。闪存是数码相机中
的胶卷,是便携式音译播放器的磁盘,还应用于固态硬盘。闪存在速度上介于RAM和磁盘之间,但与磁盘不同的是,闪存擦除的次数过多,
就被磨损了。
还有一类存储器就是CMOS,它是易失性的,许多计算机利用CMOS存储器来保持当前时间和日期。CMOS存储器和递增时间的电路由
一小块电池驱动,所以,即使计算机没有加电,时间也仍然可以正确地更新,除此之外CMOS还可以保存配置的参数,比如,哪一个是启
动磁盘等,之所以采用CMOS是因为它耗电非常少,一块工厂原装电池往往能使用若干年,但是当电池失效时,相关的配置和时间等都将
丢失。
6,磁盘
磁盘,分为5400,7200或10800rpm(RPM =revolutions per minute 每分钟多少转 ),内部有机械臂、磁头、盘片、转轴等,
信息存在磁盘上的一些列的同心圆上,是一连串的2进制位(称为bit位),为了统计方法,8个bit称为一个字节bytes,1024bytes=1k,
1024k=1M,1024M=1G,所以我们平时所说的磁盘容量最终指的就是磁盘能写多少个2进制位。每个磁头可以读取一段换新区域,
称为磁道,每个磁道划成若干扇区,扇区典型的值是512字节。
虚拟内存:许多计算机支持虚拟内存机制,该机制使计算机可以运行大于物理内存的程序,方法是将正在使用的程序放入内存取执行,
而暂时不需要执行的程序放到磁盘的某块地方,这块地方成为虚拟内存,在linux中成为swap,这种机制的核心在于快速地映射内存
地址,由cpu中的一个部件负责,成为存储器管理单元(Memory Management Unit MMU)如上图所示,缓存和MMU的出现提
升了系统的性能。
7,磁带
价钱相同的情况下比硬盘拥有更高的存储容量,速度低于磁盘,但容量大,可移动性强,常被用来做备份,常见于大型数据库系统。
8,控制器与多总线
cpu和存储器并不是操作系统唯一需要管理的资源,I/O设备也是非常重要的一环。
I/O设备一般包括两个部分:设备控制器和设备本身。
I/O:Input/Output,输入/输出。
控制器:是查找主板上的一块芯片或一组芯片(硬盘,网卡,声卡等都需要插到一个口上,这个口连的便是控制器),控制器负责控制
连接的设备,它从操作系统接收命令,比如读硬盘数据,然后就对硬盘设备发起读请求来读出内容。
控制器的功能:通常情况下对设备的控制是非常复杂和具体的,控制器的任务就是为操作系统屏蔽这些复杂而具体的工作,提供给操作
系统一个简单而清晰的接口
多总线连接,是指计算机内部的各个部件串联起来,每一个构建都有线路连接起来,构成了整个线路网,分为北桥和南桥。
北桥即PCI桥:连接高速设备
南桥即ISA桥:连接慢速设备
9,操作系统的启动原理
计算机加电之后开始启动:
⑴计算机首先会运行一个程序(小的操作系统),即BIOS(Basic Input Output system),它有底层的I/O软件,包括读键盘,写
屏幕,进行磁盘I/O,该程序存放于一非易失性闪存RAM中。
⑵BIOS开始运行,会检测硬件如cpu、内存、硬盘等一些硬件的性能运行是否正常,正常的话就会顺利运行,不正常则无法继续进行。
⑶BIOS读取CMOS存储器中的参数,选择启动设备。
⑷从启动设备上读取需要的内容,然后根据信息启动预先设置的好的模块,启动操作系统。
⑸然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按
照设备装在驱动程序。当所有驱动程序都完毕,则继续进行到登入程序,并最终显示计算机桌面。
10,应用软件的启动流程
⑴双击应用程序,将命令交给输入设备,输入设备再交给设备控制器,设备控制器再交给操作系统。(相当于我们给操作系统发送了一个
要操作硬件的请求,因应用程序的文件存储于硬盘中)
⑵操作系统去硬盘中找到需要文件独到内存中
⑶操作系统支配CPU去内存中找到需要的文件解码后并执行
⑷应用程序启动起来