第5章设备管理 操作系统_第1页
第5章设备管理 操作系统_第2页
第5章设备管理 操作系统_第3页
第5章设备管理 操作系统_第4页
第5章设备管理 操作系统_第5页
已阅读5页,还剩144页未读 继续免费阅读

下载本文档

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

文档简介

第五章微备管理

5.1I/O系统

5.2I/O控制方式

5.3缓冲管理

5.4I/O软件

5.5设备分配

5.6磁盘存储器的管理

5.1I/O系统

5.1.1I/O设备

LI/O设备的类型

重要的性能指标有:设备使用特性、数据传输速率、数据

的传输单位、设备共享属性等。

1)按设备的使用特性分类

第一类是存储设备,也称外存或后备存储器、辅助存储

器,是计算机系统用以存储信息的主要设备。

第二类就是输入/输出设备,又具体可分为输入设备、输

出设备和交互式设备。

2)按传输速率分类

第一类是低速设备,这是指其传输速率仅为每秒钟几个

字节至数百个字节的一类设备。

第二类是中速设备,这是指其传输速率在每秒钟数千个

字节至数十万个字节的一类设备。

第三类是高速设备,这是指其传输速率在数百个千字节

至千兆字节的一类设备。

3)按信息交换的单位分类

第一类是块设备(BlockDevice),这类设备用于存储信息。

基本特征是其传输速率较高,通常每秒钟为几兆位;另一特征

是可寻址,即对它可随机地读/写任一块;止匕外,I/O常采用

DMA方式。

第二类是字符设备(CharacterDevice),用于数据的输入和

输出。基本特征是其传输速率较低,通常为几个字节至数千字

节;另一特征是不可寻址,即输入/输出时不能指定数据的输

入源地址及输出的目标地址;止匕外,输入/输出常采用中断驱

动方式。

少按设备的共享属性分类

(1)独占设备。这是指在一段时间内只允许一个用户(进

程)访问的设备,即临界资源。应当注意,独占设备的分配有

可能引起进程死锁。

(2)共享设备。这是指在一段时间内允许多个进程同时

访问的设备。当然,对于每一时刻而言,该类设备仍然只允

许一个进程访问。显然,共享设备必须是可寻址的和可随机

访问的设备。

(3)虚拟设备。这是指通过虚拟技术将一台独占设备变

换为若干台逻辑设备,供若干个用户(进程)同时使用。

2.设备与控制器之间的接口

接口中有三种类型的信号(见图5-1所示),各对应一条

信号线。

1/m备

图5-1设备与控制器间的接口

1)数据信号线

这类信号线用于在设备和设备控制器之间传送数据信

号。数据的并行与串行转换。

2)控制信号线

这是作为由设备控制器向I/O设备发送控制信号时的通路。

该信号规定了设备将要执行的操作。

3)状态信号线

这类信号线用于传送指示设备当前状态的信号。

5.1.2设备控制器

1.攻备于金制器的基本功能

1)接收和识别命令

CPU可以向控制器发送多种不同的命令,设备控制器应

能接收并识别这些命令。为此,在控制器中应具有相应的控

制寄存器,用来存放接收的命令和参数,并对所接收的命令

进行译码。例如,磁盘控制器可以接收CPU发来的Read、

Write>Format等15条不同的命令,而且有些命令还带有参数;

相应地,在磁盘控制器中有多个寄存器和命令译码器等。

2)数据交换

这是指实现CPU与控制器之间、控制器与设备之间的数据

交换。对于前者,是通过数据总线,由CPU并行地把数据写入

控制器,或从控制器中并行地读出数据;对于后者,是设备

将数据输入到控制器,或从控制器传送给设备。为此,在控

制器中须设置数据寄存器。

3)标识和报告设备的状态

控制器应记下设备的状态供CPU了解。例如,仅当该设

备处于发送就绪状态时,CPU才能启动控制器从设备中读出

数据。为此,在控制器中应设置一状态寄存器,用其中的每

一位来反映设备的某一种状态。当CPU将该寄存器的内容读

入后,便可了解该设备的状态。

4)地址识别

一就像内存中的每一个单元都有一个地址一样,系统中的

每一个设备也都有一个地址,而设备控制器又必须能够识别

它所控制的每个设备的地址。此外,为使CPU能向(或从)寄存

器中写入(或读出)数据,这些寄存器都应具有唯一的地址。例

如,在IB-MPC机中规定,硬盘控制器中各寄存器的地址分别

为320〜32F之一。控制器应能正确识别这些地址,为此,在

控制器中应配置地址译码器。

5)数据缓冲

由于I/O设备的速率较低而CPU和内存的速率却很高,故

在控制器中必须设置一缓冲器。在输出时,用此缓冲器暂存

由主机高速传来的数据,然后才以I/O设备所具有的速率将缓

冲器中的数据传送给I/O设备;在输入时,缓冲器则用于暂存

从I/O设备送来的数据,待接收到一批数据后,再将缓冲器中

的数据高速地传送给主机。

6)差错控制

设备控制器还兼管对由I/O设备传送来的数据进行差错检

测。若发现传送中出现了错误,通常是将差错检测码置位,

并向CPU报告,于是CPU将本次传送来的数据作废,并重新

进行一次传送。这样便可保证数据输入的正确性。

2.设备控制器的组成

1)设备控制器与处理机的接口

该接口用于实现CPU与设备控制器之间的通信。共有三

