操作系统OperatingSystem.ppt

上传人:牧羊曲112 文档编号:6472714 上传时间:2023-11-03 格式:PPT 页数:105 大小:804.50KB
返回 下载 相关 举报
操作系统OperatingSystem.ppt_第1页
第1页 / 共105页
操作系统OperatingSystem.ppt_第2页
第2页 / 共105页
操作系统OperatingSystem.ppt_第3页
第3页 / 共105页
操作系统OperatingSystem.ppt_第4页
第4页 / 共105页
操作系统OperatingSystem.ppt_第5页
第5页 / 共105页
点击查看更多>>
资源描述

《操作系统OperatingSystem.ppt》由会员分享,可在线阅读,更多相关《操作系统OperatingSystem.ppt(105页珍藏版)》请在三一办公上搜索。

1、操作系统 Operating System,教学目的,通过对本章地讲解是学生理解并掌握设备管理的功能、I/O控制方式、缓冲区管理、设备管理,以及磁盘存储管理。,本章重点:,输入输出控制方式缓冲区的管理设备分配和设备处理磁盘调度虚拟设备,本章难点:,对通道的理解Spooling技术。,第5章 I/O系统,5.1 I/O系统概述5.2 I/O软件的组成 5.3 Linux输入/输出 5.4 Windows 2000输入/,第5章 I/O系统,1.基本概念I/O系统:在操作系统中负责管理输入输出设备的部分称为I/O系统。I/O系统的基本功能:是为数据传输选择输入输出设备;在选定的输入输出设备和CPU

2、(或主存)之间交换数据。操作系统内核通过设备驱动程序与外部设备进行交互。驱动程序是设备与内核其他部分之间的唯一接口。文件系统是对设备操作的组织与抽象,而设备操作则是对文件操作的最终实现。,第5章 I/O系统,2.I/O设备分类,按信息组织方式,字符设备(character device),块设备(block device)有结构,可寻址,按设备使用的可共享性,独占设备,共享设备,虚拟设备,时钟设备,5.1 IO系统概述,5.1.1 I/O体系结构5.1.2 I/O系统的功能5.1.3 I/O系统的实现,5.1.1 I/O体系结构,在计算机系统中,数据信息是通过数据通道在CPU、RAM 和I/O

3、设备之间流动的。这些数据通道又称为总线。,总线,数据总线:指用来并行传送数据的一组线。,地址总线:指用来并行传送地址的一组线。,控制总线:指用来并行传送控制信息的一组线。,1.总线,I/O总线是用来连接CPU和I/O设备的总线。每个I/O设备都依次连接到I/O总线上,这种连接使用了有3个元素的硬件构件层次:I/O端口、I/O接口和设备控制器。,5.1.1 I/O体系结构,2.I/O 总线,(1)I/O端口(I/O port),即为连接到I/O总线上的设备的I/O地址。例IBM PC 体系结构中的I/O地址空间,一共有65536个8位的I/O端口。CPU在执行指令时,使用地址总线选择所请求的I/

4、O端口,使用数据总线在CPU寄存器和I/O端口之间传送数据。若I/O端口能被映射到内存物理地址空间,CPU和I/O设备之间的通信就可以通过使用对内存进行操作的汇编语言指令(如,mov、and、or等等)来实现。现代的硬件设备倾向于把I/O端口映射到内存物理地址空间。为了实现起来方便,操作系统设计者把每个设备的I/O端口都组织成一组专用寄存器:控制寄存器、状态寄存器、输入寄存器、输出寄存器。,5.1.1 I/O体系结构,5.1.1 I/O体系结构,(2)I/O接口起翻译器的作用:把I/O端口中的值转换成设备所需要的命令和数据;检测设备状态的变化,并对设备状态寄存器(某一I/O端口)进行相应地更新

5、。I/O接口通过一条IRQ线连接到可编程中断控制器上,以使它代表相应的设备发出中断请求。有两种类型的接口:专用I/O接口和通用I/O接口。专用I/O接口:专用于特定的硬件设备。有时专用I/O接口与设备控制器处于同一块卡中。通用I/O接口:是用于连接外部设备的。并口可用于连接打印机、可移动磁盘、扫描仪、备份设备、其他计算机等等。,5.1.1 I/O体系结构,(3)设备控制器的主要作用:对从I/O接口接收到的高级命令进行解释,并通过向设备发送适当的电信号序列强制设备执行特定的操作;对从设备接收到的电信号进行转换和适当地解释,并通过I/O接口修改状态寄存器的值。复杂的设备通常需要设备控制器来驱动,而

6、较简单的设备可以没有设备控制器,如可编程中断控制器、可编程间隔定时器。所有的PC机都包含DMAC(Direct Memory Access Controller)辅助处理器。DMA(直接内存访问)作为一种输入输出方式,主要用来连接高速外围设备,如磁盘、磁带等,控制数据在RAM和I/O设备之间传送。,5.1.2 I/O系统的功能,1.概述 在计算机系统中,I/O设备是人机对话的界面和接口,而计算机系统的I/O设备种类繁多,千差万别。另外,CPU性能高,而I/O设备性能低,属于低速设备,因此I/O设备的性能常常成为系统性能的瓶颈。用户对I/O设备的使用要求是方便、高效、安全和正确。I/O系统的功能

