操作系统信号量习题

合集下载

操作系统习题

操作系统习题

操作系统作业【注意】对于作业中的选择题,都要求抄写题目(题中若有插图可不画),并在题目上填写答案。

作业1——进程同步(1)1.设有n个进程使用同一个共享变量,如果最多允许m(m < n)个进程同时进入相关临界区,则信号量的变化范围是。

A. n,n-1,...,n-mB. m,m-1,...1,0,-1,...m-nC. m,m-1,...1,0,-1,...m-n-1D. m,m-1,...1,0,-1,...m-n+12.对于有两个并发进程的系统,设互斥信号量为mutex,若mutex=0,则。

A. 表示没有进程进入与mutex相关的临界区B. 表示有一个进程进入与mutex相关的临界区C. 表示有一个进程进入与mutex相关的临界区,另一个进程等待进入D.表示有两个进程进入与mutex相关的临界区3.S.queue,S.value是信号灯S的两个组成部分,当S.queue为空时,S.value的值是( ) A.S.value≤0 B.S.value=0 C.S.value=1 D.Svalue≥04.如果信号量的当前值为-3,则表示系统中在该信号量上有个等待进程。

5.下列选项中,操作系统提供给应用程序的接口是。

(2010全国试题)A.系统调用B.中断C.库函数D.原语6.下列选项中,导致创建新进程的操作是。

(2010全国试题)I.用户登录成功II.设备分配III.启动程序执行A.仅I和II B.仅II和III C.仅I和III D.I、II和III7.设与某资源关联的信号量初值为3,当前值为1。

若M表示该资源的可用个数,N表示等待该资源的进程数,则M、N分别是。

(2010全国试题)A.0、1 B.1、0 C.1、2 D.2、0作业2——进程同步(2)1.如何利用信号量机制来实现多个进程对临界资源的互斥访问?2.四个进程A、B、C、D都要读一个共享文件F,系统允许多个进程同时读文件F,但限制是进程A 和进程C不能同时读文件F,进程B和进程D也不能同时读文件F,为了使这四个进程并发执行时能按系统要求使用文件,现用PV操作进行管理,请回答下面的问题:(1)应定义的信号量及初值:。

操作系统习题第二章

操作系统习题第二章

第二章1. 分配到必要的资源并获得处理机时的进程状态是__执行状态_________A 就绪状态B执行状态C阻塞状态 D 撤消状态2. 若进程信号量S的初值为2,当前值为-1(绝对值)则表示有_________个等待进程.A 0 B1 C2 D33. 程序的顺序执行通常在_单道程序_的工作环境中,具有以下特征_程序的可再现性_,程序的并发执行在_多道程序_的工作环境中,具有如下特征__资源共享_____.A 单道程序B 多道程序C程序的可再现性 D 资源共享4. 下列进程变化中, __等待---运行________变化是不可能发生的.A运行--- 就绪B运行---等待C等待---运行 D 等待---就绪5. 当_________时,进程从执行状态转变为就绪状态。

A 进程被调度程序选中B 时间片到C 等待某一事件D 等待的事件发生6.用P、V操作管理临界区时,信号量的初值应定义为_______A -1B 0C 1D任意值7.对于两个并发进程,设互斥信号量为mutex,若mutex=0,则________A 表示没有进程进入临界区B 表示有一个进程进入临界区C表示有一个进程进入临界区,另一个进程等待进入D 表示有两个进程进入临界区8.如果系统中有n个进程,则就绪队列中进程的个数最多为________(就绪队列中的进程只要获得CPU就能运行,CPU中必定有一个正在运行的进程)A n+1B nC n-1 D19. 在多进程的系统中,为了保证公共变量的完整性,各进程应互斥进入临界区.所谓临界区是指__一段程序_______A 一个缓冲区B 一段数据区C 同步机制D 一段程序10.如果系统中有n个进程,则在等待队列中进程的最多个数为_n_______个. (等待队列中的进程还缺少除了CPU以外,还缺少其他资源,如果其他资源获得不了就始终在等待队列)11. 如果信号量的当前值为-4(绝对值)则表示系统中在该信号量上有___4___个等待进程。

