有关进程的练习题

更新时间:2023-11-09 20:58:01 阅读量: 教育文库 文档下载

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

练习题收集

(一) 选择题

1.临界区是指( )。

A.并发进程中用于实现进程互斥的程序段 B.并发进程中用于实现进程同步的程序段 C.并发进程中用户实现进程通信的程序段 D.并发进程中与共享变量有关的程序段 2.相关临界区是指( )。

A.一个独占资源 B.并发进程中与共享变量有关的程序段 c.一个共享资源 D.并发进程中涉及相同变量的那些程序段

4、( )是只能由P和v操作所改变的整型变量。 A共享变量 B.锁 c整型信号量 D.记录型信号量

5.对于整型信号量,在执行一次P操作时,信号量的值应( )。 A.不变 B.加1 C减1 D.减指定数值

6.在执行v操作时,当信号量的值( )时,应释放一个等待该信号量的进程。

A>0 B.<0 c.>=0 D.<=0

7.Pv操作必须在屏蔽中断下执行,这种不可变中断的过程称为( )。

A初始化程序 B.原语 c.子程序 D控制模块 8.进程间的互斥与同步分别表示了各进程间的( )。

A.竞争与协作 B.相互独立与相互制约 c.不同状态 D.动态性与并发性 9并发进程在访问共享资源时的基本关系为( )。

A.相互独立与有交往的 B.互斥与同步 c并行执行与资源共享 D信息传递与信息缓冲 10.在进程通信中,( )常用信箱交换信息。

A.低级通信 B.高级通信 c.消息通信 D.管道通信

13.实现进程互斥时,用( )对应,对同一个信号量调用Pv操作实现互斥。 A.一个信号量与一个临界区 B.一个信号量与—个相关临界区 C.一个信号量与一组相关临界区 D.一个信号量与一个消息 14、系统出现死锁的根本原因是( )。

A.作业调度不当 B.系统中进程太多

C.资源的独占性 D.资源管理和进程推进顺序都不得当 15、死锁的防止是根据( )采取措施实现的。

A.配置足够的系统资源 B.使进程的推进顺序合理

C.破坏产生死锁的四个必要条件之一 D.防止系统进入不安全状态

16、采用按序分配资源的策略可以防止死锁.这是利用了使( )条件不成立。 A.互斥使用资源 B循环等待资源 c.不可抢夺资源 D.占有并等待资源 17、可抢夺的资源分配策略可预防死锁,但它只适用于( )。 A.打印机 B.磁带机 c.绘图仪 D.主存空间和处理器 18、进程调度算法中的( )属于抢夺式的分配处理器的策略。

A.时间片轮转算法 B.非抢占式优先数算法 c.先来先服务算法 D.分级调度算法 19、用银行家算法避免死锁时,检测到( )时才分配资源。

A.进程首次申请资源时对资源的最大需求量超过系统现存的资源量 B.进程己占用的资源数与本次申请资源数之和超过对资源的最大需求量 c.进程已占用的资源数与本次申请的资源数之和不超过对资源的最大需求量,且现存资源能满足尚需的最大资源量

D进程已占用的资源数与本次申请的资源数之和不超过对资源的最大需求量,且现存资源能满足本次申请量,但不能满足尚需的最大资源量

20、实际的操作系统要兼顾资源的使用效率和安全可靠,对资源的分配策略,往往采用 ( )策略。

A死锁的防止 B.死锁的避免 c.死锁的检测 D.死锁的防止、避免和检测的混合

21.操作系统中,可以并行工作的基本单位是[1],[1]也是系统核心调度及资源分配的基本单位,它是由[2]组成的,它与程序的主要区别是[3]。

供选择的答案:

[1]: A.作业 B. 函数 C. 进程 D.过程

[2]: A.程序、数据和PCB B. 程序、数据和标识符 C.程序、标识符和PCB D. 数据、标识符和PCB [3]:A.程序有状态,而它没有 B. 它有状态,而程序没有

C.程序可占用资源,而它不可 D.它可占用资源,而程序不可

22.下列进程状态的转换中,哪一个是不正确的( )。

A.就绪?执行 B. 执行?就绪 C.就绪?等待 D. 等待?就绪

23.下列各项步骤中,哪一个不是创建进程所必须的步骤( )。

A.建立一个进程控制块PCB B.由CPU调度程序为进程调度CPU C.为进程分配内存等必要的资源 D.将PCB链入进程就绪队列 24.在下列特性中,哪一个不是进程的特性( )。

A.异步性 B. 并发性 C. 静态性 D. 动态性

25.在操作系统中,对信号量S的P原语操作定义中,使进程进入相应等待队列等待的条件是( )。

A.S>0 B. S=0 C. S<0 D. S?0

26.进程就是可与其他程序共行执行的程序段的一次执行过程,它是系统进行资源分配和调度的一个基本单位。进程具有[1]、[2]、调度性、异步性和结构性5个基本特征。进程是一次执行过程,具有生命期体现了进程的[1]特征。进程由程序段、[3]、[4]组成,其中[4]是进程在系统中存在的唯一标识。

供选择的答案:

[1][2] A、动态性 B、静态性 C、共行性 D、并发性 E、可执行性 F、易用性

[3] A、过程 B、数据 C、进程标识符 D、函数 [4] A、FCB B、FIFO C、PCB D、JCB

27.进程执行时的间断性,决定了进程可能具有多种状态。进程的基本状态有三种,在分时系统中,当一个进程拥有的时间片到时,则该进程即由[1]进入[2]。

如果出现因某种原因使得处理机空闲时,则需要从就绪队列中选择一进程,并将处理机分配给它,此时该进程进入[3],这个过程是由[4]来完成。

供选择的答案: [1][2][3] A、就绪状态 B、静止状态 C、等待状态 D、执行状态

[4] A、进程控制程序 B、资源分配程序 C、进程调度程序 D、处理机分配程序

