1概述:
上文说到,每个进程都有自己的地址空间,包括什么呢?向下生长得栈,向上生长的堆,代码段,数据段等,这些都是进程私有的,如何实现通信的呢?通信需要媒介,这个媒介很重要。
对于研发人员来说,进程不是孤立的,而是相互关联的一个整体,有一些进程需要团结协作来完成任务,所以首先他们就要通信,那通信的方式有哪些呢?首先我们粗略的知道以下几种:
1、管道:pipe 和named pipe.什么是管道?简单的说就是把一个进程的输出当做另一个进程的输入,后面再说。pipe:有亲缘关系的才能通信,named pipe: 没有亲缘关系的也能通信(通信的格式是字节流,无格式)
2.信号:有一本说上的说的好,那就是组成原理中的中断,信号是中断的一种封装(它承载的信息量很少)。
3。消息队列: 简单而言,把消息加入队列和取走信息,但是权限问题很重。
4信号量: OS上的PV操作,看看
5.socket :网络上不同主机进程通信,java网络编程重点。
以下就有5篇文章分别进行详略得当的描述,重点是信号量和socket。
ref: