操作系统选择题及答案解析(川大) 第五章 并发:互斥和同步

注:本文以操作系统—精髓与设计原理(第九版中文翻译版)为参考,答案仅供参考,如有疑惑欢迎提出指正。转载请标明出处。

第五章

1. (单选题) 临界区指的是:并发进程中访问共享变量的:(   )

A代码/Code段

B数据/Data段

C堆栈/Stack段

D堆/Heap段

正确答案:A

答案解析:

临界区指的是一段代码,在这段代码中进程将访问共享资源,当另外一个进程已在这段代码中运行时,这个进程就不能在这段代码中执行(P122)。

2. (单选题) 生产者/消费者问题不能视为一个的特殊读者/写者问题的原因是:(   )

A生产者和消费者其实同时是读者和写者

B生产者/消费者各自一个,而读者/写者各自可以有多个

C以上都不是

D当写者执行写入的时候,读者也可以执行读取;而生产者/消费者不同

正确答案:A

答案解析:

A.

生产者消费者问题和读者写者问题的区别在于:

消费者是要消耗数据的,而读者不消耗数据。

意味着不论生产者消费者,都要进行读写操作都不能与其他任何一个人的操作同时进行

D.

说法错误,任一写者在完成写操作之前不允许其他读者或写者工作

(1)生产者消费者问题(P138)

①系统中有一组生产者进程和一组消费者进程,生产者进程每次生产一个产品放入缓冲区,消费者进程每次从缓冲区中取出一个产品并使用。【注:这里的“产品”理解为某种数据】

生产者、消费者共享一个初始为空、大小为n的缓冲区。

②只有缓冲区没满时,生产者才能把产品放入缓冲区,否则必须等待

【当缓冲区满时,生产者需要等待消费者取走产品才能继续操作,有顺序,所以是同步关系】

③只有缓冲区不空时,消费者才能从中取出产品,否则必须等待【同理也是同步关系】。

④缓冲区是临界资源,各进程必须互斥地访问

(2)读者写者问题

有读者和写者两组并发进程,共享一个文件,当两个或两个以上的读进程同时访问共享数据时不会产生副作用,但若某个写进程和其他进程(读进程或写进程)同时访问共享数据时则可能导致数据不一致的错误。因此要求:

①允许多个读者可以同时对文件执行读操作

②只允许一个写者往文件中写信息

任一写者在完成写操作之前不允许其他读者或写者工作

④写者执行写操作前,应让已有的读者和写者全部退出

3. (单选题) 没有指定进程从队列中移除的顺序的信号量称为:(   )

A强信号量

B以上都不是

C弱信号量

D二元信号量

正确答案:C

答案解析:

没有指定进程从队列中移除的顺序的信号量称为弱信号量。在弱信号量中,进程可以从信号量的队列中移除,但移除的顺序是不确定的,也就是说,进程可以按任意顺序移除信号量。

与强信号量不同,强信号量要求进程必须从信号量的队列中移除,且移除的策略是先进先出(FIFO):被阻塞最久的进程最先从队列释放

与弱信号量、二元信号量等其他信号量类型相比,弱信号量的使用较为频繁,因为它可以满足大多数同步原语的需求。

4. (单选题) 多个进程或线程在读写一个共享数据时,如果最终的运行结果依赖于它们执行的相对时间,这个现象被称为:(   )

A同步

B互斥

C条件竞争/Race Condition

D死锁

正确答案:C

答案解析:

多个进程或线程在读写一个共享数据时,如果最终的运行结果依赖于它们执行的相对时间,这个现象被称为条件竞争/Race Condition(P128)。

在条件竞争情况下,多个进程或线程在访问共享数据时,可能会同时读取或写入数据,从而导致数据的不一致性和错误的结果。同步和互斥都是用于控制进程或线程对共享数据的访问的方法,而条件竞争则是一种潜在的问题,它可能导致同步和互斥方法失效,导致错误的结果。死锁是指多个进程或线程无法继续执行,因为资源已经被其他进程或线程占用,因此无法继续申请资源的现象。

5. (单选题) 以下哪个术语不属于“并发/Concurrency”的“核心的四个要解决的问题”的范畴:(   )

A互斥/Mutual Exclusion

B死锁/Deadlock

C同步/Synchronization

D条件竞争/Race Condition

正确答案:D

答案解析:

“并发/Concurrency”的“核心的四个要解决的问题是互斥、死锁、同步和饥饿(参考五六章的题目)。

