本章主要介绍设备管理与缓冲、磁盘的关系
I/O系统的功能、模型和接口
I/O设备和设备控制器
中断机构和中断处理程序
设备驱动程序
与设备无关的I/O软件
用户层的I/O软件
缓冲区管理
磁盘存储器的性能和调度
一:I/O系统的功能、模型和接口
1.主要功能:
- 隐藏物理设备细节,方便用户
用户使用抽象的I/O命令即可 - 实现设备无关性,方便用户
用户可用抽象的逻辑设备名来使用设备,同时也提高了OS的可移植性和易适应性。 - 提高处理机和设备的并行性,提高利用率:缓冲区管理
- 对I/O设备进行控制:控制方式、设备分配、设备处理
- 确保对设备正确共享:虚拟设备及设备独立性等
错误处理
2.模型
3.接口
在I/O系统与高层接口中,根据设备类型的不同,又进一步分为若干个接口。主要包括:
• 块设备接口
• 流设备接口
网络通信接口
二.I/O设备和设备控制器
1.类型
I/O设备的类型繁多,从OS的观点,按其重要的性能指标进行分类如下:
按传输速率分类:
低速、中速、高速(键盘、打印机、磁盘)
使用:存储设备、输入输出设备
按信息交换的单位分类:
块设备:有结构、速率高、可寻址、DMA方式控制
字符设备:无结构、速率低、不可寻址、中断方式控制
2.设备控制器
设备并不直接与CPU通信
计算机中的一个实体——“设备控制器”负责控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换。
控制器是CPU与I/O设备之间的接口,作为中间人接收从CPU发来的命令,并去控制I/O设备工作,以使处理机脱离繁杂的设备控制事务。
3.IO逻辑
通过一组控制线与处理机交互
CPU要启动一个设备时,
• 将启动命令发送给控制器;
• 同时通过地址线把地址发送给控制器
• 控制器的I/O逻辑对收到的地址和命令进行译码,再根据所译出的命令选择设备进行控制。
三.中断机构和中断处理程序
1.中断和陷入
⑴中断和陷入
• 中断:CPU对I/O设备发来的中断信号的一种响应,中断是由外部设备引起的,又称外中断。
• 陷入:由CPU内部事件所引起的中断,通常把这类中断称为内中断或陷入(trap)。
• 中断和陷入的主要区别:是信号的来源。
2.主要工作
主要工作
• ①进行进程上下文的切换
• ②对处理中断信号源进行测试
• ③读取设备状态
④修改进程状态
四.设备驱动程序
设备驱动程序是I/O系统的高层与设备控制器之间的通信程序,其主要任务:
• 接收上层软件发来的抽象I/O要求,如read、write等命令;
• 再把它转化为具体要求,发送给设备控制器,启动设备去执行。
• 反方向,它也将由设备控制器发来的信号,传送给上层软件。
1.功能
(1)接收由与设备无关的软件发来的命令和参数,并将命令中的抽象要求,转换为与设备相关的低层操作序列;
(2)检查用户I/O请求的合法性,了解I/O设备的工作状态,传递与I/O设备操作有关的参数,设置设备的工作方式;
(3)发出I/O命令,如果设备空闲,便立即启动I/O设备,完成指定的I/O操作;如果设备忙碌,则将请求者挂在设备队列上等待;
(4)及时响应由设备控制器发来的中断请求,并根据其中断类型,调用相应的中断处理程序进行处理。
2. 驱动程序处理过程
I/O设备与控制器间的通信转换程序
• 了解抽象命令,了解控制器内部的寄存器结构
与硬件密切相关,每类设备配备一种驱动程序
• 功能:接受解释指令(有通道的系统,自动通道程序)、相关判断、发送设备命令、响应中断
• 特点,控制方式不同程序不同,部分固化进硬件,代码可重入。
3.IO控制方式
程序I/O方式
中断驱动I/O方式
直接存储器访问DMA(字节—块)
I/O通道控制方式(组织传送的独立)
宗旨:减少主机对I/O控制的干预,将CPU从繁杂的I/O控制事物中解脱出来。
4.通道程序
通道 通过执行通道程序,与设备控制器共同实现对I/O设备的控制。
通道程序由一系列通道指令构成。
CPU指令设备驱动程序解读通道程序通道
通道指令一般包含下列信息:
- 操作码。规定指令所执行的操作。
- 内存地址。
- 计数。表示本指令所要操作的字节数。
- 通道程序结束位。用以表示程序是否结束。
- 记录结束标志。表示该指令是否与下条指令有关。
5.设备独立性
用户编程时所用的设备名(逻辑上的)与实际物理设备无关;
好处:
- 设备分配时的灵活性
3个物理设备(如打印机),程序中申请一台打印机,执行时不拘泥必须是某台(如第2个)打印机 - 易于实现I/O重定向
指用于I/O操作的设备可以更换(重定向),而不必改变应用程序。 程序调试、运行中的“打印”,可通过修改逻辑设备表的显示终端,实现不同时候的不同的设备使用。
五.用户层IO
1.设备分配中的虚拟技术
—— SPOOLing技术
虚拟性是OS的四大特征之一。
多道程序技术将一台物理CPU虚拟为多台逻辑CPU,实现多个用户共享一台主机;
多道程序技术,专门利用程序模拟脱机I/O的外围机,完成设备I/O操作。
• 称这种联机情况下实现的同时外围操作为SPOOLing 技术(Simultaneaus Periphernal Operating On—Line,或称为假脱机操作)
• 一般进程对独占设备的需求被假脱机模拟到磁盘上。所以实现设备虚拟,多道是前提,还需高速、大容量、可随机存取的外存支持。
2.SPOOLING组成
主要有三大部分(如下页图)
- 输入井和输出井:磁盘上开辟两大存储空间。输入井模拟脱机输入的磁盘设备,输出井模拟脱机输出时的磁盘。
- 输入缓冲区和输出缓冲区:为缓解速度矛盾,内存中开辟两大缓冲空间,输入缓冲区暂存输入设备送来的数据,再送给输入井;输出缓冲区暂存输出井送来的数据,再送输出设备。
- 输入进程和输出进程。
• 用一进程模拟脱机输入时外围设备控制器的功能,把低速输入设备上的数据传送到高速磁盘上;
• 用另一进程模拟脱机输出时外围设备控制器的功能,把数据从磁盘上传送到低速输出设备上。
六.缓冲区
1.
引入缓冲区的主要原因:
缓和CPU与I/O设备间速度不匹配的矛盾。
缓冲区数据成批传入内存,也可进一步减少对CPU的中断频率
最终目的:提高CPU和I/O设备的并行性。
使用缓冲区的方式:
1)单缓冲、多缓冲
2)循环缓冲
3)缓冲池(Buffer Pool)
2.多缓冲
为进一步协调速度差,可增加缓冲区数量,同时进行一定的多缓冲管理入和出的同步。
引入多缓冲机制。组织形式:循环缓冲、缓冲池。
七.磁盘存储器的性能和调度
1. 对所有请求访问磁盘的进程进行合理调度,使对磁盘的平均访问时间最小。
目标:使平均寻道时间最少。
算法:
• FCFS
• 最短寻道时间优先SSTF
• 扫描算法SCAN(磁盘电梯调度算法)
循环扫描算法CSCAN
N-Step-SCAN算法
FSCAN算法
2.FCFS
个进程的磁盘I/O请求构成一个随机分布的请求队列。
磁盘I/O执行顺序按磁盘请求的先后顺序。
3.SSTF
选择从当前磁头位置出发移动最少的磁盘I/O请求
• 使每次磁头移动时间最少。
• 不一定是最短平均柱面定位时间,但比FIFO算法有更好的性能。
• 对中间的磁道有利,但可能会有进程处于饥饿状态(I/O请求总不被执行)。
4.其他
循环扫描CSCAN
SCAN的错过问题:
• 容易错过与当前磁道距离近,但方向不一致的磁道。
修改:将SCAN规定的移动方向改为“单向移动”
• 由里向外后,再由里向外。
N-Step-SCAN
前述最近寻道算法共同问题:
• “磁臂粘着”——磁头静止在一个磁道上,导致其它进程无法及时进行磁盘I/O。(因:高密度盘,进程的读写可能集中在某一磁道)
• 如现有一系列请求:
3 3 5 2 3 3 3 2 3 3 2 3 3 4 4 5 2 3 3 3 4 4 2 3 3 3 2 2 2 3
不管哪种算法,从3开始向下执行会是
3 3 3 3 3 3 3 3 3 3….2 2 2 2 2 2 … 4 4 ….