第 6 章 设备管理

106
1 第 6 第 第第第第

Upload: ordell

Post on 19-Jan-2016

116 views

Category:

Documents


0 download

DESCRIPTION

第 6 章 设备管理. 第 6 章 设备管理. 在计算机系统中,设备管理是指对数据传输控制和对除中央处理机、主存储器之外的所有其它设备的管理 设备管理的主要对象 是 I/O 设备 ,其中还可能涉及到 设备控制器 和 I/O 通道 。 设备管理的基本任务 是完成用户的 I/O 请求,提高 I/O 速率以及改善 I/O 设备的利用率。 设备管理的主要功能有: 缓冲区管理、设备分配、设备处理、虚拟设备以及实现设备的独立性等。. 第 6 章 设备管理. 6.1 I/O 系统 6.2 I/O 控制方式 6.3 缓冲管理 6.4 设备分配 6.5 设备处理. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 6 章 设备管理

1

第 6章 设备管理

Page 2: 第 6 章 设备管理

2

第 6章 设备管理 在计算机系统中,设备管理是指对数据传输控制和对除中央处理机、主存储器之外的所有其它设备的管理

设备管理的主要对象是 I/O 设备,其中还可能涉及到设备控制器和 I/O 通道。

设备管理的基本任务是完成用户的 I/O 请求,提高 I/O 速率以及改善 I/O 设备的利用率。

设备管理的主要功能有:缓冲区管理、设备分配、设备处理、虚拟设备以及实现设备的独立性等。

Page 3: 第 6 章 设备管理

3

第 6章 设备管理 6.1 I/O 系统 6.2 I/O 控制方式 6.3 缓冲管理 6.4 设备分配 6.5 设备处理

Page 4: 第 6 章 设备管理

4

6.1 I/O 系统 6.1.1 I /O 设备 6.1.2 设备控制器 6.1.3 I/O 通道 6.1.4 总线系统

Page 5: 第 6 章 设备管理

5

6.1.1 I/O 设备 顾名思义, I/O 系统是用于实现数据输入、输出以及数据存储的系统。

在 I/O 系统中,除了需要直接用于 I/O 和存储信息的设备外,还需要有相应的设备控制器和高速总线。在有的大中型计算机系统中,还配置了 I/O 通道或 I/O 处理机。

Page 6: 第 6 章 设备管理

6

1.I/O 设备的类型 I/O 设备的种类繁多,从 OS看,其重要的性能指标有:

数据传输速率、数据的传输单位、设备的共享属性等。因而可从不同的角度对设备进行分类。

Page 7: 第 6 章 设备管理

7

1.I/O 设备的类型 1 )按操作特性分类 把外部设备分为存储设备和输入输出( I/O )设备。存储设备是是计算机用来存储信息的设备,如磁盘、光盘、磁带等; I/O 设备包括输入设备和输出设备两类。

输入设备的作用是将外部带来的信息输入计算机,如键盘、鼠标等。输出设备是将计算机加工好的信息输出到外部,如显示器、打印机等。

Page 8: 第 6 章 设备管理

8

1.I/O 设备的类型 2 )按系统和用户的观点分类 可将外部设备分为系统设备和用户设备两种。

系统设备是指操作系统生成时已登记在系统中的标准设备,如键盘、磁盘等。

用户设备是指操作系统生成后,用户定义的非标准设备,如绘图仪、游戏手柄等,这时需要用户安装设备驱动程序。

Page 9: 第 6 章 设备管理

9

1.I/O 设备的类型 1 )按设备的传输速率分类①低速设备:传输速率仅为几个字节 -几百个字节/秒。典型设备有:键盘、鼠标器、语音输入输出设备等。

②中速设备:传输速率为数千个字节 -数万个字节/秒。典型的设备有:行式打印机、激光打印机等。

③高速设备:传输速率为数百千字节 -数十兆字节。典型设备有:磁带机、磁盘机、光盘机等。

Page 10: 第 6 章 设备管理

10

1.I/O 设备的类型 2 )按信息交换的单位分类①块设备:这类设备用于存储信息,由于其总是以块为单位来存取信息,由此得名。典型的块设备是磁盘,每个盘块的大小为 512B-4KB 。

磁盘设备传输速率高,通常为几兆位 /秒;另一特征是可寻址,即对其可随机地读 /写任一块。此外,磁盘设备的 I/O 常采用 DMA 方式。

Page 11: 第 6 章 设备管理

11

1.I/O 设备的类型②字符设备:用于数据的输入输出,其基本单位是字符。字符设备种类很多,如键盘、打印机等。

基本特征是传输速率低,通常为几个 -几千个字节 /秒;另一个特征是不可寻址,即输入输出时不能指定数据的输入源地址和输出目标地址。

此外,字符设备在输入输出时常采用中断驱动方式

Page 12: 第 6 章 设备管理

12

1.I/O 设备的类型 3 )按设备的共享属性分类①独占设备:即临界资源。对并发进程而言,系统一旦把该类设备分配给了某进程,便由该进程独占,直至其释放。

②共享设备:允许在一段时间内允许多个进程同时访问的设备。当然,在每一时刻,该类设备仍然只允许一个进程访问。显然这样的设备必须是可寻址的和可随机访问的设备。

Page 13: 第 6 章 设备管理

13

1.I/O 设备的类型

典型的共享设备是磁盘。对共享设备不仅可获得良好的设备利用率,而且也是实现文件系统和数据库系统的物质基础。

③虚拟设备:指通过虚拟技术将一台独占设备变换为若干台逻辑设备,供若干个用户(进程)同时使用。

Page 14: 第 6 章 设备管理

14

