I/O系统
I/O设备的类型
####### 按传输速率分类
-
低速设备
(1) 每秒一个字节至数百字节
(2) 如键盘、鼠标、语言输入输出设备等 -
中速设备
(1) 每秒数千至数万字节
(2) 如行式打印机、激光打印机等 -
高速设备
(1) 每秒数百k至数十M字节
(2) 如磁盘机,磁带机等
####### 按信息交换的单位分类
-
块设备
(1) 信息存取总是以数据块为单位
(2) 基本特征是传输速率较高,通常每秒为几兆位
(3) 可寻址,即对它可随机读/写任一块 -
字符设备
(1) 基本单位是字符
(2) 基本特征是其传输速度低,通常为几千字节到数千字节
(3) 不可寻址
(4) 如交互式终端,打印机
按设备的共享属性分类
-
独占设备(临界资源)
(1) 如打印机 -
共享设备
(1) 可供多个进程同时访问,如磁盘
(2) 共享设备必须是可寻址的和可随机访问设备 -
虚拟设备
(1) 通过虚拟技术将一台独占设备变换为若干个逻辑设备,供若干进程同时使用
设备控制器
设备控制器的组成
-
设备控制器与处理机的接口
(1) 该接口用于实现设备控制器与CPU之间的通信。在该接口中有三类信号线: 数据线、地址线、控制线 -
设备控制器与设备的接口
(1) 在一个设备控制器上,可以连接一台或多台设备。所以,在控制器汇中就有一个或多个设备接口,一个接口连接一个设备,每个接口中都有数据、控制和状态三种类型信号 -
I/O逻辑
(1) 控制器对设备的控制通过I/O逻辑实现的
I/O通道
I/O通道说明
- 一种特殊处理机,专门负责输入/输出工作
- 有自己简单的指令系统(只有数据传送指令和设备控制指令)
- 通道与一般处理机的区别:
(1) 指令类型单一,局限于I/O操作有关指令
(2) 没有独立的内存,通道与CPU共享内存
I/O通道类型
-
字节多路通道
(1) 一个主通道连接多个子通道,以时间片的方式共享主通道
(2) 每个子通道每次只传送一个字节,连接中低速设备 -
数组选择通道
(1) 以数组方式工作,高速传送数据
(2) 可以连接多台高速设备
(3) 每次只有一台设备进行数据传送,形成独占 -
数组多路通道
(1) 将数组选择通道传输效率高和字节多路分时并行操作优点相结合
(2) 以数组方式工作,高速传送数据
(3) 采用分时传送多个非分配型子通道
I/O控制方式
中断驱动
-
说明:当进程要启动某个I/O设备工作时,便由CPU向相应的设备控制器发出一条I/O命令,然后立即返回继续执行原来的任务
-
特点:
(1)设备控制器按命令要求去控制指定的I/O设备,完成后,通过中断向CPU发送一个中断信号
(2) 每次传送一个字符
MDA控制器
- 特点:
(1)数据传输的基本单位是数据块(连续);
(2)大大减少中断次数
(3)所传送的数据是从设备直接送入内存的,或者相反
(4)仅在传送一个或多个数据块的开始和结束才需要CPU干涉
缓冲池的工作方式
-
收容输入
-
提取输入
-
收容输出
-
提取输出
设备分配
分配时的四张表
设备控制表DCT
-
说明: 系统为每个设备配置一张设备控制表,用于记录设备的特性及I/O控制器的情况; 每个设备一张,记录本设备的情况
-
状态
(1) 设备类型: type
(2) 设备标识符: deviceid
(3) 设备状态: 等待/不等待 忙/闲
(4) 指向控制器表的指针
(5) 重复执行的次数或时间
(6) 设备队列的队首指针
控制器控制表COCT
-
说明: 每个控制器配置一张表,它反映控制器的使用状态以及通道的连接状态,如果控制器忙则到控制器队列排队; 每个控制器一张,记录一个控制器的情况
-
状态:
(1) 控制器标识符: controllerid
(2) 控制器状态: 忙/闲
(3) 与控制器连接的通道表指针
(4) 控制器队列的队首指针
(5) 控制器队列的队尾指针
通道控制表CHCT
-
说明: 为每个通道配置一张表,它反映通道的使用状态,如果控制器忙则到通道队列排队; 一个通道一张表
-
状态:
(1) 通道标识符: channelid
(2) 通道状态: 忙/闲
(3) 与通道连接的控制器表首地址
(4) 通道队列的队首指针
(5) 通道队列的队尾指针
系统设备表SDT
- 说明: 它记录已连接到系统中的所有物理设备情况,每个物理设备占一个表目;整个系统配置一张
设备分配程序
分配设备
分配控制器
分配通道
SPOOLing技术
-
说明: 在多道程序环境下,其中的一进程模拟脱机输入时的外围控制机功能,把低速的I/O设备上的数据传送到高速磁盘上;再用另一进程来模拟脱机输出时的外围控制机把数据从磁盘传送到低速输出设备上
-
组成:
输入和输出井
(1)在磁盘上的两个存储空间
(2) 输入井模拟脱机输入,暂存输入数据
(3) 输出井模拟脱机输出,暂存输出数据输入缓冲区和输出缓冲区(内存中)
(1) 用来缓和CPU与磁盘之间的速度的矛盾输入进程SPi和输出进程SPo
(1) 模拟脱机I/O时外围控制
-
应用(共享打印机)
(1) 打印机为独占设备,利用SPOOLing技术,可将之改造为共享设备
(2) 用户请求打印时,SPOOLing系统会做如下操作
1. 由输出进程在输入井中为之申请一个空闲磁盘块区,并将要打印的数据送入其中
2. 输出进程再为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入表中,再将该表挂到请求队列上 -
优点:
(1) 提高了I/O的速度
(2) 将独占设备改造为共享设备
(3) 实现了虚拟设备的功能: 由于SPOOLing技术实现了多个用户进程共同使用打印机这个独占设备情况,从而实现了吧一个设备当成多个设备来使用的情况,即虚拟设备的功能 -
缺点:
(1) 占用大量的内存作为外设传送信息的输入缓存区和输出缓存区
(2) 占用大量磁盘空间作为输入井和输出井
(3) 增加系统的复杂性
磁盘存储器管理
磁盘的类型
-
固定头磁盘
(1) 这种磁盘在每条磁道上都有一读/写磁盘头,所有的磁头都被装在一刚性磁臂中;有效提高I/O速度,成本高 -
移动头磁盘
(1) 每一个盘面仅配有一个磁头,也被装入磁臂中; 速度较低,成本低
磁盘调度
-
先来先服务算法FCFS
(1) 根据进程访问磁盘的先后次序进行调度
(2) 简单、公平、每个进程得到满足
(3) 适合请求磁盘进程数目少 -
最短寻道时间优先SSTF
(1) 与当前磁头所在磁道距离最近
(2) 每次寻道时间最短
(3) 不能保证平均寻道时间最短
(4) 有"饥饿"现象 -
扫描算法(SCAN)
(1) SCAN算法不仅考虑欲访问的磁道与当前磁道的距离,更先考虑的是磁头的方向
(2) 可以防止进程出现"饥饿"形象
(3) 又称"电梯调度算法" -
循环扫描算法(CSCAN)算法
(1) 规定磁头单向移动
(2) 减少刚移动的磁道的等到时间 -
N-Step-SCAN算法
(1) 将磁盘请求队列分成若干个长度为N的子队列,磁盘调度将按FCFS算法依次处理这些子队列。将每个队列看作一个整体,用先来先服务算法,在队列内部使用循环扫描算法
磁盘高速缓存(Disk Cache)
磁盘高速缓存的形式
- 利用内存中的储存空间,来暂存磁盘中读出的一系列磁块中的信息
- 高速缓存是一组在逻辑上属于磁盘,而物理上是驻留在内存的盘块
####### 数据交付方式
-
说明: 数据交付是指将磁盘高速缓存中的数据传送给请求者进程; 当有进程请求访问某个盘块时,选查看磁盘高速缓存
-
采取的方式
(1) 数据交付: 直接将高速缓存中的数据传送到请求者进程的内存工作区
(2) 指针交付: 直接将高速缓存中的某个区域的指针交给请求的进程