操作系统 第五章:输入输出(I/O)管理

目录

(一)I/O(输入输出)设备的概念和分类

(二)I/O控制器

(三)I/O控制方式

(四)I/O软件层次结构

(五)I/O核心子系统

(六)假脱机技术

(七)设备的分配与回收

(八)缓冲区管理


(一)I/O(输入输出)设备的概念和分类

I/O设备按使用特性分类:人机交互类外部设备(数据传输速度慢)、存储设备(数据传输速度快)、网络通信设备(速度介于两者之间)。

传输速率分类:低速设备、中速设备、高速设备。

信息交换的单位:块设备(传输速率较高,可寻址,对它可随机读写)、字符设备(传输速率较慢,不可寻址,输入输出时常采用中断驱动方式)。

(二)I/O控制器

机械部件(可见的部分)+电子部件(插入主板扩充槽的印刷电路板)

CPU无法直接控制I/O设备,因此需要一个电子部件作为CPU和I/O设备机械部件之间的“中介”,实现CPU对设备的控制。I/O控制器又称设备控制器

I/O控制器功能:接受和识别CPU发出的命令(I/O控制器会有相应的控制寄存器,存放命令和参数)、向CPU报告设备的状态(I/O控制器有相应的状态寄存器存放设备当前的状态)、数据交换(会有数据寄存器)、地址识别(区分各个寄存器,通过CPU提供的地址判断CPU要读写哪个寄存器)。

I/O控制器包括:CPU与控制器的接口、I/O逻辑、控制器与设备的接口。

内存映像:不独立编址。只要像操纵内存地址一样操纵。

寄存器独立编址:缺点:需要设置专门的指令实现对控制器的操作,不仅要指明寄存器的地址,还要指明控制器的编号。

(三)I/O控制方式

注意的问题:完成一次读/写操作的流程;CPU干预的频率;数据传送的单位;数据的流向。

程序直接控制方式:1.cpu向控制器发出读指令。于是设备启动,并且状态寄存器设为1;2.轮询检查控制器的状态(若状态位一直是1,说明设备还没准备好要输入的数据,于是cpu会不断的轮询);3.输入设备准备好数据后将数据传给控制器,并报告自身状态;4.控制器将输入的数据放到数据寄存器中,并将状态寄存器改为0;5.cpu发现数据已就绪,将数据寄存器中的内容读入cpu的寄存器中,再把cpu寄存器中的内容放入内存;6.若还要继续读入数据,则cpu继续发出指令。

cpu干预频率:很频繁,I/O操作开始之前、完成之后需要CPU介入,并且在等待I/O完成的过程中CPU需要不断地轮询检查。

数据传送的单位:字。

数据的流向:读:I/OàCPUà内存 写:内存àcpuàI/O

优点:实现简单,在读写指令之后,加上实现循环检查的一系列指令即可。缺点:CPU和I/O设备只能串行工作,CPU需要一直轮询检查,长期处于“忙等”状态,CPU利用率低。

中断驱动方式:cpu发出指令后,可将等待I/O的进程阻塞,先切换到别的进程执行。当I/O完成后,控制器向CPU发出一个中断信号。CPU会在每个指令周期的末尾检查中断。

cpu干预频率:每次I/O操作之前、完成之后需要CPU,等待I/O完成的过程CPU可以切换到别的进程运行。

数据传送单位:字。

数据流向同上一种方式。

优点:CPU、I/O可以并行工作,CPU利用率得到明显提升。

缺点:每个字在I/O设备与内存之间的传输,都需要经过CPU。而频繁的中断处理会消耗较多的CPU时间。

DMA方式:直接存储器存取,主要用于块设备,改进如下:数据的传送单位是“块”。数据直接从设备放入内存,或者从内存直接到设备。不需要cpu中转。仅在传送一个或多个数据块的开始和结束时,才需要cpu干预。

DMA控制器:主机—控制器接口+I/O控制逻辑+块设备—控制器接口。寄存器:DR数据寄存器。MAR内存地址寄存器,输入时表示数据应存放在内存的什么位置,输出时表示输出的数据放在内存的什么位置。DC数据计数器,表示剩余要读写的字节数。CR命令/状态寄存器,用于存放CPU发来的I/O命令,或设备的状态信息。CPU干预频率:仅在传送一个或多个数据块的开始和结束时,才需要CPU干预。数据传送的单位:每次读/写一个或多个快(每次读写的只能是连续的多个块,且这些块读入内存后在内存中也必须是连续的)。数据流向:读:I/O à内存 写:内存àI/O。优点:数据以块为单位,cpu介入频率进一步降低。数据的传输不再需要先经过CPU再写入内存,数据传输效率进一步增加。CPU、I/O设备的并行性得到提升。缺点:cpu每发出一条I/O指令,只能读写一个或多个连续的数据块。

