操作系统分章习题

更新时间:2024-05-11 07:45:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目录

操作系统习题集

(2012版)

目 录

第一章操作系统引论 ....................................................................................................................... 1

1.选择题 .................................................................................................................................. 1 第二章进程管理 ............................................................................................................................... 6

1.选择题 .................................................................................................................................. 6 2.应用题 ................................................................................................................................ 13 进程同步问题 .......................................................................................................................... 13

A. 生产者-消费者问题类 ................................................................................................................... 13 B. 读者-写者问题类 ........................................................................................................................... 56 C. 哲学家进餐问题类......................................................................................................................... 66 D. 其它互斥同步问题 ........................................................................................................................ 72

第三章处理机调度与死锁 ............................................................................................................. 99

1.选择题 ................................................................................................................................ 99 2.应用题 .............................................................................................................................. 103 第四章存储器管理 ....................................................................................................................... 131

1.选择题 .............................................................................................................................. 131 2.应用题 .............................................................................................................................. 136 第五章设备管理 ........................................................................................................................... 150

1.选择题 .............................................................................................................................. 150 2.应用题 .............................................................................................................................. 153 第六章文件管理 ........................................................................................................................... 160

1.选择题 .............................................................................................................................. 160 2.应用题 .............................................................................................................................. 165 第七章操作系统接口 ................................................................................................................... 183

1.选择题 .............................................................................................................................. 183

i

第一章操作系统引论

(* 所标的题目超出教科书范围,可不看)

第一章操作系统引论

1.选择题

1.计算机操作系统的功能是 D。

A.把源程序代码转换为目标代码 B.实现计算机用户之间的相互交流 C.完成计算机硬件与软件之间的转换

D.控制、管理计算机系统的资源和程序的执行 2.操作系统是一组C。

A.文件管理程序 A.进程

B.中断处理程序 B.存储器

C.资源管理程序 C.硬件

D.设备管理程序 D.软件

3.操作系统的功能是进行处理机管理、B管理、设备管理、文件管理和作业管理等。 4.___A______不是分时系统的特点。

A.多个用户是经过网络连接,同时使用计算机系统 B.各用户可同时请求系统服务

C.各用户的请求彼此独立,互不干扰 D.用户以会话方式控制自己的程序运行 5*. 指令是非特权指令。

A.启动I/O A.暂停处理机执行

B.设置中断屏敝

C.传送PSW

D.trap

6.“中断”的概念是指 B 。

B.暂停处理机对现行程序的执行 D.使处理机空转 B.实时操作系统 D.多处理机操作系统 B.断电

D.目态程序执行特权指令 B.只能在管态

D.在目态和管态下都不能 B.硬件相关和应用无关 D.硬件相关和应用相关 B.多用户多进程系统 D.多用户单进程系统

C.停止整个系统运行 A.批处理操作系统 C.分时操作系统 A.传输结束

7.在B的控制下,计算机系统能及时处理由过程控制反馈的数据,并作出响应。

8*.下列中断不属于强迫性中断的是。

C.运行的程序请求分配一块内存 9*.计算机系统中设置的访管指令,执行。

A.只能在目态

C.既可在目态又可在管态

10.操作系统为用户程序完成与B的工作。

A.硬件无关和应用无关 C.硬件无关和应用相关 11*.Windows NT Server是一种。

A.单用户多进程系统 C.单用户单进程系统

12*.用户程序在目态下使用特权指令将引起的中断是属于。

1

第一章操作系统引论

A.硬件故障中断 B.程序中断 C.外部中断 D.访管中断

13.分时操作系统的主要目的是A。

A.计算机系统的交互性 C.计算机系统的可靠性

14.在操作系统中,用户界面指的是B。

A.硬件接口、软件接口和操作环境 C.硬件接口、命令接口和操作环境 15*.特权指令执行。

A.只能在目态下

B.只能在管态下

D.在目态或管态下均不能 C.作业管理 C.管态

D.设备管理 D.就绪态

C.在目态或管态下均能

16.下列管理功能中,B不属于操作系统的功能。

A.处理器管理 A.执行态

B.软件管理 B.目态

17*.当CPU执行操作系统代码时,称处理机处于。 18.以下描述与操作系统无关的是C。

A.方便用户的程序集合

B.控制和管理计算机系统的硬件和软件资源 C.计算机系统的硬件和软件资源的集合 D.合理地组织计算机工作流程 19.分时操作系统的特点是A。

A.交互性、同时性(多路性)、独立性、及时性 B.可靠性、交互性、独立性、及时性 C.可靠性、交互性、独立性、及时性

D.交互性、同时性(多路性)、独立性、动态性 20.下列各项中,C不是现代操作系统的主要特征。

A.并发性 A.管理系统资源 C.改善人机界面

B.共享性

C.确定性 B.控制程序执行

D.提高用户软件运行速度

D.虚拟性