7、也就应该在计算机硬件结构提供的既定设备范围及其连接模式下,完成用户对I/O设备的使用要求。,5.1.2 I/O系统的功能,2.I/O系统的功能(1)方便性:为了让用户能方便使用I/O设备,提供简便易用的对逻辑设备进行逻辑操作的抽象接口;实现抽象接口到物理接口的转化,即将高级逻辑操作转化为低级物理操作。抽象接口除了掩蔽硬件细节外还要掩蔽依赖于硬件的软件技术细节。设备抽象接口是由设备管理功能接口和文件系统功能接口共同提供的,更准确地说,设备抽象接口包含在文件系统统一接口中。,5.1.2 I/O系统的功能,抽象接口使广义的设备独立性成为可能,向用户展示一个大大简化了的计算环境观点,同时,抽象接口也是

8、提高效率技术的前提。广义的I/O设备独立性是指整个设备管理功能的抽象接口,程序不关心物理设备的操作和组织细节,而只看到具有逻辑名称和逻辑性质的逻辑设备和逻辑操作,不关心具体I/O设备是哪一个具体设备或是哪一个文件,设备改变而程序不变,不必修改,也不必重新编译。用户不必关心设备的改变,这一事实所带来的问题应该由操作系统来管理。所使用的设备的变化对程序是透明的。块设备的设备独立性是由文件系统的文件目录概念提供的。,(2)效率:非系统用户关心其程序的运行效率,系统用户关心系统的利用率;非系统用户不希望程序等待设备,系统用户不希望设备等待程序。在现代操作系统中,已引入了大量的技术以提高设备与CPU的效

9、率,例如中断、缓冲、DMA、通道等。因此,操作系统设备管理的一个主要功能是采用各种纯软件或与硬件配合的软件技术来提高设备效率和与此相关的系统效率,提供物理I/O设备的共享并优化这些设备的使用,同时借助抽象接口使得这些优化技术得以在内部实施而对用户透明。,5.1.2 I/O系统的功能,(3)保护:用户希望能安全正确地使用设备,即希望由设备传送或管理的数据应该是安全的,不被破坏和泄密。另外,对设备拥有所有权的用户希望设备不能被破坏。系统如何阻止用户访问他们无权访问的设备呢?微机系统多半不设保护,任何进程能做它想做的任何事情。在大多数主机系统中,用户进程对I/O设备的访问完全被禁止。在UNIX系统中

10、,对应于I/O设备的特别文件受一般的rwx位保护。系统管理员据此为每台设备确定适当的授权。,5.1.2 I/O系统的功能,2.设备管理技术:(1)输入/输出控制方式计算机系统对I/O设备的控制方式有:程序轮询方式程序中断方式DMA(直接存储器访问)控制方式通道控制方式。,【输入/输出控制-程序直接控制方式】,程序直接控制方式是指由程序直接控制内存或CPU和外围设备之间进行信息传送的方式。通常又称为“忙等”方式或循环测试方式。在数据传送过程中,必不可少的一个硬件设备是I/O控制器,它是操作系统软件和硬件设备之间的接口,它接收CPU的命令,并控制I/O设备进行实际的操作。,程序直接控制方式下输出数

11、据时的工作过程。把一个启动位为“1”的控制字写入该设备的控制状态寄存器。将需输出数据送到数据缓冲寄存器。测试控制状态寄存中的“完成位”,若为0,转,否则转。输出设备将数据缓冲寄存器中的数据取走进行实际的输出。,程序直接控制方式优缺点,在程序I/O方式中,由于CPU的高速性和I/O设备的低速性,致使CPU的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试中,造成对CPU的极大浪费。该方式优点:简单,易于理解。,【输入/输出控制-中断控制方式】,(1)进程需要数据时,将允许启动和允许中断的控制字写入设备控制状态寄存器中,启动该设备进行输入操作。(2)该进程放弃处理机,等待输入的完成。操作系

12、统进程调度程序调度其他就绪进程占用处理机。(3)当输入完成时,输入设备通过中断请求线向CPU发出中断请求信号。CPU在接收到中断信号之后,转向中断处理程序。(4)中断处理程序首先保护现场,然后把输入缓冲寄存器中的数据传送到某一特定单元中去,同时将等待输入完成的那个进程唤醒,进入就绪状态,最后恢复现场,并返回到被中断的进程继续执行。(5)在以后的某一时刻,操作系统进程调度程序选中提出的请求并得到获取数据的进程,该进程从约定的内存特定单元中取出数据继续工作。,在I/O设备输入每个数据的过程中,由于无须CPU干预,因而可使CPU与I/O设备并行工作。仅当输完一个数据时,才需CPU花费极短的时间去做些