2. 设备与控制器之间的接口 在数据传送过程中,必不可少的一个硬件设备是设备控制器,它是操作系统软件和和硬件之间的接口。它接收 CPU 的命令,并控制 I/O 设备进行实际的操作。

通常,设备并不是直接与 CPU 通信,而是与设备控制器通信,因此在设备与设备控制器之间应该有一个接口,在这个接口中有三种类型的信号,每种信号对应一种信号线:数据线、控制线、状态线。

Page 15: 第 6 章 设备管理

15

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

①数据信号线:用于在设备和设备控制器之间传送数据信号。对输入设备而言,由外界输入的信号经转换器转换后形成的数据,通常先送入缓冲器中,当数据达到一定的比特数后,再从缓冲器通过一组数据信号线,传送给设备控制器。

对输出设备而言,则是将从设备控制器经过数据信号线传送来的一批数据,先暂存于缓冲器中,经转换器作适当的转换以后,再逐个字符地输出。

Page 16: 第 6 章 设备管理

16

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

②控制信号线:是设备控制器向 I/O 设备发送控制信号的通路。该信号规定了设备将要执行的操作,如读操作(指有设备向控制器传送数据)或写操作(从控制器接受数据),以及执行磁头移动等操作。

③状态信号线:用于传送指示设备当前状态的信号。设备的当前状态有正在读(或写)、设备已完成读(写),并准备好新的数据传送

Page 17: 第 6 章 设备管理

17

6.1.2 设备控制器 设备控制器是计算机中的一个实体,主要职责是控制一个或多个 I/O 设备,以实现 I/O 设备和计算机之间的数据交换。

它是 CPU 与 I/O 设备之间的接口,接收从 CPU发来的命令,控制 I/O 设备进行工作,以使处理机从繁杂的设备控制事务中解脱出来。

设备控制器是一个可编址的设备,当其仅控制一个设备时,它只有唯一的一个设备地址;若控制器可连接多个设备时,则应含有多个设备地址,并使每一个设备地址对应一个设备。

Page 18: 第 6 章 设备管理

18

设备控制器的基本功能

1 )接收和识别命令CPU 可以向设备控制器发送多种命令,设备控制器应能接收并识别这些命令。为此,在控制器中应具有相应的控制寄存器,用来存放接收的命令和参数,并对接收的命令进行译码。例如,磁盘控制器可以接收 CPU发来的 Read、 Write、 Format等 15条不同的指令,有些命令还带有参数。因而,在磁盘控制器中有多个寄存器和命令译码器等。

Page 19: 第 6 章 设备管理

19

设备控制器的基本功能

2 )数据交换指 CPU 与控制器之间、控制器与设备之间的数据交换。

对于前者,是通过数据总线,由 CPU 并行地把数据写入写入控制器,或从控制器中并行地输出数据;对于后者,是设备将数据输入到控制器里,或从控制器传送给设备。因此在设备控制器里必须设置数据寄存器。

Page 20: 第 6 章 设备管理

20

设备控制器的基本功能

3 )标识和报告设备的状态 控制器应记下设备的状态供 CPU 了解。例如,仅当该设备处于发送就绪状态时, CPU才能启动控制器从设备中读出设备。

为此,在控制器中应设置一个状态寄存器,用其中的每一位来反映设备的每一种状态。 CPU 读入该寄存器的内容后,便可了解该设备的状态。

Page 21: 第 6 章 设备管理

21

设备控制器的基本功能

4 )地址识别内存中的每一个单元都有一个地址,系统中的每个设备也都有一个地址,设备控制器必须能够识别它所控制的每一个设备的地址。

因此,在设备控制器中应配置地址译码器。

Page 22: 第 6 章 设备管理

22

设备控制器的基本功能

5)数据缓冲 由于外部设备的速率低而 CPU 和内存的速率很高,故在控制器中必须设置缓冲器。在输出的时候,用缓冲器暂存由主机高速送来的数据,然后才以 I/O 设备所具有的速率,将缓冲器中的数据传送给 I/O 设备; 在输入时,缓冲器用以暂存从 I/O 设备从来的设备,待接收到一批数据后,再将缓冲器中的数据高速地送给主机。

Page 23: 第 6 章 设备管理

23

设备控制器的基本功能

6)差错控制设备控制器还兼管对由外部设备传送来的数据进行差错检测。若发现传送中出现了错误,通常是将差错检测码置位,并向 CPU报告。于是 CPU 将本次传来的数据作废,并重新进行一次传送。由此来保证传输的正确性。

Page 24: 第 6 章 设备管理

24

2.设备控制器的组成

由于设备控制器位于 CPU 和设备之间,既要与 CPU 通信,也要与设备通信,还应具有按照 CPU发来的命令去控制设备工作的功能,因此现有的大多数控制器都是由以下三部分组成:

Page 25: 第 6 章 设备管理

25

2.设备控制器的组成

1)设备控制器与处理机的接口该接口用于实现 CPU 与设备控制器之间的通信。其中有三类信号线:数据线、地址线和控制线。

数据线与两类寄存器相连:数据寄存器,用于存放从设备送来的数据后从 CPU 送来的数据;控制/状态寄存器,用于存放从 CPU 送来的控制信息或设备的状态信息。

Page 26: 第 6 章 设备管理

26

2.设备控制器的组成

2)设备控制器与设备的接口一个控制器可以连接一个或多个设备,因此一个控制器便有一个或多个设备接口,一个接口连接一个设备。

在每个接口中都存放有数据、控制和状态三种类型的信号。

控制器中的I/O逻辑根据处理机发来的地址信号,去选择一个设备接口。

Page 27: 第 6 章 设备管理

27

2.设备控制器的组成

3) I/O逻辑设备控制器中的 I/O逻辑用于实现对设备的控制。它通过一组控制线与处理机交互,处理机利用该逻辑向控制器发送 I/O 命令; I/O逻辑对收到的命令进行译码。

