操作系统第六章--设备管理
操作系统第六章--设备管理
- I/O系统的功能、模型和接口
- I/O设备和设备控制器
- I/O设备
- 1)按使用特性分类
- 存储设备:也称外存、辅存,如磁盘
- I/O设备:键盘、鼠标、打印机;输入设备,输出设备和交互设备(如显示器)
- 2)按传输速率分类
- 低速:键盘、鼠标
- 中速:打印机
- 高速:磁盘、磁带机、光盘机
- 1)按使用特性分类
- 设备控制器:控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换
- 设备控制器的基本功能
- 设备控制器的组成
- 设备控制器与处理机的接口
- 设备控制器与设备的接口
- I/O逻辑
- 内存映像I/O(驱动程序访问控制)
- 利用特定的I/O指令
- 内存映像I/O
- I/O通道
- I/O通道设备的引入:独立完成I/O操作的组织、管理及其结束处理,减少CPU对I/O的干预
- 通道类型
- 字节多路通道:1对多子通道
- 数组选择通道:只含有一个分配型子通道
- 数组多路通道:含有多·个分配型子通道
- 瓶颈问题解决:增加通路而不是通道
- 说人话:把一个设备连接到多个控制器上,一个控制器连接到多个通道上
- 通道控制控制器,设备在控制器控制下工作
- I/O设备
- 中断机构和中断处理程序
- 中断简介
- 中断和陷入
- 外中断:CPU暂停正在执行的程序,保留CPU环境后,自动转去执行该I/O设备的中断处理程序;执行完后,再回到断点,继续执行原来的程序。
- 陷入(内中断):由CPU内部事件所引起的中断,如非法指令、地址越界等。
- 中断向量表和中断优先级
- 中断向量表:存放每个中断的处理程序的入口地址,由中断控制器确定中断请求的中断号,然后用中断号查中断向量表获得处理程序的入口地址,以便可以执行处理程序。
- 中断优先级:多个中断同时出现时,用以区别它们的紧急程度。
- 对多中断源的处理方式
- 屏蔽(禁止)中断:中断处理不再响应中断
- 嵌套中断:在优先级的中断处理中响应更高优先级的中断,从而形成嵌套
- 中断和陷入
- 中断处理程序
- 测定是否有未响应的中断信号。通常的中断在一条指令执行完后进行检查并处理。
- 保护被中断进程的CPU环境。
- 转入相应的设备处理程序。
- 中断处理。
- 恢复CPU的现场并退出中断。
- 中断简介
- 设备驱动程序
- 主要任务
- 接收上层软件发来的抽象I/O要求,如read或write命令,再把它转换为具体要求后,发送给设备控制器,启动设备去执行;反之,它也将由设备控制器发来的信号传送给上层软件。
- 设备驱动程序概述
- 设备驱动程序的功能
- 接受上层命令并转换为设备的低级命令
- 检查I/O命令的合法性
- 启动I/O设备,但不执行I/O操作(由控制器执行)
- I/O设备中断处理
- 设备驱动程序的特点
- 设备处理方式
- 设备驱动程序的功能
- 设备驱动程序的处理过程
- 将抽象I/O请求转换为具体要求。
- 对请求服务进行合法性检查。
- 读取设备的状态寄存器检查设备的状态。
- 传送必要的参数
- 启动I/O设备
- 对I/O设备的控制方式(重点)
- 程序轮询
- 启动I/O操作时把状态寄存器中的忙/闲标志busy 置为1,然后循环检查状态寄存器中的忙/闲标志busy是否变为0,以判断I/O操作是否结束,在确定结束后再进行下一步操作。(不停地问数据输入好了没有)
- 中断
- 即当某进程要启动某个I/O设备工作时,便由CPU向相应的设备控制器发出一条I/O命令,然后立即返回继续执行原来的任务。
- 以字(节)为单位进行I/O的
- 直接存储访问DMA
- (1) 数据传输的基本单位是数据块,即在CPU与I/O设备之间,每次传送至少一个数据块。
- (2) 所传送的数据是从设备直接送入内存的,或者相反。
- (3) 仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在控制器的控制下完成的
- I/O通道和I/O处理机
- 数据传输的单位由一个数据块变为一组数据块
- 通道是通过执行通道程序并与设备控制器共同实现对I/O设备的控制的。通道程序是由一系列通道指令(或称为通道命令)所构成的。
- 程序轮询
- 主要任务
- 与设备无关的I/O软件
- 与设备无关软件的基本概念
- 设备独立性:应用程序中所用的设备,不局限于使用某个具体的物理设备。
- 为了实现设备独立性,必须再在设备驱动程序之上设置一层软件,称为与设备无关的I/O软件,或设备独立性软件.
- 1. 以物理设备名使用设备
- 2. 引入了逻辑设备名
- 3. 逻辑设备名称到物理设备名称的转换
- 与设备无关的软件
- 1. 设备驱动程序的统一接口
- 2. 缓存管理
- 3. 差错控制
- 4. 对独立设备的分配与回收
- 5. 独立于设备的逻辑数据块
- 设备分配
- 设备分配中的数据结构
- 设备控制表DCT
- 控制器控制表COCT、通道控制表CHCT、系统设备表SDT
- 设备分配时应考虑的因素
- 设备的固有属性(独占、共享、虚拟设备)
- 设备分配算法(先来先服务、优先级高者优先)
- 设备分配中的安全性(安全分配方式、不安全分配方式)
- 独占设备的分配程序
- 基本的设备分配程序(分配设备、分配控制器、分配通道)
- 设备分配中的数据结构
- 逻辑设备名到物理设备名映射的实现
- 逻辑设备表LUT
- 在逻辑设备表的每个表目中包含了三项:逻辑设备名、物理设备名和设备驱动程序的入口地址
- 逻辑设备表的设置问题
- 第一种方式,是在整个系统中只设置一张LUT。
- 第二种方式,是为每个用户设置一张LUT。
- 逻辑设备表LUT
- 与设备无关软件的基本概念
- 用户层的I/O软件
- 系统调用与库函数
- 系统调用:应用程序可以通过它间接调用OS中的I/O过程,对I/O设备进行操作。
- 库函数:用户程序通过调用对应的库函数使用系统调用,这些库函数与调用程序连接在一起,被嵌入在运行时装入内存的二进制程序中。
- 假脱机系统Spooling
- 假脱机技术:利用专门的外围控制机,先将低速I/O设备上的数据传送到高速磁盘上,或者相反。
- 系统组成
- 输入井:收容I/O设备输入的信息;输出井:收容用户程序的输出数据
- 输入缓冲区和输出缓冲区:缓和CPU和磁盘之间速度不匹配
- 输入进程和输出进程
- 井管理程序:控制作业与磁盘井之间信息的交换
- 系统特点
- 提高了I/O的速度
- 将独占设备改造为共享设备
- 实现了虚拟设备功能
- 假脱机打印机系统
- 磁盘缓冲区
- 打印缓冲区
- 假脱机管理进程和假脱机打印进程
- 守护进程daemon:为打印机建立一个守护进程,由它执行一部分原来由假脱机管理进程实现的功能,如为用户在磁盘缓冲区中申请一个空闲盘块,并将要打印的数据送入其中,将该盘块的首址返回给请求进程。
- 系统调用与库函数
- 缓冲区管理
- 缓冲的引入
- (1) 缓和CPU与I/O设备间速度不匹配的矛盾。
- (2) 减少对CPU的中断频率,放宽对CPU中断响应时间的限制。
- (3) 解决数据粒度不匹配的问题。
- (4) 提高CPU和I/O设备之间的并行性。
- 单缓冲区和双缓冲区
- 单缓冲区:在单缓冲情况下,每当用户进程发出一I/O请求时,操作系统便在主存中为之分配一缓冲区
- 双缓冲区:解决生产者和消费者在使用缓冲区时的互斥问题
- 环形缓冲区:将多个缓冲区构成环形,通过三个指针指明可用的缓冲区访问及当前使用的缓冲区
- 缓冲池:存在于主存,通过三个队列管理缓冲区
- 缓冲的引入
- 磁盘存储器的性能和调度
- 磁盘简述
- 磁盘设备可包括一个或多个物理盘片,每个磁盘片分一个或两个存储面(Surface),每个盘面上有若干个磁道(Track),磁道之间留有必要的间隙(Gap)。为使处理简单起见,在每条磁道上可存储相同数目的二进制位。
- 磁盘类型:固定头磁盘、移动头磁盘
- 磁盘访问时间:寻道时间+旋转延迟+传输时间
- 早期的磁盘调度算法
- 先来先服务FCFS
- 最短寻道时间优先SSTF
- 基于扫描的磁盘调度算法
- 扫描SCAN算法:解决优先级低的进程饥饿
- 当磁头正在自里向外移动时,下一个访问的磁道是在当前磁道之外,又是距离最近的,直到访问到最外面的磁道后,更改磁臂为自外向里(顺着一个方向扫描到头)
- 循环扫描CSCAN算法:解决新进程等待时间过长
- 当扫描到头之后,直接从最里面的磁道开始扫描
- NStepSCAN和FSCAN调度算法
- 扫描SCAN算法:解决优先级低的进程饥饿
- 磁盘简述