21.以下关于操作系统作用的叙述中,不正确的是D。

B.命令接口、程序接口和操作环境 D.硬件接口、命令接口和程序接口 B.计算机系统的实时性 D.提高软件的运行速度

22.从用户的观点看,操作系统是A。

A.用户与计算机之间的接口 B.控制和管理计算机资源的软件 C.合理地组织计算机工作流程的软件

D.由若干层次的程序按一定的结构组成的有机体

23.C操作系统允许在一台主机上同时连接多台终端,多个用户可以通过各自的终端同时交互地使用计

算机。 A.网络 A.程序 A.进程调度

B.分布式 B.内存 B.时钟管理

C.分时 C.CPU C.地址影射

D.实时 D.中断 D.中断系统

24.若把操作系统看作计算机系统资源的管理者,下列的D不属于操作系统管理的资源。 25.在下列操作系统的各个功能组成部分中,A不需要硬件的支持。 26.在下列操作系统中,对响应时间要求最高的是C。

2

第一章操作系统引论

A.批处理系统 A.硬件 A.读时钟日期

B.分时系统 B.操作系统 B.计算圆周率π

C.实时系统 C.用户程序 C.屏蔽所有中断

D.网络操作系统 D.解释程序 D.调用过程(procedure)

27.对出现的中断事件是由B进行处理的。 28*.命令应该只在核心态下执行。 29.有关原语的说法中,B是正确的。

A.原语是不可中断执行的用户过程 C.原语是可中断执行的用户过程 30.原语应是C。

A.操作系统中的一个函数 B.操作系统中的一个过程

C.操作系统中的一个执行不可中断的过程 D.操作系统中的一个执行可中断的函数 31.下面哪一项不是引入操作系统的主要目的是C。

A.方便用户使用

B.更有效地利用软、硬件资源 D.改善系统性能 C.改变文件内容 C.48 C.缺少交互性

D.调用库函数 D.64 D.以上都不是

C.及时响应用户请求

32*.只能在核心态下执行的指令是。

A.读时钟日期 A.16

A.CPU利用率低

B.屏蔽所有中断 B.32

B.不能并发执行

33*.Windows3.1是一个位的操作系统。 34.多道批处理系统的主要缺点是C。 35*.分布式计算机系统具备的基本功能是。

A.通信、并行计算、资源管理 C.并行计算、资源共享、存储器共享 A.OS/2

B.Windows 3.1

B.通信、并行计算、资源共享 D.通信、并行计算、存储器共享 C.UNIX

D.Windows NT

B.原语是不可中断执行的操作系统过程 D.原语是可中断执行的操作系统过程

36*.在下列4个操作系统中,具有多道程序设计特点,但不是分时系统(多用户系统)。 37*.下列关于Windows NT的说法中,是错误的。

A.Windows NT中的每一个进程都是对象,有些进程也是可以共享的资源 B.Windows NT中,进程是资源分配和处理机调度的基本单位 C.Windows NT 5.0就是Windows 2000 D.Windows NT的内核采用微内核的形式 38.多道程序设计是指C。

A.在多台处理机上同时执行多道程序 C.在一台处理机上同时执行多道程序 39.从用户的观点看,操作系统是A。

A.用户与计算机之间的接口 C.合理组织计算机工作流程 逻辑上的计算机.称为A计算机。 A.虚拟

B.物理

C.并行

D.共享

41.操作系统是对C进行管理的软件。

3

B.在多台处理机上同一时刻执行多道程序 D.在一台处理机上同一时刻执行多道程序 B.控制和管理计算机系统的资源 D.一个大型的工具软件

40.配置了操作系统的计算机是一台比原来的物理计算机功能更强大的计算机,这样的计算机只是一台

第一章操作系统引论

A.系统软件 A.集成电路 A.CPU利用率低 A.内存越大 A.先来先服务 A.多路性 A.批处理 A.实时性和可靠性 A.多道批处理系统

B.系统硬件 B.高速缓存 D.不能并发执行 B.内存越少 B.短作业优先 B.交互性 B.分时

B.实时性和灵活性 B.实时系统

C.计算机资源 D.计算机程序

42*.多道批处理的发展是建立在硬件支持上的。

C.通道和中断机构 D.大容量硬盘 C.缺少交互性 C.用户数越少 C.时间片轮转 C.独占性 C.实时

C.灵活性和可靠性 C.分时系统

D.以上都不是 D.用户数越多 D.最高响应比 D.成批性 D.网络

D.灵活性和可移植性 D.分布式系统

43.批处理系统的主要缺点是C。

44.如果分时系统的时间片一定,那么D,则响应时间越长。 45 分时操作系统通常采用C策略为用户服务。 46.在下列性质中,哪一个不是分时系统的特征D。

