操作系统复习

实践 16 多线程应用(质、斐、圆、方在四个窗口显示)
实践 17 多线程应用(四种方法在四个窗口排序)
实践 18 自定义消息实现进程间通信
实践 19 控制台重定向
实践 20 动态测试系统内存
实践 21 页置换模拟
实践 22 显示文件属性
实践 23 文件或文件夹复制
实践 24 文件操作
参考文献
1 篇 操作系统习题解析
1 章 引 论
. 单项选择题解析
1. 从用户的观点看,操作系统是
A .用户与计算机之间的接口
B .控制和管理计算机资源的软件
C .合理地组织计算机工作流程的软件
D .由若干层次的程序按一定的结构组成的有机体
【解析】 从用户观点看,操作系统是用户与计算机之间的接口,即为 A ;而从计算机管理
的观点看则为 B C 。本题答案为 A
2. 操作系统在计算机系统中位于 之间。
A CPU 和用户 B CPU 和内存
C .计算机硬件和用户 D .计算机硬件和软件
【解析】 操作系统是运行在计算机硬件上最基本的系统软件,负责对各种计算机资源的管
理,也控制和管理所有的系统软件和应用软件,可以看成是计算机硬件和用户之间的一个接
口。本题答案为 C
3. 下列选项中, 不是操作系统关心的主要问题。
A .管理计算机裸机
B .设计、提供用户程序与计算机硬件系统的界面
C .管理计算机系统资源
D .高级程序设计语言的编译程序
【解析】 操作系统管理计算机系统中的软、硬件资源,当然包括计算机裸机和计算机的系
统资源,同时也提供方便用户使用计算机的接口,当然也包括为用户程序提供与计算机硬件
系统的界面。而高级程序设计语言的编译器则是在操作系统的支撑下运行,它并不是操作系
统关心的主要问题。因此本题答案为 D
4. 操作系统的逻辑结构不包含
A .混合型结构 B .单内核结构 C .分层式结构 D .微内核结构
【解析】 操作系统的逻辑结构包含单内核结构、分层式结构和微内核结构,但不包含混合
型结构。故本题答案为 A
5. 相对于单内核结构,采用微内核结构的操作系统具有许多优点,但 并不是微内核
的优势。
A .使系统更高效 B .想添加新服务时不必修改内核
3 C .使系统更安全 D .使系统更可靠
【解析】 微内核结构的操作系统更安全可靠,想添加新的功能服务时也不必修改内核,但
每次用户程序对服务器进程的调用则首先由内核接收用户的请求(由用户态到核心态),然
后再将该请求传送至相应的服务器进程(由核心态到用户态),当服务器进程处理完该请求
后,内核还要接收来自服务器进程的应答(由用户态到核心态)并将此应答回送给请求的用
户(由核心态到用户态),即需要两次用户态到核心态和核心态到用户态的切换,故效率较
低。因此本题答案为 A
6. 操作系统的三种基本类型是
A .批处理系统、分时操作系统及网络操作系统
B .分时系统、实时操作系统及分布式操作系统
C .批处理系统、分时操作系统及实时操作系统
D .网络操作系统、批处理系统及分时操作系统
【解析】 操作系统的三种基本类型是批处理操作系统、分时操作系统和实时操作系统,其
他操作系统都是在这三个操作系统的基础上发展起来的。因此本题答案为 C
7. 现代操作系统的基本特征是 、资源的共享和操作的异步性。
A .多道程序设计 B .中断处理
C .程序的并发执行 D .实现分时与实时处理
【解析】 现代操作系统最重要的特征就是并发性,现代操作系统采用多道程序设计的目的
就是实现程序的并发执行。因此本题的答案为 C
8. 批处理操作系统首先要考虑的问题是
A .灵活性和可适应性 B .交互性和响应时间
C .周转时间和系统吞吐量 D .实时性和可靠性
【解析】 批处理操作系统首先要考虑的问题是作业的周转时间和系统的吞吐量,故本题答
案为 C
9. 不是分时操作系统的基本特征。
A .同时性 B .独立性 C .实时性 D .交互性
【解析】 分时操作系统的主要特征是独立性、同时性(多路性)、交互性和及时性,而实时
性不是分时操作系统的特点。故本题的答案为 C
10. 在设计实时操作系统时, 不是重点考虑的问题。
A .及时响应、快速处理 B .高安全性
C .高可靠性 D .提高系统资源的利用率
【解析】 实时操作系统的主要特征是及时响应和处理、安全可靠,为了保证这两点就要在
资源利用率上做出牺牲,所以提高系统资源利用率不是实时操作系统重点考虑的问题。本题
答案为 D
11. 操作系统的不确定性是指
A .程序运行结果的不确定性 B .程序运行次序的不确定性
C .程序多次运行时间的不确定性 D A C
【解析】 操作系统的不确定性是指程序运行次序的不确定性和程序多次运行时间的不确定
性,在多道程序设计环境下并发程序执行的结果也可能不确定。因此本题答案为 D
12. 多道程序设计技术是指
A .在实时系统中并发运行多个程序
B .在分布式系统中同一时刻运行多个程序
C .在一台 CPU 上同一时刻运行多个程序
D .在一台 CPU 上并发运行多个程序
4 5
【解析】 多道程序设计是指在一台处理机内同时允许多个程序装入内存,并且它们之间可
以并发执行。本题答案为 D
13. CPU 执行操作系统内核代码时,称处理机处于
A .自由态 B .用户态 C .核心态 D .就绪态
【解析】 CPU 执行用户程序时的状态为用户态, CPU 执行操作系统程序时的状态为核心态。
故本题答案为 C
14. 操作系统有效的安全机制不包括
A .身份鉴别 B .硬件保护 C .入侵检测 D .计算机病毒防治
【解析】 实现操作系统安全性的基本技术包括身份鉴别、存取控制、硬件保护、入侵检测
和数据加密等,但不包括计算机病毒防治,它属于计算机安全范畴。因此本题答案为 D
15. 中断的概念是指
A .暂停 CPU 执行 B .暂停 CPU 对当前运行程序的执行
C .停止整个系统的运行 D .使 CPU 空转
【解析】 中断的概念是暂停 CPU 对当前运行程序的执行而转去处理中断的事件。故本题答
案为 B
16. 用户程序在用户态下使用系统调用引起的中断属于
A .硬件故障中断 B .程序中断 C .访管中断 D .外部中断
【解析】 访管中断实现由用户态到核心态(内核态)的转换。本题答案为 C
17. 系统调用是
A .用户编写的一个子程序 B .高级语言中的库程序
C .操作系统中的一条命令 D .操作系统向用户程序提供的接口
【解析】 系统调用是操作系统为用户提供的程序一级接口。本题答案为 D
18. 当操作系统完成用户请求的系统调用功能后,应使 CPU 工作。
A .维持在用户态 B .从用户态转到核心态
C .维持在核心态 D .从核心态转到用户态
【解析】 用户程序执行系统调用是通过中断机构来实现的,需要由用户态切换到核心态,
当系统调用结束返回后则继续执行用户程序,即 CPU 状态也应由核心态切换到用户态。本
题答案为 D
19. 中断系统一般是由相应的 组成的。
A .硬件 B .软件 C .硬件和软件 D A C 都不是
【解析】 中断一般由硬件中断装置和软件中断处理程序组成。本题答案为 C
20. 计算机系统中判断是否有中断事件发生应是在
A .进程切换时 B .执行完一条指令后
C .执行 P 操作后 D .由用户态转入核心态时
【解析】 在计算机系统中中断可以随时发生,因此必须在每条指令执行之后就判断是否有
中断发生。本题答案为 B
21. 在中断发生后,进入中断处理的程序属于
A .用户程序 B .可能是应用程序也可能是操作系统程序
C .操作系统程序 D .既不是应用程序也不是操作系统程序
【解析】 中断处理程序只能是操作系统程序。故本题答案为 C
22. 中断处理和子程序调用都要压栈以保护现场,中断处理一定会保存而子程序调用不需
要保存其内容的是
A .程序计数器 B .程序状态字寄存器
C .数据寄存器 D .地址寄存器 6
【解析】 程序状态字( PSW )寄存器用于记录当前 CPU 的状态,控制指令的执行顺序,并
且保留和指示与运行程序有关的各种信息,其主要作用是实现程序状态的保护和恢复,中断
处理中一定要将 PSW 压栈,而子程序调用则主要保存局部参数信息等,不需要将 PSW
栈。本题答案为 B
. 判断题解析
1. 采用多道程序设计的系统中,系统中的程序道数越多则系统的效率越高。
2. 应用软件是加在裸机上的第一层软件。
3. 操作系统特征之一的“不确定性”是指程序运行结果是不确定的。
4. 多道程序设计可以缩短系统中程序的执行时间。
5. 操作系统的所有程序都必须常驻内存。
6. 分层式结构的操作系统必须建立模块之间的通信机制,所以系统效率高。
7. 微内核结构操作系统具有较高的灵活性和扩展性。
8. 操作系统内核不能使用特权指令。
9. 通常将 CPU 模式分为内核态(核心态)和用户态,这样做的目的是为了提高运行速度。
10. 从响应的角度看,分时系统与实时系统的要求相似。
11. 使计算机系统能够被方便地使用和高效地工作是操作系统的两个主要设计目标。
12. 操作系统的存储管理就是指对磁盘存储器的管理。
13. 分时操作系统允许两个以上的用户共享一个计算机系统。
14. 实时操作系统只能用于控制系统而不能用于信息管理系统。
15. CPU 处于用户态时,它可以执行所有的指令。
16. 访管指令为非特权指令,在用户态下执行时会将 CPU 转换为核心态。
17. 系统调用与程序级的子程序调用是一致的。
18. 用户程序有时也可以在核心态下运行。
19. 执行系统调用时会产生中断。
20. 系统调用返回时,由核心态变为用户态执行用户程序。
21. 中断的处理是由硬件和软件协同完成的,各中断处理程序是操作系统的重要组成部
分,所以对中断的处理是在核心态下进行的。
【解析】
1. 错误。系统的效率并不因系统中程序道数的增多而提高;相反,当系统中程序道数过
多时由于用于管理和协调这些程序的时间增加,系统的效率反而会下降。
2. 错误。操作系统是加在裸机上的第一层软件。
3. 错误。除了程序运行结果的不确定之外,还有多道程序环境下多个程序的执行顺序和
运行的时间不确定。
4. 错误。程序的执行时间是不可能缩短的,多道程序设计是在一个程序进行输入输出时
CPU 交给另一个程序运行,这样使得在同一段时间内有的程序在输入、有的程序在输出、
有程序在 CPU 上运行,从而提高了资源利用率和系统的效率,即从效果上缩短了程序的运
行时间。
5. 错误。只有操作系统的部分内核程序才需要常驻内存。
6. 错误。层次结构的操作系统必须建立模块之间的通信机制,系统花费在通信上的开销
较大,系统效率因此降低。
7. 正确。
8. 错误。操作系统内核可以使用所有指令,包括特权指令。
9. 错误。通常 CPU 状态分为内核态(核心态)和用户态,这样做的目的是为了提高操作 7
系统的安全性。
10. 错误。分时系统的响应时间以人能够接受的时间为准,而实时系统则以控制对象所要
求的时间为准,两者本质不同。
11. 正确。
12. 错误。操作系统的存储管理是指对内存的管理。
13. 正确。
14. 错误。实时操作系统既可用于控制系统,也可用于信息管理系统。
15. 错误。当 CPU 处于用户态时不能执行特权指令。
16. 正确。
17. 错误。系统调用与程序级的子程序调用是不同的,前者导致 CPU 状态的切换(由用
户态到核心态),而后者通常不会;前者的代码与调用者的程序代码是分开的、各自独立的,
而后者的代码与调用者的程序代码在同一进程地址空间。
18. 错误。用户程序只能在用户态下运行。
19. 正确。
20. 正确。
21. 正确。
. 简答题解析
1. 什么是操作系统,它有什么基本特征?
【解答】 操作系统是计算机中的一个系统软件,是一组程序模块的集合,这组程序模块用
于控制和管理计算机系统的所有硬件和软件资源,合理地组织计算机的工作流程,并为用户
使用计算机提供方便;此外,还需防止对计算机资源的非法侵占和使用,保证操作系统自身
的正常运转。
操作系统具有以下 4 个基本特征:
1 )并发性。并发性是指两个或两个以上的事件或活动在同一时间间隔内发生。也即,
宏观上在一段时间内有多道程序在同时运行,微观上这些程序是在交替执行。
2 )共享性。因程序的并发执行而使系统中的软、硬件资源不再为某个程序所独占,而
是由多个程序共同使用(共享)。
3 )虚拟性。多道程序设计技术把一台物理计算机虚拟为多台逻辑上的计算机,使得每
个用户都感觉是“独占”计算机。
4 )不确定性。多道程序系统中各程序之间存在着直接或间接的联系,并且受资源等因
素的限制,程序的推进速度受到其他程序的影响。这样,程序运行的顺序、程序完成的时间
以及程序运行的结果都是不确定的。
2. 什么是多道程序设计技术?多道程序设计技术的特点是什么?
【解答】 多道程序设计技术是指把多个程序同时存入内存并允许它们交替执行和共享系统
中的各类资源;当一道程序因某种原因(如 I/O 请求)而暂停执行时, CPU 立即转去执行另
一道程序。
多道程序设计技术的主要特点是:多道、宏观上并行、微观上串行。多道是指计算机内
存中同时存放多道相互独立的程序;宏观上并行是指同时进入系统中的多道程序都处于运行
的过程中;微观上串行是指在单 CPU 环境中,内存中的多道程序轮流占用 CPU 交替执行。
3. 操作系统是随着多道程序设计技术的出现逐步发展起来的,要保证多道程序的正常运
行,在技术上需要解决哪些基本问题?
【解答】 要保证多道程序的正常运行,在技术上需要解决如下问题:
1 )在多道程序之间应如何分配 CPU ,使得 CPU 既能满足各程序运行的需要,又能有 较高的利用率。此外,一旦将 CPU 分配给某程序后,应何时回收。
2 )如何为每道程序分配必要的内存空间,使它们各得其所但又不会因相互重叠而丢失
信息;此外,还要防止因某道程序出现异常情况而破坏其他程序。
3 )系统中可能有多种类型的 I/O 设备供多道程序共享,应如何分配这些 I/O 设备,如
何做到既方便用户对设备的使用,又能提高设备的利用率。
4 )在现代计算机系统中通常都存放着大量的程序和数据,应如何组织它们才便于用户
使用并保证数据的安全性和一致性。
5 )系统中的各种应用程序有的属于计算型、有的属于 I/O 型,有些既重要又紧迫、有
些又要求系统能及时响应,这时系统应如何组织这些程序(作业)的工作流程。
实际上,这些问题的全体就是操作系统的核心内容。
4. 如何理解操作系统的不确定性?
【解答】 在单道程序环境下,由于程序独占全机软、硬件资源且完全是在一个封闭环境中
运行,所以如果使用相同的输入,则多次运行的结果必然相同。
引入多道程序技术后,由于多道程序共享全机软、硬件资源,即各程序之间存在着直接
或间接的联系,并受资源等因素的制约;此时程序的运行就不是在一个封闭的环境下,而要
受到其他程序和系统资源的影响,这会引起程序运行的结果、程序执行的顺序和完成的时间
都不确定。此外,在多道程序环境下,外部设备的中断、输入输出的请求等出现的时间都是
不确定的。这些不确定因素给操作系统设计带来了很大的复杂性。对于程序执行结果的不确
定是绝对不允许的,这是操作系统必须解决的主要问题;而程序执行顺序及完成时间的不确
定是多道程序环境所决定的;因此,操作系统应能对程序的执行顺序进行协调和管理。至于
外部设备的中断、输入输出请求甚至程序运行故障等不确定性,操作系统应在出现的时刻及
时响应并予以解决。如果操作系统的设计考虑不周,也可能造成系统的混乱和崩溃。
5. 分时操作系统形成和发展的主要动力是什么?
【解答】 分时系统形成和发展的主要动力是为了更好地满足用户需要,表现为如下几个方
面:
1 )缩短了作业周转时间。在批处理系统中,用户将作业提交给系统后需要等一批作业
都运行完成后才能得到结果,这对那些运行时间很短的小作业用户来说是不愿接受的。分时
系统则是分时为每个终端用户服务,当一个程序运行结束时,用户立即可获得结果而无须等
到所有用户程序都运行结束。
2 )提供了人机交互能力。在批处理系统中,用户一旦把作业提交给系统就失去了对作
业的控制能力,并且为了使系统能够运行作业,用户还需编写作业说明书并在作业说明书中
给出作业运行中可能出现的各种情况的处理方法,这无疑增加了用户的难度。因此,用户迫
切需要能够做到边运行、边调试,以便可以随时针对所出现的问题采取适当的解决办法,亦
即用户希望系统提供良好的人机交互界面。
3 )独立地使用计算机。各用户都希望自己能够独立地使用计算机而不受其他用户的干
扰。
6. 批处理、分时和实时操作系统各有什么特点?
【解答】 ( 1 )批处理操作系统的主要特点是:脱机、多道和成批处理。脱机是指用户脱机
使用计算机,即用户提交作业之后直到获得结果之前几乎不再和计算机打交道;多道是指多
道程序运行,即按多道程序设计的调度原则,从一批后备作业中选取多道作业调入内存并组
织它们依次投入运行;成批处理是指操作员把用户提交的作业组织成一批,并由操作系统负
责每批作业间的自动调度。
2 )分时操作系统的主要特点是:多路性、交互性、独占性和及时性。多路性是指一台
计算机与若干台终端相连接,终端上的这些用户可以同时或基本同时使用计算机;交互性是
8 指用户使用计算机的操作方式是联机方式,即用户通过终端采用人机会话的方式直接控制程
序运行并在程序运行中与程序进行交互;独占性是指由于系统采用时间片轮转的办法使一台
计算机同时为多台终端用户服务,因此客观效果是这些用户彼此之间都感觉不到别人也在使
用这台计算机,好像只有用户自己独占计算机一样;及时性是指用户的请求能在很短时间内
获得响应。
3 )实时操作系统的主要特点是及时性和高可靠性。及时性是指系统能及时响应外部事
件的请求,并在规定的时间内完成对该事件的处理;高可靠性是指系统本身要安全可靠,因
为象生产过程的实时控制、航空订票等实时事务系统中,信息处理的延误或丢失往往会带来
严重的后果。
7. 分时系统和实时系统有什么区别?设计适用实时环境的操作系统的主要困难是什么?
【解答】 分时系统和实时系统的主要区别如下:
1 )系统的设计目标不同。分时系统的设计目标是提供一种随时可供多个用户使用的通
用性很强的系统,而实时系统则大多数都具有某种特殊用途,是一种专用系统。
2 )交互性强弱不同。分时系统的交互性强而实时系统的交互性弱。
3 )响应时间长短不同。分时系统的响应时间以人能够接受的时间为准,通常为秒级;
而实时系统的响应时间则因受控对象而异,变化范围较大。
设计适用于实时环境的操作系统其主要困难是:在实时环境规定的时间限额内对用户做
出相应的反应,如果系统不能在规定的时间限额内完成指定的任务,那么就可能导致整个实
时系统的崩溃。因此,在设计这类操作系统时,设计者必须保证所采用的调度策略及相关技
术不会使响应时间超过实时环境所规定的时间限额。
8. 什么是分布式操作系统?它与网络操作系统有何不同?试说明分布式操作系统或网络
操作系统在传统的操作系统管理模式上需要哪些改进。
【解答】 分布式操作系统与网络操作系统不同点如下:
1 )分布性。分布式系统中有一个统一的分布式操作系统,而网络系统中每个结点都可
以有自己的网络操作系统。
2 )并行性。分布式系统可以将任务动态分配到不同的处理单元上并行处理,而网络操
作系统中每个用户的任务通常在本地处理。
3 )透明性。在分布式系统中,系统结构对用户是透明的,即用户完全看不到系统是由
多台计算机构成的事实;而网络系统中,系统结构对用户是不透明的,用户确切知道系统是
由多台计算机构成的这一事实。
4 )共享性。在分布式系统中,各站点的资源可供全系统共享;而在网络系统中,一般
只有服务器上的部分资源可供全网共享。
5 )健壮性。分布式系统具有健壮性,若某站点出现故障,则该站点上处理的任务可以
自动迁移到其他站点完成;而网络系统的服务器若出现故障将导致全网瘫痪。
分布式操作系统或网络操作系统除了具有传统操作系统应有的 CPU 管理、存储器管理、
设备管理和文件管理功能外,还应提供如下功能:
1 )实现网络中各节点机之间的通信。
2 )实现网络中硬、软件资源的共享。
3 )提供多种网络服务软件。
4 )提供网络用户的应用程序接口。
对分布式系统来说,除了具有网络操作系统的功能之外,还因各节点机不存在主从或层
次关系,因而增加了控制机构的复杂性。首先,由于各节点的自治性,它们之间发生冲突的
概率要高得多,使得同步问题变得更加复杂,死锁问题也难以处理;其次,由于系统透明性
的要求,使得系统故障的检测和用户操作的检查都变得更加困难。
9 10
9. 简述操作系统内核及其功能。
【解答】 内核是一个操作系统中最核心的部分,是一组程序模块,作为安全软件来提供支
持进程并发执行的基本功能和基本操作,通常驻留在内核空间且运行于内核态,具有访问硬
件设备和所有内存空间的权限,是仅有的能够执行特权指令的程序。内核的主要功能如下:
1 )资源抽象。用软件抽象硬件资源,简化对其所执行的操作,屏蔽低层的物理细节,
如提供设备驱动程序、创建虚拟设备等。
2 )资源分配。把所抽象的各种资源分配给多个应用程序使用,并负责回收资源。
3 )资源共享。根据资源的类型和特性,提供不同的机制以确保进程获得所需资源,允
许进程共享资源并提供资源的互斥与同步机制。
10. 简述分层式结构与单内核结构的异同。
【解答】 分层式结构与单内核结构一样具有模块化的特征,分层式结构也将复杂的操作系
统按其功能分成若干个比较简单且相对独立的模块。为了使模块之间能够交互,也必须规定
模块之间的接口。因此分层式结构具有单内核结构的优点。
分层式结构与单内核结构的主要区别是:分层式结构中各个模块之间是有序的,将各个
模块按功能的调用次序安排成若干层,各层之间的模块不能像单内核结构那样通过接口毫无
规则地相互依赖、相互调用,而只能是单向依赖或单向调用,即每层中的模块只能调用较低
层模块提供的功能和服务。所以分层式结构中模块之间的组织结构和依赖关系更加清晰,这
不仅增加了系统的可读性和可适应性,同时还可以使每一层建立在可靠的基础上,从而提高
了系统的可靠性。
11. 简述微内核操作系统的主要特点。
【解答】 微内核体系结构的主要特点如下:
1 )内核较小,通常仅提供操作系统最基本的服务。
2 )许多操作系统服务不属于内核,而是运行在用户态,这样当这些服务更新时内核无
须改动。
3 )有一个硬件抽象层,内核能方便地移植到其他的硬件体系结构中。因为当需要移植
到新的软件或硬件环境中,只需对与硬件相关的部分稍加修改即可把微内核嵌入到新的硬件
环境中,在多数情况并不需要移植外部服务器或客户应用。
4 )灵活性和扩展性。微内核最大的优点之一就是它的灵活性和扩展性;如果要实现另
一个视图,则可以增加一个外部服务器,若想要扩展功能则可增加或扩展内部服务器。
12. 处理机为什么要区分核心态和用户态两种操作方式?在什么情况下进行两种方式的
转换?
【解答】 区分核心态和用户态两种操作方式的目的是为了保护操作系统程序。当 CPU 处于
核心态时,可以通过修改程序状态字 PSW 转换到用户态运行;当 CPU 处于用户态时,如果
需要切换到核心态,则一般是通过访管指令或者系统调用来实现,访管指令或系统调用是一
条具有中断性质的特殊机器指令。也即,用户态到核心态的转换发生在中断产生时,而核心
态到用户态的转换则发生在中断返回到用户程序时。
13. 在用户与操作系统之间存在哪几种类型的接口?它们的主要功能是什么?
【解答】 操作系统为用户提供了两类接口:一类是操作命令接口或图形接口,另一类是系
统调用接口。操作命令接口或图形接口是用户来组织和控制作业的执行或管理计算机系统
的;系统调用接口是系统提供给编程人员的接口,编程人员通过系统调用来请求操作系统提
供服务,如申请和释放外部设备等共享资源、控制程序的执行速度等,所以有人也称它为编
程接口。
14. 简述中断处理过程。
【解答】 当中断发生时一旦 CPU 响应中断,系统就开始进行中断处理。中断处理过程如下: 1 )保护被中断进程的现场信息。为了在中断处理结束后能使进程正确地返回到中断点,
系统必须保存当前 CPU 的程序状态字 PSW 和程序计数器 PC 等内容。
2 )分析中断原因,转去执行相应的中断处理程序。在多个中断请求同时发生时,处理
优先级最高的中断源发出的中断请求。
3 )恢复被中断进程的现场信息, CPU 继续执行原来被中断的进程。
15. 叙述系统调用的概念和操作系统提供系统调用的原因。
【解答】 系统调用也称程序接口,是操作系统提供给用户的程序级接口。用户程序可以利
用系统调用所提供的一组系统调用命令去调用操作系统内核中的一个(或一组)过程(函数)
来完成自己所需要的功能。
系统调用可以看做是操作系统内核和用户程序之间进行交互的接口,操作系统向用户程
序提供系统调用的原因是为了对系统进行保护。当用户程序需要系统服务 —— 需要调用系统
内核中的某些程序时,只能从规定的位置进入内核,这样才能保证系统的安全。
16. 简述系统调用的实现过程。
【解答】 系统调用的一般处理过程如下:
1 )系统产生软中断,由硬件完成现场保护,并通过中断向量转向系统调用总控程序,
同时 CPU 状态由用户态切换为核心态。
2 )系统调用总控程序根据系统调用功能号在地址入口表查找对应的系统调用子程序,
有时还需要进行安全控制检查。
3 )执行系统调用子程序并得到结果。
4 )系统调用处理过程执行完毕后,返回成功时的执行结果或者不成功信息给调用者,
恢复中断进程或新调度进程的 CPU 现场信息,返回到被中断进程或新调度进程运行。
2 章 处理器管理
. 单项选择题解析
1. 以下对进程的描述中,错误的是
A .进程是动态的概念 B .进程执行需要 CPU
C .进程是有生命期的 D .进程是指令的集合
【解析】 进程是程序的一次执行过程,因而是动态的;既然是一次执行,就需要使用 CPU
且表明进程有生命期,即具有“创建 运行 消亡”这样的一个过程。而程序是指令的集合,
是一个静态的概念,因此本题答案为 D
2. 以下关于进程的描述中,正确的是
A .进程获得 CPU 运行是通过调度得到的
B .优先级是进程调度的重要依据,一旦确定就不能改变
C .在单 CPU 系统中,任何时刻都有一个进程处于运行状态
D .进程申请 CPU 得不到满足时,其状态变为阻塞
【解析】 进程调度程序的功能就是为进程分配 CPU ,因此选项 A 正确。当进程调度采用动
态优先级时,进程的优先级是可以改变的,故选项 B 错误。有时计算机系统中没有任何进
程处于就绪状态,也就无法调度一个就绪进程投入运行,即 CPU 处于空闲状态,因此选项
C 错误。进程在就绪状态时其所需资源除了 CPU 之外均已获得,因此申请 CPU 得不到满足
时仍为就绪状态,只有申请除 CPU 之外的其他资源未得到满足时才变为阻塞状态,故选项
D 错误。综合选项 A D 得本题答案为 A
3. 一个进程是
A .由 CPU 执行的一个程序 B .一个独立的程序+数据集
11 12
C PCB 结构、程序和数据的组合 D .一个独立的程序
【解析】 进程的实体由程序段和数据段再加上进程控制块 PCB 组成,故本题答案为 C
4. 在单 CPU 系统中实现并发技术后,
A .各进程在某一个时刻并发运行, CPU I/O 设备间并行工作
B .各进程在一个时间段内并发运行, CPU I/O 设备间串行工作
C .各进程在一个时间段内并发运行, CPU I/O 设备间并行工作
D .各进程在某一个时刻并行运行, CPU I/O 设备间串行工作
【解析】 各进程之间之所以能够在一个时间段内并发执行,正是利用了 CPU I/O 设备之
间并行工作的特点。本题答案为 C
5. 在多道程序环境下,操作系统分配资源以 为基本单位。
A .程序 B .指令 C .进程 D .作业
【解析】 进程是资源分配的基本单位。本题答案为 C
6. 当一个进程处于正等着 状态时,称为阻塞状态。
A .输入一批数据 B .进程调度
C .分给它一个时间片 D .进入内存
【解析】 当一个进程等待输入一批数据时,由于无法继续执行,故放弃 CPU 而变为阻塞状
态;一个进程正等着进程调度则必然为就绪状态,因为只有在就绪队列中的进程才能参与进
程调度,一个在就绪队列中的进程才能等待进程调度程序分配给它一个时间片(为其分配
CPU )而投入运行,故其状态必然为就绪状态;一个进程正等着进入内存实际上是进程的创
建状态,即系统正在为该进程创建一个 PCB ,这时该进程才真正存在。综合选项 A D ,本
题答案为 A
7. 以下进程状态转变中, 转变是不可能发生的。
A .运行 就绪 B .运行 阻塞 C .阻塞 运行 D .阻塞 就绪
【解析】 当进程调度程序为某就绪态进程分配了 CPU ,则该进程就由就绪态变为运行态;
正在执行的进程因发生某等待事件而无法执行时,就由运行态变为阻塞态;当处于阻塞态进
程所等待的事件已经完成时,该进程由阻塞态变为就绪态;正在运行的进程因时间片用完或
在抢占式调度中有更高优先级的就绪进程抢占 CPU 时,就由运行态变为就绪态。一个进程
不可能由阻塞态直到转变为运行态,其中必须经过就绪态并由进程调度程序选中后方可变为
运行态。本题答案为 C
8. 时,进程从运行状态转变为就绪状态。
A .进程被调度程序选中 B .时间片到
C .等待某一事件 D .等待的事件结束
【解析】 正在执行的进程因时间片用完而放弃 CPU ,此时进程除了 CPU 之外而其他所需
资源都满足,即符合就绪状态的特征,故由运行态转为就绪态。本题答案为 B
9. 一个进程的某个基本状态可以从其他两种基本状态转变过来,这个基本状态一定
A .运行状态 B .阻塞状态 C .就绪状态 D .完成状态
【解析】一个进程因时间片到或 CPU 被高优先级就绪进程所抢占而由运行状态变为就绪状
态,也可以因等待的事件已完成而由阻塞状态变为就绪状态。本题答案为 C
10. 进程状态由就绪态转换为运行态是由 引起的。
A .中断事件 B .进程状态转换 C .进程调度 D .为程序创建进程
【解析】 一就绪进程被进程调度程序选中而投入运行,即由就绪状态变为运行状态。本题
答案为 C
11. 一个进程被唤醒意味着 A .该进程一定重新占用 CPU B .它的优先级变为最大
C .其 PCB 移至就绪队列的队首 D .进程变为就绪状态
【解析】 唤醒原语的功能是将某一阻塞进程唤醒,即将其由阻塞队列中移出而插入到就绪
队列中,但并不一定将其 PCB 移至就绪队列的队首;此时被唤醒的进程其状态由阻塞态变
为就绪态。本题答案为 D
12. 下列选项中,降低进程优先级的合理时机是
A .进程的时间片用完 B .进程刚完成 I/O 而进入就绪队列
C .进程长期处于就绪队列中 D .进程从就绪状态转为运行状态
【解析】 在进程的多级反馈队列调度算法中,当运行进程的时间片用完后,就降低该进程
的优先级并将其放入到降低优先级后的就绪队列中。因此,时间片用完是降低进程优先级的
合理时机。本题答案为 A
13. 进程自身决定
A .从运行状态到阻塞状态 B .从运行状态到就绪状态
C .从就绪状态到运行状态 D .从阻塞状态到就绪状态
【解析】 只有从运行状态到阻塞状态的转换是由运行进程自身决定的,即运行进程在执行
过程因发生某等待事件而无法继续运行时主动放弃 CPU 而变为阻塞状态。运行进程因时间
片到(时钟中断)而不得不放弃 CPU 。由运行态变为就绪态,这属于按“规则”办事而并
不是运行进程自身的意愿。某进程由就绪态变为运行态是由进程调度程序决定的,即该进程
状态的改变不是自身完成的,而是“被动”完成的。某阻塞进程由阻塞态变为就绪态是由当
前运行进程帮助其完成的。本题答案为 A
14. 以下可能导致一个进程从运行状态变为就绪状态的事件是
A .一次 I/O 操作的结束 B .运行进程正在计算
C .运行进程结束 D .出现更高优先级进程进入就绪队列
【解析】 在抢占式进程调度下,当有更高优先级进程进入就绪队列时就一定会抢占当前运
行进程所占用的 CPU ,这将导致被抢占 CPU 的进程由运行态变为就绪态。本题答案为 D
15. 一次 I/O 操作的结束有可能导致
A .一个进程由阻塞变为就绪 B .几个进程由阻塞变为就绪
C .一个进程由阻塞变为运行 D .几个进程由阻塞变为运行
【解析】 一次 I/O 操作结束后,该 I/O 资源将分配给该资源请求(阻塞)队列上的队首进
程(如果有的话)。因此,本题答案为 A
16. 必会引起进程的切换。
A .一个进程创建后进入就绪队列 B .一个进程从运行态变为就绪态
C .一个进程从阻塞态变为就绪态 D A C 都不对
【解析】 进程调度的原则是在任何时候都不能使 CPU 空闲下来。当一个进程由运行态变为
就绪态或阻塞态时, CPU 就处于空闲状态,此时进程调度程序必须立即调度另一个就绪进
程将 CPU 分配给它使其投入运行,这就是进程的切换。本题答案为 B
17. 对进程的管理和控制使用
A .指令 B .原语 C .信号量 D .信箱
【解析】 对进程控制和管理的功能是通过执行各种原语来实现的。本题答案为 B
18. 进程调度主要负责
A .选一个作业进入内存 B .选一个进程占用 CPU
C .建立一个新进程 D .撤销一个进程
【解析】 进程调度也称为 CPU 调度,它是指从就绪队列中选中一个进程为其分配 CPU
入运行。本题答案为 B
13 19. 进程被创建后即进入 排队。
A .就绪队列 B .阻塞队列 C .运行队列 D A C 都不对
【解析】 进程创建后即进入就绪队列排队,等待被进程调度程序选中投入运行。本题答案
A
20. 下面叙述中, 不是创建进程所必须的。
A .由调度程序为进程分配 CPU B .建立一个 PCB
C .为进程分配内存 D .将 PCB 链入就绪队列
【解析】 创建一个进程要为其建立一个 PCB 并分配必要的内存,然后将其插入到就绪队列
中。刚创建的进程处于就绪状态,只有进程调度程序调度到它时才为其分配 CPU ,即创建
时并不为其分配 CPU 。本题答案为 A
21. 以下关于父进程和子进程的叙述中,正确的是
A .父进程创建了子进程,因此父进程运行完了子进程才能运行
B .父进程和子进程可以并发执行
C .撤销子进程时应同时撤销父进程
D .撤销父进程时应同时撤销子进程
【解析】 父子进程可以同时并发执行。撤消子进程时无需撤消父进程;撤消父进程时则要
依据子进程是否执行完来决定是否撤消子进程。本题答案为 B
22. 操作系统中的三级调度是指
A CPU 调度、资源调度和网络调度 B CPU 调度、设备调度和存储器调度
C .作业调度、进程调度和资源调度 D .作业调度、进程调度和中级调度
【解析】 操作系统的三级调度是指高级调度、中级调度和低级调度。高级调度是作业调度,
低级调度是进程调度,中级调度是交换调度,即将进程中的程序和数据在内、外存之间进行
交换。本题答案为 D
23. 当一进程运行时,系统可基于某种原则强行将其撤下并把 CPU 分配给其他进程。这
种调度方式是
A .非抢占方式 B .抢占方式 C .中断方式 D .查找方式
【解析】 在抢占(剥夺)式调度中,系统总是把 CPU 分配给优先级最高的就绪进程使之投
入运行。如果在进程运行期间又有另一个优先级更高的就绪进程出现,则进程调度程序立即
中断当前运行进程的执行,而将 CPU 分配给这个更高优先级的就绪进程投入运行。本题答
案为 B
24. 在单 CPU 的多进程系统中,进程切换时什么时候占用 CPU 以及占用多长时间取决
A .进程相应程序段的长度 B .进程总共需要运行时间的多少
C .进程自身和进程调度策略 D .进程完成什么功能
【解析】 进程切换的时刻和占用多长 CPU 时间取决于进程自身以及进程调度的策略。本题
答案为 C
25. 现有 3 个同时到达的作业 J1 J2 J3 ,它们的执行时间分别为 T1 T2 T3 ,且
T1<T2<T3 。系统按单道方式运行且采用短作业优先算法,则平均周转时间是
A T 1+ T2+T3 B (T1+T2+T3)/3
C (3T1+2T2+T3)/3 D (T1+2T2+3T3)/3
【解析】 系统采用短作业优先算法调度时,执行顺序为 J1 J2 J3 J1 等待时间为 0 ,执
行时间为 T1 J2 等待时间为 T1 ,执行时间为 T2 J3 等待时间为 T1+T2 ,执行时间为 T3
则平均周转时间 T= (T1+T1+T2+T1+T2+T3 )= (3T1+2T2+T3)/3 。本题答案为 C
26. 一个作业 8:00 到达系统,估计运行时间为 1 小时。若从 10:00 开始执行该作业,其响
14 15
应比是
A 2 B 1 C 3 D 0.5
【解析】 响应比 3
1
1   1 2
作业运行时间
Rp 作业等待时间 。本题答案为 C
27. 3 个作业 J1 J2 J3 ,其运行时间分别是 2 5 3 小时,假定它们同时到达并在
同一台 CPU 上以单道方式运行,则平均周转时间最小的执行序列是
A J1 J2 J3 B J3 J2 J1 C J2 J1 J3 D J1 J3 J2
【解析】 短作业优先平均周转时间最小,高响应比优先次之,而先来先服务则最大。故按
短作业优先的执行顺序是 J1 J3 J2 。本题答案为 D
28. 在进程调度算法中,对短进程不利的是
A .短进程优先调度算法 B .先来先服务算法
C .高响应比优先算法 D .多级反馈队列调度算法
【解析】 先来先服务算法不考虑进程的运行时间,只考虑进程到达的先后顺序,故对短进
程不利。本题答案为 B
29. 对于 CPU 调度中的高响应比优先算法,通常影响响应比的主要因素是
A .程序长度 B .静态优先数 C .运行时间 D .等待时间
【解析】 在高响应比优先调度算法中,响应比
作业运行时间
Rp 1 作业等待时间 ,在作业运行时间
已经确定的情况下,影响响应比的主要因素是作业的等待时间。本题答案为 D
30. 下列选项中,满足短进程优先且不会发生饥饿现象的调度算法是
A .先来先服务 B .响应比高者优先
C .时间片轮转 D .非抢占式短进程优先
【解析】 高响应比优先调度算法既考虑了进程的运行时间,又考虑了进程的等待时间;也
即既满足短进程优先又不致于使进程长期等待而发生饥饿现象。本题答案为 B
31. 在引入线程的操作系统中,资源分配的基本单位是 CPU 分配的基本单位
A .程序 B .作业 C .进程 D .线程
【解析】 在仅有进程没有线程的操作系统中,调度(分配 CPU )和资源分配的单位都是进
程。而在引入了线程的操作系统中,资源分配的单位是进程,调度(分配 CPU )的单位是
线程。本题答案为: C D
32. 下面关于线程的叙述中,正确的是
A .线程是比进程更小的能够独立运行的基本单位
B .引入线程可以提高程序并发执行的程度,可以进一步提高系统的效率。
C .线程的引入增加了程序执行的时空开销。
D .一个进程一定包含多个线程
【解析】 进程作为资源的拥有者在创建、切换及撤消过程中,都要耗费系统很大的时空开
销。引入线程的目的是为了使多个程序能够更好地并发执行,同时又尽量减少系统的开销。
本题答案为 B
33. 下面关于线程的叙述中,正确的是
A .内核态线程的切换都需要内核的支持
B .线程是资源的分配单位而进程是调度和分配的单位
C .不管系统中是否有线程,线程都是拥有资源的独立单位
D .在引入线程的系统中,进程仍然是资源分配和调度分派的基本单位
【解析】 内核态线程的切换(调度)必须由内核程序完成,即需要内核的支持。进程是资
源分配的基本单位,而线程是调度的基本单位。本题答案为 A . 判断题解析
1. 不同的进程必然对应不同的程序。
2. 并发是并行的不同表述,其原理相同。
3. 程序在运行时需要很多系统资源,如内存、文件、设备等,因此操作系统以程序为单
位分配系统资源。
4. 进程在运行中可以自行修改自己的进程控制权。
5. 程序的并发执行是指同一时刻有两个以上的程序,它们的指令在同一 CPU 上执行。
6. 进程控制块( PCB )是用户进程的私有数据结构,每个进程仅有一个 PCB
7. 当一个进程从阻塞态变为就绪态时,一定有一个进程从就绪态变为运行态。
8. 进程状态的转换是由操作系统完成的,对用户是透明的。
9. 进程从运行态变为阻塞态是由于时间片中断发生。
10. 当条件满足时,进程可以由阻塞态直接转换为运行态。
11. 当条件满足时,进程可以由就绪态转换为阻塞态。
12. 进程可以自身决定从运行态转换为阻塞态。
13. 在抢占式进程调度下,现运行进程的优先级不低于系统中所有进程的优先级。
14. 优先级是进程调度的重要依据,一旦确定就不能改变。
15. 先来先服务调度算法对短(作业)进程有利。
16. 在任何情况下采用短作业优先调度算法都能够使作业的平均周转时间最小。
17. 时间片的大小对轮转法的性能有很大影响,时间片太短会导致系统开销增加。
18. 在分时系统中,进程调度都采用优先级调度算法为主,短进程优先调度算法为辅。
19. 在单 CPU 上的进程就绪队列和阻塞队列都只能有一个。
20. 某进程被唤醒后立即投入运行,因此系统采用的一定是抢占式进程调度。
【解析】
1. 错误。进程是程序的一次执行,不同的进程可以包含同一个程序,同一个程序在执行
中也可以产生多个进程。
2. 错误。并发是指多道程序的执行在一个时间段中是重叠的,一个程序的执行尚未结束,
另一个程序的执行已经开始。但对单 CPU 而言,每一时刻只能有一个程序在运行(与此同
时当然可以有其他程序有的正在输入、有的正在输出),即占有 CPU 的只有一个程序,这就
是并发“在宏观上并行执行,在微观上交替执行”的含义。而并行则是真正的同时执行,因
此两者的含义是不同的。
3. 错误。在多道程序设计中,操作系统是以进程为单位来分配资源的。
4. 错误。进程控制块 PCB 作为一种重要的系统资源不允许人为改动,而是由操作系统通
过相关原语来实施管理。
5. 错误。并发执行在宏观上看是指一段时间内有两个或两个以上的程序在同时执行;而
从微观上分析,则 CPU 在任一时刻只能由一个程序使用,也即两个或两个以上的程序只能
交替使用 CPU
6. 错误。每个进程仅有一个 PCB ,但 PCB 并不是用户进程的私有数据结构。
7. 错误。仅在抢占式调度方式下,且由阻塞态变为就绪态的进程又有最高优先级(比就
绪队列中所有进程和当前运行进程的优先级都高)时,才又立即被进程调度程序选中投入运
行,即由就绪态变为运行态。
8. 正确。
9. 错误。进程从运行状态变为阻塞状态是由于发生了某个等待事件。
10. 错误。进程只能由就绪状态转变为运行状态,而不可能由阻塞状态转变为运行状态。
16 11. 错误。进程不可能由就绪状态转变为阻塞状态。
12. 正确。进程从运行态到就绪态或从就绪态到运行态都是由进程调度程序决定的,从阻
塞态到就绪态则取决于该进程所等待的外部事件是否完成。而从运行态到阻塞态是由运行进
程自身决定的,即运行进程因某个等待事件发生而将自己阻塞。
13. 错误。运行进程的优先级一定高于就绪队列中所有进程的优先级,但不一定比阻塞队
列中进程的优先级高。
14. 错误。进程调度也可采用动态优先级进行调度,如多级反馈队列调度算法采用的就是
动态优先级调度。
15. 错误。先来先服务( FCFS )调度算法有利于长作业(进程),但对短作业(进程)不
利;有利于 CPU 繁忙型作业(进程)但不利于 I/O 繁忙型作业(进程)。
16. 错误。如果短作业总是在长作业已经投入运行后到达,但作业的平均周转时间就不一
定最小。
17. 正确。时间片太短会导致进程之间频繁切换,这将增加系统开销并降低系统效率。
18. 错误。在分时系统中进程调度一般采用时间片轮转调度算法。
19. 错误。根据阻塞的不同原因可以有多个阻塞队列。
20. 错误。若当前就绪队列为空且没有运行的进程,则被唤醒进程就是就绪队列中唯一的
进程,由于此时并没有运行进程存在,所以无论系统是否采用抢占式调度方法,该进程都会
立即被调度执行。
. 简答题解析
1. 操作系统中为什么要引入进程的概念?为了实现并发进程之间的合作和协调工作以及
保证系统的安全,操作系统在进程管理方面应做哪些工作?
【解答】 在多道程序环境下,程序的并发执行代替了程序的顺序执行。并发执行破坏了程
序的封闭性和可再现性,使得程序和计算不再一一对应。此外,并发执行又导致了资源共享
与资源竞争,这造成了各并发执行的程序之间可能存在相互制约的关系。因此,并发执行的
程序已不再处于一个封闭的环境中,从而出现了许多新的特征,即独立性、并发性、动态性
以及并发程序按各自独立的、不可预知的速度向前推进的异步性。程序这个静态概念已经无
法真实地反映并发程序的执行特征,所以引入了一个能够描述并发程序执行过程且能共享资
源的基本单位 —— 进程。
操作系统在进程管理方面应做的工作如下:
1 )进程控制。系统必须设置一套控制机构来实现进程创建、进程撤消以及进程在运行
过程中的状态转换。
2 )进程同步。系统必须设置同步机制来实现对所有进程的运行进行协调,协调的方式
包括进程的互斥与进程的同步。
3 )进程通信。多道程序环境下可能需要各进程相互合作来完成一个任务,这些合作进
程之间需要通过交换信息来协调各自的工作进度,因此系统必须具有进程之间的通信(交换
信息)能力。
4 )进程调度。系统必须能够在 CPU 空闲时按一定算法从就绪队列中选择一个进程,然
后把 CPU 分配给它,并为其设置运行现场使其投入运行。
2. 试比较进程和程序的区别。
【解答】 进程与程序是两个密切相关而又不同的概念,进程与程序的区别如下:
1 )程序是指令的有序集合,是一个静态的概念,其本身没有任何运行的含义;进程是
程序在 CPU 上的一次执行过程,是一个动态的概念。
2 )程序作为软件资料可以长期保存;而进程则有生命期,它因创建而诞生、因调度而
17 执行、因得不到资源而暂停执行,因撤消而消亡。
3 )进程是一个独立运行的基本单位,也是系统进行资源分配和调度的基本单位;而程
序作为静态文本既不运行,也不分配和调度。
4 )进程与程序之间无一一对应关系。既然进程是程序的一次执行,那么一个程序的多
次执行可以产生多个进程,而不同的进程也可以包含同一个程序。
5 )程序是记录在介质(如磁盘)上指令的有序集合,而进程则由程序段、数据段和 PCB
这三部分组成。
3. 简述作业和进程的区别。
【解答】 作业是用户需要计算机完成的某项任务,是要求计算机所做工作的集合。一个作
业的完成要经过作业提交、作业后备(收容)、作业执行和作业完成 4 个阶段。进程是可以
并发执行的程序在一个数据集合上的一次执行过程,即进程是对已提交完毕的程序所执行过
程的描述,是资源分配的基本单位。进程与作业的主要区别如下:
1 )作业是用户向计算机提交任务的任务实体。在用户向计算机提交作业后,系统将该
作业放入外存中的作业后备队列中等待作业调度。而进程则是完成用户任务的执行实体,是
向系统申请分配资源的基本单位。任何一个进程,只要它被创建,总是有相应的部分存在于
内存中。
2 )一个作业可以由多个作业步组成,即同时对应多个进程,并且至少由一个进程组成;
反之则不成立。
3 )作业的概念主要用在批处理系统中,如 UNIX 这样的分时系统中就没有作业的概念。
而进程的概念则用在几乎所有的多道程序系统中,在现代操作系统中进程又被细化为线程,
也就是一个进程下有多个能够独立运行的更小单位。
4 )作业调度的主要功能是检查系统是否满足作业的资源要求以及按照一定的算法来把
外存后备作业队列中的作业调入内存,为其创建进程并插入到进程就绪队列等待进程调度。
进程调度则是根据一定的算法把 CPU 分配给就绪队列中的某个进程并让其执行。
4. 进程和线程的主要区别是什么?
【解答】 进程和线程的主要区别如下:
1 )线程是进程的一个组成部分。一个进程可以有多个线程,而且至少有一个可执行的
线程。
2 )进程是资源分配的基本单位,它拥有自己的地址(内存)空间和各种资源。线程是
CPU 调度的基本单位,它只能和其他线程共享进程的资源,而本身并不具有任何资源。
3 )进程的多个线程都在进程的地址(内存)空间内活动。这样,在以线程为单位进行
CPU 调度和切换时,由于不发生资源变化特别是内存空间的变化,因此切换时间较短。而
以进程为单位进行 CPU 调度和切换时,由于涉及到资源转移(如进程实体的内外存对换)
CPU 现场信息保护等问题,将耗费系统很大的时空开销。
4 )线程和进程一样,都有自己的状态和相应的同步机制。但由于线程没有自己单独的
程序和数据空间,因而不能像进程的程序和数据那样交换到外存去。
5 )进程的调度和控制由操作系统的内核完成,而线程的控制既可以由操作系统的内核
完成,也可以由用户程序控制完成。
5. 请给出当运行进程状态改变时操作系统进行切换的步骤。
【解答】 进程切换的主要步骤如下:
1 )保存当前运行进程的寄存器上下文。
2 )对当前运行进程的 PCB 进行更新,包括改变进程状态和其他相关信息。
3 )将当前运行进程的 PCB 移入适当的队列(时间片到移入就绪队列,因事件阻塞则移
入阻塞队列)。
18 4 )由进程调度程序调度选中另一个新的就绪进程,为其设置执行的上下文环境并对其
PCB 进行更新。
5 )修改新进程的地址空间,更新新进程的内存管理信息。
6 )恢复被选中的新进程最后一次进程上下文切换时保存的 CPU 现场信息。
6. 为什么说多级反馈队列调度算法能较好地满足各类用户的需要?
【解答】 多级反馈队列调度算法能较好地满足各种类型用户的需要。对终端型作业用户而
言,由于他们所提交的作业大多属于交互型,作业通常比较短小,系统只要能使这些作业在
优先级最高的第 1 个队列所规定的时间片内完成,就可使终端型作业用户感到满意。对于短
批处理作业用户而言,他们的作业开始时像终端型作业一样,如果仅在第 1 个队列中执行一
个时间片即可完成,就可获得与终端型作业一样的响应时间;对于稍长的作业,通常也只需
要在第 2 个队列和第 3 个队列中各执行一个时间片即可完成,其周转时间仍然较短;对于长
批处理作业用户而言,他们的长作业将依次在第 1 2 、…、直到第 n 个队列中运行,而随
着队列的逐级改变则运行的时间片成倍增加,这样也使得长批处理作业获得较多的运行时
间。因此,多级反馈队列调度算法能较好地满足各类用户的需要。
7. 分析作业、进程、线程三者之间的关系。
【解答】 一个作业被调入内存执行时可能要为其创建多个进程,进程是资源分配的基本单
位;一个进程可能对应若干个线程,线程是 CPU 调度的基本单位。
8. 处理器有哪三级调度?分别在什么情况下发生,它们各自完成什么工作?
【解答】 处理器的三级调度是指:高级调度(作业调度)、中级调度(交换调度)和低级调
度(进程调度)。
1 )高级调度是在需要从作业后备队列中调度作业进入内存运行时发生。高级调度决定
把外存中处于后备队列的哪些作业调入内存,为它们创建进程并分配必要的资源,然后将新
创建的进程插入到进程就绪队列中。
2 )中级调度是在内存紧张而不能满足进程运行需要时发生。在内存紧张时,中级调度
将暂时不能运行的进程调出至外存,将外存上具有运行条件的就绪进程调入到内存。
3 )低级调度是在 CPU 空闲需要调度一个就绪进程投入运行时发生。低级调度决定就绪
队列中的哪个进程将获得 CPU ,并将 CPU 分配给该进程使用。
. 应用题解析
1. 将一组进程分为 4 类,如图 2-1 所示,各类进程之间采用优先级调度,而各类进程的
内部采用时间片轮转调度。请简述 P1 P2 P3 P4 P5 P6 P7 P8 进程的调度过程。
2-1 优先级调度示意图
【解析】 由题意可知,各类进程之间采用优先级调度,而同类进程内部采用时间片轮转调
度。因此,系统首先对优先级为 4 的进程 P1 P2 P3 采用时间片轮转法调度运行,当 P1
P2 P3 均运行结束或没有可运行进程(即 P1 P2 P3 都处于阻塞状态;或其中部分进程已
运行结束,而其余进程都处于阻塞状态)时,则对优先级为 3 的进程 P4 P5 采用时间片轮
转法调度运行。在此期间,如果未结束的 P1 P2 P3 有一个转为就绪状态,则当前时间片
用完后又回到优先级 4 进行轮转调度。类似地,当 P1 P5 均运行结束或没有可运行进程(即
19 20
P1 P5 都处于阻塞状态;或其中部分进程已运行结束,而其余进程则处于阻塞状态)时,
则对优先级为 2 的进程 P6 P7 P8 采用时间片轮转法调度运行,一旦 P1 P5 中有一个转
为就绪状态,则立即回到更高的优先级进行轮转调度。
2. 5 个待运行作业为 A B C D E ,各自估计运行时间为 9 6 3 5 x (未定),
试问采用哪种运行次序可以使平均响应时间最短?
【解析】 由于短作业优先调度算法使得系统平均响应时间最短,所以有:
1 )当 0 <x≤ 3 时应采用的运算次序为: x, 3, 5, 6, 9
2 )当 3 x 5 时应采用的运算次序为: 3, x, 5, 6, 9
3 )当 5 x 6 时应采用的运算次序为: 3, 5, x, 6, 9
4 )当 6 x 9 时应采用的运算次序为: 3, 5, 6, x, 9
5 )当 9 x 时应采用的运算次序为: 3, 5, 6, 9, x
3. 在一单道批处理系统中,一组作业的提交时间和运行时间如表 2.1 所示。试计算以下 3
种作业调度算法的平均周转时间 T 和平均带权周转时间 W
1 )先来先服务;( 2 )短作业优先;( 3 )高响应比优先。
2.1 作业提交时刻和运行时间表
作业
提交时间
运行时间
1
8.0
1.0
2
8.5
0.5
3
9.0
0.2
4
9.1
0.1
【解析】 作业 i 的周转时间 T i =作业 i 的提交时间-作业 i 的完成时间
=作业 i 的运行时间+作业 i 的等待时间
作业 i 的带权周转时间 作业 i 的运行时间
T
W
i
i
作业的平均周转时间
n
i 1
T i
n
T 1
作业的平均带权周转时间
n
i 1
W i
n
W 1
1 )采用先来先服务( FCFS )调度算法的作业运行情况如表 2.2 所示。
2.2 先来先服务算法 F 的作业运行情况表
作业执行次序
提交时间
运行时间
等待时间
开始时间
完成时间
周转时间
带权周转时间
1
8.0
1.0
0
8.0
9.0
1.0
1.0
2
8.5
0.5
0.5
9.0
9.5
1.0
2.0
3
9.0
0.2
0.5
9.5
9.7
0.7
3.5
4
9.1
0.1
0.6
9.7
9.8
0.7
7.0
作业平均周转时间
T=(1.0+1.0+0.7+0.7)/4=0.85
作业平均带权周转时间
W=(1.0+2.0+3.5+7.0)/4=3.375
2 )采用短作业优先( SJF )调度算法的作业运行情况如表 2.3 所示。
2.3 短作业优先算法下的作业运行情况表 21
作业执行次序
提交时间
运行时间
等待时间
开始时间
完成时间
周转时间
带权周转时间
1
8.0
1.0
0
8.0
9.0
1.0
1.0
2
9.0
0.2
0
9.0
9.2
0.2
1.0
3
9.1
0.1
0.1
9.2
9.3
0.2
2.0
4
8.5
0.5
0.8
9.3
9.8
1.3
2.6
作业平均周转时间
T=(1.0+0.2+0.2+1.3)/4=0.675
作业平均带权周转时间
W=(1.0+1.0+2.0+2.6)/4=1.65
3 )采用高响应比优先( HRRF )调度算法时,在作业 1 执行完成时刻 9.0 ,作业 2 和作
3 均已到达。此时作业 2 和作业 3 的响应比分别是(响应比 R p 1
运行时间
等待时间
):
作业 2 的响应比= 1
0.5
1.5
2 ;作业 3 1
0.2
0
1 ;即选作业 2 运行。
当作业 2 运行结束(在时刻 9.5 完成)时,作业 3 和作业 4 均已到达;此时作业 3 和作业 4
的响应比分别是:
作业 3 的响应比= 1
0.2
0.5
3.5 ;作业 4 的响应比= 1
0.1
0.4
5 ;即选作业 4 运行。
最后得到采用高响应比优先调度算法的作业运行情况如表 2.4 所示。
2.4 高响应比优先算法下的作业运行情况表
作业执行次序 提交时间 运行时间 等待时间 开始时间 完成时间 周转时间
带权周转时间
1
8.0
1.0
0
8.0
9.0
1.0
1.0
2
8.5
0.5
0.5
9.0
9.5
1.0
2.0
3
9.1
0.1
0.4
9.5
9.6
0.5
5.0
4
9.0
0.2
0.6
9.6
9.8
0.8
4.0
作业平均周转时间
T=(1.0+1.0+0.5+0.8)/4=0.825
作业平均带权周转时间
W= 1.0+2.0+5.0+4.0 /4=3
4. 2.5 所示给出了作业 1 2 3 的提交时间和运行时间,试求采用先来先服务调度算法
和短作业优先调度算法下的作业平均周转时间。针对本题,是否还有缩短作业平均周转时间
的更好调度策略?
2.5 作业提交时刻和运行时间表
作业
提交时间
运行时间
1
0.0
8.0
2
0.4
4.0
3
1.0
1.0
【解析】 采用先来先服务调度算法的作业运行情况如表 2.6 所示。
2.6 先来先服务算法下的作业运行情况表
作业执行次序
提交时间
运行时间
等待时间
开始时间
完成时间
周转时间
1
0.0
8.0
0.0
0.0
8.0
8.0
2
0.4
4.0
7.6
8.0
12.0
11.6
3
1.0
1.0
11.0
12.0
13.0
12.0 22
作业平均周转时间
T=(8.0+11.6+12.0)/3=10.53
采用短作业优先调度算法的作业运行情况如表 2-7 所示。
2.7 短作业优先算法下的作业运行情况表
作业执行次序
提交时间
运行时间
等待时间
开始时间
完成时间
周转时间
1
0.0
8.0
0.0
0.0
8.0
8.0
2
1.0
1.0
7.0
8.0
9.0
8.0
3
0.4
4.0
8.6
9.0
13.0
12.6
作业平均周转时间
T=(8.0+8.0+12.6)/3=9.53
可以按下面的调度策略缩短作业的平均周转时间:若知道后面将要有两个短作业到达,
则在作业 1 到达后暂不投入运行,待 3 个作业到齐后再按短作业优先算法调度执行;也即,
作业调度顺序为:作业 3 、作业 2 、作业 1 。采用这种推迟的短作业优先算法下作业运行情
况表如表 2.8 所示。
2.8 推迟的短作业优先算法下作业运行情况表
作业执行次序
提交时间
运行时间
等待时间
开始时间
完成时间
周转时间
3
1.0
1.0
0
1.0
2.0
1.0
2
0.4
4.0
1.6
2.0
6.0
5.6
1
0.0
8.0
6.0
6.0
14.0
14.0
作业平均周转时间
T=(1.0+5.6+14.0)/3=6.87
由表 2.8 可以看出,推迟的短作业优先调度下的作业平均周转时间要优于表 2.7 的短作
业优先调度下的作业平均周转时间。
5. 某多道程序设计系统配有一台 CPU 和两台外设 I01 I02 ,现有 3 个优先级由高到低
的作业 J1 J2 J3 都已装入内存,它们使用资源的先后顺序和占用时间分别是:
1 J1 I02 30ms ), CPU 10ms ), I01 30ms ), CPU 10ms )。
2 J2 I01 20ms ), CPU 20ms ), I02 40ms )。
3 J3 CPU 30ms ), I01 20ms )。
CPU 调度采用抢占式的优先级算法,忽略其他辅助操作时间,回答下列问题:
1 )分别计算作业 J1 J2 J3 从开始到完成所用的时间。
2 3 个作业全部完成时 CPU 的利用率。
3 3 个作业全部完成时外设 I01 的利用率。
【解析】 3 个作业并发执行时工作情况如图 2-2 所示。
2-2 3 个作业并发执行的工作情况
1 )由图 2-1 可以看出, J1 从开始到运行完成需要 80ms J2 从开始到运行完成需要 90ms
J3 从开始到运行完成需要 90ms
2 CPU 在时间段 60ms 70ms 80ms 90ms 期间空闲,所以 CPU 的利用率为:
77.78%
70 20
70
CPU CPU
CPU
CPU
有效工作时间 空闲时间
有效工作时间
利用率
3 )设备 I01 在时间段 20ms 40ms 期间空闲,所以外设 I01 的利用率为:
77.78%
70 20
70
I01 I01
I01
I01
设备 有效工作时间 设备 空闲时间
设备 有效工作时间
设备 利用率
6. 有一个具有两道作业的批处理系统,作业调度采用短作业优先的调度算法,进程调度
采用以优先数为基础的抢占式调度算法,有如表 2.9 所示的作业序列(表中所列作业优先级 23
即为进程优先数,数值越小优先级越高)。
1 )列出所有作业进入内存时间及结束时间。
2 )计算作业的平均周转时间。
2.9 作业有关情况表
作业
到达时间
估计运行时间
优先数
A
10:00
40 分钟
5
B
10:20
30 分钟
3
C
10:30
50 分钟
4
D
10:50
20 分钟
6
【解析】 ( 1 )本题中每道作业的运行将经历两级调度:作业调度和进程调度。作业调度采
用短作业优先调度算法;进程调度采用基于优先数的抢占式调度算法,即高优先级的进程可
以抢占低优先级进程所占用的 CPU 。此外,只有在作业调度程序将作业装入内存后才能参
与进程调度;并且,本题中的批处理系统是两道作业系统,即内存中最多允许有两道作业。
本题作业的执行情况如图 2-3 所示。
2-3 作业执行情况示意
10:00 时,作业 A 到达并投入运行。
10:20 时,作业 B 到达且优先级高于作业 A ,故进程调度程序调度作业 B 投入运行
而作业 A 进入就绪队列。
10:30 时,作业 C 到达,但因内存中已有两道作业,故作业 C 进入作业后备队列中
等待作业调度其进入内存。
10:50 时,作业 B 运行结束且作业 D 到达,按短作业优先调度策略,作业 D 被调入
内存并进入就绪队列,而就绪队列中作业 A 的优先级高于作业 D ,故进程调度程序调度作
A 运行。
11:10 时,作业 A 运行结束,作业 C 被调入内存进入就绪队列,因作业 C 的优先级
高于作业 D ,故进程调度程序调度作业 C 运行。
12:00 时,作业 C 运行结束,进程调度程序调度作业 D 投入运行。
12:20 时,作业 D 运行结束,此时就绪队列中已无可调度执行的作业,即全部作业都
运行结束。
由上述分析可以得出所有作业进入内存的时间以及运行结束的时间如表 2.10 所示。
2.10 作业进入内存时间和结束时间
作业
进入内存时间
结束时间
A
10:00
11:10
B
10:20
10:50
C
11:10
12:00
D
10:50
12:20
2 )各作业执行的周转时间为:
作业 A 70 分钟
作业 B 30 分钟
作业 C 90 分钟
作业 D 90 分钟
作业的平均周转时间为 T (70+30+90+90)/4 70 分钟 24
3 章 进程同步与通信习题解析
. 单项选择题解析
1. 两个并发进程之间
A .一定存在互斥关系 B .一定存在同步关系
C .彼此独立相互无关 D .可能存在同步或互斥关系
【解析】 并发进程之间可能存在互斥与同步关系,也可能不存在任何关系。本题答案为 D
2. 在多进程的系统中,为了保证公共变量(共享变量)的完整性,各进程应互斥进入临
界区。所谓临界区是指
A .一个缓冲区 B .一段数据区 C .同步机制 D .一段程序
【解析】 临界区是指访问临界资源的那段程序。本题答案为 D
3. 以下关于临界资源的叙述中,正确的是
A .临界资源是共享资源 B .临界资源是任意共享资源
C .临界资源是互斥资源 D .临界资源是同时共享资源
【解析】 临界资源是指系统中一次只允许一个进程使用的资源,即该资源为互斥资源。本
题答案为 C
4. 以下 不属于临界资源
A .打印机 B .公用队列结构 C .共享变量 D .可重入程序代码
【解析】 打印机、共享变量(公用变量)和公用队列结构都是一次仅允许一个进程使用的
临界资源;可重入程序代码则允许多个进程同时使用,即不属于临界资源。本题答案为 D
5. 一个正在访问临界资源的进程由于又申请 I/O 操作而被阻塞时,
A .可以允许其他进程进入该进程的临界区
B .不允许其他进程进入临界区和占用 CPU 执行
C .可以允许其他就绪进程占用 CPU 执行
D .不允许其他进程占用 CPU 执行
【解析】 一个正在访问临界资源的进程由于申请 I/O 操作而被阻塞时,进程调度程序将调
度其他就绪进程占用 CPU 执行,但禁止其他进程进入访问该临界资源的临界区。本题答案
C
6. 在操作系统中,要对并发进程进行同步的原因是
A .进程必须在有限的时间内完成 B .进程具有动态性
C .并发进程是异步的 D .进程具有结构性
【解析】 进程的并发执行是异步的,当它们相互合作共同完成一个任务时,就需要对这些
进程进行同步以协调进程之间的工作关系。本题答案为 C
7. P V 操作是进程同步、互斥的原语,用 P V 操作管理临界区时,信号量的初值定义
A -1 B 0 C 1 D .任意值
【解析】 进程对临界资源的访问应互斥进行,即每次只允许一个进程进入临界区,故信号
量的初值为 1 。本题答案为 C
8. P V 操作实现进程同步,信号量的初值为
A 0 B 1 C -1 D .任意值
【解析】 用 P V 操作实现进程同步,信号量的初值应根据具体情况来确定。若需得到对
方的信号后才能开始工作,则对应的信号量初值应设为 0 。若期望的消息已经存在,则信号
量的初值应根据消息的个数设置相应的值。本题答案为 D
9. 设与某互斥资源相关联的信号初值为 3 ,当前值为 1 ,若 M 表示该资源的可用个数, N 表示等待该资源的进程数,则 M N 分别是
A 0 1 B 1 0 C 1 2 D 2 0
【解析】 信号量初值为 3 、当前值为 1 ,表示执行了两次 P 操作(已经申请了 2 个资源)
但没有进程在等待(即 N=0 ),且可用资源个数=信号量当前值= 1 ,即 M 1 。本题答案为
B
10. 对两个并发进程,设互斥信号量为 mutex mutex.value 初值为 1 ),若 mutex.value
前值为 -1 ,则
A .表示没有进程进入临界区
B .表示有一个进程进入临界区
C .表示有一个进程进入临界区,而另一个进程等待进入临界区
D .表示有两个进程进入临界区
【解析】 由于 mutex.value 初值为 1 ,若 mutex.value 当前值为 -1 则表示当有一个进程进入
临界区且有一个进程等待进入临界区。本题答案为 C
11. 当一进程因在互斥信号量 mutex 上执行 V(mutex) 操作而导致唤醒另一个阻塞进程时,
则执行 V(mutex) 之后 mutex.value 的值为
A .大于 0 B .小于 0 C .大于等于 0 D .小于等于 0
【解析】 只有在 mutex.value 值小于 0 时才存在阻塞进程,当执行了 V(mutex) 后,在唤醒
一个阻塞进程的同时也使 mutex.value 值加 1 ,即此时 mutex.value 的值为小于等于 0 。本题
答案为 D
12. 如果系统中有 n 个进程,则就绪队列中进程的个数最多为
A n+1 B n C n-1 D 1
【解析】 一个计算机系统中至少有一个 CPU ,通常有一个进程占用 CPU 运行,因此在没
有进程阻塞的情况下就绪队列中的进程个数最多为 n-1 。本题答案为 C
13. 如果系统中有 n 个进程,则阻塞队列中进程的个数最多为
A n+1 B n C n-1 D 1
【解析】 极端情况下,系统中所有进程都处于阻塞状态。本题答案为 B
14. 设有 n 个进程共用同一个的程序段(即共享该段),如果每次最多允许 m 个进程( m
n )同时进入临界区,则等待进入临界区的进程最多可为
A n B m C n m D -m
【解析】 由于每次最多允许 m 个进程同时进入临界区,多出 m 的进程即为等待进入临界
区的进程。本题答案为 C
15. 进程从运行状态转变为阻塞状态可能是由于
A .进程调度程序的调度 B .现运行进程的时间片用完
C .现运行进程执行了 P 操作 D .现运行进程执行了 V 操作
【解析】 进程由运行状态转变为阻塞状态是由运行进程自身提出的,因此不可能由进程调
度程序主动调度将其由运行态变为阻塞态;现运行进程时间片用完只能由运行态变为就绪
态;现运行进程执行了 V 操作只能唤醒另一个被阻塞进程而自身不能变为阻塞状态,即使
是在抢占式调度下被唤醒的进程优先级更高,当前运行进程也只能由运行态变为就绪态;只
有在现运行进程执行了 P 操作并使信号量变为负值后才阻塞自己,即由运行态变为阻塞态。
本题答案为 C
16. 实现进程同步时,每一个消息与一个信号量对应,进程 可把不同的消息发送出
去。
A .在同一信号量上调用 P 操作 B .在不同信号量上调用 P 操作
C .在同一信号量上调用 V 操作 D .在不同信号量上调用 V 操作
25 26
【解析】 在使用发送原语和接受原语来实现进程之间的通信中, P V 操作分别放在接收进
程和发送进程中。接收进程通过 P 操作来判断是否有消息到达,没有则阻塞自己;而发送
进程则通过 V 操作向其他同步进程发送消息,如果该接收进程因此消息而阻塞则唤醒它。
本题答案为 C
17. 9 个生产者、 6 个消费者共享 8 个单元缓冲区的生产者 消费者问题中,互斥使用
缓冲区的信号量其初始值为
A 1 B 6 C 8 D 9
【解析】 互斥使用即每次只允许一个进程使用,故信号量初值为 1 。本题答案为 A
18. 下述哪个选项不是管程的组成部分
A .局部于管程内的数据结构
B .对管程内数据结构进行操作的一组过程(函数)
C .管程外过程(函数)调用管程内数据结构的说明
D .对管程内数据结构设置的初始化语句
【解析】 管程由局限于管程的共享变量说明、对管程内数据结构进行操作的一组过程或函
数、局限于管程的数据设置初值的初始化语句组成。本题答案为 C
19. 以下关于管程的描述中,错误的是
A .管程是进程同步工具,用于解决信号量机制大量同步操作分散的问题
B .管程每次只允许一个进程进入管程
C .管程中 signal 操作的作用和信号量机制中的 V 操作相同
D .管程是被进程调用的,管程是语法单位,无创建和撤销
【解析】 首先, signal 原语只能在某个条件变量上执行。其次,在管程中执行 signal 操作时,
如果相应的阻塞队列中没有阻塞进程则本次操作为空操作,即什么也不做;而 V 操作则在
阻塞队列没有阻塞进程时也要对信号量进行加 1 操作。也即,管程中 signal 操作的作用和信
号量机制中的 V 操作不同。本题答案为 C
20. 在操作系统中,死锁出现是指
A .计算机系统发生重大故障
B .资源个数远小于进程数
C .若干进程因竞争资源而无限等待其他进程释放已占有的资源
D .进程同时申请的资源数超过资源总数
【解析】 死锁是指多个进程在并发执行过程中因争夺资源而造成的一种僵局,即其中一组
进程或所有进程都处于永远等待(阻塞)状态;若无外力作用,这组进程或所有进程都无法
继续向前推进。本题答案为 C
21. 当出现 情况下,系统可能出现死锁。
A .进程申请资源 B .一个进程进入死循环
C .多个进程竞争资源出现了循环等待 D .多个进程竞争独占型设备
【解析】 死锁与死循环是两个完全不同的概念,死循环是由于程序员的程序设计不当造成
的,而死锁是多个进程在并发执行过程中因竞争资源造成的。处于死锁的进程形成一个循环
等待链,链中的每一个进程都在等待该链中下一个进程所占用的资源。本题答案为 C
22. 为多道程序提供的可共享资源不足时可能出现死锁。但是,不适当的 也可能产
生死锁。
A .进程优先权 B .资源的顺序分配
C .进程推进顺序 D .资源分配队列优先权
【解析】 产生死锁的原因是系统资源不足以及进程推进顺序不当。本题答案为 C
23. 产生死锁的 4 个必要条件是:互斥、 、循环等待和不剥夺(不可抢占)。 27
A .请求与阻塞 B .请求与保持 C .请求与释放 D .释放与阻塞
【解析】 产生死锁的 4 个必要条件是互斥条件、请求和保持条件、不剥夺条件和循环等待
条件。本题答案为 B
24. 发生死锁的必要条件有 4 个,要防止死锁的发生可以通过破坏这 4 个必要条件之一来
实现,但破坏 条件是不太实际的。
A .互斥 B .不可抢占
C .部分分配(请求和保持) D .循环等待
【解析】 互斥条件是由临界资源的故有特性所决定的,因此破坏互斥条件显然不行。本题
答案为 A
25. 某系统中有 11 台打印机, N 个进程共享打印机资源,每个进程要求 3 台,在 N 的取
值不超过 时,系统不会发生死锁。
A 4 B 5 C 6 D 7
【解析】 当每个进程都获得了 2 台打印机且系统剩余的打印机不少于 1 台时,系统不会发
生死锁,即 11 2N 1 ,由此得到 N 5 。本题答案为 B
26. m 为同类资源数, n 为系统中并发进程数,当 n 个进程共享 m 个互斥资源时,每
个进程的最大需求是 w ,则下列情况会出现死锁的是
A m=2 n=1 w=2 B m=2 n=2 w=1
C m=4 n=3 w=2 D m=4 n=2 w=3
【解析】 当资源总数 m 4 ,并发进程数 n 2 ,每个进程的最大需求 w 3 时,可能出
现每个进程都占用 2 个资源而又申请第 3 个资源的死锁状态。本题答案为 D
. 判断题解析
1. 对临界资源应采用互斥访问方式来实现共享。
2. 进程在要求使用某一临界资源时,如果资源正被另一进程所使用则该进程必须等待;
当另一进程使用完并释放后方可使用。这种情况即所谓进程间同步。
3. 一次仅允许一个进程使用的资源叫临界资源,所以对临界资源是不能实现共享的。
4. 进程 A 与进程 B 共享变量 S1 ,需要互斥;进程 B 与进程 C 共享变量 S2 ,需要互斥,
从而进程 A 与进程 C 也必须互斥。
5. 进程间的互斥是一种特殊的同步关系。
6. P V 操作只能实现进程互斥,不能实现进程同步。
7. P V 操作是一种原语,在执行时不能打断。
8. 在信号量上除了能执行 P V 操作外,不能执行其他任何操作。
9. 仅当一个进程退出临界区以后,另一个进程才能进入相应的临界区。
10. 若信号量的初值为 1 ,则用 P V 操作可以禁止任何进程进入临界区。
11. 管程内的某个过程(函数)在条件变量 X 上执行 signal 原语相当于执行 V 操作原语。
12. 死锁是一种与时间有关的错误,因此它与进程推进的速度无关。
13. 一个给定的进程 - 资源图的全部化简序列必然导致同一个不可化简图。
14. 当进程数大于资源数时,进程竞争资源必然产生死锁。
15. 一旦出现死锁,所有进程都不能运行。
16. m 个进程的操作系统出现死锁时,死锁进程的个数为 1 k≤m
17. 银行家算法是防止死锁发生的方法之一。
【解析】
1. 正确。
2. 错误。进程以互斥的方式使用临界资源,这种情况即所谓进程间互斥。 3. 错误。临界资源本身是互斥资源,但临界资源是用于多个并发进程共享,只不过这种
共享必须以互斥方式实现。
4. 错误。进程 A 与进程 C 不存在共享变量,因此也就无需互斥。
5. 正确。进程互斥实际上是进程同步的一种特殊情况,即逐次使用互斥资源,这也是对
进程使用资源次序的一种协调。因此,可以将进程互斥和进程同步统称为进程同步。
6. 错误。 P V 操作既能实现进程互斥,又能实现进程同步。
7. 正确。
8. 正确。
9. 正确。临界区只能互斥访问。
10. 错误。若信号量初值为 1 ,用 P V 操作可以保证每次只有一个进程进入临界区。
11. 错误。虽然 signal 原语与信号量的 V 操作原语有些相似,但两者还是有区别的,即如
果阻塞队列没有阻塞进程时,则 signal 原语为空操作,而 V 操作原语还要对信号量执行加 1
操作。
12. 错误。死锁是一种与时间有关的错误,它与进程推进的速度有关。
13. 正确。
14. 错误。当进程数大于资源数时,如果资源分配得当则进程竞争资源不会产生死锁。
15. 错误。系统出现死锁是指系统内一些进程被锁而不一定是全部进程被锁,即这部分进
程因相互等待对方资源而处于死锁状态。
16. 正确。处于死锁状态的进程都在相互等待对方占用的资源,因此处于死锁状态的进程
至少有两个。如果系统的全部进程都因相互等待对方的资源而处于死锁状态,就会使整个系
统处于瘫痪状态。
17. 错误。银行家算法是避免死锁的一种方法。
. 简答题解析
1. 举例说明 P V 操作为什么要求设计成原语(即对同一信号量上的操作必须互斥)。
【解答】 如果 P 操作不设计成原语。即结构体信号量 S P(S) 操作用函数描述如下:
void P(Semaphore S)
{
S.value=S.value-1;
if(S.value<0) // 已无资源 S 可以分配给运行进程 i
{
i.status="block"; // 置运行进程 i 的状态为“阻塞”
Insert(BlockQueue,i); // 将进程 i 插入到阻塞队列 S L
Scheduler(); // 执行进程进程调度程序调度另一就绪进程运行
}
}
假定信号量 S 的初值为 1 ,当一个 P 操作执行完语句“ S.value=S.value-1; ”后, S.value
值变为 0 ;此时,这个 P 操作不会使运行进程阻塞。但是,如果第二个 P 操作在第一个 P
作执行“ if(S.value<0 )…”之前执行了语句“ S.value=S.value-1; ”,则此时 S.value 的值变为 -1
而不是 0 ,这使得第一个 P 操作在执行语句“ if(S.value<0) …”时就会使运行进程阻塞。因
此,这样的 P 操作不符合我们对 P 操作的定义(操作结果不唯一)。
同样,不设计成原语的 V(S) 操作用函数描述如下:
void V(Semaphore S)
{
28 29
S.value=S.value+1;
if(S.value<=0) // 阻塞队列中有申请资源 S 的阻塞进程
{
Remove(i); // S L 所指的阻塞队列中移出队首进程 i
i.status="ready"; // 置进程 i 的状态为“就绪”
Insert(ReadyQueue,i); // 将进程 i 插入到就绪队列中
}
}
假定信号量 S.value 的初值为 -1 ,当一个 V 操作执行完语句“ S.value=S.value+1; ”后,
S.value 值为 0 ,即此时 V 操作应唤醒一个阻塞进程。但是,如果第二个 V 操作在第一个 V
操作执行语句“ if(S.value<=0 )…”之前执行了语句“ S.value=S.value+1; ”,则此时 S 的值是
1 而不是 0 了,这时第一个 V 操作执行语句“ if(S.value<=0 )…”时就不再去唤醒一个阻塞进
程了。因此,这样的 V 操作也不符合我们对 V 操作的定义(操作结果不唯一)。
此外,在 P 操作执行过程中插入 V 操作,或者在 V 操作执行过程中插入 P 操作,都会
出现混乱。因此, P V 操作必须要用原语实现。
2. 使用 P V 原语和测试与设置指令 TS (俗称加锁法)实现互斥时有何异同?
【解答】 TS 指令和 P V 操作都可用来实现进程互斥,且实现原理都是通过对一个变量值
的判断来决定是否进入临界区。 TS 指令是专用机器指令,在执行过程中不能中断; P V
作用原语实现,其执行过程也不允许中断。 TS 指令与 P V 操作的区别如下:
1 )用 TS 指令实现进程互斥,当无法进入临界区时必须不断的循环测试,即没有采用
“让权等待”策略,从而消耗过多的 CPU 资源;而 P V 操作实现进程互斥则采用了“让
权等待”策略,当无法进入临界区时则阻塞此运行进程并调度另一个就绪进程运行。
2 )用 TS 指令实现进程互斥,未进入临界区的进程不进行排队等待;而用 P V 操作实
现进程互斥,未进入临界区的进程必须在阻塞队列中等待。
3. 设有 n 个进程共享一个程序段,对如下两种情况:
1 )如果每次只允许一个进程进入该程序段。
2 )如果每次最多允许 m 个进程( m n )同时进入该程序段。
试问所采用的信号量初值是否相同?信号量的变化范围如何?
【解答】 ( 1 )由于每次只允许一个进程进入该程序段,因此可以将该程序段看成是临界资
源,应设置初值为 1 的信号量。当没有进程进入该程序段时,信号量的值为 1 ;当有 1 个进
程进入该程序段且没有进程等待进入该程序段时,信号量的值为 0 ;当有 1 个进程进入该程
序段且有 1 个进程等待进入该程序段时,信号量的值为 -1 ;最多可能有 n-1 个进程等待进入
该程序段,所以信号量的取值范围为:1≥信号量≥ -(n-1)
2 )由于每次最多允许 m 个进程同时进入该程序段,因此可以将这个程序段看成是 m
程序段,每个进程使用一个程序段,即应设置初值为 m 的信号量。当没有进程进入该程序
段时,信号量的值为 m ;当有 1 个进程进入该程序段时,信号量的值为 m-1 ;当有 2 个进程
进入该程序段时,信号量的值为 m-2 ;当有 m 个进程进入该程序段且没有进程等待进入该
程序段时,信号量的值为 0 ;当有 m 个进程进入该程序段且有 1 个进程等待进入该程序段时,
信号量的值为 -1 ;最多可能有 n-m 个进程等待进入该程序段,所以信号量的取值范围为: m
≥信号量≥ -(n-m)
4. 在生产者 - 消费者管理中,信号量 mutex empty full 的作用是什么?为什么 P 操作的
顺序不能调换?
【解答】信号量 mutex 作为公用信号量使生产者进程和消费者进程对缓冲池实现互斥访问。
信号量 empty 作为私用信号量用来表示空缓冲区的数量,生产者进程通过信号量 empty 来申 请存放产品的空缓冲区。信号量 full 作为私用信号量用来表示装满产品的缓冲区数量,消费
者进程通过信号量 full 来申请消费满缓冲区中的产品。信号量 empty full 起着协调生产者
进程和消费者进程的同步作用。
由生产者进程(见生产者 消费者问题实现程序)可知,如果将 P(empty) P(mutex)
的顺序对调,则在无空缓冲区的情况下,生产者进程首先执行 P(mutex) 获得缓冲池的使用权,
然后再执行 P(empty) ;但此时因无空缓冲区而将该生产者进程阻塞起来,等待消费者进程消
费产品后(即产生空缓冲区)再将其唤醒。而消费者进程此时执行时却因生产者进程并未释
放缓冲池的使用权(并未执行过 V(mutex) )而无法进入缓冲池去消费满缓冲区产品,所以
也就谈不上腾出空缓冲区。这种情况造成了生产者进程在等待空缓冲区来放产品,而消费者
进程又在等待生产者进程让出缓冲池的使用权以便消费满缓冲区中的产品,从而造成了双方
均无法运行的僵局 —— 死锁。
对于消费者进程,如果将 P(full) P(mutex) 的顺序对调,则在缓冲池中无装满产品的缓
冲区情况下同样将发生死锁。因此, P 操作的顺序通常是不允许调换的,否则就可能发生死
锁。此外由本题可知,在 P 操作中,每个进程应首先对自己的私用信号量提出申请,仅当
私用信号量满足的情况下再去申请公用信号量。否则,如果先申请公用信号量后申请私用信
号量,就可能造成已占用了公用信号量资源但又无法满足私用信号量的条件,从而造成其他
进程也无法申请公用信号量的“死锁”局面。
5. 管程和进程有何区别?
【解答】 管程和进程的异同点如下:
1 )管程和进程都定义了数据结构,进程定义的是私有数据结构——进程控制块( PCB );
管程定义的是局部于管程内的公共(共享)数据结构,如条件变量。
2 )管程和进程设置的目的不同,进程是为了更好地实现系统的并发性而设置的;管程
则是为了解决进程互斥使用临界资源而设置的。
3 )进程通过调用管程中的过程或函数来对共享变量进行操作,此时管程中的过程或函
数就如通常的子程序一样被调用,即处于被动工作方式。因此称管程为被动成分,与此相对
应的进程则处于主动工作方式而被称为主动成分。
4 )由于进程是主动成分,故进程之间能够并发执行;而管理是被动成分,它只能被进
程调用执行而不与调用它的进程并发执行。
5 )进程由创建而诞生、由撤消而消亡,即进程具有生命期;而管程是操作系统的固有
成分,无需进程创建,也不能被进程撤消,而只能被进程调用。
6. 什么是死锁,产生死锁的原因是什么?
【解答】 所谓死锁是指多个进程在并发执行过程中因争夺资源而造成的一种僵局,当这种
僵局状态出现时,其中一组进程或所有进程都处于永远等待(阻塞)状态;若无外力作用,
这组进程或所有进程都无法继续向前推进,这种僵局就是死锁。
产生死锁的原因,一是系统资源不足,当多个进程需求资源的总和大于系统能够提供的
资源时,进程间就可能会因竞争不可抢占式资源而导致死锁;二是进程推进顺序不当,即按
这种顺序联合推进可以使所有进程都能正常运行到结束,而按另一种顺序联合推进将导致两
个或两个以上的进程出现既占有部分资源,又要申请其他阻塞进程所占有资源的情况,从而
导致这几个进程陷入死锁。
7. 产生死锁的必要条件是什么,解决死锁问题常采用哪几种措施?
【解答】 产生死锁的必要条件如下:
1 )互斥条件。进程对所获得的资源进行排他性使用,任一时刻一个资源仅被一个进程
占用。
2 )请求和保持条件。一个进程请求资源得不到满足而阻塞自己时并不释放已分配给它
30 的资源。
3 )不可抢占(不剥夺)条件。进程所获得的资源在未使用完毕之前不能被其他进程抢
占,而只能由占用该资源的进程自己释放。
4 )循环等待条件。若干进程(两个或两个以上)形成一个循环等待链,链中每一个进
程都在等待该链中下一个进程所占用的资源。
解决死锁问题常采用的措施有:
1 )死锁的预防。通过破坏死锁产生的 4 个必要条件的后 3 个条件来预防死锁的发生。
2 )死锁的避免。在资源动态分配过程中,用某种方法防止系统进入不安全状态,从而
避免死锁。
3 )死锁的检测及解除。通过系统的检测机构及时地检测出死锁的发生,然后采取某种
措施解除死锁。
8. E.W.Dijkstra 1965 年提出的银行家算法,其主要思想是什么?它能够用来解决实际中
的死锁问题吗?为什么?
【解答】 银行家算法是避免死锁的一种方法,其实现思想是:允许进程动态地申请资源,
系统在每次实施资源分配之前先计算资源分配的安全性,若此次资源分配安全(即资源分配
后,系统能按某种顺序为每一个进程分配所需资源,并且使每个进程都能顺利地运行至结
束),便将资源分配给进程;否则不分配资源并使该申请进程阻塞。
银行家算法具有较好的理论意义,但在实际系统中却难以实施;其原因是:难以预先获
得进程申请的最大资源数,且运行中进程的个数也是在不断变化着,所以银行家算法难以用
来解决实际中的死锁问题。
9. 一台计算机有 8 台磁带机。它们由 N 个进程竞争使用,每个进程可能需要 3 台磁带机,
请问 N 为多少时,系统没有死锁危险,并说明其原因。
【解答】 如果选择 N 2 ,因为每个进程需要 3 台磁带机,所以 2 个进程共需 6 台磁带机而
不发生死锁。接下来再考虑 N 3 时的情况,因 3 个进程竞争 8 台磁带机,则无论如何都将
满足其中的 2 个进程需求;而第 3 个进程虽然暂时阻塞,但在另两个进程运行结束并释放资
源后必然会得到所需的资源,这样 3 个进程都能够运行到结束而不出现死锁。实际上, 3
进程竞争 7 台磁带机时也不会发生死锁;这是因为至少有一个进程可以得到 3 台磁带机而运
行到结束,虽然另外 2 个进程暂时因得不到足够的资源而阻塞,但在已运行结束的进程释放
资源后必然会得到所需资源而都能运行到结束,即也不会发生死锁。
. 应用题解析
1. 两个可以并发执行的程序都分别包含输入、计算和打印 3 个程序段,即 I1 C1 P1
I2 C2 P2 ,两程序的前趋关系如图 3-1 所示,试用 P V 操作实现它们之间的同步。
3-1 两并发程序的前趋关系图
【解析】 构造两程序的制约关系如图 3-2 所示,则两程序的同步关系如下:
31 32
3-2 两并发程序的制约关系图
并发执行的程序如下:
Semaphore a,b,c,d,e,f,g;
a.value=b.value=c.value=d.value=0;
e.value=f.valud=g.value=0;
cobegin
process I1() {I1;V(a);V(c);}
process C1() {P(a);C1;V(b);V(d);}
process P1() {P(b);P1;V(e);}
process I2() {P(c);I2;V(f);}
process C2() {P(d);P(f);C3;V(g);}
process P2() {P(e);P(g);P2;}
coend
2. 有一阅览室共有 100 个座位,最多允许 100 个读者进入阅览室,读者人数多于 100
则不允许进入阅览室。请用 P V 操作写出读者进程。
【解析】读者进程相应的程序如下:
Semaphore mutex;
mutex.value=100;
cobegin
process reader_i() // i=1,2,3 ,…
{
P(mutex);
进入阅览室 ;
阅读 ;
退出阅览室 ;
V(mutex);
}
coend
3. 在一个盒子里混装了数量相等的围棋白子和黑子,现在要用自动分拣系统把白子和黑
子分开。设分拣系统有两个进程 P1 P2 ,其中 P1 捡白子、 P2 捡黑子,规定每个进程每次
只捡一子。当一进程正在捡子时不允许另一进程去捡,当一进程捡了一子时必须让另一进程
去捡,试写出这两个并发进程能够正确执行的程序。
【解析】 可以设置两个信号量 S1 S2 来协调进程 P1 P2 之间的同步。此外,由于不存
在进程 P1 和进程 P2 之间同时取子的竞争问题,因此不必设置互斥信号量,如图 3-3 所示。
3-3 两进程交替捡子示意
假定先让进程 P1 捡白子,则信号量 S1.value S2.value 的初值分别为 1 0 。两并发
进程相应的程序如下:
Semaphore S1,S2;
S1.value=1;S2.value=0;
cobegin
process P1() {
while( 白子不空 )
{
P(S1);
捡白子 ;
V(S2);
}
}
process P2()
{
while( 黑子不空 )
{
P(S2);
捡黑子 ;
V(S1);
}
}
coend
注意,如果去掉了“当一进程捡了一子时,必须让另一进程去捡”这一控制条件,则可
去掉同步信号量 S1 S2 ,但会出现两进程同时取子的竞争问题,这时应设置互斥信号量
mutex 来解决,如图 3-4 所示。
3-4 取消交替捡子限制后两进程捡子示意
4. 3 个并发进程 R M P ,它们共享同一缓冲区,进程 R 负责从输入设备读信息,
每读入一个记录后就把它放进缓冲区中,进程 M 在缓冲区中加工所读入的记录;进程 P
加工后的记录打印输出。读入的记录经加工输出后,缓冲区又可以存放下一个记录。试写出
它们能够正确执行的并发程序。
【解析】 这是一个简单的生产者 消费者问题。由于 3 个并发进程 R M P 共享一个缓
冲区,因此它们之间存在如图 3-5 所示的制约关系。
3-5 R M P 的制约关系图
R M P 的同步关系用并发程序实现如下:
Semaphore a,b,c;
a.value=b.value=0;c.value=1;
cobegin
process R()
{
while(1)
{
P(c);
从输入设备读一记录到缓冲区 ;
V(a);
33 34
}
}
process M()
{
while(1)
{
P(a);
在缓冲区中加工读入的记录 ;
V(b);
}
}
process P()
{
while(1)
{
P(b);
打印加工后的记录 ;
V(c);
}
}
coend
注意,为了保证 R 首先执行,所以信号量 c.value 的初值应设为 1 。此外,由进程制约
关系图 3-5 可以看出, R M P 不会竞争缓冲区资源,故无需设置用于互斥的公用信号量。
5. 有如图 3-6 所示的工作模型。其中有 3 个进程 P0 P1 P2 3 个缓冲区 B0 B1 B2
进程之间借助于相邻缓冲区传递信息; Pi 每次从 Bi 中取出一条消息经加工送入 B[i+1]%3
中; B0 B1 B2 分别可存放 3 2 2 个消息。初始时,仅 B0 有一个消息。用 P V 操作
写出 P0 P1 P2 的同步与互斥流程。
3-6 3 进程与 3 个缓冲区工作模型
【解析】 本题可视为 3 组生产者 消费者问题。第一组 P0 为消费者,而 P2 为生产者,对
应的缓冲区是 B0 P2 每生产一个产品就往 B0 中存放, P0 B0 中取走一个产品经加工后
B1 中存放。然后, P0 又转化为第二组的生产者,而 P1 为消费者;以此类推得到第三组
的生产者为 P1 ,而消费者为 P2 。由于每个 Pi 都要和 Bi Bi+1 i=0,1,2 ,当 i+1 等于 3
i+1 0 )两个缓冲区打交道,故 P0 P2 之间的制约关系如图 3-7 所示。 3-7 P0 P2 之间的制约关系图
由于 B0 B1 B2 3 个缓冲区每一个可存放的消息个数均大于 1 ,所以不能像第 3
题那样仅通过同步机制就可以互斥使用缓冲区。因此,对 B0 B1 B2 分别设置互斥信号
mutex0 mutex1 mutex2 ,且初值均为 1 。此外,对于个数大于 1 的缓冲区还应采用环
形队列结构来存放或取出消息,即对 B0 B1 B2 分别构造一个环形队列,相应的输入指
针为 in0 in1 in2 ,输出指针为 out0 out1 out2 empty0 empty1 empt2 分别代表
B0 B1 B2 的空缓冲区个数,而 full0 full1 full2 则分别代表 B0 B1 B2 装满消息
的缓冲区个数。已知初始状态 B0 中有一个缓冲区装满消息,由题意得到并发程序如下:
Semaphore mutex0,mutex1,mutex2;
Semaphore empty0,empty1,empty2,full0,full1,full2;
mutex0.value=mutex1.value=mutex2.value=1;
empty0.value=empty1.value=empty2.value=2;
full0.value=1;full1.value=full2.value=0;
int in0=1,in1=0,in2=0,out0=0,out1=0,out2=0;
cobegin
process P0()
{
while(1)
{
P(full0);
P(mutex0);
B0[out1] 中取出一个产品 ;
out1=(out1+1)%3;
V(mutex0);
V(empty0);
加工该产品 ;
P(empty1);
P(mutex1);
将加工好的产品送入 B1[in1]; // Pi i 0 ,故 Bi+1 B1
in1=(in1+1)%2;
V(mutex1);
V(full1);
}
}
process P1()
{
while(1)
{
P(full);
P(mutex1);
B1[out1] 中取出一个产品 ;
out1=(out1+1)%2;
V(mutex1);
V(empty1);
35 加工该产品 ;
P(empty2);
P(mutex2);
将加工好的产品送入 B2[in2]; // Pi i 1 ,故 Bi+1 B2
in2=(in2+1)%2;
V(mutex2);
V(full2);
}
}
process P2()
{
while(1)
{
P(full2);
P(mutex2);
B2[out2] 中取出一个产品 ;
out2=(out2+1)%2;
V(mutex2);
V(empty2);
加工该产品 ;
P(empty0);
P(mutex0);
将加工好的产品送入 B0[in0];
// Pi i 2 ,故 Bi+1 i+1 等于 3 i 0 )为 B0
in0=(in0+1)%3;
V(mutex0);
V(full0);
}
}
coend
6. 哲学家甲请哲学家乙、丙、丁到某处讨论问题,约定全体到齐后开始讨论。在讨论的
间隙 4 位哲学家进餐,每人进餐时都需要使用刀、叉各一把,餐桌上的布置如图 3-8 所示。
请用信号量及 P V 操作说明这 4 位哲学家的同步、互斥过程。
3-8 4 个哲学家进餐问题示意
【解析】 设甲、乙、丙、丁 4 位哲学家的编号分别为 0 1 2 3 ,则 4 位哲学家在讨论问
题期间的方式为交替进行讨论和进餐。由于刀、叉资源均为 2 ,而哲学家有 4 位,因此会产
生资源竞争。为了对哲学家进餐进行控制特做如下规定:所有哲学家先申请使用刀,只有申
36 请到刀后才能再申请使用叉,仅当拿到刀和叉的情况下方可就餐。这与哲学家问题中奇数号
哲学家先取左手的筷子、偶数哲学家先取右手的筷子的解法类同,因此不会产生死锁。由图
3-8 可知: 0 号哲学家和 3 号哲学家竞争刀 1 1 号哲学家和 2 号哲学家竞争刀 2 ,而 0 号哲
学家和 1 号哲学家竞争叉 1 2 号哲学家和 3 号哲学家竞争叉 2 。本题中应设置 4 个信号量
fork1 fork2 knife1 knife2 来分别表示资源叉 1 、叉 2 和刀 1 、刀 2 ,其信号量初值均为 1
哲学家进餐算法描述如下:
Semaphore fork1,fork2,knife1,knife2;
fork1.value=fork2.value=knife1.value=knife2.value=1;
cobegin
process P_i() //i=0,1,2,3
{
while(1)
{
讨论问题 ;
if(i==0||i==3) P(knife1)
else P(knife2);
if(i==0||i==1) P(fork1)
else P(fork2);
进餐 ;
if(i==0||i==3) V(knife1)
else V(knife2);
if(i==0||i==1) V(fork1)
else V(fork2);
}
}
coend
此题也可采用 AND 信号量机制用程序实现如下:
Semaphore fork1,fork2,knife1,knife2;
fork1.value=fork2.value=knife1.value=knife2.value=1;
cobegin
process P_i() //i=0,1,2,3
{
while(1)
{
讨论问题 ;
if(i==0) SP(knife1,fork1);
if(i==1) SP(knife2,fork1);
if(i==2) SP(knife2,fork2);
if(i==3) SP(knife1,fork2);
进餐 ;
if(i==0) SV(knife1,fork1);
if(i==1) SV(knife2,fork1);
if(i==2) SV(knife2,fork2);
if(i==3) SP(knife1,fork2);
37 }
}
coend
7. 5 位哲学家围坐在一个圆桌旁,桌上总共只有 5 支筷子在每人两边分开各放一支,哲学
家就餐的条件是:
1 )哲学家想吃饭时先提出吃饭要求。
2 )提出吃饭要求并拿到两支筷子后方可吃饭。
3 )如果筷子已被他人获得,则必须等待他人吃完饭后才能获取该筷子。
4 )任一哲学家在自己未拿到两支筷子吃饭之前,决不放下手中的筷子。
试描述一个保证不会出现两个邻座同时要求吃饭的算法。
【解析】 为了保证不会出现相邻两个哲学家同时提出吃饭请求,特设置信号量 s[0] s[4]
来互斥两两相邻的哲学家吃饭请求,且 s[i].value 初值均为 1 i=0,1,2,3, 4 )。注意,对第 i
个哲学家来说,他的两个邻座分别为 (i+1)%5 (i+4)%5 ,即对第 i 个哲学家的左、右邻座定
位如图 3-9 所示。
3-9 5 个哲学家定位示意
此时, 5 支筷子也为临界资源,即 chopstick[0] chopstick[4] 初值均为 1 。由于禁止两相
邻哲学家同时申请,因此也就不存在同时竞争筷子的问题(但可能所申请的筷子正在别的哲
学家手上),故可去掉公用信号量 mutex 。相应的哲学家进餐问题求解算法如下:
Semaphore s[5],chopstick[5];
for(int i=0;i<5;i++)
{
s[i].value=1;
chopstick[i]=1;
}
cobegin
process P_i() //i=0, 1,2,3,4
{
while(1)
{
think(); // 思考
P(s[i]); // i 个哲学家提出吃饭申请
P(s[(i+1)%5]);
// 禁止左邻哲学家吃饭申请,若左邻哲学家已提出申请则阻塞哲学家 i 进程
P(s[(i+4)%5]);
// 禁止右邻哲学家吃饭申请,若右邻哲学家已提出申请则阻塞哲学家 i 进程
P(chopstick[i]);
P(chopstick[(i+1)%5]);
V(s[i]); // 哲学家 i 的申请结束
V(s[(i+1)%5]); // 取消对左邻哲学家申请的禁止
V(s[(i+4)%5]); // 取消对右邻哲学家申请的禁止
eat(); // 进餐
V(chopstick[i]);
38 V(chopstick[(i+1)%5]);
}
}
coend
8. 桌子上有一只盘子,最多可容纳两个水果,每次只能放入或取出一个水果。爸爸专门
向盘子放苹果( apple ),妈妈专门向盘子中放桔子( orange );两个儿子专等吃盘子中的桔子,
两个女儿专等吃盘子中的苹果。请用 P V 操作来实现爸爸、妈妈、儿子和女儿之间的同步
与互斥关系。
【解析】 与教材中吃水果问题不同的是,现在盘子可以放入两个水果。因此,除了互斥信
号量 mutex 之外,还应对允许向盘中放入水果的个数进行计数,即再设置一个信号量 empty
empty.value 的初值为 2 。此外,由于盘中可以放两个水果,即当盘中有一个水果时则存
在着既可放入水果又可取出水果的情况。因此,除了对放水果进行互斥外,对取水果也应进
行互斥。对于放水果,则应先申请可放入水果的空盘位置(私用信号量实现),只有存在放
水果位置的情况下才可申请盘子的使用权(互斥访问盘子为公用信号量)并放入水果。对于
取水果,则应先判断盘中是否有自己需要的水果(私用信号量实现),只有盘中有自己所要
水果的情况下才可申请盘子的使用权。 4 个进程的并发程序如下:
Semaphore mutex,empty,apple,orange;
mutex.value=1,empty.value=2,apple.value=orange.value=0;
cobegin
process father()
{
while(1)
{
P(empty);
P(mutex);
向盘中放苹果 ;
V(mutex);
V(apple);
}
}
process mother()
{
while(1)
{
P(empty);
P(mutex);
向盘中放桔子 ;
V(mutex);
V(orange);
}
}
process daughter_i() //i=1,2
{
while(1)
39 {
P(apple);
P(mutex);
取盘中苹果 ;
V(mutex);
V(empty);
吃苹果 ;
}
}
process son_i() //i=1,2
{
while(1)
{
P(orange);
P(mutex);
取盘中桔子 ;
V(mutex);
V(empty);
吃桔子 ;
}
}
coend
9. 一船每次可渡 4 人过河,有红、黑两队人过河,要求只允许红、黑各 4 人或红 2 人与
2 人一起方可过河。使用 P V 操作实现之。
【解析】 实现程序如下:
Semaphore mutex,s;
mutex.value=1,s.value=0; //mutex 为允许入队信号量, s 为允许渡河信号量
int x=0,y=0; //x y 分别记录红队和黑队人数
cobegin
process 红队 ()
{
while(1)
{
P(mutex);
x++; // 红队增加 1
if((x==2&&y>=2)or x==4)
{ // 红队已有 2 人且黑队已有 2 人或 2 人以上,或者红队已有 4
V(s); // 满足条件可以渡河
goto L1;
}
V(mutex); // 不满足渡河条件则允许红队或黑队人员继续入队
L1: // 满足渡河条件准备渡河并暂停红队或黑队入队(未执行 V(mutex)
}
}
40 process 黑队 ()
{
while(1)
{
P(mutex);
y++;
if((y==2&&x>=2)or y==4)
{ // 黑队已有 2 人且红队已有 2 人或 2 人以上,或者黑队已有 4
V(s); // 满足条件可以渡河
goto L2;
}
V(mutex); // 不满足渡河条件则允许红队或黑队人员继续入队
L2: // 满足渡河条件准备渡河并暂停红队或黑队入队(未执行 V(mutex)
}
}
process ()
{
while(1)
{
P(S); // 是否允许渡河
if((x>=2&&x<4)or y>=2&&y<4)
{ // 当红队和黑队人数均大于或等于 2 人但未到 4 人时
x=x-2;y=y-2; // 红队和黑队人数各减去登船的 2
红、黑队各 2 人登船渡河 ;
}
if(x==4) // 红队人数已达 4
{
x=x-4; // 红队减去登船的 4
红队 4 人登船渡河;
}
if(y==4) // 黑队人数已达 4
{
y=y-4; // 黑队减去登船的 4
黑队 4 人登船渡河;
}
V(mutex); // 允许红队进程或黑队进程继续执行人员入队
}
}
coend
10. 在南开大学和天津大学之间有一条弯曲的小路,其中从 S T 一段路每次只允许一辆
自行车通过,但中间有一个小“安全岛” M (同时允许两辆自行车停留),可供两辆自行车
从两端进入小路的情况下错车使用,如图 3-10 所示。试设计一个算法使来往的自行车均可
顺利通过。
41 3-10 南开大学与天津大学之间的小路示意
【解析】 由于小路中间的安全岛仅允许两辆自行车停留,本应该作为临界资源而设置信号
量,但仔细分析可以发现:在任何时刻进入小路的自行车最多不会超过两辆(南开和天大方
向各一辆);因此,无需为安全岛 M 设置信号量。在路口 S 处,南开出发的若干自行车应进
行进入小路权的争夺,以决定谁能够进入小路 SK 段;为此,设置信号量 S S.value 的初值
1 )来控制南开路口资源的争夺。同理,设置信号量 T T.value 的初值为 1 )来控制天大
路口资源的争夺。此外,小路 SK 段仅允许一辆自行车通过,所以设置信号量 SK SK.value
初值为 1 )来进行控制;而对于 LT 段则设置信号量 LT LT.value 初值为 1 )进行控制。实
现程序如下:
Semaphore S,T,SK,LT;
S.value=T.value=SK.value=LT.value=1;
cobegin
process N_i() //i 为南开方向的自行车, i=1,2 ,…
{
P(S); // 南开方向来的自行车互斥进入路口 S
P(SK); // 同对面(天大)来的自行车互斥使用 SK 路段
通过 SK 路段 ;
进入安全岛 M;
V(SK);
// 一旦进入安全岛 M 便可释放路段 SK 以便天大来的自行车通过(如果有的话)
P(LT); // 同对面(天大)来的自行车互斥使用路段 LT
通过 LT 路段 ;
V(LT); // 已通过路段 LT ,释放路段 LT 的使用权
V(S); // 已经通过小路,允许南开方向的下一辆自行车进入路口 S
}
process T_j() //j 为天大方向的自行车, j=1,2 ,…
{
P(T); // 天大方向来的自行车互斥进入路口 T
P(LT); // 同对面(南开)来的自行车互斥使用 LT 路段
通过 LT 路段 ;
进入安全岛 M;
V(LT);
// 一旦进入安全岛 M 便可释放路段 LT 以便天大来的自行车通过(如果有的话)
P(SK); // 同对面(南开)来的自行车互斥使用路段 SK
通过 SK 路段 ;
V(SK); // 已通过路段 SK ,释放路段 SK 的使用权
42 43
V(T); // 已经通过小路,允许天大方向的下一辆自行车进入路口 T
}
coend
注意,如果在进程 N_i 进入安全岛 M 后,在释放路段 SK 的同时也释放了路口 S ,而此
时进程 T_j 也进入安全岛 M ,同样在释放路段 LT 的同时也释放了路口 T 。那么,南开、天
大方向将各自又有一辆自行车进入路段 SK 和路段 LT ,这使得停在安全岛 M 中的两辆自行
车都无法继续前进,而路段 SK 和路段 LT 上(后进入的两辆自行车)也无法进入安全岛,
从而造成死锁。因此,进程 N_i 在进入安全岛 M 后是为对面(天大)来的自行车释放路段
SK 的使用权,但决不能释放路口 S 的使用权(禁止南开方向的后续自行车进入),这样才
能保证在安全岛内天大方向的自行车能够经过路段 SK 走出路口 S 。只有在南开来的自行车
走出路口 T 时才允许南开方向的下一辆自行车进入路口 S 。进程 T_j 也一样,在进入安全岛
M 后也要为对面(南开)来的自行车释放路段 LT 的使用权,但不释放路口 T 的使用权。
11. 某寺庙有小和尚、老和尚若干。庙中有一水缸可容 10 桶水,由小和尚提水入缸供小
和尚和老和尚饮用。水取自同一井中,因水井径窄每次只能容一桶取水。水桶总数为 3 个,
每次入、取缸水仅为 1 桶且不可同时进行。试给出有关打水入缸和从缸中取水的 P V 操作。
【解析】 由题意可知,从井中取水并向缸中倒水为小和尚进程,而从缸中取水为老和尚进
程。有关互斥的资源有水井(一次仅允许一个水桶进出)、水缸(一次仅允许一个水桶倒水、
取水),分别为其设置信号量 mutex1 mutex2 来实现互斥。有关同步的问题是: 3 个水桶
无论是从井中取水还是倒水入缸或取水出缸都是一次一个,即为其设置信号量 count ,抢不
到水桶的进程只好等待。此外,设置信号量 empty 来控制入缸的水量,当水缸满时不可入水;
设置信号量 full 来控制出缸的水量,当水缸空时不可出水。实现程序如下:
Semaphore mutex1,mutex2,empty,full,count;
mutex1.value=mutex2.value=1;
empty.value=10,full.value=0,count.value=3;
cobegin
process 小和尚 _i() //i=1,2, 3…
{
while(1)
{
P(empty); // 水缸满否,满则阻塞小和尚进程打水
P(count); // 申请打水的桶
P(mutex1); // 互斥使用水井,即不允许两个或多个小和尚同时打水
从井中取水 ;
V(mutex1);
P(mutex2); // 互斥使用水缸
送水入缸 ;
V(mutex2);
V(count); // 归还水桶
V(full); // 水缸又多了一桶水
}
}
process 老和尚 _j() //j=1,2, 3…
{
while(1) 44
{
P(full); // 水缸是否有水,无水则阻塞老和尚进程 j 取水
P(count); // 申请取水的桶
P(mutex2); // 互斥使用水缸
从缸中取水 ;
V(mutex2);
V(empty); // 缸中少了一桶水,即可多放一桶水
V(count); // 归还水桶
}
}
coend
12. 现有 100 名毕业生去甲、乙两公司求职,两公司合用一间接待室,其中甲公司准备招
10 人,乙公司准备招收 15 人,招完即止。两公司各有一位人事主管在接待毕业生,每位
人事主管每次只可接待 1 人,其他毕业生在接待室外排成一队等待。试用信号量机制实现对
此过程的管理。
【解析】 由于毕业生只排成一队,故设置一队列数据结构如图 3-11 所示。在队列中不含甲、
乙都接待过的毕业生和已被录用的毕业生(均已出队),只含标识为 'A' (被甲接待过但未被
乙接待过)或标识为 'B' (被乙接待过但未被甲接待过),以及无标识(未被甲和乙接待过)
的毕业生队列。此外,设置 Sm Sn 分别为队列中甲和乙正在面试的毕业生
i
i=1,2 ,… ,100
标识,即此时刻另一方不得面试该毕业生。 K1 K2 为甲和乙所录取的毕业生计数, C1
C2 为甲和乙面试过的毕业生计数。 mutex 为访问队列的互斥信号量, SA SB 分别为访问
C1 C2 的互斥信号量。注意,如果甲录取了一名学生且该生未被乙面试过的话,则乙面
试的学生将减少 1 人。我们采取的办法是:如果甲所录取的学生没有被乙面试过则给记录乙
面试的计数器 C2 1 (相当于乙已经面试过该学生);即始终保持乙应面试的人数为 100
对甲也是如此。
3-11 毕业生面试队列示意
并发面试的程序如下:
Semaphore mutex,SA,SB;
mutex.value=SA.value=SB.value=1;
int C1=C2=K1=K2=0;
cobegin
process ()
{
L1: P(mutex);
P(SA);
C1++; // 甲面试过的学生计数加 1
V(SA);
if(C1<=100) // 甲面试过的学生计数未超过 100
{
从队列中标识为 'B' 且不为 'Sn' 或无标识的学生中选取一个学生 i;
将学生 i 标识为 'A' 'Sm';
} else goto L2; // 已无学生可面试
V(mutex);
面试 ;
P(mutex);
if( 合格 )
{
K1++; // 甲录取的学生计数加 1
if( 学生 i 的标识不含 'B') // 已被甲录取但未被乙面试过
{
P(SB);
C2++; // 使乙面试过的毕业生计数加 1
V(SB);
}
将学生 i 从队列上摘除 ;
}
else // 不合格时
if( 学生 i 的标识含 'B') // 甲、乙均面试过
将学生 i 从队列上摘除 ;
else // 乙还未面试过
取消学生 i 'Sm' 标识 ; // 取消甲正面试的标识
V(mutex);
if(K1<10&&C1<100) goto L1;
// 甲录取的学生不足 10 人且面试的学生未达 100
L2: ; // 甲面试结束
}
process ()
{
L3: P(mutex);
P(SB);
C2++; // 乙面试过的学生计数加 1
V(SB);
if(C2<=100) // 乙面试过的学生计数未超过 100
{
从队列中标识为 'A' 且不为 'Sm' 或无标识的学生中选取一个学生 j;
将学生 j 标识为 'B' 'Sn';
}
else goto L4; // 已无学生可面试
V(mutex);
面试 ;
P(mutex);
if( 合格 )
{
K2++; // 乙录取的学生计数加 1
if( 学生 j 的标识不含 'A') // 已被乙录取但未被甲面试过
45 46
{
P(SA);
C1++; // 使甲面试过的毕业生计数加 1
V(SA);
}
将学生 j 从队列上摘除 ;
}
else // 不合格时
if( 学生 j 的标识含 'A') // 甲、乙均面试过
将学生 j 从队列上摘除 ;
else // 甲还未面试过
取消学生 j 'Sn' 标识 ; // 取消乙正面试的标识
V(mutex);
if(K2<15&&C2<100) goto L3;
// 乙录取的学生不足 15 人且面试的学生未达 100
L4: ; // 乙面试结束
}
coend
注意,对于像本题这类比较有难度的 P V 操作题,通过增加信号量及变量的方法来降
低解题难度。
13. 设系统有 3 种类型资源 {A B C} 5 个进程 {P1 P2 P3 P4 P5} A 资源的数量
17 B 资源的数量为 5 C 资源的数量为 20 ,在 T0 时刻系统状态如表 3.1 所示。
3.1 T0 时刻系统状态
进程
最大资源需求量
已分配资源数量
A
B
C
A
B
C
P1
5
5
9
2
1
2
P2
5
3
6
4
0
2
P3
4
0
11
4
0
5
P4
4
2
5
2
0
4
P5
4
2
4
3
1
4
剩余资源数
A
B
C
2
3
3
系统采用银行家算法实施死锁避免策略。
1 T0 时刻是否为安全状态?若是请给出安全序列,若不是请给出不安全的理由。
2 )在 T0 时刻若进程 P2 请求资源
(
0,3, 4) ,是否能实施资源分配?为什么?
3 )在( 2 )的基础上若进程 P4 请求资源
(
2,0, 1) ,是否能实施资源分配?为什么?
4 )在( 3 )的基础上若进程 P1 请求资源
(
0,2, 0) ,是否实施资源分配?为什么?
【解析】 判断系统是否为安全状态,关键在于能否找到一个进程的安全序列,这与进程在
T0 时刻还需要的资源数量有关,即资源需求量 Nee d=最大资源需求量-已分配资源数量。
由此得到表 3.2 所示。
3.2 T0 时刻资源分配情况表
进程
Allocation
Need
Available
A
B
C
A
B
C
A
B
C
P1
2
1
2
3
4
7
2
3
3 47
P2
4
0
2
1
3
4
P3
4
0
5
0
0
6
P4
2
0
4
2
2
1
P5
3
1
4
1
1
0
1 )根据表 3.2 所示,找到一个进程其还需要的资源应能够由系统现剩余的可用资源予
以满足。因此,该进程在获得系统资源后可运行至结束,且结束后即将该进程所占用的全部
资源归还(加入)到系统的可用资源中。然后,再寻找下一个可以获得系统资源而运行至结
束的进程。如果最终可以找到一个使所有进程都能获得系统资源而运行至结束的进程运行序
列,则这个序列就称为安全序列。利用银行家算法对 T0 时刻的资源分配情况进行分析,可
以得到 T0 时刻的安全性分析如表 3.3 所示。
3.3 T0 时刻系统的安全性分析
进程
Work
Need
Allocation
Work+Allocation Finish
A
B
C
A
B
C
A
B
C
A
B
C
true
P4
2
3
3
1
1
0
3
1
4
5
4
7
true
P5
5
4
7
2
2
1
2
0
4
7
4
11
true
P3
7
4
11
0
0
6
4
0
5
11
4
16
true
P2
11
4
16
1
3
4
4
0
2
15
4
18
true
P1
15
4
18
3
4
7
2
1
2
17
5
20
true
从表 3.3 所示可以看出,在 T0 时刻存在一个安全序列( P5,P4,P3,P2,P1 ),故该状态是
安全的。
2 )在 T1 时刻因进程 P2 的请求资源
(
0, 3,4 )>剩余资源
(
2,3,3) ,所以不能分配。
3 )在( 2 )的基础上,若进程 P4 的请求资源为
(
2,0,1) ,则按银行家算法进行如下检查:
P4 请求资源
(
2,0,1 )≤ P4 资源需求量
(
2,2, 1)
P4 请求资源
(
2,0,1 )≤剩余资源
(
2,3,3)
③ 此时的资源分配情况如表 3.4 所示(已分配给 P4(2,0,1) 之后的情况)。
3.4 资源分配情况表
进程
Allocation
Need
Available
A
B
C
A
B
C
A
B
C
P1
2
1
2
3
4
7
0
3
2
P2
4
0
2
1
3
4
P3
4
0
5
0
0
6
P4
4
0
5
0
2
0
P5
3
1
4
1
1
0
④ 此时的安全性分析如表 3.5 所示
3.5 系统的安全性分析
进程
Work
Need
Allocation
Work+Allocation Finish
A
B
C
A
B
C
A
B
C
A
B
C
true
P4
0
3
2
0
2
0
4
0
5
4
3
7
true
P5
4
3
7
1
1
0
3
1
4
7
4
11
true
P3
7
4
11
0
0
6
4
0
5
11
4
16
true
P2
11
4
16
1
3
4
4
0
2
15
4
18
true
P1
15
4
18
3
4
7
2
1
2
17
5
20
true
从表 3.5 所示可以看出,此时刻存在一个安全序列
(
P4,P5,P3,P2,P1) ,即可以将 P4 申请 48
的资源分配给它。
4 )在( 3 )的基础上,若进程 P1 请求资源
(
0,2,0) ,则按银行家算法进行如下检查:
P1 请求资源
(
0, 2,0 )≤ P1 资源需求量
(
3,4,7)
P1 请求资源
(
0, 2,0 )≤剩余资源
(
0,3,2)
③ 此时的资源分配情况如表 3.6 所示(已分配给 P1
(
0,2, 0) 之后的情况)。
3.6 资源分配情况表
进程
Allocation
Need
Available
A
B
C
A
B
C
A
B
C
P1
2
3
2
3
2
7
0
1
2
P2
4
0
2
1
3
4
P3
4
0
5
0
0
6
P4
4
0
5
0
2
0
P5
3
1
4
1
1
0
此时,可用资源 Available 已不能满足任何进程的资源需求,因此不能将资源分配给 P1
14. 现有 4 个进程陷入了死锁,请用资源分配图画出全部可能的死锁情况。
【解析】 4 个进程全部可能的死锁情况如下。
1 4 个进程与 2 种资源构成的死锁如图 3-12 所示。
3-12 4 个进程与两种资源构成的死锁示意
2 4 个进程与 3 种资源构成的死锁如图 3-13 所示。
3-13 4 个进程与三种资源构成的死锁示意
3 4 个进程与 4 种资源构成的死锁如图 3-14 所示。
3-14 4 个进程与 4 种资源构成的死锁示意
4 章 存储管理
. 单项选择题解析
1. 存储管理的目的是
A .方便用户 B .提高内存利用率
C .方便用户和提高内存利用率 D .增加内存实际容量
【解析】 存储管理的目的有两个:一是方便用户,二是提高内存利用率。本题答案为 C
2. 下面关于重定位的描述中,错误的是
A .绝对地址是内存空间的地址编号
B .用户程序中使用从 0 地址开始的地址编号是逻辑地址
C .动态重定位中装入内存的程序仍保持原来的逻辑地址
D .静态重定位中装入内存的程序仍保持原来的逻辑地址
【解析】 程序中指令和数据的地址都是相对 0 这个起始地址进行计算的,按照这种方法确
定的地址称为逻辑地址或相对地址。内存中实际存储单元的地址(编号)称为物理地址或绝
对地址。静态重定位是指将程序装入内存后,一次性将程序中所有指令要访问的地址全部由 逻辑地址转换为物理地址。动态重定位的地址转换工作则在程序运行中进行,即执行到要访
问指令或数据的逻辑地址时再将其转换为物理地址。因此,本题答案为 D
3. 静态重定位的时机是
A .程序编译时 B .程序连接时 C .程序装入时 D .程序运行时
【解析】 由题 2 可知,静态重定位的时机是在程序装入时。本题答案为 C
4. 采用动态重定位方式装入程序,其地址转换工作是在 完成的。
A .程序装入时 B .程序被选中时
C .执行一条指令时 D 程序在内存中 移动时
【解析】 由题 2 可知,动态重定位地址转换的工作是在执行一条指令时。本题答案为 C
5. 为了保证一个程序在内存中改变了存放位置后仍能正确执行,则对内存空间应采用
技术。
A .静态重定位 B .动态重定位 C .动态分配 D .静态分配
【解析】 动态重定位中指令和数据的物理地址是在程序运行过程中由硬件动态形成的,即
只要将程序在内存中存放的首地址放入基地址寄存器中,就能由地址转换机构得到正确的物
理地址。因此,程序在执行过程中也可以移动程序和数据在内存中的存放位置,只要将移动
后程序存放的内存首地址放入基地址寄存器即可。本题答案为 B
6. 是指将程序不需要或暂时不需要的部分移到外存, 出内存空间以调入其他所需
的程序或 数据。
A .覆盖技术 B .交换技术 C .虚拟技术 D .物理扩充
【解析】 覆盖技术按程序自身的逻辑结构让那些不会同时执行的程序段共享同一块内存区
域,暂不运行的程序段先保存在外存上,当程序前一部分程序段执行结束时再将外存存放的
要执行程序段调入内存去覆盖已运行结束的程序段,以此来逻辑上扩充内存容量。交换技术
则是由操作系统将内存中暂时不具备运行条件的部分程序或数据移到外存,以便腾出足够的
内存空间将外存中急需运行的程序或数据调入内存投入运行。本题答案为 B
7. 以下存储管理方式中,不适合多道程序设计系统的是
A .单一连续分配 B .固定分区分配
C .可变分区分配 D .分页存储管理
【解析】 单一连续分配仅允许内存装入一道程序,因此不适合多道程序设计系统。本题答
案为 A
8. 分区分配内存管理方式的主要保护措施是
A .界地址保护 B .程序代码保护 C .数据保护 D .栈保护
【解析】 分区分配内存管理方式中主要用上、下界寄存器来保护分区,也称为界地址保护。
本题答案为 A
9. 在固定分区分配中,每个分区的大小是
A .相同 B .随程序长度变化
C .可以不同但预先固定 D .可以不同但根据程序长度固定
【解析】 在固定分区分配中每个分区的大小可以不同,但必须事先确定且运行中不允许改
变。本题答案为 C
10. 在可变分区存储管理中,采用拼接技术的目的是
A .合并空闲分区 B .合并分配区
C .增加内存容量 D .便于地址转换
【解析】 拼接是指通过将多个分散的小空闲分区移动到一起合并(靠拢)成一个大分区。
本题答案为 A
11. 在可变分区管理中,某一程序完成后系统收回其内存空间并与相邻区合并,为此修改
49 空闲区分配表,造成空闲分区数减 1 的情况是
A .无上邻空闲分区也无下邻空闲分区 B .有上邻空闲分区但无下邻空闲分区
C .有下邻空闲分区但无上邻空闲分区 D .有上邻空闲分区也有下邻空闲分区
【解析】 当既有上邻空闲分区,又有下邻空闲分区时,系统将它们与回收区一起合并成一
个空闲分区,从而导致总的空闲分区个数减 1 。本题答案为 D
12. 首次适应算法的空闲分区
A .按大小递减顺序链接在一起 B .按大小递增顺序链接在一起
C .按地址由小到大排列 D .按地址由大到小排列
【解析】 首次适应(最先适应)算法的空闲分区按地址递增的次序排列。本题答案为 C
13. 最佳适应算法的空闲分区是
A .按大小递减顺序链接在一起 B .按大小递增顺序链接在一起
C .按地址由小到大排列 D .按地址由大到小排列
【解析】 最佳适应算法的空闲分区按分区大小递增排列。本题答案为 B
14. 下面最有可能使得高地址空间成为大的空闲区的分配算法是
A 首次 适应算法 B .最佳适应算法
C .最 适应算法 D .循环首次适应算法
【解析】 首次适应算法要求空闲分区按内存地址递增的次序排列,并且每次都从内存的低
地址部分查找满足要求的空闲分区,即优先对低地址部分的空闲分区进行分配,从而保留了
高地址部分的大空闲区。本题答案为 A
15. 设内存分配情况如图 4-1 所示,若要申请一块 40K 字节的内存空间,采用最佳适应算
法则所得到的分区首址为
A 100k B 190k C 330k D 410k
4-1 内存分配情况
【解析】 共有 4 个空闲分区,按容量大小递增的次序是: 60K 80K 90K 102K 。采用最
佳置换算法应选择与所申请空间大小最接近且又满足需要的分区,在此为 60K 的空闲区,
其首地址为 330K 。本题答案为 C
16. 存储管理方式提供一维地址结构。
A .分段 B .分页 C .段页式 D A C 都不是
【解析】 分页存储管理方式提供一维地址结构,而分段存储管理方式提供二维地址结构。
本题答案为 B
17. 分段管理提供 维的地址结构。
A 1 B 2 C 3 D 4
【解析】 分段管理中段是信息的物理单位,各段之间彼此独立,通过段号和段内地址实现
地址变换,所以为二维地址结构。本题答案为 B
18. 在分段存储管理中, CPU 每次在内存中存取一次数据需要 次访问内存。
A 1 B 3 C 2 D 4
50 【解析】 分段存储管理中,对一个数据进行操作需要两次访问内存:第一次是访问内存中
的段表,找到与该段对应的表项并从中得到该段在内存中的起始地址,然后由这个段的内存
起始地址加上段内地址而形成要访问的物理地址;第二次再根据这个物理地址对其存放的数
据进行操作。本题答案为 C
19. 实现了分段、分页两种存储方式的优势互补。
A .请求分页管理 B .可变分区管理
C .分段管理 D .段页式管理
【解析】 段页式存储管理既具有分页存储管理能够有效提高内存利用率的优点,又具有分
段存储管理能够很好满足用户需要的长处,从而实现了分页和分段两种存储方式的优势互
补。本题答案为 D
20. 在段页式存储管理中, CPU 每次在内存中存取一次数据需要 次访问内存。
A 1 B 3 C 2 D 4
【解析】 在段页式存储管理中,对一个数据的访问首先要查找内存中的段表,然后再查找
内存中的页表并拼接成物理地址,最后根据该物理地址去访问内存中的数据,因此需要 3
次访问内存。本题答案为 B
21. 碎片是指
A .存储分配后所剩的空闲区 B .没有被使用的存储区
C .不能被使用的存储区 D .未被使用但暂时又不能使用的存储区
【解析】 随着分配与回收的不断进行,内存中会出现很多离散分布且容量很小的空闲小分
区,这些空闲小分区单个又不能满足程序对内存大小的需求,于是这些小的空闲分区就成为
内存中无法再利用的资源,称为内存碎片或零头。本题答案为 D
22. 当内存中所有碎片的容量之和大于某一程序所申请的内存容量时,
A .可以为这一程序直接分配内存 B .不可以为这一程序分配内存
C .拼接后可以为这一程序分配内存 D .一定能够为这一程序分配内存
【解析】 当内存中所有碎片的容量之和大于某一作业所申请的内存容量时,可以采用拼接
(紧凑)技术将内存中这些无法利用的小空闲分区(内存碎片)合并在一起组成一个较大的
空闲分区来满足作业的需要。本题答案为 C
23. 存储管理方式能使存储碎片(外部碎片)尽可能少,而且使内存利用率较高。
A . 分段 B .可变分区 C .分页 D .段页式
【解析】 分页存储管理没有外部碎片(即内存碎片或存储碎片),内存利用率高;而分段存
储管理则难以找到恰好满足一段大小的连续空闲区,易造成内存碎片,即内存利用率不高;
可变分区也易造成内存碎片。段页式存储管理空间浪费比分页式存储管理要多,首先各段的
最后一页都有可能浪费一部分内存空间;其次段页式管理的段表和页表所占内存空间比分页
管理多。本题答案为 C
24. 存储管理支持多道程序设计,算法简单但存储碎片多。
A .分段 B .分页 C .固定分区 D .段页式
【解析】 固定分区存储管理相对分页、分段和段页式存储管理,其管理算法简单但内存碎
片多。本题答案为 C
25. 分区管理和分页管理的主要区别是
A .分区管理中的空闲分区比分页管理中的页要小
B .分页管理有地址映射 (地址转换) 而分区管理没有
C .分页管理有存储保护而分区管理没有
D .分区管理要求程序存放在连续的空间而分页管理没有这种要求
【解析】 分区管理要求一道程序存放在一个连续的内存空间中,而分页存储管理中的每个
51 52
页都可以离散的放在内存中的物理块里。本题答案为 D
26. 操作系统采用分页存储管理方式,要求
A .每个进程拥有一张页表,且进程的页表驻留在内存中
B .每个进程拥有一张页表,但只有当前运行进程的页表驻留在内存中
C .所有进程共享一张页表以节约有限的内存,但页表必须驻留在内存中
D .所有进程共享一张页表,只有页表中当前使用的页必须驻留在内存中
【解析】 多个进程并发执行时,大多数进程的页表常驻内存。系统只设置一个页表控制寄
存器用来存放当前运行进程的页表在内存的起始地址和页表的长度。对未运行的进程,其页
表起始地址和页表长度存放在该进程的 PCB 中。当某进程被调度执行时,才将页表起始地
址和页表长度装入到页表控制寄存器中。本题答案为 A
27. 在分页存储管理系统中,程序的地址空间是连续的,分页是由 完成的。
A .程序员 B .硬件 C .编译软件 D A C 都不对
【解析】分页存储管理中,分页和地址转换都是由硬件完成的。本题答案为 B
28. 一个分段存储管理系统中,地址长度为 32 位,其中段号占 8 位,则最大段长是
A 2 8 字节 B 2 16 字节 C 2 24 字节 D 2 32 字节
【解析】 段地址为 32 位二进制数,其中 8 位用来表示段号,而其余的二进制位则用来表示
段内地址,即段内地址= 32 8 24 位二进制数,故可表示的最大段长为 2 24 字节。本题答
案为 C
29. 采用 存储管理不会产生内部碎片。
A .分页 B .分段 C .固定分区 D .段页式
【解析】 内部碎片存在于固定分区、分页及段页式存储管理中,外部碎片存在于可变分区
和分段存储管理中。本题答案为 B
30. 在分段存储管理方式中,
A .以段为单位分配内存,每段是一个连续存储区
B .段与段之间必定不连续
C .段与段之间必定连续
D .每 个段都 是等长的
【解析】 分段存储管理中以段为单位分配内存,每个段是一个连续的存储区且不一定等长,
段与段之间可以离散存放也可以连续存放。本题答案为 A
31. 段页式存储管理汲取了分页和分段的优点,其实现原理结合了分页和分段管理的基本
思想,即
A .用分段方法来分配和管理内存物理空间,用分页方法来管理用户地址空间
B .用分段方法来分配和管理用户地址空间,用分页方法来管理内存物理空间
C .用分段方法来分配和管理内存空间,用分页方法来管理辅存空间
D .用分段方法来分配和管理辅存空间,用分页方法来管理内存空间
【解析】 段页式存储管理兼有分页和分段存储管理的优点,采用分段方法来分配和管理用
户的地址空间,用分页方法来管理内存空间。本题答案为 B
32. 在段页式存储管理中,
A .每个作业或进程有一张段表和两张页表
B .每个作业或进程的每个段有一张段表和一张页表
C .每个作业或进程有一张段表并且每个段有一张页表
D .每个作业或进程有一张页表并且每个段有一张段表
【解析】 在段页式存储管理中,每个作业或进程可分为若干个段,即有一张段表,每个段
对应段表中的一个段表项;并且,每个段表项又对应一张页表。本题答案为 C 53
33. 虚存管理和实存管理的主要区别是
A .虚存管理区分逻辑地址和物理地址,实存管理则不区分
B .实存管理要求一程序在内存必须连续,而虚存管理则不需要连续的内存
C .实存管理要求程序必须全部装入内存才开始运行,而虚存管理则允许程序在执行
过程中逐步装入
D .虚存管理以逻辑地址执行程序,而实存管理以物理地址执行程序
【解析】 实存管理要求程序必须全部装入内存才开始运行,而虚存管理则允许只装入部分
程序就可以运行,并采用对换方法在程序运行过程中逐步装入其余所需要的那部分程序。本
题答案为 C
34. 系统“抖动”现象的发生是由于 引起的。
A .置换算法选择不当 B .交换的信息量过大
C .内存容量充足 D .请求 分页 管理方案
【解析】 如果页置换算法选择不当,就会出现某些页反复在内存与外存之间调入调出,以
至于 CPU 的大部分时间都花费在页的来回调度上,这种现象称为“抖动”。本题答案为 A
35. 在下列有关请求分页管理的叙述中,正确的是
A .程序和数据在开始执行前一次性装入
B .产生缺页中断一定要淘汰一个页
C .一个被淘汰的页一定要写回外存
D .在页表中要有中断位、访问位、修改位及外存地址等信息
【解析】 请求分页管理在程序开始执行前仅将程序的部分页装入内存,其余的页待需要时
再装入内存;如果内存还有可用的物理块,产生缺页中断则无需淘汰一个页;当淘汰一个页
时,如果该页在装入内存后的这段时间内并未修改,则无需写回外存;在请求分页存储管理
中,为了便于管理页在内、外存之间的对换,需要在页表中设置中断位、访问位、修改位及
外存地址等信息。本题答案为 D
36. LRU 置换算法所基于的思想是
A .在最近的过去用得少,在最近的将来也用得少
B .在最近的过去用得多,在最近的将来也用得多
C .在最近的过去很久未用,但在最近的将来会使用
D .在最近的过去很久未用,在最近的将来也不会使用
【解析】 LRU 置换算法利用“最近的过去”来作为“最近的将来”的一种近似,即如果某
页最近被访问了,则不久之后还可能被访问;反之,如果某页最近很长一段时间都未被访问,
则在将来的一段时间内该页也不会被访问。本题答案为 D
37. 下面存储管理方案中, 存储管理可采用覆盖技术。
A .单一连续区 B .可变分区 C .分段 D .段页式
【解析】 覆盖技术是早期扩大存储容量的一种技术,并且主要在单一连续区存储管理中使
用。本题答案为 A
38. 为了使虚拟系统有效地发挥其预期的作用,所运行的程序应具有的特性是
A .该程序不应含有过多的 I/O 操作
B .该程序的大小不应超过实际的内存容量
C .该程序应具有较好的局部性
D .该程序的指令相关不应过多
【解析】 虚拟存储器的出现正是基于程序的局部性原理。为了使虚拟系统有效地发挥其预
期的作用,所运行的程序应具有较好的局部性。本题答案为 C
39. 程序在执行中发生缺页中断,由系统将该缺页调入内存后应继续执行 A .被中断的前一条指令 B .被中断的指令
C .被中断的后一条指令 D .程序的第一条指令
【解析】 发生缺页中断是在一条指令的执行中出现的,该指令并未执行完,故缺页消除后
应重新执行刚才因缺页而中断执行的这条指令。本题答案为 B
40. 存储管理方法有利于程序的动态链接。
A .分段 B .分页 C .可变分区 D .固定分区
【解析】 动态链接是指开始时只将主程序所对应的目标模块装入内存即投入运行,当运行
过程中又需要用到某个程序段时再将该段调入内存与相关模块链接起来,然后继续运行;因
此,动态链接是以段为基础的。本题答案为 A
41. 实现虚拟内存最主要的技术是
A .整体覆盖 B .整体对换 C .部分对换 D .多道程序设计
【解析】 虚拟存储器具有自动实现部分装入和部分对换的功能。部分装入指将进程的一部
分装入内存即可运行;而部分对换则是以块(页或段)为单位实现内存与外存之间的信息交
换。本题答案为 C
42. 虚拟内存的最大容量只受 的限制。
A .物理内存的大小 B .磁盘空间的大小
C .数据存放的实际地址 D .计算机地址位数
【解析】 虚拟存储器的最大容量由计算机的地址结构决定。本题答案为 D
43. 有关虚拟存储器的叙述中,正确的是
A .程序运行前必须全部装入内存,且在运行中必须常驻内存
B .程序运行前不必全部装入内存,且在运行中不必常驻内存
C .程序运行前不必全部装入内存,但在运行中必须常驻内存
D .程序运行前必须全部装入内存,但在运行中不必常驻内存
【解析】 采用虚拟存储器后,作业运行前不必全部装入内存;且在运行中也不必常驻内存,
而是采用对换技术实现内、外存之间的信息交换。本题答案为 B
44. 是请求分页存储管理和分页存储管理的区别
A .地址重定位 B .不必将程序全部装入内存
C .采用快表技术 D .不必将程序装入内存连续区域
【解析】 请求分页存储管理和分页存储管理的区别是:请求分页存储管理采用虚拟技术,
不必将作业全部装入内存,而分页存储管理则要求将作业全部装入内存。本题答案为 B
45. 在请求分页存储管理中,若进程访问的页不在内存且内存又没有可用的 物理 块时,系
统正确的处理顺序为
A .决定淘汰页,页调出,缺页中断,页调入
B .决定淘汰页,页调入,缺页中断,页调出
C .缺页中断,决定淘汰页,页调出,页调入
D .缺页中断,决定淘汰页,页调入,页调出
【解析】 当进程访问的页不在内存且内存又没有可用的空闲块(物理块)时,系统正确处
理的顺序是:先产生缺页中断,根据置换算法决定淘汰哪个页,然后将淘汰页调至外存,并
由外存将所需页调入内存。本题答案为 C
. 判断题解析
1. CPU 可以直接存取外存上的信息。
2. 存储管理的主要目的是扩大内存空间。
3. 在现代操作系统中不允许用户干预内存的分配。
54 4. 动态重定位技术使得作业可以在内存中移动。
5. 存储保护是通过软件实现的。
6. 采用动态重定位技术的系统,可执行程序可以不经过任何改动就直接装入内存。
7. 连续分配管理方式仅适合于单道程序运行环境。
8. 采用可变分区(动态分区)方式将程序装入内存后,程序的地址不一定是连续的。
9. 内存中的碎片可以直接通过拼接合并成一个连续区。
10. 在分页存储管理中,用户应将自己的程序划分成若干相等的页。
11. 在分页存储管理中,程序装入内存后其地址是连续的。
12. 分页存储管理中一个程序可以占用不连续的内存空间,而分段存储管理中一个程序则
需要占用连续的内存空间。
13. 分段存储管理中的分段是由用户决定的。
14. 请求分页存储管理系统若把页的大小增加一倍,则缺页中断次数就会减少一半。
15. 采用虚拟存储技术,用户编写的应用程序其地址空间是连续的。
16. 由分页系统发展为分段系统进而发展为段页式系统的原因是既满足用户的需要又提
高内存的利用率。
17. 在虚拟存储系统中,用户地址空间的大小可以不受任何限制。
18. 在请求分页存储系统中,页的大小根据程序长度可以动态地改变。
19. 大多数虚拟系统采用最佳置换算法( OPT ),是因为它确实可以得到最小的缺页率。
20. 分段存储管理中段内地址是连续的,段间的地址也是连续的。
【解析】
1. 错误。 CPU 可以直接存取内存中的信息而不能直接存取外存中的信息。
2. 错误。存储管理的主要目的是充分利用内存空间(即提高内存空间的利用率),为多道
程序并发执行提供存储基础,并尽可能地方便用户使用。
3. 正确。
4. 正确。
5. 错误。存储保护是通过硬件和软件实现的。
6. 正确。
7. 错误。固定分区和可变分区存储分配方式属于连续分配,它们都适合于多道程序运行
环境。
8. 错误。在动态分区(可变分区)存储分配中,一个程序占用一个分区且一个分区内的
地址是连续的。
9. 正确。
10. 错误。分页存储管理中分页的过程是由操作系统完成的,用户不能干预;即程序的一
维逻辑地址空间经过系统硬件自动分页形成“页号+页内地址”的地址结构。
11. 错误。在分页存储管理中,程序中的每一个页离散的装入内存中相应的物理块。由于
这些物理块不一定连续,所以程序的地址也不一定连续。
12. 错误。分页存储管理和分段存储管理中一个程序都可以占用不连续的内存空间(分页
存储管理中的各页可以不连续;分段存储管理中每个程序段、数据段是连续的,但各段之间
可不连续)。
13. 正确。
14. 错误。虽然增加页的大小可以减少缺页中断次数,但一般不存在反比关系。
15. 正确。
16. 正确。
17. 错误。在虚拟存储系统中,用户地址空间的大小受地址寄存器的位数限制。
55 18. 错误。在请求分页存储系统中, 页的大小是固定的。
19. 错误。最佳置换算法( OPT )是在已知程序运行过程的情况下保证获得最低的缺页率,
但难以预知一个进程的页走向,因此该算法难以实现,大多数虚拟系统不会采用该算法。
20. 错误。分段存储管理中,段内地址是连续的,但各段之间的地址通常不连续。
. 简答题解析
1. 存储管理研究的主要课题有哪些?
【解答】 存储管理研究的主要可归纳为如下 4 个方面:
1 )内存空间的分配与回收问题。研究存储共享和各种分配与回收算法。
2 )地址再定位问题。研究各种地址转换机构以及静态或动态再定位方法。
3 )存储保护问题。研究对内存中的程序和数据实施保护的方法。
4 )内存空间的扩充问题。主要研究统一管理内、外存之间程序和数据自动交换的虚拟存
储器及各种置换算法。
2. 什么叫重定位?动态重定位的特点是什么?
【解答】 重定位是指程序装入到与其地址空间不一致的内存物理空间所引起的地址转换过
程。重定位分为静态重定位和动态重定位两种形式。静态重定位是在程序装入内存时进行地
址重定位,而动态重定位则是在程序执行中访问指令或数据时进行地址重定位。动态重定位
的特点是:
1 )地址变换机构由硬件实现。
2 )在程序的执行过程中进行地址转换。
3 )程序可以在内存中移动且可以不必连续存放。
3. 什么是交换技术?什么是覆盖技术?
【解答】 覆盖技术和交换技术是两种扩充内存的技术。覆盖技术主要用于早期的操作系统
中,而交换技术在现代操作系统中仍然占有重要的地位。
覆盖技术基于这样的思想:一个程序不需要把所有的指令和数据都装入内存,而是将程
序划分为若干个功能相对独立的程序段,按照程序的逻辑结构让那些不会同时执行的程序段
共享同一块内存区;这样使用户感觉到内存扩大了,从而达到扩充内存的目的。
覆盖技术要求用户提供一个清晰的覆盖结构,即用户根据程序的逻辑结构将一个程序划
分为不同的程序段,并事先规定好内存的覆盖区及程序的执行顺序和覆盖顺序。操作系统则
根据用户提供的覆盖结构来完成执行过程中程序段的覆盖。因此,用户必须熟悉计算机的硬
件及内存分配情况,这对用户提出了较高要求。
交换技术是将内存中暂时不具备运行条件的部分程序或数据写入外存交换区,然后将外
存交换区中需要运行的程序或数据调入内存并投入运行。
与覆盖相比,交换则完全由操作系统实现,它不要求用户做特殊的工作,整个交换过程
对用户是透明的。并且,交换主要是在进程或程序之间进行,而覆盖则主要是在同一个程序
或同一个进程内进行。
4. 分区管理主要使用的数据结构有哪些?常用哪几种方法寻找和释放空闲区?这些方法
各有何优缺点?
【解答】 为实现分区管理,系统必须使用相应的数据结构来记录内存的使用情况并为内存
的分配提供依据。常用的数据结构有:
1 )已分配分区表。用于登记内存空间中已经分配的分区,每个表项记录一个已分配分
区,其内容包括分区号、起始地址、大小和状态。
2 )空闲分区表。记录内存中所有空闲的分区,每个表项记录一个空闲分区,其内容包
括分区号、起始地址、大小和状态。
56 3 )空闲分区链。为了实现对空闲分区的分配与回收,在每个分区的始端设置有关分区
分配的信息及链接各空闲分区的前向指针,在分区的尾部再设置一个后向指针,从而将所有
的空闲分区链接成一个循环双向队列。
寻找和释放空闲区的常用算法及优缺点如下:
1 )首次适应(最先适应)算法。空闲区按地址大小递增的顺序排列。分配空闲区时由
链首开始查找空闲区,直到找到一个最先满足要求的空闲区,而不管它究竟有多大。
首次适应算法的优点是:
① 尽可能利用内存的低地址部分,在高地址端则保留了较多或较大的空闲区,当以后需
要较大空闲区时则容易满足。
② 由于空闲区按地址递增排列,这使回收区与相邻空闲区的合并比较容易。
首次适应算法的缺点是在低地址端很快集中了许多非常小的空闲区,这使空闲区分配时
的查找次数增加。
2 )最佳适应算法。空闲区按容量递增的次序排列。当需要一个空闲区时则按空闲区的
容量由小到大进行查找。
最佳适应算法的优点是:
① 如果有一个空闲区容量正好满足要求,则该空闲区必被选中。
② 如果不存在恰好满足要求的空闲区,则选中的必然是容量最接近的空闲区,而较大的
空闲区则被保留下来,待以后需要分配较大空闲区时则容易满足。
最佳适应算法的主要缺点是选中的空闲区通常不可能恰好满足要求,在分配之后的剩余
空间往往很小,以致于很难使用且都集中于空闲区链的前端,从而增加了查找空闲区的次数。
此外,在回收空闲区时,为了将回收区与相邻的空闲区合并使之成为一个空闲区,则可能要
查遍整个空闲区链,因为空闲区是按容量大小排列而不是按地址排列的。
3 )最差适应算法。与最佳适应算法相反,空闲区按容量递减的次序排列。
最差适应算法的优点是:
① 每次只和空闲区链的链首空闲区比较,如满足要求则立即进行分配,否则系统再无满
足要求的空闲区,因而减少了查找的次数。
② 空闲区分配后余留下来的空间(仍作为一个空闲区)较大,不会产生过多的难以利用
的小空闲区。
最差适应算法的缺点是工作一段时间后剩余的空闲区大小比较均匀,当需要较大空闲区
时则得不到满足。此外,在回收空闲区时存在着与最佳适应算法同样的问题。
4 )循环首次适应算法。将空闲区按地址大小递增的顺序构成一个循环队列,每次需要
空闲区时总是从上一次查找结束的地址开始查找,直到找到满足要的空闲区。
循环首次适应算法的优点是:
① 内存利用更加均衡,不至于小空闲区集中于内存的低端。
② 回收空闲区与首次适应算法同样方便。
循环首次适应算法的缺点是工作一段时间后剩余的空闲区大小比较均匀,当需要较大空
闲区时则得不到满足。
5. 分页存储管理有效地解决了什么问题?试叙述其实现原理。
【解答】 分区存储管理要求每个程序在分区内是连续存储的,致使无论是固定分区管理还
是可变(动态)分区管理,在内存空间利用率上都是低效的,因为前者产生内部碎片(分区
内部的碎片),后者产生外部碎片(小分区形成的碎片)。而分页存储管理避开了连续性要求
而采取了离散分配内存的方式,从而彻底解决了连续分配存在的问题,分页存储管理的实现
原理如下:
1 )以同样大小的块(物理块)为单位划分内存,物理块是内存分配的基本单位,物理
57 块的大小为 2 的整数幂。
2 )以同样大小的页划分程序的地址空间,页与物理块大小相同。
3 )程序在内存中可以存放在不相邻(不连续)的物理块中,系统通过页表记录每一页
所对应的物理块。
4 )通过地址转换机构动态地实现程序的逻辑地址到内存物理地址的转换。
6. 什么是动态链接?用哪种内存分配方法可以实现这种链接技术?
【解答】 动态链接就是指在进程运行过程中需要调用某一程序模块时,再将其装入内存并
链接它;对于未使用的程序模块,这种动态链接方法就不会装入并链接它。
在分段存储管理中,由于地址空间是二维的,且每一段是一组有意义的信息或具有独立
功能的程序段,因而可以在进程运行过程中当调用到一个程序段或数据段时再进行动态装入
和链接。所以,采用段式内存分配方法可以实现动态链接技术。
7. 选择页大小是一个如何进行权衡的问题,试指出大页和小页各自的优点。
【解答】 较大页的优点如下:
1 )页表的大小与页的大小成反比,较大的页可以节省实现地址映射所需要的存储空间
(页表)及其他资源(查找页表和调页花费的 CPU 时间)。
2 )较大的页可以使虚拟存储器实现更加容易(减少页的调入和调出次数)。
3 )在内存和外存之间传送大页比传送几个小页更加有效。
4 )联想存储器(快表)的项数有限,对同样项数的快表,较大的页则意味着可以高效
实现更多内存空间的地址转换,从而减少快表失效的次数。
较小页的优点如下:
1 )减少页内零头(即内部碎片)。
2 )节省进程的启动时间。许多进程都比较小,所以采用小页可以加快进程的调用。
8. 试论述虚拟存储器的优点。
【解答】 虚拟存储器的优点如下:
1 )扩充了内存空间。虚拟存储器将内存和外存统一管理,使得超过内存空间的程序也
能运行。
2 )多个进程可以共享内存空间。虚拟存储器把内存空间划分为较小的块(页或段),并
以块为单位分配给各进程。这样,多个进程就可以共享一个较小的内存空间,从而实现多个
进程的并发执行。此外,大多数虚拟存储器还可以减少程序的启动时间,因为不必等到该程
序的全部代码和数据都装入内存即可开始执行。
3 )用户不必做存储管理工作。在非虚拟存储器中,用户运行大程序时必须自己解决程
序覆盖问题。而虚拟存储器解决了这个问题,它自动地实现部分程序在内、外存之间的交换,
从而免除了用户的负担。
4 )采用动态重定位技术简化了程序的装入同时也提供了内存扩充的基础。动态重定位
是在程序执行中真正访问指令和数据时才进行地址转换而形成物理地址的。动态重定位使得
同一个程序可以方便的装入到内存中的任何位置上运行。
9. 覆盖技术与虚拟存储技术有何本质的不同?交换技术与虚拟存储技术中使用的调入 /
出技术有何相同与不同之处?
【解答】 覆盖技术与虚拟存储技术的本质不同如下:
1 )覆盖段的长度受内存容量大小的限制,而虚拟存储器的大小不受内存容量的限制而
只受计算机地址寄存器大小的限制。
2 )覆盖技术中的覆盖段由用户自己设计,即用户要参与到对内存的管理和划分。虚拟
存储技术由操作系统提供逻辑空间给用户使用,并且由逻辑空间到内存物理空间的地址转换
工作完全由操作系统完成。
58 59
交换技术是将内存中暂时不执行的进程由内存调至外存,以便使更多的作业被选中调入
内存参与进程的调度执行,以此来达到提高系统的效率。虚拟存储使用的调入 / 调出技术是
从存储角度考虑如何用外存来扩充内存,即提供一个大于实际内存的逻辑空间给用户使用。
两者的相同之处是:都采用交换技术来交换内存与外存的信息;不同之处是:交换技术
并未提供大于实际内存的逻辑空间给用户使用,并且该技术也不是直接面向用户的,而是为
了提高效率进行进程的整体交换(交换的单位为进程);而虚拟存储技术则是提供大于内存
的逻辑空间给用户使用,是直接面向用户的,即为了扩充内存而进行部分交换(交换的单位
是页或段)。
10. 在请求分页管理系统中引入了缺页中断:
1 )试说明为什么引入缺页中断?
2 )缺页中断的实现由哪几部分组成?分别给出其实现方法。
【解答】 ( 1 )请求分页存储管理是在分页存储管理的基础上实现虚拟存储器的。也即,一
个程序在运行时并不是将其所有的页都装入内存,而仅装入一部分页,当访问的页不在内存
时则产生一缺页中断,由系统响应中断将该缺页由外存调至内存,然后重新由被中断的指令
处继续执行。所以对请求分页存储管理系统,则必须引入相应的缺页中断机制。
2 )缺页中断的实现由硬件和软件两部分共同完成:
① 硬件方面。 CPU 在执行一条指令时首先形成操作数的有效地址,然后计算页号并检索
页表看该页是否在内存中。如果该页在内存则进行地址转换,按转换后的物理地址取出操作
数并完成该指令的功能,然后继续执行下一条指令;如果该页不在内存中则引起缺页中断并
进入缺页中断处理程序。
② 软件方面。在缺页中断处理程序中,首先根据内存分配表检查内存中是否有空闲的物
理块,如果没有则选择内存中的一页予以淘汰(若该页被修改过则还需写回外存),并修改
页表和内存分配表(此时出现了空闲的物理块),这时系统根据页表中提供的该页外存地址
将该页调至内存中的这个空闲块中,然后修改页表和内存分配表,最后再重新执行刚才被中
断的那条指令。
11. LRU 算法的基本思想是什么?有什么特点?
【解答】 LRU 算法的基本思想是:根据程序的局部性原理,依照一个程序在执行过程中已
经执行过的页访问踪迹来推测未来的页走向,即认为过去一段时间里不曾被访问过的页在最
近的将来也不会被访问。所以, LRU 算法在需要置换一个页时,总是选择在最近一段时间
内最久不用的页予以淘汰。
LRU 算法能够适用于不同类型的程序。但是 LRU 算法实现起来比较困难,这是因为要
对之前所访问页的历史记录不断更新;如果这种不断更新、修改的工作完全由软件实现,则
系统的开销太大,如果由硬件实现则增加硬件成本。因此,在实际应用中一般采用的是简单
有效的 LRU 近似算法 NRU ,该算法只需在页表中增设一个访问位就可实现。当某个页被访
问时其访问位置 1 ,而系统则定时地为所有访问位重新清 0 ,当系统需要淘汰某个页时就从
当前访问位为 0 的页中随机选择一个页淘汰。 LRU 近似算法(即 NRU 算法)的流程如图
4-2 所示。
4-2 NRU 算法流程图
12. 什么是局部性原理?什么是抖动,有什么办法减少系统的抖动现象?
【解答】 局部性原理是指程序的执行过程中,一段时间内 CPU 总是集中地访问程序中某一
部分而不是对程序的所有部分都进行访问。虚拟存储器就是基于局部性原理而实现的。
抖动是指当给进程分配的内存小于所要求逻辑空间大小时,就可能出现该进程的程序或 数据在内、外存之间频繁的换入、换出,从而占用大量的 CPU 时间,使 CPU 的有效处理时
间降低而导致系统的性能下降。如在请求分页存储管理中,若选用的页置换算法不合适就会
出现一个页频繁在内、外存之间进行入页和出页这种 “抖动” 现象。
预防抖动的方法如下:
1 )采用局部置换策略。仅在进程自己的内存空间进行缺页置换,不允许从其他进程获
得新的物理块。这样,既使有某个进程发生了抖动,也不会导致其他进程产生抖动。
2 )在 CPU 调度程序中引入工作集算法。即在创建新进程之前,必须检查内存中每个进
程的驻留集是否足够大,足够大时才允许从外存调入新的程序(创建新的进程)到内存。
3 )使用 L=S 准则调整多道程序的个数。当进程产生缺页的平均时间 L 等于系统处理进
程缺页的平均时间 S CPU 利用为最佳。
4 )挂起若干进程。被挂起的进程一般是选择优先权最低或较低的,或者选择一个不很
重要但又比较大的进程,或者是具有最多剩余执行时间的进程。
13. 比较分段管理和分页管理的特点。
【解答】 分段和分页管理的特点如下:
1 )页是信息的物理单位,分页是系统管理的需要而不是用户的需要。段是信息的逻辑
单位,分段是用户的需要。
2 )分页与分段都提供了内、外存统一管理的虚拟存储实现。但与请求分页存储管理不
同的是,请求分段存储管理每次交换是一段有意义的信息,而不像请求分页存储管理那样只
交换固定大小的页,从而可能需要多次缺页中断才能把所需要的完整信息调入内存。
3 )分段存储管理中的段长可以根据需要动态的增加,这对需要不断增加或接纳新数据
的段来说是非常有益的,但是段的长度受到内存空闲区大小的限制。此外,允许段长可按需
要动态的增加无疑给系统的管理带来一定难度和系统开销。
4 )分段管理便于对有完整逻辑功能的信息段进行共享,便于实现段的动态链接。
5 )分页管理实现的是单一连续地址空间,而分段管理实现的是二维地址空间。
14. 段页式管理的主要缺点是什么,有何改进方法?
【解答】 段页式存储管理的主要缺点是对内存中指令或数据进行存取时,至少需要三次访
问内存:第一次是由段表控制寄存器取得段表起始地址后访问内存中的段表,并由此得到对
应页表项中页表在内存的起始地址。第二次根据页表起始地址访问内存中的页表,由此得到
对应页表项中所存放的内存物理块号,并且由物理块号和页内地址拼接成要访问的物理地
址。第三次才根据得到的物理地址去访问对应内存单元中的指令或数据。显然,这大大降低
CPU 执行指令的速度。
改进的方法是在硬件上增加联想存储器,并在联想存储器中存放当前最常用的段号、页
号和对应的内存物理块号及其他控制项。当需要访问内存中某一单元时,可在通过段表、页
表进行内存地址查找的同时,根据联想存储器查找其段号和页号。如果所要访问的段和页地
址在联想存储器中,则系统终止对内存中的段表和页表访问,而直接把联想存储器中的值(即
物理块号)与页内地址拼接得到要查找的物理地址。由于联想存储器的查找速度比分两次查
内存的段表和页表快得多,因此使得 CPU 执行指令的速度没有明显下降。
15. 给出几种存储保护的方法,并说明它们各自适用的场合?
【解答】 ( 1 )上、下界寄存器,适用于分区式分配方案的保护。即为每个进程设置一对上、
下界寄存器,上、下界寄存器中装有被保护的程序和数据段的起始地址和结束地址。在程序
执行过程中,只要有对内存的访问操作就进行访问地址的合法性检查。检查经过重定位之后
的内存地址是否在上、下界寄存器所规定的范围内,若在规定范围内则访问合法,否则为非
法访问并产生越界中断。
2 )在分页存储管理和分段存储管理中,硬件控制寄存器中保存的页表始址和页表长度
60 61
或者段表始址和段表长度,这两项内容本身就限定了一个程序所允许访问的页和段的个数,
如超出则产生越界中断。此外,还可以在段表中增加段的长度及访问权限两栏,访问地址超
出了当前段的长度或访问请求超越了访问权限则引起越界中断或越权中断。
3 )保护键法。一般用在重要状态字的内存保护区。保护键法是一种软件保护方法,它
为每一个被保护的存储块(段或页)分配一个单独的保护键,在程序状态字 PSW 中则设置
相应的保护开关位,对不同的进程(程序)赋予不同的开关代码并与被保护的存储块中的保
护键相匹配。保护键可以设置成对读写同时保护或只对读写进行单项保护的方式。如果保护
开关与访问的存储块保护键不匹配,则产生错误中断。
. 应用题解析
1. 在一个使用可变分区存储管理的系统中,按地址从低到高排列的内存空间大小是:
10KB 4KB 20KB 18KB 7KB 9KB 12KB 15KB 。对下列顺序的段请求:
1 12KB 2 10KB 3 15KB 4 18KB 5 12KB
分别使用首次适应算法、最佳适应算法、最差适应算法和循环首次适应(下次适应)算
法说明空间的使用情况,并说明对暂时不能分配情况的处理方法。
【解析】 首次适应算法与循环首次适应算法的空闲分区是按地址递增排列的,所不同的是
首次适应算法每次总是从地址最小的空闲分区开始查找,而循环首次适应算法则是从上一次
查找结束的地址开始循环查找。最佳适应算法的空闲分区按容量递增的顺序排列,而最差适
应算法则正好相反。对本题给出的 5 个顺序请求的段, 4 种分配算法的分配情况示意如图 4-3
所示。
4-3 4 种空闲分区分配算法分配示意
注意,在这 4 种空闲分区分配算法中,如果申请的空闲区与内存实际存在的空闲分区大
小不等,则实际分配是将该内存空闲分区拆分为两个部分:一部分为申请所需要的大小,即
分配出去;另一部分为余留的空闲区,将其按空闲分区排列的方法插入到空闲分区链上。由
于题中余留的空闲区除最佳适应算法外最大为 8KB ,已小于题中给出的请求空闲区的大小,
故这些余留空闲区不会再用到;所以为了简单起见,没有再画出每次分配后余留空闲区的情
况。图 4-3 所示仅是针对本题的一种简易解法示意。对图 4-3(d) 所示的第 (5) 次分配 12KB
则是在循环一次以后得到的。
由图 4-3 可知,除了最佳适应算法以外的另 3 种分配算法对于申请 18KB 空闲区的请求
都不能满足。对于无法满足请求的进程,则只能将其挂入等待内存资源的阻塞队列上,待以
后回收内存区时,如果存在回收区与空闲分区相邻则合并为一个空闲分区,且当空闲分区大
18KB 时可唤醒这个阻塞进程。
2. 在一分页存储管理系统中,逻辑地址长度为 16 位,页的大小为 2048B ,对应的页表如
4.1 所示。现有两逻辑地址为 0A5CH 2F6AH ,经过地址变换后所对应的物理地址各是
多少?
4.1 页表
页号
物理块号
0
5
1
10
2
4
3
7 62
【解析】 由题设条件可知,分页存储管理的逻辑地址结构为:
15 11
10 0
页号 P
页内地址 W
逻辑地址 0A5CH 用二进制表示如下:
 
 

