第六章 设备管理
6.1 概述
6.2 I/O 软件的组成
6.3 I/O 硬件特点
6.4 有 关 技 术
6.5 设 备 处 理
6.6 典型外部设备
6.1 概述
6.1.1 I/O管理的重要性
1.没有 I/O设备的计算机就像一个没有轮子的汽车
2.I/O性能经常成为系统性能的瓶颈
(1)CPU性能不等于系统性能响应时间也是一个重要因素?
(2)CPU性能越高,与 I/O差距越大弥补:更多的进程
(3)进程切换多,系统开销大
3.操作系统庞大复杂的原因之一是:
资源多,杂,并发,均来自 I/O
4.理解 I/O的工作过程与结构是理解操作系统的工作过程与结构的关键
5.I/O技术很实用
6.与其他功能联系密切,特别是文件系统
6.1.2 设备的分类
1.按使用特性分存储型设备输入型设备 ( 外设?主机 )
输出型设备 ( 主机?外设 )
输入输出型设备
2.按数据组织分块设备以数据块为单位存储,传输信息字符设备以字符为单位存储,传输信息
3.按外部设备的从属关系分系统设备指操作系统生成时,登记在系统中的标准设备
( 如终端,打印机,磁盘机等 )
用户设备指在系统生成时,未登记在系统中的非标准设备 。 对于这类设备的处理程序由用户提供,并将其纳入系统,由系统代替用户实施管理 。
( 如 A/D,D/A转换器,CAD所用专用设备 )
4,按资源分配角度分独占设备在一段时间内只能有一个进程使用的设备,一般为低速 I/O设备 。 ( 如打印机,磁带等 )
共享设备在一段时间内可有多个进程共同使用的设备,多个进程以交叉的方式来使用设备,其资源利用率高 。 ( 如硬盘 )
虚设备在一类设备上模拟另一类设备,
常用共享设备模拟独占设备,用高速设备模拟低速设备,被模拟的设备称为虚设备
( 将慢速的独占设备改造成多个用户可共享的设备,提高设备的利用率 )
( 为 了 提 高 资 源 利 用 率,如
SPOOLing技术就使用了虚设备技术 —— 用硬盘模拟输入输出设备 。 )
SPOOLing技术为解决独立设备数量少,速度慢,
不能满足众多进程的要求,而且在进程独占设备期间,设备利用率比较低而提出的一种设备管理技术
5.从程序使用角度分逻辑设备物理设备
6.1.3 设备管理的目的和任务
1,按照用户的请求,控制设备的各种操作,完成 I/O设备与内存之间的数据交换 ( 包括设备分配与回收;设备驱动程序;设备中断处理;缓冲区管理 ),最终完成用户的 I/O请求
(1) 选择和分配 I/O设备,以便进行数据传输操作
(2) 控制 I/O设备与内存之间交换数据
2.向用户提供使用外部设备的方便接口,使用户摆脱繁琐的编程负担
方便性
友好界面
透明性
3.充分利用各种技术 ( 通道,中断,缓冲等 ) 提高 CPU与设备,
设备与设备之间的并行工作能力,
充分利用资源,提高资源利用率
并行性
均衡性 ( 使设备充分忙碌 )
4,保证在多道程序环境下,当多个进程竞争使用设备时,按一定策略分配和管理各种设备,使系统能有条不紊的工作
5,与设备无关性 ( 设备独立性 )
用户在编制程序时,使用逻辑设备名,由系统实现从逻辑设备到物理设备 ( 实际设备 ) 的转换用户能独立于具体物理设备而方便的使用设备用户申请使用设备时,只需要指定设备类型,而无须指定具体物理设备,系统根据当前的请求,
及设备分配的情况,在相同类别设备中,选择一个空闲设备,并将其分配给一个申请进程统一性:
对不同的设备采取统一的操作方式,在用户程序中使用的是逻辑设备优点:
设备忙碌或设备故障时,用户不必修改程序
改善了系统的可适应性和可扩展性
6.1.4 功能
1.设备分配与回收记录设备的状态根据用户的请求和设备的类型,
采用一定的分配算法,选择一条数据通路
2.建立统一的且独立于设备的接口
3.完成设备驱动程序,实现真正的
I/O操作
4.处理外部设备的中断处理
5.管理 I/O缓冲区
6.2 I/O软件的组成
I/ O软件的基本思想是按分层的思想构成,较低层的软件要使较高层的软件独立于硬件的特性,
较高层软件则要向用户提供一个友好的,清晰的,简单的,功能更强的接口
6.2.1 I/ O软件的目标在设计 I/ O软件时的一个关键概念是设备独立性 。 用户在编写使用软盘或硬盘上文件的程序时,
无需为不同的设备类型而修改程序就可以使用与设备独立性密切相关的是统一命名这个目标 。 一个文件或一个设备的名字只应是一个简单的字符串或一个整数,它不应依赖于设备出错处理是 I/ O软件的另一个目标 。 一般来说,数据传输中的错误应尽可能地在接近硬件层上处理最后一个问题是可共享设备和独占设备的处理问题
6.2.2 中断处理程序每个进程在启动一个 I/ O操作后阻塞起来,直到 I/ O操作完成并产生一个中断,由操作系统接管
CPU后唤醒进程为止
6.2.3 设备驱动程序与设备密切相关的代码放在设备驱动程序中,每个设备驱动程序处理一种设备类型每一个控制器都设有一个或多个设备寄存器,用来存放向设备发送的命令和参数 。 设备驱动程序负责释放这些命令,并监督它们正确执行一般,设备驱动程序的任务是接收来自与设备无关的上层软件的抽象请求,并执行这个请求在设备驱动程序的进程释放一条或多条命令后,系统有两种处理方式,多数情况下,执行设备驱动程序的进程必须等待命令完成这样,在命令开始执行后,它阻塞自已,直到中断处理时将它解除阻塞为止 。 而在其它情况下,
命令执行不必延迟就很快完成
6.2.4 设备独立的软件虽然 I/ O软件中一部分是设备专用的,但大部分软件是与设备无关的 。 设备驱动程序与设备独立软件之间的确切界限是依赖于具体系统的
1.独立于设备的软件的基本任务是实现所有设备都需要的功能,
并且向用户级软件提供一个统一的接口
2.如何给文件和设备这样的对象命名是操作系统中的一个主要课题 。 独立于设备的软件负责把设备的符号名映射到正确的设备驱动上
3.设备保护系统如何防止无权存取设备的用户存取设备呢?
4.不同的磁盘可以采用不同的扇区尺寸 。 向较高层软件掩盖这一事实并提供大小统一的块尺寸,
这正是设备独立软件的一个任务 。
它可将若干扇区合成一个逻辑块 。
这样,较高层的软件只与抽象设备打交道,独立于物理扇区的尺寸而使用等长的逻辑块
5.缓冲技术
6.设备分配
7.出错处理
6.2.5 用户空间的 I/ O软件尽管大部分 I/ O软件都包含在操作系统中,但仍有一小部分是由与用户程序连接在一起的库过程,
甚至完全由运行于核外的程序构成 。 系统调用,包括 I/ O系统调用,通常由库过程实现这些过程所做的工作只是将系统调用时所用的参数放在合适的位置,由其它的 I/ O过程实际实现真正的操作
( 1) 用户进程层执行输入输出系统调用,对 I/ O数据进行格式化,
为假脱机输入/输出作准备
( 2) 独立于设备的软件实现设备的命名,设备的保护,成块处理,
缓冲技术和设备分配
( 3) 设备驱动程序设置设备寄存器,检查设备的执行状态
( 4) 中断处理程序负责 I/ O完成时,唤醒设备驱动程序进程,进行中断处理
( 5) 硬件层实现物理 I/ O的操作
6.3 I/O硬件特点
6.3.1 设备组成
I/ O设备一般由机械和电子两部分组成 。 把这两部分分开处理,
以提供更加模块化,更加通用的设计
1.设备机械部分是设备本身
2.设备控制器电子部分叫做设备控制器或适配器 。
在小型和微型机中,它常采用印刷电路卡插入计算机中控制器卡上通常有一个插座,通过电缆与设备相连控制器和设备之间的接口是一个标准接口,它符合 ANSI,IEEE或
ISO这样的国际标准关注点:对该硬件如何进行程序设计,不考虑设备内部如何工作程序员:软件接口即硬件所接受的命令,它所完成的功能,报回的错误
6.3.2 设备接口一次完整的 I/O传送过程,典型地由一长列低级信号组成,这些信号启动设备所执行的操作,并通过测试设备状态来监控设备操作的进展一个 I/O过程由四步组成:
准备启动测试和等待结果检查和错误处理通过对设备接口寄存器组的读写完成
6.3.3 设备连接模式指 I/O设备与 CPU之间的连接方式,
亦即将设备连接到一个计算机系统上的方式 。 在一个确定的连接模式下,从 I/O设备到 CPU间的所有连接成分构成了一条 I/O路径
( I/O链 )
1.设备与主机间最基本的连接方式四个要素:
设备接口形式
I/O指令形式
I/O地址空间分配及译码连线问题
(1)设备接口形式
* 端口地址译码
* 按照主机与设备的约定格式和过程接受或发送数据和信号计算机 设备设备 计算机
* 将计算机的数字信号转换为机械部分能识别的模拟信号,或反过来
* 实现一些诸如设备内部硬件缓冲存储,数据加工的提高性能或增强功能的任务
(2)I/O指令形式与 I/O地址是相互关联的,主要有两种形式:
内存映像 I/O模式
I/O专用指令要考虑的几个问题:
设备完成技术:系统如何知道设备的一次 I/O操作是否完成?
对 CPU编程的 I/O技术,CPU必须亲自完成 I/O的启动与完成的处理,
亲自执行所有数据在内存和设备之间的实际物理传送进一步改善:
使 CPU利用率尽可能不被 I/O降低,
使 CPU脱离 I/O的负担
* 提高 I/O本身的绝对速度
* 减少或缓解速度差距
* 使 CPU不等待 I/O
* 使 CPU尽可能摆脱 I/O
提高设备利用率
在设备与主机的硬连接上,引入总线,节省连线并提供配置扩充与改变时的灵活性;引入控制器,
扩大设备与主机间的相互适用范围
( 控制器与设备的分离,循环测试到中断,对 CPU编程式的 I/O到 DMA,
联机 I/O到假脱机 )
2.总线将计算机系统中的各个子系统
( CPU,内存,外设等 ) 相互连接,且连接是共享的 。
好处:低成本 ( 一线多用 )
灵活性 ( 易于增加设备便于两个计算机系统之间共享外设 )
总线的缺点:
本身形成了通讯瓶颈,限制 I/O
吞吐量总线分类:
数据总线,地址总线,控制总线
3.控制器 ( 适配器 )
电子部分:完成设备与主机间的连接和通讯
CPU与控制器间通讯:
单总线模型 ( 微机,小型机 )
多总线模型 ( 中,大型机 )
每个控制器备有几个寄存器与 CPU
通讯 。
两种模式:
1,存储器映像 I/O,寄存器是内存地址空间的一部分
2,专用 I/O地址空间,每个控制器分配其中的一部分 ( IBM PC)
操作系统将命令写入控制器寄存器中,以实现输入/输出例如,IBM PC的软盘控制器可接收 15 条 命 令,READ,WRITE,
FORMAT,SEEK,RECALIBRATE,
命令可以带参数 。 它们被一起送入控制器的寄存器中当控制器接受一条命令后,可独立于 CPU完成指定操作,CPU可以转去执行其它运算 。 命令完成时,
控制器产生一个中断,CPU响应中断,控制转给操作系统 。 CPU
通过读控制器寄存器中的信息,
获得操作结果和设备状态控制器与设备之间的接口常常是一个低级接口 。 例如磁盘,可以按每个磁道 8扇区,每个扇区 512个字节进行格式化 。 然而,实际从驱动器出来的却是一连串的位流,以一个头标 ( preamble) 开始,然后是一个扇区的 4096位 ( 512× 8),最后是检查和或错误校验码 ( Error— C一 C:
ECC) 。 头标是在对磁盘格式化时写上的,它包括柱面和扇区数,扇区的大小和类似的一些数据控制器的任务是把串行的位流转换为字节块,并进行必要的错误修正 。 首先,控制器按位进行组装,然后存入控制器内部的缓冲区中形成以字节为单位的块 。 在对块验证检查和并证明无错误时,
再将它复制到主存中
4.设备完成技术一次 I/O 传送过程:
准备? 传送? 后处理例:一个打印机有两个 I/O设备寄存器状态寄存器数据寄存器设备的一次操作是否完成?
测试设备的一个硬件信号几种测试模式:
( 1) I/O测试指令
( 2) 中断技术
5.DMA
数据在内存与 I/O设备间的直接成块传送
CPU在开始时向设备发,传送一块,命令,结束时进行相应处理,
实际操作由 DMA硬件直接完成
DMA需要附加的辅助硬件,且该
DMA硬件属于设备的电子部分的功能 ( 由控制器实现 ) 。 许多控制器,尤其是块设备控制器都支持 DMA
以读磁盘为例,说明 DMA怎样工作不用 DMA时,磁盘如何读:首先,控制器从磁盘驱动器串行地一位一位地读一个块,直到将整块信息放入控制器的内部缓冲区中 。 其次,它做和校验计算,以核实没有读错误发生 。 然后控制器产生一个中断 。
CPU响应中断,控制转给操作系统 。
当操作系统开始运行时,它重复地从控制器缓冲区中一次一个字节或一个字地读这个磁盘块的信息,并将其送入内存中采用 DMA方式时,允许 DMA控制器接管地址线的控制权,直接控制 DMA控制器与内存的数据交换 。 从而使磁盘设备与储器之间的数据传送不需要
CPU介入,因而减轻了 CPU负担当采用 DMA时,除向控制器提供要读块的磁盘地址外,还要向控制器提供两个信息:要读块送往内存的起始地址和要传送的字节数寄存器当 DMA硬件控制磁盘与存储器之间进行信息交换时,每当磁盘把一个数据读入控制器的数据缓冲区时,DMA控制器取代 CPU,接管地址总线的控制权,并按照 DMA控制器中的存储器地址寄存器内容把数据送入相应的内存单元中 。 然后,
DMA硬件自动地把传送字节计数器减 1,把存储器地址寄存器加 1,并恢复 CPU对内存的控制权,
DMA控制器对每一个传送的数据重复上述过程,
直到传送字节计数器为,0”时,向 CPU产生一个中断信号 。 当操作系统接管 CPU控制权时,
再无需做块复制的工作了 。
CPU向控制器发出启动 DMA通知和有关参数控制器向内存发出询问请求访问内存(读、写)
计数器减 1
结束否发中断
N
Y DMA的实现流程
6.通道 ( I/O处理机 )
是可以执行程序的,负责且只负责操纵输入输出设备的,功能简单专用的,低速低性能的,造价低的专用处理机 。 负责管理设备与内存之间的数据传送的一切工作
6.4 有关技术
6.4.1 通道技术
1.定义:通道是独立于 CPU的专门负责数据输入 /输出传输工作的处理机,对外部设备实现统一管理,代替 CPU对输入 /输出操作进行控制,从而使输入,输出操作可与 CPU并行操作启动,结束处理,错误处理,
DMA,代码转换,格式化等可以执行通道程序
2.引入通道的目的为了使 CPU从 I/O事务中解脱出来,
同时为了提高 CPU与设备,设备与设备之间的并行工作能力
3,分类
1) 字节多路通道字节多路通道以字节为单位传输信息,它可以分时地执行多个通道程序 。 当一个通道程序控制某台设备传送一个字节后,通道硬件就控制转去执行另一个通道程序,控制另一台设备传送信息主要连接以字节为单位的低速
I/O设备 。 如打印机,终端 。
以字节为单位交叉传输,当一台传送一个字节后,立即转去为另一台传送字节
2)选择通道选择通道是以成组方式工作的,
即每次传送一批数据,故传送速度很高 。 选择通道在一段时间内只能执行一个通道程序,只允许一台设备进行数据传输当这台设备数据传输完成后,再选择与通道连接的另一台设备,
执行它的相应的通道程序主要连接磁盘,磁带等高速 I/O
设备选择通道
3)成组多路通道它结合了选择通道传送速度高和字节多路通道能进行分时并行操作的优点 。 它先为一台设备执行一条通道指令,然后自动转接,
为另一台设备执行一条通道指令主要连接高速设备这样,对于连接多台磁盘机的数组多路通道,它可以启动它们同时执行移臂定位操作,然后,按序交叉地传输一批批数据 。 数据多路通道实际上是对通道程序采用多道程序设计的硬件实现
4.硬件连接结构通道:执行通道程序,向控制器发出命令,并具有向 CPU发中断信号的功能 。 一旦 CPU发出指令,
启动通道,则通道独立于 CPU工作 。 一个通道可连接多个控制器,
一个控制器可连接多个设备,形成树形交叉连接主要目的是启动外设时:
a 提高了控制器效率
b 提高可靠性
c 提高并行度交叉连接
5,通道工作原理通道相当于一个功能简单的处理机,包含通道指令 ( 空操作,读操作,写操作,控制,转移操作 ),并可执行用这些指令编写的通道程序
1) 通道运算控制部件:
通道地址字 CAW:记录通道程序在内存中的地址通道命令字 CCW:保存正在执行的通道指令通道状态字 CSW:存放通道执行后的返回结果通道数据字 CDW,存放传输数据通道和 CPU共用内存,通过周期窃取方式取得
2) 通道命令及格式:
用于 I/O操作的命令主要有两种:
I/O指令:启动通道程序通道命令:对 I/O操作进行控制 。
读,反读,写,测试设备状态的数据传输命令,用于设备控制的命令 ( 磁带反绕,换页 ),实现通道程序内部控制的转移命令命令格式一般包括:操作码,
数据传输内存地址,特征位,计数器编制一个通道程序,从磁带机上读入 200字节的信息,送入内存 ( 1000) 16 开始的单元 。
通道命令码:,07” 反绕
,02” 读
CCW1 X,07” * X,40” 1;
CCW2 X,02” 1000 X,00”
200;
3) 工作原理:
CPU:执行用户程序,当遇到 I/O
请求时,可根据该请求生成通道程序放入内存 ( 也可事先编好放入内存 ),并将该通道程序的首地址放入 CAW中;之后执行,启动 I/O”指令,启动通道工作 。
通道:接收到,启动 I/O指令后,
从 CAW中取出通道程序的首地址,
并根据首地址取出第一条指令放入 CCW中,同时向 CPU发回答信号,
使 CPU可继续执行其它程序,而通道则开始执行通道程序,完成传输工作
( 通道程序完成实际 I/O,启动
I/O设备,执行完毕后,如果还有下一条指令,则继续执行,否则表示传输完成 )
当通道传输完成最后一条指令时,
向 CPU发 I/O中断,并且通道停止工作 。 CPU接收中断信号,从 CSW
中取得有关信息,决定下一步做什么
6.4.2 缓冲技术
1,缓冲技术的引入凡是数据到达和离去速度不匹配的地方均可采用缓冲技术 。 在操作系统中采用缓冲是为了实现数据的 I/O操作,以缓解 CPU与外部设备之间速度不匹配的矛盾,提高资源利用率减少了 I/O设备对处理器的中断请求次数,简化了中断机制,节省了系统开销例子:一个程序在运行过程中不断要求打印
2.缓冲区设置硬缓冲:在设备中设置缓冲区,
由硬件实现软缓冲:在内存中开辟一个空间,
用作缓冲区
3.缓冲区管理单缓冲双缓冲缓冲池:多个缓冲区连接起来统一管理,常采用多缓冲管理
4.例子终端输入软件中的键盘驱动程序任务之一:收集字符两种常见的字符缓冲方法:
公共缓冲池 ( 驱动程序中 )
终端数据结构缓冲终端数据结构公共缓冲池终端
0
1
2
3
终端数据结构终端
0
1
终端 0
的缓冲区终端 1
的缓冲区公共缓冲池 终端固定缓冲区
6.4.3 Spooling( 虚拟设备 ) 技术是一个虚拟设备,是一个资源转换技术 ( 用空间,如输入,输出等换取 CPU时间 )
6.4.4 即插即用技术
( Plug and Play)
是计算机系统 I/O设备与部件配置的应用技术 。 顾名思义:插入就可用,不需要进行任何设置操作
PnP技术的产生由于一个系统可以配置多种外部设备,设备也经常变动和更换,它们都要占有一定的系统资源,彼此间在硬件和软件上可能会产生冲突 。
因此在系统中要正确地对它们进行配置和资源匹配;当设备撤除,添置和进行系统升级时,配置过程往往是一个困难的过程
PnP技术的特点:
( 1) 支持 I/O设备及部件的自动配置,使用户能够简单方便地使用系统扩充设备
( 2) 减少由制造商装入的种种用户支持和限制,简化部件的硬件跳接设置,使 I/O附加卡和部件不再具有人工跳接线设置电路
( 3) 在主机板和附加卡上保存系统资源的配置参数和分配状态,
有利于系统对整个 I/O资源的分配和控制
( 4) 支持和兼容各种操作系统平台,具有很强的扩展性和可移植性 。
( 5) 在一定程度上具有,热插入,,,热拼接,技术
PnP技术的功能:
( 1) 附加卡的识别与确认
( 2) 资源分配
( 3) 附加卡自动配置多方面的支持:具有 PnP功能的操作系统,配置管理软件,软件安装程序,设备驱动程序等;网络设备的 PnP支持;系统平台的支持
( 如,PnP主机板,控制芯片组和
PnP BIOS等 ) ;各种支持 PnP规范的总线的 I/O控制卡和部件
6.5 设备处理
6.5.1 设备分配与回收当某进程向系统提出 I/O请求时,
设备分配程序按一定策略分配设备,控制器和通道,形成一条数据传输通路,以供主机和设备间信息交换
* 设备独立性,即不能因为设备的忙碌,故障或更换而影响程序的运行,向用户屏蔽物理设备,呈现给用户的一个操作简单的逻辑设备
* 抽象的 I/O 操作,即设计一类通用的 I/O指令,它们的含义对不同类型的设备作不同解释 。 而且,
在操作系统中,提供了若干 I/O系统调用 。 由系统将抽象的 I/O 操作映射到专门的设备驱动程序
1,数据结构:
设备控制块 DCB( 设备控制表 DCT)
控制器控制块 COCB
( 控制器控制表 COCT)
通道控制块 CHCB
( 通道控制表 CHCT)
系统设备表 SDT
1) 系统设备表 SDT
整个系统一张表,记录系统中所有 I/O设备的信息,表目包括:
设备类型,设备标识符,进程标识符,DCT表指针等
2) 设备控制表 DCT
主要内容:设备类型,设备标识符,设备状态,与此设备相连的 COCT,重复执行的次数或时间,
等待队列的队首和队尾指针,
I/O程序地址
COCT,CHCT与 DCT类似根据用户请求的 I/O设备的逻辑名,查找逻辑设备和物理设备的映射表;以物理设备为索引,查找 SDT,找到该设备所连接的 DCT;
继续查找与该设备连接的 COCT和
CHCT,就找到了一条通路
2.设备分配策略由于在多道程序系统中,进程数多于资源数,引起资源的竞争 。
因此,要有一套合理的分配原则考虑的因素:
* I/O设备的固有属性
* I/O设备的分配算法
* 设备分配的安全性
* 与设备的无关性
1) 独占设备的分配要考虑充分发挥效率,避免由于不合理的分配策略造成死锁静态分配:在进程运行前,完成设备分配;运行结束时,收回设备缺点:设备利用率低动态分配:
在进程运行过程中,当用户提出设备要求时,进 行 分 配,
一旦停止使用立即收回优点:效率好缺点:分配策略不好时,产生死锁
2) 共享设备分配由于同时有多个进程同时访问,
且访问频繁,就会影响整个设备使用效率,影响系统效率 。 因此要考虑多个访问请求到达时服务的顺序,使平均服务时间越短越好
6.5.2 设备驱动程序为了控制 I/O传输,系统为每类设备编制设备驱动程序任务:主要负责接收和分析从设备分配转来的信息,并根据设备分配的结果,结合具体物理设备特性完成以下具体工作
(1) 预置设备的初始状态;
(2) 根据请求传输的数据量,组织
I/O缓冲队列,利用 I/O缓冲对数据进行加工,包括数据格式处理和编码转换;
(3) 构造 I/O程序 ( 在有通道系统中,是通道程序 ) ;
(4) 启动设备进行 I/O操作 。
6.5.3 I/O中断处理程序处理来自设备或通道的中断
6.5.4 一种实现,I/O进程
I/O进程:专门处理系统中的
I/O请求和 I/O中断工作不同操作系统处理 I/O事务所采用的形式不同,主要有三种处理方式:
(1) 每类设备一个 I/O进程
(2) 整个系统一个 I/O进程
(3) 为各类设备设置相应的设备处理程序供外部调用
1.I/O请求的进入用户程序:调用 send将 I/O请求发送给 I/O进程;调用 block
将自己阻塞,直到 I/O任务完成后被唤醒系统:利用 wakeup唤醒 I/O进程,完成用户所要求的 I/O处理
2.I/O中断的进入当 I/O中断发生时,内核中的中断处理程序发一条消息给 I/O
进程,由 I/O进程负责判断并处理中断
3.I/O进程是系统进程,一般赋予最高优先级 。 一旦被唤醒,它可以很快抢占处理机投入运行
I/O进程开始运行后,首先关闭中断,然后用 receive去接收消息 。 两种情形:
(1) 没有消息,则开中断,将自己阻塞;
(2) 有消息,则判断消息 ( I/O
请求或 I/O中断 ) ;
a.I/O请求准备通道程序,发出启动 I/O
指令,继续判断有无消息
b.I/O中断,进一步判断正常或异常结束正常:唤醒要求进行 I/O操作的进程异常:转入相应的错误处理程序为进程 P分配所需的 I/O设备从 SDT表查该类设备的控制表 DCT
由 DCT检查该设备忙否?
不忙检查分配此设备的安全性?
不安全分配此设备给进程 P
查此设备连接的 COCT忙否?
不忙不忙分配此控制器给进程 P
查此控制器连接的 CHCT忙否?
最后一个 DCT?
分配此通道给进程 P
启动 I/O,进行具体的 I/O操作忙进程 P的 PCB放入此设备的等待队列
Y
N
忙 最后一个 COCT?
最后一个 DCT?
进程 P 的 PCB 放入此控制器的等待队列
Y
N
Y
忙最后一个 CHCT?
Y最后一个 COCT?
进程 P 的 PCB 放入此通道的等待队列
N
Y
N
N
多通路设备分配流程示意图管理程序保护现场组织通道程序保存通道程序的始址于 CAW
启动 I/O指令分析条件码启动成功使
P阻塞,另选程序 q运行保护程序 q的现场分析中断原因处理 I/O中断选择可运行程序请求启动程序程序 q
程序 P
用户程序判断状态执行通道程序控制 I/O设备操作,执行情况记录在 CSW
出现中断事件
CSW=>主存通道号,设备号送特定寄存器通道程序执行规定的操作设备控制器和设备
1
2
3
4
5
6
I/O的操作全过程
6.6 典型外部设备
6.6.1 硬盘
6.6.2 时钟
6.6.3 终端输入:原始模式或加工模式缓冲,回送,填充字符,行编辑,
特殊字符处理输出:光标的位置,转义字符
6.1 概述
6.2 I/O 软件的组成
6.3 I/O 硬件特点
6.4 有 关 技 术
6.5 设 备 处 理
6.6 典型外部设备
6.1 概述
6.1.1 I/O管理的重要性
1.没有 I/O设备的计算机就像一个没有轮子的汽车
2.I/O性能经常成为系统性能的瓶颈
(1)CPU性能不等于系统性能响应时间也是一个重要因素?
(2)CPU性能越高,与 I/O差距越大弥补:更多的进程
(3)进程切换多,系统开销大
3.操作系统庞大复杂的原因之一是:
资源多,杂,并发,均来自 I/O
4.理解 I/O的工作过程与结构是理解操作系统的工作过程与结构的关键
5.I/O技术很实用
6.与其他功能联系密切,特别是文件系统
6.1.2 设备的分类
1.按使用特性分存储型设备输入型设备 ( 外设?主机 )
输出型设备 ( 主机?外设 )
输入输出型设备
2.按数据组织分块设备以数据块为单位存储,传输信息字符设备以字符为单位存储,传输信息
3.按外部设备的从属关系分系统设备指操作系统生成时,登记在系统中的标准设备
( 如终端,打印机,磁盘机等 )
用户设备指在系统生成时,未登记在系统中的非标准设备 。 对于这类设备的处理程序由用户提供,并将其纳入系统,由系统代替用户实施管理 。
( 如 A/D,D/A转换器,CAD所用专用设备 )
4,按资源分配角度分独占设备在一段时间内只能有一个进程使用的设备,一般为低速 I/O设备 。 ( 如打印机,磁带等 )
共享设备在一段时间内可有多个进程共同使用的设备,多个进程以交叉的方式来使用设备,其资源利用率高 。 ( 如硬盘 )
虚设备在一类设备上模拟另一类设备,
常用共享设备模拟独占设备,用高速设备模拟低速设备,被模拟的设备称为虚设备
( 将慢速的独占设备改造成多个用户可共享的设备,提高设备的利用率 )
( 为 了 提 高 资 源 利 用 率,如
SPOOLing技术就使用了虚设备技术 —— 用硬盘模拟输入输出设备 。 )
SPOOLing技术为解决独立设备数量少,速度慢,
不能满足众多进程的要求,而且在进程独占设备期间,设备利用率比较低而提出的一种设备管理技术
5.从程序使用角度分逻辑设备物理设备
6.1.3 设备管理的目的和任务
1,按照用户的请求,控制设备的各种操作,完成 I/O设备与内存之间的数据交换 ( 包括设备分配与回收;设备驱动程序;设备中断处理;缓冲区管理 ),最终完成用户的 I/O请求
(1) 选择和分配 I/O设备,以便进行数据传输操作
(2) 控制 I/O设备与内存之间交换数据
2.向用户提供使用外部设备的方便接口,使用户摆脱繁琐的编程负担
方便性
友好界面
透明性
3.充分利用各种技术 ( 通道,中断,缓冲等 ) 提高 CPU与设备,
设备与设备之间的并行工作能力,
充分利用资源,提高资源利用率
并行性
均衡性 ( 使设备充分忙碌 )
4,保证在多道程序环境下,当多个进程竞争使用设备时,按一定策略分配和管理各种设备,使系统能有条不紊的工作
5,与设备无关性 ( 设备独立性 )
用户在编制程序时,使用逻辑设备名,由系统实现从逻辑设备到物理设备 ( 实际设备 ) 的转换用户能独立于具体物理设备而方便的使用设备用户申请使用设备时,只需要指定设备类型,而无须指定具体物理设备,系统根据当前的请求,
及设备分配的情况,在相同类别设备中,选择一个空闲设备,并将其分配给一个申请进程统一性:
对不同的设备采取统一的操作方式,在用户程序中使用的是逻辑设备优点:
设备忙碌或设备故障时,用户不必修改程序
改善了系统的可适应性和可扩展性
6.1.4 功能
1.设备分配与回收记录设备的状态根据用户的请求和设备的类型,
采用一定的分配算法,选择一条数据通路
2.建立统一的且独立于设备的接口
3.完成设备驱动程序,实现真正的
I/O操作
4.处理外部设备的中断处理
5.管理 I/O缓冲区
6.2 I/O软件的组成
I/ O软件的基本思想是按分层的思想构成,较低层的软件要使较高层的软件独立于硬件的特性,
较高层软件则要向用户提供一个友好的,清晰的,简单的,功能更强的接口
6.2.1 I/ O软件的目标在设计 I/ O软件时的一个关键概念是设备独立性 。 用户在编写使用软盘或硬盘上文件的程序时,
无需为不同的设备类型而修改程序就可以使用与设备独立性密切相关的是统一命名这个目标 。 一个文件或一个设备的名字只应是一个简单的字符串或一个整数,它不应依赖于设备出错处理是 I/ O软件的另一个目标 。 一般来说,数据传输中的错误应尽可能地在接近硬件层上处理最后一个问题是可共享设备和独占设备的处理问题
6.2.2 中断处理程序每个进程在启动一个 I/ O操作后阻塞起来,直到 I/ O操作完成并产生一个中断,由操作系统接管
CPU后唤醒进程为止
6.2.3 设备驱动程序与设备密切相关的代码放在设备驱动程序中,每个设备驱动程序处理一种设备类型每一个控制器都设有一个或多个设备寄存器,用来存放向设备发送的命令和参数 。 设备驱动程序负责释放这些命令,并监督它们正确执行一般,设备驱动程序的任务是接收来自与设备无关的上层软件的抽象请求,并执行这个请求在设备驱动程序的进程释放一条或多条命令后,系统有两种处理方式,多数情况下,执行设备驱动程序的进程必须等待命令完成这样,在命令开始执行后,它阻塞自已,直到中断处理时将它解除阻塞为止 。 而在其它情况下,
命令执行不必延迟就很快完成
6.2.4 设备独立的软件虽然 I/ O软件中一部分是设备专用的,但大部分软件是与设备无关的 。 设备驱动程序与设备独立软件之间的确切界限是依赖于具体系统的
1.独立于设备的软件的基本任务是实现所有设备都需要的功能,
并且向用户级软件提供一个统一的接口
2.如何给文件和设备这样的对象命名是操作系统中的一个主要课题 。 独立于设备的软件负责把设备的符号名映射到正确的设备驱动上
3.设备保护系统如何防止无权存取设备的用户存取设备呢?
4.不同的磁盘可以采用不同的扇区尺寸 。 向较高层软件掩盖这一事实并提供大小统一的块尺寸,
这正是设备独立软件的一个任务 。
它可将若干扇区合成一个逻辑块 。
这样,较高层的软件只与抽象设备打交道,独立于物理扇区的尺寸而使用等长的逻辑块
5.缓冲技术
6.设备分配
7.出错处理
6.2.5 用户空间的 I/ O软件尽管大部分 I/ O软件都包含在操作系统中,但仍有一小部分是由与用户程序连接在一起的库过程,
甚至完全由运行于核外的程序构成 。 系统调用,包括 I/ O系统调用,通常由库过程实现这些过程所做的工作只是将系统调用时所用的参数放在合适的位置,由其它的 I/ O过程实际实现真正的操作
( 1) 用户进程层执行输入输出系统调用,对 I/ O数据进行格式化,
为假脱机输入/输出作准备
( 2) 独立于设备的软件实现设备的命名,设备的保护,成块处理,
缓冲技术和设备分配
( 3) 设备驱动程序设置设备寄存器,检查设备的执行状态
( 4) 中断处理程序负责 I/ O完成时,唤醒设备驱动程序进程,进行中断处理
( 5) 硬件层实现物理 I/ O的操作
6.3 I/O硬件特点
6.3.1 设备组成
I/ O设备一般由机械和电子两部分组成 。 把这两部分分开处理,
以提供更加模块化,更加通用的设计
1.设备机械部分是设备本身
2.设备控制器电子部分叫做设备控制器或适配器 。
在小型和微型机中,它常采用印刷电路卡插入计算机中控制器卡上通常有一个插座,通过电缆与设备相连控制器和设备之间的接口是一个标准接口,它符合 ANSI,IEEE或
ISO这样的国际标准关注点:对该硬件如何进行程序设计,不考虑设备内部如何工作程序员:软件接口即硬件所接受的命令,它所完成的功能,报回的错误
6.3.2 设备接口一次完整的 I/O传送过程,典型地由一长列低级信号组成,这些信号启动设备所执行的操作,并通过测试设备状态来监控设备操作的进展一个 I/O过程由四步组成:
准备启动测试和等待结果检查和错误处理通过对设备接口寄存器组的读写完成
6.3.3 设备连接模式指 I/O设备与 CPU之间的连接方式,
亦即将设备连接到一个计算机系统上的方式 。 在一个确定的连接模式下,从 I/O设备到 CPU间的所有连接成分构成了一条 I/O路径
( I/O链 )
1.设备与主机间最基本的连接方式四个要素:
设备接口形式
I/O指令形式
I/O地址空间分配及译码连线问题
(1)设备接口形式
* 端口地址译码
* 按照主机与设备的约定格式和过程接受或发送数据和信号计算机 设备设备 计算机
* 将计算机的数字信号转换为机械部分能识别的模拟信号,或反过来
* 实现一些诸如设备内部硬件缓冲存储,数据加工的提高性能或增强功能的任务
(2)I/O指令形式与 I/O地址是相互关联的,主要有两种形式:
内存映像 I/O模式
I/O专用指令要考虑的几个问题:
设备完成技术:系统如何知道设备的一次 I/O操作是否完成?
对 CPU编程的 I/O技术,CPU必须亲自完成 I/O的启动与完成的处理,
亲自执行所有数据在内存和设备之间的实际物理传送进一步改善:
使 CPU利用率尽可能不被 I/O降低,
使 CPU脱离 I/O的负担
* 提高 I/O本身的绝对速度
* 减少或缓解速度差距
* 使 CPU不等待 I/O
* 使 CPU尽可能摆脱 I/O
提高设备利用率
在设备与主机的硬连接上,引入总线,节省连线并提供配置扩充与改变时的灵活性;引入控制器,
扩大设备与主机间的相互适用范围
( 控制器与设备的分离,循环测试到中断,对 CPU编程式的 I/O到 DMA,
联机 I/O到假脱机 )
2.总线将计算机系统中的各个子系统
( CPU,内存,外设等 ) 相互连接,且连接是共享的 。
好处:低成本 ( 一线多用 )
灵活性 ( 易于增加设备便于两个计算机系统之间共享外设 )
总线的缺点:
本身形成了通讯瓶颈,限制 I/O
吞吐量总线分类:
数据总线,地址总线,控制总线
3.控制器 ( 适配器 )
电子部分:完成设备与主机间的连接和通讯
CPU与控制器间通讯:
单总线模型 ( 微机,小型机 )
多总线模型 ( 中,大型机 )
每个控制器备有几个寄存器与 CPU
通讯 。
两种模式:
1,存储器映像 I/O,寄存器是内存地址空间的一部分
2,专用 I/O地址空间,每个控制器分配其中的一部分 ( IBM PC)
操作系统将命令写入控制器寄存器中,以实现输入/输出例如,IBM PC的软盘控制器可接收 15 条 命 令,READ,WRITE,
FORMAT,SEEK,RECALIBRATE,
命令可以带参数 。 它们被一起送入控制器的寄存器中当控制器接受一条命令后,可独立于 CPU完成指定操作,CPU可以转去执行其它运算 。 命令完成时,
控制器产生一个中断,CPU响应中断,控制转给操作系统 。 CPU
通过读控制器寄存器中的信息,
获得操作结果和设备状态控制器与设备之间的接口常常是一个低级接口 。 例如磁盘,可以按每个磁道 8扇区,每个扇区 512个字节进行格式化 。 然而,实际从驱动器出来的却是一连串的位流,以一个头标 ( preamble) 开始,然后是一个扇区的 4096位 ( 512× 8),最后是检查和或错误校验码 ( Error— C一 C:
ECC) 。 头标是在对磁盘格式化时写上的,它包括柱面和扇区数,扇区的大小和类似的一些数据控制器的任务是把串行的位流转换为字节块,并进行必要的错误修正 。 首先,控制器按位进行组装,然后存入控制器内部的缓冲区中形成以字节为单位的块 。 在对块验证检查和并证明无错误时,
再将它复制到主存中
4.设备完成技术一次 I/O 传送过程:
准备? 传送? 后处理例:一个打印机有两个 I/O设备寄存器状态寄存器数据寄存器设备的一次操作是否完成?
测试设备的一个硬件信号几种测试模式:
( 1) I/O测试指令
( 2) 中断技术
5.DMA
数据在内存与 I/O设备间的直接成块传送
CPU在开始时向设备发,传送一块,命令,结束时进行相应处理,
实际操作由 DMA硬件直接完成
DMA需要附加的辅助硬件,且该
DMA硬件属于设备的电子部分的功能 ( 由控制器实现 ) 。 许多控制器,尤其是块设备控制器都支持 DMA
以读磁盘为例,说明 DMA怎样工作不用 DMA时,磁盘如何读:首先,控制器从磁盘驱动器串行地一位一位地读一个块,直到将整块信息放入控制器的内部缓冲区中 。 其次,它做和校验计算,以核实没有读错误发生 。 然后控制器产生一个中断 。
CPU响应中断,控制转给操作系统 。
当操作系统开始运行时,它重复地从控制器缓冲区中一次一个字节或一个字地读这个磁盘块的信息,并将其送入内存中采用 DMA方式时,允许 DMA控制器接管地址线的控制权,直接控制 DMA控制器与内存的数据交换 。 从而使磁盘设备与储器之间的数据传送不需要
CPU介入,因而减轻了 CPU负担当采用 DMA时,除向控制器提供要读块的磁盘地址外,还要向控制器提供两个信息:要读块送往内存的起始地址和要传送的字节数寄存器当 DMA硬件控制磁盘与存储器之间进行信息交换时,每当磁盘把一个数据读入控制器的数据缓冲区时,DMA控制器取代 CPU,接管地址总线的控制权,并按照 DMA控制器中的存储器地址寄存器内容把数据送入相应的内存单元中 。 然后,
DMA硬件自动地把传送字节计数器减 1,把存储器地址寄存器加 1,并恢复 CPU对内存的控制权,
DMA控制器对每一个传送的数据重复上述过程,
直到传送字节计数器为,0”时,向 CPU产生一个中断信号 。 当操作系统接管 CPU控制权时,
再无需做块复制的工作了 。
CPU向控制器发出启动 DMA通知和有关参数控制器向内存发出询问请求访问内存(读、写)
计数器减 1
结束否发中断
N
Y DMA的实现流程
6.通道 ( I/O处理机 )
是可以执行程序的,负责且只负责操纵输入输出设备的,功能简单专用的,低速低性能的,造价低的专用处理机 。 负责管理设备与内存之间的数据传送的一切工作
6.4 有关技术
6.4.1 通道技术
1.定义:通道是独立于 CPU的专门负责数据输入 /输出传输工作的处理机,对外部设备实现统一管理,代替 CPU对输入 /输出操作进行控制,从而使输入,输出操作可与 CPU并行操作启动,结束处理,错误处理,
DMA,代码转换,格式化等可以执行通道程序
2.引入通道的目的为了使 CPU从 I/O事务中解脱出来,
同时为了提高 CPU与设备,设备与设备之间的并行工作能力
3,分类
1) 字节多路通道字节多路通道以字节为单位传输信息,它可以分时地执行多个通道程序 。 当一个通道程序控制某台设备传送一个字节后,通道硬件就控制转去执行另一个通道程序,控制另一台设备传送信息主要连接以字节为单位的低速
I/O设备 。 如打印机,终端 。
以字节为单位交叉传输,当一台传送一个字节后,立即转去为另一台传送字节
2)选择通道选择通道是以成组方式工作的,
即每次传送一批数据,故传送速度很高 。 选择通道在一段时间内只能执行一个通道程序,只允许一台设备进行数据传输当这台设备数据传输完成后,再选择与通道连接的另一台设备,
执行它的相应的通道程序主要连接磁盘,磁带等高速 I/O
设备选择通道
3)成组多路通道它结合了选择通道传送速度高和字节多路通道能进行分时并行操作的优点 。 它先为一台设备执行一条通道指令,然后自动转接,
为另一台设备执行一条通道指令主要连接高速设备这样,对于连接多台磁盘机的数组多路通道,它可以启动它们同时执行移臂定位操作,然后,按序交叉地传输一批批数据 。 数据多路通道实际上是对通道程序采用多道程序设计的硬件实现
4.硬件连接结构通道:执行通道程序,向控制器发出命令,并具有向 CPU发中断信号的功能 。 一旦 CPU发出指令,
启动通道,则通道独立于 CPU工作 。 一个通道可连接多个控制器,
一个控制器可连接多个设备,形成树形交叉连接主要目的是启动外设时:
a 提高了控制器效率
b 提高可靠性
c 提高并行度交叉连接
5,通道工作原理通道相当于一个功能简单的处理机,包含通道指令 ( 空操作,读操作,写操作,控制,转移操作 ),并可执行用这些指令编写的通道程序
1) 通道运算控制部件:
通道地址字 CAW:记录通道程序在内存中的地址通道命令字 CCW:保存正在执行的通道指令通道状态字 CSW:存放通道执行后的返回结果通道数据字 CDW,存放传输数据通道和 CPU共用内存,通过周期窃取方式取得
2) 通道命令及格式:
用于 I/O操作的命令主要有两种:
I/O指令:启动通道程序通道命令:对 I/O操作进行控制 。
读,反读,写,测试设备状态的数据传输命令,用于设备控制的命令 ( 磁带反绕,换页 ),实现通道程序内部控制的转移命令命令格式一般包括:操作码,
数据传输内存地址,特征位,计数器编制一个通道程序,从磁带机上读入 200字节的信息,送入内存 ( 1000) 16 开始的单元 。
通道命令码:,07” 反绕
,02” 读
CCW1 X,07” * X,40” 1;
CCW2 X,02” 1000 X,00”
200;
3) 工作原理:
CPU:执行用户程序,当遇到 I/O
请求时,可根据该请求生成通道程序放入内存 ( 也可事先编好放入内存 ),并将该通道程序的首地址放入 CAW中;之后执行,启动 I/O”指令,启动通道工作 。
通道:接收到,启动 I/O指令后,
从 CAW中取出通道程序的首地址,
并根据首地址取出第一条指令放入 CCW中,同时向 CPU发回答信号,
使 CPU可继续执行其它程序,而通道则开始执行通道程序,完成传输工作
( 通道程序完成实际 I/O,启动
I/O设备,执行完毕后,如果还有下一条指令,则继续执行,否则表示传输完成 )
当通道传输完成最后一条指令时,
向 CPU发 I/O中断,并且通道停止工作 。 CPU接收中断信号,从 CSW
中取得有关信息,决定下一步做什么
6.4.2 缓冲技术
1,缓冲技术的引入凡是数据到达和离去速度不匹配的地方均可采用缓冲技术 。 在操作系统中采用缓冲是为了实现数据的 I/O操作,以缓解 CPU与外部设备之间速度不匹配的矛盾,提高资源利用率减少了 I/O设备对处理器的中断请求次数,简化了中断机制,节省了系统开销例子:一个程序在运行过程中不断要求打印
2.缓冲区设置硬缓冲:在设备中设置缓冲区,
由硬件实现软缓冲:在内存中开辟一个空间,
用作缓冲区
3.缓冲区管理单缓冲双缓冲缓冲池:多个缓冲区连接起来统一管理,常采用多缓冲管理
4.例子终端输入软件中的键盘驱动程序任务之一:收集字符两种常见的字符缓冲方法:
公共缓冲池 ( 驱动程序中 )
终端数据结构缓冲终端数据结构公共缓冲池终端
0
1
2
3
终端数据结构终端
0
1
终端 0
的缓冲区终端 1
的缓冲区公共缓冲池 终端固定缓冲区
6.4.3 Spooling( 虚拟设备 ) 技术是一个虚拟设备,是一个资源转换技术 ( 用空间,如输入,输出等换取 CPU时间 )
6.4.4 即插即用技术
( Plug and Play)
是计算机系统 I/O设备与部件配置的应用技术 。 顾名思义:插入就可用,不需要进行任何设置操作
PnP技术的产生由于一个系统可以配置多种外部设备,设备也经常变动和更换,它们都要占有一定的系统资源,彼此间在硬件和软件上可能会产生冲突 。
因此在系统中要正确地对它们进行配置和资源匹配;当设备撤除,添置和进行系统升级时,配置过程往往是一个困难的过程
PnP技术的特点:
( 1) 支持 I/O设备及部件的自动配置,使用户能够简单方便地使用系统扩充设备
( 2) 减少由制造商装入的种种用户支持和限制,简化部件的硬件跳接设置,使 I/O附加卡和部件不再具有人工跳接线设置电路
( 3) 在主机板和附加卡上保存系统资源的配置参数和分配状态,
有利于系统对整个 I/O资源的分配和控制
( 4) 支持和兼容各种操作系统平台,具有很强的扩展性和可移植性 。
( 5) 在一定程度上具有,热插入,,,热拼接,技术
PnP技术的功能:
( 1) 附加卡的识别与确认
( 2) 资源分配
( 3) 附加卡自动配置多方面的支持:具有 PnP功能的操作系统,配置管理软件,软件安装程序,设备驱动程序等;网络设备的 PnP支持;系统平台的支持
( 如,PnP主机板,控制芯片组和
PnP BIOS等 ) ;各种支持 PnP规范的总线的 I/O控制卡和部件
6.5 设备处理
6.5.1 设备分配与回收当某进程向系统提出 I/O请求时,
设备分配程序按一定策略分配设备,控制器和通道,形成一条数据传输通路,以供主机和设备间信息交换
* 设备独立性,即不能因为设备的忙碌,故障或更换而影响程序的运行,向用户屏蔽物理设备,呈现给用户的一个操作简单的逻辑设备
* 抽象的 I/O 操作,即设计一类通用的 I/O指令,它们的含义对不同类型的设备作不同解释 。 而且,
在操作系统中,提供了若干 I/O系统调用 。 由系统将抽象的 I/O 操作映射到专门的设备驱动程序
1,数据结构:
设备控制块 DCB( 设备控制表 DCT)
控制器控制块 COCB
( 控制器控制表 COCT)
通道控制块 CHCB
( 通道控制表 CHCT)
系统设备表 SDT
1) 系统设备表 SDT
整个系统一张表,记录系统中所有 I/O设备的信息,表目包括:
设备类型,设备标识符,进程标识符,DCT表指针等
2) 设备控制表 DCT
主要内容:设备类型,设备标识符,设备状态,与此设备相连的 COCT,重复执行的次数或时间,
等待队列的队首和队尾指针,
I/O程序地址
COCT,CHCT与 DCT类似根据用户请求的 I/O设备的逻辑名,查找逻辑设备和物理设备的映射表;以物理设备为索引,查找 SDT,找到该设备所连接的 DCT;
继续查找与该设备连接的 COCT和
CHCT,就找到了一条通路
2.设备分配策略由于在多道程序系统中,进程数多于资源数,引起资源的竞争 。
因此,要有一套合理的分配原则考虑的因素:
* I/O设备的固有属性
* I/O设备的分配算法
* 设备分配的安全性
* 与设备的无关性
1) 独占设备的分配要考虑充分发挥效率,避免由于不合理的分配策略造成死锁静态分配:在进程运行前,完成设备分配;运行结束时,收回设备缺点:设备利用率低动态分配:
在进程运行过程中,当用户提出设备要求时,进 行 分 配,
一旦停止使用立即收回优点:效率好缺点:分配策略不好时,产生死锁
2) 共享设备分配由于同时有多个进程同时访问,
且访问频繁,就会影响整个设备使用效率,影响系统效率 。 因此要考虑多个访问请求到达时服务的顺序,使平均服务时间越短越好
6.5.2 设备驱动程序为了控制 I/O传输,系统为每类设备编制设备驱动程序任务:主要负责接收和分析从设备分配转来的信息,并根据设备分配的结果,结合具体物理设备特性完成以下具体工作
(1) 预置设备的初始状态;
(2) 根据请求传输的数据量,组织
I/O缓冲队列,利用 I/O缓冲对数据进行加工,包括数据格式处理和编码转换;
(3) 构造 I/O程序 ( 在有通道系统中,是通道程序 ) ;
(4) 启动设备进行 I/O操作 。
6.5.3 I/O中断处理程序处理来自设备或通道的中断
6.5.4 一种实现,I/O进程
I/O进程:专门处理系统中的
I/O请求和 I/O中断工作不同操作系统处理 I/O事务所采用的形式不同,主要有三种处理方式:
(1) 每类设备一个 I/O进程
(2) 整个系统一个 I/O进程
(3) 为各类设备设置相应的设备处理程序供外部调用
1.I/O请求的进入用户程序:调用 send将 I/O请求发送给 I/O进程;调用 block
将自己阻塞,直到 I/O任务完成后被唤醒系统:利用 wakeup唤醒 I/O进程,完成用户所要求的 I/O处理
2.I/O中断的进入当 I/O中断发生时,内核中的中断处理程序发一条消息给 I/O
进程,由 I/O进程负责判断并处理中断
3.I/O进程是系统进程,一般赋予最高优先级 。 一旦被唤醒,它可以很快抢占处理机投入运行
I/O进程开始运行后,首先关闭中断,然后用 receive去接收消息 。 两种情形:
(1) 没有消息,则开中断,将自己阻塞;
(2) 有消息,则判断消息 ( I/O
请求或 I/O中断 ) ;
a.I/O请求准备通道程序,发出启动 I/O
指令,继续判断有无消息
b.I/O中断,进一步判断正常或异常结束正常:唤醒要求进行 I/O操作的进程异常:转入相应的错误处理程序为进程 P分配所需的 I/O设备从 SDT表查该类设备的控制表 DCT
由 DCT检查该设备忙否?
不忙检查分配此设备的安全性?
不安全分配此设备给进程 P
查此设备连接的 COCT忙否?
不忙不忙分配此控制器给进程 P
查此控制器连接的 CHCT忙否?
最后一个 DCT?
分配此通道给进程 P
启动 I/O,进行具体的 I/O操作忙进程 P的 PCB放入此设备的等待队列
Y
N
忙 最后一个 COCT?
最后一个 DCT?
进程 P 的 PCB 放入此控制器的等待队列
Y
N
Y
忙最后一个 CHCT?
Y最后一个 COCT?
进程 P 的 PCB 放入此通道的等待队列
N
Y
N
N
多通路设备分配流程示意图管理程序保护现场组织通道程序保存通道程序的始址于 CAW
启动 I/O指令分析条件码启动成功使
P阻塞,另选程序 q运行保护程序 q的现场分析中断原因处理 I/O中断选择可运行程序请求启动程序程序 q
程序 P
用户程序判断状态执行通道程序控制 I/O设备操作,执行情况记录在 CSW
出现中断事件
CSW=>主存通道号,设备号送特定寄存器通道程序执行规定的操作设备控制器和设备
1
2
3
4
5
6
I/O的操作全过程
6.6 典型外部设备
6.6.1 硬盘
6.6.2 时钟
6.6.3 终端输入:原始模式或加工模式缓冲,回送,填充字符,行编辑,
特殊字符处理输出:光标的位置,转义字符