操作系统笔记2-导论(二)

导论(二)

2. 计算机系统的组成

2.1 计算机系统的运行

现代通用计算机系统包括一个或多个CPU和若干设备控制器,通过公用总线相连而成,该总线提供了共享内存的访问。每个设备控制器负责一类特定的设备。CPU与设备控制器可以并发执行,并且竞争访问内存等资源。为了确保有序访问共享内存,需要内存控制器来协调访问内存。

图1-2

计算机启动的过程

当我们按下计算机电源后,计算机需要运行一个引导程序。该程序通常位于计算机的固件,如ROM或EEPROM,它负责初始化系统的各个组件,比如CPU寄存器、设备控制器、内存等。引导程序还要加载操作系统并且开始执行系统,因此引导程序必须定位操作内核并且将其加载到内存当中。

一旦内核加载到内存并且开始执行,它就可以为系统和用户提供服务了。除了内核外,系统程序也会提供一些服务,因此它们也在启动时加载内存成为系统进程或系统后台进程,生命周期与内核相同。对于UNIX/Linux系统而言,首个系统进程为systemd(目前大多数linux发行版都是用systemd而非init了,仅有少数发行版和老的发行版本使用init),它启动许多其他系统的后台程序。一旦这个阶段完成,系统就成功启动了,并且可以等待事件的发生。

事件发生通常通过硬件或软件的中断来通知。由于硬件都通过系统总线与CPU相连,因此它们可以随时通过系统总线发送中断信号给CPU,从而触发中断。软件也可以通过系统调用触发中断。

2.2 存储结构

CPU只能从内存中加载指令,因此执行程序必须位于内存。通用计算机运行的大多数程序通常都位于可读写内存,成为内存或随机访问内存(RAM)。内存通常是用半导体技术来实现的桶内访问随机内存(DRAM)。

计算机也使用其他的形式的内存,比如只读内存(ROM)和电可擦可编程只读内存(EEPROM)。由于ROM不可修改,因此通常将静态程序(如引导程序)存在其中。EEPROM可以修改,但是不能经常修改,因此也可以保存大多数静态程序,智能手机就采用EEPROM存储系统。

理想情况下,程序和数据应该永久驻留在内存中,但是由于以下两个原因,这是不现实的:

  1. 内存通常较小,不能保存下所有的程序和数据。
  2. 内存是易失性的存储设备,断电会丢失所有内容。

因此计算机系统需要外存来扩充内存,外存可以永久存储大量数据。

最常见的外存设备是硬盘(或者叫磁盘),它能存储程序和数据。大多数程序(系统和应用程序)和数据都保存磁盘上,只有当执行时才会加载到内存中。除了寄存器、内存和硬盘外,存储系统中还有别的结果,比如高速缓存、CD-ROM等。存储系统可以按照层次来分类,层次越高,价格越高,速度也越快。

图存储体系

上述存储体系中的存储结构可以分为易失存储和非易失存储,易失存储会在断电后丢失数据,非易失存储可以永久保存数据。

完整的存储系统设计应当平衡各种因素,它应只使用必须的昂贵存储,而提供尽可能便宜的、非易失性的存储。当两个存储组件的访问时间或传输速率具有较大差异时,由于局部性原理的存在,可以通过高速缓存来改善硬性。

2.3 I/O结构

存储器只是计算机众多IO设备中的一种,其他的IO设备比如:显示器、键盘、鼠标、网卡等。操作系统中的大部分代码专门用于IO管理,因为IO管理对系统的可靠性和性能至关重要。

每个通用计算机系统都由一个CPU和多个设备控制起组成,它们通常通过总线连接在一起。每个设备控制器管理某一特定类型的设备,根据其特性可以与多个设备相连。比如小型计算机系统接口(SCSI)控制器可以连接七个或更多的设备。每个设备控制器都维护着一定数量的本地缓冲存储和一组特定用途的寄存器。设备控制器负责在所控制的外围设备和本地缓冲存储之间进行数据传递。通常,操作系统为每个设备控制器提供一个设备驱动程序。该设备驱动程序负责控制设备控制器,并且为操作系统的其他部分提供统一的设备访问接口。

在开始I/O前,CPU向设备控制器的控制寄存器中写入命令字说明将要执行的操作,之后设备驱动程序则加载这些寄存器,检查其内容,以便决定相应的操作。之后控制器开始在设备和本地缓冲区之间传输数据。一旦完成传输或者传输出错,设备控制器就会通过总线设备发出中断信号通知设备驱动程序处理。设备驱动程序则返回控制和相应的状态信息到操作系统。

上述的I/O中断驱动适合与少量数据,但是对于大量数据的操作,就会带来很高的开销。针对大量数据的读写如裁磁盘IO,可以采用直接内存访问(DMA)方式。在为这种I/O设备设置好初始化之后,设备控制器可以在本地缓冲和内存之间直接传输整块的数据,而无需CPU的干预。每块只产生一个中断,告知设备驱动程序完成操作。

你可能感兴趣的:(操作系统笔记2-导论(二))