13、中断处理。可见,这样可使CPU和I/O设备都处于忙碌状态,从而提高了整个系统的资源利用率及吞吐量。例如,从终端输入一个字符的时间约为100 ms,而将字符送入终端缓冲区的时间小于 0.1 ms。若采用程序I/O方式,CPU约有 99.9 ms的时间处于忙等待中。采用中断驱动方式后,CPU可利用这 99.9 ms的时间去做其它事情,而仅用 0.1 ms的时间来处理由控制器发来的中断请求。可见,中断驱动方式可以成百倍地提高CPU的利用率。,DMA方式又称直接存储器访问(Direct Memory Access)方式。其基本思想是在外设和主存之间开辟直接的数据交换通路。DMA方式的特点是:(1)数据

14、传送的基本单位是数据块。(2)所传送的数据是从设备送内存,或者相反。(3)仅在传送一个或多个数据块的开始和结束时,才需中断CPU,请求干预,整块数据的传送是在DMA控制器控制下完成的。可见,DMA方式较之中断驱动方式,又是成百倍地减少了CPU对I/O的干预,进一步提高了CPU与I/O设备的并行操作程度。,【输入/输出控制-DMA方式】,图5.1 DMA控制器与其他部件的关系,DMA控制器的组成,图 5-8 DMA控制器的组成,为了实现在主机与控制器之间成块数据的直接交换,必须在DMA控制器中设置如下四类寄存器:(1)命令/状态寄存器CR。用于接收从CPU发来的I/O命令或有关控制信息,或设备的

15、状态。(2)内存地址寄存器MAR。在输入时,它存放把数据从设备传送到内存的起始目标地址;在输出时,它存放由内存到设备的内存源地址。(3)数据寄存器DR。用于暂存从设备到内存,或从内存到设备的数据。(4)数据计数器DC。存放本次CPU要读或写的字(节)数。,DMA工作过程,图 5-9 DMA方式的工作流程,【输入/输出控制-通道控制方式】,I/O通道方式是DMA方式的发展,它可进一步减少CPU的干预,即把对一个数据块的读(或写)为单位的干预,减少为对一组数据块的读(或写)及有关的控制和管理为单位的干预。同时,又可实现CPU、通道和I/O设备三者的并行操作,从而更有效地提高整个系统的资源利用率。例

16、如,当CPU要完成一组相关的读(或写)操作及有关控制时,只需向I/O通道发送一条I/O指令,以给出其所要执行的通道程序的首址和要访问的I/O设备,通道接到该指令后,通过执行通道程序便可完成CPU指定的I/O任务。,通道是专门负责输入/输出的硬件I/O处理器,图5.2 通道方式的数据传送结构,通道控制方式的数据传输过程如下:,(1)当进程要求设备输入时,CPU发指令指明I/O操作、设备号和对应通道。(2)对应通道收到CPU发来的启动指令后,读出内存中的通道指令程序、设置对应设备的控制状态寄存器的初值。(3)设备按通道指令的要求,把数据送往内存指定区域。(4)若传送结束,I/O控制器通过中断请求线

17、发中断信号请求CPU做中断处理。(5)中断处理结束后,CPU返回到被中断进程处继续执行。(6)当进程调度程序选中这个已得到数据的进程后,才能进行加工处理。,5.1.2 I/O系统的功能,(2)缓冲技术在现代OS中,几乎所有的I/O设备在与处理机(内存)交换数据时,都使用了缓冲区。缓冲就是在通信问题中为了通信双方的速度匹配而引入的一个中间层次,这个层次的速度比通信双方中较慢的一方快,而与较快的一方更匹配。,引入缓冲的主要目的有以下几点。缓和处理机和I/O设备间速度不匹配的矛盾减少对CPU的中断次数提高CPU和I/O设备之间的并行性,5.1.2 I/O系统的功能,纯硬件缓冲区软件缓冲区,单缓冲双缓

18、冲循环缓冲缓冲池,按照缓冲所在的位置分,缓冲区可分为:CACHE;I/O设备或控制器内部的纯硬件缓冲区,如打印机内部的硬件缓冲区;I/O在内存开设的缓冲区,如OS在内存开设的I/O缓冲区和文件系统缓冲区;脱机与假脱机技术实质上也属于缓冲技术,它是为慢速I/O设备在外存开设的缓冲区。,缓冲区分类:,缓冲技术-单缓冲,单缓冲是操作系统提供的最简单的一种缓冲形式。单缓冲是指在设备和处理机之间设置一个缓冲。设备和处理机交换数据时,先把被交换数据写入缓冲区,之后需要数据的设备或处理机再从缓冲区取走数据。设备和处理机对缓冲区的操作是串行的。单缓冲工作示意如下图,缓冲技术-双缓冲,双缓冲方式和单缓冲方式相比

