【问题标题】:Syncronization on the producer-consumer problem生产者-消费者问题的同步
【发布时间】:2019-09-09 10:07:55
【问题描述】:

我有一个关于生产者-消费者关系的作业问题,我不明白从哪里开始。

问题来了:

请考虑进程之间的生产者-消费者关系 并假设一个进程P1通过缓冲区发送一个5字节的消息流程 P2P2 从缓冲区中读取字符串 "SSNNEMANE NCATA", 而发送的消息P1“CONNESSIONE MANCATA”。你能说什么 关于它们的同步(通过信号量实现)?

有人可以帮忙吗?谢谢!

【问题讨论】:

  • 确定吗?什么都没有。

标签: operating-system buffer ipc semaphore


【解决方案1】:

我认为您的意思是通过 5 字节缓冲区发送消息。你只发布了一个片段,但我认为这个想法是看看应该发生什么;并将其与所做的比较,以生成有关缓冲区如何损坏的假设。

例如,我们如何让缓冲区进入包含 SSNE 的状态:

  1. 发送方应该能够立即将带有“CONNE”的前 5 个字节填充到缓冲区的索引 [0..4] 中。
  2. 接收方从缓冲区消耗 2 个字节后 (“CO”)。
  3. 发件人可以贡献“SS”;这将覆盖前两个索引 [0..1]。
  4. 此时缓冲区看起来像“SSNNE”。

假设 1:信号量可用性计数用于表示缓冲区中的可用空间。该计数已错误地初始化为 7 而不是 5,因此发送方正在破坏缓冲区。在上述步骤中;第 3 步在第 2 步之前进行。

假设 2:可用性信号量 (Hypothesis1) 被错误地用作互斥体,并且两个进程都独立地覆盖了头和尾缓冲区指针。

假设 3:...

现在,根据您看到的模式测试该假设的一致性 - 它是否会产生整个结果。

最后,检查代码,看看是否确实如此。

有效地重复这个生成假设的过程,直到找到解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多