计算机操作系统教程 课件第8章-IO设备管理_第1页
计算机操作系统教程 课件第8章-IO设备管理_第2页
计算机操作系统教程 课件第8章-IO设备管理_第3页
计算机操作系统教程 课件第8章-IO设备管理_第4页
计算机操作系统教程 课件第8章-IO设备管理_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

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

文档简介

计算机操作系统ComputerOperatingSystems第八章

设备管理第八章设备管理132I/O系统设备分配磁盘存储设备4缓冲管理在现代计算机系统中,有大量的输入输出设备,其种类繁多,差异大。而且随着技术的发展,新设备也不断地出现。因此,如何管理好这些设备,使资源得以合理的利用,是操作系统的一个主要功能。I/O设备种类繁多第八章设备管理按交互方向分类:输入设备:键盘、鼠标、扫描仪;输出设备:显示器、打印机;输入/输出:磁盘、网卡。8.1I/O系统8.1.1I/O设备的类型按数据组织分类:块设备:以数据块作为信息的存储和传输单位,每个数据块都有一个地址,数据块之间的读写操作是相互独立的,如硬盘字符设备:以字符作为信息存储和传输单位,数据即字符流,无定位无寻址,如鼠标、键盘8.1.1I/O设备的类型8.1.1I/O设备的类型按传输速率分类

低速设备——几个~数百个B/S

中速设备——数K~数十KB/S

高速设备——数百K~数MB/S8.1.1I/O设备的类型按设备的共享属性分类

独占设备——一段时间内只允许一个用户(进 程)访问的设备。

共享设备——一段时间内允许多个进程同时访问

的设备。

虚拟设备——通过虚拟技术将一台独占设备变换

为若干台逻辑设备。有了I/O设备,是否就能完成I/O功能呢?各种I/O设备千奇百怪,能否有一个统一的硬件访问接口呢?8.1I/O系统标准接口?设备控制器机械部分电子部分一个I/O单元由两部分组成:机械部分和电子部分(设备控制器或适配器)。

每个设备控制器都有一些寄存器用来与CPU通信。通过往这些寄存器中写入不同的值,OS能命令该设备去执行发送数据、接收数据、打开、关闭等操作;OS也能通过读取这些寄存器的值来了解设备的当前状态。此外,许多控制器还有一个数据缓冲区供OS读写。CPU外部设备控制逻辑电路控制寄存器状态寄存器数据寄存器8.1.2I/O接口设备控制器的功能

接收和识别命令

数据交换

设备状态的了解和报告设备控制器的组成I/O独立编址基本思路:给控制器中的每一个寄存器分配一个唯一的I/O端口(I/Oport)编号,称为I/O端口地址,然后用专门的I/O指令对端口进行操作;这些端口地址所构成的

地址空间是完全独立的,

与内存的地址空间没有

关系。例如:INR0[4]

表示读入I/O

端口地址为4的内容;

MOVR0[4]

表示读入

内存地址为4的内容;Linux0.11/boot/setup.smoval,#0x11!initializationsequenceout#0x20,al!senditto8259A-1moval,#0x20!startofhardwareint's(0x20)

out#0x21,almoval,#0x28!startofhardwareint's(0x28)out#0xA1,al……inal,#0x64

!8042statusport

!键盘控制器状态寄存器testal,#2jnzempty_8042!isinputbufferfull?内存映像编址基本思路:把所有控制器中的每个寄存器都映射为一个物理内存地址,专门用于I/O操作(功能上),对这些单元的读写操作即为普通的内存访问操作。端口地址空间与物理内存的地址空间统一编址,前者是后者的一部分,一般位于后者的顶端部分。I/O通道I/O通道(I/OChannel)设备的引入

问题:虽然在CPU与I/O设备之间增加了设备控制器,大大减少了CPU对I/O过程的干预,但当主机所配置的外设很多时,CPU的负担仍然很重。

解决方法:在CPU和设备控制器之间增设了通道。

目的:是原来由CPU处理的I/O任务转给通道承担,使CPU从繁杂deI/O任务中解脱出来。I/O通道

实际上,I/O通道是一种特殊的处理机。它具有执行I/O指令的能力,并通过执行通道(I/O)程序来控制I/O操作。但I/O通道又与一般的处理机不同,主要表现在以下两个方面:

一是其指令类型单一,这是由于通道硬件比较简单,其所能执行的命令,主要局限于与I/O操作有关的指令;再就是通道没有自己的内存,通道所执行的通道程序是放在主机的内存中的,换言之,是通道与CPU共享内存。

“瓶颈”问题图5-4单通路I/O系统

“瓶颈”问题程序I/O方式(ProgrammedI/O)中断驱动方式(Interrupt-drivenI/O)直接内存访问方式(DMA,DirectMemory

Access)8.1.3I/O控制方式小宝宝在家吃饭如果宝宝的嘴巴没空(如上一口饭菜尚未吃完),循环等待装一勺饭菜,喂到宝宝嘴里重复上述步骤程序I/O方式基本思路:在程序(设备驱动程序)中通过不断地检测I/O设备的当前状态,来控制I/O操作的完成。具体来说,在进行I/O操作之前,要循环地检测设备是否就绪;在I/O操作进行之中,要循环地检测设备是否已完成。从硬件来说,控制I/O的所有工作均由CPU来完成。也称为繁忙等待方式(busywaiting)或轮询方式

(polling)。程序I/O方式一个例子已知I/O地址采用内存映像编址的方式,现需要在打印机上打印一个字符串“ABCDEFGH”。基本思路:把这8个字符逐个送到打印机设备的I/O端口地址(内存地址)。…ABCDEFGH内存pprinter_status_regprinter_data_registerfor(i=0;i<count;i++)

{

while(*printer_status_reg!=READY);*printer_data_register=p[i];

}while(饭未吃完)

{

while(宝宝的嘴巴没空)等待;装一勺饭菜,喂到宝宝嘴里;

}程序循环检测方式循环检测的控制方法占用了太多的CPU时间,可能会造成CPU时间的浪费。例如:假设打印机的打印速度为100字符/秒,在循环检测方式下,当一个字符被写入到打印机的数据寄存器中后,CPU需要等待10毫秒才能写入下一个字符。一种解决的办法:中断驱动的控制方式。中断驱动方式宝宝在幼儿园吃饭将饭菜装入每个宝宝的小碗宝宝开始吃饭,老师去做别的事情在吃饭时,宝宝通过举手打断老师老师再为宝宝装一碗饭菜中断驱动方式直接内存访问(DirectMemoryAccess,DMA)方式:在硬件上需要一个DMA控制器。DMA控制器可以直接去访问系统总线,它能代替CPU去指挥I/O设备与内存之间的数据传送。直接内存访问方式DMA控制器的组成

为了实现在主机与控制器之间成块数据的直接交换,必须在DMA控制器中设置如下四类寄存器:

(1)命令/状态寄存器CR。用于接收从CPU发来的I/O命令或有关控制信息,或设备的状态。

(2)内存地址寄存器MAR。在输入时,它存放把数据从设备传送到内存的起始目标地址;在输出时,它存放由内存到设备的内存源地址。

(3)数据寄存器DR。用于暂存从设备到内存,或从内存到设备的数据。

