设 备 管 理
设设 备备 管管
理理 设备管理是操作系统最基本、最繁杂的组成部分。
且与硬件的关系最密切。
设备管理概述
外设按功能分为两类 {
I/O设备
存储设备
I/O设备
输入设备 — 模拟信号 数字信号(A/D转换)
输出设备 — 数字信号 模拟信号(D/A转换)
一、I/O设备及分类
存储设备
存取控制部分(控制电路伺服系统、读写控制电路、
磁头、光头等)
信息载体 (磁盘、磁带、光盘等)
按传输速度
低速:键盘、鼠标
中速:打印机
高速:磁盘
按信息交换单位
块设备:信息传输以块为单位
字符设备:信息传输以字节为单位
按分配方式
独占设备:在一段时间只允许一个进程访 问的设
备。 打印机
共享设备:在一段时间允许多个进程同时 访问的
设备。 磁盘
虚拟设备:将独占设备虚拟为多台虚拟设备
独占设备虚拟为共享设备
设备管理的基本任务是:
(1) 控制 I/O 操作,进行设备分配,提高CPU与设备之间的并行工作程度。协
调和保证设备的高效工作。
(2) 向用户提供一个使用设备的方便接口。完成用户的I/O请求。
二、设备管理的任务和功能
设备管理的功能:
• 建立统一的独立于设备的接口。
• 按照设备类型和相应算法,进行设备的分配与回收。
• 进行设备驱动,实现真正的I/O操作及设备间的并行操作。
• 实现输入输出缓冲区管理,解决高速CPU与慢速设备速 度不匹配问题。
• 实现虚拟设备管理。
1.微机I/O系统 CPU通过总线与设备控制器相连接,设备 控
制器是CPU 与设备之间的接口。
2.主机I/O系统 使用I/O通道(I/O处理机),实现对设备
控制器的控制。
三、I/O 系统的结构
CPU
存储器
I/O设备 I/O设备
总线
高速 低速
1、微机I/O系统 基于总线的微机硬件体系
设备
控制器
设备
控制器
共享总线
设备与CPU之间的通信通过设备控制器进行
2、主机I/O系统特点
CPU
主存
通道 通道 通道 通道
I/O
设备
磁
盘 磁带
通信
设备
以通道代替CPU与设备控制器通信
通道可认为是特殊的处理器,各通道与CPU共享主存
•设备控制器与通道
(1)设备控制器
位于CPU与设备之间,接收CPU下达的输入、输出命令
并控制具体设备实现操作。
*功能
接收和识别命令
地址识别
命令接收
命令识别
数据交换 数据暂存、缓冲
监测设备状态
(2)通道
1、通道是一种特殊的处理机,具有执行I/O指令的能力。通过执行通道程序来
控制I/O操作
2、CPU只需向通道发出一条指令,通道便从内存中取出本次执行的通道程
序,并执行。
通道程序可以包含多次输入、输出,是一个相对完整的过程
4、通道把CPU从繁杂的I/O任务中解脱出来
3、通道之间可以并行执行
数据传送控制方式
(1)程序I/O方式 (2)中断控制方式
(3) DMA 控制方式 (4)通道控制方式
设备管理的主要任务之一是控制设备与内存或
CPU 之间的数据传送,选择控制方式的原则是:
保证在足够的传输速度下数据的正确传送。
系统开销小。
充分发挥硬件资源的能力。
本节讨论CPU 通过设备控制器来控制数据I/O的方式。
常用的I/O控制方式
(1)程序I/O方式
接收到CPU
发来的start指令
准备接收和发送
数据准备
准备完毕?
标志触发器置“Done”
设备
是
否
等待CPU来的下条指令
向设备发start指令
设备标志触发器
置为“Done”?
等待
执行下条指令
开始数据传输
CPU
否
是
(2)中断控制方式
结合进程调度机制,实现让权等待
进程利用中断实现输入、输出流程:
初始化
阻塞等待输入
控制设备
完成输入
根据中断唤醒等待进程
设备产生输入中断
接收到CPU
发来的start指令
准备数据并将其
置入缓冲寄存器
缓冲寄存器满?
控制器发中断信号
设备
是
否
向设备发start指令
将中断允许位置1
调度程序调度
其它进程
其它进程执行
收到中断信号?
中断处理
被中断进程执行
CPU
是
否
中断机制实现了CPU与设备的并行控制——让权等待
CPU
输入:
其他进程 中断处理 继续
设备
等待数据
处理输入数据
被唤醒的等待进程
数据到
设备
产生中断
暂不接收
数据
清除中断
等待数据
一次I/O操作(1字节)完成,向CPU发中断信号,CPU作中断处理。
效率虽然比程序I/O方式高,但还是不适宜需要交换大量数据的情况。
缺点:
(3)DMA方式
中断控制方式一般以字节为单位产生中断,每个字节在中断处理程序中,读
入到CPU的寄存器中。直接存储器访问 DMA(Direct Memory Access)方式
的引入是为解决中断控制方式对块设备低效的问题。减少中断次数。
由于大多数的小型、微型计算机采用总线结构,DMA方式是“窃取”或
“挪用” CPU总线的控制权,即要求CPU暂停若干总线周期,由DMA控制器
占有存储器周期进行设备与内存之间的数据交换。
DMA方式的基本思想
(1)以数据块为单位进行数据传送。
(2)设备与内存之间直接交换数据。
DR — 数据寄存器,暂时存放设备—内存间传送的信息。
MAR— 内存地址寄存器。
DC — 传送字(节)数寄存器。
CR — 命令/状态寄存器。接收从CPU发来的 I/O命令、控制信息、
设备状态。
主机-控制器接口 控制器-块设备接
口
DMA控制器的组成
DR
MAR
DC
CR
I/O
控
制
逻
辑
CPU 内存
命令 系统总线 DMA控制器
。
。
。
cou
nt
磁
盘源地址
数据
DMA工作过程
以磁盘数据输入为例
• 预置DMA寄存器
• 启动DMA,传送一个数据块
• 睡眠并等待DMA传送结束
• I/O中断处理
• 唤醒数据输入进程
DMA方式为成块传递,
1、数据直接在DMA控制器控制下通过总线传递到内存中
2、在完成指定量的数据接收后,DMA控制器才向CPU产生 中断。
3、通过中断处理程序可能唤醒等待数据的进程
减少CPU在数据传递过程中的干预
中断控制方式与DMA方式
CPU
总线
I/OI/O设备设备
内存内存
中断中断
CPU
I/OI/O设备设备
内存内存
DMADMA
通知已通知已
传输完毕传输完毕
(4)通道控制
通道通过执行通道程序并行完成一系列输入输出过程
进一步减少CPU对输入输出过程的干预。
提高CPU与设备之间的并行性,提高资源利用率,
提高系统吞吐量。
通道是一个独立于CPU的专门控制I/O工作的简单的
处理机,它控制设备与内存直接进行数据交换。
CCW的信息:
操作码 内存地址 传送数据字节数
通道程序结束位P(P =1 结束)
记录结束标志R { 0 指令处理同一记录1 处理记录结束
通道(Channel) 是比DMA方式更加完善,功能更强的I/O 控制方式。
DMA与通道方式的异同:
相同:以内存为中心,实现设备与内存之间直接交换数据
的控制方式。
不同:通道是专门控制 I/O的处理机。其指令称为通道控
制字(CCW),由CCW编制的通道程序,独立执
行I/O任务。
通道的控制过程:
CPU启动通道
通道程序的始址存放在称为通道地址字(CAW)
的内存单元中,由 CPU启动通道程序后,CPU可去执
行其他任务。
执行通道指令CCW ,向设备控制器发出I/O操作命令。
设备根据CCW将数据传送到内存指定单元。
数据传送结束,I/O控制器向CPU 发出中断请求命令。
按照信息交换方式分类:
字节多路通道 —用于低、中速设备
含多个非分配型的子通道,子通道按时间片轮转
共享主通道。按字节传送。传输速度慢
选择通道 —连接中、高速设备
含一个分配型的子通道,一段时间内只能执行、
控制一台设备工作。通道利用率低,传输速度快。
数组多路通道 — 连接中、高速设备
通道的类型
中央处理机
内存
字节多路通道 数组多路通道选择通道
卡片
输入机
卡片
输入机
打印机
磁盘 磁带
通 道 结 构
缓冲技
术
1.缓解CPU与外设速度不匹配的问题。
2.减少CPU中断响应次数,放宽响应时间。
缓冲一定数量的数据后才向CPU产生一次中断
3.提高CPU与I/O设备,I/O设备之间的并行操作能力。
减少CPU在设备数据传输期的干预
一.为什么引入缓冲技术
缓冲技术的基本思想: 在内存中开辟一个或多个专用区域(缓冲区),作为
CPU 与I/O设备间信息的集散地。
速度1
速度2
1.单缓冲区(single buffer)
在设备和主机之间设置一个缓冲区。只能缓解速度匹配的问题。不能实现
设备之间的并行操作。
二、缓冲区的组织
设备以速率V向缓冲输入数据
缓冲区满后CPU以速率W读出数据
缓冲区处理完后再由设备输入数据
接
收
解决了速率匹配问题
速度1
速度2
设备 CPU
同时
提高CPU与设备间的并行度
一般是建立两个大小相等的缓
冲区,设备交替对两个缓冲区
输入数据,操作系统也交替地
从两个缓冲区移出数据送用户
进程区。
2.双缓冲区(double buffer)
双向通信
接收
发送
CPU
设备1
设备2
CPU
3.多缓冲区与缓冲池(buffer pool)
可以实现多个外设并行工作及解决CPU的速度匹配问题。现行操作系统大都采用
此结构。
三、缓冲池的管理
1.缓冲池的结构
缓冲池由多个
缓冲区构成。每个
缓冲区又分为缓冲
区首部和缓冲体。
设备号
缓冲区号
缓冲区地址
缓冲区状态(忙/闲)
数据块号
互斥标识位
设备缓冲队列指针
缓冲区首部
将缓冲区连接成三种队列:
空缓冲区队列(emq)
满输入缓冲区队列(inq)
满输出缓冲区队列(outq)
有四类工作缓冲区:
sin 提取输入的工作缓冲区
hin 收容输入数据的缓冲区
sout 提取输出的工作缓冲区
hout 收容输出数据的缓冲区
(1)收容输入
输入进程调用过程getbuf(emq),从空缓冲队列中
申请一空缓冲区—收容输入数据的缓冲区(hin)。
从设备输入数据到 hin。
调用过程putbuf(inq,hin),将满缓冲区hin插入满
输入缓冲区队列(inq)的队尾。
2. 缓冲池管理方式
(2)提取输入
当需要处理输入数据时,计算进程调用getbuf( inq),
从满输入缓冲区队列(inq)的队首取出一缓冲区—提取
输入的工作缓冲区(sin)。
计算进程从sin提取数据处理。
调用过程putbuf(emq,sin),释放工作缓冲区sin
,并插入空缓冲队列尾。
缓冲池管理过程(以输入为例)
缓冲输出过程(收容输出、提取输出)与输入类似。
输
入
输
出
设
备
数
据
处
理
程
序
hin
sout
sin
hout
…
…
…
inq
emq
outq
putbuf(inq,hin)
putbuf(emq,sout)
getbuf(inq)
getbuf(emq)
putbuf(emq,sin)
getbuf(outq)
getbuf(emq)
putbuf(outq,hout)
提取
输入
提取
输出
收容
输入
收容
输出
典型的缓冲池管理
收容
输入
getbuf(emq)
hin
putbuf(inq,hin)
提取
输入
getbuf(inq)
sin
putbuf(emq,sin)
设备的分配
按一定算法进行设备分配
包括设备、设备控制器及通道
保证: “有”——用户能得到设备使用权。
“安全”——用户使用设备是安全的。
讨论设备分配的数据结构,分配原则及分配算法。
一、设备分配的数据结构
1.设备控制表DCT(Device Control Table)
系统为每个设备配置了一张设备控制表,记录该设备的情况反映设备特性,设
备与I/O控制器连接情况。
DCT1
DCTi
DCTn
设备类型Type
设备表示符:device_id
设备状态:忙/闲
指向控制器表的指针
重复执行次数或时间
设备等待队列队首指针
设备等待队列队尾指针
.
.
.
.
.
.
2.控制器控制表COCT(Controler Control Table)
系统为每个控制器都设置了一张用于记录本控制器情况的控制表。记录I/O控制器使
用情况及与通道连接情况。(DMA无)
控制器标识符:controller_id
控制器状态:忙/闲
与控制器连接的通道表指针
控制器队列的队首指针
控制器队列的队尾指针
控制器表COCT
3.通道控制表CHCT(Channel Control
Table)
每个通道都配有一张通道控制表。
描述通道的使用情况。
通道标识符:channel_id
通道状态:忙/闲
与通道连接的控制器表指针
通道队列的队首指针
通道队列的队尾指针
通道控制表CHCT
4.系统设备表SDT(System Device Table)
整个系统一张,记录已连接到系统中的设备情况,每个设备在SDT中占一表项。
表目1
表目i
设备类
设备标识符
DCT指针
驱动程序入口
系统设备表SDT
...
...
设备名 设备控制表
设备名 设备控制表
设备名 设备控制表
设备名 设备控制表
SDT 设备名
设备控制器
设备名
设备控制器
状态
状态
控制器名
通道控制表
状态
控制器名
通道控制表
状态
DCT COCT
通道标识
状态
通道标识
状态
CHCT
设备分配的数据结构
设备分配的方式:
静态分配 — 一次分配所有需要的设备。不符合分配
原则。
动态分配 — 进程执行过程中,按需分配。
设备分配总原则:充分发挥设备利用率,避免由于不
合理分配引起进程死锁。
具体考虑以下方面:
1 .设备的固有属性 (独占、共享、虚拟)。
2 .设备分配算法(先来先服务、优先级)。
3. 设备分配的安全性(安全或不安全分配方式)。
4 . 设备独立性(用户程序独立于使用的物理设备)。
二、设备分配的原则及方式
三、设备分配流程
进程P发出I/O请求
搜索SDT找到DCT指针
查DCT
设备忙?
进程P按分配算法
入I/O队列
Y
N
按分配算法选择进程
进程P选中? 进程P等待
设备空闲
N
Y
检查设备分配的安全性
安全吗?
NY
设备分配给进程P
1
1
搜索DCT找到COCT指针
控制器忙?
Y
进程P等待
控制器
N
分配控制器给进程P
搜索COCT找到CHCT指针
CHCT忙
Y
进程P等
待通道
N
分配通道给进程 P
启动 I/O
多道程序系统中,进程对设备的需求频繁,尤其是独占设备数量有限、效
率低,故引入虚拟设备管理技术。
基本思想:用大容量的快速设备(磁盘)模拟慢速度的
独占设备,把一台物理上的独占设备变为逻辑上的多台共享设备。
SPOOLing是一种典型的虚拟设备技术, SPOOLing 是
Simultaneous Peripheral Operations On Line (外围设
备同时联机操作)的缩写,是用程序模拟脱机I/O的功能,故又称为假脱机技术。
虚拟设备管理与SPOOLing技术
2 . SPOOLing 技术
1. 虚拟设备管理
真脱机技术:输入、输出是脱离主机完成的。
靠外围机的控制输入、输出设备与磁盘交换数据。
CPU只与高速磁盘(磁带)交换数据
其它输入井 输出井
高速高速
假脱机技术
技术要点:
(1)多道程序并发执行
(2)一道程序模拟外围机的输入,将数据从设备输入到磁盘
(3)一道程序模拟外围机的输出,将数据从磁盘输出到设备
(4)其它程序与设备的通信和脱机方式一样:读写高速磁盘
(5)主机仍要控制外围设备——“假脱机”
特点
(1)提高了进程访问低速设备速率
(2)独占设备成为虚拟设备
(3)独占设备成为共享设备
不与实际设备交互
磁盘是可共享的高速设备
SPOOLing 系统的组成:
输入井、输出井 输入进程、输出进程 I/O缓冲区
输入设备
输入设备
通
道
通 道
通
道
输出设备
输出设备
输入井 输出井
外 存
输入管理 输出管理
进程 进程
主机系统
I/O缓冲区
以打印机为例,说明SPOOLing 系统的工作过程:
当进程请求打印输出时,OS并不是把设备分配给它。
1、输出进程为其申请输出井中的一块空闲区(虚拟打印机),
并送入输出数据。
2、输出井中形成各进程的打印队列(printer queue)。
3、由SPOOLing 系统的缓冲输出程序依次输出到打印机。
打印机 独占设备
虚拟打印机 共享设备
I/O请求的处理过程,由输入/输出控制系统IOCS完成,其中最主要的部分
是设备驱动程序。它是I/O请求进程与设备控制器之间的通信程序。
1、用户进程向IOCS发出I/O请求。
2、IOCS查逻辑设备表(LUT),将逻辑请求转换为物
理请求。
3、IOCS调用驱动程序的“启动过程”启动I/O设备。
4、IOCS将有关信息放入中断表中。
5、将用户进程挂起,放入I/O等待队列。
6、执行驱动程序的“继续过程”(中断处理、传送 I/O
数据)。
7、完成I/O操作,重新启动用户进程。
一、I/O请求处理过程
I/O管理
二、I/O设备驱动程序
设备驱动程序是IOCS的主体,一般为每类(个)设备设置一个驱动程序。
驱动程序{ 启动过程 —启动一个I/O操作。继续过程 —处理中断和完成数据传送。
驱动程序执行步骤:
1、服务请求校验 确定请求的操作,检验硬件支持。
2、确认设备状态 确定设备(状态寄存器)是否可用。
3、启动I/O请求 若确认设备状态可用,启动I/O。
4、中断处理 CPU处理I/O过程的中断。驱动程序应保存处
理器的当前状态,以便进程重新执行。
5、I/O请求完成 驱动程序识别I/O完成,将控制返回IOCS,
将被中断的进程置为就绪。