设备管理是操作系统中最繁杂而且与硬件紧密相关的部分,不但要管理实际 I/O 操作的设备(如磁盘机、扫描仪、打印机、键盘和鼠标),还要管理诸如设备控制器、DMA 控制器、中断控制器和 IO 处理机(通道)等支持设备。
设备管理包括 各种设备分配、缓冲区管理和实际物理 IO 设备操作,通过管理达到提高设备利用率和方便用户的目的。
1. 设备管理概述
设备是计算机系统与外界交互的工具,具体负责计算机与外部的输入输出工作,所以称为外部设备(简称外设)。在计算机系统中,将负责管理设备和输入输出的机构称为输入输出系统(IO 系统),I0 系统由设备、控制器、通道、总线和输入输出软件组成。
- 设备分类
设备:显示器、鼠标、键盘、打印机、扫描仪、绘图仪、路由器等。按数据组织分类,可分为块设备和字符设备;按资源分配角度分类,可分为独占设备、共享设备和虚拟设备;按数据传输率分类,可分为低速设备、中速设备和高速设备。 - 设备管理的目标和任务
设备管理的目标主要是如何提高设备的利用率,为用户提供方便统一的界面。提高设备的利用率就是提高 CPU 与输入输出设备之间的并行操作程度,采用的技术主要包括中断技术、DMA 技术、通道技术和缓冲技术。
任务:在多道程序环境下,当多个进程竞争使用设备时,按一定策略分配和管理各种设备,控制设备的各种操作,完成 IO 设备与主存之间的数据交换。
设备管理的主要功能是动态地掌握并记录设备的状态、设备分配和释放、缓冲区管理、实现物理 I/O 设备的操作、提供设备使用的用户接口和设备的访问与控制。
2. 设备管理技术
设备管理技术:通道、DMA、缓冲和Spooling技术。
通道技术
引入通道的目的是使数据的传输独立于 CPU,将 CPU 从烦琐的 IO 工作中解脱出来。设置通道后,CPU 只需向通道发出输入输出命令,通道收到命令后,从内存中取出本次输入输出要执行的通道程序加以执行,当通道完成输入输出任务后,才向CPU发出中断信号。
通道户导致“瓶颈”问题:一旦某通道被设备占用,即使另一设备空闲,连接该通道的其他设备只能等待。解决方案:增加设备到主机之间的通路,使得主存和设备之间有两条以上的通路。
DMA技术
直接内存存取(Direct Memory Access,DMA)是指数据在内存与输入输出设备之间实现直接成块传送,即在内存与输入输出设备之间传送一个数据块的过程中,只需要 CPU 在开始(即向设备发出“传送一块数据”的命令)与结束(CPU 通过轮询或中断得知过程是否结束和下次操作是否准备就绪)时进行处理,实际操作过程由DMA硬件直接执行完成,CPU在此传送过程中可执行别的任务。
缓冲技术
缓冲技术(Buffer Technology)可提高外设利用率,尽可能使外设处于忙状态。缓冲技术可以采用硬件缓冲和软件缓冲。硬件缓冲是利用专门的硬件寄存器作为缓冲,软件缓冲通过操作系统来管理。
- 缓和 CPU 与输入输出设备间速度不匹配的矛盾。
- 减少对 CPU 的中断频率,放宽对中断响应时间的限制。
- 提高 CPU 和输入输出设备之间的并行性。
在所有的输入输出设备与处理机(内存)之间,都使用了缓冲区来交换数据,所以操作系统必须组织和管理好这些缓冲区。缓冲可分为单缓冲、双缓冲、多缓冲和环形缓冲。
Spooling技术
Spooling(Simultaneous Peripheral Operation On-Line,外部设备联机并行操作)是关于慢速字符设备如何与计算机主机交换信息的一种技术,通常称为“假脱机技术”。Spooling 技术用一类物理设备模拟另一类物理设备,使独占使用的设备变成多台虚拟设备,它也是一种速度匹配技术。Spooling 系统由“预输入程序”“缓输出程序”“井管理程序”以及输入和输出井组成。其中,输入井和输出井用于存放从输入设备输入的信息以及作业执行的结果,是系统在辅助存储器上开辟的存储区域。Spooling 系统的组成和结构如图所示。
3. 磁盘调度
磁盘是可被多个进程共享的设备。当有多个进程请求访问磁盘时,为了保证信息的安全,系统每一时刻只允许一个进程启动磁盘进行 IO 操作,其余的进程只能等待。因此,操作系统应采用一种适当的调度算法,使各进程对磁盘的平均访问时间最小。磁盘调度分为两类:移臂调度和旋转调度。系统先进行移臂调度,然后进行旋转调度。由于访问磁盘最耗时的是寻道时间,因此,磁盘调度的目标是使磁盘的平均寻道时间最少。
- 磁盘驱动调度
常用磁盘调度算法:先来先服务、最短寻道时间优先、扫描算法和单向扫描调度算法等。 - 旋转调度算法
当移动臂定位后,有多个进程等待访问该柱面时,应当如何决定这些进程的访问顺序?这就是旋转调度要考虑的问题。显然,系统应该选择延迟时间最短的进程对磁盘的扇区进行访问。