(4)数据计数器DC。存放本次CPU要读或写的字(节)数。I/O通道控制方式1.I/O通道控制方式的引入I/O通道方式是DMA方式的发展,它可进一步减少CPU的干预,即把对一个数据块的读(或写)为单位的干预,减少为对一组数据块的读(或写)及有关的控制和管理为单位的干预。同时,又可实现CPU、通道和I/O设备三者的并行操作,从而更有效地提高整个系统的资源利用率。例如,当CPU要完成一组相关的读(或写)操作及有关控制时,只需向I/O通道发送一条I/O指令,以给出其所要执行的通道程序的首址和要访问的I/O设备,通道接到该指令后,通过执行通道程序便可完成CPU指定的I/O任务。2.通道程序操作码。(2)内存地址。(3)计数。(4)通道程序结束位P。(5)记录结束标志R。操作PR计数内存地址WRITE0080813WRITE001401034WRITE01605830WRITE013002000WRITE002501850WRITE11250720为了管理I/O设备,需要哪一些相关的软件?这些软件各自完成何种功能,相互的关系、组织结构又如何?8.1.4I/O软件用户空间的I/O软件设备独立的系统软件设备驱动程序中断处理程序硬件I/O软件系统的层次I/O设备管理软件的基本思想是采用分层的结构,把各种设备管理软件组织成一系列的层次。低层与硬件特性相关,它把硬件和较高层的软件隔离开来。I/O软件的层次结构设备驱动程序:与具体的设备类型相关的,用来控制设备运行的程序。一般由设备生产商提供。通常是平台相关(如Windows/linux),适合于特定的某个设备(如键盘)或某类设备(如SCSI)每一个I/O设备都需要相应的设备驱动程序,而每一个设备驱动程序一般只能处理一种设备类型。设备驱动程序DeviceDriversRestoftheoperatingsystemDevicedriverDevicedriver...DevicedriverI/OSystemDevicecontrollerDevicecontroller...DevicecontrollerDeviceDeviceDeviceDevice设备独立的I/O软件(I/O子系统)是系统内核的一部分,其任务是实现所有设备都需要的一些通用的I/O功能,并向用户级软件提供一个统一的接口。为什么需要内核的I/O软件?I/O设备的种类繁多、功能各异,需要标准化接口I/O设备不可靠,如存储介质失效或传输错误I/O设备不可预测,且运行速度快慢不一设备独立的I/O软件应用程序开发人员程序/OS的接口操作系统OS/设备驱动的接口设备厂商希望OS提供什么样的接口?键盘、鼠标、显示器、打印机、磁盘、磁带、光驱…421.设备驱动程序的功能(1)接收由I/O进程发来的命令和参数,并将命令中的抽象要求转换为具体要求,例如,将磁盘块号转换为磁盘的盘面、磁道号及扇区号。

(2)检查用户I/O请求的合法性,了解I/O设备的状态,传递有关参数,设置设备的工作方式。43(3)发出I/O命令,如果设备空闲,便立即启动I/O设备去完成指定的I/O操作;如果设备处于忙碌状态,则将请求者的请求块挂在设备队列上等待。

(4)及时响应由控制器或通道发来的中断请求,并根据其中断类型调用相应的中断处理程序进行处理。

(5)对于设置有通道的计算机系统,驱动程序还应能够根据用户的I/O请求,自动地构成通道程序。44

设备驱动程序的处理过程将抽象要求转换为具体要求2.检查I/O请求的合法性3.读出和检查设备的状态4.传送必要的参数5.工作方式的设置6.启动I/O设备45设备独立性1.设备独立性(DeviceIndependence)的概念为了提高OS的可适应性和可扩展性,在现代OS中都毫无例外地实现了设备独立性,也称为设备无关性。其基本含义是:应用程序独立于具体使用的物理设备。为了实现设备独立性而引入了逻辑设备和物理设备这两个概念。在应用程序中,使用逻辑设备名称来请求使用某类设备;而系统在实际执行时,还必须使用物理设备名称。因此,系统须具有将逻辑设备名称转换为某物理设备名称的功能,这非常类似于存储器管理中所介绍的逻辑地址和物理地址的概念。462.设备独立性软件1)执行所有设备的公有操作这些公有操作包括:①对独立设备的分配与回收;②将逻辑设备名映射为物理设备名,进一步可以找到相应物理设备的驱动程序;③对设备进行保护,禁止用户直接访问设备;④缓冲管理,即对字符设备和块设备的缓冲区进行有效的管理,以提高I/O的效率;⑤差错控制。由于在I/O操作中的绝大多数错误都与设备无关,故主要由设备驱动程序处理,而设备独立性软件只处理那些设备驱动程序无法处理的错误。47逻辑设备表2)LUT的设置问题8.2.1缓冲技术概述缓和CPU与I/O设备间速度不匹配的矛盾。(2)减少对CPU的中断频率,放宽对CPU中断响应时间的限制。(3)提高CPU和I/O设备之间的并行性。8.2缓冲管理8.2.2单缓冲和双缓冲1.单缓冲(SingleBuffer)2.双缓冲(DoubleBuffer)538.2.3循环缓冲1.循环缓冲的组成548.4.4缓冲池(BufferPool)

缓冲池的组成

对于既可用于输入又可用于输出的公用缓冲池,其中至少应含有以下三种类型的缓冲区:①空(闲)缓冲区;②装满输入数据的缓冲区;③装满输出数据的缓冲区。为了管理上的方便,可将相同类型的缓冲区链成一个队列,于是可形成以下三个队列:

(1)空缓冲队列emq。

(2)输入队列inq。