操作系统练习题三四五章

操作系统练习题三四五章

第三章进程管理练习题一、选择题1.如果信号量S的值是0,此时进程A执行P(S)操作,那么,进程A会()。

A.继续运行 B.进入阻塞态,让出CPUC.进入就绪态,让出CPU D.继续运行,并唤醒S队列头上的等待进程2. 正在运行的进程在信号量S上操作P操作之后,当S<0,进程将进入信号量的()。

A.等待队列B.提交队列C.后备队列D.就绪队列3.在非剥夺调度方式下,运行进程执行V原语后,其状态()。

A.不变B.要变C.可能要变D.可能不变4. 一个进程被唤醒,意味着()。

A.改进程重新占有了CPUB.进程状态变为就绪C.它的优先权变为最大D.其PCB移至就绪队列的队首5.. 系统感知进程的唯一实体是()。

A.JCBB.FCBC.PCBD.SJT6. 一进程在某一时刻具有()。

A.一种状态B.二种状态C.三种状态D.四种状态7. 进程从运行状态变为等待的原因可能是()。

A.输入/输出事件发生B.时间片到C.输入/输出事件完成D.某个进程被唤醒8. 进程创建原语的任务是()。

A.为进程编制程序B.为进程建立PCB表C.为进程分配CPUD.为进程分配所需的各种资源9. 进程被创建后即进入()排队。

A.阻塞队列B.就绪队列C.缓冲队列D.运行队列10.在操作系统中,进程是一个具有一定独立功能的程序在某个数据集上的一次。

A)等待活动 B)运行活动 C)单独操作 D)关联操作11.下面对进程的描述中,错误的是。

A)进程是动态的概念 B)进程执行需要处理机 C)进程是有生命期的 D)进程是指令的集合12. 进程和程序的本质区别是( ) 。

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

A)运行一就绪 B)运行一等待 C)等待一运行 D)等待一就绪14.一个运行的进程用完了分配给它的时间片后,它的状态变为A)就绪 B)等待 C)运行 D)完成15.在进程管理中,当时,进程从阻塞状态变为就绪状态。

操作系统信号量例题

操作系统信号量例题

操作系统信号量例题信号量是操作系统中用于同步和互斥的一种机制。

它可以用于进程间的通信和资源的管理。

下面我将从多个角度来回答关于操作系统信号量的例题。

1. 什么是信号量?信号量是一个整数变量,用于控制对共享资源的访问。

它可以是二进制信号量(取值为0或1)或计数信号量(取值大于等于0)。

二进制信号量用于互斥访问共享资源,计数信号量用于控制资源的数量。

2. 信号量的基本操作有哪些?常见的信号量操作有P操作(等待操作)和V操作(发送操作)。

P操作用于申请资源,如果资源不可用,则进程将被阻塞。

V操作用于释放资源,使得其他等待资源的进程可以继续执行。

3. 请举个例子说明信号量的使用场景。

假设有一个共享资源,比如打印机,多个进程需要使用它。

为了避免冲突,可以使用信号量来进行控制。

当一个进程要使用打印机时,它需要执行P操作来申请打印机资源,如果打印机正在被其他进程使用,则该进程将被阻塞。

当打印机空闲时,进程执行V操作释放打印机资源,其他等待资源的进程可以继续执行。

4. 信号量如何实现互斥?互斥是指只允许一个进程访问共享资源。

可以使用二进制信号量来实现互斥。

当一个进程要访问共享资源时,它执行P操作申请资源,如果资源已经被其他进程占用(信号量的值为0),则该进程被阻塞。

当资源被释放时,执行V操作使得等待资源的进程可以继续执行。

5. 信号量如何实现同步?同步是指多个进程按照一定的顺序执行。

可以使用计数信号量来实现同步。

例如,有两个进程A和B,进程A需要等待进程B完成某个操作后才能继续执行。

