我有一个关于生产者-消费者关系的家庭作业问题,我不知道从哪里开始。
问题出在这里
请考虑流程之间的生产者-消费者关系 并假定 进程P1 通过缓冲区发送 5字节消息 过程P2 。 P2 从缓冲区读取字符串“ SSNNEMANE NCATA” , 发送的邮件 P1 是“ CONNESSIONE MANCATA” 。你能说什么 关于它们的同步化(通过信号量实现)?
有人可以提供帮助吗?谢谢!
答案 0 :(得分:1)
我认为您的意思是通过5字节缓冲区发送消息。您只发布了一个片段,但是我认为这个想法是要查看应该发生的情况。并将其与所做的比较,以得出有关缓冲区如何损坏的假设。
例如,如何使缓冲区进入包含SSNE的状态?
假设1:信号量可用性计数用于表示缓冲区中的可用空间。该计数已被错误地初始化为7而不是5,因此发送方破坏了缓冲区。在上述步骤中;步骤3在步骤2之前进行。
Hypothesis2:可用性信号量(Hypothesis1)被错误地用作互斥量,并且两个进程都分别重写头和尾缓冲区指针。
假设3:...
现在,针对您看到的模式进行假设检验以确保一致性-是否可以生成整个结果。
最后,检查代码以查看是否确实如此。
有效地重复此生成假设的过程,直到找到解决方案为止。