第08章 输入输出管理_第1页
第08章 输入输出管理_第2页
第08章 输入输出管理_第3页
第08章 输入输出管理_第4页
第08章 输入输出管理_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

1、1第八章 I/O管理28.1I/O管理概念8.1.1 引言 存储设备存储设备:用来存放各种信息的设备称为存储设备,例如,软盘、硬盘、光盘和磁带等; I/O设备设备:用来向计算机输入和输出信息的设备,如键盘、鼠标、显示器、打印机等。 在现代计算机系统中有些设备既可以做存储设备,也可以做I/O设备,例如,软盘、硬盘等。 I/O管理就是设备管理,它是操作系统的一个重要的组成部分,负责管理系统中所有的外部设备。38.1.1 引言计算机外部设备种类繁多,特性各异。主要表现在以下几个方面:1.速度 不同的外部设备的传输速度的差别相当大,如键盘的传输速度不过几十,上百个字符,而磁盘的传输速度则是60万字节/

2、每秒。2.传输单位 有的设备的传输单位是字节,如键盘、打印机、显示器; 有的传输单位是字符块,如软盘、硬盘、磁带等; 有的传输单位是位,如个人计算机中的Serial Port(s) COM1、COM248.1.1 引言3.顺序或随机访问 按记录顺序访问,或对随机记录提供传输服务。4.出错条件 不同的设备,其出错条件也不相同,即数据传输失败的原因各种各样,如打印机有缺纸错,磁盘I/O有奇偶校验错等。58.1.1 引言设计目标:1.字符代码的独立性; 现在使用的ASCII码(美国信息交换标准码)2.设备独立性;3.效率;4.设备处理的一致性;68.1.2 I/O管理功能1.状态跟踪状态跟踪 设备控

3、制块是存放设备管理和控制信息的数据结构。 系统要掌握设备的状态。2.设备存取设备存取实现对设备的存取操作。3.设备分配设备分配 在多用户的环境下,负责设备的分配和回收。4.设备控制设备控制 设备控制包括设备的驱动、完成和故障中断处理。78.1.3 设备独立性一、设备独立性的概念一、设备独立性的概念 设备独立性是指用户在编程序时所使用的设备与实际设备独立性是指用户在编程序时所使用的设备与实际设备无关,也就是在用户程序中使用逻辑设备。设备无关,也就是在用户程序中使用逻辑设备。两类设备独立性:1. 一个程序应独立于分配给它的某种类型的具体设备。即在用户程序中只指明I/O使用的设备类型即可。如在系统中

4、配备了两台打印机,用户要打印时只要告诉系统要将信息送到打印机即可。2. 程序要尽可能地与它使用的设备类型无关。即在用户程序中只要指出要输入或输出信息,至于信息I/O使用的设备不需用户指明。88.1.3 设备独立性二、设备独立性的实现二、设备独立性的实现一般通过软通道软通道实现设备独立性fd=open(“/dev/lp”,O_WRONLY);.number=write(fd,buf,count); 在UNIX系统中,把设备与文件统一处理,这比前两种设备独立性又前进了一步,对于用户来说,就没有设备的概念。程序空间变量buf逻辑设备名fd物理设备名“/dev/lp”98.1.3 设备独立性三、设备独

5、立性的优点三、设备独立性的优点1.方便用户编程;2.使程序运行不受具体的机器环境的限制,如UNIX系统环境下,系统提供标准输入和输出,在用户程序中的输入输出都使用这两个标准的I/O,实际运行时,根据具体情况而定。 如果配备打印机,则将输出信息送到打印机打印,如果没有配备打印机,就把输出重定向到某个指定文件,把要打印的信息送到该文件中。3.便于程序移植;108.1.4 设备控制块一、设备控制块(UNIX设备表) 设备控制块是设备管理的数据结构,用来存放设备的管理和控制信息,每类设备有一个设备控制块。Page229图8.15118.1.4 设备控制块二、设备转换表(UNIX设备开关表) 设备开关表