每当 CPU 要启动一个设备的时候,一方面将启动命令发送给控制器,同时又通过地址线把地址发送给控制器,由控制器的 I/O逻辑对收到的地址进行译码,再根据译出的命令对所选设备进行控制

Page 28: 第 6 章 设备管理

28

6.2 I/O 控制方式 随着计算机技术的发展,数据传送控制方式也在不断发展。刚开始,数据传送用程序控制,引入中断机制后数据传送发展为中断驱动方式;

DMA 控制器的出现,又使数据传送的传输单位由字节扩大到数据块,从而大大改善了块设备的 I/O 性能;

通道控制方式的出现,又使得数据传送能独立进行而无需 CPU 的干预, CPU 可从繁杂的数据传送控制中解脱出来,以更多地进行数据处理。

Page 29: 第 6 章 设备管理

29

6.2 I/O 控制方式 1.程序 I/O 方式早期的计算机系统由于没有中断机构,处理机对 I/O 设

备的控制采取程序 I/O 方式,或称为忙-等方式。即在处理机向控制器发出一条 I/O 指令启动 I/O 设备输

入数据时,要同时把状态寄存器中的忙-闲标志 busy置为1,然后便循环不断地测试 busy。当 busy =1,表示输入机尚未输完一个字符,处理机应继续测试,直至 busy =0,表示输入机已降输入数据送入控制器的数据寄存器中。

Page 30: 第 6 章 设备管理

30

1.程序 I/O 方式 于是,处理机将数据寄存器中的数据取出,送入内存

的指定单元,这样便完成了一个字符的输入输出。 接着再去启动,读下一个数据,并置 busy =1。 在程序 I/O 方式中,由于 CPU 的高速性和 I/O 设备的

低速性,致使 CPU 的绝大部分时间都处于等待 I/O 设备完成数据 I/O 的循环测试中,造成 CPU 的极大浪费。

在该方式中, CPU 之所以要不断测试 I/O 设备的状态,就是因为在 CPU 中没有中断机构,使 I/O 设备无法向 CPU报告它已完成了一个字符的输入操作。

Page 31: 第 6 章 设备管理

31

2.中断驱动 I/O 控制方式

为了克服直接控制方式的缺点,使 CPU 能与设备并行工作,出现了中断控制方式。这种方式要求在 I/O 控制器的控制/状态寄存器中存储相应的“中断允许位”。

中断控制下的数据输入按下面的步骤进行:

Page 32: 第 6 章 设备管理

32

2.中断驱动 I/O 控制方式

(1)进程需要数据的时候,将允许启动和允许中断的控制字写入设备控制/状态寄存器中,启动该设备进行输入操作;

(2)该进程放弃处理机,等待输入的完成;操作系统的进程调度程序调度其它就绪进程占用处理机;

(3)当输入完成时,输入设备通过中断请求线向 CPU发出中断请求信号; CPU接到中断信号后,转向中断处理程序

Page 33: 第 6 章 设备管理

33

2.中断驱动 I/O 控制方式

(4)中断处理程序首先保护现场,然后把输入缓冲寄存器中的数据传送到某一特定单元中,同时将等待输入完成的那个进程唤醒,进入就绪状态;最后恢复现场,并返回到被中断的进程继续执行。

(5)在以后的某一是可,操作系统进程调度程序选中前面提出 I/O请求并获得数据的进程,该进程则从约定的内存特定单元中取出数据,继续工作。

Page 34: 第 6 章 设备管理

34

2.中断驱动 I/O 控制方式 在中断驱动方式中, CPU 在执行其它进程时,假如那

个进程也要求输入或输出, CPU也可以发出启动不同设备的启动指令和允许中断指令,从而做到设备与设备之间的并行操作以及设备与 CPU 的并行操作。

比起程序直接控制 I/O ,中断控制方式使得 CPU 的利用率大大提高,并能支持设备的并行操作,但依然存在许多问题,如:每台设备在输入输出时,中断 CPU的次数太多,使 CPU 的有效计算时间大大减少。

为解决这个问题,又产生了 DMA 控制方式和通道控制方式

Page 35: 第 6 章 设备管理

35

3. DMA I/O 控制方式

DMA 方式又称直接存储器访问( Direct Memory Access)方式。基本思想是在外设和主存之间开辟直接的数据交换通路。

在 DMA 方式中, I/O 设备控制器有比上面两种方式更强的功能。 DMA 控制器除了有控制/状态寄存器和数据缓冲寄存器外,还设置有传送字节计数器和内存地址寄存器。

DMA 控制器可用来代替 CPU 控制内存和外设之间进行成批的数据交换

Page 36: 第 6 章 设备管理

36

DMA 方式的特点:(1)数据传送的基本单位是数据块。即 CPU 和I/O 设备之间,每次传送的至少是一个数据块

(2)所传送的数据是从设备送往内存,或相反(3)仅在传送一个或多个数据块的开始和结束时,才需要中断 CPU ,请求干预,整块数据的传送是在 DMA 控制器的控制下完成的。

Page 37: 第 6 章 设备管理

37

从 DMA 方式的特点看出, DMA 方式较之中断控制方式成百倍地减少了 CPU 对 I/O 控制的干预,进一步提高了 CPU 的利用率,提高了 CPU与 I/O 设备的并行操作程度

Page 38: 第 6 章 设备管理

38

DMA 方式下的数据输入处理过程:

①当某一进程要求设备输入数据的时候, CPU 把准备存放输入数据的内存始址及要传送的字节数分别送入 DMA 控制器中的内存地址寄存器和传送字节计数器

②将控制/状态寄存器中的数据允许位和启动位置“1”,启动设备进行成批的数据输入

