本专栏是对计算机操作系统学习的记录:《现代操作系统 第四版》,电子版的可以在评论区自取。
1 计算机硬件简介
操作系统与运行该操作系统的计算机硬件密切相关。如图1所示,我们可以将自己的计算机抽象为,CUP,内存和I/O设备。
1.1 CPU
CPU是计算机的核心设备,它从内存中读取指令并执行。然后取指令、解码和执行,直到程序被执行完成。我们知道CPU能够取指令、解码和执行。因此CPU有一套可执行的指令集。ARM和X86处理器不能相互执行(它们的指令集不同)。
由于直接访问内存得到指令和数据的时间远远大于CPU每次执行的时间,这样会操作CPU资源的浪费,因此CPU内部都会有一些保存关键变量和临时数据的寄存器。还有包括其他的寄存器,例如程序计数器,程序状态字寄存器等。
从上文我们知道CPU中有取指令,解码和执行三个步骤。例如图2所示,其实对应了CPU中的三个单元,它们不再是顺序执行,而是每个单元流水线执行(也就是在操作的过程中互不影响)。
1.2多线程和多核CPU
随着时代的发展,Intel引入了多线程,允许CPU保持两个不同的线程状态,然后在纳秒级的时间内来回切换。多线程不是并行操作,而是并发操作本质是一个CPU来回执行多个线程。可以充分利用CPU资源。渐渐的CPU发展为多核,实现线程的并行操作,如下图3所示4核CPU。
图3a是共享L2缓存的4核CPU,其中每个核中有L1级缓存(图中斜线阴影部分)。
1.3 存储器
在任何一种计算机中,第二个主要部件都是存储器。在理想情况下,存储器应该能够瞬间对cpu的命令进行反应,这样CPU就不会受到存储器的限制。图4所示,从上到下访问时间逐渐增大,而且存储能力也逐渐增大。
寄存器是存储在CPU内部,高速缓存分为1级,2级和3级,多核cpu都有独立的1级缓存,共享2级和3级缓存(缓存是一项很重要的技术)。可以通过任务管理器查看缓存。
1.4 I/O设备
CPU和存储器不是操作系统唯一需要管理的资源。I/O设备也需要被管理,I/O设备一般包括两个部分:设备控制器和设备本身。控制器是电路板上的芯片,它从操作系统接收命令,从设备中读取数据。由于每类的设备控制器都是不同的,例如键盘控制器和鼠标控制器都不尽相同,因此需要有专门与控制器对话,发出指令和接收响应的软件,成为设备驱动程序。例如每台打印机都会有驱动程序。一般该程序需要运行在内核区。
要将设备驱动程序装入操作系统,有三个途径。第一、将内核和设备驱动程序重新连接,然后重启系统;第二、在一个操作系统文件中设置一个入口并通知该文件需要一个设备驱动程序,然后重启系统。在重启时,操作系统需要寻找驱动程序并装载。第三、操作系统能够运行时接收驱动程序并立即将其安装好。
实现I/O设备输入和输出的三种方式:
1、CPU轮询忙等待:用户程序发送一个系统调用,内核将其翻译成对设备驱动程序的调用。然后CPU频繁检查设备是否完成了工作,如果完成了则返回,否则忙等待。
2、第二种方式是设备驱动程序启动设备,并且让该设备在操作完成时发出一个中断。
- 设备驱动程序通过写设备寄存器通知设备控制器要做什么
- 设备控制器开始工作,被告知要进行读写的字节数量
- 设备完成后,通过特定的总线给中断控制器发送中断信号。
- 中断控制器将中断信号发送给CPU。
3、为I/O使用一种特殊的直接存储器访问(Direct memory Access,DMA)。CPU告知DMA需要传输的字节数,有关设备和内存地址等信息,等待DMA芯片完成时产生中断。
1.5 计算机如何启动
每台计算机都有一个母版,母版上有一个成为基本输入输出系统(Basic Input Basic Output System,BIOS)的程序。在BIOS内有底层I/O软件,包括读键盘,写屏幕,进行磁盘I/O及其他过程。这个程序存储在RAM中。
在计算机启动时(计算机通电,或者开关键按下),BIOS开始运行
- 检查安装的RAM数量,及其他设备是否响应正常。
- 扫描PCIe和PCI总线并找到连接在上面的所有设备,然后进行配置。
- BIOS通过尝试存储在CMOS存储器中的设备清单决定启动设备。
- 然后操作系统询问BIOS,以获得配置信息,和所有驱动程序,并调用到内核创建进程。
记录到这里第一章基本就结束了,最后放置电子版链接如下:
链接:https://pan.baidu.com/s/1guCXbK3FA5sSvl9Yp9xfvQ 提取码:2boz