1、2018/12/17,1,第七章 设备管理,2018/12/17,2,本章主要目录,7.1 I/O系统的组成 7.2 I/O控制方式 7.3 缓冲管理 7.4 设备分配 7.5 设备处理 7.6 中断技术 总结 作业 练习,2018/12/17,3,设备管理是对计算机I/O设备的管理,是操作系统中最具有多样性和复杂性的部分。它负责管理和完成用户对外设的使用中所有硬件相关和应用无关工作。 为用户使用外设提供方便服务和高效安全管理。称I/O子系统。,2018/12/17,4,其任务: (1)按照用户的要求控制I/O设备工作,完成用户所希望的I/O操作,以减轻用户编制程序的负担。这是设备管理的基本任
2、务。 (2)按照一定的算法把I/O设备分配给对该设备提出请求的进程,保证系统有条不紊地工作。 (3)充分有效地使用I/O设备,尽可能提高这些设备的并行操作程度。,2018/12/17,5,其功能:设备分配: 按照设备类型和相应的分配算法决定将I/O设备分配给哪一个要求该设备的进程。在分配设备的同时还要分配相应的控制器和通道,以保证I/O设备与CPU之间有传递信息的通路。凡未分配到所需设备的进程被放入一个等待队列。实现这一功能 的是设备分配程序。,2018/12/17,6,设备控制 : 完成这一功能的是设备处理程序。实现这一功能,设备处理程序首先根据用户提出的I/O请求构成相应的通道程序,交给通
3、道去执行,然后启动指定的设备进行I/O操作,最后要对通道发来的中断请求作出及时响应和处理。,2018/12/17,7,实现其他功能: 包括对缓冲区的管理功能,为改善系统的可适应性和可扩充性,使用户程序与实际使用的物理设备无关,即实现设备独立性。由设备无关性(独立性)软件实现。,2018/12/17,8,与操作系统的其他功能一样,操作系统设备管理功能的具体工作任务、内容、目标,取决于用户对外设的使用要求同外设硬件提供的原始使用接口方式间所存在的差距。取决于该差距中的硬件相关和应用无关的内容。,2018/12/17,9,I/O在计算机系统中具有重要地位:操作系统复杂和庞大的主要原因是所管理资源的庞
4、杂和并发技术的采用,而I/O速度正是导致并发技术产生的直接原因,I/O设备庞杂也是操作系统所管理资源庞杂的主要原因; I/O性能是系统总体性能的重要决定因素、重要表现指标和常见瓶颈之一; I/O能力和特点是现代计算机系统分类的重要依据。,2018/12/17,10,操作系统设备管理功能的总体结构,分为两层: 设备无关层(独立层)和设备相关层(驱动层) 进一步划分为:设备中断处理程序、设备驱动程序、与设备无关的操作系统软件和用户级软件(用户空间的I/O软件),2018/12/17,11,I/O系统的层次以及每一层的主要功能,2018/12/17,12,I/O软件的设计目标和原则,()设备无关性,
5、访问文件数据的程序,与具体的物理设备无关 ()出错处理:数据传输过程中出现的错误尽可能靠近硬件的地方处理。 ()同步/异步传输:CPU并行工作,为异步。阻塞方式,称为同步。 ()缓冲技术:,2018/12/17,13,7.1 I/O系统的组成,7.1.1 I/O系统的结构一、微型机I/O系统 二、主机I/O系统 7.1.2 I/O设备一、I/O设备的类型 二、设备与控制器之间的接口 7.1.3 设备控制器一、设备控制器的功能 二、设备控制器的组成 7.1.4 I/O通道一、通道设备的引入 二、通道类型三、“瓶颈”问题 7.1.5 总线系统,2018/12/17,14,7.1.1 I/O系统的结
6、构一般分成两大类:微机I/O系统和主机I/O系统。 一、微型机I/O系统 PC连接小型和微型机I/O系统多采用单总线型I/O系统结构。CPU和内存是直接连接到总线上,I/O设备是通过设备控制器连接到总线上。,2018/12/17,15,CPU不直接与I/O设备进行通信,而是与设备控制器进行通信,并通过它去控制相应的设备。即设备控制器(device controller又叫适配器adapter)是CPU和设备之间的接口,根据设备的类型而配置相应的控制器,如:磁盘控制器、打印机控制器等。,2018/12/17,16,CPU,存储器,磁盘 控制器,打印机 控制器,其它 控制器,打印机,磁盘驱动器,系
7、统总线,总线型I/O系统结构,2018/12/17,17,二、主机I/O系统 -通道连接IBM 370:大中型主机所配置的I/O设备较多,特别是高速外设,若所有这些设备的控制器,都通过总线直接与CPU通信,则总线和CPU的负担过重。解决的方法是在I/O系统中不采用单总线结构,增加一级I/O通道,用以代替CPU与各设备控制器进行通信,实现对它们的控制。,2018/12/17,18,计算机,I/O通道2,I/O通道1,控制器,控制器,控制器,控制器,设备,设备,具有通道的I/O系统结构,2018/12/17,19,每个外设一般包含机械和电子两部分,机械部分负责实际的I/O操作,直接产生结果信息形式
8、,是设备主体。电子部分是通过电子技术实现与主机的连接。 操作系统管理的是电子部分。电子部分的任务: (1)端口地址译码 (2)将计算机的数字信号,转换为机械部分能识别的模拟信号,或反之。A/D或D/A转换。 (3)实现设备内部硬件缓冲存储、数据加工、DMA等。,2018/12/17,20,微型机和个人计算机中,把电子部分的一部分功能分离出来形成单独的设备控制器,称为适配器或控制卡。从而形成“CPU-控制器-设备”的关系模式,操作系统更多地是与控制器打交道,而不直接与设备打交道。控制器通过若干接口寄存器或接口缓冲区与CPU(或通道)通信,2018/12/17,21,7.1.2 I/O设备 一、I
9、/O设备的类型按不同的角度进行划分: 1、按数据传输速率分类 (1)低速设备。其传输速率为每秒几个字节至数百个字节的。如:键盘,鼠标器、语音的输入和输出等设备。 (2)中速设备。其传输速率为每秒数千字节至数十千字节。如:行式打印机、激光打印机等。 (3)高速设备。传输速率为数百字节至数兆字节。如:磁带机、磁盘机、光盘机等。,2018/12/17,22,2、按信息交换的单位分类 (1)块设备(Block Device)。用于存储信息。信息的存取以数据块为单位。它属于有结构设备。如:磁盘,其基本特征是传输速率高,一般为每秒几兆位,另一特征是可寻址,即可随机地读/写任意一块,再一特征是磁盘设备的I/
10、O系统采用DMA方式。还有:磁带。,2018/12/17,23,(2)字符设备(Character Device)(unix)。用于数据的输入和输出。其基本单位是字符,属于无结构设备。如:交互式终端(键盘、显示器)、打印机等。其基本特征:一、传输速率低二、不可寻址,即不能指定输入时的源址及输出时的目标地址。三、字符设备在进行I/O时,采用中断驱动方式。,2018/12/17,24,3、按设备的共享属性分类 (1)独占(享)设备。是指在一段时间内只允许一个用户或进程访问的设备,即为临界资源。并发进程要互斥地访问这类设备,系统一旦分配给某进程,便由该进程独占,直到用完释放。多数为低速设备,如:打印
11、机,2018/12/17,25,(2)共享设备。是指在一段时间内允许多个进程同时访问的设备。共享设备是可寻址的和可随机访问的设备。如:磁盘。 (3)虚拟设备。是指通过虚拟技术将一台独占设备变换为若干台逻辑设备,供若干个用户或进程同时使用,这种经虚拟技术处理后的设备,称为虚拟设备。,2018/12/17,26,4、按设备的从属关系分类系统设备,是指在OS生成时已经登记在系统中的标准设备。如键盘、显示器、打印机、文件存储设备等。用户设备,是指OS生成时未登记在系统的非标准设备。如:鼠标、绘图仪、扫描仪、网络系统中的各种网板、实时系统中的A/D、D/A变换器、图像处理系统的图像设备等。,2018/1
12、2/17,27,5、按操作特性分类存储设备,用来存放各种信息,如:磁盘、磁带、磁鼓、光盘等。I/O设备(输入型和输出型),是向CPU传输信息和输出经加工处理的信息,如:键盘、显示器、打印机、图形(图像)输入/输出设备、绘图机、网络通信板、音声输入/输出设备等。 终端设备,通用终端(会话型、批处理型、智能终端)、专用终端、虚终端。 脱机设备,2018/12/17,28,二、设备与控制器之间的接口一般,设备不是直接与CPU进行通信,而是与设备控制器通信。所以,在设备与控制器之间应有一接口,接口中的信号有三种: (1)数据信号。输入时,由设备发送给设备控制器(至CPU),输出时,由设备控制器所接收的
13、比特流(来自CPU)。(串行的位流,很低层次的接口,控制器的任务是把串行的位流转换为字节块,并进行必要的错误校正工作,在控制器内部的一个缓冲区中按位组装,进行校验后,再复制到内存),2018/12/17,29,(2)控制信号。是设备控制器发送给设备的、用于规定设备执行读或写操作的信号或执行其它操作的信号。如:移动磁头的信号。 (3)状态信号。用于指示设备的当前状态。 如:指示设备正在读或写;指示设备已读或写完,并准备好新的数据传送。,2018/12/17,30,I/O设备,至设备 控制器,信号 数据,数据信号线,状态信号线,控制信号线,设备与控制器间的接口,2018/12/17,31,7.1.
14、3 设备控制器设备控制器是CPU与I/O设备之间的接口,它接收从CPU发来的命令,并去控制I/O设备工作,使CPU从设备控制事务解脱出来。它是一个可编址设备,当仅控制一个设备时,只有一个唯一的设备地址,若控制器连接了多个设备时,就具有多个设备地址,使每一个地址对应一个设备。,2018/12/17,32,分两类:一类是用于控制字符设备的控制器,另一是用于控制块设备的控制器。微型机中以印刷电路板形式插入计算机的扩展槽中,又称为接口卡(或控制器卡)。,2018/12/17,33,一、设备控制器的功能 1、接收和识别命令设备控制器能接收并识别CPU所发出的命令,它具有相应的控制寄存器,用来存放接收的命
15、令和参数,并对所接收的命令进行译码。如:磁盘控制器可接收CPU发出的Read 、Write、Format等15条不同的命令,所以,磁盘控制器中有多个寄存器和命令译码器。,2018/12/17,34,2、数据交换实现CPU与控制器之间、控制器与设备之间的数据交换。前者,是通过数据总线,由CPU并行地把数据写入控制器,或从控制器中并行地读出数据,后者,是设备将数据输入到控制器,或从控制器传送给设备。所以,控制器需设置数据寄存器(操作系统可对其进行读写)。,2018/12/17,35,3、设备状态的了解和报告控制器能记下设备的状态供CPU了解。如:仅当设备处于发送就绪状态时,CPU才能启动控制器从设
16、备中读出数据。所以,要在控制器中设置一状态寄存器,用其中的每一位来反映设备的某一种状态。当CPU将该寄存器的内容读入后,便可了解该设备的状态。,2018/12/17,36,4、地址识别系统中的每一个设备都有一个地址,而设备控制器必须能够识别它所控制的每个设备的地址。另外,为使CPU能向(或从)寄存器中写入(或读出)数据,寄存器具有唯一的地址。如:PC机中规定,硬盘控制器中各寄存器的地址,分别为32032F之一。控制器能正确识别这些地址,为此,在控制器配置地址译码器。,2018/12/17,37,5、数据缓冲 6、差错控制对I/O设备传送来的数据进行差错检测。,2018/12/17,38,二、设
17、备控制器的组成 1、设备控制器与CPU的接口用于实现CPU与设备控制器之间的通信。有三类信号线:数据线、地址线和控制线。数据线一般与如下两类寄存器连接:,2018/12/17,39,(1)与数据寄存器连接。控制器可有多个数据寄存器,用于存放从设备送来的数据(输入),或从CPU送来的数据(输出)。 (2)与控制/状态寄存器连接。控制器中有多个这类寄存器,用于存放从CPU送来的控制信息或设备的状态信息。,2018/12/17,40,Cpu如何与设备进行通信的,方法一:为的每个控制寄存器分配一个I/O端口号(port,8位或16位的整数),使用特殊的指令:IBM 370、IBM PC机in reg,
18、port;cpu读控制寄存器port的内容到cpu寄存器regout port,reg;cpu将reg的内容写入控制寄存器中。早期计算机。,2018/12/17,41,方法二:将所有控制寄存器映射到内存空间中,每个控制寄存器分配唯一的一个内存地址,一般位于高地址空间。PDP-11和现在的所有RISC类CPU。 方法三,混合方案, 既具有内存映射I/O的数据缓冲区,控制寄存器又具有单独的I/O端口。Pentium。,2018/12/17,42,2、设备控制器与设备的接口(有一个连接器,一般采用标准接口ANSI、IEEE或ISO)一个设备控制器上,可连接一个或多个设备,相应地,在控制器中要有多个设
19、备接口,一个接口连接一台设备。每个接口中都存在数据、控制和状态三种类型的信号。控制器中的I/O逻辑根据CPU发来的地址信号,去选择一个设备接口。,2018/12/17,43,3、I/O逻辑用于实现对设备的控制。它通过一组控制线与处理机交互,处理机利用该逻辑向控制器发送I/O命令,I/O逻辑对收到的命令进行译码。每当CPU启动一个设备时,一方面将启动命令发送给控制器,另一方面同时通过地址线把地址发送给控制器,由控制器的I/O逻辑对收到的地址进行译码,再根据译出的命令对所选的设备进行控制。其组成如图:,2018/12/17,44,数据寄存器,控制/状态寄存器,I/O逻辑,控制器 与设备 接口1,控
20、制器 与设备 接口i,数据,状态,控制,数据,状态,控制,数据线,地址线,控制线,CPU与控制器接口,控制器与设备接口,设备控制器的组成,2018/12/17,45,7.1.4 I/O通道 一、通道设备的引入为进一步减轻CPU的负担,在CPU和设备控制器之间又增设了通道,其主要目的是为了建立独立的I/O操作,不仅使数据的传送能独立于CPU,而且也希望有关I/O操作的组织、管理及结束也尽量独立,以保证CPU有更多的时间去进行数据处理。即其目的是使一些原来由CPU处理的I/O任务转由通道来承担,从而把CPU解脱出来。,2018/12/17,46,设置通道后,CPU只需向通道发出一条I/O指令。通道
21、接收到该指令后,便从内存中取出本次要执行的通道程序,然后执行该通道程序,仅当通道完成了规定的I/O任务后,才向CPU发出中断信号。,2018/12/17,47,I/O通道是一种特殊的处理机,它具有执行I/O指令的能力。但又与一般的处理机不同,表现在两个方面:一方面是其指令类型单一,另一方面通道没有自己的内存,通道所执行通道程序是存放在主机的内存中的,即它与CPU共享内存。,2018/12/17,48,二、通道类型根据信息交换方式的不同,分成三种类型: 1、字节多路通道 主通道 按字节交换方式工作这种通道中,都含有许多非分配型子通道,其数量几十至数百个,每一个子通道连接一台I/O设备。,2018
22、/12/17,49,子通道按时间片轮转方式共享主通道,当第一个子通道控制其I/O设备完成一个字节的交换后,便立即腾出字节多路通道(主通道),让给第二个子通道使用,当第二个子通道也交换完一个字节后,依样把主通道让给第三个子通道,依次类推。所有子通道轮转一周后,重又返回来由第一个子通道去使用字节多路通道。,2018/12/17,50,只要字节多路通道扫描每个子通道的速率足够快,而连接到子通道上的设备的速率不是太高时,即,通过字节多路通道来连接低速或中速设备时,便不致丢失信息。如图示:,2018/12/17,51,控制器A,控制器B,控制器C,控制器D,控制器N,A1A2子通道A,A1A2子通道B,
23、A1A2子通道C,A1A2子通道N,A1B1C1 A2B2C2,设备,字节多路通道的工作原理图,2018/12/17,52,2、数组选择通道 (数据选择通道以成组方式进行数据传输的)字节多路通道不适于连接高速设备,由此出现了按数组方式进行数据传送的数组选择通道。它可连接多台高速设备,但却只含有一个分配型子通道,在一段时间内只能执行一道通道程序,控制一台设备进行数据传送,致使当某台设备占了该通道后,便一直由它独占,即使无数据传送通道被闲置,也不允许其它设备利用该通道,直到该设备传送完毕释放该通道。,2018/12/17,53,3、数组多路通道 数组选择通道每次只允许一个设备传输数据。而数组多路通
24、道是将数组选择通道传输速率提高和字节多路通道能使各子通道(设备)分时并行操作的优点相结合,而形成的一种新通道。它含有多个非分配型子通道,被广泛用于连接多台高、中速的外围设备,其数据传送是按数组方式进行。,2018/12/17,54,三、“瓶颈”问题通道价格昂贵,通道数量少,成为I/O的瓶颈,造成整个系统吞吐量的下降。如图:P149,要启动磁盘4,须利用通道1和控制器2,但这两者被其它设备占用,则无法启动磁盘4。其它类似。,2018/12/17,55,单通路I/O系统,2018/12/17,56,解决瓶颈问题的最有效的方法,是增加设备到主机间的通路,而不增加通道,如图:P149,即把一个设备连接
25、到多个控制器上,而一个控制器又连接到多个通道上。,2018/12/17,57,存储器,通道2,通道1,控制器1,I/O设备2,I/O设备1,I/O设备4,I/O设备3,控制器2,多路通路I/O系统,2018/12/17,58,7.1.5 总线系统在计算机系统中的各部件,都是通过总线来实现的。总线的性能是用总线的时钟频率、带宽和相应的总线传输速 率等指标来衡量的。随着计算机中CPU和内存速率的提高,字长的增加,以及不断地引入新型设备,促使人类对总线的时钟频率、带宽和传输速率的要求也不断提高,这便推动了总线的不断发展。,2018/12/17,59,CPU,存储器,磁盘 控制器,打印机 控制器,其它
26、 控制器,磁盘驱动器,打印机,总线型I/O系统结构,2018/12/17,60,使之由早期的ISA总线发展为EISA总线、VESA总线,进而又演变成当前广为流行的PCI总线。,2018/12/17,61,1、ISA和EISA总线 1)ISA(Industry Standard Architecture) 总线这是为了1984年推出的80286型微机而设计的总线结构。其总线的带宽为8位,最高传输速率为2MB/s。之后又推出了16位的EISA总线,其最高传输速率为8MB/s,后升至16MB/s,能连接12台设备。,2018/12/17,62,2)EISA(Extended ISA)总线80年代末,
27、ISA总线已难于满足带宽和传输速率的要求,人类又开发出扩展ISA(EISA)总线,其带宽为32位,总线的传输速率高达32Mb/s,也可连接12台外部设备。,2018/12/17,63,2、局部总线(Local Bus)多媒体技术的兴起,特别是全运动视频处理、高保真音响、高速LAN,以及高质量图形处理等技术,都要求总线具有更高的传输速率,这时的EISA总线已难于满足要求,于是,局部总线便应运而生。,2018/12/17,64,所谓局部总线,是指将多媒体卡、高速LAN网卡、高性能图形板等,从ISA总线上卸下来,再通过局部总线控制器直接接到CPU总线上,使之与高速CPU总线相匹配,而打印机、FAX/
28、Modem、CD-ROM等仍挂在ISA总线上。在局部总线中代表是VESA和PCI总线。,2018/12/17,65,1)VESA(Video Electronic Standard Association)总线该总线的设计思想是以低价位迅速占领市场。VESA总线的带宽为32位,最高传输速率为132Mb/s。它在90年代初被推出时,广泛应用于486微机中。但VESA总线仍存在缺点,如:它所能连接的设备数仅为24台,在控制器中无缓冲,难于适应处理器速度的不断提高,也不能支持后出现的Pentium微机。,2018/12/17,66,2)PCI(Peripheral Component Interfa
29、ce)总线随着Pentium芯片的推出,Intel公司分别在1992年和1995年颁布了PCI总线的V1.0和V2.0规范,后者支持64系统。PCI在CPU和外设间插入一复杂的管理层,用于协调数据传输和提供一致的接口。在管理层中配有数据缓冲,通过该缓冲可将线路的驱动能力放大,使PCI最多能支持10种外设,并使高时钟频率的CPU能很好地运行。PCI既可连接ISA、EISA等传统型总线,又可支持Pentium的64位系统。,2018/12/17,67,7.2 I/O传送控制方式,7.2.1 程序I/O方式 7.2.2 中断驱动I/O控制方式 7.2.3 直接存储器访问DMA控制方式 一、DMA控制
30、方式的引入 二、DMA控制器的组成 三、DMA工作过程 7.2.4 I/O通道控制方式 一、I/O通道控制方式 二、通道程序,2018/12/17,68,随着计算机技术的发展,I/O控制方式也在不断地发展。当系统引入中断机制后,使I/O方式从最简单的程序I/O方式发展为中断驱动方式,DMA控制器的出现,又使I/O方式在传输单位上发生了变化,即从以字节为传输单位扩大到以数据块为传输单位,大大改善了块设备的I/O性能,通道的出现,又使I/O操作的组织和数据的传送,能独立地进行而无需CPU干预。,2018/12/17,69,选择和衡量控制方式的原则,数据传送速度足够高,能满足用户的需要但又不丢失数据
31、。 系统开销小,所需的处理控制程度少。 能充分发挥硬件资源的能力,使得I/O设备尽量忙,CPU等待时间少。,2018/12/17,70,在整个I/O控制的发展过程中,始终贯穿着一条宗旨:尽量减少主机对I/O控制的干预,把主机从繁杂的I/O控制事务中解脱出来,以更多地去完成数据处理任务。其发展过程经历了四个阶段。,2018/12/17,71,7.2.1 程序直接控制 I/O方式:轮询方式就是由用户进程来直接控制内存或CPU和外围设备之间的信息传送。这种方式的控制者是用户进程。,2018/12/17,72,用户进程通过CPU向设备发命令“start”,用户进程进入测试等待状态,等待期间,CPU不断
32、用一条测试指令检查设备的控制(状态)寄存器。设备准备就绪后,置寄存器为完成状态发“Done”命令,开始向内存或CPU传送数据,所传送的数据先经过数据缓冲寄存器,每当寄存器满时产生一次中断。,2018/12/17,73,向I/O控制器发读命令,读I/O控制器的状态,从I/O控制器中读入字,向存储器中写字,检查状态?,传送完成?,未就绪,就绪,未完,完成,下条指令,出错,CPU-I/O,I/O-CPU,I/O-CPU,CPU-内存,程序I/O方式,2018/12/17,74,使用程序控制I/O将一个字符串写到打印机,Copy_from_user(buffer,p,count)/p是内核缓冲区 Fo
33、r(i=0;icount;i=)/对每个字符循环while(*printer_status_reg!=READY);/循环直到就绪*printer_data_register=pi;/输出一个字符return_to_user();,2018/12/17,75,向I/O控制器发读命令,读I/O控制器的状态,从I/O控制器中读入字,向内存中写字,检查状态?,传送完成?,就绪,未完,完成,下条指令,出错,CPU-I/O,I/O-CPU,I/O-CPU,CPU-内存,中断驱动方式,CPU做其它事,中断,返回,2018/12/17,76,向I/O控制器发读块命令,读DMA控制器的状态,下条指令,CPU-
34、DMA,DMA-CPU,CPU做其它事,中断,DMA方式,返回,2018/12/17,77,程序直接控制方式,简单,硬件开销小。 缺点: (1)CPU和外设只有串行工作,CPU一直处于空闲状态。 (2)CPU在一段时间内只能和一台外设交换数据,不能实现设备之间的并行。 (3)靠测试设备标志触发器的状态位控制数据传送,无法发现和处理由于设备或其他硬件所产生的错误。 如果一个字符输入输出时间短,忙等待也可以,特别在嵌入式系统中,CPU没有其他事情可做,忙等待也是合理的,2018/12/17,78,7.2.2 中断驱动I/O控制方式为减少CPU的等待时间及提高系统的并行度。中断方式被用来控制外设和内
35、存与CPU之间的数据传送。要求CPU与设备之间有相应的中断请求线,设备控制器的控制状态寄存器的相应的中断允许位。,2018/12/17,79,数据输入的步骤: (1)首先,进程通过CPU发“start”指令启动外设准备数据,并将中断允许位打开。 (2)在进程发出启动指令后,该进程转向等待状态。 (3)输入完时,设备控制器通过中断请求线向CPU发中断信号,转中断处理程序处理。 (4)以后重新又被进程调度选中,再从断点处继续运行。,2018/12/17,80,特点: (1)数据缓冲器每满一次,要产生一次中断,由于缓冲器较小,所以,在一次数据传送过程中会发生多次中断。 (2)若外设速度也较快,可能造
36、成缓冲寄存器中的数据由于CPU来不及取走而丢失。,2018/12/17,81,7.2.3 直接存储器访问(DMA控制)方式 一、DMA控制方式的引入基本思想是在外设和内存之间开辟直接的数据交换通路。DMA中,I/O控制器具有比中断方式和程序直接控制方式时更强的功能。DMA控制器可代替CPU控制内存和设备之间成批的数据交换。,2018/12/17,82,(1)数据传输的基本单位是数据块,即CPU与I/O设备之间,每次传送至少是一个数据块。 (2)所传送的数据是从设备直接送入内存的,或者相反 (3)仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在控制器的控制下完成的。可见
37、,进一步提高了CPU与I/O设备的并行操作程度。,2018/12/17,83,二、DMA控制器的组成DMA控制器由三部分组成: (1)主机与DMA控制器的接口 (2)DMA控制器与块设备的接口 (3)I/O控制逻辑 其关系如图示:P153,2018/12/17,84,DR,MAR,DC,CR,I/O 控制 逻辑,CPU,内存,主机-控制器接口,控制器与块设备接口,DMA控制器,系统总线,命令,count,DMA控制器的组成,2018/12/17,85,本节主要介绍主机与控制器之间的接口。为了实现控制器与主机之间成块数据的直接交换,必须在DMA控制器中设置以下四类寄存器:,2018/12/17,
38、86,(1)命令/状态寄存器CR。用于接收从CPU发来的I/O命令或有关控制信息,或设备的状态 (2)内存地址寄存器MAR。用于存放数据从设备传送到内存的目标地址,或由内存到设备的内存源地址,2018/12/17,87,(3)数据寄存器DR。用于暂存从设备到内存或从内存到设备的数据 (4)数据计数器DC。存放本次CPU要读或写的字节数。,2018/12/17,88,三、DMA工作过程 (1)当进程要求设备输入一批数据时,CPU将准备存放输入数据的内存始址以及要传送的字节数分别送入DMA控制器中的内存地址寄存器和传送字节计数器,另外,还要将中断位和启动位置为1,以启动设备开始进行数据输入并允许中
39、断。,2018/12/17,89,(2)发出数据要求的进程进入等待状态,进程调度程序调度其他进程占据CPU。 (3)输入设备不断地挪用CPU工作周期,将数据寄存器中的数据源源不断地写入内存,直到所要求的字节全部传送完毕。,2018/12/17,90,(4)DMA控制器在传送字节数完成时通过中断请求线发出中断信号,CPU收到中断信号后转中断处理程序,唤醒等待输入完成的进程,并返回被中断程序。 (5)在以后的某个时刻,进程调度程序选中提出请求输入的进程,该进程从指定的内存始址取出数据做进一步处理。,2018/12/17,91,特点,中断处理是在DMA控制器的控制下不经过CPU控制完成的,排除了因并
40、行操作设备过多时CPU来不及处理或因速度不匹配而造成的数据丢失现象。 DMA控制器的设置不可能过多。,2018/12/17,92,7.2.4 通道控制方式 一、I/O通道控制方式的引入DMA方式,已显著地减少了CPU的干预,已由以字节为单位的干预减少到以数据块为单位的干预,而且,每次干预时并无数据拷贝的操作,即不必把数据从控制器拷贝到内存,或者相反。,2018/12/17,93,但CPU每发出一条I/O指令,只能去读或写一个连续的数据块,当需要一次去读多个离散的数据块且将它们分别传送到不同的内存区域,或者相反时,需由CPU分别发出多条I/O指令及进行多次中断处理才能完成。,2018/12/17
41、,94,I/O通道方式是DMA方式的发展,它可进一步减少CPU的干预,即把对一个数据块的读或写为单位的干预,减少为对一组数据块的读或写及有关的控制和管理为单位的干预,同时,又可实现CPU、通道和I/O设备三者的并行工作,从而更有效地提高了整个系统的资源利用率。是一种以内存为中心,实现设备与内存直接交换数据的控制方式。,2018/12/17,95,二、通道程序通道是通过执行通道程序,并与设备控制器来共同实现对I/O设备的控制的。通道程序是由一系列的通道指令(或称为通道命令)所构成。通道指令与一般的机器指令不同,在它的每条指令中包含如下信息:,2018/12/17,96,(1)操作码。它规定了指令
42、所执行的操作,如读、写、控制等操作。 (2)内存地址。标明字符送入内存(读操作)和从内存取出(写操作)时的内存首址。 (3)计数。表示本条指令所要读(或写)数据的字节数。,2018/12/17,97,(4)通道程序结束位P。用于表示通道程序是否结束。P1表示本条指令是通道程序的最后一条指令。 (5)记录结束标志R。R0表示本通道指令与下一条通道指令所处理的数据同属一个记录;R1表示这是处理某记录的最后一条指令。,2018/12/17,98,三、通道控制方式的数据输入过程 (1)当进程要求输入数据时,CPU发出启动指令指明I/O操作、设备号和对应通道 (2)对应通道接收到CPU发来的启动指令之后
43、,把存放在内存中的通道指令程序读出,并执行通道程序,控制设备将数据传送到内存中指定的区域。,2018/12/17,99,(3)若数据传送结束。则向CPU发出中断请求。CPU收到中断请求信号后转中断处理程序,唤醒等待输入完成的进程,并返回被中断程序。 (4)在以后的某个时刻,进程调度程序选中提出请求输入的进程,该进程从指定的内存始址取出数据做进一步处理。,2018/12/17,100,例:由六条通道指令所构成的简单的通道程序。该程序的功能是将内存中不同地址的数据,写成多个记录。其中,前三条指令是分别将813892单元中的80个字符、10341173单元中的140个字符和58305889单元中的6
44、0个字符写成一个记录;第4条指令是单独写一个具有300个字符的记录;第5,6条指令共写500个字符的记录。,2018/12/17,101,2018/12/17,102,7.3 缓冲管理,7.3.1 缓冲的引入 7.3.2 单缓冲 7.3.3 双缓冲 7.3.4 循环缓冲一、循环缓冲的组成 二、缓冲区的使用三、进程同步 7.3.5 缓冲池一、缓冲池的组成 二、Getbuf过程和Putbuf过程三、缓冲区的工作方式,2018/12/17,103,为了匹配外设与CPU之间的处理速度,为了减少中断次数和CPU对中断处理的时间,也为了解决DMA或通道方式时的瓶颈问题,在设备管理引入了用来暂存数据的缓冲技
45、术。 7.3.1 缓冲的引入 1、缓和CPU与I/O设备间速度不匹配的矛盾,2018/12/17,104,系统中,凡在数据到达速率与其离去速率不同的地方,都可设置缓冲,以缓和它们速度不匹配的矛盾。,2018/12/17,105,一般的程序都是时而进行计算,时而产生输出的。若没有缓冲,则程序在输出数据时,必然会由于打印机的速度跟不上,而使CPU停下来等待;在计算阶段,打印机又空闲无事,显然,若在打印机或控制器中设置一缓冲区,用于快速地暂存程序的输出数据,以后由打印机“慢慢地”从中取出数据打印,这样,可使CPU与I/O设备并行工作。,2018/12/17,106,2、减少对CPU的中断频率,放宽对
46、中断响应时间的限制若从远地终端发来的数据仅用一位缓冲来接收,则必须在每收到一位数据时便中断CPU一次,这样,对于速率为9.6kb/s的数据通信来说,就意味着其中断CPU的频率也为9.6kHz,即每100us要中断CPU一次,而且CPU必须在100us内予以响应,否则缓冲区内的数据将被冲掉。,2018/12/17,107,若设置一个具有8位的缓冲寄存器,则可使CPU被中断的频率降低为只有一位缓冲时的1/8,若再增设一个8位寄存器中,则又可把CPU对中断的响应时间放宽到800us。 3、提高CPU和I/O设备之间的并行性,2018/12/17,108,凡是通信问题中一方比另一方速度快时,为了速度匹
47、配而引入比慢方快而与快方更匹配、但因各种局限性而不能完全代替慢方的中间层,称之为缓冲。缓冲本质上是一种异步技术。,2018/12/17,109,根据I/O控制方式,缓冲的实现方法有两种:一种是采用专用硬件缓冲器,另一种方法是在内存划出一个具有n个单元的专用缓冲区,以便存放输入输出的数据。内存缓冲区又称软件缓冲。内存缓冲区可以分为在用户空间和内核空间,2018/12/17,110,缓冲进一步分为5种: (1)在CPU和内存间的Cache (2)设在I/O设备或控制器内部的纯硬件缓冲区。设备内部的缓冲区通常不占I/O地址空间,不为程序和CPU所知,控制器内部的缓冲区有些占地址空间 (3)操作系统的
48、内存缓冲区 (4)用户程序内自设的缓冲区 (5)脱机与假脱机也是缓冲技术,在外存开设。,2018/12/17,111,缓冲的实现无论是哪种,都有单、双、多缓冲的选择问题。即缓冲区的长度是放一个记录,两个记录,还是多个记录,越多则速度匹配效果越好。现在一般采用多缓冲技术。对硬件是多缓冲,对软件就是缓冲池。,2018/12/17,112,7.3.2 单缓冲单缓冲是在设备和处理机之间设置一个缓冲器。,2018/12/17,113,用户工作区,缓冲区,用户进程,操作系统,传送,输入,I/O设备,单缓冲,2018/12/17,114,设备和处理机交换数据时,先把被交换数据写入缓冲器,然后,再从缓冲器取走数据。但缓冲器是临界资源,不允许多个进程同时对一个缓冲器操作,所以,单缓冲能匹配设备和处理机的处理速度,但设备和设备之间不能通过单缓冲达到并行。,2018/12/17,115,7.3.3 双缓冲(实现双向传输)解决两台外设、打印机和终端之间的并行操作问题的办法是设置双缓冲。CPU可把输出到打印机的数据放入到一个缓冲器,让打印机慢慢打印,然后,它又可从另一个为终端设置的缓冲器中读取所需要的输入数据。,2018/12/17,116,