🏷️ 知识点:条件变量
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() 操作。