28.为了描述进程的动态变化过程,采用了一个与进程相联系的( )系统,根据它而感知进程的存在。

A.进程状态字 B. 进程优先数 C.进程控制块 D. 进程起始地址 29.已经获得除( )以外的所有运行所需资源的进程处于就绪状态。

A.存储器 B. 打印机 C.CPU D. 磁盘空间 30.进程调度的关键问题是选择合理的( ),并恰当地进行代码转换。

A.时间片间隔 B. 调度算法 C.CPU速度 D. 内存空间 31.采用时间片轮转法进行进程调度是为了( )。

A.多个终端都能得到系统的及时响应 B.先来先服务

C.优先级较高的进程得到及时响应 D.需要CPU最短的进程先做

32.在一段时间内,只允许一个进程访问的资源称为( )。

A.共享资源 B. 临界区 C.临界资源 D. 共享区 33.进程是( )。

A.与程序等效的概念 B. 并发环境中程序的执行过程 C.一个系统软件 D. 存放在内存中的程序 34.进程具有并发性和( )两大重要属性。

A.动态性 B. 静态性 C.易用性 D. 封闭性

35.操作系统在控制和管理进程过程中,涉及到( )这一重要数据结构,这是进程存在的唯一标志。

A.FCB B. FIFO C.FDT D. PCB

36.从下列有关进程管理的叙述中,选出五条正确叙述。

A、进程之间同步,主要源于进程之间的资源竞争,是指对多个相关进程在执行次序上的协调;

B、临界资源是指每次仅允许一个进程访问的资源;

C、信号量机制是一种有效的实现进程同步与互斥的工具。信号量只能由P-V操作来改变;

D、V操作是对信号量执行加1操作,意味着释放一个单位资源,加1后如果信号量的值小于等于零,则从等待队列中唤醒一个进程,现进程变为等待状态,否则现进程继续进行;

E、消息通信、信箱通信都属于高级通信方式;

F、死锁是指因相互竞争资源使得系统中有多个阻塞进程的情况;

G、若系统中并发运行的进程和资源之间满足互斥使用、保持和等待、非剥夺性和循环等待,则可判定系统中发生了死锁;

H、在对付死锁的策略中,解除死锁通常都是和检测死锁配套使用; I、产生死锁的原因可归结为竞争资源和进程推进顺序不当;

J、在死锁的解决方法中,由于避免死锁采用静态分配资源策略,所以对资源的利用率不高。

37.并发性是指若干事件在( )发生。

A.同一时刻 B. 同一时间间隔内 C.不同时刻 D. 不同时间间隔内

38.顺序程序和并发程序的执行相比,( )。

A.基本相同 B. 有点不同 C.并发程序执行总体上执行时间快 D. 顺序程序执行总体上执行时间快

39.在单一处理机上,将执行时间有重叠的几个程序称为( )。

A.顺序程序 B. 多道程序 C.并发程序 D. 并行程序 40.引入多道程序技术后,处理机的利用率( )。

A.降低了 B. 有所改善

C.大大提高 D. 没有变化,只是程序的执行方便了 41.在单一处理机上执行程序,多道程序的执行是在( )进行的。

A.同一时刻 B. 同一时间间隔内 C.某一固定时刻 D. 某一固定时间间隔内 42.在单处理机系统中,处于运行状态的进程( )。

A.只有一个 B. 可以有多个

C.不能被挂起 D. 必须在执行完后才能被撤下

43.如果某一进程获得除CPU外的所有所需运行资源,经调度,分配给它CPU,该进程将进入( )。

A.就绪状态 B. 运行状态 C.等待状态 D. 活动状态

44.如果某一进程在运行时,因某种原因暂停,此时将脱离运行状态,而进入( )。

A.自由状态 B. 停止状态 C.等待状态 D. 静止状态 45.一个进程被唤醒意味着( )。

A.该进程重新占有了CPU B.进程状态变为就绪

C.它的优先权变为最大 D.其PCB移至就绪队列的队首 46.进程从运行状态变为等待状态的原因是( )。

A.输入或输出事件发生 B.时间片到

C.输入或输出事件完成 D.某个进程被唤醒 47.在操作系统中同时存在多个进程,它们( )。

A. 不能共享系统资源

B. 不能调用同一段程序代码 C. 可以共享允许共享的系统资源 D. 可以共享所有的系统资源

48.操作系统中有一组常称为特殊系统调用,它不能被系统中断,在操作系统中称为( )。

A.初始化程序 B. 原语 C.子程序 D. 控制模块 49.进程间的基本关系为( )。

A.相互独立与相互制约 B.同步与互斥

C.并行执行与资源共享 D. 信息传递与信息缓冲 50.进程间的同步与互斥,分别表示了各进程间的( )。

A.相互独立与相互制约 B.协调与竞争

C.不同状态 D. 动态性与独立性

51.两个进程合作完成一个任务,在并发执行中,一个进程要等待其合作伙伴发来信息,或

者建立某个条件后再向前执行,这种关系是进程间的( )关系。

A.同步 B. 互斥 C.竞争 D. 合作 52.系统出现死锁的原因是( )。

A. 计算机系统发生了重大故障 B. 有多个封锁的进程同时存在

C. 若干进程因竞争资源而无休止地等待着,不释放已占有的资源

D. 资源数大大少于进程数,或进程同时申请的资源数大大超过资源总数 53.两个进程争夺同一个资源( )。

A.一定死锁 B.不一定死锁 C.不会死锁 D.以上说法都不对 54.解决死锁的途径是( )。

A. 立即关机排除故障 B. 立即关机再重新开机

C. 不要共享资源,增加独占资源

D. 设计预防死锁方法,运行检测并恢复

55.进程P1使用资源情况:申请资源S1,申请资源S2,释放资源S1;进程P2使用资源情况:申请资源S2,申请资源S1,释放资源S2,系统并发执行进程P1,P2,系统将( )。

A.必定产生死锁 B. 可能产生死锁

C.会产生死锁 D. 无法确定是否会产生死锁 56.进程和程序的本质区别是( )。

A.存储在内存和外存 B.顺序和非顺序执行机器指令 C.分时使用和独占使用计算机资源 D.动态和静态特征 57.顺序程序和并发程序的执行相比,( )。

A.基本相同 B. 有点不同 C.并发程序执行总体上执行时间快 D.顺序程序执行总体上执行时间快

58.在单一处理机上,将执行时间有重叠的几个程序称为( )。

A.顺序程序 B. 多道程序 C.并发程序 D. 并行程序 59.进程和程序的本质区别是( )。

A.存储在内存和外存 B.顺序和非顺序执行机器指令 C.分时使用和独占使用计算机资源 D.动态和静态特征 60.在下列特性中,不是进程的特性的是( )。

A. 异步性 B. 并发性 C. 静态性 D. 动态性

61.各进程向前推进的速度是不可预知,体现出“走走停停”的特征,称为进程的( )。

A.动态性 B.并发性 C.调度性 D.异步性 62.在单处理机系统中,处于运行状态的进程( )。

A.只有一个 B. 可以有多个

C.不能被挂起 D. 必须在执行完后才能被撤下 63.下列进程状态的转换中,不正确的是( )。

A. 就绪?运行 B. 运行?就绪 C. 就绪?阻塞 D. 阻塞?就绪

65.一个进程被唤醒意味着( )。

3. 进程的静态实体由 、 和 三部分组成。

4. 用于进程控制的原语主要有 、 、 和 。 5. 程序的 执行是现代操作系统的基本特征之一,为了更好地描述这一

特征而引入了

6.一个进程的工作在没有全部完成之前,另一个进程就可以开始工作,则称这些进程为______.

7若系统中存在一组可同时执行的进程,则就说该组进程具有______。

8.如果—个进程的执行不影响其他进程的执行,且与其他进程的进展情况无关,则说这些并发进程相互之间是______的。

9 如果一个进程的执行依赖其他进程的进展情况,则说这些并发进程相互之间是______ 10.有交往的并发进程一定______某些资源。

11.有交往的进程执行时可能产生与时间有关的错误,造成不正确的因素与进程______ 、______和外界的影响有关。 12.对______的使用不受限制,这是使有交往的并发进程执行时出现与时间有关的错误的根本原因。

13.临界区是指并发进程中与______有关的程序段。

14.______是指并发进程中涉及到相同变量的那些程序段。

15.只要涉及相同变量的若干进程的相关临界区______,就不会造成与时间有关的错误。 16.进程的______是指当有若干进程都要使用某一共享资源时,任何时刻最多只允许一个进程去使用。

17.PV操作是在一个信号量上进行的______的过程,这种过程也称为______

18.利用Pv操作管理相关临界区时,必须成对出现,在进入临界区之前要调用______,在完成临界区操作后要调用______。

l9.若信号量的初值为1,用Pv操作能限制一次______进程进入临界区操作。

20进程的______是指并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消息。

21 ______能把它进程需要的消息发送出去,也能测试自己需要的消息是否到达。 22.Pv操作不仅是实现______的有效工具,而且也是一种简单而方便的______工具。 23.用Pv操作实现进程同步时,调用______ 测试消息是否到达,调用______发送消息。 24.用Pv操作实现生产者消费者之间的同步时,在访问共享缓冲区的______和______分别调动P操作和v操作。

25.进程的互斥实际上是进程______的一种持殊情况。

26.进程的互斥是进程间______共享资源的使用权,其结果没有______,而进程的同步则在共享资源的并发进程之间有一种______依赖关系。

27.PV操作也可看作为进程间的一种通信方式,由于只交换了少量的信息,故称为______ 28.通过专门的通信机制实现进程间交换大量信息的通信方式称为______。

40.在使PV操作实现进程互斥时,调用______相当于申请一个共享资源,调用______相当于归还共享资源的使用权。 41、若系统中存在一种进程,它们中的每一个进程都占有了某种资源而又都在等待其中另一个进程所占用的资源。这种等待永远不能结束,则说明出现了______。

42.如果操作系统对______或没有顾及进程______可能出现的情况,则就可能形成死锁。 43.系统出现死锁的四个必要条件是:互斥使用资源,______,不可抢夺资源和______。 44.如果进程申请一个某类资源时,可以把该类资源中的任意一个空闲资源分配给进程,则

说该类资源中的所有资源是______。

45.如果资源分配图中无环路,则系统中______发生。

46.为了防止死锁的发生,只要采用分配策略使四个必要条件中的______。

47.使占有并等待资源的条件不成立而防止死锁常用两种方法:______和______. 48静态分配资源也称______,要求每—个进程在______就申请它需要的全部资源。 49.释放已占资源的分配策略是仅当进程______时才允许它去申请资源。

50抢夺式分配资源约定,如果一个进程已经占有了某些资源又要申请新资源,而新资源不能满足必须等待时、系统可以______该进程已占有的资源。 51.目前抢夺式的分配策略只适用于______和______。

52.对资源采用______的策略可以使循环等待资源的条件不成立。

53.如果操作系统能保证所有的进程在有限的时间内得到需要的全部资源,则称系统处于______。

54.只要能保持系统处于安全状态就可______的发生。 55.______是一种古典的安全状态测试方法。

56.要实现______,只要当进程提出资源申请时,系统动态测试资源分配情况,仅当能确保系统安全时才把资源分配给进程。

57.______对资源的分配不加限制,只要有剩余的资源,就可把资源分配给申请者。 58.死锁检测方法要解决两个问题,一是______是否出现了死锁,二是当有死锁发生时怎样去______。

59.解除死锁的方法有两种,一种是______一个或几个进程的执行以破坏循环等待,另一种是从涉及死锁的进程中______