③该进程进入等待状态,等待数据输入的完成;操作系统的进程调度程序调度其它进程占用 CPU

Page 39: 第 6 章 设备管理

39

DMA 方式下的数据输入处理过程:

④在 DMA 控制器的控制下,按内存地址寄存器中的内容,把数据缓冲寄存器中的数据源源不断地写入到相应的主存单元,直至所有的数据传送完毕⑤输入完成时, DMA 控制器通过中断请求线发出中断信号, CPU 接到该中断请求后,转入中断处理程序进行善后处理

Page 40: 第 6 章 设备管理

40

DMA 方式下的数据输入处理过程:

⑥中断处理结束后, CPU返回被中断进程处执行⑦当操作系统进程调度程序调度到该进程的时候,该进程按指定的内存始址找到实际传送的数据,对该输入数据进行加工处理

Page 41: 第 6 章 设备管理

41

虽然 DMA 方式较前两种方式又明显的进步,但仍存在一定的局限性

首先, DMA 方式对外设的管理和某些操作仍由CPU 控制;另外,多个 DMA 控制器的同时使用可能会引起内存地址的冲突,同时也是不经济的。

为了克服以上不足,又出现了通道控制方式

Page 42: 第 6 章 设备管理

42

4.通道控制方式

与 DMA 控制方式相似,通道控制也是一种内存和设备直接进行数据交换的方式。

与 DMA 控制方式不同的是,在通道控制方式中,数据传送的方向、存放数据的内存始址以及传送数据块的长度均有望一个专门的硬件-通道来控制

另外, DMA 方式每台设备至少需要一个 DMA 控制器,而通道方式中,一个通道能控制多台设备与内存进行数据交换

Page 43: 第 6 章 设备管理

43

4.通道控制方式

通道是一个独立于 CPU 的专门负责输入输出控制的处理机,它和设备控制器一起控制设备与内存直接进行数据交换

通道有自己的指令,这些指令受 CPU 控制启动,并在操作结束时,向 CPU发出中断信号

Page 44: 第 6 章 设备管理

44

通道控制方式的数据输入过程:

①当进程要求数据输入的时候, CPU发指令,指明 I/O 操作、设备号和对应通道;

②对应通道收到 CPU发来的启动指令后,读出内存中的指令程序,设置对应设备的控制/状态寄存器的初值

③设备按通道指令的要求,把数据送往指定的内存区域④若传送结束, I/O 控制器通过中断请求线发出中断信号,请求 CPU 作中断处理

Page 45: 第 6 章 设备管理

45

通道控制方式的数据输入过程

⑤中断处理结束后, CPU返回到被中断进程处继续执行⑥当进程调度程序选中这个已得到数据的进程后,才能进行加工处理。

与前面几种方式相比,通道方式有更强的 I/O处理能力。有关 I/O 的工作委托通道去做,当通道完成了 I/O 任务后,向 CPU发中断信号,请求 CPU 处理。这样就使 CPU基本摆脱了 I/O控制工作,大大提高了 CPU 的工作效率及与外设间的并行工作程度。

Page 46: 第 6 章 设备管理

46

6.3 缓冲管理

为了缓和 CPU 和外部设备速度不匹配的矛盾,提高 CPU 和外设的并行性,在现代操作系统中,几乎所有的 I/O 设备在与处理机交换数据的时候,都采用了缓冲区。

缓冲管理的职责就是组织好这些缓冲区,并提供获得和释放缓冲区的手段。

Page 47: 第 6 章 设备管理

47

1.在设备管理中,引入缓冲区的主要原因:

①缓和 CPU 和 I/O 设备之间速度不匹配的矛盾。事实上,凡在数据到达速率与其离去速率不同的地方,都可设置缓冲区。   CPU 的速率远远高于 I/O 设备的速率,如果没有缓冲区,在输出数据时,必然会由于打印机的速度跟不上而使 CPU停下来等待;而在计算阶段,打印机又无事可做。

Page 48: 第 6 章 设备管理

48

6.3 缓冲管理

显然,如果在打印机或控制器中设置一个缓冲区,用于快速暂存程序的输出数据,以后由打印机“慢慢地”从中取出数据打印。这样就可提高 CPU 的效率。

类似地,在输入设备与 CPU 之间也设置缓冲区,这样也使得 CPU 的工作效率得以提高

Page 49: 第 6 章 设备管理

49

6.3 缓冲管理

②减少对 CPU 的中断频率,放宽对 CPU 中断响应时间的限制  如从外设来的数据仅用一位缓冲来接收,则每收到一位数据就要中断一次;若设置一个8位的缓冲寄存器,则可使中断的次数降低为1/8。所以,用缓冲技术可以减少 CPU 的中断次数

Page 50: 第 6 章 设备管理

50

6.3 缓冲管理

③提高 CPU 和 I/O 设备之间的并行性  引入缓冲后,在输入数据的时候,输入设备可将数据输入到缓冲区存放,与此同时 CPU 在进行计算工作;输出数据时, CPU也在进行计算工作,而同时输出设备将缓冲区的数据取出来慢慢打印。所以缓冲区的引入可以提高 CPU和 I/O 设备的并行性

Page 51: 第 6 章 设备管理

51

缓冲技术在操作系统中所起的作用是十分明显的。常采用的缓冲技术有: 单缓冲、双缓冲、环形缓冲、缓冲池

Page 52: 第 6 章 设备管理

52

2.单缓冲 单缓冲是操作系统提供的最简单的一种缓冲形式。每当一个进程发出 I/O请求的时候,操作系统便在主存中为之分配一个缓冲区,该缓冲区用来临时存放输入输出数据。

当进程要求数据输入的时候,操作系统先控制外设将数据送往缓冲区存放,然后进程从缓冲区中取出数据继续运行