(3)输出队列outq。8.3.1设备分配中的数据结构1.设备控制表DCT8.3设备分配2.控制器控制表、通道控制表和系统设备表8.3设备分配8.3.2设备分配时应考虑的因素1.设备的固有属性独享设备。

(2)共享设备。

(3)虚拟设备。2.设备分配算法先来先服务。(2)优先级高者优先。8.3.2设备分配时应考虑的因素3.设备分配中的安全性安全分配方式2)不安全分配方式8.3.2设备分配时应考虑的因素4.设备独立性(DeviceIndependence)

为了提高OS的可适应性和可扩展性,在现代OS中都毫无例外地实现了设备独立性,也称为设备无关性。其基本含义是:应用程序独立于具体使用的物理设备。为了实现设备独立性而引入了逻辑设备和物理设备这两个概念。在应用程序中,使用逻辑设备名称来请求使用某类设备;而系统在实际执行时,还必须使用物理设备名称。因此,系统须具有将逻辑设备名称转换为某物理设备名称的功能,这非常类似于存储器管理中所介绍的逻辑地址和物理地址的概念。8.2.3独占设备的分配程序1.基本的设备分配程序分配设备2)分配控制器3)分配通道8.2.4SPOOLing技术1.什么是SPOOLing

为了缓和CPU的高速性与I/O设备低速性间的矛盾而引入了脱机输入、脱机输出技术。该技术是利用专门的外围控制机,将低速I/O设备上的数据传送到高速磁盘上。利用一道程序,来模拟脱机输入时的外围控制机功能,把低速I/O设备上的数据传送到高速磁盘上;再用另一道程序来模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上。这样,便可在主机的直接控制下,实现脱机输入、输出功能。此时的外围操作与CPU对数据的处理同时进行,我们把这种在联机情况下实现的同时外围操作称为SPOOLing(SimultaneausPeriphernalOperatingOn-Line),或称为假脱机操作。2.SPOOLing系统的组成3.共享打印机

共享打印机技术已被广泛地用于多用户系统和局域网络中。当用户进程请求打印输出时,SPOOLing系统同意为它打印输出,但并不真正立即把打印机分配给该用户进程,而只为它做两件事:①由输出进程在输出井中为之申请一个空闲磁盘块区,并将要打印的数据送入其中;②输出进程再为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将该表挂到请求打印队列上。8.2.4SPOOLing技术SPOOLing系统的特点提高了I/O的速度。(2)将独占设备改造为共享设备。(3)实现了虚拟设备功能。8.2.4SPOOLing技术磁盘的硬件结构:磁盘(软盘和硬盘)由一个或多个金属盘片组成,这些盘片组合固定在一根旋转轴上,由同一个马达驱动。每个盘片有上下两个盘面,在盘面上涂有磁性材料,信息就记录在这些盘面上。在每个盘面上方,都有一个磁头,它固定在一个磁头臂上,而磁头臂又固定在一个传动装置上。通过磁头的读写装置,磁盘上的信息可以被写入、读出和修改。8.4.1磁盘简述8.4磁盘存储器管理8.4.1磁盘简述磁道:当传动装置固定在某个位置时,若盘面旋转一圈,磁头所能访问的圆环区域;柱面:在所有盘面上,半径相同的所有磁道即组成一个柱面;扇区:每一个磁道被划分为若干个扇区;磁盘的访问过程:以扇区作为最小的寻址和存取单位。首先移动传动装置,通过它来移动磁头,从而定位正确的柱面。然后选中相应的磁头,等我们想要的扇区正好路过这个磁头正下方的时候,就可以对它进行访问了。如何写一个字节?读-修改-写