可以使用一个计数信号量来控制,初始值为0。

进程A执行P操作等待信号量,进程B完成操作后执行V 操作释放信号量,进程A才能继续执行。

6. 信号量的优缺点是什么?信号量的优点是可以实现进程间的同步和互斥,避免竞态条件和资源冲突。

它是一种简单而有效的机制。

然而,信号量也存在一些缺点。

例如,信号量的使用需要谨慎,如果使用不当可能导致死锁或活锁的发生。

c操作系统专题 信号量基本概念题

c操作系统专题 信号量基本概念题

第一部分:信号量基本概念1 What is the meaning of the term busy waiting? What other kinds of waiting are there in an operating system? Can busy waiting be avoided altogether? Explain your answer.答:忙等是整形信号量固有的问题。

当一个进程无法进入临界区时,仍然在就绪队列中,也可能占有CPU,浪费了CPU时间。

整形信号量也称自旋锁,有时在多处理器系统中也有用。

操作系统中其它种类的等待还有进程在等待队列中等待I/O完成、记录型信号量的阻塞式等待。

但这些等待不是“忙等”,因为他们在等待队列中,不可能占CPU。

采用了记录型信号量后,消除了“忙等”2 Show that, if the wait and signal operations are not executed atomically, then mutual exclusion may be violated答:假如信号量为S,P/V操作是两个并发的进程(或线程)。

这时可以看到:S既是信号量,也是P/V操作的共享变量!如果P/V操作不是原子的,那么P修改S 期间V操作可能插入,反之亦然。

这可能会使S的值出现错误。

3. 何谓与时间有关的错误 ? 举例说明之。

答:多个并发进程竟争使用同一个共享变量,可能会造成共享变量的值出错,这种错误与进程推进的时间有关。

这种错误不是必然会发生的,有很大偶然性。

一旦发生很难检侧出来,是并发程序设计的一个重大问题。

教材P48-48演示了这种错误,但没有明确指出这是“与时间有关的错误”4.试分析临界区的大小与系统并发性之间的关系。

答:关于同一组变量的临界区域是不能并发执行的代码(只能串行执行),临界区越大,并发性越差,因而编写并发程序应尽量减小临界区域的大小和执行时间。

操作系统-进程同步-信号量练习题

操作系统-进程同步-信号量练习题

1【单选题】用P、V操作管理临界区时,互斥信号量的初值应定义为( A)。

•A,1•B,0•C,-1•D,任意值2【单选题】在操作系统中,对信号量S的P原语操作定义中,使进程进入相应等待队列等待的条件是( )。

•A,S>0•B,S = 0•C,S<0•D,S<>0我的答案:C3【单选题】信号量S的初值为8,在S上执行了10次wait 操作,6次signal操作后,S的值为(D )。

•A,10•B,8•C,6•D,4P操作每执行一次,信号量减1;V操作每执行一次,信号量加1.所以答案为8-10+6 = 44【单选题】用V操作唤醒一个等待进程时,被唤醒进程的状态应变成( B)状态。

•A,执行•B,就绪•C,阻塞•D,挂起被唤醒的进程由等待状态变为就绪状态。

5【单选题】利用Wait和signal操作可以( )。

•A,实现进程互斥和同步•B,检测死锁•C,解除死锁•D,防止死锁我的答案:A6【单选题】两个并发进程,设互斥信号量mutex(初值为1),若信号量=0;则(B )•A,表示没有进程进入临界区•B,表示有一个进程进入临界区•C,表示有一个进程进入临界区,另一个进程等待进入•D,表示两个进程进入临界区临界区不允许两个进程同时进入,D选项明显错误。

mutex初值为1,表示允许一个进程进入临界区,当有一个进程进入临界区且没有进程等待进入时,mutex值减1,变为0。

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