单缓冲能缓和 CPU 和外设速度之间的矛盾,同时也可以使 CPU 和外设并行工作,但不能使设备和设备达到并行操作

Page 53: 第 6 章 设备管理

53

2.单缓冲

单缓冲方式由于只有一个缓冲区,该缓冲区在某一时刻能存放输入数据或输出数据,但不能同时存放输入数据和输出数据,所以该缓冲区可以认为是临界资源,不允许多个进程同时访问它。

当数据输入到缓冲区的时候,输入设备在工作,输出设备空闲;当数据从缓冲区输出的时候,输出设备在工作,输入设备空闲。

所以单缓冲不能解决外设之间并行操作的问题

Page 54: 第 6 章 设备管理

54

3.双缓冲

解决外设之间并行操作的最简单的办法是设置双缓冲。具体方案是为输入或输出操作设置两个缓冲区 buffer1 和 buffer2 。

当进程要求要求输入数据的时候,输入设备首先把输入数据送往 Bufffer1 ,然后进程从 Buffer1 中取出数据进行计算;在进程从 Buffer1中取数据的同时,输入设备可向缓冲区 Buffer2 送入数据。

Page 55: 第 6 章 设备管理

55

3.双缓冲 当 Buffer1 中的数据取完的时候,进程又可以从 Buffer2 中提取数据,与此同时,输入设备又可将输入数据送往 Buffer1 。

如此交替使用 Buffer1 和 Buffer2 ,可使 CPU和外设的并行操作进一步提高。

Page 56: 第 6 章 设备管理

56

3.双缓冲 用双缓冲解决外设并行操作的方案是:输入时将数据送往 Buffer1,然后进程从 Buffer1中提取数据进行计算;输出时将数据送往 Buffer2,输出设备从 Buffer2中取出数据慢慢输出;与此同时,输入设备又可以将数据送往Buffer1。从而,输入设备可以和输出设备并行操作。双缓冲在实际系统中很少采用,因为外设很多,又有大量的输入输出操作。常采用的是环形缓冲和缓冲池。

Page 57: 第 6 章 设备管理

57

4.环形缓冲

该技术是在主存中分配一组大小相等的存储区作为缓冲区,并将这些缓冲区链接起来,每个缓冲区中有一个指向下一个缓冲区的指针,最后一个缓冲区的指针指向第一个缓冲区,这样n个缓冲区就组成一个环形。此外系统中还有一个链首指针指向第一个缓冲区。

Page 58: 第 6 章 设备管理

58

4.环形缓冲 环形缓冲用于输入(输出)时除了 START指针指向第一个缓冲区外,还需要两个指针 In和 Out。

对输入而言,先从设备接收数据到缓冲区中,In指针指向可输入数据的第一个空缓冲区,当进程运行过程中需要数据的时候,从环形缓冲区中一个装满数据的缓冲区中取出数据, Out指针指向可提取数据的第一个缓冲区。

Page 59: 第 6 章 设备管理

59

4.环形缓冲 系统初启的时候,指针初始化为 Start=Out=In。当输入的时候,数据输入到 In指针指向的缓冲区,输完后, In指向下一个可用的空缓冲区;

进程从缓冲区提取数据的时候,提取 Out指针所指的缓冲区的内容,之后, Out指针指向下一个满缓冲区。

Page 60: 第 6 章 设备管理

60

4.环形缓冲 在环形缓冲这一方案中,为保证并行操作必须有一个约束条件: In≠Out。

在一般情形下, Out < In。当 In 即将赶上 Out的时候,从设备输入数据的操作必须等待。

虽然环形缓冲可解决双缓冲中存在的一些问题,但系统较大的时候,会有许多这样的环形缓冲,不仅浪费大量的内存,利用率也不高。

为了提高缓冲区的利用率,目前广泛采用的是缓冲池技术。

Page 61: 第 6 章 设备管理

61

5.缓冲池

从自由主存中分配一组缓冲区即可构成缓冲池。在缓冲池中每个缓冲区的大小可以等于物理记录的大小,它们作为共享资源被共享。缓冲池既可用于输入,也可用于输出。

Page 62: 第 6 章 设备管理

62

缓冲池的组成: 缓冲池中的缓冲区一般有以下三种类型:空缓冲区、装输入数据的缓冲区和装输出数据的缓冲区

为管理方便,系统将同类型的缓冲区连成队列,于是就有三个队列:①空缓冲区队列 emq,队首指针为F (emq),队尾指针为 L(emq)。②装输入数据的输入缓冲队列 inq,队首指针为 F(inq),队尾指针为 L(inq)。③装输出数据的缓冲区队列outq,队首指针为 F(outq),队尾指针为 L(outq)。

Page 63: 第 6 章 设备管理

63

缓冲池的组成: 除上述三个队列外,还应具有四种工作缓冲区:①用于收容输入数据的缓冲区 hin;②用于提取输入数据的缓冲区 sin;③用于收容输出数据的缓冲区 hout;④用于提取输出数据的缓冲区 sout

Page 64: 第 6 章 设备管理

64

缓冲池的工作方式: 缓冲区可以在收容输入、提取输入、收容输出和提取

输出 4种方式下工作。 收容输入:当输入进程需要输入数据的时候,系统从 emq 队列的队首摘下一个空缓冲区,把它作为收容工作缓冲区 hin。然后,将数据输入其中,接着再将它挂在队列 inq的末尾。

提取输入:当计算进程需要输入的数据进行计算的时候,系统从输入队列队首取得一个缓冲区作为提取输入工作缓冲区 sin,计算进程从中提取数据,当进程用完该缓冲区的数据后,再将它挂到空缓冲区队列 emq尾。

Page 65: 第 6 章 设备管理