W
P
1100
0101
1010
0000
即逻辑地址 0A5CH 的页号为 1 ,从表 4.1 所示可知该页对应的物理块号 B 10 。所以,将
二进制表示的页号 00001 换为二进制表示的物理块号 01010 后得到的二进制物理地址为:

 

W
B
1100
0101
010
0
0101
也即,用 16 进制表示的物理地址为: 525CH
逻辑地址 2F6AH 用二进制表示如下:
 
 

W
P
1010
0110
1111
0010
也即,逻辑地址 2F6AH 的页号为 5 ,查表 4.1 已超过页表的长度,故产生越界中断。
3. 对表 4.2 所示的段表,请将逻辑地址 [0, 137B] [1, 4000B] [2, 3600B] [5, 230B] (方
括号中第一个项为段号,第二个项为段内地址)转换成物理地址。
4.2 段表
段号
段长
内存始址
0
10KB
50KB
1
3KB
60KB
2
5KB
70KB
3
8KB
120KB
4
4KB
150KB
【解析】( 1 )对逻辑地址 [0, 137B] ,因 137B 10KB ,故物理地址= 50KB 137B 51337B
2 )对逻辑地址 [1, 4000B] ,因 4000B 3KB ,故产生越界中断。
3 )对逻辑地址 [2, 3600B] ,因 3600B 5KB ,故物理地址= 70KB 3600B 75280B
4 )对逻辑地址 [5, 230B] ,因 5 4 ,段号不合法,故产生越界中断。
4. 4-4 分别给出了分段或分页两种地址变换示意(假定分段变换对每一段不进行段长
的越界检查,即段表中无段长信息)。
1 )指出这两种变换各属于何种存储管理。
2 )计算出这两种变换所对应的物理地址。 63
4-4 两种地址变换示意
【解析】 ( 1 )由图 4-4 所示中的逻辑地址结构可知,段和页的最大个数为 32 2 5 )。那么,
如果图 4-4(b) 所示的是分页地址变换,则页表中的块号都超过了块号的最大值( 32 ),所以
只能是分段地址变换;而图 4-4(a) 所示恰好满足了分页地址变换(页表中的块号均小于 32 )。
对于分页存储管理,由逻辑地址的页内地址位数可知,一页的大小为 2 11 2KB
2 )对图 4-4(a) 的分页地址变换,其物理地址为 1 2048 586 25162
对图 4-4(b) 的分段地址变换,其物理地址为 4000 586 4586
5. 在一个段页式系统中,某作业的段表、页表如图 4-5 所示,计算逻辑地址 69732 所对
应的物理地址。
4-5 段页式存储管理的数据结构
【解析】 在段页式系统中,逻辑地址由段号、页号和页内地址组成。本题的页内地址为 12
位 , 所 以 页 长 为 2 12 , 对 应 的 物 理 块 大 小 也 为 2 12 69732 对 应 的 二 进 制 数 为
10000011101000000 ,分解为:
 
