第六章 输入输出系统

本章章节

1.I/O系统的功能、模型和接口
2.I/O设备和设备控制器
3.中断机构和中断处理程序
4.设备驱动程序
5.与设备无关的I/O软件
6.用户层的I/O软件
7.缓冲区管理
8.磁盘存储器的性能和调度

I/O系统的组成
需要用于输入、输出和存储信息的设备
需要相应的设备控制器
控制器与CPU连接的高速总线
有的大中型计算机系统,配置I/O通道

I/O系统的软件层次
中断处理过程
I/O控制方式
缓冲管理、设备分配、设备处理

I/O系统的功能
1.隐藏物理设备细节,方便用户
用户使用抽象的I/O命令即可
2.实现设备无关性,方便用户
用户可用抽象的逻辑设备名来使用设备,同时也提高了OS的可移植性和易适应性。
3.提高处理机和设备的并行性,提高利用率:缓冲区管理
4.对I/O设备进行控制:控制方式、设备分配、设备处理
5.确保对设备正确共享:虚拟设备及设备独立性等
6.错误处理

I/O/系统的层次结构和模型
层次结构:系统中的设备管理模块分为若干个层次
层间操作:下层为上层提供服务,完成输入输出功能中的某些子功能,并屏蔽功能实现的细节。

①用户层软件
实现与用户交互的接口,用户可直接调用在用户层提供的、与I/O操作有关的库函数,对设备进行操作。
②设备独立软件
用于实现用户程序与设备驱动器的统一接口、设备命名、设备的保护以及设备的分配与释放等,同时为设备管理和数据传送提供必要的存储空间
③设备驱动程序
硬件直接相关,用于具体实现系统对设备发出的操作指令,驱动I/O设备工作的驱动程序。
④中断处理程序
用于保存被中断进程的CPU环境,转入相应的中断处理程序进行处理,处理完后再恢复被中断进程的现场后,返回到被中断进程。

I/O系统接口
①块设备接口
数据的存取和传输都是以数据块为单位的设备。基本特征是传输速率较高、可寻址。磁盘设备的I/O常采用DMA方式。
②流设备接口
字符设备:
1.数据的存取和传输是以字符为单位的设备。如键盘、打印机等。基本特征是传输速率较低、不可寻址,常采用中断驱动方式。
2.get和put操作:
由于字符设备是不可寻址的,因而对它只能采取顺序存取方式。(用户程序)获取或输出字符的方法是采用get和put操作。
3.in-control指令:
因字符设备的类型非常多,且差异甚大,系统以统一的方式提供了一种通用的in-control指令来处理它们(包含了许多参数,每个参数表示一个与具体设备相关的特定功能)。
③网络通信接口
通过某种方式,把计算机连接到网络上。
操作系统必须提供相应的网络软件和网络通信接口,使得计算机能通过网络与网络上的其它计算机进行通信,或上网浏览。

I/O设备中的接口
与控制器的接口有三种类型的信号
1.数据信号线(进出数据转换、缓冲后传送)
2.控制信号线(读\写\移动磁头等控制)
3.状态信号线

设备控制器

控制器是CPU与I/O设备之间的接口,作为中间人接收从CPU发来的命令,并去控制I/O设备工作,以使处理机脱离繁杂的设备控制事务。
①基本功能
1.接收和识别CPU命令(控制寄存器:存放命令和参数)
2.标识和报告设备的状态(状态寄存器)
3.数据交换(数据寄存器)
4.地址识别(控制器识别设备地址、寄存器地址。地址译码器)
5.数据缓冲(协调I/O与CPU的速度差距)
6.差错控制
②组成
1.设备控制器与处理机的接口
2.设备控制器与设备的接口
3.I/O逻辑
③处理机与设备控制器间
共有三类信号线:
1.数据线:数据线通常与两类寄存器相连接,第一类是数据寄存器;第二类是控制/状态寄存器。
2.地址线
3.控制线

I/O通道
①I/O通道设备的引入
CPU只需向通道发送一条I/O指令即可不再干预后续操作。
通道形成通道程序,执行I/O操作,完成后向CPU发中断信号。
②通道类型
1.字节多路通道
2.数组选择通道
3.数组多路通道
③“瓶颈”问题

1.数组选择通道
针对高速设备:分配型子通道
设备利用子通道占用通道后,一段时间内一直独占,直至设备传送完毕释放
利用率低。
2.数组多路通道
结合上述两种方式。
含多个非分配型子通道。数据传送则按数组方式进行。

中断机构和中断处理程序

中断是I/O系统最低的一层,也是设备管理的基础。
(1)中断和陷入
中断:CPU对I/O设备发来的中断信号的一种响应,中断是由外部设备引起的,又称外中断。
陷入:由CPU内部事件所引起的中断,通常把这类中断称为内中断或陷入(trap)。
中断和陷入的主要区别:是信号的来源。
(2)中断向量表
中断向量表:为每种设备配以相应的中断处理程序,并把该程序的入口地址,放在中断向量表的一个表项中,并为每一个设备的中断请求,规定一个中断号,它直接对应于中断向量表的一个表项中。
(3)对多中断源的处理方式
①屏蔽(禁止)中断:
②嵌套中断:

中断处理程序①进行进程上下文的切换
②对处理中断信号源进行测试
③读取设备状态
④修改进程状态

设备驱动程序