65

缓冲池的工作方式:

收容输出:当计算机进程需要输出数据的时候,系统从空缓冲队列 emq的队首取得一个空缓冲区,将它作为收容输出工作缓冲区 hout。 hout输出数据后,再将它挂在队列 outq的尾部。

提取输出:当要进行输出操作的时候,从输出队列 outq的队首取得一个缓冲区,作为提取输出工作缓冲区 sout。 当数据提取完毕后,再将该缓冲区挂在空缓冲区队列 emq的末尾。

Page 66: 第 6 章 设备管理

66

6.4 设备分配技术 在现代操作系统中要求设备为其服务的进程数量往往超过设备的数量,所以可能有多个进程同时要求占有某个设备,而这个设备一次只能分给一个进程使用,到底应分配给哪个进程,这就涉及到设备的分配问题。

根据设备的特性可把设备分为独享设备、共享设备和虚拟设备三种。

Page 67: 第 6 章 设备管理

67

独享设备:指这种设备在一段时间内只允许一个进程独占,即为“临界资源”。

共享设备:指这种设备允许多个进程同时共享。 (可)虚拟设备:指设备本身虽是独占设备,但经过某种技术处理,可以把它改造成逻辑上的多台虚拟设备

Page 68: 第 6 章 设备管理

68

6.4.1 设备分配中的数据结构

在进行设备分配的时候,通常都要借助于一些表格的帮助。在表格中记录了相应设备或控制器的状态以及对设备或控制器进行控制所需要的信息。

在进行设备分配时所需要的数据结构(表格)有:设备控制表、控制器控制表、通道控制表和系统设备表等。

Page 69: 第 6 章 设备管理

69

6.4.1 设备分配中的数据结构 1. 设备控制表 DCT 系统为每一个设备都配置了一张设备控制表( DCT),用于记录本设备的情况

右边图示为设备控制表的集合

DCT1

DCT2

DCT3

……

DCTn

Page 70: 第 6 章 设备管理

70

6.4.1 设备分配中的数据结构 在每一张设备控制表( DCTn )中都包含以下 6个字段:设备类型type

设备标识符deviceid

设备状态忙、闲、等待等

指向控制器表的指针

重复执行次数

设备队列的队首指针

设备队列队首指针:凡因请求本设备而未得以满足的进程,其 PCB都应按照一定的策略,排成一个队列,称该队列为设备请求队列或设备队列。其队首指针指向队首的 PCB 。

Page 71: 第 6 章 设备管理

71

6.4.1 设备分配中的数据结构 设备状态:当设备自身正处于使用状态时,应将设备的忙 /闲标志置 1;若与该设备相连的控制器或通道正忙,也不能启动该设备,此时应将设备的等待标志置 1。

指向控制器表的指针:该指针指向该设备所连接的控制器的控制表。在设备到主机间具有多条通路的情况下,一个设备将与多个控制器相连接,此时在 DCT中还应设置多个控制器表指针。

Page 72: 第 6 章 设备管理

72

6.4.1 设备分配中的数据结构 重复执行次数:由于外部设备在传送数据时较易发生数据传送错误,因而在许多系统中,如果发生传送错误,并不立即认为传送失败,而是令它重新传送,并由系统规定设备在工作中发生错误时应能重复执行的次数。

Page 73: 第 6 章 设备管理

73

6.4.1 设备分配中的数据结构 2. 控制器控制表 COCT系统为每一个控制器都设置了一张用于记录本控制器情况的控制器控制表:

控制器标识符 concollerid

控制器状态:忙 /闲

指向通道表的指针

控制器队列的队首指针

控制器队列的队尾指针

Page 74: 第 6 章 设备管理

74

6.4.1 设备分配中的数据结构 3. 通道表 CHCT每个通道都配置一张通道控制表:

通道标识符 channel_id

通道状态:忙/闲

指向控制器表的指针

通道队列的队首指针

通道队列的队尾指针

Page 75: 第 6 章 设备管理

75

6.4.1 设备分配中的数据结构 4. 系统设备表 SDT 这是系统范围的数据结构,其中记录了系统中全部设备的情况。每个设备占一个表目,包含了设备类型、设备标识符、设备控制表、设备驱动程序的入口等项。

Page 76: 第 6 章 设备管理

76

6.4.2 设备分配时应考虑的因素 为了使系统有条不紊地工作,系统在分配设备时应考虑这样几个因素:

①设备的固有属性:独占、共享、虚拟性②设备分配算法:先来先服务、优先级高者优先③设备分配时的安全性④设备的独立性:应用程序独立于使用的物理设备

Page 77: 第 6 章 设备管理

77

6.4.3 独占设备的分配程序

1.基本的设备分配程序通过一个具有 I/O 通道的系统的例子。来介绍设备分配的过程。当某进程提出 I/O请求后,系统的设备分配程序将按下述步骤进行设备分配:

Page 78: 第 6 章 设备管理

78

6.4.3 独占设备的分配程序

1 )分配设备:首先根据 I/O请求中的物理设备名查找系统设备表 SDT,从中找出该设备的 DCT,再根据 DCT中的设备状态字段,获知该设备是否正忙;若忙,便将请求 I/O 的进程的 PCB挂在设备队列上;

否则,便按照一定的算法来计算本次设备分配的安全性。若不会导致系统进入不安全状态,便将设备分配给请求进程;否则,仍将其 PCB插入设备等待队列。

Page 79: 第 6 章 设备管理

79

6.4.3 独占设备的分配程序

2)分配控制器:在系统把设备分配给请求 I/O 的进程后,再到其 DCT中找出与该设备连接的控制器的 COCT,从 COCT的状态字段中可知该控制器是否忙碌。