•A,对•B,错我的答案:B8【单选题】有3个进程,两台打印机,用wait和sigual操作来实现互斥访问打印机,则信号量S的取值范围是( )•A,2,1,0,-1•B,3,2,1,0•C,2,1,0,-1,-2•D,1,0,-1,-2我的答案:如果n个进程共享两个打印机,信号量取值范围:-(n-2)~2;9【单选题】设与某资源相关的资源信号量K,初值为3,当前值为1,则可用资源个数为( ),等待资源的进程数为( )。

操作系统 信号量机制P、V操作习题全解

操作系统 信号量机制P、V操作习题全解
get paper and tobacco; signal (done); }
smoker2 () /* has paper */ while(1) { wait (TobaccoMatch);
get tobacco and match; signal (done); } Smoker3 () /* has match */ while(1) { wait (PaperMatch); get paper and match; signal (done); }

• get process: while (1) {
read data; wait (empty1); wait (s1)
put data into buffer1 //因为是单缓,故无in指针,可写为 // buffer1=x; signal (s1) signal (full1) }
• Copy process: while (1) {
– 进程A专门拣黑子,进程B专门拣白子;
– 每个进程每次只拣一个子,当一个进程在拣 子时不允许另一个进程去拣子;
– 当一个进程拣了一个棋子(黑子或白子)以 后,必须让另一个进程拣一个棋子(黑子或 白子),并要求A进程首先开始。
• 定义两个同步信号量s1,s2;
• 因为要求进程A先开始,故S1初值为1;s2初 值为0;
• Put process: while(1) {
wait (full2) wait (s2)
get data from buffer2 // z=buffer2 signal (s2) signal (empty2)
print data on printer }
• 3.在一个箱子里混装有数量相等的黑色围棋子 和白色围棋子,现要用自动分拣系统把黑子和 白子分开,该系统由两个并发执行的进程组成, 功能如下:

操作系统原理与应用(第2版)清大版第2章习题参考答案

操作系统原理与应用(第2版)清大版第2章习题参考答案

1、进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

在程序并发执行时已不再具有封闭性,而且产生了许多新的特性和新的活动规律。

程序这一静态概念已不足以描述程序的并发执行的特性。

为了适应这一新情况,引入了一个能反应程序并行执行特点的新概念——进程(process)。

有的系统也称为任务(task)。

2、进程:是程序的一次执行,是动态概念;一个进程可以同时包括多个程序;进程是暂时的,是动态地产生和消亡的。

程序:是一组有序的静态指令,是静态概念;一个程序可以是多个进程的一部分;程序可以作为资料长期保存。

3、能够看到。

进程控制块PCB表示进程的存在。

为进程的实体为:程序部分描述了进程所要完成的功能,它通常可以由若干个进程所共享。

数据部分包括程序运行时所需要的数据和工作区,它通常是各个进程专有的。

4、可再现性:程序重复执行时,必将获得相同的结果。

即对于程序A来说,第一次运行得到一结果,第二次运行时若中间有停顿,但最后的结果必将与第一次一样。

封闭性:程序一旦开始运行,其计算结果和系统内资源的状态不受外界因素的影响。

5、1)运行状态:进程正占用CPU,其程序正在CPU上执行。

处于这种状态的进程的个数不能大于CPU的数目。

在单CPU机制中,任何时刻处于运行状态的进程至多是一个。

2)就绪状态:进程已具备除CPU以外的一切运行条件,只要一分得CPU马上就可以运行(万事具备,只欠东风)。

在操作系统中,处于就绪状态的进程数目可以是多个。

为了便于管理,系统要将这多个处于就绪状态的进程组成队列,此队列称为就绪队列。

3)封锁状态:进程因等待某一事件的到来而暂时不能运行的状态。

此时,即使将CPU 分配给它,也不能运行,故也称为不可运行状态或挂起状态。

系统中处于这种状态的进程可以是多个。

同样,为了便于管理,系统要将它们组成队列,称为封锁队列。

封锁队列可以是一个,也可以按封锁原因形成多个封锁队列。

6、(1)1---分到CPU,2---时间片到,3---等待某一事件的发生,4---所等待事件已发生。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(一)图书馆有100个座位,每位进入图书馆的读者要在登记表上登记,退出时要在登记表上注销。

要几个程序?有多少个进程?(答:一个程序;为每个读者设一个进程)
(1)当图书馆中没有座位时,后到的读者在图书馆为等待(阻塞)
(2)当图书馆中没有座位时,后到的读者不等待,立即回家。

解(1 )
设信号量:S=100;MUTEX=1
P(S)
P(MUTEX)
登记
V(MUTEX)
阅读
P(MUTEX)
注销
V(MUTEX)
V(S)
解(2)
设整型变量COUNT=100;
信号量:MUTEX=1;
P(MUTEX);
IF (COUNT==0)
{ V(MUTEX);
RETURN;
}
COUNT=COUNT-1;
登记
V(MUTEX);
阅读
P(MUTEX);
COUNT=COUNT+1;
V(MUTEX);
RETURN;
(二)有一座东西方向的独木桥;用P,V操作实现:
(1)每次只允许一个人过桥;
(2)当独木桥上有行人时,同方向的行人可以同时过桥,相反方向的人必须等待。

(3)当独木桥上有自东向西的行人时,同方向的行人可以同时过桥,从西向东的方向,只允许一个人单独过桥。

(此问题和读者与写者问题相同,东向西的为读者,西向东的为写者)。

(1)解
设信号量MUTEX=1
P (MUTEX)
过桥
V (MUTEX)
(2)解
设信号量:MUTEX=1 (东西方互斥)
MD=1(东向西使用计数变量互斥)
MX=1(西向东使用计数变量互斥)
设整型变量:CD=0(东向西的已上桥人数)
CX=0(西向东的已上桥人数)
从东向西:
P (MD)
IF (CD=0)
{P (MUTEX)}
CD=CD+1
V (MD)
过桥
P (MD)
CD=CD-1
IF (CD=0)
{V (MUTEX)}
V (MD)
从西向东:
P (MX)
IF (CX=0)
{P (MUTEX)}
CX=CX+1
V (MX)
过桥
P (MX)
CX=CX-1
IF (CX=0)
{V (MUTEX)}
V (MX)
(3) 解:从东向西的,和(2)相同;从西向东的和(1)相同。

(三)有一个俱乐部,有甲乙两个服务员,当顾客有请求时,甲负责送烟,乙负责送火,无顾客请求时,服务员睡眠。

顾客自己不能带烟和火,当顾客要抽烟时,可请求服务员送烟和火,烟和火还未送到时,顾客必须等待。

设信号量:SY, SH,CY,CH:初值都为0 S 理解为请求量,C 理解为现有量
甲服务员
REPEAT
P(SY)
送烟
V(CY)
UNTIL FALSE
乙服务员
REPEAT
P(SH)
送火
V(CH)
UNTIL FALSE
顾客
V(SY)/*(请求送烟)*/
V(SH)/*(请求送火)*/
P(CY)/* (等烟)*/
P(CH)/* (等火)*/
抽烟
(四)一家四人父、母、儿子、女儿围桌而坐;桌上有一个水果盘;
(1)当水果盘空时,父亲可以放香蕉或者母亲可以放苹果,但盘中已有水果时,就不能放,父母等待。

当盘中有香蕉时,女儿可吃香蕉,否则,女儿等待;当盘中有苹果时,儿子可吃,否则,儿子等待。

解设信号量:SE=1 (空盘子);SA=0 (放了苹果的盘子);SB=0 (放了香蕉的盘子)
父亲
REPEAT
剥香蕉
P(SE)
放香蕉
V(SB)
UNTIL FALSE
母亲
REPEAT
削苹果
P(SE)
放苹果
V(SA)
UNTIL FALSE
儿子
P(SA)
拿苹果
V(SE)
吃苹果
女儿
P(SB)
拿香蕉
V(SE)
吃香蕉
(2)把(1)改为:儿子要吃苹果时,请母亲放苹果,女儿要吃香蕉时,请父亲放香蕉,(还是盘子为空时才可以放)。