47.在C操作系统的控制下,计算机系统能及时处理由过程控制反馈的数据并作出响应。 48.设计实时操作系统时,首先要考虑系统的A。 49.UNIX操作系统是一种多用户的、人机交互的C。 50*.主要由于原因,使UNIX易于移植。

A、UNIX是由机器指令书写的 C、UNIX是用汇编语言编写的

51.操作系统在计算机系统中处于B之间的位置。

A.计算机硬件和软件 C.处理机和用户 A.一个机器周期 A.作业调度软件

B.被控对象规定

B.计算机硬件和用户 D.外部设备和处理机 C.任意周期 B.用户命令解释程序 D.进程通信服务例程 B.外部设备利用率低 D.缺少交互性 C.P、V操作 B.进程大小

D.就绪进程数目和时间片长度 C.存储器

B.方便性和可扩展性 D.有效性和开放性

4

B、UNIX大部分由汇编少部分用C语言编写 D、UNIX小部分由汇编大部分用C语言编写

52.实时操作系统必须在B的时间内响应一个新任务。

D.时间片

53.在操作系统中,D部分属于微内核。

C.磁盘文件目录管理软件 54.批处理系统的主要缺点是B。

A.CPU利用率低 C.不能并发执行 A.命令解释程序

B.系统调用

55.操作系统提供给用户程序的接口是B。

D.对话框

56.分时系统响应时间与D有关。

A.每个应用进程分配的时间片长度 C.就绪进程数目 A.中断机制 A.方便性和有效性

B.处理机

57.下列选项中,A不属于操作系统提供给用户的可使用资源。

D.I/O设备

58.操作系统的最主要设计目标是______A_____。

C.有效性和可扩展性

第二章进程管理

A.进程调度原语主要是按一定的算法,从阻塞队列中选择一个进程,将处理机分配给它。 B.预防死锁发生可通过破坏死锁的四个必要条件之一来实现,但破坏互斥条件的可能性不大。 C.采用信号量同步机制的系统,进程进入临界区时要执行V原语

D.既考虑作业的等待时间,又考虑作业执行时间的调度算法称为电梯调度算法。

61.设有n个进程使用同一个共享变量,如果最多允许m(m < n)个进程同时进入相关临界区,则信号

量的变化范围是。 A.n,n-1,...,n-m B.m,m-1,...1,0,-1,...m-n C.m,m-1,...1,0,-1,...m-n-1 D.m,m-1,...1,0,-1,...m-n+1 62.对于有两个并发进程的系统,设互斥信号量为mutex,若mutex=0,则。

A.表示没有进程进入与mutex相关的临界区 B.表示有一个进程进入与mutex相关的临界区

C.表示有一个进程进入与mutex相关的临界区,另一个进程等待进入 D.表示有两个进程进入与mutex相关的临界区

63.在进程管理中,当时,进程从运行状态变为就绪状态。

A.时间片用完 B.被进程调度程序选中 C.等待某一事件发生 D.等待的事件发生 64.下列因素中,不一定是引起进程调度的因素。

A.一个进程运行完毕 B.运行进程被阻塞 C.一个高优先级进程被创建 D.实时调度中,一个紧迫的任务到来 65.当一个进程正等待着时,称其为等待状态。

A.合作进程的一个消息 B.分配给它一个时间片 C.调度程序选中它 D.进入内存 66.若进程P一旦被唤醒就能投入运行,则系统可能是。

A.非抢占式调度方式,进程P的优先级最高

B.抢占式调度方式,就绪队列上的所有进程的优先级皆比P低 C.就绪队列为空队列

D.抢占式调度方式,P的优先级高于当前运行的进程 67.单CPU系统中,关于进程的叙述正确的是。

A.一个处于等待状态的进程一旦分配了CPU,即进入运行状态 B.只能有一个进程处于就绪状态

C.一个进程可以同时处于就绪状态和等待状态 D.最多只有一个进程处于运行状态

68.下列有关PV操作和死锁的叙述中,正确的是。

A.V操作可能引起死锁 B.P操作不会引起死锁 C.使用PV操作不会引起死锁 D.以上说法均不正确 69.在分时系统中,下列描述中,不属于相应时间的一部分。

A.处理机对请求信息进行处理的时间

B.从键盘输入的请求信息传送到处理机的时间 C.请求信息在外存队列上排队等待的时间 D.所形成的响应回送到终端显示器的时间

70.在具有挂起状态的系统中,若当前内存空间高度吃紧,系统将使一个正在等待I/O的进程进入

__________状态。 A.活动就绪 B.静止就绪 C.活动阻塞 D.静止阻塞 71.下列说法中,正确的是。

A.一般来说,用户进程的PCB存放在用户区,系统进程的PCB存放在系统区

10

第二章进程管理

B.某进程的一个线程处于阻塞状态,则该进程必然处于阻塞状态

C.在多道程序设计环境中,为了提高CPU效率,内存中的进程越多越好 D.同步是指并发进程之间存在的一种制约关系 72.在下述关于父进程和子进程的叙述中,正确的是。