若忙,便将请求 I/O 进程的 PCB挂在该控制器的等待队列上;否则,便将该控制器分配给进程

Page 80: 第 6 章 设备管理

80

6.4.3 独占设备的分配程序

3 )分配通道:在该 COCT中又可找到与该控制器连接的通道的 CHCT,再根据 CHCT内的状态信息,可知该通道是否忙碌。

若忙,便将该请求 I/O 的进程挂在该通道的等待队列上;否则将该通道分配进程。

只有在设备、控制器、通道三者都分配成功时,这次的设备分配才算成功。然后,便可启动启动该 I/O 设备进行数据传送。

Page 81: 第 6 章 设备管理

81

设备分配程序的改进:

仔细分析上述的设备分配程序后可以发现:①进程是以物理设备名来提出 I/O请求的;②采用的是单通路的 I/O 系统结构,容易产生“瓶颈”现象。

为此,应从以下两个方面对基本的设备分配程序加以改进,以使独占设备的分配程序具有更强的灵活性,并提高分配的成功率。

Page 82: 第 6 章 设备管理

82

设备分配程序的改进:

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

这样,系统首先从 SDT中找出第一个该类设备的 DCT。若设备忙,再找出第二个该类设备的 DCT,仅当所有该类设备都忙时,才把进程挂在该类设备的等待队列上;而只要有一个该类设备可用,系统便进一步计算分配该设备的安全性。

Page 83: 第 6 章 设备管理

83

设备分配程序的改进:

2 )考虑多通路情况:为了防止在 I/O 系统中出现“瓶颈”现象,通常都采用多通路的 I/O 系统结构。

此时对控制器和通道的分配,同样要经过几次反复。即若设备(控制器)所连接的第一个控制器(通道)忙时,应查看其所连接的第二个控制器(通道),仅当所有的控制器(通道)都忙时,此次的控制器(通道)分配才算失败,才把进程挂在控制器(通道)的等待队列上。

而只要有一个控制器(通道)可用,系统便可将它分配给进程。

Page 84: 第 6 章 设备管理

84

6.4.4 SPOOLing技术 虚拟是 OS的四大特征之一。 通过多道程序设计技术可将一台物理 CPU虚拟为多台逻辑 CPU ,从而允许多个用户共享一台主机;

而通过 SPOOLing技术便可将一台物理 I/O 设备虚拟为多台逻辑 I/O 设备,同样允许多个用户共享一台物理 I/O 设备。

Page 85: 第 6 章 设备管理

85

1.什么是 SPOOLing

为了缓和 CPU 的高速性与 I/O 设备的低速性之间的矛盾而引入了脱机输入、脱机输出技术。该技术是利用专门的外围控制机,将低速 I/O 设备上的数据传送到高速磁盘上,或者相反。

Page 86: 第 6 章 设备管理

86

事实上,当系统中引入了多道程序技术后,完全可以利用其中的一道程序,来模拟脱机输入时的外围控制机的功能,把低速 I/O上的数据传送到高速磁盘上;再利用另一道程序来模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速设备上

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

此时的外围操作与 CPU 对数据的处理同时进行。把这种在联机情况下实现的同时外围操作称为 SPOOLing,或称为假脱机操作。

Page 87: 第 6 章 设备管理

87

2.SPOOLing系统的组成 从上述可知, SPOOLing技术是对脱机输入、脱机输出

系统的模拟。相应地, SPOOLing系统必须建立在具有多道程序功能的操作系统上,而且还应具有高速随机外存的支持。 SPOOLing系统主要由以下三部分组成:

( 1)输入井和输出井。 这是在磁盘上开辟的两个大的存储空间。输入井是模拟脱机输入时的磁盘设备,用于暂存 I/O 设备输入时的数据;

输出井是模拟脱机输出时的磁盘,用于暂存用户程序的输出数据。

Page 88: 第 6 章 设备管理

88

2.SPOOLing系统的组成

( 2)输入缓冲区和输出缓冲区 为了缓和 CPU 和磁盘之间速度不匹配的矛盾,在内存中要开辟两个缓冲区:输入缓冲区和输出缓冲区。

输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井;输出缓冲区用于暂存从输出井送来的数据,以后再传送给输出设备。

Page 89: 第 6 章 设备管理

89

2.SPOOLing系统的组成( 3)输入进程 SPi和输出进程 SPo。 这里利用两个进程来模拟脱机 I/O 的外围控制机。

其中进程 SPi模拟脱机输入时的外围控制机,将用户要求的数据从输入机通过输入缓冲区再送到输入井,当 CPU 需要数据的时候,直接从输入井读入内存;

进程 SPo模拟脱机输出时的外围控制机,把用户要求输出的数据,先从内存送到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区送到输出设备上。

Page 90: 第 6 章 设备管理

90

3. 共享打印机 打印机属于独占设备。利用 SPOOLing技术可将之改造为一台可供多个用户共享的设备,从而提高设备的利用率,也方便用户的使用。共享打印机技术已被广泛地用于多用户系统和局域网中。

当用户进程请求打印输出时, SPOOLing系统统一为其打印,但并不真正立即把打印机分配给用户进程,而只为它做两件事:

Page 91: 第 6 章 设备管理

91

3. 共享打印机 ①由输出进程在输出井中为之申请一个空闲磁盘块,并将要打印的数据存放其中;②输出进程再为用户进程申请一张空白的用户请求打印表,将用户的打印要求填入其中,再将该表挂到请求打印队列上。

如果还有进程要求打印输出,系统仍可接受其请求,也同样为该进程做上述的两件事。

Page 92: 第 6 章 设备管理

92

3. 共享打印机 如果打印机空闲,输出进程将从请求队列的队首取出一张请求打印表,根据表中的要求将要打印的数据,从输出井传送到内存输出缓冲区,再由打印机进行打印。