6、存放设备驱动和控制程序入口地址。128.2 缓冲技术8.2.1 概述 CPU与各种外部设备的速度上的差异很大,设备与设备之间的速度的差异也很大。 系统有时会产生大量的数据需要I/O,有时又会很长时间没有I/O ,造成I/O负荷的不均匀。 要解决这两个方面的问题就要引入缓冲的概念。 缓冲是用来在两种不同速度的设备之间传输信息时平滑传输过程的常用手段。例如匹配CPU与设备之间速度差异和负荷的不均匀。常用的缓冲技术有三种:双缓冲、环形缓冲、缓冲池双缓冲、环形缓冲、缓冲池138.2.2 双缓冲 系统设置两个缓冲区,BUF1和BUF2,各进程使用这两个缓冲区。这种缓冲技术是最简单的,用于低频度I/O活动

7、的系统。工作过程:首先输入将数据送入BUF1,然后,申请BUF2,在向BUF2输入数据的同时,输出进程可从BUF1中取数据;同理,向BUF1输入与从BUF2中取数据可以并行。见P203图8.2148.2.3 环形缓冲 在系统中设置若干缓冲区,并把这些缓冲区链接起来,这样若干个缓冲区就形成了一个环,故称环形缓冲区。158.2.3 环形缓冲环形缓冲技术使用 设置一个输入指针in、一个输出指针out、开始指针strat。系统初始时,strat=in=out。输入时,要判断in是否与out相等,若相等,则要等待。否则,将信息送入in指向的缓冲区,填满后,将缓冲区中的指向下一个缓冲区的指针next置in

8、,如此类推。 输出时,首先判断out=in,若相等,则等待(意味着系统中没有数据可取)。否则,取出缓冲区中的信息,将缓冲区中的next置out; 168.2.4 缓冲池 系统设置多个缓冲区,形成一个缓冲池。这个池中的缓冲区为系统中所有的进程共享使用。例如,UNIX系统中,在块设备管理中设置了一个15个缓冲区组成的缓冲池。见P204图8.3处理机(用户程序)输出文件队列输入文件队列装入队列出空队列输出设备输入设备后备队列(缓冲池)178.3 设备分配8.3.1 分配原则一、静态分配和动态分配一、静态分配和动态分配1 1、静态分配、静态分配 当一个作业(或进程)运行时,根据作业要求的设备,系统如果

9、能满足,则将其要求的设备全部分配给它,然后开始运行,运行完成释放其占用的所有设备。 这种分配方式的优点是系统绝不会出现死锁,缺点是设备利用率太低。2 2、动态分配、动态分配 这种分配方法是在作业(或进程)运行的过程中,需要使用设备时,就向系统申请,系统根据某种分配原则进行分配。 这种方法的优点是设备的利用率高,缺点是系统有出现死锁的可能。188.3 设备分配8.3.1 分配原则二、设备分配算法二、设备分配算法1、先来先服务算法2、优先级高者优先三、设备分配的安全性三、设备分配的安全性 设备分配应避免死锁。 对于独占设备对于独占设备,不论采用静态分配还是采用动态分配都不会出现死锁。 对于共享设备

10、对于共享设备,采用动态分配有可能造成死锁。 独享分配、共享分配、虚拟分配198.3 设备分配8.3.2 独享分配 输入机 行式打印机 磁带机 绘图仪 独享分配主要针对慢设备,设备在不同作业间切换时间过长,208.3 设备分配8.3.3 共享分配 磁盘 磁鼓快速直接存取设备的共享分配 介质共享 磁盘驱动器共享 通道共享21主机8.3 设备分配8.3.4 虚拟分配虚拟分配是一种独占设备的优化管理方法。Spool(假脱机系统)(与主机脱机和通道联机)I/O通道独占设备输入/输出井用户进程预输入程序缓输出程序井管理程序228.4 I/O控制8.4.1 I/O控制方式一、循环测试一、循环测试I/O方式(

11、轮询)方式(轮询) 早期的设备控制方式采用,主机处理器运行用户程序同时需要不断的测试设备状态。二、二、I/O中断方式中断方式 为了提高CPU和设备的利用率,就应使CPU与设备并行工作,采用I/O中断方式。采用这种方式要求控制寄存器中有一个中断位。主机CPU在用户程序I/O期间可以运行其他用户进程,该I/O进程完成I/O后发中断请求主机干预。238.4 I/O控制8.4.1 I/O控制方式在I/O中断方式下,数据的输入(或输出)步骤如下:1.要求输入数据的进程把一个启动命令和允许中断位“1”写入相应设备的控制状态寄存器中,从而启动了该设备;2.该进程因等待输入的完成进入睡眠状态,主机CPU运行其