A.父进程创建了子进程,因此父进程执行完了,子进程才能运行 B.子进程执行完了,父进程才能运行 C.撤消子进程时,应该同时撤消父进程 D.撤消父进程时,应该同时撤消子进程

73.多道程序设计能充分发挥之间的并行工作能力。

A.CPU与外设 B.进程与进程 C.内存与进程 D.内存与外设 74.在有m个进程的系统中出现死锁时,死锁进程的个数k应满足的条件是。

A.k≥2 B.1<k<m C.1<k≤m D.k≥1

75.在一个单处理机系统中,若有4个用户进程,且假设当前时刻为用户态,则处于就绪状态的用户进程至少有个。 A.0 B.1 C.2 D.3 76.有甲、乙两道算题,每道需执行1小时(其中处理器的工作时间为12分钟)。若它们在多道系统中执行,甲、乙两道题总共需执行80分钟,则处理器的利用率为。 A.50% B.40% C.30% D.20% 77.下面的描述中,是错误的。

A.进程执行的相对速度不能有进程自己来控制 B.P、V操作是原语操作

C.利用信号量的P、V操作可以交换大量信息 D.同步是指并发进程之间次年在的一种制约关系

78.当输入输出操作正常结束时,操作系统将请求该操作的进程的状态设置成。

A.等待状态 B.运行状态 C.就绪状态 D.挂起状态 79.如果单CPU系统中有n个并发进程,则就绪队列中进程个数最多可达个。

A.n B.n-1 C.n-2 D.1 80.一个进程的基本状态可以从其它两种基本状态转变过去,这个基本状态一定是。

A.执行状态 B.阻塞状态 C.就绪状态 D.完成状态 81.当进程A使用磁带机时,进程B又申请磁带机,这种情况。

A.是不可能出现的 B.是没法解决的 C.就是死锁 D.以上均不正确 82.进程具有的特性包括:。

①动态性 ②共享性 ③并发性 ④相互制约性 ⑤独立性 ⑥静态性 A.①③④⑤ B.①②④⑤ C.②④⑤⑥ D.①②④⑥

83.在引入线程的操作系统中,把作为调度和分派的基本单位,而把作为资源拥有的基本单位。

A.进程线程 B.程序线程 C.程序进程 D.线程进程 84.S为死锁状态的充要条件是,该充要条件称为死锁定理。

A.当且仅当S状态的资源分配图是可完全简化的 B.当且仅当S状态的资源转换图是不可完全简化的 C.当且仅当S状态的资源分配图是不可完全简化的 D.当且仅当S状态的资源转换图是可完全简化的

85.现有3个同时到达的作业J1、J2、J3,它们的执行时间分别为T1、T2和T3,且T1

道方式运行且采用短作业优先算法,则平均周转时间为。 A.T1+T2+T3 B.(T1+T2+T3)/3 C.(3T1+2T2+T3)/3 D.(T1+2T2+3T3)/3 86.进程P0和P1的共享变量定义及其初值为:

11

第二章进程管理

boolean flag[2]; int turn=0;

flag[0]=FALASE; flag[1]=FALSE;

若进程P0和P1访问临界资源的类C伪代码实现如下:

void P0( ) //进程P0 { while(TRUE) { flag[0]=TRUE; turn=1; while(flag[1] && (turn==1)) ; 临界区; flag[0]=FALSE; } } void P1( ) //进程P1 { while(TRUE) { flag[1]=TRUE; turn=0; while(flag[0] && (turn==0)) ; 临界区; flag[1]=FALSE; } } 则并发执行进程P0和P1时产生的情形是。(2010全国试题) A.不能保证进程互斥进入临界区,会出现“饿死”现象 B.不能保证进程互斥进入临界区,不会出现“饿死”现象 C.能保证进程互斥进入临界区,会出现“饿死”现象 D.能保证进程互斥进入临界区,不会出现“饿死”现象 87.在支持多线程的系统中,进程P创建的若干线程不能共享的是。(2011全国试题) .

A.进程P的代码段 B.进程P中打开的文件

C.进程P的全局变量 D.进程P中某线程的栈指针

88.有两个并发进程P1和P2,共享初值为1的变量x。P1对x加1,P2对x减1。加1和减1操作的指令序列分

别如下所示。

//加1操作 //减1操作

load R2,x load R1, x //取x到寄存器R1中

inc R1 dec R2

store x,R2 store x, R1 //将R1的内容存入x

两个操作完成后,x的值。(2011全国试题) A.可能为-1或3 B.只能为1 C.可能为0、1或2 D.可能为-1、0、1或2 89.下列关于进程和线程的叙述中,正确的是。(2012全国试题)