19、,虽然双缓冲方式能进一步提高CPU和外设的并行程度,并能使输入设备和输出设备并行工作,但是在实际系统中很少采用这一方式,这是因为在计算机系统中的外设很多,又有大量的输入和输出,同时双缓冲很难匹配设备和CPU的处理速度。因此现代计算机系统中一般使用环形缓冲或缓冲池结构。,双缓冲是指在应用程序进程发出I/O请求时,在内存为之分配两个缓冲区,以便加快I/O速度并提高设备利用率。,图 5-12 双缓冲工作示意图,缓冲技术-环形缓冲,循环缓冲是指引入多个缓冲区并将之组织成环形。用作输入的循环缓冲,输入进程不断地向环形缓冲中的下一个空缓冲输入数据,计算进程不断地从中取走数据并计算。循环缓冲也仅适用于某个特

20、定的输入输出进程和计算进程,属于专用缓冲。,图5.3 环形缓冲区结构,缓冲技术-缓冲池,现代的操作系统通常将多个缓冲区组织成缓冲池,供多个进程在I/O操作时共享,以提高缓冲区的利用率。在缓冲池中,可能有的缓冲区为空,有的缓冲区装满输入数据,有的缓冲区装满输出数据。为了便于管理,操作系统内核可将相同类型的缓冲区链接在一起,从而形成多个缓冲队列。,图5.4 缓冲区队列缓冲区,缓冲池的组成空闲缓冲区、装输入数据的缓冲区和装输出数据的缓冲区。,图5.5 缓冲池的工作缓冲区,缓冲池的工作方式缓冲区可以在收容输入、提取输入、收容输出和提取输出四种方式下工作。,图4-4 Getbuf与Putbuf流程图,5

21、.1.2 I/O系统的功能,(3)设备分配技术设备依据使用特性可分为共享设备技术、独占设备技术和虚拟设备技术。共享设备技术适用于可共享设备,独占设备技术适用于可共享设备和独占设备,虚拟设备技术适用于独占设备。具体内容如下:独占设备技术:对独享设备,系统一般采用静态分配方式。即在一个作业执行前,将它所需要使用的这类设备分配给它,当作业结束撤离时,才将分配给它的独享设备收回。独占设备每次只能分配给一个进程使用,这种使用特性隐含着死锁的必要条件,所以在考虑独占设备的分配时,一定要结合有关防止和避免死锁的安全算法。,共享设备技术:对共享设备的分配一般采用动态分配这一方式。在解决设备与CPU的速度匹配问

22、题上,为了使设备和CPU的利用率达到最大程度,系统希望根据每个设备的特征来全局调度设备的操作。,5.1.2 I/O系统的功能,常见的设备分配方法有两种。1.先来先服务2.优先级高者优先,5.1.2 I/O系统的功能,虚拟设备技术:系统中的独占设备是有限的,往往不能满足诸多进程的要求,会引起大量进程由于等待某些独占设备而阻塞。另一方面,申请到独占设备的进程在其整个运行期间虽然占有设备,利用率却常常很低,设备经常处于空闲状态。解决的办法,就是用共享设备操作来模拟独占设备的操作,以提高系统效率和设备利用率。这种技术就称为虚拟设备技术,实现这一技术的软、硬件系统被称为假脱机(Simultaneous

23、Peripheral Operation On Line,SPOOL)系统,又叫SPOOLing系统.,脱机输入输出技术,为了解决人机矛盾及CPU和I/O设备间速度不匹配的矛盾,50年代末出现了该技术。事先将装有用户程序和数据的纸带(卡片)装入纸带输入机,在一台外围机的控制下把纸带上的数据(程序)输入到磁带上。当CPU需要这些数据时再从磁带上高速的调入内存。类似的,当CPU需要输出时可由CPU直接高速的把数据从内存送到磁带上,然后再在另一台外围机的控制下,将磁带上的结果通过相应的输出设备输出。,由于程序和数据的输入和输出都是在外围机的控制下完成的,或者说他们是在脱离主机的情况下进行的,所以称为

24、脱机输入输出方式。,脱机I/O示意图,SPOOLing系统的组成:,(1)输入井和输出井:这是在磁盘上开辟出来的两个存储区域。输入井模拟脱机输入时的磁盘,用于收容I/O设备输入的数据。输出井模拟脱机输出时的磁盘,用于收容用户程序的输出数据。(2)输入缓冲区和输出缓冲区:这是在内存中开辟的两个缓冲取区。输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井。输出缓冲区用于暂存从输出井送来的数据,以后再传送到输出设备。,(3)输入进程和输出进程:输入进程模拟脱机输入时的外围控制机,将用户要求的数据从输入机通过输入缓冲区再送到输入井。当CPU需要输入数据时,直接从输入井读如内存。输出进程模拟脱机

