what:响应用户输入的,控制硬件的,软件
why出现:程序员直接控制硬件设备太麻烦
功能:为用户提供应用程序抽象;管理计算机资源
通用寄存器:保存关键变量和临时结果;why:访问内存获取指令比执行慢得多
程序计数器(PC):指示下一条需要从内存提取的指令的地址
堆栈指针(SP):指向内存中当前栈顶,包含输入过程中的有关参数、局部变量、没在寄存器里的临时变量等
程序关键字寄存器(PSW):跟踪系统当前状态(用户态/内核态);在系统调用和I/O中有重要作用
(1)流水线式(同时有序进行)
(2)超标量组织形式(无序执行)
只要一个执行单元空闲,就检查缓冲区是否有可执行指令
硬件负责保证运算结果的顺序正确
(1)内核态:在运行内核态时,CPU可以执行任何指令集中的指令,并且能够使用硬件的功能
(2)用户态:在运行用户态时,CPU只能执行指令集中的一部分指令,并且只能使用一部分硬件的功能
对于操作系统来说,台式机和服务器只运行内核态,只有嵌入式系统一部分运行内核态,一部分运行用户态
对于用户应用程序来说,几乎所有都运行在用户态下
系统调用:用户程序采用系统调用获取操作系统的服务;TRAP指令用于将用户态切换成内核态并且启动操作系统
缓存常用于提升性能
(1)何时将新内容放入缓存
(2)新内容放在缓存什么位置
(3)需要空间时,移除哪部分内容
(4)移除的部分放在主存哪里
L1cache(第一级缓存)在CPU内部,访问无延迟,16KB,将已经解码的指令调入CPU的执行引擎
L2cache(二级缓存)用于存放最近使用的关键字,有1-2个时钟周期的延迟
RAM(Random Access Memory)易失性随机存取存储器
ROM(Read Only Memory)非易失性随机存取存储器,只读,快且便宜;用于启动计算机的引导加载模块存在ROM中
EEPROM(Electrically Erasable PROM)和闪存(flash memory)也是非易失性,但他们可以擦除和重写,只是比写入RAM费时间
CMOS 易失性,常用于保持当前日期和时间
将程序放在磁盘上,将主存作为一部分缓存,用来保存最频繁使用的部分程序
操作系统执行的一个程序;容纳运行一个程序所有信息的一个容器
从某个最小值存储位置到某个最大值存储位置的列表,存放可执行程序、数据和它的栈;进程可以对其进行读写操作
线程是一种轻量级的进程
多线程允许CPU保持两个不同的线程状态,并且在纳秒级时间内完成切换
多线程并不会提供真正的并行处理,在同一时刻,只能有一个进程在运行
I/O 设备一般包括两个部分:设备控制器和设备本身。控制器本身是一块芯片或者一组芯片,它能够控制物理设备。它能够接收操作系统的指令
控制器的工作就是为操作系统提供一个更简单(但仍然非常复杂)的接口。也就是屏蔽物理细节。
专门与控制器进行信息交流,发出命令处理指令接收响应的软件,称为 设备驱动程序(device driver)。
为了使设备驱动程序能够工作,必须把它安装在操作系统中,这样能够使它在内核态中运行。要将设备驱动程序装入操作系统,一般有三个途径
第一个途径是将内核与设备启动程序重新连接,然后重启系统。这是 UNIX 系统采用的工作方式
第二个途径是在一个操作系统文件中设置一个入口,通知该文件需要一个设备驱动程序,然后重新启动系统。在重新系统时,操作系统回寻找有关的设备启动程序并把它装载,这是 Windows 采用的工作方式
第三个途径是操作系统能够在运行时接收新的设备驱动程序并立刻安装,无需重启操作系统,这种方式采用的少,但是正变得普及起来。热插拔设备,比如 USB 和 IEEE 1394 都需要动态可装载的设备驱动程序。
缺点是要一直占据 CPU,CPU 会一直轮询 I/O 设备直到 I/O 操作完成。
用户程序会发起系统调用,内核会将其转换为相应驱动程序的程序调用,然后设备驱动程序启动 I/O 并循环检查该设备,看该设备是否完成了工作(一般会有一些二进制位用来指示设备仍在忙碌中)。当 I/O 调用完成后,设备驱动程序把数据送到指定的地方并返回。然后操作系统会将控制权交给调用者。
设备驱动程序启动设备并且让该设备在操作完成时发生中断。设备驱动程序在这个时刻返回。操作系统接着在需要时阻塞调用者并安排其他工作进行。当设备驱动程序检测到该设备操作完成时,它发出一个 中断 通知操作完成。
直接存储器访问(Direct Memory Access, DMA) 芯片
它可以控制内存和某些控制器之间的位流,而无需 CPU 的干预。CPU 会对 DMA 芯片进行设置,说明需要传送的字节数,有关的设备和内存地址以及操作方向。