目录
1 设备
1.1 设备的概念
I/O设备:计算机输入与输出设备
1.2 设备的分类
按使用特性:人机交互类、存储设备、网络通信设备
按传输速率:低速、中速、高速
按信息交换的单位:块设备(磁盘)、字符设备(键鼠)
2 I/O控制器
2.1 I/O控制器
1.定义
设备包括机械部件与电子部件,电子部件即I/O控制器,又称设备控制器。
2.功能
接受和识别CPU发出的命令:利用控制寄存器,存放CPU命令和参数
向CPU报告设备状态:状态寄存器读取I/O设备状态
数据交换:数据寄存器,暂存CPU数据
地址识别:类似内存的地址
3.组成
一个I/O控制器可能对应多个设备,因此数据寄存器、控制寄存器、状态寄存器可能有多个,寄存器需要编址(包括内存映像:将I/O寄存器占用内存地址的一部分;寄存器独立编址:I/O专用地址)
2.2 I/O控制方式
1.程序直接控制方式
·完成一次读写操作的流程
·CPU干预频率
CPU需要在I/O操作开始前、完成后,及等待过程中不断地进行轮询检查。
·数据传送单位
每次读或写一个字
·数据流向
·优点:实现简单;缺点:CPU只能进行串行工作,长期处于忙等状态,利用率低
2.中断驱动方式
·完成一次读写操作的流程
引入中断机制。由于1/o设备速度很慢,因此在CPu发出读/写命令后,可将等待l/o的进程阻塞,先切换到别的进程执行。当I/o完成后,控制器会向CPU发出一个中断信号,CPU检测到中断信号后,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断。处理中断的过程中,CPU从I/o控制器读一个字的数据传送到CPu寄存器,再写入主存。接着,CPu恢复等待I/o的进程(或其他进程)的运行环境,然后继续执行。
CPU在每个指令周期末尾检查中断
·CPU干预频率
每次V/o操作开始之前、完成之后需要CPU介入。
·数据传送单位
每次读/写一个字
·数据流向
·优点:CPU和IO可以并行工作,提示CPU利用率;缺点:频繁的中断消耗CPU时间
3.DMA方式
直接存储器存取。数据传送以块为单位,数据无需流向CPU
·DMA控制器
·完成一次读写操作的流程
·CPU干预频率
仅在传送一个或多个数据块的开始和结束时,才需要CPU干预。
·数据传送单位
每次读/写一个或多个块(注意:每次读写的只能是连续的多个块,且这些块读入内存后在内存中也必须是连续的)
·数据流向
·优点:提升数据传输速度与CPU工作效率;缺点:CPU每发出一条I/o指令,只能读/写一个或多个连续的数据块,不能读取离散数据块。
4.通道控制方式
通道可以识别并执行一系列通道指令
·完成一次读写操作的流程
·CPU干预频率
极低,通道会根据CPU的指示执行相应的通道程序,只有完成一组数据块的读/写后才需要发出中断信号,请求CPU干预。
·数据传送单位
每次读/写一组数据块
·数据流向
·优点:资源利用率进一步提高;缺点:需要专门的硬件支持
5.对比
2.3 I/O软件层次结构
1.用户层软件
提供了与用户交互的接口,将用户请求翻译成格式化的I/O请求,通过系统调用请求操作系统内核的服务
2.设备独立性软件
又称设备无关性软件,向上次提供统一的调用接口;实现设备的保护;差错处理;设备的分配与回收;数据缓冲区管理;建立逻辑设备名与物理设备名的映射关系,根据设备类型选择调用相应的驱动程序。
3.设备驱动程序
主要负责对硬件设备的具体控制,将上层发出的一系列命令(如read/write)转化成特定设备“能听得懂”的一系列操作。包括设置设备寄存器;检查设备状态等。
4.中断处理程序
当I/O任务完成时,I/O控制器会发送一个中断信号,系统会根据中断信号类型找到相应的中断处理程序并执行。
中断处理程序可以直接与硬件对接
3 I/O核心子系统
3.1 I/O核心子系统
1.定义
设备独立性软件、设备驱动程序与中断处理程序属于操作系统的内核部分,即I/O核心子系统。
2.I/O调度
用某种算法确定一个好的顺序来处理各个I/O请求。
3.设备保护
将设备看做特殊文件,每个设备有相应的FCB
3.2 假脱机技术
1.定义
脱机:脱离主机的控制进行的输入/输出操作
假脱机:SPOOLing技术,用软件方式模拟脱机技术
2.组成
3.共享打印机原理
SPOOLing 技术可以把一台物理设备虚拟成逻辑上的多台设备,可将独占式设备改造成共享设备。
3.3 设备的分配与回收
1.设备分配要素
2.静态与动态分配
静态分配:进程运行前为其分配全部所需资源,运行结束后归还资源
动态分配:进程运行过程中动态申请设备资源
3.数据结构
系统为每个设备配备一张用于记录设备情况的设备控制表(DCT)。
每个设备控制器对应一张控制器控制表(COCT),操作系统根据其信息对控制器进行操作和管理。
每个通道会对应一张通道控制表(CHCT),操作系统根据其信息对通道进行操作和管理。
系统中有系统设备表(SDT),记录了系统中全部设备情况,每个设备对应一个表目。
4.设备分配步骤
5.优化
缺点:
①用户编程时必须使用“物理设备名”,底层细节对用户不透明,不方便编程
②若换了一个物理设备,则程序无法运行
③若进程请求的物理设备正在忙碌,则即使系统中还有同类型的设备,进程也必须阻塞等待
改进: 建立逻辑设备名与物理设备名的映射机制,用户编程时只需提供逻辑设备名
3.4 缓冲区管理
1.缓冲区定义
缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可利用内存作为缓冲区。
使用硬件作为缓冲区的成本较高,容量也较小,一般仅用在对速度要求非常高的场合(如存储器管理中所用的联想寄存器,由于对页表的访问频率极高,因此使用速度很快的联想寄存器来存放页表项的副本)
一般情况下,使用内存作为缓冲区
2.作用
3.单缓冲
假设某用户进程请求某种块设备读入若干块的数据。若采用单缓冲的策略,操作系统会在主存中为其分配一个缓冲区。
当缓冲区数据非空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出;当缓冲区为空时,可以往缓冲区冲入数据,但必须把缓冲区充满以后,才能从缓冲区把数据传出。
处理一块数据平均耗时Max(C,T) + M
4.双缓冲
假设某用户进程请求某种块设备读入若干块的数据。操作系统会在主存中为其分配两个缓冲区。
处理一个数据块的平均耗时为Max (T, C+M)
5.区别
双机通信时若使用单缓冲,同一时刻只能进行单向数据传输;若使用双缓冲,同一时刻可以进行双向数据传输。
6.循环缓冲区
将多个大小相等的缓冲区链接成一个循环队列
7.缓冲池
缓冲池由系统中共用的缓冲区组成,分为空缓冲队列、装满输入数据的缓冲队列、装满输出数据的缓冲队列。
另外,根据一个缓冲区在实际运算中扮演的功能不同,又设置了四种工作缓冲区:用于收容输入数据的工作缓冲区(hin)、用于提取输入数据的工作缓冲区(sin)、用于收容输出数据的工作缓冲区( hout) 、用于提取输出数据的工作缓冲区(sout)