读入包含该字节的扇区;修改该字节;把整个扇区写回到磁盘;参数IBM360-KB软盘WD3000HLFS硬盘柱面数4036,481磁道数∕柱面2255扇区∕磁道963(平均)扇区∕磁盘720586,072,368字节数∕扇区512512磁盘容量360KB300GB柱面定位(相邻)6毫秒0.7毫秒柱面定位(平均)77毫秒4.2毫秒旋转时间200毫秒6毫秒扇区传送时间22毫秒1.4微秒磁盘的访问是以扇区作为最小的寻址和存取单位,在访问一个磁盘扇区时,所需的时间主要有:柱面定位时间:磁头在磁头臂牵引下,移动到指定柱面的机械运动时间;旋转延迟时间:等待指定的扇区旋转到磁头的正下方所需的机械运动时间;它与磁盘转速有关,如:软盘转速可为600rpm(每分钟转速),硬盘可为7,200rpm至10,000rpm;数据传送时间:从指定扇区读写数据的时间。方法1:合理地组织磁盘数据的存储位置。例子:磁盘转速为10,000rpm,每个磁道有300个扇区,每个扇区有512字节,现要读一个150KB的文件。假设柱面定位(平均)时间为6.9毫秒,旋转延迟(平均)时间为旋转时间的一半(3ms),扇区数据传送时间17微秒;(1)文件由同一个磁道上的300个连续扇区构成:(2)文件由300个随机分布的扇区构成:随机分布时的访问时间为连续分布时的187倍。如何提高磁盘访问速度?6.9ms+3ms+6ms=15.9ms;(why?)(6.9ms+3ms+0.017ms)*300=2975.1ms;方法2:磁盘调度。对于大多数磁盘来说,柱面定位时间(磁头移动时间)在访问时间中占主要部分,因此减少平均的柱面定位时间将有效地改进系统的输入输出性能。基本思路:来自不同进程的磁盘访问请求构成一个随机分布的请求队列。磁盘调度的基本思路就是通过对这些I/O请求的执行顺序进行调整,来减少整个请求队列所对应的平均柱面定位时间。磁盘调度算法:磁盘调度程序所采用的算法,如先来先服务、最短定位时间优先、电梯算法等。谁来做这件事情?如何提高磁盘访问速度?硬盘的格式化可分为三个步骤,即低级格式化、分区和高级格式化。低级格式化:标出磁道和扇区,在相邻的扇区之间有狭窄的间隙隔开。一个扇区的格式是:相位编码(preamble)+数据区+纠错码(ECC)。相位编码:以某个特定的位组合模式开始,向硬件表明这是一个新扇区的开始。还包括柱面号、扇区号、扇区大小等类似信息;数据区:由格式化程序确定其大小,一般512;纠错码:包含冗余信息,用来纠正读取错误。磁盘格式化分区:用分区软件把整个硬盘划分为若干个逻辑分区,每个分区可视为一个独立的磁盘。在多数计算机上,用第0个扇区来存放一些系统启动代码和一个分区表,记录了每个分区的起始扇区和大小。高级格式化:对每一个逻辑分区,分别进行一种高级格式化(即通常的格式化操作),生成一个引导块、空闲存储管理结构、根目录和一个空白的文件系统。对不同的分区,可以使用不同的文件系统,如FAT16、FAT32、NTFS等。778.4.2磁盘存储结构8.4磁盘存储器管理781)固定头磁盘这种磁盘在每条磁道上都有一读/写磁头,所有的磁头都被装在一刚性磁臂中。通过这些磁头可访问所有各磁道,并进行并行读/写,有效地提高了磁盘的I/O速度。这种结构的磁盘主要用于大容量磁盘上。

2)移动头磁盘每一个盘面仅配有一个磁头,也被装入磁臂中。为能访问该盘面上的所有磁道,该磁头必须能移动以进行寻道。可见,移动磁头仅能以串行方式读/写,致使其I/O速度较慢;但由于其结构简单,故仍广泛应用于中小型磁盘设备中。798.4.3磁盘访问时间1)寻道时间Ts

这是指把磁臂(磁头)移动到指定磁道上所经历的时间。该时间是启动磁臂的时间s与磁头移动n条磁道所花费的时间之和,即Ts=m×n+s其中,m是一常数,与磁盘驱动器的速度有关,对一般磁盘,m=0.2;对高速磁盘,m≤0.1,磁臂的启动时间约为2ms。这样,对一般的温盘,其寻道时间将随寻道距离的增加而增大,大体上是5~30ms。802)旋转延迟时间Tτ

这是指定扇区移动到磁头下面所经历的时间。对于硬盘,典型的旋转速度大多为5400r/min,每转需时11.1ms,平均旋转延迟时间Tτ为5.55ms;对于软盘,其旋转速度为300r/min或600r/min,这样,平均Tτ为50~100ms。8.4.3磁盘访问时间813)

传输时间Tt

这是指把数据从磁盘读出或向磁盘写入

温馨提示

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

最新文档

评论

0/150

提交评论