Linux进程间通信的基本原理、通信方式及其同步方式的理解

***基本原理***:
通常情况下,程序只能访问自身的数据,和其它进程没有沟通,每个进程都是一个单独存在的个体,进程之间不需要协作就可以完成自身的任务了。但随着需要解决问题复杂性的增加,一个进程不可能完成所有的工作,必须由多个进程之间互相配合才能更快、更好、更强的解决问题,如同人与人之间的协作可以做出更大的事情一样。

但是,处于安全性的考虑,OS会限制进程只能访问自身的数据,不能把“手”伸到其它进程的内部,这怎么办呢?进程间的沟通问题怎么解决呢?

有问题,就需要沟通;需要沟通,就需要有沟通的媒介;为了公平和公正,沟通的媒介的控制权不应该属于沟通的任何一方。以此推论下去,在计算机系统中,承担沟通媒介控制任务的就只有OS自身了。

所以,进程间通信的基本原理就是:OS提供了沟通的媒介供进程之间“对话”用。既然要沟通,如同人类社会的沟通一样,沟通要付出时间和金钱,计算机中也一样,必然有沟通需要付出的成本。出于所解决问题的特性,OS提供了多种沟通的方式,每种方式的沟通成本也不尽相同,使用成本和沟通效率也有所不同。我们经常听到的 管道、消息队列、共享内存都是OS提供的供进程之间对话的方式。

既然是沟通,必然是沟通双方有秩序的说话,否则就成吵架了,谁也听不到对方说什么。如同法庭中法官控制控辩双方的发言时机和发言时间一样,OS也必须提供此类的管制方式使得进程的沟通显的有序和谐。我们经常听到的 互斥锁、条件变量、记录锁、文件锁、信号灯均属此列。

沟通的媒介是什么? 

上面我们提到管道、消息队列、共享内存都是OS所提供的对话的方式,进程所说出去的“话”至少需要暂时保存在某个地方,然后才能被别的进程取走(听到)。不同的实现对话方式,保存中间信息的媒介从逻辑上分有文件系统,内核和内存三个部分。其实保存在内核中也是保存在内存中的,只是这部分内存只能OS自己访问,普通进程不能直接读写。

***通信方式***:

经常使用到的进程间通信有:管道、消息队列和共享内存。

>>>
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值