类信号线:数据线、地址线和控制线。数据线通常与两类寄存

器相连接,第一类是数据寄存器(在控制器中可以有一个或多

个数据寄存器,用于存放从设备送来的数据(输入)或从CPU送

来的数据(输出));第二类是控制/状态寄存器(在控制器中可以

有一个或多个这类寄存器,用于存放从CPU送来的控制信息

或设备的状态信息)。

2)设备控制器与设备的接口

在一个设备控制器上,可以连接一个或多个设备。相应

地,在控制器中便有一个或多个设备接口,一个接口连接一

台设备。在每个接口中都存在数据、控制和状态三种类型的

信号。控制器中的I/O逻辑根据处理机发来的地址信号去选择

一个设备接口。

3)I/O逻辑

在设备控制器中的I/O逻辑用于实现对设备的控制。它通

过一组控制线与处理机交互,处理机利用该逻辑向控制器发

送I/O命令;I/O逻辑对收到的命令进行译码。每当CPU要启动

一个设备时,一方面将启动命令发送给控制器;另一方面又

同时通过地址线把地址发送给控制器,由控制器的I/O逻辑对

收到的地址进行译码,再根据所译出的命令对所选设备进行

控制。设备控制器的组成示于图5-2中。

CPLfe控制器接口控制器与设备接口

图5-2设备控制器的组成

5.1.3I/O通道

1.I/O通道(I/OChannel)设备的引入

主要目的是为了建立独立的I/O操作,不仅使数据的传送

能独立于CPU,而且也希望有关对I/O操作的组织、管理及其

结束处理尽量独立,以保证CPU有更多的时间去进行数据处

理;或者说,其目的是使一些原来由CPU处理的I/O任务转由

通道来承担,从而把CPU从繁杂的I/O任务中解脱出来。

I/O通道是一种特殊的处理机,主要特点:

一是其指令类型单一;二是通道与CPU共享内存。

2.通道类型

1)字节多路通道(ByteMultiplexorChannel)

这是一种按字节交叉方式工作的通道。只要字节多路通

道扫描每个子通道的速率足够快,而连接到子通道上的设备

的速率不是太高时,便不致丢失信息。

图5-3字节多路通道的工作原理

2)数组选择通道(BlockSelectorChannel)

可以连接多台高速设备,但只含有一个分配型子通道,

在一段时间内只能执行一道通道程序,控制一台设备进行数

据传送,致使当某台设备占用了该通道后,便一直由它独占,

即使是它无数据传送,通道被闲置,也不允许其它设备使用

该通道,直至该设备传送完毕释放该通道。

3)数组多路通道(BlockMultiplexorChannel)

数组选择通道虽有很高的传输速率,但它却每次只允许

一个设备传输数据。数组多路通道是将数组选择通道传输速

率高和字节多路通道能使各子通道(设备)分时并行操作的优

点相结合而形成的一种新通道。它含有多个非分配型子通道,

因而这种通道既具有很高的数据传输速率,又能获得令人满

意的通道利用率。也正因此,才使该通道能被广泛地用于连

接多台高、中速的外围设备,其数据传送是按数组方式进行

的。

3.“瓶颈”问题

由于通道价格昂贵,致使机器中所设置的通道数量势

必较少,这往往又使它成了I/O的瓶颈,进而造成整个系统

吞吐量的下降。例如,在图5-4中,假设设备1至设备4是四

个磁盘,为了启动磁盘4,必须用通道1和控制器2;但若这

两者已被其它设备占用,必然无法启动磁盘4。类似地,若

要启动盘1和盘2,由于它们都要用到通道1,因而也不可能

启动。这些就是由于通道不足所造成的“瓶颈”现象。

图5-4单通路I/O系统

解决“瓶颈”问题的最有效的方法,便是增加设备到主

机间的通路而不增加通道。

图5-5多通路I/O系统

5.1.4总线系统

时钟频率、带宽和传输速率。

磁盘驱动器

系统总线

图5-6总线型I/O系统结构

1.ISA和EISA总线

1)(Inducts乎StandardArchitecture)总线

这是为在1984年推出的80286型微机而设计的总线结构。

其总线的带宽为8位,最高传输速率为2Mb/so之后不久又推

出了16位的(EISA)总线,其最高传输速率为8Mb/s,后又升

至16Mb/s,能连接12台设备。

2)EISA(ExtendedISA)总线

到20世纪80年代末期,ISA总线已难于满足带宽和传输速

率的要求,于是人们又开发出扩展ISA(EISA)总线,其带宽为

32位,总线的传输速率高达32Mb/s,同样可以连接12台外部

设备。

2.局部总线(LocalBus)

—所谓局部总线,是指将多媒体卡、高速LAN网卡、高性

能图形板等,从ISA总线上卸下来,再通过局部总线控制器直

接接到CPU总线上,使之与高速CPU总线相匹配,而打印机、

FAX/Modem、CDROM等仍挂在ISA总线上。在局部总线中较

有影响的是VESA总线和PCI总线。

1)VESA(VideoElectronicStandardAssociation)

总线

带宽为32位,最高传输速率为132Mb/s,设备数仅为2〜

4台,在控制器中无缓冲,不支持Pentium微机。

2)PCI(PeripheralComponentInterface)总线

支持64位系统,配有缓冲,最多支持10种外设,最大传输

速率可达132Mb/s。PCI既可连接ISA、EISA等传统型总线,

又可支持Pentium的64位系统。

5.2I/O控制方式

5.2.1程序I/O方式

5.2.2中断驱动I/O控制方式

5.2.3直接存储器访问(DMA)I/O控制方式

下一条指令下一条指令下一条指令

(a)程序1/6式(b)中断驱动方式©DM泌式

图5-7程序I/O和中断驱动方式的流程

5.2.3直接存储器访问(DMA)I/O控制方式

(Dirnct^MemoryAccess)控制方式的弓|入

采用中断驱动I/O方式时的CPU是以字(节)为单位进行干

预的。

DMA的特点是:

(1)数据传输的基本单位是数据块,即在CPU与I/O设备

之间,每次传送至少一个数据块;

(2)所传送的数据是从设备直接送入内存的,或者相反;

(3)仅在传送一个或多个数据块的开始和结束时,才需

CPU干预,整块数据的传送是在控制器的控制下完成的。

2.DMA控制器的组成

DMA控制器由三部分组成:主机与DMA控制器的接口;

DMA控制器与块设备的接口;I/O控制逻辑。图5-8示出了

DMA控制器的组成。这里主要介绍主机与控制器之间的接口。

DMA控制器中四类寄存器:

(1)命令/状态寄存器(CR)。

(2)内存地址寄存器(MAR)。

(3)数据寄存器(DR)。

(4)数据计数器(DC)。皿4r

CPU内存主机一控制器接口控制器与块设备接口

I/控O

制□

逻*

辑O

命令

--------►系统总线DM阂制器

图5-8DMA控制器的组成

图5-9DMA方式的工作流程图

5.2.4I/O通道控制方式

LI/O通道控制方式的引入

把对一个数据块的读(或写)为单位的干预减少为对一组数

据块为单位的读(或写)及有关的控制和管理的干预。

实现CPU、通道和I/O设备三者的并行操作,从而更有效

地提高整个系统的资源利用率。

2.通道程序

----通遒是通11通行通遒油用,并与设备控制器共同实现对

I/O设备的控制的。通道程序是由一系列通道指令(或称为通

道命令)所构成的。通道指令与一般的机器指令不同,在它的

每条指令中都包含下列诸信息:

(1)操作码。操作码规定了指令所执行的操作,如读、

写、控制等操作。

(2)内存地址。内存地址标明字符送入内存(读操作)和

从内存取出(写操作)时的内存首址。

(3)计数。该信息表示本条指令所要读(或写)数据的字节

数。

(4)通道程序结束位P。该位用于表示通道程序是否结束。

r一1衣小平氽才曰专是胆道程序的最后一条指令。

(5)记录结束标志R。R=0表示本通道指令与下一条指令

所处理的数据是同属于一个记录;R=1表示这是处理某记录

的最后一条指令。

下面示出了一个由六条通道指令所构成的简单的通道程

序。该程序的功能是将内存中不同地址的数据写成多个记录。

其中,前三条指令是分别将813〜892单元中的80个字符和

1034〜H73单元中的140个字符及5830〜5889单元中的60个字

符写成一个记录;第4条指令是单独写一个具有300个字符的

记录;第5、6条指令共写含500个字符的记录。

操作PR计数内存地址

WRITE0080813

WRITE001401034

WRITE01605830

WRITE013002000

WRITE002501650

WRITE112502720

5.3缓冲管理

5.3.1缓冲的引入

(1)缓和CPU与I/O设备间速度不匹配的矛盾。

(2)减少对CPU的中断频率,放宽对CPU中断响应时间的

限制。

(3)提高CPU和I/O设备之间的并行性。

9.6Kb/s

3A1位缓冲

8位缓冲寄存器

9.6Kb/s

(b)送内存

送内存

图5-10利用缓冲寄存器实现缓冲

5.3.2单缓冲和双缓冲

1・单缓冲(sfii赶eBuffer)

在单缓冲情况下,每当用户进程发出一I/O请求时,操

作系统便在主存中为之分配一缓冲区,如图5-11所示。在

块设备输入时,假定从磁盘把一块数据输入到缓冲区的时间

为T,操作系统将该缓冲区中的数据传送到用户区的时间为M,

而CPU对这一块数据处理(计算)的时间为a由于麻口c是可以

并行的(见图5T1),当7>丽,系统对每一块数据的处理时

间为济北反之则为伊C,故可把系统对每一块数据的处理时

间表示为Max(C,T)+Mo

用户进程

I/CS备

图5-H单缓冲工作示意图

2.双缓冲(DoubleBuffer)

—为了加快岫入相岫出情度,提高设备利用k人们又引

入了双缓冲区机制,也称为缓冲对换(BufferSwapping)o在

设备输入时,先将数据送入第一缓冲区,装满后便转向第二

缓冲区。此时操作系统可以从第一缓冲区中移出数据,并送

入用户进程(见图5-12)。接着由CPU对数据进行计算。在双

缓冲时,系统处理一块数据的时间可以粗略地认为是Max(C,

T)o如果C〈T,可使块设备连续输入;如果C>T,则可使CPU

不必等待设备输入。对于字符设备,若采用行输入方式,则

采用双缓冲通常能消除用户的等待时间,即用户在输入完第

一行之后,在CPU执行第一行中的命令时,用户可继续向第

二缓冲区输入下一行数据。

用户进程

I/O设备

((缓冲1)与(缓冲2)4(缓冲3)n(缓冲4)

(b)

图5-12双缓冲工作示意图

MLWAMm

(a)单缓冲(b)双缓冲

图5-13双机通信时缓冲区的设置

5.3.3循环缓冲

1.循环缓冲的组成

(1)多个缓冲区。在循环缓冲中包括多个缓冲区,其每

个缓冲区的大小相同。作为输入的多缓冲区可分为三种类

型:用于装输入数据的空缓冲区R、已装满数据的缓冲区G

以及计算进程正在使用的现行工作缓冲区C,如图5-14所示。

(2)多个指针。作为输入的缓冲区可设置三个指针:用于

指示计算进程下一个可用缓冲区G的指针Nextg、指示输入进

程下次可用的空缓冲区R的指针Nexti,以及用于指示计算进

程正在使用的缓冲区C的指针Current。

[JNexti[JNexti

G62|R|G62|R

G53|_G_jC=|G53|c]c二Current

介Nextg

图5-14循环缓冲

2.循环缓冲区的使用

计算进程和输入进程可利用下述两个过程来使用循环缓

冲区。

读与写

(1)Getbuf过程。G缓冲区和R缓冲区。

(2)Releasebuf过程。G缓冲区和R缓冲区。

3.进程同步

使用输入循环缓冲,可使输入进程和计算进程并行执行。

相应地,指针Nexti和指针Nextg将不断地沿着顺时针方向移

动,这样就可能出现下述两种情况:

(1)Nexti指针追赶上Nextg指针。这意味着输入进程输入

数据的速度大于计算进程处理数据的速度,全部装满,再无

缓冲区可用。

(2)Nextg指针追赶上Nexti指针。这意味着输入数据的速

度低于计算进程处理数据的速度,全部抽空,再无装有数据

的缓冲区供计算进程提取数据。

5.3.4缓冲池

1.缓冲池的组成

对于既可用于输入又可用于输出的公用缓冲池,其中至

少应含有以下三种类型的缓冲区:

①空(闲)缓冲区;

②装满输入数据的缓冲区;

③装满输出数据的缓冲区。

为了管理上的方便,可将相同类型的缓冲区链成一个队

列,于是可形成以下三个队列?

(1)空缓冲队列emq。这是由空缓冲区所链成的队列。

其队首指针F(emq)和队尾指针L(emq)分别指向该队列的首缓

冲区和尾缓冲区。

(2)输入队列inq。这是由装满输入数据的缓冲区所链成

的队列。其队首指针F(inq)和队尾指针L(inq)分别指向该队列

的首缓冲区和尾缓冲区。

(3)输出队列outq。这是由装满输出数据的缓冲区所链

以网队少1J。只队目于日力^Wrtq)和队尾指针L(outq)分别指向

该队列的首缓冲区和尾缓冲区。

除了上述三个队列外,还应具有四种工作缓冲区:①用

于收容输入数据的工作缓冲区;②用于提取输入数据的工作

缓冲区;③用于收容输出数据的工作缓冲区;④用于提取

输出数据的工作缓冲区。

ProcedureGetbuf(type)

begin

™^Wait(RS(type));

2.Getbuf过程Wait(MS(type));

B(number):=Takebuf(type);

和Putbuf过程Signal(MS(type));

end

每一缓冲队列

ProcedurePutbuf(type,number)

设置一个互斥信号begin

量MS(type)和一个Wait(MS(type));

Addbuf(type,number);

资源信号量

Signal(MS(type));

RS(type)oSignal(RS(type));

end

3.缓冲区的工作方式P177

缓冲区可以工作在收容输入、提取输入、收容输出和提

取输出四种工作方式下,如图5-15所示。

缓冲池

收容输入提取输入用

提取输出收容输出序

图5-15缓冲区的工作方式

5.4I/O软件

5.4.1I/O软件的设计目标和原则

从系统的观点出发,采用多种技术和措施,解决由于外

部设备与CPU速度不匹配所引起的问题,提高主机和外设的

并行工作能力,提高系统效率,成为操作系统的一个重要目

标。

具体而言,I/O软件应达到下面的几个目标:

1)与具体设备无关

―对于I/O系统中许多种类不同的设备,作为程序员,只需

要知道如何使用这些资源来完成所需要的操作,而无需了解

设备的有关具体实现细节。例如,应用程序访问文件时,不

必去考虑被访问的是硬盘、软盘还是CD-ROM;对于管理软

件,也无需因为I/O设备变化,而重新编写涉及设备管理的程

序。

为了提高OS的可移植性和易适应性,I/O软件应负责屏蔽

设备的具体细节,向高层软件提供抽象的逻辑设备,并完成

逻辑设备与具体物理设备的映射。

2)统一命名

—要实现上述的设备无关性,其中一项重要的工作就是如

何给I/O设备命名。不同的操作系统有不同的命名规则,一

般而言,是在系统中对各类设备采取预先设计的、统一的逻

辑名称进行命名,所有软件都以逻辑名称访问设备。这种统

一命名与具体设备无关,换言之,同一个逻辑设备的名称,

在不同的情况下可能对应于不同的物理设备。

3)对错误的处理

一般而言,错误多数是与设备紧密相关的,因此对于错

误的处理,应该尽可能在接近硬件的层面处理,在低层软件

能够解决的错误就不让高层软件感知,只有低层软件解决不

了的错误才通知高层软件解决。许多情况下,错误恢复可以

在低层得到解决,而高层软件不需要知道。

4)缓冲技术

由于CPU与设备之间的速度差异,无论是块设备还是