A.不管系统是否支持线程,进程都是资源分配的基本单位 B.线程是资源分配的基本单位,进程是调度的基本单位 C.系统级线程和用户级线程的切换都需要内核的支持 D.同一进程的各个线程拥有各自不同的地址空间

第二章进程管理选择题参考答案:

1.D 11.D 21.C 31.B 41.D 51.D 61.B 71.D

2.A 12.C 22.B 32.C 42.C 52.A 62.B 72.D 3.C 13.B 23.B 33.B 43.B 53.B 63.A 73.A 4.D 14.B 24.B 34.C 44.B 54.A 64.C 74.B 5.B 15.B 25.B 35.C 45.C 55.C 65.A 75.A 6.A 16.C 26.D 36.C 46.C 56.C 66.D 76.C

12

7.B 17.D 27.B 37.B 47.C 57.D 67.D 77.C 8.B 18.C 28.A 38.D 48.A 58.D 68.D 78.C 9.A 19.B 29.D 39.A 49.D 59.B 69.C 79.B 10.A 20.B 30.B 40.D 50.C 60.B 70.D 80.C

第二章进程管理

81.D

82.A 83.D 84.C 85.C 86.D 87.D 88.C 89.A

2.应用题

1.若进程Pa、Pb和Pc单独执行时间分别是1小时、1.5小时和2小时,其中处理机工作时间分别为10分钟、15分钟和35分钟。如果采用多道程序设计方法,让Pa、Pb和Pc并行工作,假定处理机利用率达到50%,请问系统效率能提高百分之几?

答:Ta、Tb和Tc并行工作共用CPU时间为: (10+15+35)/50%=120 (分钟)

单道方式执行时总时间为60+90+120=270分钟 故系统效率提高:(270-120)/270*100%=55.6%

进程同步问题

A. 生产者-消费者问题类

1. (西北工大2000年试题)由三个进程get,copy和put以及两个缓冲区buffer1和buffer2完成一项输入/输出

操作。进程get的功能是把一张卡片上的信息从读卡机上读进buffer1;进程copy的功能是把buffer1中的信息复制到buffer2;进程put的功能是取出buffer2中的信息并从打印机上打印输出。试用P、V操作完成这三个进程间的尽可能并发正确执行的关系(用程序或框图表示),并指明信号量的作用和初值。 解:可设置6个信号量mutex1,mutex2,empty1,empty2,full1,full2。其中:

mutex1和mutex2是互斥信号量,初值为1,分别用于对buffer1和buffer2的互斥访问;

empty1和empty2为同步信号量,初值为1,分别表示buffer1和buffer2是否空闲,1表示空闲,0表示不空闲;

full1和full2为同步信号量,初值为0,分别表示buffer1和buffer2中是否有可取用的信息,1表示有可取用的信息,0表示无可取用的信息。

semaphore mutex1, mutex2, empty1, empty2, full1, full2 ; mutex1=mutex2=1; //互斥信号量 empty1=empty2=1; //生产者进程的同步信号量 full1=full2=0; //消费者进程的同步信号量 parbegin

process get( ) //读进程(生产者进程) {