通道控制方式:通道:一种硬件,可以识别并执行一系列通道指令(指令单一,并且与CPU共享内存)。1.cpu向通道发出I/O指令,指明通道程序在内存中的位置,并指明要操作的是哪个I/O设备,之后CPU就切换到其他进程执行了。2.通道执行内存中的通道程序(其中指明了要读入/读出多少数据,读写的数据应放在内存的什么位置等信息)。3.通道执行完规定的任务后,向CPU发出中断信号,之后CPU对中断进行处理。CPU干预频率:极低,会根据CPU指示执行相应的通道程序,完成一组数据块的读写后才需要发出中断信号,请求CPU干预。数据传送的单位:一组数据块。数据流向:读:I/O à内存 写:内存àI/O。缺点:实现复杂,需要专门的通道硬件支持。优点:CPU、通道、I/O设备可并行工作,资源利用率很高。

(四)I/O软件层次结构

用户层软件、设备独立性软件、设备驱动程序、中断处理程序、硬件。

中间三个属于操作系统内核部分,即I/O系统或称I/O核心子系统。

用户层软件:实现了与用户交互的接口,用户可直接使用该层提供的、与I/O操作相关的库函数对设备进行操作。将用户请求翻译成格式化的I/O请求,并通过“系统调用”请求操作系统内核的服务。

设备独立性软件:设备无关性软件。与设备的硬件特性无关的功能几乎都在这一层实现。主要实现功能:向上层提供统一的调用接口;设备的保护;差错处理;设备的分配与回收;数据缓冲区管理;建立逻辑设备名到物理设备的映射关系。

设备独立性软件需要通过“逻辑设备表LUT”来确定逻辑设备对应的物理设备,并找到该设备对应的设备驱动程序。两种方式:整个系统只设置一张LUT;为每个用户设置一张LUT。

设备驱动程序:负责对硬件设备的具体控制,将上层发出的一系列指令特化成特定设备“能听得懂”的一系列操作。驱动程序一般会以一个独立进程的方式存在。

中断处理程序:进行中断处理。

(五)I/O核心子系统

用户层软件:假脱机技术SPOOLing技术(408大纲将假脱机技术归为“I/O核心子系统”的功能);

设备独立性软件:I/O调度、设备保护、设备分配与回收、缓冲区管理(缓冲与高速缓存)

I/O调度:用某种算法确定一个好的顺序来处理各个I/O请求。

(六)假脱机技术

脱机:脱离主机的控制进行的输入、输出操作。

磁盘开辟出两个存储区域---“输入井”+“输出井”

内存中有输入输出缓冲区+输入进程+输出进程

输入进程:模拟脱机输入时的外围控制机。

输出进程:模拟脱机输出时的外围控制机。

共享打印机原理分析

1.在磁盘输出井为进程申请一个空闲缓冲区(也就是说,这个缓冲区是在磁盘上的),并将要打印的数据送入其中。

2.为用户进程申请一张空白的打印请求表,并将用户的打印请求填入表中(其实就是用来说明用户的打印数据存放位置等信息的),再将该表挂到假脱机文件队列上。

用SPOOLing技术将独占式的打印机“虚拟”成共享打印机。

(七)设备的分配与回收

设备分配时应考虑的因素:设备的固有属性(独占设备、共享设备、虚拟设备)、设备分配算法、设备分配中的安全性(安全分配方式[为进程分配一个设备后就将进程阻塞,本次I/O完成后才将进程唤醒]、不安全分配方式[进程发出I/O请求后,系统为其分配设备,进程可继续执行,之后还可以发出新的I/O请求。只有某个I/O请求得不到满足时才将进程阻塞])。安全分配:优点:破坏了“请求和保持”条件,不会死锁。缺点:对于一个进程来说,CPU、I/O只能串行工作。不安全分配:优点:进程的计算任务和I/O任务可以并行处理,使进程迅速推进。缺点:有可能发生死锁。

静态分配与动态分配:静态(运行前就分配所有所需资源,运行结束后归还资源)、动态(运行过程中动态申请设备资源)

设备分配管理中的数据结构:(一个通道可以控制多个控制器,每个设备控制器可以控制多个设备)系统为每个设备配置一张DCT(设备控制表)[设备类型、设备标识符、设备状态、指向控制器表的指针、重复执行次数和时间、设备队列的队首指针],用于记录设备情况。每个设备控制器都会对应一张COCT(控制器控制表)[控制器标识符、控制器状态、指向通道表的指针、控制器队列的队首指针、控制器队列的队尾指针]。操作系统分根据COCT信息对控制器进行操作和管理。每个通道都会对应一张DHCT(通道控制表)[通道标识符、通道状态、与通道连接的控制器首址、通道队列的队首指针、通道队列的队尾指针],对通道进行操作和管理。SDT(系统设备表)记录系统中全部设备的情况,每个设备对应一个表目[设备类型、设备标识符、DCT、驱动程序入口]。