25、输出时的外围控制机,把用户要求输出的数据,先从内存送到输入井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区送到输出设备上。,(4)请求打印队列这是由若干张请求打印表所形成的队列,系统为每个请求打印的进程建立一张请求打印表。,5.1.2 I/O系统的功能,SPOOLing系统的组成如图5-3所示。该系统必须有高速块设备的支持,该高速块设备通常是指磁盘。SPOOLing技术需要在磁盘上开辟两个大的存储空间,分别用作输入井和输出井。输入井模拟脱机输入时的磁盘,收容从输入设备输入的数据。,5.1.3 I/O系统的实现,OS,1.设备分配 在计算机系统中,I/O设备的数量是有限的。在多道程序环境中

26、,用户不能自行使用系统中的设备。进程首先需要向设备管理程序提出申请,然后由设备分配程序按照一定的分配算法给进程分配必要的资源。如果进程的申请没有成功,就要在资源的等待队列中排队等待,直到获得所需的资源。(1)设备管理的数据结构:操作系统为了实现对设备的管理和分配,需要对每台设备的情况进行登记,即对所管理的对象建立相应的数据结构,如设备控制表(DCT)、控制器控制表(COCT)、通道控制表(CHCT)和系统设备表(SDT)。图5-4给出了这些表的数据结构。,5.1.3 I/O系统的实现,设备、控制器、通道的等待队列是由等待分配资源的进程控制块组成的,其组织方式可以按照先来先服(FCFS)的顺序,

27、也可以按照优先级顺序。,5.1.3 I/O系统的实现,(2)设备分配的原则:提高设备的利用率;避免不合理的分配方式造成的系统死锁或系统工作紊乱。与进程的调度相似,设备的分配也需要一定的策略,通常采用先来先服务(FCFS)和优先级高者优先等。独占设备每次只能分配给一个进程使用。虚拟设备的分配同共享设备。,静态分配:,动态分配:,在用户级进行的,执行之前,由系统一次分配给该程序所需要的全部资源,分配之后,资源就一直为该程序所占用,直到执行完。该法无死锁。,在进程执行过程中根据执行需要进行设备分配。当进程需要设备时,通过系统调用命令向系统提出设备请求,由系统按照事先规定的策略给进程分配所需要的设备。

28、一旦用完,便立即释放。,设备管理功能中的设备抽象接口,提供的是对具有逻辑性质的逻辑设备的逻辑操作,由文件系统和设备管理软件接收、翻译、转换成对相应物理设备的物理操作。设备管理功能与文件系统的接口统一,以实现设备独立性,即当I/O方向在设备与文件之间变化时也不改变程序。操作系统要负责对I/O设备进行管理的一项重要工作就是给I/O设备统一命名。统一命名是指在系统中采取预先设计的、统一的逻辑名称,对各类设备进行命名,并且应用在同设备有关的全部软件模块中。系统调用接口可能反映为函数库,即被函数库所掩蔽。设备接口与文件系统接口可能会不同。,2.接口,I/O软件被组织成为一系列的层,即采用层次结构。I/O

29、软件一般分为四层:中断处理程序,设备驱动程序,独立于设备的系统软件以及用户空间的I/O软件。从功能上看,设备无关层是I/O管理的主要部分;从代码量上看,驱动层是I/O管理的主要部分。各层之间的界面并不是死的,各层之间的确切界面是依赖于具体系统的。I/O软件设计的一个关键目标是设备独立性。除了直接与设备打交道的低层软件之外,其他部分的软件不依赖于硬件。I/O软件独立于设备,当I/O设备更新时,没有必要重新编写全部设备软件。在一些操作系统中,只要安装了相应的设备驱动程序,就可以很方便地安装好新的I/O设备。甚至不必重新编译就能将设备管理程序移到别处执行。,3.I/O软件结构,5.2 I/O软件的组

30、成,概述:I/O设备管理软件一般分为四层:中断处理程序,设备驱动程序,与设备无关的系统软件以及用户空间的I/O软件。其中低层与硬件相关,把硬件与较高层次的软件隔离开来。而最高层软件则向用户提供一个友好的、统一的接口。,5.2.1 中断处理程序,1.中断和中断的分类,中断是指计算机在执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前的执行程序而转去执行相应的事件处理程序,待处理完毕后又返回原来被中断处继续执行或调度新的进程执行。开中断和关中断是为了保证某段程序执行的原子性。中断又分为外中断和内中断。外中断是指来自处理器和内存之外的中断,如I/O设备发出的I/O中断等。

31、内中断是指在处理器和内存内部产生的中断,又称为陷阱(trap)。,5.2.1 中断处理程序,2.处理器与I/O设备之间数据传输,I/O系统采用了中断方式来控制I/O设备和内存与CPU之间的数据传送。在硬件结构上,这种方式要求CPU与I/O设备(或控制器)之间有相应的中断请求线,而且在I/O设备控制器的控制状态寄存器上有相应的中断允许位。,在中断方式下,CPU与I/O设备之间数据传输的步骤:,(1)某个进程需要数据时,处理器发出指令启动I/O设备准备数据。同时,该指令还打开I/O设备控制状态寄存器中的中断允许位,以便在需要时,中断程序可以被调度执行。,5.2.1 中断处理程序,(2)该进程放弃处