设备驱动程序是I/O系统的高层与设备控制器之间的通信程序,其主要任务
1.接收上层软件发来的抽象I/O要求,如read、write等命令;
2.再把它转化为具体要求,发送给设备控制器,启动设备去执行。
3.反方向,它也将由设备控制器发来的信号,传送给上层软件。

驱动程序的功能
①接收由与设备无关的软件发来的命令和参数并将命令中的抽象要求,转换为与设备相关的低层操作序列;
②检查用户I/O请求的合法性,了解I/O设备的工作状态,传递与I/O设备操作有关的参数,设置设备的工作方式;
③发出I/O命令,如果设备空闲,便立即启动I/O设备,完成指定的I/O操作;如果设备忙碌,则将请求者挂在设备队列上等待;
④及时响应由设备控制器发来的中断请求,并根据其中断类型,调用相应的中断处理程序进行处理。

设备处理方式
不设置专门的设备处理进程,而只为各类设备设置相应的设备设置相应的设备驱动程序,供用户或系统进程调用。

驱动程序处理过程
①I/O设备与控制器间的通信转换程序
②与硬件密切相关,每类设备配备一种驱动程序

一次I/O由“驱动程序+中断程序”一块处理完成

DMA控制器的组成
主机与DMA控制器的接口;
DMA控制器与块设备的接口;
I/O控制逻辑。

DMA控制器中的寄存器
1.数据寄存器DR:暂存设备到内存或从内存到设备的数据。
2.内存地址寄存器MAR:它存放把数据从设备传送到内存的起始的目标地址或内存原地址。
3.数据计数器DC:存放本次CPU要读或写的字(节)数。
4.命令/状态寄存器CR:用于接收从CPU发来的I/O命令或有关控制和状态信息。

与设备无关的I/O软件

独立性的基本含义:
指应用程序中所使用的设备,不局限于使用某个具体的物理设备,也称为设备无关性。

设备分配
1)数据结构
设备控制表
控制器控制表
通道控制表
系统设备(总)表
2)设备分配需考虑的因素
①设备固有属性:独占、共享、独占但可虚拟。根据属性采取互斥、次序调度、虚拟等不同分配策略。
②设备分配算法(对不同进程的设备请求序列,如何进行选择),常采用两种:
FCFS
优先级高者优先
3)设备的分配过程
1.分配设备:
2.分配控制器
3.分配通道
当上述三步都通过后,才可启动设备进行数据传输

用户层的I/O软件

小部分I/O系统软件放在了用户应用层上。
库函数(与应用程序链接)
假脱机技术(虚拟设备)

1)系统调用与库函数
OS在用户层中引入了系统调用,应用程序可以通过它,间接调用OS中的I/O过程,对I/O设备进行操作。
2)设备分配中的虚拟技术
多道程序技术将一台物理CPU虚拟为多台逻辑CPU,实现多个用户共享一台主机

缓冲区管理

I/O控制方式减少CPU对I/O的干预提高利用率;
缓冲则通过缓和CPU和I/O设备速度不匹配矛盾,增加CPU和I/O设备的并行性,提高利用率。
现代OS中,几乎所有的I/O设备与处理机交换数据时,都用了缓冲区。

引入缓冲区的主要原因:
缓和CPU与I/O设备间速度不匹配的矛盾。
缓冲区数据成批传入内存,也可进一步减少对CPU的中断频率
最终目的:提高CPU和I/O设备的并行性。

使用缓冲区的方式:
1)单缓冲、多缓冲
单缓存
每当用户进程发出一I/O请求时,
OS在主存中为之分配一个缓冲区。
CPU和外设轮流使用,一方处理完后等待对方处理。
双缓冲
两个缓冲区,CPU和外设不再针对一块交替
可能实现连续处理无需等待对方。前提是CPU和外设对一块数据的处理速度相近。而如下图情况CPU仍需等待慢速设备。
2)循环缓冲
设置多块缓冲区
用循环结构组织,只供两个相关进程使用
顺一个方向放入或取出
3)缓冲池(Buffer Pool)
不能同时双向通讯
利用率不高。缓冲区是专用缓冲
系统将多个缓冲区形成一个缓冲池。
池中缓冲区为系统中所有的进程共享使用(如UNIX系统在块设备管理中设置了一个15个缓冲区组成的缓冲池)
组织形式:队列及队列指针

缓冲池
空缓冲区;
装满输入数据的缓冲区;
装满输出数据的缓冲区;

收容输入数据的工作缓冲区;hin
提取输入数据的工作缓冲区;sin
收容输出数据的工作缓冲区;hout
提取输出数据的工作缓冲区;sout

磁盘存储器的性能和调度

1)磁盘性能简述
数据的组织和格式:盘片、面、磁道、扇区
①与速度有关
②磁盘类型
固定磁头(每道一磁头)
移动磁头(每盘一磁头)
③访问时间的计算
寻道时间(到磁道)
旋转延迟(到扇区)
传输时间
2)磁盘调度方法
对所有请求访问磁盘的进程进行合理调度,使对磁盘的平均访问时间最小。
算法:
FCFS
最短寻道时间优先SSTF
扫描算法SCAN(磁盘电梯调度算法)
循环扫描算法CSCAN
N-Step-SCAN算法
FSCAN算法

猜你喜欢

转载自blog.csdn.net/Evanism_8/article/details/84500616