打印完后,输出进程再查看请求队列中是否还有打印请求表。若有,又取出队列的第一张表,按要求打印,直至打印请求队列为空,输出进程才将自己阻塞起来。

仅当下次再有打印请求的时候,输出进程才被唤醒。

Page 93: 第 6 章 设备管理

93

4.SPOOLing系统的特点

( 1)提高了 I/O 的速度。 这里对数据所进行的 I/O 操作,已从对低速 I/O 设备进行的 I/O 操作,演变为对输入井或输出井中数据的存取,如同脱机输入输出一样,提高了 I/O 速度,缓和了 CPU 与低速 I/O 设备之间速度不匹配的问题。

Page 94: 第 6 章 设备管理

94

4.SPOOLing系统的特点

( 2)将独占设备改造为共享设备。 因为在 SPOOLing系统中,实际上并没有任何进程分配设备,只是在输入井或输出井中为进程分配了一个存储区并建立了一张请求表。

这样便把独占设备改造为共享设备。

Page 95: 第 6 章 设备管理

95

4.SPOOLing系统的特点

( 3)实现了虚拟设备功能。 宏观上虽然是多个进程在同时使用一台独占设备,而对于每一个进程而言,他们都会认为自己独占了一台设备。当然,该设备也是逻辑上的设备。

SPOOLing系统实现了将独占设备变换为若干台对应的逻辑设备的功能。

Page 96: 第 6 章 设备管理

96

6.5 I/O 进程控制 从用户进程请求 I/O开始,到给用户进程分配设备、启动 I/O 操作、之后响应中断,一直到善后处理为止的整个系统控制过程称为 I/O 进程控制。

本节讲述 I/O 控制过程。

Page 97: 第 6 章 设备管理

97

6.5.1. 用户进程的输入输出请求

用户进程的输入输出请求包括:申请进行 I/O操作的逻辑设备名、要进行的操作、传送数据的长度、起始地址等。

典型的用户进程的输入输出请求可通过下述通用的系统调用命令来实现:

doio( dev, mode, bmount, bddr)

Page 98: 第 6 章 设备管理

98

6.5.1. 用户进程的输入输出请求 其中:dev:表示逻辑设备名;mode:表示操作的类型,如读、写等;bmount:传输数据的数目;bddr:表述数据传送的地址当用户发出请求 I/O 传输的系统调用命令时。设备管理模块中有一个设备驱动程序处理该命令。

Page 99: 第 6 章 设备管理

99

6.5.2. 设备驱动程序

1. 设备驱动程序的功能( 1)实现逻辑设备到物理设备的转换( 2)检查 I/O请求的合法性,了解 I/O 设备的状态,传递有关参数,设置设备的工作方式。

( 3)发出 I/O 命令,启动相应的 I/O 设备,完成相应的 I/O 操作。

( 4)及时相应中断请求,并根据中断类型,调用相应的中断处理程序进行处理。

Page 100: 第 6 章 设备管理

100

6.5.2. 设备驱动程序

2. 设备驱动程序的处理过程 不同的设备有不同的设备驱动程序,但设备驱动程序大都可分为两部分:驱动 I/O 设备工作的驱动程序、设备中断处理程序

设备驱动程序的主要任务是驱动设备,但在驱动之前还有一些准备工作,只有在完成所有的准备工作之后,才向设备控制器发送一条启动命令。

Page 101: 第 6 章 设备管理

101

6.5.2. 设备驱动程序 设备驱动程序的处理过程如下:( 1)将逻辑设备转换为物理设备;( 2) I/O请求的合法性检查;( 3)检查设备的状态。启动某设备的前提是该设备处于空闲状态。因此启动设备之前,必须从设备控制器的状态寄存器中读出该设备的状态,设备空闲时才可启动该设备控制器;否则,等待。

Page 102: 第 6 章 设备管理

102

6.5.2. 设备驱动程序

( 4)传送参数:许多设备除了应向其控制器发出启动命令外,还要传相应的参数。如在启动磁盘读些之前,应先将传送的字节数、数据应送达的主存起始地址送入控制器的相应寄存器中。

Page 103: 第 6 章 设备管理

103

6.5.2. 设备驱动程序

( 5)启动 I/O 设备:完成上述准备工作之后,驱动程序向控制器的命令寄存器中传送相应的控制命令。

驱动程序发出 I/O 命令后,基本的 I/O 是在设备控制器的控制下进行的。

通常 I/O 操作需要一定的时间,此时驱动程序进程把自己阻塞起来,直到中断到来才将它唤醒。

Page 104: 第 6 章 设备管理

104

6.5.3. 中断处理程序的处理过程

I/O 设备在设备控制器的控制下完成了 I/O 操作后,控制器便向 CPU发出一个中断请求; CPU响应后便转向中断处理程序

中断处理程序的处理过程为:1.唤醒被阻塞的驱动程序进程无论是什么类型的中断,当中断处理程序开始执行时,都必须去换新阻塞的驱动程序进程。

Page 105: 第 6 章 设备管理

105

2.保护被中断进程的现场将被中断进程的现场信息保留在相应的中断栈中。3.分析中断原因,转入相应的设备中断处理程序 对中断源进行测试,找出本次中断的 I/O 设备,将该中断处理程序的入口地址装入到程序计数器中,使处理机转向中断处理程序。

Page 106: 第 6 章 设备管理

106

4. 进行中断处理执行相应的中断处理程序,进行中断处理。如果是正常完成中断,驱动程序进行中断处理;若是异常结束,则根据发生的异常原因作相应的处理。

5.恢复中断进程的现场中断处理程序完成后,可将保存在中断栈中的被中断进程的现场信息取出,装入到相应的寄存器中。