区分操作系统中的共享内存模型和消息传递模型。
共享内存系统是进程间通信的基本模型。在共享内存系统中,协作进程通过建立共享内存区域在地址空间区域进行通信。
共享内存概念基于最快的进程间通信。
如果进程想要启动通信并且有一些数据要共享,则在其地址空间中建立共享内存区域。
之后,另一个想要进行通信并尝试读取共享数据的进程必须附加到启动进程的共享地址空间。
消息传递提供了一种机制,允许进程在不共享相同地址空间的情况下进行通信和同步其操作。
例如——万维网上的聊天程序。
消息传递提供两个操作,如下所示:
发送消息
接收消息
进程发送的消息可以是固定大小的或可变大小的。
对于固定大小的消息,系统级实现很简单。但这使得编程任务更困难。
可变大小的消息需要更复杂的系统级实现,但编程任务变得更简单。
如果进程 P1 和 P2 想要通信,他们需要相互发送和接收消息,这意味着它们之间存在通信链路。
差异
共享内存和消息传递模型的主要区别:
| 共享内存 | 消息传递 |
|---|---|
| 它是数据通信的一个区域 | 消息传递主要用于通信。 |
| 它用于单处理器和多处理器系统之间的通信,其中要通信的进程位于同一台机器上,并且它们共享公共地址空间。 | 它用于分布式环境,其中通信进程位于通过网络连接的远程机器上。 |
| 必须由应用程序程序员显式写入要读取或写入数据的共享内存代码。 | 这里不需要代码,因为消息传递机制提供了一种机制来进行通信和同步通信进程执行的操作。 |
| 由于通信是通过共享内存完成的,因此它将提供最大的计算速度,因此系统调用用于建立共享内存。 | 消息传递是一个耗时的过程,因为它通过内核(系统调用)实现。 |
| 在共享内存中,确保进程不会同时写入同一位置。 | 消息传递适用于共享少量数据,这样就不需要避免冲突。 |
| 与消息传递技术相比,它遵循更快的通信策略。 | 在消息传递中,与共享内存技术相比,通信速度较慢。 |
以下是共享内存系统的结构:![]() | 以下是消息传递系统的结构:![]() |
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP
