进程通信

本文介绍了五种进程间通信(IPC)的方式:管道、信号、信号量、共享内存及消息队列。通过生动的比喻,详细解释了每种通信机制的工作原理、特点及其适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       

1)进程对白:管道,记名管道,套接字

       人们最常使用的通信手段是对白。对白的特点就是一方发出声音,另一方接收声音。而声音的传递则通过空气(当面或无线交谈),线缆(有线电话)进行传递。类似,进程对白就是一个进程发出某种数据信息,另一方接收数据信息,儿这些数据信息通过一片共享的存储空间进行传递。
       在这种方式下,一个进程想向这片存储空间的一端写入信息,另一个进程从存储空间的另外一端读取信息。这看上去像什么?管道。管道所占用的空间既可以是内存,也可以是磁盘。就像两人对白的媒介可以是空气也可以是线缆一样。要创建一个管道,一个进程只需调用管道创建的系统调用即可。该系统调用所做的事情就是在某种存储介质上划出一片空间,赋给其中一个进程写的权利,另一个进程读的权利即可。

2 ) 进程电报: 信号

       管道和套接字虽然提供了丰富的通信语义,并且也得到了广泛应用,但它们也存在某些缺电,并且在某些时候,这两种通信机制显得很不好用。
       首先,如果使用管道和套接字方式来通信,必须事先在通信的进程间建立连接(创建管道或套接字),这需要消耗系统资源。其次,通信是自愿的。即一方虽然可以向管道或套接字发送信息,但对方却可以选择接收的时机。即使对方对此充耳不闻,你也奈何不得。再次,由于建立连接消耗时间,一旦建立,我们就想进行尽可能多的通信。而如果通信信息量微小,如我们只是想通知一个进程某件事情的发生,则用管道和套接字就有点儿大材小用,效率十分低下。
       因此,我们需要一种不同的机制来处理

3 ) 进程旗语: 信号量

4 ) 进程拥抱:共享内存

5 ) 信件发送:消息队列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值