2018 操作系统 管程条件变量 选择题
第 28 题

若 x 是管程内的条件变量,则当进程执行 x.wait() 时所做的工作是()。

管程 条件变量

A. 实现对变量 x 的互斥访问 B. 唤醒一个在 x 上阻塞的进程 C. 根据 x 的值判断该进程是否进入阻塞态 D. 阻塞该进程,并将之插入 x 的阻塞队列中

[tag_link]

正确答案:D

条件变量管程 内部说明和使用的一种特殊变量,其作用类似于信号量机制中的信号量,都是用于实现进程同步的。需要注意的是,在同一时刻,管程中只能有一个进程在执行。如果进程 A 执行了 x.wait() 操作,那么该进程会阻塞,并挂到条件变量 x 对应的阻塞队列上。这样,管程的使用权被释放,就可以有另一个进程进入管程。如果进程 B 执行了 x.signal() 操作,那么会唤醒 x 对应的阻塞队列队头进程。在 Pascal 语言的管程中,规定只有一个进程要离开管程时才能调用 signal() 操作。