W
P
S
00
0000000100000111010000
页内地址
页号
段号
所以段号 S 1 ,页号 P 0 (查段号 1 对应的页表 1 中的表项 0 ,知其对应的物理块
5 ),页内地址= (011101000000) 2 1856 。故物理地址为 5×2 12 1856 22336
6. 考虑下面的页访问序列:
1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6
假定有 4 个物理块,应用下面的页置换算法计算出各算法会出现多少次缺页中断。注意,
所给定的页初始时均未放入内存的物理块;因此,首次访问某页时就会发生缺页中断。 64
1 LRU 2 FIFO 3 Optimal
【解析】( 1 LRU 算法总是选择最近最少使用的页予以淘汰。为了清晰起见,表中总是下
面的页最近最少使用。物理块为 4 时的页置换情况如表 4.3 所示。
4.3 LRU 算法在物理块为 4 时的页置换情况
页走向 1
2
3
4
2
1
5
6
2
1
2
3
7
6
3
2
1
2
3
6
1
2
3
4
2
1
5
6
2
1
2
3
7
6
3
2
1
2
3
6
1
2
3
4
2
1
5
6
2
1
2
3
7
6
3
2
1
2
3
1
2
3
4
2
1
5
6
6
1
2
3
7
6
3
3
1
2
1
1
3
4
2
1
5
5
6
1
2
2
7
6
6
6
1
缺页
   
 
  
2 FIFO 算法总是选择最先调入内存的页予以淘汰。为了清晰起见,表中总是下面的页为
最先调入内存的页。物理块为 4 时的页置换算法如表 4.4 所示。
4.4 FIFO 算法在物理块为 4 时的页置换情况
页走向 1
2
3
4
2
1
5
6
2
1
2
3
7
6
3
2
1
2
3
6
1
2
3
4
4
4
5
6
2
1
1
3
7
6
6
2
1
1
3
3
1
2
3
3
3
4
5
6
2
2
1
3
7
7
6
2
2
1
1
1
2
2
2
3
4
5
6
6
2
1
3
3
7
6
6
2
2
1
1
1
2
3
4
5
5
6
2
1
1
3
7
7
6
6
缺页
   
   
  
 
3 Optimal (最佳)算法是选择最长时间不再被访问的页予以淘汰。在下面的页置换情况
表中仍按 FIFO 方式排列。物理块为 4 时的页置换算法如表 4.5 所示。
4.5 Optimal 算法在物理块为 4 时的页置换情况
页走向 1
2
3
4
2
1
5
6
2
1
2
3
7
6
3
2
1
2
3
6
1
2
3
4
4
4
5
6
6
6
6
6
7
7
7
7
1
1
1
1
1
2
3
3
3
3
3
3
3
3
3
6
6
6
6
6
6
6
6
1
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
缺页
   
 
5 章 设备管理
. 单项选择题解析
1. 是直接存取的存储设备。
A .磁盘 B .磁带 C .打印机 D .键盘和显示终端
【解析】 磁盘是直接存取(随机存取)设备,磁带是顺序存取设备,打印机是输出设备,
键盘或显示终端是输入设备。本题答案为 A
2. 以下关于设备属性的叙述中,正确的是
A .字符设备的基本特征是可寻址到字节,即能指定输入或输出的地址
B .共享设备必须是可寻址的随机访问设备
C .共享设备是指一段时间内运行的多个进程同时访问的设备
D .在分配共享设备和独占设备时都可能引起进程死锁
【解析】 打印机、键盘和显示终端是字符设备但却无输出或输入的地址;共享设备是可寻
址的,但共享设备并不一定可随机访问,如磁带是共享设备但只能顺序访问;多个进程竞争 65
独占设备可能引起死锁,但使用共享设备时不发生死锁;因此选项 A 、选项 B 和选项 D
是错误的。而选项 C 正是共享设备的属性。本题答案为 C
3 在设备控制器中用于实现对设备控制功能的是
A CPU B .设备控制器与 CPU 的接口
C I/O 逻辑 D .设备控制器与设备的接口
【解析】 大多数设备控制器由 3 部分组成:① 设备控制器与 CPU 的接口,用于实现设备
控制器与 CPU 之间的通信;② 设备控制器与设备的接口,用于实现设备控制器与设备之间
的信息交换。③ I/O 逻辑,实现对设备的控制并通过一组控制线与 CPU 交互。本题答案为
C
4. 用户程序发出磁盘 I/O 请求后,系统的正确处理流程是
A .用户程序 系统调用处理程序 中断处理程序 设备驱动程序
B .用户程序 系统调用处理程序 设备驱动程序 中断处理程序
C .用户程序 设备驱动程序 系统调用处理程序 中断处理程序
D .用户程序 设备驱动程序 中断处理程序 系统调用处理程序
【解析】 在磁盘 I/O 的中断处理过程中,设备驱动程序应先于中断处理程序执行。本题答
案为 B
5. 如果 I/O 设备与存储设备进行数据交换而不经过 CPU 来完成,这种数据交换方式
A .程序查询 B .中断方式 C DMA 方式 D .无条件存取方式
【解析】在 DMA 控制方式中,设备与内存之间可以成批地进行数据交换而无需 CPU 干预。
本题答案为 C
6. 在操作系统中, 指的是一种硬件机制。
A .通道技术 B .缓冲池 C SPOOLing 技术 D .内存覆盖技术
【解析】 通道是负责 I/O 工作的处理机,是由硬件实现的;而缓冲池、 SPOOLing 技术以及
内存覆盖技术均是由软件实现的。本题答案为 A
7. 通道程序是
A .由一系列机器指令组成 B .由一系列通道指令组成
C .可以由高级语言编写 D .就是通道控制器
【解析】 通道程序是由通道执行的程序,是由一系列通道指令组成的。本题答案为 B
8. 打印机适合于连接到
A .数组多路通道 B .字节多路通道
C .数组选择通道 D A C 都不对
【解析】 字节多路通道以字节为单位进行数据传送,多用于连接像打印机这类中、低速设
备。本题答案为 B
9. 关于通道、设备控制器和设备之间的关系,以下叙述中正确的是
A .设备控制器和通道可以分别控制设备
B .设备控制器、通道和设备可以并行工作
C .通道控制设备控制器、设备控制器控制设备工作
D A C 都不对
【解析】 通道、设备控制器和设备之间的关系是:通道控制设备控制器工作,而设备控制
器控制设备工作。本题答案为 C
10. I/O 中断是 CPU 与通道协调工作的一种手段,所以在 时就要产生中断。
A CPU 执行启动 I/O 指令而被通道拒绝接受
B .通道接收了 CPU 的启动请求 C .通道完成了通道程序的执行
D .通道在执行通道程序的过程中
【解析】 I/O 通道控制方式传输数据的过程为:① 当进程提出 I/O 请求时, CPU 对通道发
出启动命令后转向处理其他事务;② 通道调出通道程序执行,于是设备、通道、 CPU 并行
工作;③ 通道控制设备完成与内存之间的数据传输;④ 数据传输完毕,通道向 CPU 发出
中断请求;⑤ CPU 响应通道提出的中断请求对本次 I/O 进行结束处理。本题答案为 C
11. 在以下 I/O 控制方式中,需要 CPU 干预最少的是
A .程序 I/O 方式 B .中断控制方式
C DMA 控制方式 D .通道控制方式
【解析】 在 I/O 控制方式中,需要 CPU 干预由多到少的顺序为:① 程序 I/O 方式;② 程
序中断 I/O 控制方式;③ DMA 控制方式;④ I/O 通道控制方式。本题答案为 D
12. 在单 CPU 系统中,可并行的是
① 进程与进程 CPU 与设备 CPU 与通道 ④ 设备与设备
A .①、②和③ B .①、②和④ C .①、③和④ D .②、③和④
【解析】 在单 CPU 系统中,不可能在同一时刻运行两个进程(但两个进程可以并发执行),
CPU 与设备、 CPU 与通道、设备与设备都可以并行运行。本题答案为 D
13. 与设备相关的中断处理过程是由 完成的。
A .用户级 I/O B .与设备无关的操作系统软件
C .中断处理 D .设备驱动程序
【解析】 设备驱动程序主要负责启动指定设备,是 I/O 系统中与物理设备密切相关的软件,
所有与物理设备有关的代码都集中在设备驱动程序中。本题答案为 D
14. 在现代操作系统中采用缓冲技术的主要目的是
A .改善用户编程环境 B .提高 CPU 的处理速度
C .提高 CPU 和设备之间的并行程度 D .实 现设 备无关性
【解析】 为了提高 CPU 与设备之间的并行程度,在现代操作系统中几乎所有 I/O 设备在与
CPU 交换数据时都使用了缓冲技术。本题答案为 C
15. 为了使多个进程能有效地同时处理输入和输出,最好使用 结构的缓冲技术。
A .缓冲池 B .循环缓冲 C .单缓冲 D .双缓冲
【解析】 缓冲池是系统的公用资源,可供多个进程共享且既能用于输入又能用于输出。本
题答案为 A
16. 在采用 SPOOLing 技术的系统中,用户的打印数据首先被送到
A .内存固定区域 B .磁盘固定区域 C .终端 D .打印机
【解析】 在 SPOOLing 系统中,用户输出的数据先送到磁盘输出井中,而磁盘输出井即为
系统设定好的磁盘固定区域。本题答案为 B
17. 是操作系统中采用的以空间换取时间的技术。
A SPOOLing 技术 B .虚拟存储技术
C .覆盖与交换技术 D .通道技术
【解析】 虚拟存储技术和覆盖与交换技术采用的是以时间换空间技术。 SPOOLing 技术采
用的是以空间换时间的技术,即通过预输入及缓输出(使用一定的磁盘空间作为输入井和输
出井)来减少 CPU 等待慢速设备的时间并将独占设备改造成共享设备。本题答案为 A
18. SPOOLing 系统克服了 利用率低的缺点。
A CPU B .内存空间 C .独占设备 D .共享设备
【解析】 SPOOLing 技术将独占设备改造为共享设备,从而克服了独占设备利用率低的缺
点。本题答案为 C
66 19. 如果 I/O 所花费的时间比 CPU 的处理时间短得多,则缓冲区
A .最有效 B .几乎无效 C .还是有一定效果 D A C 都不对
【解析】 缓冲区主要是解决因 I/O 设备速度慢而造成信息积压的矛盾,如果 I/O 花费的时
间比 CPU 处理的时间短得多,则缓冲区就没有设置的必要。本题答案为 B
20. 设备的独立性是指
A .设备独立于计算机系统
B .系统对设备的管理是独立的
C .用户编程时使用的设备与实际使用的设备无关
D .每一台设备都有一个唯一的编号
【解析】 设备的独立性(即设备无关性)主要是指用户使用设备的透明性,即用户程序与
实际使用的物理设备无关。本题答案为 C
21. 通过硬件和软件的功能扩充,把原来独占的设备改造成能为若干用户共享的设备,这
种设备称为
A .存储设备 B .系统设备 C .用户设备 D .虚拟设备
【解析】 虚拟设备是指通过虚拟技术(如 SPOOLing 技术)将独占设备改造为共享设备以
便多个进程同时使用。本题答案为 D
22. 以下关于计算机外部设备说法中错误的是
A .计算机外部设备可以分为存储型设备和输入输出型设备
B .存储型设备可以作为内存的扩充,信息传输以块为单位
C .输入输出型设备负责内存与外部设备间的信息传递,信息传输单位是字符
D .存储型设备一般属于共享设备,而输入输出型设备则属于独占设备
【解析】 存储型设备通常指磁盘或磁带,属于共享设备;而输入输出型设备通常指键盘、
显示终端以及打印机等字符型设备,属于独占设备。存储型设备本身是外部设备,它可以作
为内存的扩充并用于与内存之间的信息传递,且信息传输的单位是块;输入输出型设备也可
以用于与内存之间的信息传递,且信息传递的单位是字符,但不用于内存与外部设备之间的
信息传递( DMA 、通道等都用于内存与外部设备之间的信息传递)。本题答案为 C
23. I/O 设备控制方式的发展过程中,最主要的推动力是
A .提高资源利用率 B .提高系统吞吐量
C .减少 CPU I/O 控制的干预 D .提高 CPU I/O 设备并行操作的程度
【解析】 在 I/O 设备控制方式的发展过程中,最主要的推动力是减少 CPU I/O 控制的干
预,以实现 I/O 设备与 CPU 并行工作。本题答案为 C
24. 下列算法中用于磁盘移臂调度是
A .时间片轮转法 B LRU 算法
C .电梯算法 D .优先级高者优先算法
【解析】 时间片轮转法为进程调度算法; LRU 算法为页置换算法;优先级高者优先为作业
或进程调度算法;电梯算法为磁盘移臂调度算法。本题答案为 C
. 判断题解析
1. 设备独立性是指设备驱动程序独立于具体使用的物理设备。
2. SPOOLing 是脱机 I/O 系统。
3. 磁盘高速缓冲区是设在磁盘上的一块磁盘空间。
4. 系统为所有设备配置了一张设备控制表,用于记录设备的特性以及 I/O 控制器连接的情
况。
5. 设备分配算法主要有先来先服务和响应时间快者优先两种。
67 68
6. 只有引入通道后, CPU 计算与 I/O 操作才能并行执行。
7. 磁盘移臂调度的目标是使磁盘旋转的周数最小。
8. 通道又称 I/O 处理机,它实现内存和外设之间的信息传输,并与 CPU 并行工作。
9. 最短寻道时间优先( SSTF )算法的调度原则是要求磁头的移动距离最小,该算法有产生
饥饿 的可能。
10. 缓冲技术是借用外存储器的一部分区域作为缓冲池。
11. 固定头磁盘存储器的存取时间包括寻道时间和旋转延迟时间。
12. I/O 设备管理程序的主要功能是管理内存、控制器和通道。
13. 磁盘扇区的编号必须连续。
14. 引入缓冲的主要目的是为了提高 I/O 设备的利用率。
15. 等待设备的进程队列有时不必以先来先服务的顺序排队。
【解析】
1. 错误。设备独立性是指用户编写的应用程序独立于具体使用的物理设备;这样,即使
更换了物理设备而应用程序也无须改变。
2. 错误。 SPOOLing 是假脱机系统。
3. 错误。磁盘高速缓冲区是设在内存中的一个区域。
4. 错误。系统为每一个设备配置了一张设备控制表用于记录设备的特性以及与设备控制
器连接的情况。
5. 错误。设备分配算法主要有先来先服务和优先级高者优先两种。
6. 错误。程序中断 I/O 控制方式、 DMA 控制方式都可以实现 CPU 计算与 I/O 操作的并行,
只不过引入通道后, CPU 计算与 I/O 操作的并行程度大为提高。
7. 错误。移臂调度的目标是使移臂的时间最短。
8. 正确。
9. 正确。最短寻道时间优先移臂调度算法侧重于减少磁头移动的距离。如果有一些进程
陆续不断地提出 I/O 操作的请求,且这些请求总是在距离当前磁头较近的一些柱面的物理块
上,那么最短寻道时间优先调度算法将导致距离磁头较远的一些 I/O 操作请求迟迟得不到服
务,即产生“饥饿”现象。
10. 错误。缓冲技术是借用内存的一个区域来作为缓冲池,它与 SPOOLing 通过磁盘上的
输入井与输出井来实现预输入与缓输出不同,不能将两者搞混。
11. 错误。固定头磁盘上每个磁道上都有一个读写磁头,因此不需要寻道,故无寻道时间。
12. 错误。 I/O 设备管理程序管理的是设备、控制器和通道,但不包括内存。
13. 错误。磁盘扇区的编号通常不连续。
14. 错误。引入缓冲的主要目的是解决 CPU I/O 设备之间速度不匹配的矛盾。
15. 正确。由于设备分配算法还有优先级高者优先,即等待设备的进程队列也可按优先级
排队。
. 简答题解析
1. 在设备管理中,何谓设备独立性?如何实现设备独立性?
【解答】 设备独立性又称设备无关性,它体现在两个方面:
1 )从程序设计的角度看各种设备所体现的接口都是一致的。也即,在程序中可以使用
同样的命令去读不同设备上的数据,也可以用同样的命令将输出的数据送到不同的设备上。
而这些不同设备之间的差异由操作系统来处理,即呈现在用户程序中的设备都是相同的。
2 )操作系统对所有的设备及设备操作都采取统一方式进行管理。由于不同设备之间的
差异,用软件实现时很难达到真正的一致。一般采用层次和模块化思想来实现设备管理子系 统。低层的程序用来屏蔽设备的具体细节,而高层软件则将各类不同设备的操作都以相同的
界面提供给用户。与设备无关性紧密相关的是统一以逻辑名来命名设备。
设备独立性是指用户程序独立于所使用的具体物理设备。也即,用户通过使用逻辑设备
名来访问设备,而并不直接和具体设备打交道。为了实现设备的独立性,系统应为每个用户
进程配置一张用于联系逻辑设备名和物理设备名的映射表,以根据当前的实际情况实现逻辑
设备名到具体设备的映射。
2. I/O 控制可用哪几种方式实现?各有何优缺点?
【解答】 I/O 控制方式有 4 种,即程序直接 I/O 控制方式、程序中断 I/O 控制方式、 DMA
控制方式和 I/O 通道控制方式,它的各自的优缺点如下:
1 )程序直接 I/O 控制方式。优点是控制简单,也不需要很多硬件支持。缺点是 CPU
外部设备之间只能串行工作,且 CPU 的大部分时间都处于循环测试状态,这使得 CPU 的利
用率大为降低。由于 CPU 在一段时间内只能与一台外部设备交换数据,因此不能实现设备
之间的并行工作。此外,程序直接 I/O 控制方式通过测试设备的状态标志来控制数据的传送,
所以无法发现和处理因设备或其他硬件所产生的错误。因此,程序直接 I/O 控制方式只适用
于那些 CPU 执行速度较慢且外部设备不多的系统。
2 )程序中断 I/O 控制方式。优点是能够实现 CPU 与设备之间、设备与设备之间的并行
操作, CPU 的利用率较程序直接 I/O 控制方式大为提高。缺点是 I/O 控制器的数据缓冲寄存
器通常较小,且数据缓冲寄存器每当装满数据时都会发出中断,这使得完成一次数据传送发
生的中断次数过多而耗费大量的 CPU 时间。如果系统配置的外部设备较多且都采用中断 I/O
控制方式进行并行操作,则将消耗大量的 CPU 时间且有可能因 CPU 来不及处理而造成数据
丢失。
3 DMA 控制方式。与中断 I/O 控制方式相比, DMA 控制方式的优点是在一个数据块
的数据传送完成后中断一次 CPU ,从而减少了 CPU 中断处理的次数,并且 DMA 控制方式
下的数据传送是在 DMA 控制器控制下完成的,在每个数据块的传送过程中无须 CPU 干预,
而是在每个数据块传送完毕后发出中断;显然, DMA 控制方式的效率要高的多。缺点是
DMA 控制仍有一定的局限性,即每传送完一个数据块都要向 CPU 发出中断,这使得在每个
数据块传送结束时 CPU 需要来回切换实现与外部设备的并行操作,因此效率仍不够高;此
外,对外部设备的管理仍然需要由 CPU 完成,并且使用多个 DMA 控制器也不够经济。
4 I/O 通道控制方式。通道是一个专管 I/O 工作的处理机。 I/O 通道控制的优点是 CPU
只需发出 I/O 指令,通道就能完成相应的 I/O 操作,并且在整个数据传送操作结束时向 CPU
发出中断。由此可见, CPU 仅在 I/O 操作开始和结束时花较短的时间处理与 I/O 有关的事宜,
而其余时间都与通道并行工作。采用了通道技术后,不仅实现了 CPU 与通道的并行工作,
而且通道与通道之间也实现了并行操作。此外,一个通道还可以控制多台外部设备,从而极
大的提高了整个计算机系统资源的利用率。缺点是通道价格较高,从经济角度考虑则不宜过
多使用。
3. 什么是 DMA 方式?它与中断方式的主要区别是什么?
【解答】 DMA 控制方式也称直接内存存取方式,其特点是外部设备在 DMA 控制器支持下
直接与内存交换数据,每次交换可以传送一个数据块,在每个数据块的传送期间无须 CPU
的干预。 DMA 控制方式下的地址总线和数据总线以及一些控制信号线都是与 CPU 共用的。
平时这些总线和控制信号线由 CPU 管理使用,当采用 DMA 进行直接内存数据交换时, DMA
采取挪用 CPU 的工作周期和 DMA 控制器总线控制权的方法,由 DMA 控制器接管 CPU
管理的总线,然后由 DMA 控制器控制外部设备与内存之间的成批数据传送,在所有数据传
送完成后由 CPU 回收总线控制权。
DMA 控制方式与中断 I/O 控制方式的主要区别如下:
69 1 )中断 I/O 控制方式在每个单位数据(字或字节)传输结束后发中断,而 DMA 控制
方式是在一个数据块传输完毕后发中断。
2 )中断 I/O 控制方式的数据传送是在中断处理时由 CPU 控制完成的,而 DMA 控制方
式则是在 DMA 控制器的控制下完成的。不过在 DMA 控制方式中,数据传送的方向、存放
数据的内存始地址以及传送数据的长度等仍然由 CPU 控制。
4. 为什么要在设备管理中引入缓冲技术?操作系统如何实现缓冲技术?
【解答】 在设备管理中引入缓冲技术的原因如下:
1 )缓解 CPU I/O 设备之间速度不匹配的矛盾。我们以打印机为例,如果没有缓冲,
则程序在输出时必然因打印机的速度跟不上而使 CPU 停下来等待;而在 CPU 计算时,打印
机又因无数据输出而闲置。如果设置了缓冲区,则程序可以将输出的数据先输出到缓冲区然
后继续运行,而打印机则可以从缓冲区中取出数据慢慢地打印,从而使 CPU I/O 设备之
间速度不匹配的矛盾得到一定的缓解。
2 )减少中断次数和 CPU 的中断处理时间。如果没有缓冲,则慢速 I/O 设备每传送一个
字节的数据都要产生一次中断,且 CPU 必须处理这个中断。如果采用缓冲技术,则慢速 I/O
设备可以一个字节一个字节的不断进行数据传递直到缓冲区中的数据传送完或者放满时才
发出一个中断。因此,缓冲区的设置减少了中断次数和 CPU 的中断处理时间。
3 )解决了 DMA 控制方式或 I/O 通道控制方式下数据传送的瓶颈问题。 DMA 控制方式
I/O 通道控制方式都适合于成批数据传送,而无缓冲下的慢速设备却只能一个字节一个字
节的传递数据;这造成了 DMA 控制方式或 I/O 通道控制方式传输的瓶颈,而缓冲区的设置
恰好满足了 DMA 控制方式或 I/O 通道方式的成批数据传送方式,解决了数据传输的瓶颈问
题。
现代操作系统除了在关键地方采用少量硬件缓冲外,大多采用软件缓冲。所谓软件缓冲
是指在内存中划出一定的区域作为缓冲区。操作系统将系统内的所有输入缓冲区和输出缓冲
区统一管理起来,就形成了既能用于输入又能用于输出的缓冲池。缓冲池通常由若干个大小
相同的缓冲区组成,任何进程都可以使用缓冲池。缓冲池由操作系统管理并分为 3 个队列:
空缓冲区队列、装满输入数据的缓冲区队列和装满输出数据的缓冲区队列。 3 个队列的示意
如图 5-1 所示。
5-1 缓冲池示意
当输入设备要输入数据时,从空缓冲区队列上取下一个空缓冲区,待装满输入数据后将
其挂入到输入数据队列。当 CPU 需要处理输入数据时,就从输入数据队列取下一个数据缓
冲区进行数据处理,处理完该缓冲区数据后又将其挂入到空缓冲区队列。
CPU 要输出结果时,从空缓冲区队列上取下一个空缓冲区,待装满输出数据后将其
挂入到输出数据队列。当输出设备要输出结果时,从输出数据队列取下一个数据缓冲区进行
数据输出,输出完后再将该缓冲区挂入到空缓冲区队列。
5. 何谓虚拟设备?请说明 SPOOLing 系统是如何实现虚拟设备的。
【解答】 操作系统利用共享设备来模拟独占设备的工作,当系统只有一台输入设备或一台
输出设备的情况下,可以允许两个以上的作业(进程)并行使用输入设备或输出设备,并且
每个作业(进程)都感觉到自己在独占使用这个输入设备或输出设备;我们称这种经过操作
系统虚拟技术处理后的设备为虚拟设备。
SPOOLing 技术借助于磁盘和通道实现了独占设备 I/O 过程的共享。当用户提出 I/O
求时系统能够及时响应,这时用户就会认为他已经独占了这台 I/O 设备。但事实上是多个作
业(进程)共享该 I/O 设备。例如,打印机是独占输出设备,在 SPOOLing 系统中,第一道
70 作业(进程)提出了打印申请得到响应后正在打印机上输出(真正的输出);此时第二道作
业(进程)提出打印请求,系统响应后将输出结果送入磁盘输出井保存(此时用户感觉正在
打印输出),待第一道作业(进程)打印结束后,第二道作业(进程)再由输出井将暂存的
打印结果送到打印机上输出。同样,如果有第三道、第四道作业(进程)也要打印输出,则
都是先将输出结果送到磁盘输出井保存,待打印机空闲后再依次输出,使得这些作业(进程)
的用户感觉他们都在独占使用打印机,这种做法实际上是由 SPOOLing 系统将一台物理打印
机虚拟为多台逻辑打印机来供用户使用。
6. 为什么设备分配不能采用时间片轮转法?
【解答】 设备分配不能采用时间片轮转分配算法的原因如下:
1 )有些设备的固有特性决定了不能采用时间片轮转分配算法,比如打印机,几个进程
按时间片轮转使用时必然会造成打印的结果混乱。
2 I/O 设备的速度普遍比 CPU 慢, I/O 设备之间来回切换的开销也很大,如果采用时
间片轮转分配算法,会导致大量的时间浪费在 I/O 设备的启动和切换上。
3 )由于各个 I/O 设备之间的数据传输速率差别较大,时间片轮转分配算法中时间片的
大小不好确定。如磁盘的数据传输速率和打印机的打印速率就相差很多,如果统一把时间片
定得很小,则会有大量的时间浪费在设备的切换上,而打印机之类速度慢的设备就很难完成
打印任务;如果统一把时间片定得很大,那么时间片轮转分配算法就和先来先服务分配算法
没有区别。
7. 试论述磁盘调度中电梯算法的基本思想和实现方法。
【解答】 电梯算法同时考虑两个条件作为优先准则:既考虑申请访问磁盘的进程要求磁头
移动的方向,又考虑要求磁头移动的距离。两个条件首先是方向一致,其次才是距离最短。
实现电梯算法的规则如下:
1 )申请访问磁盘的进程分成两个队列,即向上扫描(由小到大)等待队列和向下扫描
(由大到小)等待队列。
2 )磁头臂向上运动时调用向上扫描等待队列,向下运动时调用向下扫描等待队列。
3 )申请访问磁盘的进程所访问的柱面号大于当前柱面号时加入到向上扫描等待队列,
反之则加入到向下扫描等待队列。
4 )向上扫描等待队列的调度原则是柱面号小者优先,向下扫描等待队列的调度原则是
柱面号大者优先。
5 )如果当前调度的扫描等待队列为空,则改变扫描方向。
. 应用题解析
1. 设备管理需要哪些基本数据结构?作用是什么?试描述一个进程从申请设备到释放设
备的完整流程(设:系统为每类设备分别设置不同的驱动程序。要求:流程要包括 I/O 请求、
设备驱动、 I/O 结束处理 3 部分内容)。
【解析】 设备管理需要的基本数据结构如下:
1 )系统设备表( SDT ):记录系统中全部设备的情况,每个设备占一个表目,包括设备
类型、设备标识符、设备控制表、设备驱动程序入口等。
2 )设备控制表( DCT ):系统为每个设备配置一张设备控制表,用于记录本设备的情况,
如设备类型、设备标识号、设备状态、设备队列、控制器表等。
3 )控制器控制表( COCT ):系统为每个控制器设置一张用于记录本控制器情况的控制
器控制表。
4 )通道控制表( CHCT ):在配有通道控制器系统的设备管理中,通道控制表用来记录
通道的特性、状态及其他管理信息。
71 一个进程从申请设备到释放设备的流程如下:
1 )用户进程申请设备流程如图 5-2 所示:
5-2 进程申请设备流程图
2 )设备驱动程序流程如图 5-3 所示。
5-3 设备驱动程序流程图
3 I/O 结束处理流程如图 5-4 所示。
5-4 I/O 结束处理流程图
2. I/O 软件一般分为 4 个层次,用户级、与设备无关软件、设备驱动程序以及中断处理程
序。请说明以下各工作是在哪一层完成的?
1 )向设备寄存器写命令。
2 )检查用户是否有权使用设备。
3 )将二进制整数转换成 ASCII 码以便打印。
【解析】 I/O 系统的软件层次结构示意如图 5-5 所示。
72 73
5-5 I/O 系统的软件层次结构示意图
由图 5-5 可知:
1 )向设备寄存器写命令是在设备驱动程序层完成的。
2 )检查用户是否有权使用设备属于设备保护,是在设备无关软件层完成的。
3 )将二进制数转换成 ASCII 码以便打印是在用户层(级)完成的。
3. 当前磁盘读写位于柱面号 20 ,此时有多个磁盘请求以下列柱面号并顺序送至磁盘驱动
器: 10 22 20 2 40 6 38 。寻道时移动一个柱面需要 6ms ,按下列 3 种算法计算所需
寻道时间(柱面移动顺序及总寻道时间,忽略到达指定柱面后确定盘面号的时间)。
1 )先来先服务
2 )最短寻道时间优先
3 )电梯算法(当前状态由小磁道号到大磁道号)。
【解析】( 1 )先来先服务。先画出磁头在盘面上的寻道(即移动柱面)轨迹,如图 5-6 所示。
5-6 先来先服务磁头寻道轨迹
寻道时间= (20 10 22 10 22 2 40 2 40 6 38 6 6 876ms
2 )最短寻道时间优先。画出磁头寻道轨迹如图 5-7 所示。
5-7 最短寻道时间优先磁头寻道轨迹
寻道时间= (22 20 22 10 10 6 6 2 38 2 40 38 6
(22 20 22 2 40 2 6 360ms
3 )电梯算法。画出磁头寻道轨迹如图 5-8 所示。
5-8 电梯算法磁头寻道轨迹
寻道时间= (22 20 38 22 40 38 40 10 10 6 6 2 6
(40 20 40 2 6 348ms
6 章 文件管理
. 单项选择题解析
1. 文件系统的主要目的是
A .实现对文件的按名存取 B .实现虚拟存储
C .提高外存的读写速度 D .用于存储系统文件
【解析】 现代操作系统基本上都有文件系统,用来协助用户对信息的存取和管理,使得用
户按文件名存取文件信息变得更加方便。本题答案为 A
2. 下列文件中属于逻辑结构的文件是 74
A .连续文件 B .系统文件 C .哈希文件 D .流式文件
【解析】 属于逻辑结构的文件有两种:一种是无结构的流式文件,另一种是有结构的记录
式文件。本题答案为 D
3. 在记录式文件中,一个文件由称为 的最小单位组成。
A .物理文件 B .物理块 C .逻辑记录 D .数据项
【解析】 记录式的有结构文件是指用户文件内的信息是按逻辑上独立的含义进行划分的信
息单位,每个单位称为一个逻辑记录,即记录式文件是由逻辑上独立含义划分的最小信息单
—— 逻辑记录所构成的序列。本题答案为 C
4. 文件系统用 组织文件。
A .堆栈 B .指针 C .目录 D .路径
【解析】 现代计算机系统中存储着大量的文件,为了对这些文件进行有效的管理,需要将
它们按一定的方式组织起来,操作系统通过使用文件目录来达到组织文件的目的。本题答案
C
5. 下面说法正确的是
A .连续文件适合于建立在顺序存储设备上而不适合于建立在磁盘上
B .索引文件是在每个物理块中设置一链接指针将文件的所有物理块链接起来
C .连续文件必须采用连续分配方式,而串联文件和索引文件都可采用离散分配方式
D .串联文件和索引文件本质上是相同的
【解析】 连续文件既适合建立在顺序存储设备上,也适合建立在随机存储设备 —— 磁盘上。
索引文件是通过一张索引表来记录该文件占用的所有物理块号。串联文件是在每一个物理块
中设置一个指针指向顺序的下一个物理块位置,从而使同一个文件中的各物理块按逻辑顺序
链接起来。连续文件的特点是逻辑上连续的文件信息依次存放在物理上相邻的若干物理块
中;而串联文件和索引文件由于采用了指针和索引表,因此可以采用离散方式为文件分配外
存空间。本题答案为 C
6. 存放在磁盘上的文件
A .既可以随机访问又可以顺序访问 B .只能随机访问
C .只能顺序访问 D .必须通过操作系统访问
【解析】 磁盘文件既可以随机访问又可以顺序访问。本题答案为 A
7. 位示图方法可用于
A .磁盘空间的管理 B .磁盘的驱动调度
C .文件目录的查找 D .页式虚拟存储管理中的页面调度
【解析】 位示图方法既可用于内存空间管理又可用于外存的磁盘空间管理。本题答案为 A
8. 下面说法正确的是
A .文件系统负责文件存储空间的管理但不能实现文件名到物理地址的转换
B .在多级目录结构中对文件的访问是通过路径名和用户目录名进行的
C .文件可以被划分成大小相等的若干物理块且物理块大小也可以任意指定
D .逻辑记录是对文件进行存取操作的基本单位
【解析】 文件系统负责文件存储空间的管理且能实现文件名到物理地址的转换。在多级目
录结构中对文件的访问是通过路径名和文件名进行的。文件可以被划分成大小相等的若干物
理块但物理块是系统已事先已规定好的一个固定大小区域。逻辑记录是对文件进行存取的基
本单位。本题答案为 D
9. 文件的物理组织方式是由 确定的。
A .应用程序 B .内存容量 C .外存容量 D .操作系统
【解析】 通常用户可以根据需要来确定文件的逻辑结构,而文件的物理结构则是由操作系 75
统的设计者根据文件存储器的特性事先确定好,并由操作系统管理。本题答案为 D
10. 有些操作系统中将文件描述信息从目录项中分离出来,这样做的好处是
A .减少读文件时的 I/O 信息量 B .减少写文件时的 I/O 信息量
C .减少查找文件时的 I/O 信息量 D .减少复制文件时的 I/O 信息量
【解析】 为了加快文件的查找速度,有些操作系统(如 UNIX )采用了将文件名和文件的
其他信息分开存储的方法,即将文件除了文件名以外的其他信息保存在一个单独的数据结构
中,该数据结构称为索引节点。引入索引节点后,每个文件的目录项可以只保留文件名和指
向该文件对应索引节点的指针。这种仅在目录项中保留文件名和索引节点指针的方法将显著
减少查找文件的时间开销。本题答案为 C
11. 文件系统中若文件的物理结构采用连续分配方式,则文件控制块 FCB 中有关文件的物
理位置的信息应包括
① 首个物理块地址 ② 文件的长度(物理块个数) ③ 索引表地址
A .③ B .①和② C .②和③ D .①和③
【解析】 在文件连续分配方式中, FCB 包含该文件首块地址(第一个物理块号)和文件长
度(物理块个数);只有索引分配方式中的 FCB 才包含索引表地址。本题答案为 B
12. 在有随机存取需求和文件长度动态增长的情况下,宜选择 方式。
A .索引分配 B .连续分配 C .链接分配 D A C 都不对
【解析】 连续分配具有随机存取功能,但不便于文件长度的动态增长。链接分配便于文件
长度的动态增长,但不具有随机存取功能。索引分配既具有随机存取功能,又便于文件长度
的动态增长。本题答案为 A
13. 在下列文件的物理结构中,不便于文件内容增删的是
A .连续文件 B .链接文件 C .索引文件 D .哈希( Hash )文件
【解析】链接文件和索引文件中的物理块采用离散存储而连续文件中的物理块为连续存储。
因此,链接文件和索引文件便于增、删,而连续文件则不便于增、删。本题答案为 A
14. 下面不适合于直接存取的外存分配方式是
A .连续分配 B .链接分配 C .索引分配 D A C 都适合
【解析】 直接存取即为随机存取。采用连续分配和索引分配的文件都适合于直接存取,只
有采用链接分配的文件不具有随机存取特性。本题答案为 B
15. 在磁盘上容易导致外存碎片发生的物理文件结构是
A .链接文件 B .连续文件 C .索引文件 D .索引和链接文件
【解析】 为连续文件分配连续的存储空间容易出现外存碎片,即随着连续文件存储空间的
不断分配与回收,将导致磁盘上出现一些再也无法分配的小存储区,如仅有一、两个物理块
的存储区。本题答案为 B
16. 在文件系统中,文件访问控制信息存储的合理位置是
A .文件控制块 B .文件分配表 C .用户口令表 D .系统注册表
【解析】 文件控制块( FCB )包含文件访问控制信息。本题答案为 A
17. 一个文件系统中,其文件控制块 FCB 64B ,一个盘块大小为 1KB ,采用一级目录。
假定文件目录有 3200 个目录项,问查找一个文件平均需要 次访问磁盘。
A 50 B 54 C 100 D 200
【解析】 3200 个目录项占用的盘块数= 320 64B 1KB 200 个。因为一级目录平均访
盘次数= 1/2 盘块数(顺序查找目录表中的所有目录项,每个目录项为一个文件控制块 FCB
则平均查找的次数约为一半目录项),所以平均访问磁盘次数= 200/2 100 次。本题答案为
C
18. 文件系统采用两级索引分配方式,如果每个物理块的大小为 1KB ,每个物理块号占 4 个字节( 4B ),则该系统中单个文件允许的最大长度是
A 64MB B 128MB C 32MB D A C 都不对
【解析】 每个物理块最多可以有 1KB/4B 256 个索引项,则两级索引分配方式下单个文件
的最大长度= 256 × 256 × 1KB 64MB 。本题答案为 A
19. 设有一个记录式文件采用链接分配方式,逻辑记录的固定长度 100 字节,在磁盘上存
储时采用记录成组分解技术,物理块(盘块)长度为 512 字节。如果该文件的目录项已经读
入内存,要修改第 22 个逻辑记录共需启动磁盘 次。
A 1 B 2 C 5 D 6
【解析】 第 22 个逻辑记录对应第 4 22 × 100/512 4 152 )个物理块,即读入第 5 个物
理块的数据。由于文件采用的物理结构是链接文件,因此需要从目录项所指的第一个物理块
开始读取,依次读到第 4 块才能得到第 5 块的物理地址,然后读入第 5 块中的数据,故需要
启动 5 次磁盘。本题答案为 C
20. 文件的存储空间管理实质上是对 组织和管理。
A .文件目录 B .外存已分配区域 C .外存空闲区 D .文件控制块
【解析】 文件存储空间的管理实质上是对外存空闲区的管理。本题答案为 C
21. 文件记录的成组与分解是为了
A .缩短查找文件的时间 B .提高外存的利用率
C .提高内存的利用率 D A C 都不对
【解析】 文件记录的成组和分解是为了提高外存的利用率和减少启动 I/O 的次数。本题答
案为 B
22. 使用绝对路径名是从 开始按目录结构访问某个文件。
A .当前目录 B .用户主目录 C .根目录 D .父目录
【解析】 使用绝对路径名是从根目录开始查找文件,使用相对路径名则是从当前目录开始
查找文件。本题答案为 C
23. 设置当前工作目录的主要目的是
A .节省外存空间 B .节省内存空间
C .加快文件的检索速度 D .加快文件的读写速度
【解析】 在设置了当前工作目录后,文件查找在默认情况下是由当前目录开始查找,从而
提高了文件的查找速度。本题答案为 C
24. 目录文件所存放的信息是
A .某一个文件存放的数据信息 B .某一文件的文件目录
C .该目录中所有数据文件目录 D .该目录中所有子目录文件和数据文件的目录
【解析】 目录文件所存放的信息是该目录中所有子目录文件和数据文件目录。本题答案为
D
25. 位示图可用于磁盘空间的管理。设某系统磁盘共有 500 块,块号为 0 499 ,第 0 行的
0 位表示第 0 块,第 0 行的第 1 位表示第 1 块,以此类推。若用位示图管理这 500 块的磁
盘空间,当字长为 32 位时,第 i 个字节第 j 位对应的块号是
A 3 i j B 3 i j 1 C 3 i j 32 D 3 i j 32 1
【解析】 n 32 ,第 i 个字节第 j 位的块号,即前面有 0 i 1 行,共 i 行,每行 n 位,并
且第 i 行有 j 位,所以对应的块号为:n× i j 3 i j 。本题答案为 A
26. 操作系统为保证未经文件所有者授权则任何其他用户不得使用该文件的解决方法
A .文件保护 B .文件加密 C .文件转储 D .文件共享
【解析】 文件保护的直接需求是文件系统只允许合法访问的结果,即禁止未经文件所有者
76 77
授权的其他用户访问该文件。本题答案为 A
27. 为了实现对文件 F 的共享,可由系统创建一个 link 类型的新文件,且新文件中只包含
被链接文件 F 的路径名,则这种文件共享方式是
A .基于索引节点的文件共享 B .利用符号链实现的共享
C .绕道法实现的共享 D .链接法实现的共享
【解析】 基于索引节点的文件共享是将两个文件目录表项中的指针指向同一个索引节点;
绕道法通过用户指定共享文件的访问路径实现文件共享;链接法将文件目录的链接指针指向
共享文件来实现文件共享;利用符号链则按本题的方式实现文件共享。本题答案为 B
【解析】
28. 为防止系统故障造成文件被破坏,通常采用的方法是
A .存取控制矩阵 B .定时转储文件 C .设置口令 D .密码转换
【解析】 通常采用定时转储文件的方式来防止系统故障对文件造成的破坏。本题答案为 B
. 判断题解析
1. 同一文件在不同的存储介质上应该用相同的组织方式。
2. 可顺序存取的文件不一定能随机存取,但可随机存取的文件都能顺序存取。
3. 关闭文件操作要释放文件所占用的外存空间。
4. 采用多级树形结构的文件系统,各用户使用的文件必须定义不同的文件名。
5. 文件的物理结构是指文件在外存上的存放形式。
6. 文件的索引表全部存放在文件控制块 FCB 中。
7. 文件目录必须常驻内存。
8. 在文件系统中,打开文件是指创建一个文件控制块。
9. 任何用户都可以关闭文件。
10. 链接文件只能采用顺序存取,不能采用随机存取。
11. 索引文件既适合顺序存取,又适合随机存取。
12. 文件存取空间管理中的空闲分区表法,适合于连续文件且不会产生碎片。
13. 用位示图管理磁盘空间时,一位表示磁盘上一个字的分配情况。
14. 如果用户频繁地访问当前目录中的文件,则应将该目录放入内存。
15. 在文件较大时,无论是进行顺序存取还是随机存取,都以索引文件方式最快。
【解析】
1. 错误。同一文件在不同存储介质上应该采用不同的组织方式。
2. 正确。如链接文件可以顺序存取,但不能随机存取。连续文件可随机存取,也可顺序
存取。
3. 错误。文件关闭仅是撤消该文件在内存活动文件表中的目录,即不再保留内存与该文
件的通道。文件删除才是真正释放该文件所占用的外存空间,即该文件不再存在。
4. 错误。采用多级树形结构的文件系统,只要不在同一目录下都可以定义相同的文件名。
5. 正确。文件在外存上具体的存储和组织形式称为文件的物理结构。
6. 错误。一个 FCB 就是一个文件目录项。在引入索引节点后,每个文件的目录项只保留
文件名和指向该文件对应的索引节点指针,而索引节点的有关信息则存储于索引表中。
7. 错误。仅当前使用的那些文件目录驻留内存。
8. 错误。在文件创建时即为该文件创建一个文件控制块 FCB ,打开文件是建立起文件与
用户之间的联系。
9. 错误。只有文件的建立者和打开者才有权关闭文件。
10. 错误。链接文件也可以采用随机存取,但用顺序存取方式是高效的,而随机存取方式 78
则是低效的。
11. 正确。由于系统为每一个索引文件建立了一个索引表,因此,索引文件既适合顺序存
取,也适合随机存取。
12. 错误。用空闲分区表法为连续文件分配外存空间是合适的,但通常对这种需要连续空
间存储的文件都容易产生外存碎片(如内存管理中分区分配也容易产生外部碎片)。
13. 错误。用位示图管理磁盘空间时,一位表示磁盘上一个物理块的分配情况,因为磁盘
分配的基本单位是物理块。
14. 正确。如果用户频繁地访问当前目录中的文件,则应将该目录放入内存的内存活动文
件表中,以此来减少访问外存的次数。
15. 错误。当文件较大时,索引文件的索引可能要分成多级索引,这无疑降低了文件存取
的速度。
. 简答题解析
1. 什么是文件?它包含哪些内容及特点?
【解答】 文件是信息的一种组织形式,是存储在外存上具有文件名的一组相关信息的集合。
文件的特点如下:
1 )具有保存性。文件被存储在某种存储介质上长期保存并多次使用。
2 )按名存取。每个文件有唯一的文件名,并通过文件名来存取文件的信息而无需知道
文件在外存的具体存储位置。
3 )一组信息集合。文件的内容(即信息)可以是一个源程序、一个可执行的二进制程
序、一篇文章、一首歌曲、一段视频、一张图片等。
2. 文件系统必须完成哪些工作?
【解答】 文件系统必须完成的工作如下:
1 )文件存储空间的管理。基本任务是为文件分配和回收外存空间,即记住哪些外存空
间已被占用,哪些外存空间是空闲的。
2 )文件名到外存物理地址的映射。对用户透明地实现文件名到文件存储的物理地址映
射。实现按名存取。
3 )文件和目录的操作管理。实现文件和目录的建立、删除、打开、读、写、修改、关
闭、检索等操作功能。
4 )文件的组织与存取。当用户要求保存文件时,必须把逻辑文件转换成物理文件;当
用户要求读文件时,必须把物理文件转换成逻辑文件。并且能够实现文件的顺序存取和随机
存取。
5 )实现文件的共享、保护和保密。文件系统提供的文件共享功能,使多个用户可以同
名或异名使用同一个文件。文件系统提供的安全、保密和保护措施,可以防止对文件信息的
无意或有意的破坏。
6 )文件和目录的用户接口。文件系统为用户提供了操作文件和目录的接口,使用户能
够方便地对文件和目录进行诸如建立、检索、删除之类的各种操作。
3. 什么是逻辑文件?什么是物理文件?
【解答】 用户看到的文件称为逻辑文件,逻辑文件的内容(数据)可由用户直接处理,它
独立于文件的物理特性。逻辑文件是以用户观点并按用户 思维 把文件抽象为一种逻辑结构
清晰、使用简便的文件形式供用户存取、检索和加工文件中的信息。
物理文件是按照某种存储结构实际存储在外存中的文件,它与外存介质的存储性能有
关;操作系统按文件的物理结构管理文件并与外存设备打交道。
4. 简述文件的外存分配中连续分配、链接分配和索引分配各自有什么主要优缺点。 【解答】 ( 1 )连续分配方式的优点是容易顺序访问且顺序访问的速度快;缺点是要求有连
续的存储空间,易产生碎片而导致磁盘空间的利用率低,并且需要事先知道文件的长度而不
利于文件的增长和扩充。
2 )链式分配方式的优点是不要求连续的存储空间而能较好的利用磁盘空间,无需预先
知道文件的长度,有利于文件的增长和扩充;缺点是适合顺序访问而不适合随机访问,并且
链接指针要占用一定的存储空间导致存储效率降低且可靠性较差。
3 )索引分配方式的优点是既支持顺序访问也支持随机访问,查找效率高,便于文件删
除;缺点是当文件较大时其索引表也较大,会占用不少存储空间。
5. 文件目录和目录文件各起什么作用?目前广泛采用的目录结构形式是哪种,它有什么优
点?
【解答】 文件目录又称文件控制块( FCB ),它记录文件的名字、文件长度、文件存放在外
存上的物理地址,以及文件的属性和文件建立的时间、日期等信息。文件系统把同一卷标下
的若干文件的文件目录和子目录信息组成一个独立的文件,这个全部由文件目录和子目录组
成的文件称为目录文件。
文件目录和目录文件是两个不同的概念:文件目录记录有关文件的管理信息,它用于对
单个文件的控制;目录文件是由全部文件目录组成的文件,它用于整个文件系统的管理。
文件目录结构通常有 3 种形式:一级目录、二级目录和多级树形目录。一级目录结构易
于实现,管理简单,但文件个数较多时查找时间较长且不允许文件重名。二级目录由主目录
和用户文件目录两级目录组成,可以解决文件重名问题并可获得较高的查找速度,但二级目
录结构缺乏灵活性,无法反映现实世界的复杂文件结构形式。多级树形目录是二级目录层次
关系的推广。
目前广泛采用的目录结构形式是树形目录结构,它的主要优点是:检索效率高、允许文
件重名,确切反映了信息的层次结构,并且可以利用层次结构实现文件的共享与保护。
6. 使用文件系统时,通常要显式地进行打开( OPEN )和关闭( CLOSE )操作。
1 )这样做的目的是什么?
2 )能否取消显示的打开、关闭操作?应如何做?
3 )取消显示的打开、关闭操作有什么问题?
【解答】 ( 1 )显式的打开( OPEN )文件操作完成文件的打开功能。当用户进程访问一个
文件时,系统首先检索目录文件并按指定的文件名查找该文件的目录信息。打开文件操作就
是按指定的文件名检索目录文件,把找到的目录项基本信息送入内存的文件控制块( FCB
保存,并在内存活动文件表中登记打开的文件名及其 FCB 地址。此后,每次访问该文件时,
就无需再查找外存中的目录文件,而是直接根据内存中该文件的 FCB 进行访问,从而加快
了访问速度。
显式的关闭( CLOSE )文件完成文件的关闭操作。当一个文件不再被访问时,就可以
关闭该文件。关闭文件操作就是切断该文件与内存的联系,即释放该文件在内存中的 FCB
撤销该文件在内存活动文件表中登记的有关信息。如果此次打开文件改变了目录项基本信息
(在 FCB 中),则还应将改变的信息写回外存目录文件中该文件对应的目录项。
因此,显式进行 OPEN CLOSE 操作主要是提高了资源的利用率,另一方面也保证了
数据的安全(对延迟写系统不至于使数据丢失)。
2 )可以取消显式的 OPEN CLOSE 操作。如果取消了 OPEN CLOSE 操作,系统
在进行文件操作前需判断文件是否已打开,若未打开则自动完成文件的打开功能以建立用户
与文件之间的联系。此外,系统结束时还应关闭所有被打开的文件(如 FCB 内容有改动还
需写回外存的目录文件)。
3 )取消显式的 OPEN CLOSE 操作使得文件的读写操作变得复杂,这是因为每次读
79 80
写文件前都需判断文件是否已被打开。此外,系统结束时还要做一些额外的工作以完成
CLOSE 所完成的操作。
7. 有哪些常用的文件存储空间管理方法,并说明其主要优缺点。
【解答】 文件存储空间的管理实质上是对外存中空闲块的组织和管理。有如下 3 种空闲块
管理方法:
1 )空闲分区表法。把外存中的空闲块号统一放在空闲分区表中,空闲分区表中的每个
表项对应一个由多个空闲块构成的空闲分区。空闲分区表管理方法简单,适用于连续文件的
存储区分配与回收。
2 )空闲块链法。把外存上所有空闲块链接在一起,从链首分配空闲块,而回收的空闲
块则插入到链尾。该方法不占用额外空间,但实现较复杂。
3 )位示图法。从内存中划出若干字节,每个二进制位对应一个物理块的使用情况。如
果该位为 0 ,则表示对应物理块的是空闲块;若该位为 1 ,则表示对应的物理块已分配出去。
位示图法查找空闲块时无需启动外部设备(外存),但要占用内存空间。
8. 文件存取控制方式有哪些?试比较它们的优缺点。
【解答】 文件存取控制方式有存取控制矩阵、存取控制表、口令和加密等 4 种方式。
1 )存取控制矩阵。以一个二维矩阵进行存取控制;其中,矩阵的一维是所有用户,而
另一维是所有文件,对应的矩阵元素则是用户对文件的存取控制权。存取控制矩阵方法在概
念上比较简单,但是用户和文件较多时则存取控制矩阵将变得非常庞大,即使用的时间和空
间开销都很大。
2 )存取控制表。以文件为单位把用户按某种关系划分为若干组,同时规定每组的存取
权限。这样,所有用户组对文件权限的集合就形成了该文件的存取控制表。存取控制表方式
占用空间较小,检索效率也较高,但因对用户分组而产生了额外的开销。
3 )口令。这里的口令是指用户创建新文件时设置的口令,而不是用户进入系统的口令。
当一个用户创建文件时,为每个新创建的文件设置了一个口令并将其置于文件说明(如 FCB
中。当任何一个用户需要使用该文件时都必须先提供口令进行验证。口令方式比较简单且占
用的内存单元及验证口令花费的时间都较少。不过,口令方式的保密性不强。
4 )加密。用户建立的文件在写入外存时进行加密,在读出文件时再进行译码解密。加
密方式具有保密性强的优点,但由于加密和解密工作要耗费较多的处理时间,即加密技术是
以牺牲系统开销为代价的。
9. 文件管理与内存管理有何异同点?
【解答】 文件管理与内存管理的异同点如下:
1 )主要任务。内存管理的主要任务是为多道程序的运行提供良好的环境,而外存管理的
主要任务是为文件系统提供存储空间。
2 )基本功能。内存管理的基本功能包括内存空间的分配、回收、内存保护及内存扩充,
而外存管理的基本功能则只是对外存空间的管理。
3 )分配方式。内存和外存管理中都可以采用连续分配方式,并且都以离散分配方式为主。
4 )分配算法与机制。对于连续分配方式,内存管理与外存管理中的分配与回收算法类似,
主要有首次适应算法和最佳适应算法等。在离散分配方式中,两者采用的机制不同,内存管
理主要利用的是页表、段表,而外存管理主要利用文件分配表或位示图等。
. 应用题解析
1. 设某文件为链接文件并由 5 个逻辑记录组成,每个逻辑记录的大小与磁盘物理块的大小
相等均为 512 字节,并依次存放在 50 121 75 80 63 号物理块上。若要存取文件的第
1569 逻辑字节处的信息,问要访问哪一个物理块? 【解析】 因为 1569 51 3 33 ,所以要访问物理块的逻辑记录号为 3 ,所对应的磁盘物
理块号为 80 ,故应该访问第 80 号磁盘物理块。
2. 设某文件系统采用两级目录结构,主目录中有 10 个子目录,每个子目录中有 10 个目录
项。在同样多的目录情况下,若采用单级目录结构所需平均检索目录项数是两级目录结构平
均检索目录项数的多少倍?
【解析】 根据题意,文件系统中共有 1 10 100 个目录。若采用单级目录结构,目录表
中有 100 个目录项,在检索一个文件时,平均检索的目录项数=目录项 /2 50 。采用两级目
录结构时,主目录有 10 个目录项,每个子目录均有 10 个目录项,每级平均检索 10/2 5
目录项,即检索一个文件时平均检索 5 5 10 个目录项,所以采用单级目录结构所需检索
目录项数是两级目录结构检索目录项数的 50/10 5 倍。
3. 某操作系统对外存分配采用混合索引分配方式,在索引节点中包含文件的物理结构数组
iaddr[12] ,其中前 10 iaddr[0] iaddr[9] 为直接地址, iaddr[10] 为一次间接地址, iaddr[11]
为二次间接地址。如果系统的逻辑记录大小是 4KB ,而磁盘的每个扇区(即物理块)也为
4KB 。描述磁盘扇区的数据项需要 4 字节,其中一个字节标识磁盘分区, 3 个字节标识物理
块。请问该文件系统支持的单个文件的最大长度是多少?
【解析】 磁盘物理块大小为 4KB ,每个物理块要 4 个字节标识,则一个物理块可以存放
4KB/4B=1K 个磁盘物理块号。
1 )采用直接地址的文件长度= 1 4KB 40KB
2 )采用一级间接地址的文件长度= 1K × 4KB 4MB
3 )采用二级间接地址的文件长度= 1K × 1K × 4KB 4GB
4 )该文件系统支持的单个文件的最大长度为 40KB 4MB 4GB
4. 假定一个盘组共有 100 个柱面,每个柱面有 16 个磁道,每个磁道分成 4 个扇区,问:
1 )整个磁盘空间共有多少个物理块?
2 )如果用字长为 32 位的单元来构造位示图,共需要多少个字?
3 )位示图中第 18 个字的第 16 位对应的块号是多少?
【解析】 ( 1 )整个磁盘空间的物理块个数=4× 1 100 6400 个。
2 )位示图应为 6400 个比特位,若用字长为 32 位的单元来构造位示图,则需要 6400/32
200 个字。
3 )位示图中第 18 个字的第 16 位(即 i 18 j 16) 对应的物理块号= 3 (18 1) (16
1) 559
5. 某文件占 10 个磁盘物理块,现要把该文件的物理块逐个读入内存缓冲区,并送入用户
区进行分析。假设一个缓冲区与一个物理块大小相同,把一个物理块读入缓冲区的时间为
100μs ,将缓冲区的数据送到用户区的时间是 50μs CPU 对一块数据进行分析的时间为 50μs
试求在单缓冲区和双缓冲区结构下读入并分析完该文件的时间。
【解析】 在单缓冲区结构下;该文件的处理过程如 6-1 所示(为简单起见,图中物理块
n 3 ,本题 n 10 ),所以总时间=n× (100 50) 50 1550μs
6-1 单缓冲区结构下的处理过程
在双缓冲区结构下,该文件的处理过程如 6-2 所示(图中 n 3 ,本题 n 10 ),所以
总时间=n× 100 50 50 1100us
6-2 双缓冲区结构下的处理过程
81
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值