`
bulote
  • 浏览: 1354062 次
文章分类
社区版块
存档分类
最新评论

优秀课件笔记之设备管理

 
阅读更多

1、本文所以内容来自 著名高校课件和学生笔记(校园里面经常见到有人高价买笔记)
2、任课教师不会提供参考文献,所以只能对作者表示感谢,如果引用了您的作品,可以用回复方式补充参考文献。
3、我不对文章无关问题进行解答,文章内容也比较难,我也很难解答您遇到的问题,如果发现BUG可以用回复方式帮我修正。
4、本课 计算机操作系统
,适用于计算机操作系统课、考研

本课其他部分的导航条见页面底部

设备管理是操作系统的重要组成部分之一。本章
主要讨论设备管理的基本概念,包括中断、缓冲、设
备分配和控制等。

§8.1 引言
§8.2 数据传送控制方式
§8.3 中断技术
§8.4 缓冲技术
§8.5 设备分配
§8.6 I/O进程控制
§8.7 设备驱动程序
本章小结


§
8.1


8.1.1
设备的类别
在计算机系统中,除了
CPU
和内存之外,其他的
大部分硬设备称为外部设备。它包括常用的输入输出
设备、外存设备以及终端设备等
。本节先从系统管理
的角度将各种设备进行简单的分类,然后再介绍设备
管理的主要功能与任务。
早期的计算机系统由于速度慢、应用面窄,外部
设备主要以纸带、卡片等作为输入输出介质,相应的
设备管理程序也比较简单。
3
由于个人计算机、工作站以及计算机网络系统等
的发展,外部设备开始走向多样化、复杂化和智能化。
再者,除了硬件设备之外,以某种硬件设备为基础的
虚拟设备

仿真设备
技术也得到了广泛应用。例如,
虚终端技术和仿真终端技术
等。实际上,近年来最为
流行的窗口系统中的
X-WINDOW
等都是作为一种设
备和操作系统相连的
。这使得设备管理变得越来越复
杂化。
首先,我们介绍设备的分类。
按设备的
使用特性
分,可分为存储设备、输入输出设备、终端设备以及
脱机设备等
,如图
8.1
所示。
4

8.1
按使用特性对外部设备的分类
5
另外,
按设备的
从属关系
,可把设备画分为系统
设备和用户设备。系统设备是指那些在操作系统生成
时就已配置好的各种标准设备。例如,键盘、打印机
以及文件存储设备等。而用户设备则是那些在系统生
成时没有配置,而由用户自己安装配置后由操作系统
统一管理的设备。例如,网络系统中的各种网板、实
时系统中的
A/D

D/A
变换器、图像处理系统的图像
设备等。
对设备分类的目的在于简化设备管理程序
。由于
设备管理程序是和硬件打交道的,因此,不同的设备
硬件对应于不同的管理程序。不过,对于同类设备来
说,由于设备的硬件特性十分相似,从而可以利用相
同的管理程序或只需做很少的修改即可。
6
除了上述分类方法之外,在有的系统中还
按信息
组织方式来画分设备。
例如,
UNIX
系统就把外部设
备画分为
字符设备和块设备

键盘、终端、打印机等
以字符为单位组织和处理信息的设备被称为
字符设

;而磁盘、磁带等以字符块为单位组织和处理信息
的设备被称为
块设备

7
8.1.2
设备管理的功能和任务
设备管理是对计算机输入输出系统的管理,是操作系
统中最具多样性和复杂性的部分。其
主要任务
是:
(1)
选择和分配输入输出设备以进行数据传输操作

(2)
控制输入输出设备和
CPU

或内存)之间交换数据

(3)
为用户提供友好的透明接口
,把用户和设备硬件特性
分开,使得用户在编制应用程序时不必涉及具体设备,系
统按用户要求控制设备工作。另外,这个接口还为新增加
的用户设备提供一个和系统核心相连接的入口,以便用户
开发新的设备管理程序;
(4)
提高设备和设备之间、
CPU
和设备之间,以及进程和
进程之间的并行操作度,以使操作系统获得最佳效率

8
为了完成上述主要任务,
设备管理程序一般要提
供下述功能:
(1)
提供和进程管理系统的接口
。当进程要求设备资
源时,该接口将进程要求转达给设备管理程序;
(2)
进行设备分配
。按照设备类型和相应的分配算法
把设备和其他有关的硬件分配给请求该设备的进程,
并把未分配到所请求设备或其他有关硬件的进程放入
等待队列;
9
设备管理程序一般要提供下述功能:
(

)
(3)
实现设备和设备、设备和
CPU
等之间的并行操作。
这需要有相应的硬件支持。除了装有控制状态寄存器、
数据缓冲寄存器等的控制器之外,对应于不同的输入
输出
(I/O)
控制方式,还需要有
DMA
通道等硬件。从
而,在设备分配程序根据进程要求分配了设备、控制
器和通道(或
DMA

等硬件之后,通道(或
DMA

将自动完成设备和内存之间的数据传送工作,从而完
成并行操作的任务。在没有通道(或
DMA

的系统
里,则由设备管理程序利用中断技术来完成上述并行
操作;
10
设备管理程序一般要提供下述功能:
(

)
(4)
进行缓冲区管理
。一般来说,
CPU
的执行速度和
访问内存速度都比较高,而外部设备的数据流通速度
则低得多(例如键盘),为了减少外部设备和内存与
CPU
之间的数据速度不匹配的问题,系统中一般设有
缓冲区(器)来暂放数据。设备管理程序负责进行缓
冲区分配、释放及有关的管理工作。
下面,首先介绍各种输入输出的控制方式,然后
再介绍缓冲区管理、中断、陷入以及软中断等基本概
念。在此基础上,再介绍设备分配原则及有关分配算
法,最后介绍
I/O
进程的概念及设备驱动过程。
11
§
8.2
数据传送控制方式
设备管理的主要任务之一是控制设备和内存或
CPU
之间的数
据传送,本节介绍常用数据传送控制方式。
选择和衡量控制方式有如下几条原则

(1)
数据传送速度足够高,能满足用户的需要但又不丢失数据
;
(2)
系统开销小,所需的处理控制程序少;
(3)
能充分发挥硬件资源的能力,使得
I/O
设备尽量忙,而
CPU

待时间少。
为了控制
I/O
设备和内存之间的数据交换,每台外围
设备都按一定规律编码。而且,设备和内存与
CPU
之间有相应的
硬件接口支持同步控制、设备选择以及中断控制等。因此,假定
本节的数据传送控制方式都是基于这些硬件基础的,从而不再讨
论有关硬件部分。
12
外围设备和内存之间的常用数据传送控制方式

4
种。
即:
(1)
程序直接控制方式;
(2)
中断控制方式;
(3) DMA
3AMD)
方式;
(4)
通道方式。
下面分别给予介绍。
13
8.2.1
程序直接控制方式
就是由用户进程来直接控制内存或
CPU
和外围
设备之间的信息传送。
这种方式的控制者是用户进程。
当用户进程需要数据时,它通过
CPU
发出启动
设备
准备数据的启动命令

Start
taSrt


然后,
用户进程进入
测试等待状态

在等待时间内,
CPU
不断地用一条
测试指令检查描述外围设备的工作状态的控制状态寄
存器。
而外围设备只有将数据传送的准备工作作好之
后,才将该寄存器置为完成状态。从而,当
CPU

测到控制状态寄存器为完成状态,也就是该寄存器发


Done

信号之后,设备开始往内存或
CPU
传送数
据。反之,当用户进程需要向设备输出数据时,也必
须同样
发启动命令启动设备和等待设备准备好之后才
能输出数据

14
除了控制状态寄存器之外,在
I/O
控制器中还有
一类称为
数据缓冲寄存器
的寄存器。在
CPU
与外围
设备之间传送数据时,输入设备每进行一次操作,首
先把所输入的数据送入该寄存器,然后,
CPU
再把
其中数据取走。反之,当
CPU
输出数据时,也是先
把数据输出到该寄存器之后,再由输出设备将其取走。
只有数据装入该寄存器之后,控制状态寄存器的值才
会发生变化。程序直接控制方式的控制流程如图
8.2

15

8.2
程序直接控制方式
16
程序直接控制方式虽然
控制简单,也不需要多少
硬件支持,
但是,明显地存在下述
缺点:(
3


(1)
CPU
和外围设备只能串行工作
。由于
CPU
的处理
速度要大大高于外围设备的数据传送和处理速度,所
以,
CPU
的大量时间都处于等待和空闲状态。这使

CPU
的利用率大大降低;
(2) CPU
2PUC)
在一段时间内只能和一台外围设备交换数据
信息,从而
不能实现设备之间的并行工作

(3)
由于程序直接控制方式依靠测试设备标志触发器
的状态位来控制数据传送,因此
无法发现和处理由于
设备或其他硬件所产生的错误
。所以,程序直接控制
方式
只适用于那些
CPU
执行速度较慢,而且外围设
备较少的系统。
17
8.2.2
中断方式
为了减少程序直接控制方式中
CPU
等待时间以
及提高系统的并行工作程度,中断
(interrupt)
方式被
用来控制外围设备和内存与
CPU
之间的数据传送。
这种方式要求
CPU
与设备
(
或控制器
)
之间有相应的中
断请求线,而且在设备控制器的控制状态寄存器的相
应的中断允许位。
中断方式的传送结构如图
8.3
所示。
从而,
数据的输入可按如下步骤操作

(1)
首先,
进程需要数据时,通过
CPU
发出

Start
taSrt


令启动外围设备准备数据。该指令同时还将控制状态
寄存器中的中断允许位打开,以便在需要时,中断程
序可以被调用执行

18

8.3
中断控制方式的传送结构
19
(2)
在进程发出指令启动设备之后,该进程放弃处理
机,等待输入完成。
从而,进程调度程序调度其他
就绪进程占据处理机。
(3)
当输入完成时,
I/O
控制器通过中断请求线向
CPU
发出中断信号。
CPU
在接收到中断信号之后,转
向预先设计好的中断处理程序对数据传送工作进行
相应的处理。
(4)
在以后的某个时刻,进程调度程序选中提出请求
并得到了数据的进程,该进程从约定的内存特定单
元中取出数据继续工作。
中断控制方式的处理过程可由图
8.4
表示。
20

8.4
中断控制方式的处理过程
21
由图
8.4
可以看出,当
CPU
发出启动设备和允许
中断指令之后,它
没有像程序直接控制方式那样循环
测试状态控制寄存器的状态是否已处于

Done



之,
CPU
已被调度程序分配给其他进程在另外的进
程上下文中执行

当设备将数据送入缓冲寄存器并发
出中断信号之后,
CPU
接收中断信号进行中断处理。
显然,
CPU
在另外的进程上下文中执行时,也可以
发启动不同设备的启动指令和允许中断指令,从而做

设备与设备间的并行操作
以及
设备和
CPU
间的并
行操作。
22
尽管中断方式
CPU
的利用率大大提高且能支持多
道程序和设备的并行操作,但仍然存在着许多问题。
首先,由于

I/O
控制器的数据缓冲寄存器装满数据
之后将会发生中断,而且数据缓冲寄存通常较小,因
此,在一次数据传送过程中,发生中断次数较多。


耗去大量的
CPU
处理时间
。另外,现代计算机系统
通常配置有各种各样的外围设备。如果这些设备通过
中断处理方式进行并行操作,则
由于中断次数的急剧
增加而造成
CPU
无法响应中断和出现数据丢失现象。
另外,在中断控制方式时,我们都是假定外围设备的
速度非常低,而
CPU
处理速度非常高。
如果外围设备
的速度也非常高,则可能造成数据缓冲寄存器的数据
由于
CPU
来不及取走而丢失。
DMA
方式和通道方式
不会造成上述问题。
23
8.2.3 DMA
方式
又称直接存取方式。基本思想是在外围设备和内存之间开
辟直接的数据交换通路。

DMA
方式中,
I/O
控制器具有比中
断方式和程序直接控制方式时更强的功能。
除了
控制状态寄存


数据缓冲寄存器
之外,
DMA
控制器中还包括
传送字节计
数器

内存地址寄存器
等。
这是因为
DMA
方式窃取或挪用
CPU
的一个工作周期把数据缓冲寄存器中的数据直接送到内存
地址寄存器所指向的内存区域
。从而,
DMA
控制器可用来代

CPU
控制内存和设备之间进行成批的数据交换。批量数据
(
数据块
)
的传送由计数器逐个计数,并由内存地址寄存器确定
内存地址。
除了在数据块传送开始时需要
CPU
的启动指令和在
整个数据块传送结束时需发中断通知
CPU
进行中断处理之外,
不再像中断控制方式时那样需要
CPU
的频繁干涉。
DMA
存取方式的结构如图
8.5
所示。
24

8.5 DMA
8AM.方式的传送结构
25
DMA
方式的数据输入处理过程如下
:
当进程要求设备输入数据时,
CPU
把准备存放输入数据的内存
始址以及要传送的字节数分别送入
DMA
控制器中的内存地址寄
存器和传送字节计数器
;
另外,还把控制状态寄存器中的中断
允许位和启动位置
1;
从而启动设备开始进行数据输入。
发出数据要求的进程进入等待状态,进程调度程序调度其他进
程占据
CPU

(3)
输入设备不断地挪用
CPU
工作周期,将数据缓冲寄存器中的数
据源源不断地写入内存,直到所要求的字节全部传送完毕。
(4) DMA
控制器在传送字节数完成时通过中断请求线发出中断信
号,
CPU
在接收到中断信号后转中断处理程序进行善后处理。
(5)
中断处理结束时,
CPU
返回被中断进程处执行或被调度到新的
进程上下文环境中执行。
DMA
方式的处理过程如图
8.6
所示。
26

8.6 DMA
8AM.方式的数据传送处理过程
27
由图
8.6
可以看出,
DMA
方式与中断方式的一个主要区别是,
中断方式时是在数据缓冲寄存器满之后发中断要求
CPU
进行中断处
理,而
DMA
方式则是在所要求转送的数据块全部传送结束时要求
CPU
进行中断处理。
这就
大大减少了
CPU
进行中断处理的次数。

一个主要区别是,
中断方式的数据传送是在中断处理时由
CPU
控制
完成的,而
DMA
方式是在
DMA
控制器的控制下不经过
CPU
控制完
成的
。这就排除了因并行操作设备过多时
CPU
来不及处理或因速度
不匹配而造成数据丢失等现象。
不过,
DMA
方式仍存在着一定的局限性。首先,
DMA
方式对
外围设备的管理和某些操作仍由
CPU
控制。
在大中型计算机中,系
统所配置的外设种类越来越多,数量也越来越大,因而,对外围设
备的管理的控制也就愈来愈复杂。
多个
DMA
控制器的同时使用显然
会引起内存地址的冲突并使得控制过程进一步复杂化
。同时,
多个
DMA
控制器的同时使用也是不经济的。
因此,在大中型计算机系统
中(近年来甚至在那些要求
I/O
能力强的微机系统中),除了设置
DMA
器件之外,还
设置专门的硬件装置
——
通道
。下面介绍通道控
制方式。
28
8.2.4
通道控制方式
通道控制
(channel control)
方式与
DMA
方式相类
似,
也是一种以内存为中心,实现设备和内存直接交
换数据的控制方式。

DMA
方式不同的是,

DMA
方式中,数据的传送方向、存放数据的内存始址以及
传送的数据块长度等都由
CPU
控制,而在通道方式
中,这些都由专管输入输出的硬件
——
通道来进行控
制。
另外,与
DMA
方式时每台设备至少一个
DMA

制器相比,通道控制方式可以做到一个通道控制多台
设备与内存进行数据交换,从而,通道方式进一步减
轻了
CPU
的工作负担和增加了计算机系统的并行工
作程度。
29
由于通道是一个专管输入输出操作控制的硬件,
有必要更进一步完整地描述一下
通道的定义

通道是
一个独立于
CPU
的专管输入输出控制的处理机,它控
制设备与内存直接进行数据交换。它有自己的通道指
令,这些通道指令受
CPU
启动,并在操作结束时向
CPU
发中断信号。
通道的定义给出了通道控制方式的基本思想。在
通道控制方式中,
I/O
控制器中没有传送字节计数器
和内存地址寄存器;但多了
通道设备控制器

指令执
行机构

在通道方式下,
CPU
只需发出启动指令,指
出通道相应的操作和
I/O
设备,该指令就可启动通道
并使该通道从内存中调出相应的通道指令执行。
30
通道指令一般包含有被交换数据在内存中应占据
的位置、传送方向、数据块长度以及被控制的
I/O

备的地址信息、特征信息等,通道指令在通道中没有
存储部件时存放在内存中

通道指令的格式一般由操作码、读、写或控制、
计数段
(
数据块长度
)
以及内存地址段和结束标志等组
成。
通道指令在进程要求数据时由系统自动生成

例如:
write 0 0 250 1850
write 1 1 250 720
是两条把一个记录的
500
个字符分别写入从内存地址
1850
开始的
250
个单元和从内存地址
720
开始的
250

单元中。其中假定
write
操作码后的

1

是通道指令结
束标志,而另一个

1

则是记录结束标志。该指令中
省略了设备号和设备特征。
31
另外,
一个通道可以以分时方式同时执行几个通道指令程


按照信息交换方式不同,一个系统中可设立三种类型的通
道,即字节多路通道、数组多路通道和选择通道。
由这三种通
道组成的数据传送控制结构如图
8.7
所示。
字节多路通道以字节为单位传送数据,它主要用来连接
大量的低速设备,如终端、打印机等

数组多路通道以块为单位传送数据,它具有传送速率高
和能分时操作不同的设备等优点。数组多路通道主要用来连接
中速块设备,如磁带机等。
数组多路通道和字节多路通道都可

分时执行不同的通道指令程序

但是,
选择通道一次只能执行一个通道指令程序
。所以,
选择通道一次只能控制一台设备进行
I/O
操作
。不过,
选择通
道具有传送速度高的特点,因而它被用来连接高速外部设备,
并以块为单位成批传送数据。受选择通道控制的外设有磁盘机
等。
32

8.7
通道方式的数据传送结构
33
通道控制方式的数据输入处理过程可描述如下
:
(1)
当进程要求设备输入数据时,
CPU

Start
指令指明
I/O
操作、
设备号和对应通道。
(2)
对应通道接收到
CPU
发来的启动指令
Start
之后,把存放在
内存中的通道指令程序读出,设置对应设备的
I/O
控制器中
的控制状态寄存器。
(3)
设备根据通道指令的要求,把数据送往内存中指定区域。
(4)
若数据传送结束,
I/O
控制器通过中断请求线发中断信号请

CPU
做中断处理。

5
步与
DMA
方式时相同,即中断处理结束后
CPU
返回被中断
进程处继续执行。

(1)
中要求数据的进程只有在调度程序选中它之后,
才能对所得到的数据进行加工处理。
34
另外,在许多情况下,人们可从
CPU
执行的角度描述中断控
制方式、
DMA
方式或通道控制方式的控制处理过程。作为一
个例子,这里给出通道控制方式的描述过程。
Channel control procedure:
repeat
IR
←M
[pc

pc
← pc+1
execute(IR
)
if require accessing with I/O Device
then
Command(I
/O
operation,Address
of I/O
device,channel
)
fi
if I/O Done
Interrupt
then
Call Interrupt processing control
fi
until machine halt
Interrupt processing control procedure

其中,
IR
代表指令寄存器,
pc
代表程序计数器,而
fi
则表示
if...then...
条件语句的结束。关于
interrupt processing control
部分,在下面的章节中将进一步讨论。
35
§
8.3




从上节可以看出,除了程序直接控制方式之外,
无论是中断控制方式、
DMA
方式还是通道控制方
式,都需在设备和
CPU
之间进行通信,由设备向
CPU
发中断信号之后,
CPU
接收相应的中断信号进
行处理。这几种方式的区别只是
中断处理的次数


据传送方式
以及
控制指令的执行方式
等。在计算机系
统中,除了上述
I/O
中断之外,还存在着许多其他的
突发事件,例如电源掉电、程序出错等,这些也会发
出中断信号通知
CPU
做相应的处理。本节进一步讨
论中断问题。
36
8.3.1
中断的基本概念
中断
(Interrupt)
是指计算机在执行期间,系统
内发生任何非寻常的或非预期的急需处理事件,使

CPU
暂时中断当前正在执行的程序而转去执行相
应的事件处理程序,待处理完毕后又返回原来被中
断处继续执行或调度新的进程执行的过程。
引起中
断发生的事件被称为
中断源
。中断源向
CPU
发出的
请求中断处理信号称为
中断请求
,而
CPU
收到中断
请求后转相应的事件处理程序称为
中断响应

37
在有些情况下,尽管产生了中断源和发出了中断请求,但
CPU
内部的处理机状态字
PSW
的中断允许位已被清除,从而不
允许
CPU
响应中断。这种情况称为
禁止中断

CPU
禁止中断后
只有等到
PSW
的中断允许位被重新设置后才能接收中断。
禁止
中断也称为
关中断

PSW
的中断允许位的设置也被称为
开中断

中断请求、关中断、开中断等都由
硬件实现
。开中断和关中断
是为了保证某些程序执行的
原子性

除了禁止中断的概念之外,还有一个比较常用的概念是中
断屏蔽。
中断屏蔽
是指在中断请求产生之后,系统用软件方式
有选择地封锁部分中断而允许其余部分的中断仍能得到响应。
中断屏蔽是通过每一类中断源设置一个
中断屏蔽触发器

屏蔽它们的中断请求而实现的。
不过,有些中断请求是不能屏
蔽甚至不能禁止的,也就是说,这些中断具有最高优先级。不

CPU
是否是关中断的,只要这些中断请求一旦提出,
CPU

须立即响应。例如,电源掉电事件所引起的中断就是不可禁止
和屏蔽中断。
38
8.3.2
中断的分类与优先级
根据系统对中断处理的需要,操作系统一般对中
断进行分类并对不同的中断赋予不同的处理优先级,
以便在不同的中断同时发生时,按轻重缓急进行处理。
根据中断源产生的条件,可把中断分为
外中断和内中


外中断时指
来自处理机和内存外部的中断
,包

I/O
设备发出的
I/O
中断

外部信号中断
(
例如用户
键入
ESC

)
、各种定时器引起的
时钟中断
以及调试
程序中设置的断点等引起的
调试中断
等。外中断在狭
义上一般被称为中断。
39
内中断主要指在处理机和内存内部产生的中断。
内中断一般称为陷阱
(trap)

它包括程序运算引起
的各种错误,如地址非法、校验错、页面失效、存
取访问控制错、算术操作溢出、数据格式非法、除
数为零、非法指令、用户程序执行特权指令、分时
系统中的时间片中断以及从用户态到核心态的切换
等都是陷阱的例子。
为了按中断源的轻重缓急处理响应中断,
操作
系统对不同的中断赋予不同的优先级。
为了禁止中
断或屏蔽中断,
CPU
的处理机状态字
PSW
中也设
置有相应的优先级
。如果中断源的优先级高于
PSW
的优先级,则
CPU
响应该中断源的中断请求,反
之,
CPU
屏蔽该中断源的中断请求。
40
各中断源的优先级在系统设计时给定,在系统运行
时是固定的。而处理机的优先级则根据执行情况由
系统程序动态设定。
中断和陷阱还有如下主要区别
:
(1)
陷阱通常由处理机正在执行的现行指令引起,
而中断则是由与现行指令无关的中断源引起的。
(2)
陷阱处理程序提供的服务为当前进程所用,而
中断处理程序提供的服务则不是为了当前进程的。
(3) CPU
3PUC)
在执行完一条指令之后,下一条指令开始
之前响应中断,而在一条指令执行中也可以响应陷
阱。
例如执行指令非法时,尽管被执行的非法指令
不能执行结束,但
CPU
仍可对其进行处理。
另外,在有的系统中,陷阱处理程序被规定在
各自的进程上下文中执行,而中断处理程序则在系
统上下文中执行。
41
8.3.3
软中断
上述中断和陷阱都可以看作是
硬中断
,因为这些
中断和陷阱要通过
硬件产生相应的中断请求
。而
软中

则不然,它
是通信进程之间用来模拟硬中断的一种
信号通信方式。软中断与硬中断相同的地方是:其中
断源发中断请求或软中断信号后,
CPU
或接收进程
在适当的时机自动进行中断处理或完成软中断信号所
对应的功能
。这里用

适当的时机

几个字是表示接收
软中断信号的进程不一定正好在接收时占有处理机,
而相应的处理必须等到该接收进程得到处理机之后才
能进行。如果该接收进程是占据处理机的,那么,与
中断处理相同,该接收进程在接收到软中断信号后将
立即转去执行该软中断信号所对应的功能。
42
软中断的概念主要来源于
UNIX
系统。在前面
介绍进程通信的有关章节中,已对
UNIX
的软中断
通信进行了介绍,这里不再重复。
需要说明的一点是,在有些系统中,大部分的
陷阱是转化为软中断处理的。由于陷阱主要与当前
执行进程有关,因此,如果当前执行指令产生陷阱
的话,则向当前执行进程自身发出一个软中断信号
从而立即进入陷阱处理程序。
43
8.3.4
中断处理过程(
7
步)
一旦
CPU
响应中断,转入中断处理程序,系统
就开始进行中断处理。下面说明
中断处理过程
:
(1)
首先,
CPU
检查响应中断的条件是否满足

CPU
响应中断的条件是:有来自于中断源的中断请求
CPU
允许中断。
(2)
如果
CPU
响应中断,则
CPU
关中断
,使其进入不
可再次响应中断的状态。
(3)
保存被中断进程现场
。为了在中断处理结束后能
使进程正确地返回到中断点,系统必须保存当前处
理机状态字
PSW
和程序计数器
PC
等的值。这些值
一般保存在
特定堆栈

硬件寄存器
中。
(4)
分析中断原因,调用中断处理子程序
。在多个中
断请求同时发生时,处理优先级最高的。
44
在系统中,为了处理上的方便,通常都是针对不同的
中断源编制有不同的
中断处理子程序
(
陷阱处理子程

)
。这些子程序的入口地址
(
或陷阱指令的入口地址
)
存放在内存的特定单元中
。再者,不同的中断源也对
应着不同的处理机状态字
PSW

这些不同的
PSW

放在相应的内存单元
中。
存放的
PSW
与中断处理子
程序入口地址一起构成中断向量
。显然,根据中断或
陷阱的种类,系统可
由中断向量表迅速地找到该中断
响应的优先级、中断处理子程序
(
或陷阱指令
)
的入口
地址和对应的
PSW

(5)
执行中断处理子程序
。对陷阱来说,在有些系统
中则是通过陷阱指令向当前执行进程发软中断信号后
调用对应的处理子程序执行。
45
(6)
退出中断,恢复被中断进程的现场或调度新进程
占据处理机。
(7)
开中断,
CPU
继续执行

中断处理过程如图
8.8
所示。
有些系统中只在保存和恢复现场时禁止中断,而
在执行中断处理子程序时屏蔽中断。
上面描述了中断处理过程的各个步骤。下面

CPU
处理的角度出发来形式化地描述一下
I/O
中断处
理的控制过程,
以期读者能对中断处理过程有一个更
深的了解。
46

8.8
中断处理过程
47
I/O Interrupt processing control:
begin
unusable I/O Interrupt flag
save status of interrupt program
if Input Device i Ready
then
Call Input Device i Control
fi
if
Output Device i Ready
then
Call Output Device i Control
fi
if
Data Deliver Done
then
Call Data Deliver Done Control
fi
restore CPU status
reset I/O Interrupt flag
end
Input Device i Control:
……
Output Device i Control:
……
Data Deliver Done Control:
……
48
§
8.4




8.4.1
缓冲的引入
虽然中断、
DMA
和通道控制技术使得系统
中设备和设备、设备和
CPU
等得以并行工作,但是

围设备和
CPU
的处理速度不匹配的问题是客观存在的。
这限制了和处理机连接的外设台数,且在中断方式时
造成数据丢失。从而,外围设备和
CPU
处理速度不匹
配的问题极大地制约了计算机系统性能的进一步提高
和限制了系统的应用范围。
例如,当计算进程阵发性地把大批量数据输出到
打印机上打印时,由于
CPU
输出数据的速度大大高于
打印机的打印速度,因此,
CPU
只好停下来等待。反
之,在计算进程进行计算时,打印机又因无数据输出
而空闲无事。
49
外围设备与处理机速度不匹配的问题可以采用

置缓冲区
(

)
的方法解决。
再者,从减少中断的次数看,也存在着引入缓冲
区的必要性。在中断方式时,如果在
I/O
控制器中增加
一个
100
个字符缓冲器,则由前面各字对中断方式的
描述可知,
I/O
控制器对处理机的中断次数将降低
100
倍,即等到能存放
100
个字符的字符缓冲区装满之后
才向处理机发一次中断。这将大大减少处理机的中断
处理时间。
即使是使用
DMA
方式或通道方式控制数据
传送时,如果不画分
专用的内存区

专用缓冲器
来存
放数据的话,也会因为要求数据的进程所拥有的内存
区不够或存放数据的内存始址计算困难等原因而造成
某个进程长期占有通道或
DMA
控制器及设备,从而产
生所谓
瓶颈问题

50
因此,
为了匹配外设与
CPU
之间的处理速度,
为了减少中断次数和
CPU
的中断处理时间,同时也
是为了解决
DMA
或通道方式时的瓶颈问题,在设备
管理中引入了用来暂存数据的
缓冲技术

根据
I/O
控制方式,缓冲的实现方法有两种,

种是采用专用硬件缓冲器

硬缓冲


例如
I/O
控制
器中的数据缓冲寄存器。
另一种方法是在内存画出一
个具有
n
个单元的专用缓冲区,以便存放输入输出的
数据
。内存缓冲区又称
软件缓冲

51
8.4.2
缓冲的种类
根据系统设置的缓冲器的个数,可把缓冲技术分

单缓冲、双缓冲和多缓冲以及缓冲池
几种

单缓冲是在设备和处理机之间设置一个缓冲器。
设备和处理机交换数据时,先把被交换数据写入缓冲
器,然后,需要数据的设备或处理机从缓冲器取走数
据。由于
缓冲器属于临界资源
,即不允许多个进程同
时对一个缓冲器操作,因此,设备和设备之间不能通
过单缓冲达到并行操作。
解决两台外设、打印机和终端之间的并行操作问
题的办法是
设置
双缓冲
。有了两个缓冲器之后,
CPU
可把输出到打印机的数据放入其中一个缓冲器
(

)

让打印机慢慢打印
;
然后,它又可以从另一个为终端
设置的缓冲器
(

)
中读取所需要的输入数据。
52
显然,
双缓冲只是一种说明设备和设备、
CPU

设备并行操作的简单模型,并不能用于实际系统中的
并行操作。
这是因为计算机系统中的外围设备较多,
另外,双缓冲也很难匹配设备和处理机的处理速度。
因此,现代计算机系统中一般使用多缓冲或缓冲池结
构。
多缓冲
是把多个缓冲区连接起来组成两部分,一
部分专门用于输入,另一部分专门用于输出的缓冲结
构。
缓冲池
则是把多个缓冲区连接起来统一管理,既
可用于输入又可用于输出的缓冲结构。
显然,无论是多缓冲,还是缓冲池,由于缓冲器
是临界资源,在使用缓冲区时都有一个申请、释放和
互斥的问题。下面
以缓冲池为例,介绍缓冲的管理

53
8.4.3
缓冲池的管理
1.
缓冲池的结构
缓冲池由多个缓冲区组成。而一个缓冲区由两部
分组成
:
一部分是用来标识该缓冲器和用于管理的
缓冲首部
,另一部分是用于存放数据的
缓冲体
。这
两部分有一一对应的映射关系。对缓冲池的管理是
通过对每一个缓冲器的缓冲首部进行操作实现的。
缓冲首部如图
8.9
所示,它包括设备号、设备上的
数据块号
(
块设备时
)
、互斥标识位以及缓冲队列连
接指针和缓冲器号等。
系统把各缓冲区按其使用状况连成三种队列
:
(1)
空白缓冲队列
em

其队首指针为
F(em
)

队尾指针

L(em
);
54

8.9
缓冲首部
(2)
装满输入数据的输入缓冲队列
in

其队首指针为
F(in)

队尾指针为
L(in);
(3)
装满输出数据的输出缓冲队列
out

其队首指针为
F(out)

队尾指针为
L(out)

其队列构成如图
8.10
所示。
55

8.10
缓冲区队列
56
除了三种缓冲队列之外,
系统
(
或用户进程
)
从这
三种队列中申请和取出缓冲区,并用得到的缓冲区进
行存数、取数操作,在存数、取数操作结束后,再将
缓冲区放入相应的队列。这些缓冲区被称为
工作缓冲


在缓冲池中,有
4
种工作缓冲区
,

:
(1)
用于收容设备输入数据的收容输入缓冲区
hin
;
(2)
用于提取设备输入数据的提取输入缓冲区
sin;
(3)
用于收容
CPU
输出数据的收容输出缓冲区
hout
;
(4)
用于提取
CPU
输出数据的提取输出缓冲区
sout

缓冲池的工作缓冲区如图
8.11
所示。
57

8.11
缓冲池的工作缓冲区
58
2.
缓冲池管理
对缓冲池的管理由如下几个操作组成
:
(1)
从三种缓冲区队列中按一定的选取规则取出一个缓
冲区的过程
take_buf(type
);
(2)
把缓冲区按一定的选取规则插入相应的缓冲区队列
的过程
add_buf(type
, number);
(3)
供进程申请缓冲区用的过程
get_buf(type,number
tr_);
(4)
供进程将缓冲区放入相应缓冲区队列的过程
put_buf(type,work_buf
)

其中,参数
type
表示缓冲队列类型,
number
rbneum

缓冲区号,而
work_buf
则表示工作缓冲区类型。
使用这几个操作,缓冲池的工作过程可描述如下
:
59
缓冲池的工作过程可描述如下
:
首先,输入进程调用
get_buf(em,number
ter_)
过程从
空白缓冲区队列中取出一个缓冲号为
number
rbneum
的空白缓
冲区,将其作为收容输入缓冲区
hin
,当
hin
中装满了
由输入设备输入的数据之后,系统调用过程
put_buf(in,hin
npb,)
将该缓冲区插入输入缓冲区队列
in
中。
另外,当进程需要输出数据时,输出进程经过缓
冲管理程序调用过程
get_buf(em,number
ter_)
从空白缓冲
区队列中取出一个空白缓冲区
number
rbneum
作为收容输出缓
冲区
hout
,待
hout
中装满输出数据之后,系统再调用
过程
put_buf(out,hout
)
将该缓冲区插入输出缓冲区队

out

60
对缓冲区的输入数据和输出数据的提取也是由过

get_buf

put_buf
实现的。
get_buf(out,number
tr_)
从输
出缓冲队列中取出装满输出数据的缓冲区
number
rbneum


其作为
sout
。当
sout
中数据输出完毕时,系统调用过程
put_buf(em,sout
)
将该缓冲区插入空白缓冲队列。而
get_buf(in,number
tr_)
则从输入缓冲队列中取出一个装满
输入数据的缓冲区
number
rbneum
作为输入缓冲区
sin
,当
CPU
从中提取完所需数据之后,系统调用过程
put_buf(em,sin
npmsbuut )
将该缓冲区释放和插入空白缓冲队列
em
中。
61
显然,对于各缓冲队列中缓冲区的排列以及每次
取出和插入缓冲队列区的顺序都应有一定的规则。最
简单的方法是
FIFO

即先来先出的排列方法。采用
FIFO
方法,过程
put_buf
每次把缓冲区插入相应缓冲
队列的队尾,而过程
get_buf
则取出相应缓冲队列的第
一个缓冲区,从而
get_buf
中的第二个参数
number
rbneum

以省略。而且,采用
FIFO
方法也省略了对缓冲队列
的搜索时间。
过程
add_buf(type,number
)

take_buf(type,number
)

别用来把缓冲区
number
rbneum
插入
type
队列和从
type
队列中
取出缓冲区
number
rbneum

它们分别被过程
get_buf

put_buf
调用,其中,
take_buf
返回所取缓冲区
number
的指针
,

add_buf
则将给定缓冲区
number
rbneum
的指针链
入队列。
62
下面给出过程
get_buf

put_buf
的描述。
首先,设互斥信号量
S(type)

其初值为
1
。设描述资源数目的信号

RS(type)

其初值为
n(n

type
队列长度
)

get_buf(type,number
):
begin
P(RS(type))
P(S(type))
Pointer of buffer(number) =
take_buf(type,number
)
V(S(type))
end
put_buf(type,number
):
begin
P(S(type
))
add_buf(type,number)
V(S(type
))
V(RS(type
))
end
63
§
8.5




前面已经介绍了
I/O
数据传送控制方式及与其紧密
相关的中断技术与缓冲技术。在讨论这些问题时,已
经做了如下假定:即每一个准备传送数据的进程都已
申请到了它所需要的外围设备、控制器和通道。事实
上,
由于设备、控制器和通道资源的有限性,不是每
一个进程随时随地都能得到这些资源。进程必须首先
向设备管理程序提出资源申请,然后,由设备分配程
序根据相应的分配算法为进程分配资源。如果申请进
程得不到它所申请的资源时,将被放入资源等待队列
中等待,直到所需要的资源被释放。
下面,讨论设备分配和管理的数据结构、分配策
略原则以及分配算法等。
64
8.5.1
设备分配用数据结构
设备的分配和管理通过下列数据结构进行。
1.
设备控制表
DCT(Device Control Table)
设备控制表
DCT
反映设备的特性、设备和
I/O

制器的连接情况。包括设备标识、使用状态和等待使
用该设备的进程队列等。系统中每个设备都必须有一

DCT

且在系统生成时或在该设备和系统连接时
创建,但表中的内容则根据系统执行情况而被动态地
修改。
DCT
包括以下内容
:
(1)
设备标识符,设备标识符用来区别设备

(2)
设备类型,反映设备的特性,例如是终端设备、
块设备或字符设备等

65
DCT
包括以下内容:
(续)
(3)
设备地址或设备号
,由计算机原理课可知,
每个
设备都有相应的地址或设备号。这个地址既可以
是和内存统一编址的,也可以是单独编址的

(4)
设备状态,指设备是处理工作还是空闲中

(5)
等待队列指针,等待使用该设备的进程组成等待
队列,其队首和队尾指针存放在
DCT
中。
(6)
I/O
控制器指针,该指针指向该设备相连接的
I/O
控制器。
66
2.
系统设备表
SDT(System Device Table)
系统设备表
SDT
STD
整个系统一张,它记录已被连接
到系统中的所有物理设备的情况,并为每个物理设备
设一表项。
SDT
STD
的每个表项包括的内容有
:
(1)
DCT
指针,该指针指向有关设备的设备控制表

(2)
正在使用设备的进程标识

(3)
设备类型和设备标识符,该项的意义与
DCT
中的
相同。
SDT
STD
的主要意义在于反映系统中设备资源的状
态,即系统中有多少设备,有多少是空闲的,而又有
多少已分配给了哪些进程。
67
3.
控制器表
COCT(COntroler
eronTCOlt
Control Table)
COCT
也是每个控制器一张,它反映
I/O
控制器
的使用状态以及和通道的连接情况等
(

DMA
方式
时,该项是没有的
)

4.
通道控制表
CHCT(CHannel
l(Control Table)
该表只在通道控制方式的系统中存在,也是每个
通道一张。
CHCT
包括通道标识符、通道忙
/
闲标识、
等待获得该通道的进程等待队列的队首指针与队尾指
针等
SDT
STD

DCT

COCT

CHCT
如图
8.12
所示。
显然,
一个进程只有获得了通道、控制器和所需
设备三者之后,才具备了进行
I/O
操作的物理条件

68

8.12
数据结构表
69
8.5.2
设备分配的原则
1.
设备分配原则
设备分配的原则是根据设备特性、用户要求和系
统配置情况决定的。
设备分配的总原则是既要充分发
挥设备的使用效率,尽可能的让设备忙,但又要避免
由于不合理的分配方法造成进程死锁
;
另外还要做到
把用户程序和具体物理设备隔离开来,即用户程序面
对的是逻辑设备,而分配程序将在系统把逻辑设备转
换成物理设备之后,再根据要求的物理设备号进行分
配如图
8.13
所示。
70

8.13
设备分配流程图
71
设备分配方式有两种,即
静态分配和动态分配

静态分配方式是在用户作业开始执行之前,由系统一
次分配该作业所要求的全部设备、控制器和通道。一
旦分配之后,这些设备、控制器和通道就一直为该作
业所占用,直到该作业被撤消。静态分配方式不会出
现死锁,但设备的使用效率低。因此,静态分配方式
并不符合设备分配的总原则

动态分配在进程执行过程中根据执行需要进行

当进程需要设备时,通过系统调用命令向系统提出设
备请求,由系统按照事先规定的策略给进程分配所需
要的设备、
I/O
控制器和通道,一旦用完之后,便立即
释放。动态分配方式有利于提高设备的利用率,但如
果分配算法使用不当,则有
可能造成进程死锁

72
2.
设备分配策略
与进程调度相似,动态设备分配也是基于一定的
分配策略的。
常用的分配策略有先请求先分配、优先
级高者先分配策略等

(1)
先请求先分配
当有多个进程对某一设备提出
I/O
请求时,或者
是在同一设备上进行多次
I/O
操作时,
系统按提出
I/O
请求的先后顺序,将进程发出的
I/O
请求命令排成队
列,其队首指向被请求设备的
DCT

当该设备空闲
时,系统从该设备的请求队列的队首取下一个
I/O

求消息,将设备分配给发出这个请求消息的进程。
73
(2)
优先级高者先分配
优先级高者指发出
I/O
请求命令的进程。这种策
略和
进程调度的优先数法
是一致的,即
进程的优先级
高,它的
I/O
请求也优先予以满足。
对于相同优先级
的进程来说,则按先请求先分配策略分配。因此,优
先级高者先分配策略把请求某设备的
I/O
请求命令按
进程的优先级组成队列,从而保证在该设备空闲时,
系统能从
I/O
请求队列队首取下一个具有最高优先级
进程发来的
I/O
请求命令,并将设备分配给发出该命
令的进程。
74
8.5.3
设备分配算法
根据设备分配策略和原则,使用系统提
供的
SDT
STD

DCT

COCT

CHCT
等数据结

,
当某个进程提出
I/O
设备请求之后,就可
按上图
8.13
所示流程进行设备分配。
75
§
8.6 I/O
进程控制
8.6.1 I/O
控制的引入
系统在何时分配设备,在何时申请缓冲,和由哪
个进程进行中断响应呢
?
另外,尽管
CPU
向设备或通
道发出了启动指令,设备的启动以及
I/O
控制器中有
关寄存器的值由谁来设置呢
?
这些都是前面几节的讨
论中没有解决的问题。
从用户进程的输入输出请求开始,给用户进程分
配设备和启动有关设备进行
I/O
操作,以及在
I/O
操作
完成之后响应中断,进行善后处理为止的整个系统控
制过程称为
I/O
控制

76
8.6.2 I/O
控制的功能
I/O
控制的功能如图
8.14
所示。

8.14 I/O
控制的功能
77
I/O
控制过程首先收集和分析调用
I/O
控制过程的原因:
是外设来的中断请求?还是进程来的
I/O
请求?然后分别调
用不同的程序模块进行处理


8.14
中各子模块的功能:
I/O
请求处理是用户进程和
设备管理程序接口的一部分,它把用户进程的
I/O
请求变换
为设备管理程序所能接受的信息。
一般来说,用户的
I/O

求包括:所申请进行
I/O
操作的
逻辑设备名
、要求的操作、
传送数据的长度和起始地址等

I/O
请求处理模块对用户的
I/O
请求进行处理。它首先将
I/O
请求中的逻辑设备名转换
为对应的物理设备名;
然后,检查
I/O
请求命令中是否有参
数错误;在
I/O
请求命令参数正确时,它把该命令插入指向
相应
DCT

I/O
请求队列;然后
启动设备分配程序

在有
通道的系统中,
I/O
请求处理模块还将按
I/O
请求命令的要
求编制出通道程序。
78
在设备分配程序为
I/O
请求
分配了相应的设备、
控制器和通道之后,
I/O
控制模块还将启动缓冲管理
模块为此次
I/O
传送
申请必要的缓冲区
,以保证
I/O

送的顺利完成。
缓冲区的申请也可在设备分配之前进

。例如
UNIX
系统首先请求缓冲区,然后把
I/O
请求
命令写到缓冲区中并将该缓冲区挂到设备的
I/O
请求
队列上。
另外,
在数据传送结束后,外设发出中断请求,
I/O
控制过程将调用中断处理程序和做出中断响应。
对于不同的中断,其善后处理不同
。例如处理结束中
断时,要
释放相应的设备、控制器和通道,并唤醒正
在等待该操作完成的进程。
另外,
还要检查是否还有
等待该设备的
I/O
请求命令。如有,则要通知
I/O
控制
过程进行下一个
I/O
传送。
79
8.6.3 I/O
控制的实现
I/O
控制过程在系统中可以按三种方式实现

作为请求
I/O
操作的进程的一部分实现
。这种情况下,请

I/O
操作的进程应具有良好的实时性,且系统应能根据
在中断信号的内容准确地调度到请求所对应
I/O
操作的进
程占据处理机,因为在大多数情况下,当一个进程发出
I/O
请求命令之后,都被阻塞睡眠。
作为当前进程的一部分实现
。作为当前进程的一部分实现
时,不要求系统具有高的实时性。但由于当前进程与完成

I/O
操作无关,所以当前进程不能接受
I/O
请求命令的启

I/O
操作。不过,当前进程可以在接收到中断信号后,
将中断信号转交给
I/O
控制模块处理,因此,如果让请求
I/O
操作的进程调用
I/O
操作控制部分
(I/O
请求处理、设备
分配、缓冲区分配等
)
,而让当前进程负责调用中断处理部
分也是一种可行的
I/O
控制方案。
80
(3)
I/O
控制由专门的系统进程
——
I/O
进程完成
。在
用户进程发出
I/O
请求命令之后,系统调度
I/O

程执行,控制
I/O
操作。同样,在外设发出中断请
求之后,
I/O
进程也被调度执行以响应中断。
I/O
请求处理模块、设备分配模块以及缓冲区管理模
块和中断原因分析、中断处理模块和后述的设备
驱动程序模块等都是
I/O
进程的一部分。
I/O
进程也可分为三种方式实现
。即
:
a.
每类
(

)
设备设一专门的
I/O
进程,且该进程只能
在系统态下执行。
b.
整个系统设一
I/O
进程,全面负责系统的数据传送
工作。又可把
I/O
进程分为输入进程和输出进程。
c.
每类
(

)
设备设一个专门的
I/O
进程,但该进程既可
在用户态也可在系统态下执行。
81
§
8.7
设备驱动程序
设备驱动程序是
驱动物理设备和
DMA
控制器或
I/O
控制器等直接进行
I/O
操作的子程序
的集合。负责
设置相应设备有关寄存器的值,启动设备进行
I/O

作,指定操作的类型和数据流向等。
为了对驱动程序进行管理,系统中设置有
设备开
关表
DST

设备开关表中给出相应设备的各种操作子
程序的入口地址,例如打开、关闭、读、写和启动设
备子程序的入口地址。一般设备开关表是二维结构,
其中的行和列分别表示设备类型和驱动程序类型。设
备开关表也是
I/O
进程的一个数据结构。
I/O
控制过程
为进程分配设备和缓冲区之后,可以使用设备开关表
调用所需的驱动程序进行
I/O
操作。
82




设备管理的主要任务是
控制设备和
CPU
之间进行
I/O
操作

设备管理成了操作系统中最复杂、最具有多
样性的部分。
设备管理模块在控制各类设备和
CPU


I/O
操作的同时,还要尽可能地
提高设备和设备之间、
设备和
CPU
之间的并行操作度以及设备利用率,从而
使得整个系统获得最佳效率

另外,
设备管理模块还
应该为用户提供一个
透明的、易于扩展的接口,
以使
得用户不必了解具体设备的物理特性和便于设备的追
加和更新。
本章从设备的分类出发,对设备和
CPU
之间的数
据传送的控制方式、中断和缓冲技术、设备分配原则
和算法、
I/O
控制过程以及设备驱动程序进行讨论。
83
常用的设备和
CPU
之间数据传送控制方式有
4
种,它们是
程序直接控制方式、中断控制方式、
DMA
方式和通道方式。
程序直接控制方式和中断控
制方式都只适用于简单的、外设很少的计算机系统,
因为
程序直接控制方式耗费大量的
CPU
时间
,而且
无法检测发现设备或其他硬件产生的错误,设备和
CPU

设备和设备只能串行工作。中断控制方式虽
然在某种程度上解决了上述问题,但由于
中断次数
多,因而
CPU
仍需要花较多的时间处理中断
,而且
能够并行操作的设备台数也受到中断处理时间的限
制,中断次数增多导致数据丢失。
84
DMA
方式和通道方式较好地解决了上述问题。
这两种方式采用了外设和内存直接交换数据的方式。
只有在一段数据传送结束时,这两种方式才发出中断
信号要求
CPU
做善后处理,从而大大减少了
CPU

工作负担。
DMA
方式与通道控制方式的区别是,
DMA
方式要求
CPU
执行设备驱动程序启动设备,给
出存放数据的内存始址以及操作方式和传送字节长度

;
而通道控制方式则是在
CPU
发出
I/O
启动命令之
后,由通道指令来完成这些工作。
中断及其处理是设备管理中的一个重要部分。本
章在介绍中断基本概念的同时,对陷阱和软中断也做
了相应的介绍和比较。另外,还介绍和描述了中断处
理的基本过程。
85
缓冲是为了匹配设备和
CPU
的处理速度,以及为了
进一步减少中断次数和解决
DMA
方式或通道方式时的瓶
颈问题引入的。
缓冲有硬缓冲和软缓冲之分

本章还介
绍了对缓冲池的管理和操作。
由于缓冲区是临界资源,
所以对缓冲区或缓冲队列的操作必须互斥。
然后,介绍了设备分配原则和算法。
设备分配应保
证设备有高的利用率和避免产生死锁。
进程只有在得到
了设备、
I/O
控制器和通道
(
通道控制方式时
)
之后,才能
进行
I/O
操作
。另外,
用户进程给出的
I/O
请求中包含逻
辑设备号,设备管理程序必须将其变换成为实际的物理
设备。
I/O
请求命令中的其他参数将被用来编制通道指令
程序或由设备开关表选择设备驱动程序。
I/O
控制过程是对整个
I/O
操作的控制,包括对用户
进程
I/O
请求命令的处理、进行设备分配、缓冲区分配、
启动通道指令程序或驱动程序进行真正
I/O
操作以及分析
中断原因和响应中断等。

分享到:
评论

相关推荐

    【大厂面试专栏】一份Java程序员需要的技术指南,这里有面试题、系统架构

    【大厂面试专栏】一份Java程序员需要的技术指南,这里有面试题、系统架构、职场锦囊、主流中间件等,让你成为更牛的自己!_technology-talk

    flashocc-QAT-PTQ.zip

    flashocc-QAT-PTQ.zip

    大连理工大学城市学院在四川2020-2024各专业最低录取分数及位次表.pdf

    那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据

    川北医学院在四川2020-2024各专业最低录取分数及位次表.pdf

    那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据

    黑河学院在四川2020-2024各专业最低录取分数及位次表.pdf

    那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据

    西安邮电大学在四川2020-2024各专业最低录取分数及位次表.pdf

    那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据

    【光学】基于matlab两列单色平面波+合成【含Matlab源码 9007期】.zip

    CSDN海神之光上传的全部代码均可运行,亲测可用,尽我所能,为你服务; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,可私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、物理应用 仿真:导航、地震、电磁、电路、电能、机械、工业控制、水位控制、直流电机、平面电磁波、管道瞬变流、刚度计算 光学:光栅、杨氏双缝、单缝、多缝、圆孔、矩孔衍射、夫琅禾费、干涉、拉盖尔高斯、光束、光波、涡旋 定位问题:chan、taylor、RSSI、music、卡尔曼滤波UWB 气动学:弹道、气体扩散、龙格库弹道 运动学:倒立摆、泊车 天体学:卫星轨道、姿态 船舶:控制、运动 电磁学:电场分布、电偶极子、永磁同步、变压器

    文件比较工具、文件夹比较工具、linux、ubuntu、linx麒麟等免费使用多日

    文件比较工具、文件夹比较工具、linux、ubuntu、linx麒麟等免费使用多日

    Spire.XLS是一个基于.NET的组件,使用它我们可以创建Excel文件

    Spire.XLS是一个基于.NET的组件,使用它我们可以创建Excel文件,编辑已有的Excel并且可以转换Excel文件.zip

    【Unity完整游戏模板】Downhill Ride 轻松开发极限运动或竞速类的下坡滑行游戏

    文件名:Downhill Ride - Game Template 2020 LTS v1.2.3.unitypackage Downhill Ride - Game Template (2020 LTS) 是一个为 Unity 2020 LTS 版本开发的完整游戏模板,主要适用于开发极限运动或竞速类的下坡滑行游戏。这个模板专为快速原型设计和项目开发而打造,提供了关键功能和资源,帮助开发者轻松实现类似下坡竞速的游戏项目。 主要特点: 完整的游戏框架: 该模板包含基础的游戏逻辑,允许玩家通过控制角色在下坡道上滑行或骑行,避开障碍物并尽可能快速完成赛道。 物理与控制系统: 内置的物理引擎和角色控制器已经经过优化,可以实现平滑的下坡滑行体验,提供真实感十足的物理效果。 多种关卡支持: 模板支持多个关卡设计,开发者可以根据需要扩展或自定义不同难度的关卡。 UI 和交互设计: 包含基本的用户界面(UI)设计,带有主菜单、关卡选择、计分系统等功能,用户可以轻松扩展或定制这些 UI 元素。 优化的性能: 模板专为移动平台和桌面平台优化,确保良好的性能表现......

    Java课程设计之销售管理系统

    (1)课程设计项目简单描述 鉴于当今超市产品种类繁多,光靠人手动的登记已经不能满足一般商家的需求。我们编辑该程序帮助商家完成产品、商家信息的管理,包括产品、客户、供应商等相关信息的添加、修改、删除等功能。 (2)需求分析(或是任务分析) 1)产品类别信息管理:对客户的基本信息进行添加、修改和删除。 2)产品信息管理:对产品的基本信息进行添加、修改和删除。 3)供应商信息管理: 对供应商的基本信息进行添加、修改和删除。 4)订单信息管理:对订单的基本信 息进行添加、修改和删除。 5)统计报表:按选择日期期间,并按产品类别分组统 计订单金额,使用表格显示统计结果

    常州大学在四川2020-2024各专业最低录取分数及位次表.pdf

    那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据

    yolo算法-工地佩戴头盔数据集-1608张图像带标签-epi-d4clr.zip

    yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值

    Android System Webview(com.google.android.webvie) 125.0.6422.82

    Android System Webview(com.google.android.webvie) 125.0.6422.82 一般情况下设备可以从google play上更新,但是google play 中没有历史版本下载,所以在自己需要之后把资源上传

    VLP超低轮廓铜箔,全球前10强生产商排名及市场份额(by QYResearch).docx

    VLP超低轮廓铜箔,全球前10强生产商排名及市场份额(by QYResearch).docx

    南宁学院在四川2020-2024各专业最低录取分数及位次表.pdf

    那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据

    PPServ是一个Web开发集成环境,可以使用Apache,PHP,Mysql创建Web应用 -PPServ.zip

    网鼎杯PPServ是一个Web开发集成环境,可以使用Apache,PHP,Mysql创建Web应用。_PPServ.zip

    沧州交通学院在四川2020-2024各专业最低录取分数及位次表.pdf

    那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据

    windows 安装包Miniconda3-py38-4.11.0-Windows-x86-64

    windows 安装包Miniconda3-py38-4.11.0-Windows-x86-64

    yolo算法-公路等级数据集-8188张图像带标签-汽车客车摩托highway-classification.zip

    yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值

Global site tag (gtag.js) - Google Analytics