根据《操作系统概念》一书,它说:
使用直接通信时,每个想要通信的过程都必须 明确命名通讯的收件人或发件人。这个 该方案在寻址方面表现出对称性。在此方案中,发送和 接收原语定义为:
- 发送(P,消息):发送消息以处理P
- 接收(Q,消息)-从进程Q接收消息。
在非对称情况下,只有发件人为收件人命名;收件人不是 要求命名发送者。在此方案中,发送和接收 原语定义如下:
- 发送(P,消息):发送消息以处理P。
- receive(id,message):从任何进程接收消息;变量id设置为与之通信的进程的名称 已经发生了。
我不明白有什么区别?在非对称方案中,receive()
调用不需要指定发送者ID吗?
答案 0 :(得分:0)
区别在于receive()调用未指定发送者ID。这意味着发件人:收件人关系是多对一(N:1),而对称情况是1:1。许多实现提供了辅助机制来模糊这种含义。
在N:1的情况下,需要对处理多个同时发送者的机制进行一些解释。解释涉及政策:先到先得;随机;优先级,容量:#线程,以及调度参数和约束的继承。
在1:1情况下,不需要策略或容量,可以安全地假定继承是先天的。因此,1:1案例更适合自动化分析。
允许对发件人:收件人对进行动态配置的1:1系统可能比这些已识别系统更加复杂。在这种系统中,发送者可以通过实例化该发送者的接收者的某个过程来发现接收者。在这种安排中,发现策略,容量,继承属性更加复杂。