32、理器,等待相关I/O操作完成,此时进程调度程序会调度其他就绪进程使用处理器。另一种方式是该进程在能够运行的情况下将继续运行,直到中断信号来临。(3)当I/O操作完成时,I/O设备控制器通过中断请求线向处理器发出中断信号。处理器收到中断信号后,转向预先设计好的中断处理程序对数据传送工作进行相应的处理。(4)得到数据的进程,转入就绪状态。在随后的某个时刻,进程调度程序会选中该进程继续工作。,5.2.1 中断处理程序,3.中断处理过程 I/O设备完成了I/O操作后,控制器便向CPU发出一中断请求,CPU响应中断后便转向中断处理程序。无论是哪种I/O设备,其中断处理程序的处理过程大体相同,其步骤如下:

33、(1)CPU响应中断后,则关中断,使其进入不可再次响应中断的状态。(2)当中断处理程序开始执行时,用信号或信号量机制,将处于阻塞状态的设备驱动程序进程唤醒。(3)保护被中断进程的执行现场。即将当前处理机状态字PSW、程序计数器PC以及被中断进程的CPU现场(包含所有的CPU寄存器)等都保存到中断栈中。,5.2.1 中断处理程序,(4)分析中断原因,调用相应的设备中断处理程序。由处理器对各个中断源进行测试,以确定引起本次中断的I/O设备,并发送应答信号给发中断请求信号的进程,使之消除该中断请求信号,然后将中断处理程序的入口地址装入到程序计数器中,使处理机转向中断处理程序。(5)执行中断处理程序。

34、该程序从设备控制器中读出设备状态。若是正常完成中断,则驱动程序进程便可做结束处理;若还有命令,可再向控制器发送新的命令。若是异常中断,则根据发生异常的原因做相应处理。(6)恢复被中断进程的现场或调度新进程占据处理器。(7)开中断,CPU继续执行。,5.2.2 设备驱动程序,1.设备驱动程序的特点,(1)设备驱动程序是在请求I/O的进程和设备控制器之间的一个通信程序。它把进程的I/O请求传送给设备控制器,然后把设备控制器中所记录的设备状态、I/O操作完成情况传回请求I/O的进程。(2)它与I/O设备的特性紧密相关,对于不同类型的设备,应配置不同的驱动程序。(3)它与I/O控制方式紧密相关,常用的

35、设备控制方式为中断驱动和DMA方式。(4)设备驱动程序与I/O设备的硬件结构密切联系。其中全部是依赖于设备的代码。设备驱动程序是操作系统中唯一知道设备控制器细节及其用途的部分。,5.2.2 设备驱动程序,2.设备驱动程序的处理过程,(1)将接收到的抽象请求转换为具体要求。(2)检查用户I/O请求的合法性。一个I/O设备只能完成一组特定的功能,若超出这些特定的功能,则认为这次I/O请求非法。(3)读出和检查设备的状态。在启动设备之前,要从设备控制器的状态寄存器中读出设备的状态。若设备正处于空闲状态,则可以启动该设备进行I/O操作。,5.2.2 设备驱动程序,(4)向设备控制器发出控制命令。驱动程

36、序向控制器中的命令寄存器传送控制命令,启动I/O设备。随后的I/O是在设备控制器的控制下进行的。若I/O操作所要完成的工作较多,需要一定的时间,驱动程序进程会把自己阻塞起来,直到中断到来时才被唤醒。若I/O操作毫无拖延地完成,驱动程序无需阻塞。(5)对各种可能的有关设备排队、挂起、唤醒等操作进行处理。(6)及时响应由控制器发来的中断请求,并根据中断类型调用相应的中断处理程序进行处理。,5.2.3 独立于设备的系统软件,独立于设备的系统软件应该实现的功能有,与设备驱动程序的统一接口、设备命名、设备保护、提供与设备无关的逻辑块、缓冲、块设备的存储分配、独占设备的分配与释放、处理错误。,1.设备命名

37、,在操作系统的I/O软件中,对I/O设备进行了统一命名,由独立于设备的系统软件负责把设备的符号名映射到相应的设备驱动上。在Linux系统中,像/dev/hda5这样的设备名,唯一地确定了一个特殊文件的i节点,这个i节点包含了主设备号和次设备号。主设备号用于寻找正确的设备驱动程序,次设备号提供了设备驱动程序的有关参数,用来确定要读写的具体设备。,2.设备保护,操作系统应该对设备进行必要的保护,以防止无权用户非法使用设备。,3.提供与设备无关的逻辑块,在计算机系统中,不同的磁盘可以有着不同的扇区尺寸。独立于设备的系统软件就要向高层软件屏蔽这一事实,并提供一个大小统一的逻辑块尺寸。它可以将若干扇区合