(2)解:再增加两个信号量:SF=0, SM=0
父亲
REPEAT
P(SF)
剥香蕉
P(SE)
放香蕉
V(SB)
UNTIL FALSE
母亲
REPEAT
P(SM)
削苹果
P(SE)
放苹果
V(SA)
UNTIL FALSE
儿子
V(SM)
P(SA)
拿苹果
V(SE)
吃苹果
女儿
V(SF)
P(SB)
拿香蕉
V(SE)
吃香蕉
(五)有一个超市,最多可容纳N个人进入购物,当N个顾客满员时,后到的顾客在超市外等待;超市中只有一个收银员。

可以把顾客和收银员看作两类进程,两类进程间存在同步关系。

写出用P;V操作实现的
两类进程的算法(2003年系统设计员考试的题目)
解:设信号量:S=0,C=0 (顾客与收银员的同步信号量)(一个请求,一个付出),M=N
收银员
P(S)
收银
V(C)
顾客
P(M)
进入店内购物
V(S)
P(C)
V(M)
(六)有一个理发店,店内共有20个座位供顾客等待理发,(进入理发店的顾客,都在此座位上等待理发,正在理发的顾客不占用此座位),当20个座位坐满了,后到的顾客不等待,立即回家。

当没有顾客时,理发师睡眠等待。

解:设信号量:S=0.C=0,MUTEX=1 互斥锁
设整型变量SM=20
理发师
REPEAT
P(S) -------如无顾客,理发师等待
V(C)叫一个顾客理发
理发
UNTIL FALSE
顾客
P(MUTEX)
IF (SM=0)
{ V(MUTEX)――――满座,离开,回家
RETURN
ELSE
SM=SM-1―――――空座位数减1
V(MUTEX)
}
V(S)――――――――通知理发师,增加了一个顾客,如理发师在等待则唤醒他
P(C) ———————等理发师叫自己理发
P(MUTEX)
SM=SM+1―――――被叫到,释放一个空的座位
V(MUTEX)
接受理发
如果此题改为:满座时,顾客等待空座位:则顾客进程的程序修改如下:
把SM设为信号量SM=20
顾客
P(SM) ---------------------申请一个座位,无则等待
V(S)――――――――通知理发师,增加了一个顾客,如理发师在等待则唤醒他
P(C) ———————等理发师叫自己理发
V(SM)
接受理发
(七)一个盒子,内有黑白两种棋子(数量相等),甲每次从盒子中取出一颗黑子,乙每次从盒子中取出一颗白子,一人取了棋子后,必须等另一方取过棋子方可再取,(可假设甲先取)。

解:设信号量:SJ=1,SY=0

REPEAT
P(SJ)
取一颗黑子
V(SY)
UNTIL 盒子中无黑子

REPEAT
P(SY)
取一颗白子
V(SJ)
UNTIL 盒子中无白子
(八)按要求完成下面的程序。

设有三个进程,input进程、compute进程和output进程;它们通过共享一个缓冲区buf的合作关系如下:
(1)input进程每次输入数据后,把数据送到buf,供compute进程计算和output进程打印;
(2)comput进程每次从buf取出已输入的可计算的数据进行计算,并当output进程把输入数据打印完成后,把计算结果送入buf供output进程打印;
(3)output进程每次按顺序把buf中的输入数据和计算结果在打印机上输出。

解:
设信号量:sa=1,sb=sc=sd=0, 请把能正确实现这三个进程同步关系的P、V 操作的语句填入下面的程序。

procedure input
begin
local data
repeat
get(data);/*输入数据到data*/
p(sa);
buf=data;
(1)
V ( sc )
v(sb);
until false
end;
procedure compute
begin
locol data
repeat
(2)
P ( sb )
data=buf;
计算data并把结果保存在data;
(3)
P ( sd )
buf=data;
v(sc);
until false
end;
procedure output
begin
local data
repeat
P(sc)
打印buf;
(4)
V ( sd )
p(sc)
打印buf;
v(sa);
until false
end;。

相关文档
最新文档