60.操作系统中要兼顾资源的使用效率和安全可靠,对不同的资源采用不同的分配策略,往往采用死锁的______、避免和______的混合策略。

这一概念。

61进程存在的标志是 。

62进程的静态实体由 、 和 三部分组成。

63用于进程控制的原语主要有 、 、 和 。 64进程被创建后,最初处于 状态,然后经 选中后进入 状态。

65.进程创建工作主要完成的是创建进程控制块(PCB),并把它挂到 队列中。 66.如果系统中有n个进程,则在就绪队列中进程的个数最多为 。 67.进程的同步和互斥反映了进程间 和 的关系。

68.死锁产生的四个必要条件是 、 、 和 四种。

69.操作系统中信号量的值与 的使用情况有关,它的值仅能由 来改变。

70.进程至少有三种基本状态: 、 和 。

71.每执行一次P操作,信号量的数值S减1。若S?0,则该进程 ;若S<0,则该进程 。

72.每执行一次V操作,信号量的数值S加1。若 ,则该进程继续执行;否则,从对应的 队列中移出一个进程并将 状态赋予该进程。 73.利用信号量实现进程的 ,应为临界区设置一个信号量mutex,其初值为1,表示该资源尚未使用,临界区应置于 和 原语之间。

74通常,线程的定义是____________________________________。在现代操作系统中,资

源的分配单位是__________________,而处理机的调度单位是________________,一个进程可以有___________线程。

75. 在单用户单任务环境下,用户独占全机,此时机内资源的状态,只能由运行程序的操作加以改变,此时的程序执行具有___性和___性。 76.并发程序之间的相互制约,是由于它们___和___而产生的,因而导致程序在并发执行时,具有___特征。

77.进程最基本的特征是___,因为进程的实质是程序的一次执行过程,而且该特征还表现在进程由___而产生,由___而执行,由___而消亡,即进程具有一定的生命期。

78. 当前进程若因时间片用完而被暂停执行时,该进程应转变为___状态;若因发生某事件而不被继续运行时,该进程应转变为___状态。处于就绪状态的进程被调度应转变为___状态。

79. 用户为阻止进程继续运行,应利用___原语;若进程正在执行,应转变为__状态。不久,若用户要恢复其运行,应利用___原语,此时进程应转变为___状态。 80. 每执行一次signal操作,表示___;若S.value <= 0,则表示___,此时应 ___。

81. 在利用信号量实现进程互斥时,应将___置于___和___之间。 82. 在每个进程中访问___的那段代码称为临界区。为实现对它的共享,应保证进程___进入自己的临界区,为此在每个进程中的临界区前面应设置___,在临界区之后应设置___。

83. 进程通信的类型有___、___和___三类。

84. 为实现消息缓冲通信,在PCB中应增加___、___和___三个数据项。 85. 在剥夺调度方式中,剥夺的原则有___、___和___。 86. 在设计进程调度程序时,考虑___、___及___三个问题。

87. 在操作系统中引起进程调度的因素主要有___、___、___、___和___等。

88. 解决死锁问题的基本方法有___、___、___和___。

89. 在摒弃环路条件的策略中规定,将所有的___按类型进行___,并赋予它们不同的序号。

1 (1) 封闭性 (2) 可再现性

2 (1) 相互合作 (2) 共享资源 (3) 间断性 3 (1) 封闭性 (2) 可再现性

4 (1) 动态性 (2) 创建 (3) 调度 (4) 撤销 5 (1) 资源分配 (2) 独立运行 (3) 调度 6 (1) 就绪 (2) 阻塞 (3) 执行 7 (1) 挂起 (2) 静止阻塞 (3) 激活 (4) 活动就绪

8 (1) 释放一个单位资源 (2) 仍有请求该资源的进程被阻塞 (3)唤醒等待该资源的队首进程,并将之插入就绪队列

9 (1) 临界区 (2) 进入区 (3) 推出区 10 (1) 临界资源 (2) 互斥地 (3 ) P操作 (4 ) V操作

1 1 (1) 共享存储区通讯 (2) 消息通讯 (3) 管道通讯

1 2 (1) 消息队列指针

(2) 消息队列互斥信号量 (3) 消息队列计数信号量 13 (1) 优先权高者优先 (2) 短进程优先 (3) 时间片原则 14 (1) 引起调度的因素 (2) 调度算法的选择 (3) 就绪队列的组织 15 (1) 进程完毕

(2) I/O请求或发生某事件 (3) 原语操作

(4) 在剥夺式调度算法中,有更高优先权进程进入 (5) 时间片完 16 (1) 预防死锁 (2) 避免死锁 (3) 检测死锁 (4) 解除死锁 17 (1) 资源 (2) 排序

2007年下半年 系统分析师 上午试卷

某系统中有一个缓冲区,进程P1不断地加工数据送入缓冲区,进程P2不断地从缓冲区中取数据打印,用PV操作实现进程间的同步模型如图2所示。假设信号量S1的初值为1,信号量S2的初值为0,那么图2中a、b、c、d处应分别填 (51) 。

P1 P2

a c

从缓冲区取数据 加工数据

送数据到缓冲区 d 打印 b 图2 (51)A. P(S2)、V(S2)、P(S1)、V(S1)

B. P(S2)、V(S1)、P(S1)、V(S2) C. P(S1)、V(S2)、P(S2)、V(S1) D. P(S1)、V(S1)、P(S2)、V(S2)

2008 年上半年 软件设计师 上午试卷

(23)A. 0 B. 1 C. 2 D. 3

(24)A. P(S)、V(S) 和 V(S) B. P(S)、P(S) 和 V(S) C. V(S)、P(S) 和 P(S) D. V(S)、V(S) 和 P(S)