38、并成一个逻辑块。这样,高层软件只与抽象设备打交道,独立于物理扇区的尺寸而使用等长的逻辑块。,4.缓冲,缓冲是独立于设备的系统软件应提供的另一个目标。I/O设备和CPU的处理速度不匹配是客观存在的,为此,引入了缓冲技术。对于常见的块设备和字符设备,都存在着缓冲的问题。,5.2.3 独立于设备的系统软件,5.块设备的存储分配,在创建一个文件并向其中填入数据时,就从磁盘空闲块表中为文件分配新的存储块;删除一个文件时,就把释放的存储块加入磁盘空闲块表中并进行统一的管理。,要求操作系统对独占设备的使用请求进行检查,并根据该独占设备的可用状况来决定是否接收该请求。一个简单的处理独占设备请求的方法是,进程直

39、接通过“OPEN”打开设备特殊文件提出请求。如果设备不能用,则OPEN失败,关闭该设备的同时释放该设备。,6.独占设备的分配与释放,5.2.3 独立于设备的系统软件,7.处理错误,一般,出错处理是由设备驱动程序完成的,因为大多数错误是与设备密切相关的。对于这类错误,设备驱动程序知道如何处理,例如重试、忽略、放弃。像由于磁盘块受损而不能再读这样一类错误,驱动程序将设法重读一定次数,若仍有问题,则放弃并通知设备独立软件,之后如何处理这个错误就与设备无关了。若在读用户文件时出现错误,操作系统会将该错误信息报告给用户。若在读系统数据结构时出现错误,比如磁盘的空闲块表,操作系统只能打印一些错误信息并终止

40、运行。,大部分I/O软件都包含在操作系统中,但仍有一小部分是由与用户程序连接在一起的库函数实现的,甚至完全由运行于核外的程序构成。Spooling(假脱机)系统是多道程序系统中处理独占I/O设备的一种方法。图5-5总结了I/O系统软件的全部层次及每一层的主要功能。图中的箭头给出了I/O部分的控制流。,5.2.4 用户空间的I/O软件,下面以读磁盘文件为例说明I/O过程。(1)当用户程序对一个已经打开的文件发出read()系统调用时。(2)在内核的系统调用代码首先检查调用参数的正确性。如果要输入的数据已经在内存缓冲区中,则把数据返回给该进程,完成I/O请求。(3)否则,需要执行实际的I/O操作。

41、把该进程从运行(run)队列中移出并放入等待(wait)设备的队列,I/O请求被调度。最后,I/O子系统向该设备驱动程序发送请求。依据OS,该请求或者由子程序调用发送或者由内核消息发送。,5.2.4 用户空间的I/O软件,(4)设备驱动程序首先分配内核缓冲区用于接收数据,然后向设备控制器发命令。(5)设备控制器操纵设备执行数据传输。(6)驱动程序可以查询(poll)控制器的状态,也可以设置DMA。这里假设用DMA方式,当数据传输完成时,产生中断。(7)相应的中断处理程序通过中断向量表接收到中断,存储一些必要的数据,发信号给设备驱动程序。,5.2.4 用户空间的I/O软件,5.2.4 用户空间的

42、I/O软件,(8)设备驱动程序收到信号后,确定是哪一个I/O请求完成了,确定请求的状态,向内核I/O子系统发请求完成的信号。(9)内核传输数据或返回代码到用户进程的地址空间,把该用户进程从等待队列移动到就绪(ready)队列。(10)当调度进程把CPU分派给该用户进程时,该用户进程继续执行。,5.3 Linux输入/输出,Linux操作系统把所有的设备都看成文件,能通过文件操作的界面来操作设备。应用程序通过设备文件名来寻访具体的设备,而设备则像普通文件一样受到文件系统访问控制权限的保护。应用程序可以通过系统调用open()打开设备文件,建立起与目标设备的连接。打开了代表着目标设备的文件,即建立

43、起与设备的连接以后,应用程序就可以通过read()、write()等常规的文件操作对目标设备进行操作。从应用程序的角度看,设备文件逻辑上的空间是个线性空间。从这个逻辑空间到具体设备的物理空间的映射是由内核提供的,并划分成文件操作与设备驱动两个层次。这样,对于一个具体的设备来说,文件操作和设备驱动就成为同一事物的两个不同层次,而不是互相独立或平行的两个概念。,5.3 Linux输入/输出,在图5-6中,处于应用层中的应用程序进程通过“打开文件号”fd与已打开文件的file结构相联系,每个file结构代表着对一个已打开文件操作的上下文。对于普通文件,即磁盘文件,文件的逻辑空间在文件系统层内按具体文

44、件系统的结构和规则映射到设备的线性逻辑空间,然后在设备驱动层进一步从设备的逻辑空间映射到设备的物理空间。这样,一共经历了两层映射。而对于设备文件,则文件的逻辑空间通常直接就等价于设备的逻辑空间,所以在文件系统层就不需要有映射。但是,也有些设备需要在文件系统层中有一些简单的映射。从图中还可以看出,对同一个设备也可以通过不同的文件以不同的方式来操作。,5.3 Linux输入/输出,5.3.1 I/O设备文件,UNIX类操作系统都是基于文件的,可以把I/O设备当作文件来处理。与磁盘上的正规文件进行交互所用的同一系统调用可直接用于I/O设备。设备文件是用来表示I/O设备的。每个设备文件的主要属性:文件