字符设备,都需要使用缓冲技术。对于不同类型的设备,

其缓冲区(块)的大小是不一样的,块设备的缓冲是以数据

块为单位的,而字符设备的缓冲则以字节为单位。就是同

类型的设备,其缓冲区(块)的大小也是存在差异的,如不

同的磁盘,其扇区的大小有可能不同。因此,I/O软件应能

屏蔽这种差异,向高层软件提供统一大小的数据块或字符

单元,使得高层软件能够只与逻辑块大小一致的抽象设备

进行交互。

5)设备的分配和释放

对于系统中的共享设备,如磁盘等,可以同时为多个

用户服务。对于这样的设备,应该允许多个进程同时对其

提出I/O请求。但对于独占设备,如键盘和打印机等,在某

一段时间只能供一个用户使用,对其分配和释放的不当,

将引起混乱,甚至死锁。对于独占设备和共享设备带来的

许多问题,I/O软件必须能够同时进行妥善的解决。

6)I/O控制方式

~针对具有不同传输速率的设备,综合系统效率和系统代价

等因素,合理选择I/O控制方式,如像打印机等低速设备应采

用中断驱动方式,而对磁盘等高速设备则采用DMA控制方式

等,以提高系统的利用率。为方便用户,I/O软件也应屏蔽这

种差异,向高层软件提供统一的操作接口。

目前在I/O软件中已普遍采用了层次式结构,将系统中

的反帝操作他,管理软计万为若干个层次,每一层都利用其下

层提供的服务,完成输入、输出功能中的某些子功能,并屏

蔽这些功能实现的细节,向高层提供服务。

在层次式结构的I/O软件中,只要层次间的接口不变,

对每个层次中的软件进行的修改都不会引起其下层或高层代

码的变更,仅最低层才会涉及到硬件的具体特性。通常把

I/O软件组织成四个层次:

(1)用户层软件:实现与用户交互的接口,用户可直接

调用在用户层提供的、与I/O操作有关的库函数,对设备进行

操作。

(2)设备独立性软件:负责实现与设备驱动器的统一接

口、设备命名、设备的保护以及设备的分配与释放等,同时

为设备管理和数据传送提供必要的存储空间。

(3)设备驱动程序:与硬件直接相关,负责具体实现系

统对设备发出的操作指令,驱动I/O设备工作的驱动程序。

(4)中断处理程序:用于保存被中断进程的CPU环境,转

入相应的中断处理程序进行处理,处理完后再恢复被中断进

程的现场后返回到被中断进程。

I/O应答

用户层软件1产生I/O请求、格式化I/O、Spooling

1设备独立性软件映射、保护、分块、缓冲、分配

1设备驱动程序1设置设备寄存器,检查寄存器状态

1中断处理程序

硬件

1执行I/O操作

图5-16I/O系统的层次及功能

5.4.2中断处理程序P179*5个步骤

1.唤醒被阻塞的驱动(程序)进程

当中断处理程序开始执行时,首先去唤醒处于阻塞状态

的驱动(程序)进程。如果是采用了信号量机制,则可通过执

行signal操作,将处于阻塞状态的驱动(程序)进程唤醒;在采

用信号机制时,将发送一信号给阻塞进程。

2.保护被中断进程的CPU环境

—通常由硬件自动将处理机状态字PSW和程序计数器(PC)

中的内容,保存在中断保留区(栈)中,然后把被中断进程的

CPU现场信息(即包括所有的CPU寄存器,如通用寄存器、段

寄存器等内容)都压入中断栈中,因为在中断处理时可能会用

到这些寄存器。图5-17给出了一个简单的保护中断现场的示

意图。该程序是指令在N位置时被中断的,程序计数器中的

内容为N+1,所有寄存器的内容都被保留在栈中。

PSW4

理京涂太史

T+M

T

Y—►PC(N+1)R

寄花器

程序计数器

开始PSW

PC(N+1)

返回

中断服务子例程中断栈

图5-17中断现场保护示意图

3.转入相应的设备处理程序

由处理机对各个中断源进行测试,以确定引起本次中断

的I/O设备,并发送一应答信号给发出中断请求的进程,使之

消除该中断请求信号,然后将相应的设备中断处理程序的入

口地址装入到程序计数器中,使处理机转向中断处理程序。

4.中断处理

―对于不同的设备,有不同的中断处理程序点程序首先

从设备控制器中读出设备状态,以判别本次中断是正常完成

中断,还是异常结束中断。若是前者,中断程序便进行结束

处理;若还有命令,可再向控制器发送新的命令,进行新一

轮的数据传送。若是异常结束中断,则根据发生异常的原因

做相应的处理。

5.恢复被中断进程的现场

当中断处理完成以后,便可将保存在中断栈中的被中

断进程的现场信息取出,并装入到相应的寄存器中,其中

包括该程序下一次要执行的指令的地址N+1、处理机状态

字PSW,以及各通用寄存器和段寄存器的内容。这样,当

处理机再执行本程序时,便从N+1处开始,最终返回到被

中断的程序。

I/O操作完成后,驱动程序必须检查本次I/O操作中是否

发生了错误,并向上层软件报告,最终向调用者报告本次I/O

的执行情况。除了上述的第4步外,其它各步骤对所有I/O设

备都是相同的,因而对于某种操作系统,例如UNIX系统,是

把这些共同的部分集中起来,形成中断总控程序。每当要进

行中断处理时,都要首先进入中断总控程序。而对于第4步,