[以下为:全国2009年7月高等教育自学考试

三、应用题

1、设公共汽车上有一位司机和一位售票员,它们的活动如下:

司机: 售票员: 启动车辆 售票

正常行车 开车门 到站停车 关车门

请分析司机与售票员之间的同步关系,如何用PV操作实现。

答:为了安全起见,显然要求:关车门后才能启动车辆;到站停车后才能开车门。所以司机和售票员在到站、开门、关门、启动车辆这几个活动之间存在着同步关系。用两个信号量S1、S2分别表示可以开车和可以开门,S1的初值为1,S2的初值为0。用PV操作实现司机进程和售票员进程同步的算法描述如下:

司机: 售票员: P(S1) 售票 启动车辆 P(S2)

正常行车 开车门 到站停车 关车门 V(S2) V(S1)

另外,程序中PV操作出现的顺序与信号量的初值设置有关,以本题为例,算法如下描述时,S1、S2的初值均应为0。

司机: 售票员: 正常行车 售票 到站停车 P(S2)

V(S2) 开车门 P(S1) 关车门 启动车辆 V(S1)

2.四个进程A、B、C、D都要读一个共享文件F,系统允许多个进程同时读文件F。但限制是进程A和进程C不能同时读文件F,进程B和进程D也不能同时读文件F。为了使这四个进程并发执行时能按系统要求使用文件,现用PV操作进行管理,请回答下面的问题: (1)如何定义信号量及初值;

(2)在下列的程序中填上适当的P、V操作,以保证它们能正确并发工作: 进程A 进程 B 进程 C 进程 D ? ? ? ?

[1]; [3]; [5]; [7]; read F; read F; read F; read F; [2]; [4]; [6]; [8]; ? ? ? ?

答:设置信号量S1、S2初值分别为1。 [1]:P(S1) [2]:V(S1) [3]:P(S2) [4]:V(S2) [5]:P(S1) [6]:V(S1) [3]:P(S2) [4]:V(S2)

3.(见课本p.69-12)设有一台计算机,有两条I/O通道,分别接一台卡片输入机和一台打印

机。卡片机把一叠卡片逐一输入到缓冲区B1中,加工处理后再搬到缓冲区B2中,并在打印机上打印,问:

①系统要设几个进程来完成这个任务?各自的工作是什么? ②这些进程间有什么样的相互制约关系? ③用P、V操作写出这些进程的同步算法。 解:

①系统可设三个进程来完成这个任务:R进程负责从卡片输入机上读入卡片信息,输入到缓冲区B1中;C进程负责从缓冲区B1中取出信息,进行加工处理,之后将结果送到缓冲区B2中;P进程负责从缓冲区B2中取出信息,并在打印机上印出。 ②R进程受C进程影响,B1放满信息后R进程要等待——等C进程将其中信息全部取走,才能继续读入信息;C进程受R进程和P进程的约束:B1中信息放满后C进程才可从中取出它们,且B2被取空后C进程才可将加工结果送入其中;P进程受C进程的约束:B2中信息放满后P进程才可从中取出它们,进行打印。 ③信号量含义及初值:

B1full—— 缓冲区B1满,初值为0; B1empty——缓冲区B1空,初值为0; B2full—— 缓冲区B2满,初值为0; B2empty——缓冲区B2空,初值为0;

R进程 C进程 P进程

输入信息写入缓冲区B1; V(B1full); P(B1empty); P(B1full); 从B1中取出信息; 加工信息; 结果送入B2; V(B1empty); V(B2full); P(B2empty); P(B2full); 从B2中取出信息进行打印; V(B2empty);

3、某车站售票厅,任何时刻最多可容纳 20 名购票者进入,当售票厅中少于 20 名购票者时,则厅外的购票者可立即进入,否则需在外面等待。若把一个购票者看作一个进程,请回答下列问题:

(1) 用 wait、signal 操作管理这些并发进程时,应怎样定义信号量,写出信号量的初值以及信号量各种取值的含义。

(2) 根据所定义的信号量,把应执行的 wait、signal 操作填入下述方框中,以保证进程能够正确地并发执行。

COBEGIN PROCESS PI(I=1 , 2 , ??)

begin ;

( ) ; 进入售票厅; 购票; 退出;

( ); end ; COEND

(3) 若欲购票者最多为 n 个人,写出信号量可能的变化范围 ( 最大值和最小值 ) 解:

(1) 定义一信号量 S ,初始值为 20 。 意义:

S>0 S 的值表示可继续进入售票厅的人数 S=0 表示售票厅中已有 20 名顾客 ( 购票者 ) S<0 |S| 的值为等待进入售票厅的人数 (2) 上框为 wait(S) 下框为 signal(S) (3)S 的最大值为 20 S 的最小值为 20 - n

注:信号量的符号可不同 ( 如写成 t) ,但使用时应一致 ( 即上述的 s 全应改成 t) 。 4、(参考课本p69-14)有一个阅览室,共有100个座位,读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号和读者姓名等,读者离开时要消掉登记的信息,试问:(?)

(1)为描述读者的动作,应编写几个程序,设置几个进程? (2)试用PV操作描述读者进程之间的同步关系。

答:读者的动作有两个,一是填表进入阅览室,这时要考虑阅览室里是否有座位;一是读者阅读完毕,离开阅览室,这时的操作要考虑阅览室里是否有读者。读者在阅览室读书时,由于没有引起资源的变动,不算动作变化。

算法的信号量有三个:seats——表示阅览室是否有座位(初值为100,代表阅览室的空座位数);readers——表示阅览室里的读者数,初值为0;用于互斥的mutex,初值为1。 读者进入阅览室的动作描述getin:

while(TRUE){

P (seats); /*没有座位则离开*/ P(mutex) /*进入临界区*/ 填写登记表; 进入阅览室读书;

V(mutex) /*离开临界区*/ V(readers) }

读者离开阅览室的动作描述getout:

while(TRUE){

P(readers) /*阅览室是否有人读书*/ P(mutex) /*进入临界区*/ 消掉登记;

离开阅览室;

V(mutex) /*离开临界区*/

V(seats) /*释放一个座位资源*/ }

某剧院售票厅,任何时刻最多可容纳100名购票者进入,当售票厅中少于100名购票者时,则厅外的购票者可立即进入,否则需在外面等待。若把一个购票者看作一个进程,请回答下列问题:

(1)这是同步还是互斥问题?如用P、V操作管理这些并发进程,写出信号量的初值。 答:这是互斥问题,设一公用信号量S,初值为100。

(2)在下面程序的适当位置上添加信号量的 P、V操作,以保证能正确地并发执行。 解:

Cobegin process pi ( i = 1,2,? )

begin

P(S);

进入剧院售票厅; 排队购票;

退出剧院售票厅; V(S); end; coend;

(3)若购票者最多为 n(n>100)个人,请写出信号量的变化范围(最大值和最小值)。

答:从-(n-100)变化到100。

5.桌上有一空盘,可放水果数目不限。爸爸可向盘中放苹果,也可向盘中放桔子;儿子专等吃盘中的桔子;女儿专等吃盘中的苹果。规定一次只能放一只水果,试写出爸爸、儿子、女儿正确同步的程序。

【分析】由于爸爸、儿子、女儿都有对盘子的操作,因此盘子是个共享的临界资源,应该用互斥信号量加以保护,初值为1;另外,由于儿子和女儿所吃的水果种类不同,所发出的信号标志也应该不同,所以应再设置2个不同的信号量,分别是orange 和apple,初值都为0。并发进程如下:

Semaphore: mutex=1,orange=0,apple=0;

父亲进程: 儿子进程: 女儿进程:

begin begin begin P(mutex); P(orange); P(apple); 放水果 P(mutex); P(mutex); V(mutex); 取桔子 取苹果 if 苹果 then V(apple) V(mutex); V(mutex); else V(orange); end end end

一家人吃水果,只有一个盘子,且忽略可以装多少水果,爸爸一直往盘子里放苹果,妈妈一直往盘子里放橘子;儿子只吃苹果,女儿只吃橘子,请用PV操作描述这些过程以及输出盘子中水果的变化。

答案:盘子是一个消费者—生产者问题中的无界缓冲池,爸爸和妈妈是生产者,儿子和女儿是消费者,设计两个信号量orange代表橘子的个数,apple代表苹果的个数。 Semphore orange=0, apple=0 Parbegin Mother()

Begin repeat put an orange in plate; V(orange); until false; End Father()

Begin repeat put an apple in plate; V(apple); until false; End Daughter() Begin repeat

P(orange); pick an orange from plate and eat; until false; End Son()

Begin repeat P(apple); pick an apple from plate and eat; until false; End Parend;

6.某无人售票车只有一个投币箱,并规定上车乘客必须每人投入一个一元硬币,该客车共可容纳N人,且下车时每人必须排队走出,撕一张票,试用P、V操作写出解决问题的算法。 【分析】上车时的投币箱是一个临界资源,要互斥使用,需要一个信号量s1,初值为1;下车时撕票也是对临界资源票夹的互斥操作,也需要一个信号量s2,初值为1。此外,对乘客人数的限制使得上下车进程之间要保持同步关系,还要一个同步的信号量number,初值为N。 Semaphore: s1=1,s2=1,number=N; 上车进程: 下车进程: begin begin P(number); P(s2); P(s1); 撕票

投币 V(s2); V(s1); V(number); 上车 下车 end end

7. 设S1和S2为两个信号变量,下列八组P、V操作哪些可以同时进行? 哪些不能同时进行? 为什么?

else{ counta++; V(mutex); P(qa); }

if(countc>0){ countc--; V(qc); }else{

if(counta>0){ counta-- V(qa); }else{ free=1; } } } }

