目录
设备管理概述
设备的分类
按从属关系分类:“系统设备”、“用户设备”
按传输速率分类:“低速设备”、“中速设备”、“高速设备”
按使用特性分类:“存储设备”、“I/O设备”
按设备共享属性分类:“独占设备”、“共享设备”、“虚拟设备”
按信息交换或处理单位分类:“字符设备”、“块设备”
设备管理的目标
设备管理的目标主要有三点:
- 提高I/O设备和CPU的利用率
- 提高I/O速度
- 为用户提供方便、统一的界面
设备管理的功能
设备管理应具备下面三个功能:
- 设备分配:按照设备类型和响应的分配算法决定将I/O设备分配给哪个要求使用该设备的进程
- 设备处理:设备处理程序实现CPU和设备控制器之间的通信
- 实现其他功能:其他功能包括对缓冲区的管理功能及实现设备独立性
设备管理结构
逻辑I/O
逻辑设备实体,不涉及实际的设备控制
- 针对用户接口,提供抽象的命令,如:Open、Close、Read、Write
- 针对通信设备,则是通信体系结构
- 针对文件存储设备,则是文件系统的逻辑结构控制
设备I/O
针对设备控制,是逻辑设备与物理设备间的过度协调机构
- 用户命令到设备操作序列的转换
- I/O缓冲:提高I/O效率
调度和控制
物理设备控制实体:直接面对硬件设备的控制细节(设备驱动程序)
- 并发I/O访问调度
- 设备控制和状态维护
- 中断处理
设备控制器和I/O通道
设备控制器处于CPU与I/O设备之间,它接收CPU发来的命令,并去控制I/O设备工作,使处理机从繁杂的设备控制事务中解脱出来
I/O通道是指:“专门用于负责输入/输出工作的处理机,是大型机必备的为CPU减负的设备”
I/O控制方式
I/O控制方式经历了四个发展阶段:
“程序直接控制方式”、“中断控制方式”、“DMA控制方式”、“通道控制方式”
程序直接控制方式
- 进程需要输入数据时,由处理机向设备控制器发出一条输入指令启动设备进行输入操作
DMA控制方式
当进程要求设备输入一批数据时,便通过CPU向DMA控制器发送一条输入命令,同时将准备存放输入数据的内存起始地址以及要传送的字节数分别送入DMA控制器中的内存地址寄存器和传送字节计数器
之后CPU便可以去处理其他任务,而DMA控制器控制输入设备不断地挪用CPU工作周期,将数据源源不断地写入内存,直到所要求的字节全部传送完毕
通道控制方式
通道通过执行通道程序,与设备控制器共同实现对I/O设备的控制
通道程序由通道指令(通道命令)构成,它的每条指令中包含下列信息:
- 操作码:规定了指令所执行的操作(读、写、控制)
- 内存地址:标明字符送入内存和从内存取出时的内存首址
- 计数:表示本条指令所要读(写)数据的字节数
- 通道程序结束位P:P = 1表示本条指令是最后一条指令
- 记录结束标志R:R = 0表示该指令与下一条指令同属一个记录;R = 1表示某记录的最后一条指令
通道有三种类型:“字节多路通道”、“块选择通道”、“块多路通道”
中断技术
中断的基本概念
中断是指计算机在执行期间,系统内发生了某一紧急需处理的事件,是CPU暂时中止的事件处理程序
引起中断发生的事件称为中断源
中断源向CPU发出的请求中断处理的信号称为中断请求
CPU收到中断请求后转相应事件处理程序的过程称中断响应
中断分类与优先级
按中断信号的含义和功能,中断可分为5类:
- 机器故障中断:因机器发生错误而产生的中断
- I/O中断:由输入/输出设备引起的中断
- 程序性中断:因程序中错误使用指令或数据引起的中断
- 外部中断:处理机外部的非通道装置引起的中断
- 访管中断:程序执行访管指令(系统调用)而产生的中断
中断优先级高低顺序为:“机器故障中断” > “访管中断” > “程序性中断” > “外部中断” > “I/O中断”
中断处理过程
当中断发生时,一旦CPU响应中断,系统就开始进行中断处理,过程如下图所示:
- 保护被中断进程现场
- 根据中断原因,去执行不同的中断处理程序
- 恢复被中断进程现场,CPU继续执行原来被中断的进程
缓冲技术
在下面两种情况中,我们需要用到缓冲技术(Cache):
- 在CPU和外设交换数据时,经常会出现数据写入与读取的速度不匹配的情况
- 在访问磁盘时,缓冲技术必不可少
缓冲技术的基本思想
缓冲技术的实现思想是:
在CPU和外设之间设立缓冲区,用以暂存CPU和外存之间交换的数据,从而缓和CPU与外设速度不匹配产生的问题
在操作系统中引入缓冲的主要原因有下面几点:
- 改善CPU与I/O设备间速度不匹配的矛盾
- 减少对CPU的中断频率,放宽对中断响应时间的限制
- 提高CPU和I/O设备之间的并行性
缓冲的分类
缓冲可分为:“硬件缓冲”和“软件缓冲”
- 硬件缓冲:专用的寄存器作为缓冲器,通常设在设备中
- 软件缓冲:在操作系统管理下,在内存中划出若干个单元作为缓冲区
根据系统设置的缓冲区个数,缓冲技术被分为:“单缓冲”、“双缓冲”、“环形缓冲”、“缓冲池”
单缓冲
单缓冲是在设备和处理机之间设置的一个缓冲区
设备和处理机交换数据时,先把被交换数据写入缓冲区,然后设备再从缓冲区取走数据
由于设置了一个缓冲区,设备与处理机对缓冲区的操作是串行的(同一时间内,最多有一个对象在使用缓冲区)
双缓冲
双缓冲可以大大提高处理机与设备的并行程度
输入设备将第一个缓冲区转满数据后,转而去装填第二个缓冲区,而此时用户区就可以从第一个缓冲区中读取数据了,如此循环(同一时间内,处理机和设备可以同时操作两个不同的缓冲区)
环形缓冲
环形缓冲引入多个缓冲区组成环形的形式,每个缓冲区中有一个链接指针指向下一个缓冲区,最后一个缓冲区指向第一个缓冲区(双缓冲变形)
缓冲池
缓冲池基本思想:
“把专用缓冲区变为通用缓冲区,全部缓冲区组成一个缓冲池,由管理程序统一管理、动态分配”
缓冲池中的缓冲区被分成三个队列:“空缓冲队列”、“输入队列”、“输出队列”
缓冲的作用
缓冲的基本操作是:申请和释放一个缓冲区
- type:缓冲队列
- i:缓冲队列中编号为i的缓冲区
- n:缓冲队列的资源信号量
- mutex:缓冲队列的互斥信号量
设备分配与设备处理
设备分配的数据结构
设备分配的数据结构有:“设备控制表”、“控制器控制表”、“通道控制表”、“系统设备表”
设备控制表包括以下内容:
- 设备标识符:区别设备用
- 设备类型:反应设备的响应特性和类型
- 设备I/O总线地址:设备和CPU是通过I/O总线连接起来的
- 设备状态:设备所处状态
- 等待队列指针:等待使用该设备的进程组成等待队列
- 与设备相连的COCT指针
- 重试次数
设备分配策略
分配策略
- 独占设备的分配
- 共享设备分配
- 虚拟分配
分配算法
- 先来先服务
- 优先级高者优先
设备分配的安全性
- 静态分配
- 动态分配
设备处理
设备驱动程序
设备处理程序又称为设备驱动程序,是驱动外部设备和相应的控制器等,使其可以直接和内存进行I/O操作的子程序的集合
设备处理方式
- 为每一类设置一个I/O进程
- 整个系统中设置一个I/O进程
- 不设置专门的设备处理进程,只为各类设备设置相应的设备处理程序
设备驱动程序的工作过程
- 检查用户输入/输出请求
- 检查输入/输出请求合法性和设备状态可用性
- 构造输入/输出程序
- 启动设备进行/输入/输出操作
- 处理设备或通道的中断请求
SPOOLing系统
SPOOLing系统概念
所有字符设备都是独占设备和慢速设备,本质上属于顺序设备
假脱机技术(SPOOLing)可把独占设备转变成可共享的虚拟设备,提高独占设备的利用率和推进速度
SPOOLing系统的组成
SPOOLing系统主要包括下面三个部分:
- 输入井和输出井:崔盘上的两个存储区域,用于收容I/O设备输入的数据
- 输入缓冲区和输出缓冲区:内存中的两个缓冲区。暂存由输入设备/输出设备送来的数据
- 输入进程和输出进程:输入进程模拟脱机输入时的外围控制机。输出进程模拟脱机输出时的外围控制机
SPOOLing系统优点
- 实现虚拟设备功能,将一台独占设备改造成为多台可共享的虚拟设备
- 提高了独占设备的利用率,增大了系统调度和分配的灵活性
- 提高了I/O速度,加快了用户进程的执行速度
磁盘设备管理
磁盘结构
磁盘系统可分为两种基本类型:“固定头磁盘”和“移动头磁盘”
- 固定头磁盘:盘面上的每条磁道都有一个读写头
- 移动头磁盘(温盘):每个盘面只有一个读写磁头,每执行一次盘的操作都需先移动磁头,使其对准所要找的磁道,这被称为“寻找操作”。硬盘是由若干盘片所组成的盘片组,各盘片均安装在一个高速旋转的枢轴上
磁盘驱动程序为了对盘片组中的一个物理块进行定位,需要下面三个参数:
- 柱面号:随着磁臂的移动,各盘面所有的读写头同时移动,并定位在同样的垂直位置的磁道上,这些相同半径的原型磁道形成了一个柱面
- 磁头号(盘面号或磁道号):一个盘片组的全部有效盘面从上至下依次编号
- 扇区号:磁盘格式化时把每个盘面划分成相等数量的扇形区域,落在磁道上的部分称为扇区,并按磁盘旋转的反向从0开始给各磁道上的扇区编号
数据存放步骤:柱面 -> 磁道 -> 扇区
假定柱面上的磁道数为t,磁道数上的扇区数为s,柱面号为i,磁头号为j,扇区号为k
它的物理块号计算公式:b = k + s * (t * i + j)
例题:
若某硬盘格式化后盘片组数据为n = 200 , m = 20, k = 10
1.柱面号为185 磁头号为12 扇区号为5的磁盘块块号是多少?
磁盘块块号x = 185 * 200 + 10 * 12 + 5 = 37125
2.1200号磁盘块对应的柱面号、磁头号及扇区号为多少?
a = (1200 - 1) // 200 = 5
b = ((1200 - 1) % 200) // 10 = 19
c = ((1200 - 1) % 200) % 10 + 1 = 10
磁盘的访问时间
对磁盘的访问时间包括下面三个部分的时间:
- 柱面定位时间
- 旋转延迟时间(指定扇区/块旋转到磁头下所需的时间)
- 数据传送时间
磁盘调度算法
先来先服务FCFS
它根据进程请求访问磁盘的先后次序进行调度
最短寻道时间优先SSTF
考虑磁盘I/O请求队列中各请求的磁头定位位置,该算法目标是使每次磁头移动时间最少
扫描算法SCAN
该算法中磁头移动的规律像电梯运行,又称为电梯调度算法
它考虑两个因素:先“方向一致”后“距离最短”
循环扫描算法CSCAN
它将磁盘各磁道视为一个环形缓冲区似的构造---首尾相连,磁头能立即折返
例题
- 先来先服务:先来先服务的移动次序为:86 147 91 177 94 150 102 175 130,故移动总量是:(143 - 86) + (147 - 86) + (147 - 91) + ... + (175 -130) = 565
- 最短寻道:磁头移动顺序为:143 147 150 130 102 94 91 86 175 177 ,移动量是 :(150 - 143) + (150 - 86) + (177 - 86) = 162
- 扫描算法:磁头向磁道号增加方向移动:143 147 150 175 177 130 102 94 91 86,故移动总量是:(177 - 143) + (177 - 86) = 125。磁头向磁道号减小方向移动:143 130 102 94 91 86 147 150 175 177,故移动总量是:(143 - 86) + (177 - 86) = 148