6. (单选题) 为了在进程所竞争的关键资源上实现互斥,同一时间只允许一个程序:(   )

A以上都不是

B展示合作

C进入程序的临界区

D进行消息传递

正确答案:C

答案解析:

在进程竞争关键资源的情况下,为了实现互斥,同一时间只允许一个程序进入临界区(critical section)(P129)。临界区是指一段对关键资源进行访问的程序代码,只有当前程序在临界区中执行完毕后,才能轮到下一个程序进入临界区。

7. (单选题) 当一个进程在临界区访问某个共享资源时,其他进程不能进入该临界区访问此共享资源的情形, 它被称为:(   )

A同步

B死锁

C互斥

D条件竞争/Race Condition

正确答案:C

答案解析:

当一个进程在临界区访问某个共享资源时,其他进程不能进入该临界区访问此共享资源,这种情况被称为互斥(P122 表5.1)。

8. (单选题) 实现互斥需要满足下列哪些要求:(   )

A对相关进程的执行速度没有任何要求和限制

B一个进程驻留在临界区中的时间必须是有限的

C一次只允许一个进程进入临界区

D以上都是

正确答案:D

答案解析:

要提供对互斥的支持,必须满足以下要求(P131):

  1. 必须强制实施互斥:在与相同资源或共享对象的临界区有关的所有进程中,一次只允许一个进程进入临界区。
  2. 一个在非临界区停止的进程不能干涉其他进程。
  3. 绝不允许出现需要访问临界区的进程被无限延迟的情况,即不会死锁或饥饿。
  4. 没有进程在临界区中时,任何需要进入临界区的进程必须能够立即进入。
  5. 对相关进程的执行速度和处理器的数量没有任何要求和限制
  6. 一个进程驻留在临界区中的时间必须是有限的。

补充:

操作系统中关于解决进程互斥的方法有两种,分别是软件实现和硬件实现。在实现互斥时,需要关心的问题是:是否满足:忙则等待、让权等待、有限等待和空闲让进,这四个条件。

忙则等待:

意思是如果一个进程在使用临界资源,另一个进程也想访问该临界资源,必须等待在使用的进程使用完成。

让权等待:

如果一个进程发现另一个进程正在使用自己想要使用的临界资源,自己目前得不到该资源的访问权时,必须交出CPU资源进入阻塞状态。

有限等待:

一个进程等待访问临界资源,必须能保证在未来的时间里一定能拿到该临界资源的访问权,也就是该进程不会饥饿。

空闲让进:

当进程想访问临界资源时,如果该临界资源空闲,该进程就不用等待直接拿到该临界资源的访问权。

9. (单选题) 读者/写者问题需要要求满足的条件有:(   )

A多个写者可同时写某个共享文件

B以上都不是

C多个读者可同时读某个共享文件

D当写者在写某个共享文件时,读者也可以读取这个共享文件

正确答案:C

答案解析:

读者写者问题(P156)

有读者和写者两组并发进程,共享一个文件,当两个或两个以上的读进程同时访问共享数据时不会产生副作用,但若某个写进程和其他进程(读进程或写进程)同时访问共享数据时则可能导致数据不一致的错误。因此要求:

  1. 任意数量的读进程可同时读这个文件。
  2. 一次只有一个写进程可以写文件。
  3. 若一个写进程正在写文件,则禁止任何读进程读文件。

10. (单选题) 为了实现互斥,可以采用哪些方法/技术:(   )

A信号量

B关中断

C以上均可

D通过特殊的硬件指令

正确答案:C

答案解析:

以上均可(指ABD都可以,这个选项位置被没有意义地错乱了)。

为了实现互斥,可以采用以下方法和技术:

互斥锁 (mutex):使用互斥锁来保护共享资源的访问,确保同一时间只有一个进程可以访问共享资源。

信号量 (Semaphore):使用信号量来管理进程对共享资源的访问,信号量可以表示进程对共享资源的访问权限,0 表示没有访问权限,1 表示已经拥有访问权限,多个信号量可以组合使用来实现多进程间的同步和互斥。

条件变量 (Condition Variable):使用条件变量来实现进程间的等待和唤醒,以实现同步和互斥。

关中断 (disable interrupt):在实现互斥时,可以通过关闭中断的方式来避免中断对互斥操作的影响。

信号量组 (Semaphore Set):使用信号量组来管理多个共享资源的访问,信号量组可以表示多个进程对共享资源的访问权限,从而实现多进程间的同步和互斥。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值