进程间通信的方式

进程间通信是操作系统中不同进程间交换数据的重要手段,包括匿名管道、有名管道、信号、消息队列、共享内存、信号量和套接字等多种方式。匿名管道仅限于有亲缘关系的进程,而有名管道则打破了这一限制。信号用于进程间的快速通信,而消息队列提供了有序的消息传递。共享内存允许进程直接读写同一内存区域,提高了效率。信号量用于多进程同步,确保对共享资源的访问控制。套接字则用于不同主机间的进程通信。
摘要由CSDN通过智能技术生成

进程间通信:

定义:

每个进程各自都有不同的用户地址空间,任何一个进程的全局变量在另一个进程中是无法看到的。因此进程间交换数据必须通过内核,需要在内核开辟缓冲区,进程A将数据从用户空间拷贝到内核缓冲区中,进程B再将数据从内核缓冲区拿走。内核提供的这种机制称为进程间的通信。

通信方式:

1.管道/匿名管道:

  • 半双工的,数据只能向一个方向流动,双方通信时需要建立两个管道。
  • 只能是有亲缘关系的进程之间使用。
  • 一个进程A向管道中写内容时添加到管道缓冲区的末尾,进程B从缓冲区的头部读数据。
  • “先进先出”

2.有名管道

  • 为了克服匿名管道中只有亲缘关系的进程间通信,提出有名管道。
  • 有名管道指提供了一个路径名与它相关联,只要某个进程可以访问路径,就能够通过有名管道相互通信。

3.信号

  • linux系统中用于进程间通信的一种机制,信号可以在任何时候发给某一个进程,不需要知道这个进程的状态。

4.消息队列

  • 消息队列是存放在内核中的消息链表,具有特定的格式,存放在内存中并由消息队列标识符标识。
  • 消息队列允许一个或者多个进程向它写入或者读取消息。
  • 消息队列可以实现消息的随机查询,不一定按照先进先出的次序读取,比如可以按照消息的类型读取。

5.共享内存

  • 在内核中专门留了一块内存区,可以由需要访问的进程将其映射到自己的私有地址空间。进程就能够直接读写这块内存而不需要进行数据的拷贝,从而提高效率。

6.信号量

  • 信号量是一个计数器,多进程对共享数据的访问,信号量是用于进程间同步的。

7.套接字 socket

  • 套接字是一种通信机制,是不同主机之间的进程进行双向通信的端点。也可看作通信双方的一种约定,用套接字中的函数来完成通信过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值