02-03

内核提供的通信方式

1、有名管道和无名管道
有名管道和无名管道都属于管道通信,通过在内核空间创建一个特殊的文件(管道文件),一个进程将数据写入管道,另一个进程从管道中读取数据,从而实现通信。管道文件是特殊的文件,不用于存储数据,仅仅只是用来完成进程间数据的交流

有名管道创建后将会留下一个管道文件,无名管道不会创建管道文件,无名管道只适用于亲缘进程间的通信,需要在fork之前将管道文件打开,创建子进程后,子进程继承一份管道的文件描述符才能使用该管道。由于创建了管道文件,名管道既可以用于亲缘进程的通信,也可以用于非亲缘进程的通信

2、信号
信号是软件模拟底层硬件的中断操作,用户可以给某个进程发送信号,一个进程也能给另一个进程发送信号,内核也可以给某个进程发送信号

信号是linux内核实现的,没有linux,就没有信号的概念

当一个进程收到信号后的操作有三种:默认(一般是杀死进程)、捕获、忽略

优点:实时性高,可用于处理异步事件。

 System V提供的三种通信方式
1、消息队列
消息队列允许进程以消息的形式交换信息。每个消息都有一个类型,接收者可以根据类型选择接收的消息。

优点:具有一定的灵活性,可以通过消息类型进行筛选,可以实现多对多异步通信

2、共享内存
共享内存的操作不是一次性的,当共享内存段中的数据被读取后,依然存在

优点:共享内存是所有进程间通信方式中效率最高的,原因是,操作共享内存段时,无需进行用户空间和内核空间的切换,适用于大量数据交换。

3、信号量(信号灯集)
信号量是完成多个进程之间同步问题的。信号量可以解决进程或线程间的临界区问题,避免数据不一致。

优点:能有效控制对共享资源的并发访问,操作简便,适用于简单通知机制

三  套接字通信:socket
套接字可以用于不同机器上的进程间通信,也可以用于同一机器上的进程间通信。套接字支持 TCP 和 UDP 通信协议。

优点:支持跨网络的进程间通信,支持多种通信协议

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值