缓冲区

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

缓冲区

在缓冲区中,消息的每个新实例可能携带唯一且不同的数据,因此不允许在传输期间覆盖以前的数据。

允许缓冲区在消息队列中存储多个消息。发送进程发送的消息以 FIFO 的顺序存储在消息队列中。使用缓冲区时,不会丢失任何消息(如果队列已满,发送方将阻塞)。可以存储在缓冲区中的消息数由在缓冲区创建时定义的最大消息数决定。

CREATE_BUFFER 创建一个缓冲区供分区中的任何进程使用。在创建时,定义缓冲区的最大消息大小、最大消息数和排队规则。

等待缓冲区上的进程按 FIFO 或优先级顺序排队。在优先级顺序的情况下,具有相同优先级的进程按 FIFO 顺序排队。

如果缓冲区上有等待的进程,并且缓冲区不是空的,则将应用队列规则算法(FIFO 或优先级顺序)来确定哪个队列的进程将接收消息。操作系统将把此进程从进程队列中删除,并将其处于就绪状态。操作系统还将从缓冲区消息队列中删除该消息。

当进程试图从空的缓冲区接收消息或向已满的缓冲区发送消息时,将发生进程的重新调度。调用进程将为指定的(作为服务调用的一部分)的实时持续时间而排队。如果未收到消息或未在该时间内发送消息,操作系统将自动从队列中删除进程,并将其处于就绪状态(除非另一个进程挂起)。

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