第五章-设备管理
1.I/O硬件系统
(1)设备类别
①从数据交换单位来分
- 块设备
- 字符设备
1)块设备
块设备将信息存储在固定大小的块中,并且每个块都有地址,因此可独立寻址。
所有传输以一个或多个完整的块为单位。
硬盘、CD-ROM和USB盘是最常见的块设备。
2)字符设备
字符设备以字节为单位发送或接收一个字符流,且不可寻址。
键盘、打印机、鼠标、网络接口,以及大多数与磁盘不同的设备都可以看做字符设备。
②从设备访问方式来分
- 顺序设备
- 随机设备
1)顺序设备
顺序设备上数据的逻辑顺序与物理存储顺序保持一致。
2)随机设备
随机设备上数据的逻辑顺序与物理存储顺序可以不一致。
(2)设备硬件组成
I/O设备一般由以下部件组成:
- 机械部件
- 电子部件
①机械部件
机械部件及设备本身。
②电子部件
电子部件称为设备控制器或适配器。一般为芯片形式或印刷电路板的形式。
控制器可以操作2、4个甚至8个相同的设备。
控制器是设备的直接控制者,操作系统通过控制器间接控制设备。
(3)设备控制器
①概念
设备控制器或适配器指I/O设备的电子部件。
②功能
设备控制器的主要功能:
- 接收和识别CPU或通道发来的命令;
- 实现数据交换,包括设备和控制器间的数据传输;
- 发现和记录设备及自身的状态信息,供CPU处理使用;
- 设备地址识别。
③寄存器
设备控制器中的四种寄存器:
- 状态寄存器
- 控制寄存器
- 数据输入寄存器
- 数据输出寄存器
1)状态寄存器
包含CPU可读取的设备状态信息。
状态信息指示当前任务是否完成,数据输入寄存器中数据是否可以读取,是否出现设备故障等。
2)控制寄存器
用来向设备发送命令或改变设备状态。
3)数据输入寄存器
存放设备从外界获取的数据供CPU读取。
4)数据输出寄存器
存放供设备向外界输出的数据。
(4)I/O控制器
主机通过控制器对设备输入、输出进行控制的方式有四种:
- 轮询
- 中断
- DMA
- 通道
①轮询
轮询也称为忙等待,CPU向设备下达操作命令后,不断查询设备操作完成状态。
在轮询控制方式下,CPU与设备的工作完全是串行(顺序)的,而不是并发的。
轮询方式使得CPU将大量时间消耗在设备状态的查询上,而不是用于执行其它计算任务。
②中断
在中断控制方式下,CPU向设备发出读写命令后,不再查询设备执行状态,转而执行其它计算任务。
设备控制器完成读写操作后以中断的方式主动向CPU报告完成情况。
CPU响应中断执行一个中断处理程序,将设备从外界获得的数据取走放到内存或者相反。
CPU对设备的控制和干预仅在启动和设备操作结束时进行。
③DMA
DMA(直接存储器访问)方式允许I/O设备与内存之间直接交换一个连续的信息块,在传输期间无需CPU的干预,而是由专用处理器——DMA控制器完成具体传输控制操作。
在开始DMA传输时,CPU对DMA芯片进行设置,说明需要传送的字节数、有关的设备和内存地址以及操作方向,接着启动DMA。
当DMA芯片完成设备I/O时,引发一个中断。
④通道
通道也叫输入输出处理器,是独立于CPU专门负责数据输入/输出传输工作的处理机,能执行自己的指令程序,代替CPU完成复杂的输入/输出操作,完成主存和外围设备间的信息传送,与CPU并行操作。
1)与CPU区别
I/O通道与CPU的主要区别:
通道指令类型单一,主要局限于与I/O操作有关的指令。
通道所执行的通道程序是放在主机内存中的,因此,通道与CPU共享内存。这样,通道与CPU对内存的使用是分时的。
2)通道控制方式
在通道方式下,当进程需要执行I/O操作时,CPU只需启动通道,即可返回执行其它进程,通道则执行通道程序,对I/O操作进行控制。
3)主机、通道、控制器、设备之间的连接关系
一个CPU可以连接若干通道,一个通道可以连接若干控制器,一个控制器可以连接若干台设备。
外围设备和CPU能实现并行操作;
通道和通道之间能实现并行操作;
各通道上的外围设备也能实现并行操作,充分提高系统效率。
同一个控制器与多个通道连接,同一个设备与多个控制器连接,存在无故障连接通路,系统仍可正常工作。
⑤四种控制方式包含的控制层级
(5)磁盘
①物理地址和逻辑地址
1)物理地址
访问磁盘上的数据时需要给出物理块(扇区)的地址,该地址是三维的,采用(柱面号,磁头号,扇区号)表示。
2)逻辑地址
磁盘物理块(扇区)的逻辑地址是一维线性的,称为逻辑块号(扇区号)。
所有扇区依次排列,从0开始连续编号。扇区编排顺序是自外向里对各个柱面内的扇区排序,同一柱面内的各个扇区先按磁道顺序、再按磁道内扇区顺序排列。
②磁盘调度算法
1)先来先服务算法(First Come First Server Algorithm,FCFS)
2)最短查找时间优先算法(Shortest Seek Time First Algorithm,SSTF)
3)电梯算法
caution
考试大纲中的电梯算法的英语有多种版本,费翔林版本叫LOOK,王道考研叫SCAN。故在此不讨论英语缩写。
对于先后到达的磁盘访问请求,电梯调度算法首先选择移臂方向,磁臂在该方向上移动的过程中依次处理途经的各个访问请求,直到该方向上再无请求时,改变移臂方向,依次处理相反方向上遇到的各个请求。如果同一柱面上有多个请求,还需进行旋转优化。
4)循环扫描算法(Circular SCAN Algorithm,C-SCAN)
磁头仅在一个移动方向上提供访问服务。磁臂从磁盘开始端柱面至结束端柱面移动的过程中依次处理途经请求,然后,直接返回开始端柱面重复进行,归途中并不响应请求。开始端与结束端柱面构成了一个循环。
5)N步扫描算法(N - Steps SCAN Algorithm,N-Step-SCAN)
N步扫描算法将磁盘请求队列分成若干个长度为N的子队列,磁盘调度按先来先服务算法依次处理这些队列。
当正在处理某子队列时,如果又出现新的磁盘I/O请求,便将新请求放入其它队列。
③Linux磁盘调度算法
- Linus电梯调度算法
- 时限调度算法
- 预期调度算法
1)Linus电梯调度算法
- 如果新请求与队列中等待请求的数据处于同一磁盘扇区或者相邻扇区,则两者合并成一个请求;
- 如果队列中的请求已经存在很长时间,则新请求将被插入到队列尾部;
- 如果存在合适的位置,则新请求将按顺序插入到队列中;如果没有合适的位置,则新的请求将被插入到队列尾部。
2)时限调度算法
在Linus电梯调度的基础上考虑请求为读还是写,异步还是同步,请求等待的时间长短,根据这些因素修正I/O请求的调度次序,避免饥饿。
3)预期调度算法
对时限调度算法的补充,它预测已经发出读请求的进程很可能会在将来不久再次发出访问上次所读磁道附近的请求,于是不急于执行下一个请求,而是延迟若干毫秒,在延期内若有符合预测的新请求则满足之,没有再执行下一个请求。
2.I/O软件系统
(1)设计目标和原则
①I/O软件总体设计目标
- 高效率
- 通用性
1)高效率
确保I/O设备和CPU并行执行,提高资源利用率。
2)通用性
提供简单抽象、清晰统一的接口,采用统一标准的方法管理所有的设备和I/O操作。
②达到目标的方法
对硬件设备进行分层抽象,将I/O软件组织成层次结构,低层软件屏蔽硬件细节,高层软件提供简洁、友好的界面。
③I/O软件总体设计要考虑的问题
- 设备无关性
- 出错处理
- 同步(阻塞)/异步(中断驱动)传输
- 缓冲技术
1)设备无关性
屏蔽设备的具体细节,向高层提供抽象的逻辑设备,并完成逻辑设备和具体物理设备的映射。
2)出错处理
尽可能在接近硬件的层面处理错误。低层软件能够处理的硬件I/O错误不要让高层软件感知。
3)同步(阻塞)/异步(中断驱动)传输
进程在启动设备执行I/O操作后可继续执行其它工作,直至中断到达,称为异步传输;
如果进程在启动设备后便被挂起,称为同步传输。
4)缓冲技术
建立数据缓冲区使数据的到达率和离去率相匹配。
(2)I/O软件的四个层次
- I/O中断处理程序
- 设备驱动程序
- 与设备无关的操作系统I/O软件
- 用户层I/O软件
①I/O中断处理程序
通常是设备驱动程序的重要组成部分,与硬件设备密切相关的软件,与系统其余部分尽可能少发生联系。
进程请求I/O操作时被阻塞,直到数据传输结束并产生I/O中断请求时,操作系统接管CPU后执行中断处理程序。
工作
- 检查设备状态寄存器内容,判断产生中断原因
- 根据I/O操作的完成情况进行相应处理
- 若数据传输有错,应向上层软件报告设备出错信息,实施重新执行;
- 若正常结束,应唤醒等待传输的进程,使其转换为就绪态;
- 若有等待传输的I/O命令,应通知相关软件启动下一个I/O请求。
②设备驱动程序
设备驱动程序包括与设备相关的代码。
1)概念
每类设备控制器都是不同的,需要不同的软件进行控制。专门与控制器对话,发出命令并接收响应的软件称为设备驱动程序。
2)工作
- 把用户提交的逻辑I/O请求转化为物理I/O操作的启动和执行:
- 设备名转化为端口地址
- 逻辑记录转化为物理记录
- 逻辑操作转化为物理操作
- 监督设备是否正确执行
- 管理数据缓冲区,进行必要的纠错处理
3)功能实质
从独立于设备的软件中接收并执行I/O请求。
4)主要功能
- 设备初始化
- 在系统初次启动或设备传输数据时,预置设备和控制器以及通道的状态
- 执行设备驱动例程
- 负责启动设备,进行数据传输
- 对于具有通道的I/O系统,负责生成通道指令和通道程序,启动通道工作
- 调用和执行中断处理程序
- 负责处理设备和控制器及通道所发出的各种中断
③与设备无关的操作系统I/O软件
- 设备驱动程序是设备专用的,但大部分I/O软件却与设备无关 。
- 本层I/O软件和设备驱动程序之间的界限取决于具体系统;
- 其基本功能是执行适用于所有设备的常用I/O功能,并向用户层软件提供一致性接口。
功能
- 设备命名与保护
- 提供与设备无关的块尺寸
- 缓冲技术
- 设备分配和状态跟踪
- 错误处理和报告
1)设备命名与保护
- 设备都被看做文件,通过路径名来寻址
- 设备文件名、inode、文件所有者、权限位
- 保护对设备的未授权访问
- 绝对禁止用户进程直接访问I/O设备
- I/O指令定义为特权指令,通过系统调用间接地供用户使用
- 设备文件依赖于inode来实现
- 文件目录不能区分文件名代表磁盘文件还是设备文件,但inode的内容不同
- 磁盘文件的inode包含指向数据块的指针
- 而设备文件的inode则包含指向内核设备驱动程序的指针,用来控制设备的I/O操作
- 文件目录不能区分文件名代表磁盘文件还是设备文件,但inode的内容不同
2)提供与设备无关的块尺寸
- 块设备(磁盘文件)
- 操作系统为每个磁盘配置一张记录空闲块的表或位示图
- 空闲块分配算法独立于设备,可在高于设备驱动程序的层次处理
- 不同磁盘的扇区大小可能不同,独立于设备的I/O软件屏蔽这一事实并向高层软件提供统一的数据块尺寸,可将若干扇区合并为一个逻辑块,称为簇
- 高层软件就只需与大小相同的簇交互,而不必关心物理扇区尺寸
- 字符设备
- 每次对一个字符进行操作,有些字符设备操作更大单位的数据(如80个字符),必须在本层屏蔽这类差别
3)缓冲技术
- 数据离开设备后不能直接到达目的地,需要经过与数据性质相关的中间处理
- 通过缓冲区来消除填满速率和清空速率的影响
- 对于块设备,硬件每次读写均以块为单位,而应用程序可按照任意大小单元处理数据
- 如果应用程序读写的长度和位置不恰好是完整扇区时,也必须通过缓冲区来实现
- 对于字符设备,当用户把数据写入系统的速度快于系统输出数据的速度,或字符设备提供数据的速度快或慢于应用程序消耗数据的速度时,也需要建立缓冲区
- 缓冲涉及大量复制操作,对I/O性能会产生很大影响
4)设备分配和状态跟踪
- 根据设备物理特性制定分配策略
- 静态分配
- 动态分配
- 虚拟分配
- 独占型设备
- 根据设备忙闲状态决定是否接受/拒绝请求
5)错误处理和报告
- I/O设备出错应尽可能在接近硬件的地方加以处理,低层软件所不能处理的情况交给高层软件处理
- 如果控制器发现错误,应该设法纠正和加以解决
- 如果未能处理错误,再交给设备驱动程序
- 多数错误是与设备紧密相关的,驱动程序知道应如何对其处理(如重试、忽略或报警)
- 驱动程序发现错误处理不成功,或不能处理错误时,可向独立于设备的I/O软件报错
- 此后,这个错误的处理就与设备驱动程序无关
- 设备无关的错误处理由独立于设备的I/O软件完成,如
- I/O编程异常(如无效操作码、无效设备、无效缓冲区地址)
- 关键数据结构(如磁盘位示图)读取错误
④用户空间的I/O软件
- 与用户程序链接在一起的库例程(库函数)
- 运行于内核之外的系统I/O程序
1)与用户程序链接在一起的库例程(库函数)
在高级语言中,与设备I/O相关的系统调用通常封装在库函数中。
库函数与用户程序链接在一起,但是系统调用处理程序仍然位于操作系统中。
2)运行于内核之外的系统I/O程序
运行于内核之外的典型系统I/O软件是假脱机(SPOOLing)系统。
假脱机(SPOOLing)
- 采用预输入、缓输出和井管理技术,是多道程序设计系统中处理独占型设备的一种方法
- 创建守护进程和特殊目录解决独占型设备的空占问题
假脱机是在多道程序设计系统中优化顺序共享型I/O设备使用方式的一种方法。
该方法利用一道程序模拟脱机输入时的外围控制机的功能,把低速I/O设备上的数据传送到高速磁盘上;
再利用另一道程序模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上;
此时的外围操作与CPU对数据的处理同时进行,这种在联机的情况下实现的同时外围操作称为SPOOLing。
应用示例1——打印机:
对打印机进行假脱机改造的方法是创建一个守护进程和一个假脱机目录。
用户进程需要打印文件时,将打印文件提交到假脱机目录下,用户进程即可返回执行其它任务。
守护进程获得调度时开始逐一打印假脱机目录下各个进程的文件。
应用示例2——网络传输文件:
创建一个网络守护进程和一个网络假脱机目录。
用户需要通过网络发往目的地的文件提交到网络假脱机目录下。
网络守护进程逐一取出发送出去。
3.缓冲区
- 单缓冲
- 双缓冲
- 多缓冲
4.设备分配
(1)设备独立性
①概念
通常用户不指定特定的设备,而指定逻辑设备,使得用户作业和物理设备独立开来,再通过其它途径建立逻辑设备和物理设备之间的对应关系,称这种特性为“设备独立性”。
②好处
- 利用逻辑设备进行I/O操作
- 用户与物理的外围设备无关,系统增减或变更外围设备时程序不必修改
- 易于对付输入输出设备的故障
(2)设备分配方式
①设备特性分类
- 独占设备
- 共享设备
- 虚拟设备
②相应管理和分配外围设备技术
- 独占方式:作业执行依赖独占设备(如卡片机)
- 静态分配,作业执行前将所要使用的设备全部分配给它
- 虚拟方式:执行过程中临时需要共享设备(如打印机)
- 动态分配,作业执行过程中动态分配设备资源
- 共享方式:如磁盘
- 不需要显式分配,设备管理的主要工作是驱动调度和实施驱动
③常用设备分配算法
先来先服务、优先级高者先服务等。
多个进程请求分配设备时,应防止产生死锁。
④独占设备实施共享及虚拟分配可以提高设备利用率
⑤设备分配的数据结构
- 设备分配的数据结构:设备类表和设备表;
- 系统中拥有一张设备类表,每类设备对应于表中一栏,包括内容有:设备类、总台数、空闲台数和设备表起始地址等;
- 每一类设备都有各自的设备表,用来登记这类设备中每一台设备的状态,包含的内容有:物理设备名、逻辑设备名、占有设备的进程号、已分配/未分配、好/坏等;
- 采用通道结构的系统中,设备分配的数据结构设置:系统设备表、通道控制表、控制器控制表和设备控制表。
⑥策略
- 静态分配
- 动态分配
(3)数据结构
- 系统设备表(System Device Table,SDT)
- 设备控制表(Device Control Table,DCT)
- 控制器控制表(Controller Control Table,COCT)
- 通道控制表(Channel Control Table,CHCT)