12、他进程;3.当输入完成后,输入设备向CPU发出完成中断请求信号;4.处理机响应中断,处理该中断,并唤醒等待输入完成的进程入就绪;5.在以后的某个时期,该程序被调度到后,继续运行。248.4 I/O控制8.4.1 I/O控制方式 这种方式的优点是大大地提高了CPU的利用效率,I/O过程不用CPU全程干预, CPU可以并行执行其他进程。 缺点是如果系统中配备了多台(套)设备, I/O缓冲寄存器容量不足时,会引发CPU的频繁中断干预,CPU的利用率也会降低,解决的方法是采用通道技术。258.4 I/O控制8.4.1 I/O控制方式三、通道三、通道 通道是计算机系统中专门用于I/O的处理机。在大、中、

13、小型计算机中一般称为通道,结构如右图所示。主机CPU只需在传输开始、结束时干预。通道类型:通道类型:字节多路(键盘) 数组选择(磁盘) 数组多路(磁带) 268.4 I/O控制8.4.1 I/O控制方式通道的连接通道的连接: (多通路交叉连接)278.4 I/O控制8.4.1 I/O控制方式四、四、DMA DMA是针对PC机高速随机存储设备(硬盘)的专用通道专用通道。DMA方式要求CPU执行设备驱动程序启动设备启动设备,给出存放数据的内存起始地址内存起始地址以及操作方式操作方式和传送字节数传送字节数等;而通道方式则在CPU发出I/O启动命令后,由通道指令来完成这些工作。 DMA相对通道硬件成本

14、低,I/O过程中主机CPU的干预较一般通道频繁。288.4.2 I/O子系统一、设备接口1.块设备接口;2.主存映射接口;3.字符流设备接口;4.网络套接字接口;298.4.2 I/O子系统二、I/O子系统功能 控制设备I/O工作的核心模块通常称为设备驱动程序。它包括三个方面的功能:1.解释用户I/O命令2.设备驱动3.中断处理 308.4.2 I/O子系统三、调用I/O核心模块的方式1.将I/O系统调用转换成I/O控制器认识的命令形式后执行I/O。2.使用文件系统的功能调用实现设备的读、写操作。318.4.3 I/O控制过程 接受用户的I/O请求命令,并把用户的请求转换成I/O请求块,挂到相

15、应设备的I/O请求队列。 每类设备有一个I/O请求队列,在系统初始化时,将系统中所有设备的I/O请求队列置为空。在系统初启时,系统为每类设备创建一个进程,执行程序就是该设备的设备驱动程序。由于系统初启时,相应的I/O请求队列为空,则在该队列上睡眠。 一旦有I/O请求块挂入,唤醒该设备驱动进程。它被调度到时,从队列中取出一个I/O请求块,并按该块的内容执行一次I/O操作,发出I/O完成(或出错)中断信号。然后,检查请求队,若为空,则进入睡眠状态,否则,取下一个请求块。328.4.3 I/O控制过程338.5 UNIX系统的设备管理两种设备类型1.块设备 以字符块(一般情况下是512字节)为基本I