A组进程活动可以给出B组和C组进程活动。

14. 设有一个可以装A、B两种物品的仓库,其容量无限大,但要求仓库中A、B两种物品的数量满足下述不等式: -M≤A物品数量-B物品数量≤N

其中M和N为正整数。 试用信号量和PV操作描述A、B两种物品的入库过程。 答:已知条件 -M≤A物品数量-B物品数量≤N 可以拆成两个不等式,即

A物品数量-B物品数量≤N, B物品数量-A物品数量≤M。

这两个不等式的含义是:仓库中A物品可以比B物品多,但不能超过N个;B物品可以比A物品多,但不能超过M个。 semaphore a=n; semaphore b=m; void main(){

createprocess(A,?); createprocess(B,?); }

A物品入库:

while(1){ P(a);

A物品入库; V(b); }

B物品入库:

while(1){ P(b);

B物品入库; V(a); }

15. 设系统中有5台类型相同的打印机,依次编号为1~5。 又设系统中有n个使用打印机的进程,使用前申请,使用后释放。 每个进程有一个进程标识,用于区别不同的进程。 每个进程还有一个优先数,不同进程的优先数各异。当有多个进程同时申请时,按照进程优先数由高到低的次序实施分配。 试用信号量和PV操作实现对于打印机资源的管理,即要求编写如下函数和过程:

(1) 函数 require(pid,pri): 申请一台打印机。参数pid为进程标识,其值为1到n的整数; pri为进程优先数,其值为正整数; 函数返回值为所申请到打印机的编号,其值为1到5的整数;

(2) 过程 return(prnt): 释放一台打印机。参数prnt为所释放打印机的编号,其值为1到5的整数。 解:

#define N 5

bool flag[N+1];//flag[0]表示可用打印机数,

//flag[i]表示第i号打印机的状态(1<=i<=N),0表示占用,1表示空闲 PCB *queue=NULL;//进程阻塞队列

semaphore mutex_flag=1;//用于对flag数组的互斥操作 semaphore mutex_queue=1;//用于对阻塞队列的互斥操作

process(int i,int priority){ int print;

print=require(i,priority); use print; return(print); }