则对不同设备须采用不同的设备中断处理程序继续执行。图

5-18示出了中断处理流程。

中断请求信号

图5-18中断处理流程

5.4.3设备驱动程序

设备驱动程序通常又称为设备处理程序,它是I/O进程与

设备控制器之间的通信程序,又由于它常以进程的形式存在,

故以后就简称之为设备驱动进程。

其主要任务是接收上层软件发来的抽象I/O要求,如read

或write命令,在把它转换为具体要求后,发送给设备控制器,

启动设备去执行;止匕外,它也将由设备控制器发来的信号传

送给上层软件。

1.设备驱动程序的功能(5个)

----为了央现T内进程勺稽当控制器之间的通信,设备驱动程

序应具有以下功能:

(1)接收由设备独立性软件发来的命令和参数,并将命令

中的抽象要求转换为具体要求,例如,将磁盘块号转换为磁盘

的盘面、磁道号及扇区号。

(2)检查用户I/O请求的合法性,了解I/O设备的状态,传

递有关参数,设置设备的工作方式。

(3)发出I/O命令。如果设备空闲,便立即启动I/O设备去完

成指定的I/O操作;如果设备处于忙碌状态,则将请求者的请求

块挂在设备队列上等待。

(4)及时响应由控制器或通道发来的中断请求,并根据

其中断类型调用相应的中断处理程序进行处理。"

(5)对于设置有通道的计算机系统,驱动程序还应能够根

据用户的I/O请求,自动地构成通道程序。

2.设备处理方式

⑴为每一类设备设置一个进程,专门用于执行这类设

备的I/O操作。比如,为所有的交互式终端设置一个交互式终

端进程;又如,为同一类型的打印机设置一个打印进程。

(2)在整个系统中设置一个I/O进程,专门用于执行系统

中所有各类设备的I/O操作。也可以设置一个输入进程和一个

输出进程,分别处理系统中所有各类设备的输入或输出操作。

(3)不设置专门的设备处理进程,而只为各类设备设置相

应的设备处理程序(模块),供用户进程或系统进程调用。

3.设备驱动程序的特点

"设备驱动程序属于低级的系统例程,它与一般的应用程

序及系统程序之间有下述明显差异:

(1)驱动程序主要是指在请求I/O的进程与设备控制器之

间的一个通信和转换程序。它将进程的I/O请求经过转换后,

传送给控制器;又把控制器中所记录的设备状态和I/O操作完

成情况及时地反映给请求I/O的进程。

(2)驱动程序与设备控制器和I/O设备的硬件特性紧密相

大,因IIIJ对个I口」火盘的设备应配置不同的驱动程序。例如,

可以为相同的多个终端设置一个终端驱动程序,但有时即使

是同一类型的设备,由于其生产厂家不同,它们也可能并不

完全兼容,此时也须为它们配置不同的驱动程序。

(3)驱动程序与I/O设备所采用的I/O控制方式紧密相关。

常用的I/O控制方式是中断驱动和DMA方式,这两种方式的

驱动程序明显不同,因为后者应按数组方式启动设备及进行

中断处理。

(4)由于驱动程序与硬件紧密相关,因而其中的一部分

必须用字编语言书写。口前有很多驱动程序的基本部分,已

经固化在ROM中。

(5)驱动程序应允许可重入。一个正在运行的驱动程序

常会在一次调用完成前被再次调用。例如,网络驱动程序正

在处理一个到来的数据包时,另一个数据包可能到达。

(6)驱动程序不允许系统调用。但是为了满足其与内核其

它部分的交互,可以允许对某些内核过程的调用,如通过调

用内核过程来分配和释放内存页面作为缓冲区,以及调用其

它过程来管理MMU定时器、DMA控制器、中断控制器等。

4.设备驱动程序的处理过程

不同类型的设备应有不同的设备驱动程荔"但大体上它

们都可以分成两部分,其中,除了要有能够驱动I/O设备工

作的驱动程序外,还需要有设备中断处理程序,以处理I/O

完成后的工作。

设备驱动程序的主要任务是启动指定设备。但在启动之

前,还必须完成必要的准备工作,如检测设备状态是否为

“忙”等。在完成所有的准备工作后,才最后向设备控制器

发送一条启动命令。

设备驱动程序的处理过程(P183)

1)将抽象要求转换为具体要求

2)检查I/O请求的合法性

3)读出和检查设备的状态

4)传送必要的参数

5)工作方式的设置

6)启动I/O设备

5.4.4设备独立性软件

1犯至汕fr枇的施金_______________________

基本含义:应用程序独立于具体使用的物理设备。为了

实现设备独立性而引入了逻辑设备和物理设备这两个概念。

在应用程序中,使用逻辑设备名称来请求使用某类设备;而

系统在实际执行时,还必须使用物理设备名称。

两方面的好处:

1)设备分配时的灵活性

2)易于实现I/O重定向

2.设备独立性软件

驱动程序是一个与硬件(或设备)紧密相关的软件。为了

实现设备独立性,必须再在驱动程序之上设置一层软件,称

为设备独立性软件。

主要功能可分为以下两个方面:

(1)执行所有设备的公有操作:

八西U双畲口'J刀一日匕与回收;②将逻辑设备名映射为

物理设备名,进一步可以找到相应物理设备的驱动程序;③

保护设备,禁止用户直接访问设备;④缓冲管理;⑤差错控

制,设备独立性软件只处理那些设备驱动程序无法处理的错

