操作系统中的进程通信
在操作系统中并发执行的进程可以是独立进程或合作进程。如果一个进程不能影响或被系统中执行的其他进程影响,则称该进程为独立进程。因此,任何不与任何其他进程共享任何数据的进程都是独立的。如果一个进程可以影响或被系统中执行的其他进程影响,则称该进程为合作进程。因此,很明显,任何与其他进程共享其数据的进程都是合作进程。
提供允许进程合作的环境有很多原因:
信息共享 - 由于多个用户可能对同一信息感兴趣(例如,共享文件),因此我们必须提供一个环境来允许并发访问此类信息。
计算加速 - 如果我们希望某个特定任务运行得更快,则必须将其分解成子任务,每个子任务将与其他子任务并行执行。
模块化 - 我们可以以模块化的方式构建系统,将系统功能划分为单独的进程或线程。
便利性 - 即使是单个用户也可以同时处理许多任务,例如用户可以同时编辑、听音乐和编译。
合作进程需要一个进程间通信 (IPC) 机制,允许它们交换数据和信息。存在两种基本的进程间通信模型:共享内存和消息传递。在共享内存模型中,建立了由合作进程共享的内存区域。
然后,进程可以通过读取和写入共享区域中的数据来交换信息。在消息传递模型中,通信通过合作进程之间交换的消息进行。下图对比了这两种通信模型。上面提到的两种模型在操作系统中都很常见,许多系统都实现了这两种模型。消息传递对于交换少量数据很有必要,因为无需避免冲突。它也比共享内存更容易在分布式系统中实现。一旦共享内存被初始化,所有访问都被视为常规内存访问,并且不需要内核的帮助。它存在缓存一致性问题,这些问题是由于共享数据在多个缓存之间迁移而产生的。随着系统上处理核心的数量增加,我们可能会看到消息传递成为 IPC 的首选机制。
图:通信模型
广告