2020-04-13-课堂小测-进程同步之信号量与管程
北京航空航天大学计算机学院-2020春操作系统课程
以下题目作者为北航计算机学院操作系统课程组,客观题答案由课程组给出,解析及主观题答案均为博主原创,水平有限,如有错误敬请批评指正。
1. 关于管程,不正确的是:(单选)
A. 管程是一种高级同步原语
B. 管程可以解决信号量无法解决的进程同步问题
C. 管程需要依赖编译器和语言的支持
D. 同一时刻,只有一个进程可以在管程内执行
答:B
管程是把分散的临界区集中起来,为每个临界资源设计一个专门机构来统一管理各进程对该资源的访问,是一种高级同步原语,A正确。理论上讲,信号量可以解决任何同步互斥问题,只是复杂程度的区别,所以不存在管程解决了信号量无法解决的问题,B错误。管程是对共享资源管理的封装,通过特定的语言和编译器实现,例如C语言不支持,而Java和Object C支持,C正确。管程机制保证同一时刻,只有一个进程可以在管程内执行,D正确。
2. 下面哪一种进程间通讯手段不属于高级通信:(单选)
A. 管道
B. 共享内存
C. 消息系统
D. 信号
答:D
进程间通信的低级通信:只能传递状态和整数值(控制信息),包括进程互斥和同步所采用的信号量和管程机制。高级通信:能够传送任意数量的数据,包括三类:管道、共享内存、消息系统等。
3. 关于管道不正确的是:(单选)
A. 管道包括有名管道和无名管道
B. 管道是半双工通讯
C. 管道只能用于具有亲缘关系的进程通信
D. 使用管道可以方便地将多个工具组合完成特定功能
答:C
管道又称无名管道(Pipe),管道对其两端的进程而言是一个文件,但具有独立的文件系统,仅存在于内存中,管道是半双工的,B正确。无名管道因为无名,所以只能用于有亲缘关系的进程间通信,为了突破这一限制,人们提出了有名管道(Named Pipe或FIFO),其存在于真正的文件系统中,只要可以访问该路径的进程都可以使用其进行通信,遵循FIFO原则,A正确,C错误。使用管道可以将多个工具组合起来,上一个进程的处理结果直接输入到下个进程进行处理,完成特定功能,D正确。
4. 关于IPC,错误的是:(单选)
A. 消息传递比信号的信息承载量要大
B. 共享内存是最快的IPC形式
C. 套接字不仅可以用于不同机器之间的进程通信,也可以用于本机的两个进程通信
D. 共享内存在效率和安全性上都要优于消息传递
答:D
信号是低级通信,只能传递状态和整数值(控制信息),消息传递属于高级通信,承载的信息比信号要大,A正确。共享内存是最有用和最快的IPC形式,因为其可以避免执行开销巨大的缓冲复制,B正确。套接字是更为一般的进程间通信机制,可以通过网络接口用于不同机器之间的进程间通信,当然也可以用于本机进程间的通讯,C正确。共享内存在效率上远远优于消息传递,但在安全性上劣之,共享内存面临着同步互斥问题,而消息传递通过系统调用实现,D错误。
5. 对于信号量集错误的是:(多选)
A. SP(S, d, e)表示每次申请d个资源,当资源数少于e个时,便不予分配
B. SP(S, 0, 1)表示互斥信号量
C. SP(S, 1, 0)当S=0时禁止任何进程进入临界区
答:A、B
SP(S, d, e)应当表示每次申请e个资源,但当资源数少于d个时便不予分配,A错误。表示互斥信号量的方法是SP(S, 1, 1),每次申请1个资源,当资源数少于1个时阻塞,B错误。SP(S, 1, 0)不申请资源,可以作为一个可控开关,当S≥1时允许多个进程进入临界区,当S=0时禁止任何进程进入临界区,C正确。