误;⑥提供独立于设备的逻辑块,向高层软件提供大小统一

的逻辑数据块。

(2)向用户层(或文件层)软件提供统一接口。

无论何种设备,它们向用户所提供的接口应该是相同的。

例如,对各种设备的读操作,在应用程序中都使用read;而

对各种设备的写操作,也都使用write。

3.逻辑设备名到物理设备名映射的实现

1)逻辑设备表

为了实现设备的独立性,系统必须设置一张逻辑设备表

(LUT,LogicalUnitTable),用于将应用程序中所使用的逻辑

设备名映射为物理设备名。在该表的每个表目中包含了三项:

逻辑设备名、物理设备名和设备驱动程序的入口地址,如图

5-19⑶所示。

驱动程序

逻辑设备名物理设备名逻辑设备名系统设备表指针

入口地址

/dev/tty31024/dev/tty3

/dev/printe52046/dev/printe5

****

****

(a)(b)

图5-19逻辑设备表

2)LUT的设置问题

LUT的设置可采取两种方式:一

第一种方式是在整个系统中只设置一张LUT。

不能同名,在多用户环境下这通常是难以做到的。

第二种方式是为每个用户设置一张LUT。

每个用户利用系统设备表建立的逻辑设备表可以采用

图5-19(b)中的格式。

5.4.5用户层的I/O软件

一般而言,大部分的I/O软件都在操作系统内部,但仍有

一小部分在用户层,包括与用户程序链接在一起的库函数,

以及完全运行于内核之外的一些程序。

用户层软件必须通过一组系统调用来取得操作系统服务。

C语言中的库函数,在使用C语言编写的用户程序中,

可以直接使用这些系统调用。

5.5设备分配

5.5.1设备分配中的数据结构

1.设备控制表(DCT)

系统为每一个设备都配置了一张设备控制表,用于记录

本设备的情况,如图5-20所示。

设备控制表中,除了有用于指示设备类型的字段type和

设备标识字段deviceid外,还应含有下列字段:

(1)设备队列队首指针。(2)设备状态。

(3)与设备连接的控制器表指针。(4)重复执行次数。

设设备类型:type

控设备标识符:deviceid

制设备状态:等待/不等待忙/闲

集指向控制器表的指针

重复执行次数或时间

设备队列的队首指针

图5-20

设备控制表

2.控制器控制表、通道控制表和系统设备表

(D控制器控制衣(0X7。。系统为每一个控制器都设置

了一张用于记录本控制器情况的控制器控制表,如图5-21(a)

所示。

(2)通道控制表(CHCT)。每个通道都配有一张通道控制

表,如图5-21(b)所示。

(3)系统设备表(SDT)。这是系统范围的数据结构,其中

记录了系统中全部设备的情况。每个设备占一个表目,其中

包括有设备类型、设备标识符、设备控制表及设备驱动程序

的入口等项,如图5-21(c)所示。

控制器标识符:通道标识符:*1=11

controlleridchannelid表目1y

✓设备类

z

控制器状态:忙/闲通道状态:忙/闲✓

✓设备标识符

与控制器连接的通道表指针与通道连接的控制器表首址✓

表目iDCT

控制器队列的队首指针通道队列的队首指针

*驱动程序入口

控制器队列的队尾指针通道队列的队尾指针、4

(a)控制器表COCT(b)通道表CHCT(c)系统设备表SDT

图5-21COCT、CHCT和SDT

5.5.2设备分配时应考虑的因素

为了使系统有条不紊地工作,系统在分配设备时,应

考虑这样几个因素:①设备的固有属性;②设备分配算法;

③设备分配时的安全性;④设备独立性。

1.设备的固有属性

仕分配攻备叮,自元也有虐与取备分配有关的设备属性。

设备的固有属性可分成三种:

第一种是独占性,是指这种设备在一段时间内只允许一个进

程独占,此即第二章所说的“临界资源”;

第二种是共享性,指这种设备允许多个进程同时共享;

第三种是可虚拟设备,指设备本身虽是独占设备,但经过某

种技术处理,可以把它改造成虚拟设备。

2.设备分配算法

对设备进行分配的算法,与进程调度的算法有些相似之

处,但前者相对简单,通常只采用以下两种分配算法:

(1)先来先服务。

(2)优先级高者优先。

3.设备分配中的安全性

~从进程运行的安全性考虑,设备分配有以下两种方式。

1)安全分配方式

在这种分配方式中,每当进程发出I/O请求后,便进入

阻塞状态,直到其I/O操作完成时才被唤醒。在采用这种分

配策略时,一旦进程已经获得某种设备(资源)后便阻塞,使

该进程不可能再请求任何资源,而在它运行时又不保持任何

资源。因此,这种分配方式已经摒弃了造成死锁的四个必要

条件之一的“请求和保持”条件,从而使设备分配是安全的。

其缺点是进程进展缓慢,即CPU与I/O设备是串行工作的。

2)不安全分配方式

在这种分配方式中,龙程在发出I/O请求后仍继续运行,

需要时又发出第二个I/O请求、第三个I/O请求等。仅当进程

所请求的设备已被另一进程占用时,请求进程才进入阻塞状

态。这种分配方式的优点是,一个进程可同时操作多个设备,

使进程推进迅速。

其缺点是可能造成死锁。因此,在设备分配程序中,还

应再增加一个功能,以用于对本次的设备分配是否会发生死