while (1) {

从读卡机读入一张卡片的信息; P(empty1) //看看buffer1是否空闲 P(mutex1); //互斥访问buffer1 将信息放入buffer1; V(mutex1); V(full1); //通知进程copy,buffer1中已有信息科取(若copy正在等待,则唤醒之) } }

process copy( ) //复制进程(既是消费者又是生产者进程) {

13

第二章进程管理

while (1) {

P(full1) //看看buffer1是否有信息可取 P(mutex1); //互斥访问buffer1 从buffer1中复制出信息; V(mutex1);

V(emtpy1); //通知get,buffer1中的信息已取走(可能唤醒get) P(empty2); //看看buffer2是否空闲 P(mutex2); //互斥访问buffer2 将复制的信息放入buffer2; V(mutex2); V(full2); //通知put,buffer2中已有信息 }

}

process put( ) //输出进程(消费者进程) {

while (1) { P(full2); //测试buffer2中是否有信息 P(mutex2); //互斥访问buffer2 从buffer2中取出信息; V(mutex2);

V(empty2); //通知copy,buffer2中的信息已取走 } } parend

【讨论】由于本题中对于两个缓冲区buffer1和buffer2来说,都只有一个生产者和一个消费者,因此互斥

信号量mutex1和mutex2实际上是可以省去的。 以下第2、3、4题实际上与本题是同一道题。 2. (北京大学1990年试题)有三个进程PA、PB和PC协作解决文件打印问题:PA将文件记录从磁盘读入主

存的缓冲区1,每执行一次读一个记录;PB将缓冲区1的记录复制到缓冲区2,每执行一次复制一个记录;PC将缓冲区2的内容打印出来,每执行一次打印一个记录。缓冲区的大小和一个记录大小一样。试用P、V操作来保证文件的正确打印。 解:BEGIN

semaphore mutex1,mutex2,avail1,avail2,full1,full2;

mutex1 := 1;mutex2 := 1; {实际上mutex1,mutex2可以省去} avail1 := 1;avail2 := 1; full1 := 0;full2 := 0; PARBEGIN PA:BEGIN

L1:read from disk;

P(avail1); P(mutex1); put to buffer 1; V(full1); V(mutex1); goto L1;

14

第二章进程管理

END PB:BEGIN

L2:P(full1);

P(mutex1); get from buffer 1; V(avail1); V(mutex1);

P(avail2); P(mutex2); put to buffer 2; V(full2); V(mutex2); goto L2 ; END PC:BEGIN

L3:P(full2);

P(mutex2); get from buffer 2; V(avail2); V(mutex2); print RECORD goto L3 ; END PAREND END

3. 有三个进程,Reader进程读入数据number1,将其放入缓冲器B1,Executor进程将B1中数据取出,处

理成数据number2,将其放入缓冲器B2,Printer进程将number2数据取出打印,假设B1和B2只能存放一个数据,用P、V操作管理这三个进程的执行。 解:解:采用P、V操作的同步算法如下:

BEGIN

semaphore empty1, full1, empty2, full2 ; empty1.vale = empty2.value = 1 ; ful2.value = full2.value = 0 ; PARBEGIN Reader:BEGIN

L1:read number1 ;

P(empty1) ; B1=number1 ; V(full1) ; goto L1; END

Executor:BEGIN

L2:P(full1) ;

take number1 from B1 ;

15

第二章进程管理

V(empty1) ;

Process number1-->number2 ; P(empty2) ; B2=number2 ; V(full2) ; goto L2; END

Printer:BEGIN

L3:P(full2);

take number2 from B2 ; V(empty2) ; Print(number2) ; goto L3; END

COEND END

4. 假定系统有三个并发进程read, move和print共享缓冲器B1和B2。进程read负责从输入设备上读信息,

每读出一个记录后把它存放到缓冲器B1中。进程move从缓冲器B1中取出一记录,加工后存入缓冲器B2。进程print将B2中的记录取出打印输出。缓冲器B1和B2每次只能存放一个记录。要求三个进程协调完成任务,使打印出来的与读入的记录的个数,次序完全一样。请用PV操作,写出它们的并发程序。(注:本题与第3题是同一个题,与第5题类似) 解:参考程序如下: begin

SR, SM1, SM2, SP: semaphore; B1, B2 : record;

SR:=1; SM1:=0; SM2=1; SP:=0; cobegin

process read X : recoed; begin

R: X:=从输入设备上读入的一个记录; P(SR); B1:=X; V(SM1); goto R; end;

process move Y : record; begin

M: P(SM1); Y :=B1;

V(SR); 加工Y中的记录; P(SM2); B2 := Y;

16

第二章进程管理

V(SP); goto M; end; process print Z : record; begin P: P(SP);

Z := B2; V(SM2); 打印Z中的记录; goto P; end; coend; end;

5. 今有3个并发进程R、M、P,它们共享一个缓冲器B。进程R负责从输入设备读入信息,每读一个记

录后把它存放在缓冲器B中。进程M在缓冲器B中加工进程R存入的记录。进程P把加工后的记录打印出来。缓冲器B中每次只能存放一个记录,当记录被加工输出后,缓冲器B中又可以存放一个新的记录。为协调它们的工作,采用PV操作进行管理。 解:semaphore SR,SM,SP;

SR=1; SM=0; SP=0; parbegin Process R {

while (1) {

从输入设备读入信息X; P(SR); //看看缓冲区B是否是空的 B=X; //信息存入缓冲区B V(SM); //通知M,缓冲区B中已有记录 } }

Process M {

while (1) {

P(SM); //测试R是否已在B中存放信息 在缓冲器B中加工进程R存入的记录; V(SP); //通知P缓冲区B中的信息已可打印 } }

Process P {

while (1) {

P(SP); //测试M是否已将信息加工好 从B中取M加工后的信息Y;

V(SR); //通知R,缓冲区B已可房信息 Print(Y); //打印信息Y

17

第二章进程管理

} }

parend

6. 若一只盘子一次只能放一个水果,A只往盘中放苹果,B只往盘中放梨子,C只从盘中取苹果,D只

从盘中取梨子。试用:(1) 信号量和P、V操作;(2) 管程,写出同步算法。 解:(1) 采用P、V操作的同步算法如下:

semaphore SAB=1; //A、B的资源信号量,同时又是它们的互斥信号量 semaphore SC=0; //C的资源信号量(用于与A同步) semaphore SD=0; //D的资源信号量(用于与B同步) begin

parbegin

process A: //进程A的算法描述 {

while(true) { 取一个苹果;

wait(SAB); //测试盘子是否为空 将一苹果放入盘中;

signal(SC) //通知C盘中已有苹果(可能唤醒C) } }

process C: {

while(true) {

wait(SC); //测试盘子是否有苹果 从盘中取出苹果;

signal(SAB); //通知A(或B)盘子一空(可能唤醒A或B) 消费该苹果; } }

process B: //进程B的算法描述 {

while(true) { 取一个梨子;

wait(SAB); //测试盘子是否为空 将一梨子放入盘中;

signal(SD) //通知D盘中已有梨子(可能唤醒D) } }

process D: {

while(true) {

wait(SD); //测试盘子是否有梨子 从盘中取出梨子;

signal(SAB); //通知A(或B)盘子一空(可能唤醒A或B) 消费该梨子;

18

第二章进程管理

}

}

parend end

(2) 采用管程的同步算法如下:

首先定义管程MPC,该管程可描述如下: type MPC=monitor

var flag: integer; //flag=0:盘中无水果;=1盘中有苹果;=2盘中有梨子 empty: condition; //用于A或B等待空盘子

W: array[1..2] of condition //W[1]用于等待苹果,W[2]用于等待梨子 procedure entry put(integer k) begin

if flag>0 then empty.wait; //生产者A或B进程阻塞 flag=k;

放一k号水果入盘中; //设1号水果为苹果,2号水果为梨子 if W[k].queue then full.signal; //若有等待k号水果者,则唤醒之

end

procedure entry get(integer k) begin

if flag<>k then W[k].wait; //消费者C或D进程阻塞 从盘中取k号水果; flag := 0;

if empty.queue then empty.signal; //若等待队列非空,则唤醒队首的一个生产者进程 end begin

flag :=0; //初始化内部数据 end

A、B、C、D四个进程的同步算法可描述如下: parbegin Process A begin

任取一个苹果; MPC.put(1); end

Process B begin

任取一个梨子; MPC.put(2); end

Process C begin

MPC.get(1); 吃苹果; end

Process D

19

第二章进程管理

begin

MPC.get(2); 吃梨子; end parend

7. 设自行车生产车间有两个货架,货架A可以存放8个车架,货架B可以存放20个车轮;又设有4个工人,

他们的活动是重复劳动,分别为:工人1 加工一个车架放入货架A中;工人2、3分别加工车轮放入货架B中(每人每次放入1个车轮);工人4从货架A中取一个车架,再从货架B中取两个车轮,组装成一辆自行车。试用PV操作实现四个工人的合作。

【分析】信号量Aempty表示货架A的空位数,其初值为8;信号量Afull表示货架A上存放的车架数,其初

值为0;信号量Bempty表示货架B的空位数,其初值为20;信号量Bfull表示货架B上存放的车轮数,其初值为0;信号量mutex用于互斥(初值为1)。

解:BEGIN

semaphore Aempty,Bempty,Afull,Bfull,mutex;

Aempty := 8;Bempty:= 20;Afull:= 0;Bfull:= 0;mutex :=1; PARBEGIN

Worker1:BEGIN

L1:生产1个车架;

P(Aempty); //测试货架A是否有空位置 P(mutex); //互斥使用货架A 车架放到货架A; V(Afull); //货架A上的车架数增1,必要时唤醒等待的进程 V(mutex); goto L1; END

Worker2、3:BEGIN

L2:生产1个车轮;

P(Bempty); //测试货架B是否有空位置 P(mutex); //互斥使用货架B 车轮放到货架B; V(Bfull); //货架B上的车轮数增1,必要时唤醒等待的进程 V(mutex); goto L2; END

Worker4:BEGIN

L3:P(Afull); //测试货架A上是否有车架

P(Bfull);P(Bfull); //测试货架B上是否有2个车轮 P(mutex);

取1个车架;取2个车轮; V(Aempty); //货架A空位置增1 V(Bempty);V(Bempty);//货架B空位置增2 V(mutex);

组装成一辆自行车; goto L3; END

20

第二章进程管理

PAREND

END

8. 假定有一个成品仓库,总共能存放8台成品,生产者进程把生产成品放入仓库,消费者进程从仓库中

取出成品消费。为了防止积压,仓库满时就停止生产。由于仓库搬运设备只有一套,故成品的存入和取出只能分别进行,试用P、V操作来实现该方案。 解:semaphore mutex, empty, full ;

mutex=1; //互斥信号量 empty=8; //生产者进程的同步信号量 full=0; //消费者进程的同步信号量 parbegin

process Pi //生产者进程 {

while (1) {

生产一个成品x; P(empty) //看看仓库是否还有空间可放成品 P(mutex); //互斥使用搬运设备 用搬运设备将成品放入仓库; V(full); //仓库中成品数增1(可能唤醒一个消费者) V(mutex); } }

process Cj //消费者进程 {

while (1) {

P(full) //看看仓库是否有成品 P(mutex); //互斥使用搬运设备 用搬运设备将成品从仓库取出;

V(emtpy); //仓库中可放成品数增1(可能唤醒一个生产者) V(mutex); } } parend 9. 有三个进程R、W1、W2共享一个缓冲器B,而B中每次只能存放一个数。当B中无数时,进程R

可将从输入设备上读入的数存放到缓冲器B中;若存放到B中的是奇数,则允许进程W1将其取出打印;若存放到B中的是偶数,则允许进程W2将其取出打印;同时规定:进程R必须等缓冲器中的数被取出后才能再存放下一个数;进程W1或W2对每次存入缓冲器的数只能打印一次;W1和W2都不能从空的缓冲器中取数。用P、V操作作为同步机制写出三个并发进程的同步算法。(动作部分可用文字描述) 解:semaphore S,S1,S2;

S=1; S1=S2=0; parbegin Process R {

while (1) {

从输入设备上读入的数x;

21

第二章进程管理

P(S); B=x;

if (x%2==1) V(S1); //若是奇数,则通知W1 else V(S2); //若是偶数,则通知W2 }

}

Process W1 {

while (1) {

P(S1); y=B; V(S); Print(y); } }

Process W2 {

while (1) {

P(S2); y=B; V(S); Print(y); } }

parend

//看看缓冲器B中是否有奇数 //从缓冲器B中取奇数存于y

//通知R,缓冲器已空,可以在往里存数了 //打印

//看看缓冲器B中是否有偶数 //从缓冲器B中取偶数存于y

//通知R,缓冲器已空,可以在往里存数了

10. 进程P1使用缓冲区buffer向进程P2,P3,P4发送消息(如图2-1所示),要求每当Pl向buffer中

发消息时,只有当P2,P3,P4进程都读取这条消息后P1才可向buffer中发送新的消息。试用信号量机制描述如下图所示进程的动作过程。(本题是下题的特例)

P2 P1 buffer P3 P4 图2-1

解:设P1、P2、P3、P4的资源信号量分别为S1、S2、S3、S4

semaphore S1,S2,S3,S4;

S1.value=3;S2.vale=S3.vale=S4.value=0; (3分) parbegin process P1 {

while (condition) {

P1生成一个消息;

22

第二章进程管理

P(S1);P(S1);P(S1); P1将消息存入缓冲区buffer; V(S2);V(S3);V(S4); }

}

process Pi(i=2,3,4) {

while (condition) {

P(Si);

Pi从buffer中取出消息; V(S1);

Pi消费(使用)该消息; } }

parend

另一解法如下(此法更一般化,可用来解下题):

semphore S1[3], S[3]; for (i=0;i<3;i++) { S1[i]=1; S[i]=0; }

parbegin process P1 {

while (1) {

P1生成一个消息;

for (i=0;i<3;i++) P(S1[i]); //看看P2~P4是否将消息取走 P1将消息存入缓冲区buffer;

for (i=0;i<3;i++) V(S[i]); //通知P2~P4缓冲区buffer中已有消息 } }

Process P2 {

while(1) { P(S[0]); //看看buffer中是否已有消息 从buffer中取出消息;

V(S1[0]); //通知P1,P2已从缓冲区buffer中取走消息 消费(使用)该消息; } }

Process P3 {

while(1) { P(S[1]); //看看buffer中是否已有消息

23

第二章进程管理

从buffer中取出消息;

V(S1[1]); //通知P1,P3已从缓冲区buffer中取走消息 消费(使用)该消息; }

}

Process P4 {

while(1) { P(S[2]); //看看buffer中是否已有消息 从buffer中取出消息;

V(S1[2]); //通知P1,P4已从缓冲区buffer中取走消息 消费(使用)该消息; } }

parend

11. (北大1994年试题)进程A1,A2,...,An1通过m个缓冲区向进程B1,B2,...,Bn2不断地发送

消息。发送和接收工作遵循如下规则: ① 每个发送进程一次发送一个消息,写入一个缓冲区,缓冲区大小与消息长度一样; ② 对每个消息,B1,B2,...,Bn2都需各接收一次,读入各自的数据区内; ③ m个缓冲区都满时,发送进程等待,没有可读的消息时,接收进程等待。 试用P、V操作组织正确的发送和接收操作。(上题是本题的特例) 【分析】这是P-C问题变形。把这一组缓冲区看成n2组缓冲区。

解:设置一个信号量mutex实现诸进程对缓冲区的互斥访问;两个信号量数组empty[n2]和full[n2]描述n2组缓冲区的使用情况。mutex初值为1,数组empty的元素初值为m,数组full的元素初值为0。

var mutex: semaphore :=1;

empty,full: array[0..n2-1] of semaphore; i: integer;

for (i=0;i

empty[i]=m;full[i]=0; }

Aj ( ) //j=1,2,...,n1 {

while (1) { ......

for (int i=0;i

for (i=0;i

24

本文来源:https://www.bwwdw.com/article/7bgg.html

Top