设备分配的步骤

1.根据进程请求得物理设备名查找SDT;

2.根据SDT找到DCT,若设备忙碌则进程PCB挂到设备等待队列中,不忙碌则将设备分配给进程;

3.根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程;

4.根据COCT找到CHCT,若通道忙碌则将进程PCB挂到通道等待队列中,不忙碌则将通道分配给进程。只有设备、控制器、通道三者都分配成功时,设备分配才算成功,之后便可启动I/O设备进行数据传送。

(缺点:用户编程时必须使用“物理设备名”,底层细节对用户不透明,不方便编程;若换了一个物理设备,则程序无法进行;若进程请求的物理设备正在忙碌,则即使系统中还有同类型的设备,进程也必须阻塞等待)改进方法:建立逻辑设备名与物理设备名的映射机制,用户编程时只需提供逻辑设备名。

设备分配步骤的改进方法

1.根据进程请求得逻辑设备名查找SDT;

2.查找SDT,找到用户进程指定类型的、空闲的设备,将其分配给该进程,操作系统在逻辑设备表中新增一个表项;

3.根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程;

4.根据COCT找到CHCT,若通道忙碌则将进程PCB挂到通道等待队列中,不忙碌则将通道分配给进程。

逻辑设备表的设置问题:

整个系统只有一张LUT,各用户所用的逻辑设备名可重复,适用于多用户操作系统。

(八)缓冲区管理

缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可利用内存作为缓冲区。使用硬件作为缓冲区的成本较高,容量也较小,一般仅用在对速度要求非常高的场合。

一般情况下,更多使用内存作为缓冲区,“设备独立性软件”的缓冲区管理就是要组织管理好这些缓冲区。

缓冲区作用

缓和CPU和I/O设备之间速度不匹配的矛盾;

减少对CPU的中断频率,放宽对CPU中断相应时间的限制;

解决数据粒度不匹配的问题;

提高CPU与I/O设备之间的并行性。

单缓冲(初始状态:工作区满,缓冲区空

计算每处理一块数据平均需要多久?(Max(C,T)+M)

技巧:假定一个初始状态,分析下次到达相同状态需要多少时间,这就是处理一块数据平均所需的时间。

双缓冲区(工作区空,其中一个满另一个空(Max(C+M ,T))

循环缓冲区

缓冲池:由系统中共用的缓冲区组成。这些缓冲区按使用状态可以分为:空缓冲队列、装满输入数据的缓冲队列、装满输出数据的缓冲队列

根据一个缓冲区在实际运算中扮演的功能不同,又设置了四种工作缓冲区:收容输入、提取输入、收容输出、提取输出。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
I/O设备管理操作系统中的一个重要组成部分,它负责管理计算机系统中的各种输入输出设备,包括硬盘、键盘、鼠标、打印机等。在本章的下半部分,我们将继续深入讨论I/O设备管理的相关内容。 1. I/O设备驱动程序 I/O设备驱动程序是操作系统中的一个重要组成部分,它负责将操作系统和I/O设备之间进行交互。通常来说,每一种I/O设备都需要对应一个相应的驱动程序。I/O设备驱动程序通常由操作系统厂商提供,也可以由第三方厂商提供。 2. 中断处理程序 当一个I/O设备完成了一个输入输出操作时,它会向CPU发送一个中断请求,以通知CPU有一个I/O设备需要处理。CPU在接收到中断请求后,会暂停当前正在执行的任务,并执行中断处理程序。中断处理程序是操作系统中的一个重要组成部分,它负责处理中断请求,并将结果返回给I/O设备驱动程序。 3. 缓存管理 缓存是操作系统中的一个重要概念,它指的是在内存中存储的数据副本。I/O设备管理中的缓存可以分为两种,一种是输入缓存,用于存储从I/O设备读取的数据;另一种是输出缓存,用于存储将要写入I/O设备的数据。缓存管理的目的是提高I/O设备的读写效率,减少CPU对I/O设备的访问次数。 4. 设备控制块 设备控制块是操作系统中的一个数据结构,用于管理I/O设备。每一个I/O设备都有一个相应的设备控制块,它包含了I/O设备的基本信息,包括设备类型、设备状态、缓存信息等。设备控制块还可以用于实现多任务操作,即同时处理多个I/O设备请求。 5. 通道控制程序 通道控制程序是操作系统中的一个重要组成部分,它负责管理计算机系统中的通道设备。通道设备是一种高速输入输出设备,通常用于处理大量数据的输入输出操作。通道控制程序可以将多个I/O设备的请求合并,以提高系统的输入输出效率。 总之,I/O设备管理操作系统中的一个重要组成部分,它涉及到多个方面的内容,包括I/O设备驱动程序、中断处理程序、缓存管理、设备控制块和通道控制程序等。在实际应用中,需要根据具体的需求和系统架构,选择合适的I/O设备管理策略,以提高系统的性能和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值