讲一下进程间通讯方式?

  1. 无名管道(PIPE):管道是一种半双工的通信方式(数据只能单向流动),而且只能在具有亲缘关系的进程(即只能在父子进程和兄弟进程之间通讯)间使用。进程的亲缘关系通常是指父子进程关系

  2. 命名管道(FIFO):有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。

  3. 信号(signal)信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身.

  4. 信号量(semaphore)信号量是个计数器记录临界资源的个数,用于多进程对共享数据的访问。进程访问临界资源时控制,用来实现进程的同步控制。

  5. 消息队列MessageQueue:消息队列是消息的链接表,存放在内核中并有消息队列标识符标识。。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

  6. 共享内存SharedMemory:共享内存允许两个或多个进程共享一定的存储区,因为数据不需要在进程之间复制,所以他是最快的IPC。

信号量底层是怎么实现的?

信号和信号量有什么区别?

信号:是由用户、系统或者进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常
信号量:信号量是一个特殊的变量,它的本质是计数器,信号量里面记录了临界资源的数目,有多少数目,信号量的值就为多少,进程对其访问都是原子操作(pv操作,p:占用资源,v:释放资源)。它的作用就是,调协进程对共享资源的访问,让一个临界区同一时间只有一个进程在访问它。

所以它们两的区别也就显而易见了,信号是通知进程产生了某个事件,信号量是用来同步进程的(用来调协进程对共享资源的访问的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值