16、/O单位的设备称为块设备,如磁盘、磁带、光盘等;2.字符设备 以字符为基本I/O单位的设备称为字符设备。348.5 UNIX系统的设备管理8.5.1 UNIX系统设备管理的特点1.外部设备看作文件,由文件系统统一处理;2.系统设备配置改变灵活、方便;3.有效地使用了块设备缓冲技术,大大地提高了块设备存取操作的速度。358.5.2 UNIX设备驱动程序接口中断向量表368.5.3 设备管理数据结构1.主设备号和次设备号 在系统内部使用的设备名称为设备号。它由两个部分组成,主设备号和次设备号。主设备号:设备的类型编号;次设备号:同类设备的设备台号。如图8.11378.5.3 设备管理数据结构2.设

17、备开关表 (设备转换表) 给出设备驱动程序入口地址,一种设备一个表例如:字符设备开关表 struct cdevsw int (*d_open)(); int (*d_close)(); int (*d_read)(); int (*d_write)(); int (*d_sgtty)(); cdevsw;388.5.3 设备管理数据结构3.设备表(设备控制块)记录设备的硬件特性、连接和使用情况等信息。块设备表struct devtab char d_active; /* 执行一个I/O请求的标志 */ char d_errcnt; /* 出错计数器 */ struct buf *b_forw;

18、 /* 设备缓冲队列前指针 */ struct buf *b_back; /* 设备缓冲队列后指针 */ struct buf *b_actf; /* I/O请求队列头指针 */ struct buf *b_actl; /* I/O请求队列尾指针 */ bdevsw;398.5.3 设备管理数据结构3.设备管理数据结构的关系408.5.4 UNIX缓冲区管理一、缓冲区结构 在UNIX系统中采用缓冲池的缓冲技术,系统中设置一个有15个缓冲区的缓冲池。每个缓冲区占514个字节,其中512个字节用来存放数据,2个字节用作校验用。 为了管理缓冲区,系统还设置了一个数据结构,称为缓冲区首部,其结构如下:

19、418.5.4 UNIX缓冲区管理一、缓冲区结构struct buf int b_flags; /* 标志 */ struct buf *b_forw; /* 设备缓冲队列前指针 */ struct buf *b_back; /* 设备缓冲队列后指针 */ struct buf *av_forw; /* 空闲缓冲队列前指针 */ struct buf *ac_back; /* 空闲缓冲队列后指针 */ int b_dev; /* 设备号 */ int b_wcount; /* 请求传送的字节数 */ char *b_addr; /* 缓冲区的首地址 */ char *b_blkno; /* 设

20、备的物理块号 */ char b_error; /* 出错信息 */ char *b_resid; /* 出错时尚末传送的剩余字数 */ bufNBUF;428.5.4 UNIX缓冲区管理一、缓冲区结构b_flags包括:B_WRITE 写(将信息写到磁盘上去)B_READ 读(从磁盘上读取信息到缓冲区中)B_DONE I/O操作结束B_ERROR 因I/O出错而中止B_BUSY 相应的缓冲区正在使用中B_WANTED 有进程正在等待使用该buf,清B_BUSY 时要唤 醒这种进程B_ASYNC 异步I/O标志B_DELWRI 延迟写,在相应缓存移作它用时,要将缓存中 的内容写到相应的磁盘块中

21、。438.5.4 UNIX缓冲区管理二、空闲缓冲队列和设备缓冲队列1.空闲缓冲区队列 当系统中某个进程释放缓冲区时,将释放的缓冲区的buf挂到该队列的队尾。分配缓冲区是从该队列队首取出一个buf,分配给申请者。448.5.4 UNIX缓冲区管理二、空闲缓冲队列和设备缓冲队列2.设备缓冲区队列 当某个设备使用缓冲区时,将该缓冲区的buf挂入到相应的设备缓冲队列,并且一直保留在该队列中,直至该缓冲区分配给其它设备为止。这种处理的目的是让缓冲区中的信息尽可能长时间地保留在缓冲区中,以便以后重用。458.5.4 UNIX缓冲区管理二、空闲缓冲队列和设备缓冲队列设备缓冲队列46三、缓冲区管理算法47三、

