信号量

更新时间:
2023-12-14
下载文档

信号量

本标准中定义的信号量是计数信号量,通常用于提供对分区资源的受控访问。进程等待信号量以访问分区资源,然后在它完成后向信号量发出信号。本例中的信号量的值表示当前可用的分区资源的数量。

CREATE_SEMAPHORE 操作为分区中的任何进程使用创建一个信号量。在创建时,将定义信号量的初始值、最大值和队列规则。

等待信号量上的进程按 FIFO 或优先级顺序排队。在优先级顺序的情况下, 对于相同的优先级,进程也按 FIFO 顺序排队(最久的等待进程在 FIFO 的前面)。

如果信号量大于零,则 WAIT_SEMAPHORE 操作会减少信号量的值。如果该值已经为零,则可以选择将调用进程排队,直到发出信号或指定的(作为服务调用的一部分)实时持续时间到期为止。

SIGNAL_SEMAPHORE 操作会增加信号量的值。如果信号量上有等待的进程,将依照排队规则算法 FIFO 或优先级顺序来确定哪个队列进程将接收信号。

当一个进程试图等待一个零值信号量时,以及当一个信号量发出信号表示有进程在其上排队时,将发生进程的重新调度。

当一个进程从队列中移除时,无论是通过信号量发出信号,还是通过指定的超时期限到期,该进程都将被移动到就绪状态(除非另一个进程已将其挂起)。

文档内容是否对您有所帮助?
有帮助
没帮助