设为首页收藏本站 JeeStudy企业开发官网①

JEE Study|JAVA EE|企业级开发学习网

 找回密码
 立即加入

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 2278|回复: 0
打印 上一主题 下一主题

进程管理 - 进程间通信

[复制链接]

219

主题

221

帖子

1418

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1418

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

跳转到指定楼层
楼主
发表于 2020-4-11 21:35:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    进程间通信有两种基本模型:共享内存(shared memory)消息传递(message passing)
    在共享内存模型中,建立起一块供协作进程共享的内存区域,进程通过向此共享区域读出或写入数据来交换信息。
    在消息传递模型中,通过在协作进程间交换消息来实现通信。



    在操作系统中,上述两种模型都很常用,而且许多系统也实现了这两种模型。 消息传递对于交换较少数量的数据很有用,因为不需要避免冲突。对于计算机间的通信,消息传递也比共享内存更易于实现。共享内存允许最快、最方便的通信,在计算机中它可以达到内存的速度。共享内存比消息传递快,消息传递系统更常用系统调用来实现,因此需要更多耗时的内核介入任务。与此相反,在共享内存系统中,仅在建立共享内存区域时需要系统调用,一旦建立了共享内存,所有的访问都被视为常规的内存访问,不需要来自内核的帮助。


共享内存系统
    采用共享内存的进程间通信需要通信进程建立共享内存区域。通常,一块共享内存区域驻留在生成共享内存段进程的地址空间。其他希望使用这个共享内存段进行通信的进程必须将此放到它们自己的地址空间中。通常操作系统试图阻止一个进程访问另一进程的内存。共享内存需要两个或更多的进程取消这个限制,它们通过在共享区域内读或写来交换信息。数据的形式或位置取决于这些进程而不是受控于操作系统。进程还负责保证它们不向同一区域同时写数据。
   
注意:JAVA中不支持共享内存。


消息传递系统
    上面讨论了协作进程如何能通过共享内存环境来通信。 这种方法要求进程共享一个内存区域,并且需要应用程序员自己明确编写访问和操作共享内存代码。实现同样效果的另一种方法是操作系统提供机制,让协作进程能通过消息传递工具来进行通信
    消息传递提供一种机制以允许进程不必通过共享地址空间来实现通信和同步,这在分布式环境中(通信进程可能位于由网络连接起来的不同计算机上)特别有用。
    消息传递工具提供至少两种操作:发送(消息) 和接收(消息 )。由进程发送的消息可以是定长的或变长的。如果只能发送定长消息,那么系统级的实现相当简单。不过,这 一限制使得编程任务更困难。相反地,变长消息要求更复杂的系统级实现, 但是编程任务变得比较简单。这是贯穿整个操作系统设计的一种常见的折中问题。
    如果进程 P 和 Q 需要通信,那么它们必须彼此相互发送消息和接收消息,它们之间必须有通信链路(communication link)。该链路有多种实现方法。这里不关心链路的物理实现(如共享内存、硬件总线 或 网络), 而只关心逻辑实现。








本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即加入

x

知识改变命运!

JAVA EE 学习     JAVA EE 资料
JEE Study:企业级开发学习网!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

QQ|Archiver|手机版|小黑屋|JEE Study ( 京ICP备16036936   JeeStudy企业开发官网①

GMT+8, 2024-12-2 21:44 , Processed in 0.222194 second(s), 29 queries .

Powered by JeeStudy!

© 2008-2020 JEE Study 企业级开发学习网

快速回复 返回顶部 返回列表