操作系统 共享内存和消息传递的区别
在本文中,您将学习共享内存和消息传递之间的区别。但在讨论区别之前,您必须了解共享内存和消息传递。
共享内存是什么
进程间通信的基本模型是共享内存系统。在共享内存系统中,协作进程通过在地址空间中建立共享内存区域来彼此通信。
如果某个进程希望发起通信并共享数据,则需要在其地址空间中创建一个共享内存区域。然后,如果另一个进程希望通信并尝试读取共享数据,则必须附加到发起进程的共享地址空间。
消息传递是什么
在消息传递过程模型中,进程通过交换消息与其他进程进行通信。为此,进程之间需要一条通信链路,并且该链路必须提供至少两个操作:发送(消息)和接收(消息)。消息的大小可以是可变的或固定的。
向后跳过10秒播放视频向前跳过10秒
共享内存和消息传递之间的主要区别
在这里,您将学到共享内存和消息传递之间的各种主要区别。共享内存和消息传递之间的各种区别如下:
- 共享内存用于在单处理器和多处理器系统之间进行通信。通信进程位于同一台机器上并共享相同的地址空间。另一方面,当通信进程分布在通过网络连接的多个设备上时,最常用的是消息传递。
- 共享内存提供了最大的计算速度,因为通过共享内存完成通信,所以只需要系统调用来建立共享内存。另一方面,消息传递需要时间,因为它通过内核(系统调用)执行。
- 共享内存区域主要用于数据通信。另一方面,消息传递主要用于通信。
- 确保共享内存中的进程不同时写入相同的地址。另一方面,消息传递适用于共享少量数据而不引起冲突。
- 从共享内存读取和写入数据的代码应由开发人员明确编写。另一方面,在这种情况下不需要这样的代码,因为消息传递功能提供了一种通信和同步活动的方法。
共享内存和消息传递的头对头比较
在这里,您将学到共享内存和消息传递之间的头对头比较。共享内存和消息传递之间的主要区别如下:
共享内存 | 消息传递 |
---|---|
它主要用于数据通信。 | 它主要用于通信。 |
它通过共享内存完成通信,因此只需要系统调用来建立共享内存,提供了最大的计算速度。 | 它花费很长时间,因为是通过内核(系统调用)执行的。 |
读写共享内存的代码必须由开发人员显式写入。 | 在此情况下不需要此类代码,因为消息传递特性提供了一个用于通信和同步执行通信进程的活动的方法。 |
它用于在单处理器和多处理器系统之间进行通信,要通信的进程位于同一台机器上并共享相同的地址空间。 | 当通信进程分布在由网络连接的多个设备上时,最常使用它。 |
它是比消息传递更快的通信策略。 | 它是相对于共享内存而言更慢的通信策略。 |
确保共享内存中的进程不要同时写入相同的地址。 | 它用于共享小量的数据而不会引发冲突。 |