《输入输出系统》PPT课件.ppt_第1页
《输入输出系统》PPT课件.ppt_第2页
《输入输出系统》PPT课件.ppt_第3页
《输入输出系统》PPT课件.ppt_第4页
《输入输出系统》PPT课件.ppt_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章 输入/输出系统,6.1 I/O系统的硬件结构 6.2 采用通道模型的I/O系统 6.3 I/O系统的软件组织 6.4 缓冲技术 6.5 磁盘的驱动调度 6.6 设备分配程序 6.7 WindowsNT的I/O系统,6.1 I/O系统的硬件结构,图 6.1 按使用特性对设备的分类,6.1.1 I/O设备类型,1. 按使用特性分类,2. 按所属关系分类 外部设备按其所属关系可分为系统设备和用户设备。 (1) 系统设备。这是指在操作系统生成时已经登记在系统中的标准设备, 如打印机、磁盘等。时钟也是一个特殊的系统设备,它的全部功能就是按事先定义的时间间隔发出中断。 (2) 用户设备。这是指在系统生成时未登记在系统中的非标准设备。这类设备通常是由用户提供的,因此该类设备的处理程序也应该由用户提供, 并通过适当的手段把这类设备登记在系统中,以便系统能对它实施统一管理。,3. 按资源分配角度分类,独占设备。 (2) 共享设备。 (3) 虚拟设备。,4. 按传输数据数量分类 外部设备按传输数据的数量,分为字符设备和块设备。 (1) 字符设备。每次传输数据以字节为单位的设备称为字符设备,如打印机、终端、键盘等低速设备。 (2) 块设备。传输以数据块为单位进行的设备称为块设备。 如磁盘、磁带等高速外存储器等。,6.1.2 I/O设备的物理特性,1. 磁盘,图 6.2 磁盘物理结构概念图,表6-1 典型的软盘和硬盘的技术参数,2. 时钟,图 6.3 可编程时钟,可编程时钟的优点是它的中断频率可由软件控制。 如果使用振荡频率为1 MHz的晶体,那么计数器每一微秒接收到一个脉冲, 对于16位的寄存器, 中断可编程为按 1 s至 65 536 s 的间隔发生。,时钟硬件所做的工作仅仅是按给定的时间间隔产生中断, 其它和时间有关的工作必须由软件(时钟驱动程序)来做。 时钟软件的任务包括: 维护日期和时间; 防止进程运行时间超过允许界限; 对CPU使用进行记帐; 处理用户进程提出的时间闹钟系统调用; 对系统某些部分提供监视定时器; 支持直方图监视和统计信息搜集。,3. 终端,(1) 存储映像终端。,图 6.4 存储映像终端直接写入视频RAM,视频存储卡上有一个芯片称为视频控制器(Video Controller)。 这个芯片从视频RAM中取出字符,产生用于驱动显示器(监视器)的视频信号,如图 6.4 所示。监视器产生水平扫描屏幕的电子束。典型的屏幕有 480 至 1024 行, 每行 640 至 1200 点。 这些点称为像素(Pixel)。视频控制器调节电子束,决定一个像素是亮的还是黑的。彩色监视器有三个电子束,分别对应红色、 绿色和蓝色。,一个简单的单色显示器可显示 25 行,每行 80 个字符。每个字符的宽度为 9 个像素,高度为 14 个像素(包括字符间的空白)。 这种显示器有 350 行扫描线,每行扫描线有 720 个点,每帧每秒重画 45 至 70 次。视频控制器被设计成首先从视频RAM中取出 80 个字符,产生 14 行扫描线,再取 80 个字符, 再产生 14 行扫描线, 这样一直工作下去。事实上,大多数视频控制器显示每个字符的每行扫描线时,都取一次字符以便在控制器中不需要缓冲。每个字符的 9 列宽 14 行高的位模保存在视频控制器的视频ROM中(也可以使用RAM,以支持用户字体)。ROM按 12 位编址,8 位来自字符代码,4位指定扫描线。ROM中每个字节的 8 位控制 8 个像素,字符间的第 9 个像素总是为空。因此屏幕上的每行文本需 1480 次存储器访问,也需访问相同次数的字符发生器。,对于存储映像显示器,键盘是与显示器分开的,它可能通过一个串行口或并行口和计算机相连。 对于每一个键动作,产生CPU中断,键盘中断程序通过读I/O口取得键入的字符。 在IBM-PC中,键盘包括一个内嵌的微处理器,通过特殊的串行口和主板上的一个控制芯片通信。任何时刻击键或释放键, 都产生一个中断,而且键盘仅仅提供键码,而不是ASCII码。 当击A键时,键码(30)被存放于I/O寄存器。输入字符是大写、 小写、CTRL-A、ALT-A、-ALT-A,还是其它的组合,则由驱动程序确定。因为驱动程序知道哪些键被按下还没有释放, 因此它有足够的信息完成这项工作。虽然键盘接口把全部工作交给了软件,但这提供了很大的灵活性。,(2) RS-232终端。,图 6.5 RS-232终端与计算机通信,图 6.6 X-Window系统中的客户和服务器,(3) X终端。,6.1.3 I/O系统的硬件组织,1. I/O控制方式,循环I/O测试方式。 (2) 程序中断I/O方式。 (3) DMA方式。 (4) 通道方式。,图 6.7 DMA方式下的数据传输,采用DMA方式的数据传输处理过程如下: 当进程要求设备输入数据时,CPU把准备存放输入数据的内存始址及要传输的字节数分别送入DMA控制器中的内存地址寄存器和传送字节计数器;另外,还要把控制/状态寄存器中的中断允许位和启动位置1,从而启动设备,开始数据输入。 发出数据输入要求的进程进入阻塞状态, 进程调度程序调度其它进程占有CPU。 输入设备不断地挪用CPU工作周期, 将数据从内部缓冲区源源不断地送入内存,直至所要求的字节数全部传送完毕。 DMA控制器在传输完成时通过中断请求线发出中断信号, CPU接到中断信号后转中断处理程序进行相应处理。 中断处理结束后, CPU返回被中断的进程或去运行重新被调度的进程。,2. 设备控制器,现有大多数的设备控制器由以下三部分组成: (1) 设备控制器与CPU的接口。该接口用于实现设备控制器与CPU之间的通信。在该接口中有三类信号线:数据线、地址线、 控制线。 数据线通常与两类寄存器相连接: 数据寄存器。设备控制器中可以有一个或多个数据寄存器, 用于存放从设备送来的数据(输入)或从CPU送来的数据(输出)。 控制/状态寄存器。在控制器中同样可以有一个或多个控制/状态寄存器,用于存放从CPU送来的控制信息或由设备产生的状态信息。,(2) 设备控制器与设备的接口。在一个设备控制器上, 可以连接一台或多台设备。相应地,在控制器中就有一个或多个设备接口, 一个接口连接一台设备, 在每个接口中都有数据、 控制和状态三种类型的信号。 数据信号。 控制信号。 状态信号。,(3) I/O逻辑。,图 6.8 设备控制器的组成,6.2 采用通道模型的I/O系统,6.2.1 通道类型,字节多路通道 2. 选择通道 3. 数组多路通道,6.2.2 多通路I/O系统,图 6.9 多通路的配置方案,例如设备E到达主存的四条通路是: 通道A控制器C设备E 通道A控制器D设备E 通道B控制器C设备E 通道B控制器D设备E,6.2.3 通道命令和通道程序,1. 通道命令及其格式 通常,计算机系统的I/O处理机具有如下三类基本通道操作: (1) 数据传送类, 如读、 写、 反读、 断定(检验设备状态); (2) 设备控制类, 如控制换页、 磁带反绕等; (3) 转移类, 即通道程序内部的控制转移。 例如, 某系统中通道命令的格式如下:,0 7 8 31 32 47 48 63,每条通道命令由四个字段组成: (1) 操作码(07): 表示通道要执行的命令; (2) 数据主存始址: 表示本命令要访问的主存数据区的起始地址; (3) 特征位(3247, 只使用了 3236 位, 其余未用): 3739 位必须置 0,否则认为通道命令错。,特征位进一步规定了本通道命令的意义, 其各特征如下: 数据链特征(32 位):当该位为“1”时, 在执行本命令后, 使计数值为 0 并取下一条CCW,下一条CCW(它规定了新的数据主存始址、 特征和计数)继续执行原来的操作。 命令链特征(33 位):该位为“1”时, 当前命令正常结束后, 顺序执行下一条CCW。 在通道程序中,除最后一条CCW外, 每条CCW应指定 32 位为“1”, 或 33 位为“1”。最后一条CCW的所有特征位为“0”时, 表示通道在完成当前命令后自动停止。 禁发长度错特征(34 位):表示对不正确的数据长度不发出错信号。一般地说,如果通道命令给出的字节数与I/O设备所用的字节数不一致,就发出错信号。如果该位置为“1”,则禁止发出出错信号。,跳读特征(35 位): 表示禁止数据传送到内存。 当该位为“1”时,从I/O设备上读出的数据不写入内存,这样就可以跳过一些数据。 程序控制中断特征(36 位):如果该位为“1”, 只要取出CCW并开始操作,则通道就向CPU发中断信号。 (4) 字节计数(4863 位):规定了数据区的字节数。数据主存始址和字节计数这两个字段主要用于数据传送类命令。,2. 通道地址字和通道状态字 在通道进行输入/输出操作期间,要访问两个固定内存单元:通道地址字(CAW)和通道状态字(CSW)。 通道地址字的格式如下:,0 3 4 7 8 31,通道状态字的格式如下:,0 3 4 7 8 31 32 39 40 47 48 63,其中: 钥通道访问主存时所用的保护钥, 它由CAW的前4位送来; 下一条CCW地址通道命令计数,每当一条CCW执行完毕,该地址自动加“8”,指向下一条CCW; 设备状态记录设备状态的字节; 通道状态记录通道状态的字节; 剩余计数上一条CCW执行结束后, 剩余数据的字节数。,图 6.10 设备状态字节和通道状态字节 (a) 设备状态字节; (b) 通道状态字节,6.2.4 CPU和通道间的通讯,1. 输入/输出指令,例如, 某系统中输入输出类指令主要有: SIO, TIO, HIO, TCH。 所有I/O指令都具有如下格式:,由(B1)+D1形成的地址指出通道号和设备号的存放单元,该单元的内容为:,SIO(START I/O):用于启动指定通道和设备开始工作,SIO指令发出后,根据通道和设备状态建立结果特征,即条件码。 CPU根据执行结果建立的条件码得知此次启动是否成功,再确定下一步的动作。 TIO(TEST I/O):用以检查I/O操作是否完成,建立相应的条件码。 HIO(HALT I/O):强行停止通道和I/O设备正在执行的操作。 TCH(TEST CHANNEL):测试通道,根据对通道测试的结果建立相应的条件码。,2. CPU和通道间的通讯,图 6.11 CPU启动通道的工作流程,6.3 I/O系统的软件组织,6.3.1 I/O软件设计的目标,I/O软件设计的第一个目标是设备无关性。其含义就是使程序员写出的软件无需任何修改便能读出软盘、硬盘以及CD-ROM等不同设备上的文件, 而与具体设备无关。 例如,用户可以简单地输入如下命令: sortoutput 就能够从各种设备上获得输入,包括软盘、硬盘或键盘,同时将输出送到各种不同的设备上,例如,软盘、硬盘甚至是屏幕。 不同设备之间的差异由操作系统去处理,操作系统会调用不同的设备驱动程序来真正地将输入数据写到输出设备上。,I/O软件设计的第二个目标是错误处理。 I/O软件设计的第三个目标是同步/异步传输。 I/O软件设计的第四个目标是必须能处理独占设备和共享设备的I/O操作。 为实现以上四个目标, I/O系统应组织成以下四个层次: (1) 中断处理程序; (2) 设备驱动程序; (3) 与设备无关的I/O软件; (4) 用户空间的I/O软件。,6.3.2 中断处理程序 中断处理程序位于I/O系统的最低层。当进程需要进行I/O操作时,操作系统应将该进程挂起,即进入阻塞,直至I/O操作结束并发生中断。 当中断发生时,中断处理程序执行相应的操作,以解除相应进程的阻塞状态。,6.3.3 设备驱动程序,设备驱动程序包括了所有与设备有关的代码。每一个设备驱动程序只处理一种设备或者一类密切相关的设备。 设备驱动程序的功能是从与设备无关的软件中接收抽象的请求,并执行该请求。例如,读磁盘上的第n块。如果请求到来时,驱动程序空闲,则它立即执行该请求; 但如果它正在处理另一请求, 则它将该请求挂在一个等待队列中。,执行一条I/O请求的第一步,是将该请求转换成更具体的形式。例如,对磁盘驱动程序,它包括:计算所请求的块n的物理地址,检查驱动电机是否在转,检测存取臂是否定位在正确的柱面。 总之, 它必须确定需要哪些控制器命令以及命令的执行次序。一旦决定应向控制器发送什么命令,驱动程序就向控制器中的设备寄存器写入这些命令。 某些控制器一次只能处理一条命令, 另一些则可以接收一串命令并自动进行处理。,6.3.4 与设备无关的I/O软件,现以块设备为例, 与设备无关的I/O软件的主要功能包括: 设备命名。 (2) 设备保护。 (3) 与设备无关的块大小。 (4) 数据缓冲。 (5) 数据块的分配。 (6) 对独占设备的分配与释放。 (7) 错误处理。,6.3.5 用户空间的I/O软件,尽管大部分I/O软件属于操作系统,但是也有一小部分是与用户程序链接在一起的库例程,甚至是在核心外运行的完整程序。 系统调用, 包括I/O系统调用,通常是库例程调用。在如下C语句: count=write(fd, buffer, nbyte); 中, 所调用的库函数write( )将与用户程序链接在一起, 并包含在运行时的二进制代码中。这一类库例程显然也是I/O系统的一部分。标准I/O库包含相当多涉及I/O的库例程,它们作为用户程序的一部分运行。,6.3.6 I/O系统软件的层次结构,图 6.12 I/O系统的层次结构,6.4 缓 冲 技 术,6.4.1 单缓冲,图 6.13 无缓冲与单缓冲 (a) 无缓冲;(b) 单缓冲,6.4.2 双缓冲,图 6.14 双缓冲,6.4.3 缓冲池,1. 缓冲池的组成,对于既可用于输入又可用于输出的公用缓冲池, 其中至少应包含以下三种类型的缓冲区: 空闲缓冲区; 装满输入数据的缓冲区; 装满输出数据的缓冲区。为了管理方便,可将相同类型的缓冲区链成一个队列。于是,可形成以下三个队列: (1) 空缓冲区队列emq: 由空缓冲区所链成的队列; (2) 输入队列inq: 由装满输入数据的缓冲区所链成的队列; (3) 输出队列outq: 由装满输出数据的缓冲区所链成的队列。,除了上述三个队列外,还应具有四种工作缓冲区: (1) 用于收容输入数据的工作缓冲区; (2) 用于提取输入数据的工作缓冲区; (3) 用于收容输出数据的工作缓冲区; (4)用于提取输出数据的工作缓冲区。,2. 缓冲池管理的基本操作 对缓冲池管理提供两个基本操作(过程): (1) getbuf(type):用于从type所指定的队列的队首, 摘下一个缓冲区; (2) putbuf(type,number):用于将用参数number所指示的缓冲区, 挂在type队列上。,3. 缓冲池的工作方式,图 6.15 缓冲池的工作方式,6.4.4 预先读与延迟写,1. 预先读 操作系统读块设备时,一般通过同步方式把一指定的数据块读入缓冲区,此时用户进程不得不进入阻塞状态,等待数据传输的结束。为了加快进程的推进速度,提高CPU和块设备工作的并行程度,最好在使用某一块之前,用异步方式提早把它读入缓冲区。当用户进程实际需要该块数据时,可以立即从缓冲区取走而无需等待。 这种技术称为预先读。,2. 延迟写 当块设备进行输出时,如果某一缓冲区只写了一部分,则不要急于把该缓冲区的内容写到块设备上,而是把写块操作推迟到某个适当的时机进行。那么什么是适当的时机呢?一般有两个:其一是延迟写的缓冲区被写满时,其二是该缓冲区被重新分配时。,6.5 磁盘的驱动调度,磁盘的驱动调度是先进行移臂(移动存取臂)调度,再进行旋转调度。例如,某一时刻对磁盘的输入/输出请求序列是:,柱面(CC) 磁道(HH) 物理记录R 7 4 1 7 4 8 7 4 5 40 6 4 2 7 7,进一步考查 7 号柱面上的三个输入/输出请求。 按上述次序,磁盘需旋转近两周才能完成访问。若将输入/输出请求按照下列的次序完成访问:,柱面(CC) 磁道(HH) 物理记录R 7 4 1 7 4 5 7 4 8,移臂调度算法有: (1) 先来先服务算法(FCFS)。先来先服务调度算法是最简单的一种方法,它按照输入/输出请求到达的顺序, 逐一完成访问请求。 (2) 最短查找时间优先法(SSTF)。这种算法总是先完成距当前存取臂距离最近的柱面上的输入/输出请求。 (3) 扫描法(SCAN)。由于请求序列具有动态性质,所以可采用扫描法。存取臂从磁盘的一端出发, 向另一端移动,遇到需要访问的柱面就完成访问请求,直至到达磁盘的另一端。到达另一端后,存取臂移动方向就倒转过来,继续完成这一方向上的访问请求。,图 6.16 电梯调度算法流程,6.6 设备分配程序,6.6.1 设备分配的数据结构,在配置有通道的计算机系统中,设备分配程序至少应解决以下三个问题: (1) 是否有能用来为I/O请求提供的通路? (2) 是否有一条以上的通路可用? (3) 如果当前尚无通路可用, 那么通路何时才能空闲?,图 6.17 设备管理中的三种控制块,图 6.18 UCB和PCB的连接,图 6.19 UCB, CUCB, CCB间的连接,图 6.20 系统设备表与UCB的关系,对于所请求的I/O设备,根据上述的查找方法,可能出现三种情况: (1) 对于所请求的I/O设备, 仅有一条通路可用, 例如: 通道B控制器C设备E。 (2) 对于所请求的I/O设备,可以找到一条以上的可用通路, 例如上例中,最多可找出四条可用通路: 通道A控制器C设备E 通道A控制器D设备E 通道B控制器C设备E 通道B控制器D设备E,(3) 对于所请求的I/O设备, 没有一条可用的通路。,6.6.2 I/O调度程序,在多进程的系统中,由于进程数多于设备数,就必然要引起进程对资源的争夺。为使系统有条不紊地工作,系统必须具有一套合理的设备分配原则。 这些原则与下述的四个因素有关: I/O设备的固有属性 2) I/O设备的分配算法 先请求先服务。 (2) 优先级高者优先。 3) 设备分配的安全性 4) 与设备的无关性,6.6.3 设备分配的实施,1. 单通路I/O系统的设备分配 在单通路I/O系统中, 按如下步骤实施设备分配: 分配设备。 (2) 分配控制器。 (3) 分配通道。,2. 多通路I/O系统的设备分配,假定某进程n向系统提出I/O请求,要求为它分配一台I/O设备。于是系统可选取该类设备中的任何一台设备分配给该进程。其步骤如下: (1) 根据要求I/O的进程n所提供的设备类型, 检索SDT表,找到第一个该类物理设备的UCB,由状态信息可知其忙闲情况。若忙, 则检查第二个物理设备的UCB。若该类型的全部设备都处于忙碌状态, 表明该类设备已分配完毕。进程n的此次I/O请求无法满足, 只好把进程n插入到等待该类设备的队列中。 只要在该类设备中有一个空闲设备,系统便可对其计算分配该设备给进程n的安全性。 若安全,则把设备分配给进程n,否则将其插入该类设备的等待队列。,(2) 当系统把第i个设备分配给进程n后,便可通过检查与此设备相连的第一个CUCB,而得知该控制器是否忙碌;若忙, 再检查第二个CUCB表。若与此设备相连的所有的控制器都忙,则表明无控制器可分配给设备i。只要设备i不是该类设备中的最后一个,便可返回到步骤(1),试图再找下一个空闲设备;否则,仍将该进程插入控制器等待队列中。,(3) 若有空闲的控制器,便可进一步检查与此控制器相连的第一个通道是否忙碌。若忙,再查看第二个CCB表,若与此控制器相连的全部通道都忙,表明无通道可分配给控制器j。只要控制器j不是该设备i的最后一个控制器,便返回到步骤(2),试图找出一个空闲的控制器,否则,将该进程插入通道等待队列。 若有空闲通道可用,则此次设备分配成功,将相应的设备、控制器和通道分配给进程n,接着便可启动I/O设备,开始信息传送。 多通路I/O系统设备分配的流程示于图 6.21。,图 6.21 设备分配流程图,图 6.22 I/O系统概貌,1. I/O系统概貌,6.7.1 I/O系统的结构,6.7 Windows NT的I/O系统,NT执行体的I/O系统接收用户态和核心态进程的I/O请求, 以不同的方式传送到I/O设备。I/O系统由一组负责处理各种设备的输入/输出部件构成。 这些部件有: (1) I/O管理程序; (2) 文件系统; (3) 缓冲存储管理器(Cache Manager); (4) 设备驱动程序(Device Driver); (5) 网络转发程序(NetWork Redirector)和网络服务程序(Network Server)。,2. I/O管理程序 I/O管理程序建立了NT执行体的I/O模型,它实现与设备无关

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论