45、名、类型、主号、次号。其中类型标识该设备是块设备还是字符设备。主号是从1到255之间的一个整数,用以标识设备的类型。通常,具有相同类型和主号的所有设备文件是由同一设备驱动程序来处理的,共享相同的文件操作集合。次号也是一个整数,用来在主号相同的一组设备之间标识特定设备的。在Linux操作系统中,设备文件通常存放在/dev目录中。表5-1列出了一些常见的设备文件的属性。从该表中可以看出,同一主号既可以用来标识字符设备,也可以用来标识块设备。,5.3.1 I/O设备文件,表5-1 常见的设备文件,5.3.1 I/O设备文件,通常,一个设备文件与一个硬件设备或硬件设备的某一物理或逻辑分区相关联。而有的

46、设备文件不会和任何实际的硬件关联,只是表示一个虚拟的逻辑设备。进程对设备文件的访问不同于对普通文件(正规文件、目录文件)的访问。对普通文件的访问,会通过文件系统来访问磁盘分区中的一些数据块。对设备文件的访问,则只是驱动硬件设备。为了统一起见,VFS负责隐藏设备文件与普通文件之间的差异,为应用程序进程提供统一的接口。当应用程序进程发出对设备文件的任一系统调用时,VFS将之转换成对设备驱动里的一个操作函数的调用,而不转换成对主文件系统相应函数的调用。然后由设备驱动里的操作函数完成对硬件设备的操作。,5.3.2 设备驱动程序,设备驱动程序是指用来控制I/O设备的一组函数(如open、close、re

47、ad、ioctl等)。大部分I/O设备类型都有自己的驱动程序。每个设备都有一个唯一的I/O控制器,因而有唯一的命令和唯一的状态信息。内核是通过以下几个方面支持设备驱动的。1.内核支持的级别 内核对硬件设备访问的支持方式有:内核不支持、最小支持、扩展支持。(1)内核不支持:应用程序进程通过使用相应的汇编语言指令,如in和out,直接与设备的I/O端口进行交互,效率很高。,5.3.2 设备驱动程序,(2)最小支持:最小支持保持内核尽可能小。该方法是用来处理连接到通用I/O接口上的外部硬件设备的。内核能识别I/O接口,但不能识别外部硬件设备。应用程序进程把I/O接口视为能够读写字符流的顺序设备。内核

48、通过提供一个具有驱动程序的设备文件来了解I/O接口,通过读写设备文件来处理外部硬件设备。在基于PC的通用I/O接口之中,只有串口的处理使用了这种方法。(3)扩展支持:通常,除串口之外的所有通用接口(并口、USB、PCMCIA接口、SCSI接口)之上连接的外部设备都需要扩展支持。2.监控I/O操作技术 通常,I/O操作的持续时间是不可预知的。因此,设备驱动程序在启动I/O操作之后,都要依靠一种监控技术在I/O操作终止或超时时发出信号。在,5.3.2 设备驱动程序,I/O操作终止时,设备驱动程序读取I/O接口中状态寄存器的内容来确定这个I/O操作是否被成功执行。在I/O超时,即完成这个操作所允许的

49、最大时间间隔已经用完时,驱动程序知道一定出了问题,要做相应的处理。常用的I/O监控技术有轮询模式和中断模式。轮询模式(polling mode)是指CPU重复检查或轮询设备的状态寄存器,直到状态寄存器中的值表明I/O操作已经完成为止。为了节约机器时间,设备驱动程序在每次论询操作之后会主动放弃CPU,以便让其它可运行的进程能够获得CPU继续执行。中断模式(interrupt mode)是指I/O设备控制器能够通过IRQ线发出I/O操作结束的信号。设备驱动程序启动I/O操作之后,将调用sleep_on()函数,阻塞自己。当I/O操作结束时,设备控制器通过IRQ线发出中断信号,中断处理程序调用wak

50、e_up()来唤醒该设备驱动程序进程。被唤醒的设备驱动程序检查I/O操作的结果。,5.3.2 设备驱动程序,访问I/O端口 为了避免多个硬件设备使用同一I/O端口,系统内核必须使用一个数据结构(如iotable表)来记录每个I/O端口的使用情况。任何设备驱动程序都可以通过下面三个函数来使用I/O端口:request_region:给一个I/O设备分配一个给定区间的I/O端口。check_region:检查一个给定区间的I/O端口是否空闲,是否已分配给某个I/O设备。release_region:释放已分配给一个I/O设备的给定区间的I/O端口。4 请求IRQ线 由于多个设备可以共享同一IRQ线

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号