int require(int pid,int priority){ P(mutex_flag); if(flag[0]>0){ flag[0]--;

for(int i=1;i

V(mutex_flag); return i; } else{

V(mutex_flag); p(mutex_queue);

将进程pid按其优先数插入到等待队列queue中; V(mutex_queue); } }

return(int print){ P(mutex_flag); if(queue==NULL){ flag[0]++; flag[print]=1; V(mutex_flag); } else{

V(mutex_flag); p(mutex_queue);

将print分配给queue队首进程; queue下移; V(mutex_queue); } }

16.银行家算法中,若出现以下资源分配情况:

资源 最大需求量 已分配资源量 进程 R1 R2 R3 R1 R2 R3 P0 7 5 3 0 1 0 P1 3 2 2 2 0 0 P2 9 0 2 3 0 2 P3 2 2 2 2 1 1 P4 4 3 3 0 0 2 试问:(1)该系统状态是安全的吗?请说明原因。

剩余资源量 R1 R2 R3 3 3 2 (2)如果进程依次有如下资源请求,系统将怎样进行资源分配?

P1:(1,0,2) P4:(3,3,0) P0:(0,2,0)

某系统中有四类资源,五个进程。当前资源分配情况如下:

Allocation Need Available A B C D A B C D A B C D P0: 0 0 3 2 0 0 1 2 1 6 2 3

P1: 1 0 0 0 1 7 5 0 P2: 1 3 5 4 2 3 5 6 P3: 0 3 3 2 0 6 5 2 P4: 0 0 1 4 0 6 5 6

试问:(1) 当前状态是否安全?若是安全状态,请给出进程安全序列。 (2) 如果进程P2提出请求Request2=(1,2,2,2),系统能否将资源分配给它?说明原因. 解答:(1)当前状态是安全的。找出进程安全序列的分析过程如下: Pi Needi Available P0 A B C D 0 0 1 2 1 6 2 3 P3 A B C D 0 6 5 2 1 6 5 5 P1 A B C D 1 7 5 0 1 9 8 7 P4 A B C D 0 6 5 6 2 9 8 7 P2 A B C D 2 3 5 6 2 9 9 11 从分析过程,可得出进程安全序列是:{ P0,P3,P1,P4,P2}。

(2)按照银行家算法, 因Request2(1, 2,2,2)≤ Need2(2,3,5,6), 且Request2(1, 2,2,2)≤ Available(1,6,3,2),

试探性地将请求的资源分给进程P2,并修改有关数据结构的数值:

Available= Available(1,6,3,2)- Request2(1, 2,2,2) = Available(0,4,1,0)

Need2= Need2(2,3,5,6)-Request2(1, 2,2,2)=Need2(1,1,3,4) Allocation2= Allocation2(1,3,5,4)+ Request2(1, 2,2,2) = Allocation2(2,5,7,6)

此时系统可用资源Available(0,4,1,0)均不能满足这五个进程还需要的资源数量,分别是(0,0,1,2)、(1,7,5,0)、(1,1,3,4)、(0,6,5,2)和(0,6,5,6)。系统将进入不安全状态,恢复Need2、Allocation2及Available原来的值。结论是:对进程P2的请求不予分配,进程P2阻塞等待。 .

(见习题15)关于读者/写者问题,有人给出如下改进解法: semaphore r_w_w, mutex, s; (初值均为1) int count; (初值为0)

读者活动: P(s); P(mutex); count++;

if (count= =1) P(r_w_w); V(mutex); V(s); {读操作} P(mutex); count--;

If (count= =0) V(r_w_w); V(mutex);

写者活动: P(s); P(r_w_w); {写操作} V(r_w_w); V(s);

分析上述改进算法的调度效果。

答:由于s以及读者和写者对s的操作,读者和写者都不会无限等待,因而算法不会出现饿死现象,是一个公平的解法

考研题库: http://oa.gdut.edu.cn/os/exercises/index-exe.htm

(1)P(S1),P(S2) (2)P(S1),V(S2) (3)V(S1),P(S2) (4)V(S1),V(S2) (5)P(S1),P(S1) (6)P(S2),V(S2) (7)V(S1),P(S1) (8)V(S2),V(S2)

答:能同时进行的包括:(1)、(2)、(3)、(4)。这些操作涉及不同信号灯变量,属于关于不同组共享变量的临界区。不能同时进行的包括:(5)、(6)、(7)、(8)。这些操作涉及相同的信号变量,属于关于同一组共享变量的临界区。

8. (见习题13)对于生产者—消费者问题,假设缓冲区是无界的,试用信号量与PV操作给出解法。

答:由于是无界缓冲区,所以生产者不会因得不到缓冲区而被阻塞,不需要对空缓冲区进行管理,可以去掉在有界缓冲区中用来管理空缓冲区的信号量及其PV操作。 semaphore mutex_in=1; semaphore mutex_out=1; semaphore empty=0; int in=0,out=0;

生产者活动: 消费者活动: while(1){ while(1){ produce next product; P(empty); P(mutex_in); P(mutex_out); add the product to buffer[in]; take the product from buffer[out]; in++; out++; v(mutex_in); V(mutex_out); V(empty); } }

9.有一个大学只有一个澡堂,门口上有一块牌子,如果有一个男生进去洗澡,他就会把牌子转到“男”字样,这样只有男生会进去,女生就不会进去了;如果澡堂没人,一个女生先进了澡堂,她就会把牌子转到“女”字样,那么女生就可以进去了;请用PV操作描述这个事件,避免男女生同时出现在澡堂。

答案:这是一个条件互斥问题,与读者写者问题类似。男生和女生都在某种条件下对澡堂互斥。因此设计一个互斥信号量mutex表示是否有一个群体占用了澡堂,设计两个整型变量用来boycount和girlcount分别表示男生和女生的数目,又因为需要对这两个变量进行互斥访问,因此设计两个互斥信号量boymutex和girlmutex分别对boycount和girlcount两个共享变量互斥访问。

Semphore boymutex=1, girlmutex=1,mutex=1 int boycount=0; girlcount=0 Parbegin Boy() begin repeat

wait(boymutex);

if boycount ==0 then wait(mutex); boycount = boycount +1; signal(boymutex); 洗澡;

wait(boymutex);

boycount = boycount -1;

if boycount ==0 then signal(mutex); signal(boymutex); until false; end; Girl() begin repeat

wait(girlmutex);

if girlcount ==0 then wait(mutex); girlcount = girlcount +1; signal(girlmutex); 洗澡;

wait(girlmutex);

girlcount = girlcount -1;

if girlcount ==0 then signal(mutex); signal(girlmutex); until false; end; Parend

10.(见习题17) 一座小桥(最多只能承重两个人)横跨南北两岸,任意时刻同一方向只允许一人过桥,南侧桥段和北侧桥段较窄只能通过一人,桥中央一处宽敞,允许两个人通过或歇息。试用信号量和PV操作写出南、北两岸过桥的同步算法。 解:桥上可能没有人,也可能有一人,也可能有两人。 (a) 两人同时过桥(b) 两人都到中间(c) 南(北)来者到北(南)段

共需要三个信号量,load用来控制桥上人数,初值为2,表示桥上最多有2人;north用来控制北段桥的使用,初值为1,用于对北段桥互斥;south用来控制南段桥的使用,初值为1,用于对南段桥互斥。 semaphore load=2; semaphore north=1; semaphore south=1;

tosouth(){ P(load);

tonorth(){ P(load);

P(north); 过北段桥; 到桥中间; V(north); P(south); 过南段桥; 到达南岸 V(south); V(load); }

P(south); 过南段桥; 到桥中间 V(south); P(north); 过北段桥; 到达北岸 V(north); V(load); }

11.某寺庙,有小和尚、老和尚若干.庙内有一水缸,由小和尚提水入缸,供老和尚饮用。水缸可容纳 30 桶水,每次入水、取水仅为1桶,不可同时进行。水取自同一井中,水井径窄,每次只能容纳一个水桶取水。设水桶个数为5个,试用信号量和PV操作给出老和尚和小和尚的活动。 解:

semaphore empty=30;// 表示缸中目前还能装多少桶水,初始时能装30桶水 semaphore full=0;// 表示缸中有多少桶水,初始时缸中没有水

semaphore buckets=5;// 表示有多少只空桶可用,初始时有5只桶可用 semaphore mutex_well=1;// 用于实现对井的互斥操作 semaphore mutex_bigjar=1; // 用于实现对缸的互斥操作

young_monk(){ while(1){ P(empty); P(buckets); go to the well; P(mutex_well); get water; V(mutex_well); go to the temple; P(mutex_bigjar);

pure the water into the big jar; V(mutex_bigjar); V(buckets); V(full); } }

old_monk(){ while(){ P(full);

P(buckets);

P(mutex_bigjar); get water;

V(mutex_bigjar); drink water; V(buckets); V(empty); } }

12.试用信号灯与PV操作实现司机与售票员之间的同步问题。设公共汽车上有一个司机和一个售票员,其活动如下图 所示。

为了安全起见,显然要求: (1)关车门后方能启动车辆;(2)到站停车后方能开车门。亦即“启动车辆”这一活动应当在“关车门”这一活动之后,“开车门”这一活动应当在“到站停车”这一活动之后。

解:如果进程P2尚未推进到②处时,进程P1已经推进到①处,则P1应等待直到P2推进到②处为止;同样,如果进程P1尚未推进到③处时,进程P2已经推进到④处,则P2应等待直到P1推进到③处为止。如果进程P1在①处发生了等待,则当进程P2执行到②处时应将P1唤醒;同样,如果进程P2在④处发生了等待,则当进程P2执行到③处时应将P1唤醒。用信号量和P、V操作解决这一问题,需要定义两个信号量,一个信号量start表示是否允许司机启动车辆,另一个信号量open表示是否允许售票员开车门。初始状态是车停在始发站,车门开着,等待乘客上车。因此,两个信号量的初值都是0。 semaphore start=0; semaphore open=0; 司机的活动: P1: do{ P(start); 启动车辆; 正常行车;

售票员的活动: P2: do{ 关车门; V(start); 售票;

到站停车; V(open); }while (1); P(open); 开车门; }while (1);

为了安全起见,显然要求:关车门后才能启动车辆;到站停车后才能开车门。所以司机和售票员在到站、开门、关门、启动车辆这几个活动之间存在着同步关系。用两个信号量S1、S2分别表示可以开车和可以开门,S1的初值为1,S2的初值为0。用PV操作实现司机进程和售票员进程同步的算法描述如下:

司机: 售票员: P(S1) 售票 启动车辆 P(S2)

正常行车 开车门 到站停车 关车门 V(S2) V(S1)

另外,程序中PV操作出现的顺序与信号量的初值设置有关,以本题为例,算法如下描述时,S1、S2的初值均应为0。

司机: 售票员: 正常行车 售票 到站停车 P(S2)

V(S2) 开车门 P(S1) 关车门

启动车辆 V(S1 13. 设有A、B、C三组进程,它们互斥地使用某一独占型资源R,使用前申请,使用后释放。资源分配原则如下:

(1) 当只有一组申请进程时,该组申请进程依次获得R;

(2) 当有两组申请进程时,各组申请进程交替获得R,组内申请进程依次获得R; (3) 当有三组申请进程时,各组申请进程轮流获得R,组内申请进程依次获得R。 试用信号量和PV操作分别给出各组进程的申请活动程序段和释放活动程序段。 解:

int free=1;//设备状态标志 semaphore mutex=1;

semaphore qa=qb=qc=0; //各组等待队列

int counta=countb=countc=0;//等待队列长度 A组申请: A组释放: P(mutex); P(mutex); if(free==1){ if(countb>0){ free=0; countb--; V(mutex); V(qb); } }else{

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

Top