计算机的基本组成知识整理
基本组成
一台标准的个人计算机,基本的硬件配置包括CPU,硬盘,内存,输入输出设备,控制器和总线
CPU
工作顺序:取指令→解码→执行
工作命令:CPU内部都有一些用来保存关键变量和临时数据的寄存器,这样通常在CPU的指令集中专门提供一些指令,用来将数据从内存调入寄存器,从寄存器存入内存。
CPU其他的指令集可以把来自寄存器、内存的操作数据组合,或者用两者产生一个结果,比如将两个字相加并把结果存在寄存器或内存中。
寄存器的分类:
1.通用寄存器:用来保存变量和临时结果
2.程序计数器:它保存了将要取出的下一条指令的内存地址。在指令取出后,程序计算器就被更新以便执行后期的指令
3.堆栈指针:它指向内存中当前栈的顶端。该栈包含已经进入但是还没有退出的每个过程中的一个框架。在一个过程的堆栈框架中保存了有关的输入参数、局部变量以及那些没有保存在寄存器中的临时变量
4.程序状态字寄存器(Program Status Word,PSW):这个寄存器包含了条码位(由比较指令设置)、CPU优先级、模式(用户态或内核态),以及各种其他控制位。用户通常读入整个PSW,但是只对其中少量的字段写入。在系统调用和I/O中,PSW非常重要
内核态与用户态
多数CPU运行状态都有两种模式,即内核态与用户态。
PSW中有一个二进制位控制这两种模式。
内核态:当cpu在内核态运行时,cpu可以执行指令集中所有的指令,很明显,所有的指令中包含了使用硬件的所有功能(操作系统在内核态下运行,从而可以访问整个硬件)
用户态:用户程序在用户态下运行,仅仅只能执行cpu整个指令集的一个子集,该子集中不包含操作硬件功能的部分,因此,一般情况下,在用户态中有关I/O和内存保护(操作系统占用的内存是受保护的,不能被别的程序占用),当然,在用户态下,将PSW中的模式设置成内核态也是禁止的。
内核态与用户态切换
用户态下工作的软件不能操作硬件,但是我们的软件比如暴风影音,一定会有操作硬件的需求,比如从磁盘上读一个电影文件,那就必须经历从用户态切换到内核态的过程,为此,用户程序必须使用系统调用,系统调用陷入内核并调用操作系统,TRAP指令把用户态切换成内核态,并启用操作系统从而获得服务,系统调用是一个特别的的过程调用指令,该指令具有从用户态切换到内核态的特别能力。
市场主流CPU的不同:某定律指出芯片中的晶体管数量,每18个月翻一倍
Intel公司某产品有两个线程的cpu,就相当于两个cpu,称之为多线程和超线程处理器
进程是资源单位,线程是cpu的执行单位
多线程运行cpu保持两个不同的线程状态,可以在纳秒级的时间内来回切换,速度快到你看到的结果是并发的,伪并行的,然而多线程不提供真正的并行处理,一个cpu同一时刻只能处理一个进程(一个进程中至少一个线程),依照CPU的基本工作顺序。
除了多线程,还出现了2个或者4个完整处理器的cpu芯片,敝如AMD公司的系列产品,使用他们的产品需要有多处理操作系统
存储器
RAM(随机存取存储器):主存是易失性存储,断电后数据全部消失
ROM(Read Only Memory,非易失性随机访问存储):电源切断之后,非易失性存储的内容并不会丢失,ROM只读存储器在工厂中就被编程完毕,然后再也不能修改。ROM速度快且便宜,在有些计算机中,用于启动计算机的引导加载模块就存放在ROM中,另外一些I/O卡也采用ROM处理底层设备的控制
EEPROM(Electrically Erasable PROM,电可擦除可编程ROM)和闪存(flash memory)也是非易失性的。
CMOS(Complementary Metal Oxide Semiconductor 互补金属氧化物半导体):电压控制的一种放大器件,是组成CMOS数字集成电路的基本单元,CMOS可以保存启动磁盘配置和时间。
磁盘与磁带
扇区:数据都存放于一段一段的扇区,从磁盘读取一段数据需要经历寻道时间和延迟时间
平均寻道时间
机械手臂从一个柱面随机移动到相邻的柱面的时间成为寻到时间,找到了磁道就以为着招到了数据所在的那个圈圈,但是还不知道数据具体这个圆圈的具体位置
总线
北桥即PCI桥:连接高速设备(CPU,高速缓存,主存储器)
南桥即ISA桥:连接慢速设备(显示适配器,USB端口,SCSI,ISA桥)
操作系统启动流程,BIOS(Basic Input Output system):设备通电以后,会直接进入一个设备管理界面,相当于一个小的操作系统,它有底层的I/O软件,包括读键盘,写屏幕,进行磁盘I/O,该程序存放于一非易失性闪存RAM中。
应用程式的启动流程,敝如需要打开某软件,需要通过输入设备传递给监视器,传送到CPU,再从内存里取指令—>解码—>执行,而同时内存不断从硬盘里调取文件供CPU调用,CPU再取指令—>解码—>执行下一条指令,周而复始,直到应用程序被启动完成。