什么是使用生产者消费者问题的共享内存概念?


进程间通信需要通信来建立一个共享内存区域。共享内存区域存在于创建共享内存段的进程的地址空间中。其他进程使用附加到其地址空间的共享内存段进行通信。

操作系统防止一个进程访问另一个进程的内存。

在共享内存中,两个或多个进程可以通过读取和写入共享内存区域中的数据来交换信息。进程还负责确保它们没有写入相同的内存位置。

生产者-消费者问题

现在,让我们讨论生产者-消费者进程问题。

步骤 1 - 生产者进程产生由消费者进程消费的信息。例如,一个编译器产生汇编代码,该代码由汇编器消费。汇编器可以生成由加载器消费的目标模块。

步骤 2 - 它使用共享内存的概念。

步骤 3 - 如果我们希望允许生产者和消费者进程并发运行,我们必须提供一个项目缓冲区,生产者可以填充该缓冲区,而消费者可以清空该缓冲区。

步骤 4 - 该缓冲区将驻留在生产者和消费者进程共享的内存区域中。

步骤 5 - 生产者可以在消费者消费另一个项目的同时生成一个项目。

步骤 6 - 生产者和消费者必须同步,以便消费者不会尝试消费尚未生成的项目。

缓冲区类型

缓冲区有两种类型,如下所示:

  • 无界缓冲区 - 它对缓冲区的大小没有限制。消费者可能需要等待新项目,但生产者始终可以生成新项目。

  • 有界缓冲区 - 它假设一个固定的缓冲区大小。

如果缓冲区为空,消费者必须等待;如果缓冲区已满,生产者必须等待。

以下是共享内存系统的结构

更新于: 2021年11月30日

3K+ 浏览量

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告