操作系统第6章输入输出管理ppt课件.ppt
第六章 设备管理目的与要求:掌握掌握I/OI/O控制的原理、控制的原理、设备的使用方法。设备的使用方法。重点与难点:三种不同的三种不同的I/OI/O控制方控制方式,三种不同的设备使用方法。式,三种不同的设备使用方法。1.1.设备的分类和标识设备的分类和标识 1 1、设备分类、设备分类按工作特性分成按工作特性分成存储设备存储设备、输入设备输入设备、输出设备输出设备。(1 1)存储设备)存储设备也称外存或后备存储器、辅助存储器。也称外存或后备存储器、辅助存储器。存储速度较内存慢,比内存容量大,存储速度较内存慢,比内存容量大,相对价格便宜。相对价格便宜。也称也称块块设备。在物理上按固定的块组设备。在物理上按固定的块组织,每块有自己的地址,块的大小通常织,每块有自己的地址,块的大小通常在在512KB-32KB512KB-32KB。(2 2)输入设备)输入设备输入设备是计算机用来接收来自外部世界输入设备是计算机用来接收来自外部世界信息的设备。如:键盘、鼠标、扫描仪、信息的设备。如:键盘、鼠标、扫描仪、话筒、卡片输入机,纸带输入机等。话筒、卡片输入机,纸带输入机等。(3 3)输出设备)输出设备输出设备是将计算机加工处理好的信息送输出设备是将计算机加工处理好的信息送向外部世界的设备。如:打印机,绘图仪,向外部世界的设备。如:打印机,绘图仪,显示器、音箱等。显示器、音箱等。输入设备、输出设备也称输入设备、输出设备也称字符字符设备。信息设备。信息以字符为单位组织。字符设备不编址,也以字符为单位组织。字符设备不编址,也没有任何寻址操作。没有任何寻址操作。l按传输速度的快慢来分类按传输速度的快慢来分类l(1 1)低速设备。)低速设备。如:键盘(如:键盘(1010B B/S/S)、鼠标()、鼠标(100100B B/S/S)l(2 2)中速设备(比低速高一个数量级)。)中速设备(比低速高一个数量级)。如:行式打印机、激光打印机(如:行式打印机、激光打印机(100100KBKB/S/S)l(3 3)高速设备(比中速高一个数量级)。)高速设备(比中速高一个数量级)。如:磁盘(如:磁盘(IDEIDE磁盘磁盘5 5MBMB/S/S)、)、PCIPCI总线总线528528MBMB/S/S2 2、设备标识、设备标识怎样标识各台设备?或如何给各台设怎样标识各台设备?或如何给各台设备命名?备命名?(1 1)设备绝对号)设备绝对号系统按某种原则为每台设备分配唯系统按某种原则为每台设备分配唯一的号码,用作硬件区分和识别设备一的号码,用作硬件区分和识别设备的代号,称做设备绝对号(或设备绝的代号,称做设备绝对号(或设备绝对地址)。对地址)。(2 2)设备类型号)设备类型号操作系统为每类设备规定了一个编操作系统为每类设备规定了一个编号,称做设备类型号,也称主设备号。号,称做设备类型号,也称主设备号。用户在编写程序时不能通过设备用户在编写程序时不能通过设备绝对号来使用设备,只需向系统说绝对号来使用设备,只需向系统说明他要使用的设备类型。明他要使用的设备类型。如:如:UNIXUNIX系统中的所有块设备的设备系统中的所有块设备的设备名由主设备和次设备两部份构成。名由主设备和次设备两部份构成。例:例:rdf0,rdf1rdf0,rdf1分别表示第分别表示第1 1个和第个和第2 2个软盘驱动器。前者个软盘驱动器。前者rdfrdf表示设备类表示设备类型,后者表示同类设备的相对序号。型,后者表示同类设备的相对序号。6.1.2 I/O6.1.2 I/O系统结构系统结构总线总线I/OI/O系统结构系统结构不同规模的计算机系统,其不同规模的计算机系统,其I/OI/O系统系统结构存在差异。大多数微型机和小型计结构存在差异。大多数微型机和小型计算机中,都使用总线算机中,都使用总线I/OI/O系统结构。系统结构。如:如:PCIPCI(Peripheral Component Peripheral Component Interconnect,Interconnect,外部设备互连)总线外部设备互连)总线例例1 1:典型的:典型的PCPC总线结构。总线结构。连接连接CPUCPU、主存、设备控制器和、主存、设备控制器和I/OI/O设备模型设备模型 例例2:微机的微机的I/O组成组成CPU寄存器寄存器磁盘磁盘控制器控制器打印机打印机控制器控制器其他其他控制器控制器磁盘磁盘驱动器驱动器打印打印系统系统其他其他I/OCPU盒盒I/O地址地址I/O数据数据I/O控制控制.专门的数专门的数据线和控据线和控制线及状制线及状态线态线6.1.3 设备控制器设备控制器一、一、I/O部件的组成部件的组成 I/OI/O设备通常包含一个电子部件和一设备通常包含一个电子部件和一个机械部件。个机械部件。(1 1)电子部件被称做设备控制器)电子部件被称做设备控制器(Device ControllerDevice Controller)或适配器)或适配器(Adapter)(Adapter)(当控制多设备时:又叫总线(当控制多设备时:又叫总线控制器,通道控制器)。在个人计算机控制器,通道控制器)。在个人计算机中,它通常是一块可以插入主板扩展槽中,它通常是一块可以插入主板扩展槽的印刷电路板;的印刷电路板;(2 2)机械部分则是设备本身。)机械部分则是设备本身。操作系统一般只与控制器打交道,操作系统一般只与控制器打交道,而非设备本身。而非设备本身。早期早期CPUCPU是直接控制外部设备的,在是直接控制外部设备的,在引入引入I/OI/O部件之后,才将部件之后,才将CPUCPU逐渐从与外逐渐从与外设的交互细节中解放出来。设的交互细节中解放出来。二、设备控制器的功能二、设备控制器的功能(1)实现主机与设备之间的通信控制,)实现主机与设备之间的通信控制,进行端口地址的译码;进行端口地址的译码;(2)把计算机的数字信号转换成机械部)把计算机的数字信号转换成机械部分能识别的模拟信号,或者反过来。分能识别的模拟信号,或者反过来。(3)实现数据缓冲。)实现数据缓冲。(4)接收主机发来的控制命令。)接收主机发来的控制命令。(5)将设备和控制器当前所处的状态提)将设备和控制器当前所处的状态提供给主机。供给主机。四、控制器与四、控制器与CPU的通信方式的通信方式1 1、每个控制器都有一些用来与、每个控制器都有一些用来与CPUCPU通信的通信的I/OI/O寄存器。寄存器。控制寄存器控制寄存器:用来选择外部设备的某:用来选择外部设备的某个功能。如全双工或半双式通信方式、个功能。如全双工或半双式通信方式、激活奇偶校验等。激活奇偶校验等。状态寄存器状态寄存器:记载当前设备的状态,:记载当前设备的状态,如当前命令是否完成,设备是否出错等。如当前命令是否完成,设备是否出错等。数据寄存器数据寄存器:保存当前输入:保存当前输入/ /输出的数输出的数据。据。操作系统通过向这些寄存器写命令操作系统通过向这些寄存器写命令字来执行字来执行I/OI/O功能。功能。操作系统从这些寄存器中读取数据,操作系统从这些寄存器中读取数据,从而知道设备的当前状态,并判断是从而知道设备的当前状态,并判断是否准备接收新的命令等。否准备接收新的命令等。2 2、通信方式的实现方法、通信方式的实现方法(1 1)存贮器映像)存贮器映像I/OI/O方式。在某些计算方式。在某些计算机上,这些寄存器占用内存地址空间的一机上,这些寄存器占用内存地址空间的一部份。部份。内存内存0kn设备设备1控制寄存器控制寄存器设备设备2控制寄存器控制寄存器设备设备3控制寄存器控制寄存器(2 2)专用地址方式。)专用地址方式。有些计算机使用专用的有些计算机使用专用的地址。每个控制器中的寄存器对应地址空间的地址。每个控制器中的寄存器对应地址空间的一部份。如一部份。如IBM-PCIBM-PC中的专用中的专用I/OI/O地址如下:地址如下:键盘键盘060 - 063060 - 063硬盘硬盘320 320 32F 32F打印机打印机378 378 37F 37F软盘软盘3F0 3F0 3F7 3F7彩色显示器彩色显示器3D0 3D0 3DF 3DFIBM PCIBM PC的的I/OI/O地址地址6.1.4 I/O6.1.4 I/O系统的控制方式系统的控制方式 (1)程序)程序I/O(程序直接控制方式)(程序直接控制方式) CPUCPU直接控制直接控制I/OI/O操作的全过程,包括测操作的全过程,包括测试设备状态、发送读写命令、传输数据。试设备状态、发送读写命令、传输数据。 因此,处理机指令集应包括控制类、测因此,处理机指令集应包括控制类、测试类、读写类试类、读写类I/OI/O指令。指令。 I/OI/O部件接收到相应的命令后,置于部件接收到相应的命令后,置于I/OI/O状态寄存器的相应位置上。随着操作的执状态寄存器的相应位置上。随着操作的执行更改状态位,但并不通知行更改状态位,但并不通知CPUCPU。I/OI/O数据数据通过通过CPUCPU寄存器转发。寄存器转发。向向I/OI/O部件部件发读命令发读命令读读I/OI/O部件部件状态寄存器状态寄存器检查状态检查状态从从I/OI/O部件部件读字数据读字数据将该字写将该字写入内存入内存未未OKOKOKOK出错出错该块读完该块读完OKOK下一下一指令指令未未OKOK程序直接控制程序直接控制I/O方式示例方式示例 (2)中断驱动)中断驱动I/O(中断控制方式)(中断控制方式) CPUCPU向向I/OI/O部件发出命令后,转去做部件发出命令后,转去做其他有用的工作。当其他有用的工作。当I/OI/O部件准备好数部件准备好数据后,利用中断通知据后,利用中断通知CPUCPU,再由,再由CPUCPU完成完成数据传输。数据传输。CPUCPU不必反复测试寄存器状态,节不必反复测试寄存器状态,节约了时间。但总体看来,中断控制方式约了时间。但总体看来,中断控制方式仍然消耗大量的仍然消耗大量的CPUCPU时间,因为每个字时间,因为每个字的数据传输都必须经过的数据传输都必须经过CPUCPU寄存器转发。寄存器转发。下一下一指令指令向向I/OI/O部件部件发读命令发读命令读读I/OI/O部件部件状态寄存器状态寄存器检查状态检查状态从从I/OI/O部件部件读字数据读字数据将该字写将该字写入内存入内存OKOK出错处理出错处理该块读完该块读完OKOK未未OKOK中中断断处处理理做其他事情做其他事情中中断断驱驱动动I/O方方式式示示例例CPUCPU(3 3)DMADMA技术(直接存贮器存储)技术(直接存贮器存储)一、前两种方式的缺陷:一、前两种方式的缺陷: I/OI/O的传输速率受的传输速率受CPUCPU测试或中断响测试或中断响应的速度限制;应的速度限制; CPUCPU为管理为管理I/OI/O耗费大量时间。耗费大量时间。二二、DMADMA(直接内存存取)方式(直接内存存取)方式是一种优于中断方式的是一种优于中断方式的I/OI/O控制方式,控制方式,其特点是:其特点是:(1 1)数据传送的基本单位是数据块,)数据传送的基本单位是数据块,即即CPUCPU与与I/OI/O之间,每次至少传送一个数据块;之间,每次至少传送一个数据块;(2 2)所传的数据块,无需再经)所传的数据块,无需再经CPUCPU寄存寄存器转发而直接传至内存,或相反;器转发而直接传至内存,或相反;(3 3)仅在一个数据块传输的开始或结)仅在一个数据块传输的开始或结束需要束需要CPUCPU干预。干预。(4 4)CPUCPU向向DMADMA部件发送部件发送I/OI/O命令后,即命令后,即可进行其他工作。给可进行其他工作。给DMADMA的命令中应包括:操的命令中应包括:操作类别、作类别、I/OI/O设备的地址、读写数据在内存中设备的地址、读写数据在内存中的首地址、字数。的首地址、字数。 DMADMA的功能可以以独立的的功能可以以独立的DMADMA部件在系统部件在系统I/OI/O总线上完成,也可整合到总线上完成,也可整合到I/OI/O部件中完成。部件中完成。 读写内存时,读写内存时,DMADMA部件需要控制总线,部件需要控制总线,CPUCPU可能在涉及存储访问时因此而忙等待。可能在涉及存储访问时因此而忙等待。向向DMADMA部件部件发读命令发读命令读取读取DMADMA部件状态部件状态中断中断下一条指令下一条指令做其做其他事他事情情CPUCPU直接控制外部设备直接控制外部设备引入引入I/OI/O部件,部件,CPUCPU直接控制直接控制I/OI/O部件部件引入中断驱动方式引入中断驱动方式引入引入DMADMAI/OI/O通道或通道或I/OI/O处理机处理机输入输入/输出控制方式的发展过程输出控制方式的发展过程(4) 通道技术通道技术概念概念1、什么是、什么是I/O通道。通道。也称也称I/O处理器(机),是一个专门负处理器(机),是一个专门负责责I/O的处理器,置于的处理器,置于CPU和设备控制器之间;和设备控制器之间;它是在它是在DMA的基础上发展起来的,也是一种的基础上发展起来的,也是一种DMA技术,只是通道的控制芯片更为复杂,技术,只是通道的控制芯片更为复杂,有了自己专用于有了自己专用于I/O的指令集和存储器。称这的指令集和存储器。称这种种I/O处理器为处理器为I/O通道。通道。2、通道程序。、通道程序。是由一系列的通道指令(或称通道命是由一系列的通道指令(或称通道命令)所构成,它由令)所构成,它由CPU按数据传送的不同要按数据传送的不同要求自动形成,一般只包括少数几条指令。求自动形成,一般只包括少数几条指令。3、I/O通道的类型。通道的类型。字节多路通道字节多路通道字节多路通道是以字节为基本传字节多路通道是以字节为基本传输单位,当一子通道控制的某台外设交输单位,当一子通道控制的某台外设交换了一个字节后,就转向下一个子通道,换了一个字节后,就转向下一个子通道,以控制下一台设备传送一个字节。这就以控制下一台设备传送一个字节。这就实现了子通道的循环轮转,以达到多路实现了子通道的循环轮转,以达到多路控制的目的,字节多路通道主要用来控控制的目的,字节多路通道主要用来控制低速、并且以字节为基本传送单位的制低速、并且以字节为基本传送单位的设备。如打印机。设备。如打印机。字节多路通道示例字节多路通道示例数组选择通道数组选择通道这种通道一次执行一个通道程序,控这种通道一次执行一个通道程序,控制一台设备连续地传送一批数据,当一个程制一台设备连续地传送一批数据,当一个程序执行完后,才转向下一个程序,它的优点序执行完后,才转向下一个程序,它的优点是传输速度高,缺点是一次只能控制一台设是传输速度高,缺点是一次只能控制一台设备进行备进行I/OI/O操作。它主要用来控制高速外设。操作。它主要用来控制高速外设。如磁盘。如磁盘。数组选数组选择通道择通道数组多路通道数组多路通道u这种通道是上述两种通道的折中,可以这种通道是上述两种通道的折中,可以分时的方式执行多道程序,每道程序可传分时的方式执行多道程序,每道程序可传送一组数据。它主要用于中速设备的控制。送一组数据。它主要用于中速设备的控制。如磁带机。如磁带机。在一大型系统中可以同时存在这三种类在一大型系统中可以同时存在这三种类型的通道以便控制各种不同类型的设备。型的通道以便控制各种不同类型的设备。 6.2 I/O.2 I/O软件软件I/O软件的层次及其设计软件的层次及其设计 (1)I/O软件的总体目标软件的总体目标按分层的思想构造软件,较低层的软件按分层的思想构造软件,较低层的软件要使较高层的软件独立于硬件,较高层的软要使较高层的软件独立于硬件,较高层的软件则要向用户提供一个友好、规范、清晰的件则要向用户提供一个友好、规范、清晰的界面。界面。 (2)I/O软件设计的具体目标软件设计的具体目标设备独立性。让应用程序独立于具体的物设备独立性。让应用程序独立于具体的物理设备。理设备。统一命名。一个文件或一个设备的名字应统一命名。一个文件或一个设备的名字应该是一个简单的字符串或一个整数,它不应该是一个简单的字符串或一个整数,它不应依赖于设备。依赖于设备。同步异步传输。大多数物理同步异步传输。大多数物理I/O是异步是异步的,但应可与的,但应可与CPU同步。同步。出错处理。一般说来,错误应尽可能地在出错处理。一般说来,错误应尽可能地在接近硬件的层上处理。接近硬件的层上处理。设备共享与独占。有些设备共享与独占。有些I/O设备应共享,设备应共享,如磁盘,而有些如磁盘,而有些I/O设备应独占,如打印机设备应独占,如打印机等。等。 (3)I/O软件的软件的层次层次根据根据I/O软软件的设计目标,件的设计目标,将将I/O软件组织成软件组织成以下以下4个层次:中个层次:中断处理程序、设断处理程序、设备驱动程序、与备驱动程序、与设备无关的设备无关的I/O软软件和用户空间的件和用户空间的I/O软件。软件。用户进程用户进程用户层用户层I/OI/O设备无关设备无关的的I/OI/O设备驱动程序设备驱动程序及中断处理程序及中断处理程序硬件硬件设备管理子系统设备管理子系统I/OI/O软件层次的逻辑结构图软件层次的逻辑结构图6.2.1 中断处理程序中断处理程序 (第一层第一层) 中断处理程序的主要任务:中断处理程序的主要任务:在采用中断驱动方式管理在采用中断驱动方式管理I/O设备时,设备时,当设备完成任务后,会向当设备完成任务后,会向CPU发出中断信号,发出中断信号,CPU分析中断原因,并调用对应的中断处理分析中断原因,并调用对应的中断处理程序进行处理。中断处理程序进行相应的检程序进行处理。中断处理程序进行相应的检查并取走数据,然后从中断处理程序返回至查并取走数据,然后从中断处理程序返回至原来的执行点,继续执行。原来的执行点,继续执行。中断处理程序的基本步骤:中断处理程序的基本步骤:无论是哪一种无论是哪一种I/O设备,其中断处理程设备,其中断处理程序的处理基本相同,其步骤为:序的处理基本相同,其步骤为:唤醒被阻塞的驱动进程。唤醒被阻塞的驱动进程。 保护被中断进程的保护被中断进程的CPU环境。环境。分析中断原因,转入相应的中断处分析中断原因,转入相应的中断处理程序。理程序。进行中断处理。进行中断处理。恢复现场。恢复现场。7.2.2设备驱动程序设备驱动程序(第二层)(第二层) 设备驱动程序中存放着所有与设备相关的设备驱动程序中存放着所有与设备相关的代码,每一类设备配置一种驱动程序。设备代码,每一类设备配置一种驱动程序。设备驱动程序的功能有如下几点:驱动程序的功能有如下几点: 将接收到的来自它上一层的与设备无关将接收到的来自它上一层的与设备无关的抽象请求转为具体请求。的抽象请求转为具体请求。如:请求如:请求“读第读第N块块”,磁盘驱动程序应计,磁盘驱动程序应计算请求块的物理地址,检查驱动器的电机是否正在算请求块的物理地址,检查驱动器的电机是否正在运转,确定磁头臂是否定位在正确的柱面上等。运转,确定磁头臂是否定位在正确的柱面上等。 检查用户检查用户I/O请求的合法性,了解请求的合法性,了解I/O设设备的状态,传递有关参数、设置设备的工作备的状态,传递有关参数、设置设备的工作方式。方式。 发出发出I/O命令,启动分配到的命令,启动分配到的I/O设备,设备,完成指定的完成指定的I/O操作。操作。 及时响应控制器或通道发来的中断请求,及时响应控制器或通道发来的中断请求,并调用相应的中断处理程序进行处理。并调用相应的中断处理程序进行处理。 对于有通道的计算机系统,驱动程序还对于有通道的计算机系统,驱动程序还应能根据用户的应能根据用户的I/O请求构成通道程序。请求构成通道程序。6.2.3 与设备无关的与设备无关的I/O软件软件(第三层第三层)与设备无关的与设备无关的I/O软件和设备驱动程序软件和设备驱动程序之间的确切界限依赖于具体系统,某些系统之间的确切界限依赖于具体系统,某些系统出于效率的考虑,让设备驱动程序来实现本出于效率的考虑,让设备驱动程序来实现本层软件功能。层软件功能。与设备无关的软件的基本任务是实现与设备无关的软件的基本任务是实现一般设备都需要的一般设备都需要的I/O功能,并且向用户层功能,并且向用户层软件提供一个统一的逻辑接口。软件提供一个统一的逻辑接口。与设备无关的与设备无关的I/O软件系统称为软件系统称为I/O子子系统系统。I/O子系统执行着与设备无关的操作,子系统执行着与设备无关的操作,同时还为用户应用程序提供一个统一的接口。同时还为用户应用程序提供一个统一的接口。 I/O子系统所需完成的主要功能:子系统所需完成的主要功能:1、设备命名。、设备命名。2、设备保护。、设备保护。3、与设备无关的块。、与设备无关的块。4、设备分配。、设备分配。5、出错处理。、出错处理。 6.2.4 用户空间的用户空间的I/O软件软件(第四层第四层)这一层与设备的控制细节无关,不直这一层与设备的控制细节无关,不直接与设备打交道。它将所有的设备看接与设备打交道。它将所有的设备看做逻辑资源。做逻辑资源。 一、用户空间的一、用户空间的I/O软件有两类:软件有两类:一类是与用户程序相连的库过程,这些库一类是与用户程序相连的库过程,这些库过程是过程是I/O软件的一部分。如:软件的一部分。如:为用户进程为用户进程提供各类提供各类I/OI/O函数。用户以设备标识符和一函数。用户以设备标识符和一些简单的函数来使用设备,如打开、关闭、些简单的函数来使用设备,如打开、关闭、读、写等。如读、写等。如C C库中的函数库中的函数fopen( )fopen( ),fread( )fread( ),fwrite( )fwrite( ),fclose( )fclose( )等等 。另一类是另一类是SPOOLing(外部设备联机(外部设备联机并行操作)系统,也称假脱机系统。它是针并行操作)系统,也称假脱机系统。它是针对对慢速独占设备慢速独占设备提出的一种设备管理技术,提出的一种设备管理技术,其核心思想是利用一台可共享的、高速大容其核心思想是利用一台可共享的、高速大容量的块设备来模拟独占设备的操作,使一台量的块设备来模拟独占设备的操作,使一台独占设备变为多台可并行的虚拟设备,即把独占设备变为多台可并行的虚拟设备,即把独占设备变成独占设备变成逻辑上的共享设备。逻辑上的共享设备。 二、二、SPOOLing系统具有下列特点:系统具有下列特点: 对于用户进程是透明的,用户进程仍使对于用户进程是透明的,用户进程仍使用统一的系统调用命令访问字符设备。用统一的系统调用命令访问字符设备。 用户进程实际上使用的是虚拟设备,而用户进程实际上使用的是虚拟设备,而不是直接使用字符设备。不是直接使用字符设备。 字符设备与各虚拟设备之间的数据交换字符设备与各虚拟设备之间的数据交换由由SPOOLing进程统一调度实施,而且这种进程统一调度实施,而且这种交换是以并行方式进行的。交换是以并行方式进行的。例例:打印设备是独占型设备,但通过:打印设备是独占型设备,但通过SPOOLing技术,可让打印设备成为共享设技术,可让打印设备成为共享设备。备。三、设备的使用方法三、设备的使用方法 (一)设备相关系统调用简介 1.申请设备。该系统调用中有参数该系统调用中有参数说明要申请的设备名称,操作系统处理说明要申请的设备名称,操作系统处理该系统调用时,会按照设备特性(是独该系统调用时,会按照设备特性(是独占还是分时共享式使用)及设备的占用占还是分时共享式使用)及设备的占用情况来分配设备,返回申请是否成功标情况来分配设备,返回申请是否成功标志。志。 2.将数据写入设备。 3.从设备读取数据。 4.释放设备。这是申请设备的逆操这是申请设备的逆操作作。 说明说明: 上述的系统调用主要用于对人上述的系统调用主要用于对人- -机交互机交互类慢速外设的使用。类慢速外设的使用。 对于存储类外设,用户程序一般通过对对于存储类外设,用户程序一般通过对文件的访问,由文件管理模块读写存储外文件的访问,由文件管理模块读写存储外设间接使用它们,系统也提供直接使用存设间接使用它们,系统也提供直接使用存储类外设的接口。储类外设的接口。 对于网络通信外设,用户级程序也不直对于网络通信外设,用户级程序也不直接使用它们,用户通过接使用它们,用户通过SOCKETSOCKET通信系统调通信系统调用接口调用用接口调用TCP/IPTCP/IP层程序,由层程序,由IPIP层程序选层程序选择调用网络通信设备驱动程序。择调用网络通信设备驱动程序。 在在UNIXUNIX中,也可以用如下的系统调用中,也可以用如下的系统调用将数据直接写入软盘中:将数据直接写入软盘中:fd=open(fd=open(“/dev/fd0/dev/fd0”,O,ORDRW)RDRW);申请软盘,;申请软盘,/dev/fd0/dev/fd0代表软盘代表软盘。lseek(fd,1024,0)lseek(fd,1024,0);将软盘当前;将软盘当前I/OI/O位置定位位置定位到到10241024字节位置。字节位置。 Write(fd,buffer,36)Write(fd,buffer,36);将用户缓冲区;将用户缓冲区bufferbuffer中的中的3636个字节写入软盘个字节写入软盘1024102410591059字节。字节。close(fd) close(fd) ;释放软盘。;释放软盘。 显然,这样的使用方式绕过了文件管理,显然,这样的使用方式绕过了文件管理,而直接读写软盘空间。当然你必须清楚软盘而直接读写软盘空间。当然你必须清楚软盘的什么位置存放了什么信息,才能做到正确的的什么位置存放了什么信息,才能做到正确的读写。读写。(二)独占式共享使用设备(二)独占式共享使用设备 所谓独占式共享使用设备是以一次所谓独占式共享使用设备是以一次设备使用过程(包含多次设备使用过程(包含多次I/OI/O操作)为单操作)为单位使用设备。位使用设备。 在申请设备时,如果设备空闲,就将在申请设备时,如果设备空闲,就将其独占,不再允许其他进程申请使用,其独占,不再允许其他进程申请使用,一直等到该设备被释放,才允许被其他一直等到该设备被释放,才允许被其他进程申请使用。进程申请使用。(三)分时式共享使用设备(三)分时式共享使用设备 独占式共享使用设备时,设备利用率很低独占式共享使用设备时,设备利用率很低。 如果一个逻辑上完整的数据可以用设备的如果一个逻辑上完整的数据可以用设备的一次一次I/OI/O操作完成,那么就不必要独占该设备操作完成,那么就不必要独占该设备。反过来说,如果一次。反过来说,如果一次I/OI/O操作的数据逻辑上操作的数据逻辑上完整,就不必要对该设备进行独占方式的申请完整,就不必要对该设备进行独占方式的申请使用。在申请这种设备时,不必检查是否已被使用。在申请这种设备时,不必检查是否已被占用,只要简单累加设备使用者计数即可。占用,只要简单累加设备使用者计数即可。 所谓分时式共享就是以一次所谓分时式共享就是以一次I/OI/O为单位分为单位分时使用设备,不同进程的时使用设备,不同进程的I/OI/O操作请求以排队操作请求以排队方式分时地占用设备进行方式分时地占用设备进行I/O I/O 。 (四)以(四)以SPOOLingSPOOLing方式使用外设方式使用外设 SPOOLing SPOOLing 技术是在批处理操作系统时代引技术是在批处理操作系统时代引入的,即所谓入的,即所谓假脱机输入假脱机输入/ /输出技术输出技术。把这种技。把这种技术用于对设备的使用实质就是对输入输出操作术用于对设备的使用实质就是对输入输出操作成批处理。成批处理。 例如例如: :所有输出数据已经写到文件当中,并排所有输出数据已经写到文件当中,并排到打印输出队列,打印进程申请占用打印机后,到打印输出队列,打印进程申请占用打印机后,成批读出文件中数据,并送打印机打印出去。成批读出文件中数据,并送打印机打印出去。打印请求队列打印请求队列(含要打印文(含要打印文件)件)打印打印daemon daemon 进程进程打印机打印机6.2.5 6.2.5 缓冲技术缓冲技术为什么引入缓冲技术?为什么引入缓冲技术?为缓和为缓和CPUCPU与与I/OI/O设备间速度不匹配设备间速度不匹配的矛盾,减少的矛盾,减少CPUCPU的中断频率,放宽对的中断频率,放宽对中断响应的限制,提高中断响应的限制,提高CPUCPU和和I/OI/O设备之设备之间的并行性,操作系统引人了缓冲技术。间的并行性,操作系统引人了缓冲技术。I/OI/O缓冲区是缓冲技术用到的重要数据缓冲区是缓冲技术用到的重要数据结构,结构,缓冲区管理是逻辑缓冲区管理是逻辑I/OI/O系统的基系统的基本功能之一。本功能之一。 缓冲区的分类缓冲区的分类1 1、从使用方式上分,缓冲、从使用方式上分,缓冲区可分为区可分为专用缓冲区专用缓冲区和和公用公用缓冲区缓冲区两部分。两部分。前者是为某台设备专门设置前者是为某台设备专门设置的缓冲区,占用固定的内存空间。的缓冲区,占用固定的内存空间。后者是为所有设备设置的缓冲区,后者是为所有设备设置的缓冲区,为各设备为各设备共享。共享。 2 2、缓冲区的组织方式可分为:缓冲区的组织方式可分为:单缓冲单缓冲区区、多缓冲区多缓冲区和和缓冲池缓冲池。单缓冲区和多缓冲区的组织方式为专用单缓冲区和多缓冲区的组织方式为专用缓冲区方式采用。缓冲区方式采用。对于单缓冲区,生产者和消费者只能串对于单缓冲区,生产者和消费者只能串行访问缓冲区。对于多缓冲区(如双缓冲行访问缓冲区。对于多缓冲区(如双缓冲区),生产者和消费者可并行交替地访问各区),生产者和消费者可并行交替地访问各缓冲区,从而加快了传输速度,提高了系统缓冲区,从而加快了传输速度,提高了系统效率。效率。缓冲池为公用缓冲区方式采用。它由若缓冲池为公用缓冲区方式采用。它由若干大小相等的缓冲区组成,各缓冲区既可用干大小相等的缓冲区组成,各缓冲区既可用于输人,也可用于输出。于输人,也可用于输出。 一、单缓冲一、单缓冲 当用户进程发出当用户进程发出I/OI/O请求时,操作系统请求时,操作系统在主存的系统空间为该操作分配一个缓在主存的系统空间为该操作分配一个缓冲区,可以实现预读和滞后写。冲区,可以实现预读和滞后写。u最简单的一种缓冲形式。当进程发出最简单的一种缓冲形式。当进程发出一一I/OI/O请求时,请求时,OSOS为之分配一缓冲区。为之分配一缓冲区。u对于输入:设备先将数据送入缓冲区,对于输入:设备先将数据送入缓冲区,OSOS再将数据传给进程。再将数据传给进程。用户进程用户进程操作系统操作系统输入输入I/O设备设备传送传送单缓冲区单缓冲区u对于输出:进程先将数据传入缓对于输出:进程先将数据传入缓冲区,冲区,OSOS再将数据送出到设备。再将数据送出到设备。u当数据到达率与离去率相差很大,当数据到达率与离去率相差很大,则可以采用单缓冲方式。则可以采用单缓冲方式。n思考题:思考题:n1、单缓冲能加快进程的执行速度吗?、单缓冲能加快进程的执行速度吗?u能。能。u单缓冲能实现单缓冲能实现CPU与与I/O设备之间并行工设备之间并行工作,故能从整体上提高进程的执行速度。作,故能从整体上提高进程的执行速度。 二、双缓冲二、双缓冲为了加快输入输出速度,引入双缓冲技术。为了加快输入输出速度,引入双缓冲技术。可以实可以实现用户数据区现用户数据区缓冲区之间交换数据和缓冲区缓冲区之间交换数据和缓冲区外设之间外设之间交换数据的并行。交换数据的并行。双缓冲原理:双缓冲原理:u设置两个缓冲区设置两个缓冲区buf1buf1和和buf2buf2。读入数据时,。读入数据时,首先输入设备向首先输入设备向buf1buf1填入数据,然后进程填入数据,然后进程从从buf1buf1提取数据,在进程从提取数据,在进程从buf1buf1提取数据提取数据的同时。输入设备向的同时。输入设备向buf2buf2中填数据。当中填数据。当buf1buf1取空时,进程又从取空时,进程又从buf2buf2中提取数据,中提取数据,与此同时输入设备向与此同时输入设备向buf1buf1填数。如此交替填数。如此交替使用两个缓冲区,使使用两个缓冲区,使CPUCPU和设备的并行操作和设备的并行操作的程度进一步提高。的程度进一步提高。u当信息的输入输出速率相同(或相当信息的输入输出速率相同(或相差不大)时,可利用双缓冲,实现差不大)时,可利用双缓冲,实现二者并行。二者并行。用户进程用户进程操作系统操作系统输入输入I/O设备设备传送传送双缓冲区双缓冲区三、循环缓冲三、循环缓冲n对于阵发性的输入、输出,双缓冲区往往不对于阵发性的输入、输出,双缓冲区往往不够用,并且不能获得令人满意的够用,并且不能获得令人满意的CPUCPU和和I/OI/O设设备的并行操作。备的并行操作。u例如:输入机输入数据的速度时而远高例如:输入机输入数据的速度时而远高于于CPUCPU消耗数据的平均速度,则输入机很消耗数据的平均速度,则输入机很快地把缓冲区装满而处于空闲状态;时而快地把缓冲区装满而处于空闲状态;时而CPUCPU消耗数据的速度又远远高于输入机输消耗数据的速度又远远高于输入机输入的速度,入的速度,CPUCPU又不得不处于等等状态。又不得不处于等等状态。n但随着缓冲区的数量增加,使情况有所改善。但随着缓冲区的数量增加,使情况有所改善。因此引入环形缓冲技术。因此引入环形缓冲技术。u环形缓冲技术是在主存中分配一组大小环形缓冲技术是在主存中分配一组大小相等的存储区作为缓冲区,并将这些缓冲相等的存储区作为缓冲区,并将这些缓冲区链接起来。区链接起来。u系统中有个缓冲区链首指针,指向第一系统中有个缓冲区链首指针,指向第一个缓冲区,每个缓冲区中有一个指向下一个缓冲区,每个缓冲区中有一个指向下一个缓冲区的指针,最后一个缓冲区中的指个缓冲区的指针,最后一个缓冲区中的指针指向第一个缓冲区,从而形成环形缓冲针指向第一个缓冲区,从而形成环形缓冲区链。如图所示。系统可循环使用这些缓区链。如图所示。系统可循环使用这些缓冲区。环形缓冲区用于输入冲区。环形缓冲区用于输入( (输出输出) )时,还时,还要有两个指针要有两个指针ININ和和OUTOUT。uININ指向可接收数据的空闲缓冲区的首址,指向可接收数据的空闲缓冲区的首址,OUTOUT指针指向装好数据且未取走的缓冲区首指针指向装好数据且未取走的缓冲区首址。址。u系统初启时,指针被初始化为系统初启时,指针被初始化为ININ和和OUTOUT与与首指针首指针STARTSTART相等,即相等,即START=IN=OUTSTART=IN=OUT。u对于输入信息而言,设备接收信息时,对于输入信息而言,设备接收信息时,信息输入到信息输入到ININ指向的缓冲区,当一个缓冲指向的缓冲区,当一个缓冲区装满后,区装满后,ININ指针指向下一个空闲缓冲区指针指向下一个空闲缓冲区; ;u当从缓冲区中提取信息时,提取由当从缓冲区中提取信息时,提取由OUTOUT指指向的缓冲区中的信息,提取完毕,将向的缓冲区中的信息,提取完毕,将OUTOUT指指针指向下一个装满信息的缓冲区。针指向下一个装满信息的缓冲区。n系统必须考虑到这种方案的约束条件,即系统必须考虑到这种方案的约束条件,即INOUT( INOUT( 初始状态除外初始状态除外) )。n从设备输入信息的操作和提取信息的操作共从设备输入信息的操作和提取信息的操作共用环形缓冲时有一定的同步关系用环形缓冲时有一定的同步关系:OUTIN:OUTIN。当。当OUTOUT到达到达ININ时,处理数据的进程必等待。由于时,处理数据的进程必等待。由于该方案是个环形链该方案是个环形链; ;故当故当ININ指针达到最后一个指针达到最后一个缓冲区时,它将指向缓冲区时,它将指向STARTSTART指指n当当ININ到达到达OUTOUT时,从设备输入信息的操作也必时,从设备输入信息的操作也必须等待。须等待。 四、缓冲池四、缓冲池环形缓冲区一般用于特定的进程,属环形缓冲区一般用于特定的进程,属于专用缓冲区,当系统较大时,将会于专用缓冲区,当系统较大时,将会有许多这样的环形缓冲区,这不仅要有许多这样的环形缓冲区,这不仅要消耗大量的内存空间,利用率也