22、缓冲区管理算法1.读操作的过程 以读的磁盘块号和设备号找到相应的设备缓冲队列;若已读过(缓冲区中仍保存已读的磁盘块),则把缓冲区的内容复制到用户指定的内存中;(假读) 若相应设备缓冲队列中无,说明没有读过,则申请一个空闲缓冲区,作读磁盘块的操作,然后,把读入缓冲区中的内存复制到用户指定的内存区中;(真读) 释放缓冲区,把释放的缓冲区挂到空闲缓冲区队列的尾部。48三、缓冲区管理算法2.写操作 以用户申请的写的磁盘块号和设备号查相应设备的缓冲队列; 找到相应的块(原来写过),则将该缓冲区从空闲缓冲队列中摘出,将指定内存的内容写到缓冲区中;若写满缓冲区,则将该缓冲区的内容写到磁盘中去,然后,释放缓冲

23、区,若没有写满一个缓冲区,则将缓冲区置为延迟写标志,并释放该缓冲区。 若没有找到,则申请一个空闲的缓冲区,操作同前。49四、缓冲队列的初始状态缓冲区管理的初始化:1.空闲缓冲区队列2.设备缓冲队列,每类设备都有一个设备缓冲区队列。 按UNIX系统的规定,每个空闲缓冲区同时要存在于两个队列中,空闲缓冲队列和某个设备缓冲队列(也有的系统在实现时,不设设备缓冲队列,而是设置一个全系统的设备缓冲的散列)。 为了保证上述规定,在系统初启时,系统设置了一个特别设备,NODEV。50四、缓冲队列的初始状态51五、缓冲区分配与释放 缓冲区的分配总是先查相应的设备缓冲队列,若存在于设备缓冲队列中,说明该缓冲区中

24、的内容已经有用户使用过,可重复使用,减少物理读、写磁盘的物理操作,加快I/O的速度。 释放一个缓冲区时,把释放的缓冲区首部插入空闲缓冲队列的尾部,同时仍然留在相应的设备缓冲队列中。 缓冲区的分配和释放有五种情况。52五、缓冲区分配与释放1.用户申请读(或写)的块在某个设备缓冲队列中(散列中),且该缓冲区空闲。 把buf中的b_flags置为“忙”,并将该缓冲首部从空闲缓冲队列中摘出。 使用缓冲区中的信息: 用户要求读:则把缓冲区中的内容复制到用户指定的内存中;释放该缓冲区,即将其buf 挂到空闲缓冲队列尾; 用户要求写:则把用户指定的内容写到缓冲区中,缓冲区满,则把其内容写到磁盘上,然后释放;

25、没有写满,则把b_flags置延迟写,释放该磁盘块。53五、缓冲区分配与释放2.设备缓冲队列中没有找到申请的块,因此,要为申请者分配一个空闲的缓冲区。 从空闲缓冲队列的队首取出一个空闲的缓冲区,并且b_flags中“延迟写” 的标志没有置上。 把该缓冲区的buf从原设备缓冲队列中移人申请的设备缓冲队列。 使用该缓冲区: 读操作:把申请的磁盘块读入缓冲区,然后,释放该缓冲区; 写操作:把申请指定的内容写入缓冲区中,写满则写到相应设备中去,否则,b_flags置上“延迟写”的标志,然后释放该缓冲区。” 54五、缓冲区分配与释放3.设备缓冲队列中没有找到申请的块,因此,要为申请者分配一个空闲的缓冲区,但b_flags有“延迟写”的标志。 把该缓冲区的buf从空闲缓冲队列中摘去,然后以异步写的方式把缓冲区中的内容写到设备上去,去掉“延迟写”标志,将其挂到空闲缓冲队列的头部。 继续取空闲缓冲队列中的空闲缓冲区,直到,找到一个没有“延迟写”写标志的空闲缓冲区为止。然后作读(或写)操作。4.没有空闲缓冲区,在等待空闲缓冲区事件上睡眠。5.多个进程共享某个缓冲区 例如:A进程申请的缓冲区 “忙”,即B进程正在

温馨提示

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

评论

0/150

提交评论