首页 > 试题广场 >

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

[单选题]
若 x 是管程内的条件变量,则当进程执行 x.wait()时所做的工作是
  • 实现对变量 x 的互斥访问
  • 唤醒一个在 x 上阻塞的进程
  • 根据 x 的值判断该进程是否进入阻塞状态
  • 阻塞该进程,并将之插入 x 的阻塞队列中
管程是操作系统的资源管理模块,代表共享资源的数据结构以及对该共享数据结构实施操作的一组过程所组成。

我们看到管程的组成:
① 名称
② 共享数据结构说明
③ 对该数据结构进行操作的一组过程
④ 数据初始化代码

而要实现进程互斥
①同一管程内的过程仅能访问同一管程内的数据结构,同样,同一管程内的数据结构也只能被同一管程内的过程访问。(也就是完全封闭的)
②每次只允许一个进程进入管程,执行管程内的过程(操作管程内的临界资源),从而实现了进程互斥。
③管程类型提供了一组由程序员定义的、在管程内互斥的操作,确保一次只有一个进程在管程内活动。
④进程通过管程请求临界资源未满足时,管程将其加入等待队列。

这时,我们的条件x就出来了,一个wait,一个singal。
该进程需要被挂起或阻塞时,则调用 x.wait; 将自己插入 x 条件变量的等待队列中,并释放管程,直到 x 条件变化。
调用 x.signal,重新启动一个因 x 条件而被阻塞或挂起的进程;如果 x 的等待队列是空的,则继续执行原进程,

发表于 2021-10-14 16:35:33 回复(0)