操作系统试题(1)

更新时间:2023-11-27 12:06:01 阅读量: 教育文库 文档下载

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

试题

一、单项选择题

1.任何两个并发进程之间存在着( D)的关系。 A.各自完全独立 B.拥有共享变量 C.必须互斥 D.可能相互制约

2.并发进程执行的相对速度是(D )。 A.由进程的程序结构决定的 B.由进程自己来控制的 C.在进程被创建时确定的 D.与进程调度策略有关的

3.并发进程执行时可能会出现“与时间有关的错误”,这种错误是由于并发进程(A )引起的。

A.使用共享资源 B.执行的顺序性

C.要求计算时间的长短 D.程序的长度

4.并发进程中与共享变量有关的程序段称为(B )。 A.共享子程序 B.临界区 C.管理区 D.公共数据区

5.用来实现进程同步与互斥的PV操作实际上是由( C)过程组成的。 A.一个可被中断的 B.一个不可被中断的 C.两个可被中断的 D. 两个不可被中断的

6.进程从运行态变为等待态可能由于(BC )。 A.执行了V操作 B.执行了P操作 C.时间片用完

D.有高优先级进程就绪

7.用PV操作管理互斥使用的资源时,信号量的初值应定义为(B )。 A.任意整数 B.1 C.O D.-1

8.现有n个具有相关临界区的并发进程,如果某进程调用P操作后变为等待状态,则调用P操作时信号量的值必定为(A )。

A.≤0

B.1 C.n-1 D.n

9.用PV操作管理临界区时把信号量的初值定义为1,现已有一个进程在临界区,但有n个进程在等待进人临界区,这时信号量的值为(C )。

A.-1 B.1 C.-n D.n

10.用V操作唤醒一个等待进程时,被唤醒进程的状态应变成(B )状态。 A.执行 B.就绪 C.运行 D.收容

11.有一共享文件可供n个并发进程使用,但限制最多m个进程(n≥m≥1)可同时读文件,用PV操作进行管理时其信号量的初值应该为(B)。

A.n B.m C.u-m D.1

12.在单处理机的多进程系统中,一个进程何时占用处理机以及能够占用多长时间,这将取决于 C 。

A.该进程程序段的长度

B.该进程需要的运行时间 C.进程自身的推进速度和系统采用的调度策略 D.进程要完成的功能 13.进程是 C 。 A.一个系统软件 B.一个与程序等同的概念

C.一个执行中的程序 D.存放在内存中的一个程序

14.若当前进程因时间片用完而被迫让出处理机,那么该进程的状态应该成为 D 。 A.就绪 B.等待 C.完成 D.阻塞

二、判断

1.两个进程合作完成一件工作。在并发执行中,一个进程要等待合作者发来消息,或建立某条件后才能向前执行。进程间的这种制约关系应该是同步。(R )

2.有交往的并发进程一定共享某些资源。 (F )

3.如果不能控制并发进程执行的相对速度,则它们在共享资源时一定会出现与时间有关的错误。 ( F)

4.PV操作不仅可用来实现进程的同步与互斥,而且可以防止系统死锁。 ( F) 5.并发进程的执行结果只取决于进程本身,不受外界影响。 (F ) 6.多道程序设计必然导致进程的并发执行。 ( R)

三、填空题

1.一个进程独占处理器顺序执行时具有_资源的独占性______和____结果的再现性___

两个特性。

2.把一组可同时执行的进程称为_并发______进程。

3.有交往的并发进程在竞争共享资源时会出现_与时间有关的______错误。 4.把并发进程中涉及到对共享变量进行访问的程序段称为_临界区______。

5.用PV操作管理相关临界区时,任何一个进程要进人自己的临界区前应调用__P_____、操作,退出临界区时应调用___V____操作。

6.系统中存在多个进程时,这些进程对共享资源的使用存在着不同的相互制约关系,制约关系可归结为两种,一种是__同步_____关系,另一种是_互斥______关系。

7.用PV操作实现进程同步时,进程应调用___P____操作来检测自己等待的消息是否到达,调用__V_____操作则可唤醒一个等待消息的进程。

8.如果在一个取负值的信号量上调用P操作,则将使该进程变为__阻塞_____状态,而调用V操作将使一个等待资源的进程成为__就绪_____状态。

9.有一资源可供n个进程共享,但限制它们只能互斥使用,若采用PV操作来管理则信号量的初值应定义为__1_____,可能出现的信号量的最小值为__-(n-1)_____。

10.若信号量S的初值定义为10,则在S上调用了18次P操作和15次V操作后S的值应该为____7___

11.所谓“进程”,是指一个程序在给定数据集合上的 一次执行 过程,是系统进行资源分配和运行调度的独立单位。

12.通常,把进程程序中真正需要保证互斥执行的那部分程序,称为该进程的 临界区 。

四、解答题

1.假定有一个可以存放n封信的公用信箱,请用PV操作来实现进程通信。 解答:SP表示信箱中可存放的信件数; SG表示信箱已有的信件数 (1)P(SP)(2)P(S1) (3)V(S1) (4)V(SG) (5)P(SG) (6)P(S2) (7)V(S2) (8)V(SP) B[0-n-1] 数组

S1=1,S2=1,SP=n,SG=0 K=0,t=0 放信过程: 组织一封信; (1)P(SP); (2)P(S1); B[k]=信件; K=(k+1)mod n; (3)V(S1) ; (4)V(SG); End;

取信过程: Begin

(5)P(SG) ;

(6)P(S2);

从B[t]中取一封信;

T=(t+1)mod n; (7)V(S2); (8)V(SP); End;

2.吃水果,试用PV操作来实现进程通信。 (1)

父亲 P1 While(true) {

洗水果; 放水果; }

儿子 P2 While(true) {

取水果; 吃水果; }

解答:

分析:父亲先放水果,儿子再吃水果;儿子取完水果,父亲再放水果,这两个进程是一个同步关系。

解法1:设信号量m1表示父亲能否放水果,m2表示儿子能否取水果.其初值m1=1,m2=0。 父亲 P1 While(true) {

洗水果; P(m1); 放水果; V(m2); }

儿子 P2 While(true) {

P(m2); 取水果; V(m1); 吃水果; }

解法2:

父亲先放水果,儿子再吃水果;儿子取完水果,父亲再放水果,这两个进程是一个同

步关系。

设信号量m1表示父亲放完水果,m2表示儿子取完水果。其初值m1=0,m2=1。 父亲 P1 While(true) {

洗水果; P(m2); 放水果; V(m1); }

儿子 P2 While(true) {

P(m1); 取水果; V(m2); 吃水果; } (2)

父亲 P1 While(true) {

洗水果; 放水果; }

儿子 P2 While(true) {

取桔子; 吃桔子; }

女儿 P3 While(true) {

取苹果; 吃苹果; }

}

5.过十字路口,试用PV操作来实现进程通信。

P1 {

通过路口; } P2 {

通过路口; } P3 {

通过路口; } P4 {

通过路口; }

解决:P1 {

P(m);

通过路口; V(m); } P2 {

P(m);

通过路口; V(m); } P3 {

P(m);

通过路口; V(m); }

P4 {

P(m);

通过路口; V(m); }

6.今有3个并发进程R、S、T,它们共享一个缓冲区B。进程R负责从输入设备读入信息,每读出一个记录后就把它存入缓冲区B中;进程S利用缓冲区B加工进程R存入的记录;进程T把加工完毕的记录打印输出。缓冲区B一次只能存放一个记录。只有在进程T把缓冲区里的记录输出后,才能再往里存放新的记录。试用信号量及其P、V操作控制这3个进程间的的正确工作关系。

解:3个并发进程R、S、T之间有如下的制约关系:

(1)R必须先做,在往缓冲区B里面存入数据后,应该向S发消息,然后等待T打印输出后释放缓冲区B;

(2)S应该与R取得同步,在等到R发来的消息(表明B里面有数据)后,取出加工、回存,然后向T发消息;

(3)T应该与S取得同步,在等到S发来的消息(表明B里的数据已经加工完毕)后,才取出打印,然后向R发消息,表示缓冲区B又可以使用了。

从这些关系可以看出,这里是3个同步问题:R要与T取得同步;S要与R取得同步;T要与S取得同步。所以,设置3个同步信号量:

S1——控制S要与R取得同步; S2——控制T要与S取得同步; S3——控制R要与T取得同步。 图6-24给出了它们的工作流程示意。

进程R 信号量: S1=0 S2=0 S3=0 进程S 进程T 从设备读入数据 P(S1) (等待R的消息) P(S2) (等待S的消息) 将数据存入B 对B中数据 加工、回存 数据打印 V(S1) (向S发消息) P(S3) (等待P的消息) V(S2) (向T发消息) V(S3) (向R发消息)

图6-24 R、S、T之间的相互制约关系

7.在飞机订票系统中,假定公共数据区的单元Ai(i=1,2,3…)里存放着某月某日第i次航班现有票数。在第j个售票处,利用变量Rj暂存Ai里的内容。现在为第j个售票处编写代码如图6-28所示。试问它的安排对吗?如果正确,试说明理由;如果不对,指出错误,并做出修改。

第j售票处要订 第i航班的飞机票 按旅客要求找到Ai P(S) (进入公共数据监界区) Rj=Ai; (取出该航班现有票数) N Rj≥1? (还有这个班次的飞机票?) Y Rj=Rj–1; Ai=Rj; (进行数据修改) 打印“票已售完!” V(S) (退出公共数据监界区) 售出一张飞机票 解:从图6-28可以知道,公共数据区的单元Ai(i=1,2,3…)里存放的某月某日第i次航班的现有票数,是j(j=1,2,3…)个售票处共享的数据。因此,这些售票处对公共数据区的单元Ai(i=1,2,3…)的操作不能同时进行。正因为如此,图中把对Ai的这些操作,用名为S的信号量上的P、V操作,保证它们互斥进行。这样处理都是正确的。

关键是当判定没有第i次航班的机票时,图6-28里仅安排了打印“票已售完!”的动作。这样,第j售票处只有进入临界区的P(S),而没有执行退出临界区的V(S)。它没有退出临界区,别的售票窗口也就无法再进入这个临界区。所以,这种安排是不对的。应该把图6-28改成为图6-29,这样就完全正确了。

第j售票处要订 第i航班的飞机票 按旅客要求找到Ai P(S) (进入公共数据监界区) Rj=Ai; (取出该航班现有票数) N Rj≥1? (还有这个班次的飞机票?) Y Rj=Rj–1; Ai=Rj; (进行数据修改) 打印“票已售完!” V(S) (退出公共数据监界区) V(S) (退出公共数据监界区) 售出一张飞机票

图6-29 正确的第j售票处的售票程序

第j售票处要订 第i航班的飞机票 按旅客要求找到Ai P(S) (进入公共数据监界区) Rj=Ai; (取出该航班现有票数) N Rj≥1? (还有这个班次的飞机票?) Y Rj=Rj–1; Ai=Rj; (进行数据修改) 打印“票已售完!” V(S) (退出公共数据监界区) 售出一张飞机票

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

Top