锁进行安全性计算,仅当计算结果说明分配是安全的情况下

才进行设备分配。

5.5.3独占设备的分配程序

L基本的设备分配程序"

1)分配设备

首先根据I/O请求中的物理设备名,查找系统设备表

(SDT),从中找出该设备的DCT,再根据DCT中的设备状态字段,

可知该设备是否正忙。若忙,便将请求I/O进程的PCB挂在设

备队列上;否则,便按照一定的算法来计算本次设备分配的

安全性。如果不会导致系统进入不安全状态,便将设备分配

给请求进程;否则,仍将其PCB插入设备等待队列。

2)分配控制器

再到其DCT中找

出与该设备连接的控制器的COCT,从COCT的状态字段中可知

该控制器是否忙碌。若忙,便将请求I/O进程的PCB挂在该控

制器的等待队列上;否则,便将该控制器分配给进程。

3)分配通道

在该COCT中又可找到与该控制器连接的通道的CHCT,

再根据CHCT内的状态信息,可知该通道是否忙碌。若忙,便

将请求I/O的进程挂在该通道的等待队列上;否则,将该通道

分配给进程。只有在设备、控制器和通道三者都分配成功时,

这次的设备分配才算成功。然后,便可启动该I/O设备进行数

据传送。

2.设备分配程序的改进

―仔细研究上述基本的设备分配程序后可以发现:①进程

是以物理设备名来提出I/O请求的;②采用的是单通路的

I/O系统结构,容易产生“瓶颈”现象。

改进:

1)增加设备的独立性

为了获得设备的独立性,进程应使用逻辑设备名请求I/O。

2)考虑多通路情况

采用多通路的I/O系统结构。

5.5.4SPOOLing技术

1什4县SPCZ;"

为了缓和CPU的高速性与I/O设备低速性间的矛盾而引入

了脱机输入、脱机输出技术。该技术是利用专门的外围控制机,

将低速I/O设备上的数据传送到高速磁盘上;或者相反。事实

上,当系统中引入了多道程序技术后,完全可以利用其中的一

道程序,来模拟脱机输入时的外围控制机功能,把低速I/O设

备上的数据传送到高速磁盘上;再用另一道程序来模拟脱机输

出时外围控制机的功能,把数据从磁盘传送到低速输出设备上。

这样,便可在主机的直接控制下,实现脱机输入、输出功能。

此时的外围操作与CPU对数据的处理同时进行,我们把这种在

联机情况下实现的同时外围操作称为SPOOLing(Simultaneous

PeripheralOperatingOnLine),或称为假脱机操作。

2.SPOOLing系统的组成

90Ling技术是对脱机输入、输出系

统的模拟。相应地,SPOOLing系统必须建立在具有多道程

序功能的操作系统上,而且还应有高速随机外存的支持,

这通常是采用磁盘存储技术。

SPOOLing系统主要有以下三部分:

(1)输入井和输出井。这是在磁盘上开辟的两个大存储

空间。输入井是模拟脱机输入时的磁盘设备,用于暂存I/O

设备输入的数据;输出井是模拟脱机输出时的磁盘,用于

暂存用户程序的输出数据。

(2)输入缓冲区和输出缓冲区。为了缓和CPU和磁盘之间

通麻不芯配的予后,在内存中要开辟两个缓冲区:输入缓冲

区和输出缓冲区。输入缓冲区用于暂存由输入设备送来的数

据,以后再传送到输入井。输出缓冲区用于暂存从输出井送

来的数据,以后再传送给输出设备。

(3)输入进程SPi和输出进程SPo。这里利用两个进程来模

拟脱机I/O时的外围控制机。其中,进程SPi模拟脱机输入时

的外围控制机,将用户要求的数据从输入机通过输入缓冲区

再送到输入井,当CPU需要输入数据时,直接从输入井读入

内存;进程SPo模拟脱机输出时的外围控制机,把用户要求输

出的数据先从内存送到输出井,待输出设备空闲时,再将输

出井中的数据经过输出缓冲区送到输出设备上。

图5-22SPOOLing系统的组成

3.共享打印机

当用户进程请求打印输出时,SPOOLing系统同意为它打

印输出,但并不真正立即把打印机分配给该用户进程,而只

为它做两件事:①由输出进程在输出井中为之申请一个空闲

磁盘块区,并将要打印的数据送入其中;②输出进程再为用

户进程申请一张空白的用户请求打印表,并将用户的打印要

求填入其中,再将该表挂到请求打印队列上。如果还有进程

要求打印输出,系统仍可接受该请求,也同样为该进程做上

述两件事。

输出进程:

如果打印机空闲,输出进程将从请求打印队列的队首取

出一张请求打印表,根据表中的要求将要打印的数据,从输

出井传送到内存缓冲区,再由打印机进行打印。打印完后,

输出进程再查看请求打印队列中是否还有等待打印的请求表。

若有,又取出队列中的第一张表,并根据其中的要求进行打

印,如此下去,直至请求打印队列为空,输出进程才将自己

阻塞起来。仅当下次再有打印请求时,输出进程才被唤醒。

4.SPOOLing系统的特点

SPOOLing系统具有如下主要特点:

(1)提高了I/O的速度。这里,对数据所进行的I/O操作,

已从对低速I/O设备进行的I/O操作,演变为对输入井或输出

井中数据的存取,如同脱机输入输出一样,提高了I/O速度,

缓和了CPU与低

温馨提示

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

评论

0/150

提交评论