后台核心技术开发与应用实践读书笔记(十一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40028201/article/details/89552377

后台核心技术开发与应用实践读书笔记(十一)

第11章 进程间通信

11.1 管道

  1. 两进程间单向通信机制。也称为半双工管道

  2. 无名管道特点

    1. 数据只能一个进程流入另一个(读写);双工通信要建立两个
    2. 只用于父子进程与兄弟进程(亲缘关系)
    3. 没有名字,要事先约定好数据格式
  3. 有名管道(FIFO)特点(相对于无名)

    1. 使不相关的两个进程实现彼此通信
    2. 可以通过路径名来指定
    3. FIFO严格遵循先进先出规则
  4. 两种区别

    在这里插入图片描述

11.2 消息队列

​ 消息队列用于运行于同一台机器上的进程间通信,它和管道很相似,是一个在系统内核中用来保存消息的队列,它在系统内核中是以消息链表的形式出现。消息链表中节点的结构用msg声明

  1. 进程可以是不相关的
  2. 逐渐被淘汰的通信方式,可以用流管道或者套接口的方式取代

11.3 共享内存

  1. 共享内存是运行在同一台机器上的进程间通信最快的方式,因为数据不需要在不同的进程间复制。通常由一个进程创建一块共享内存区,其余进程对这块内存区进行读写。
  2. 得到共享内存有两种方式:映射/dev/mem设备和内存映像文件。前一种方式不给系统带来额外的开销,但在现实中并不常用,因为它控制存取的将是实际的物理内存,在Linux系统下,这只有通过限制Linux系统存取的内存才可以做到,这当然不太实际。常用的方式是通过shmXXX函数族来实现利用共享内存进行存储的。
  3. 优点:方便,函数接口简单,数据的共享使得进程间的数据不用传送,而是直接访问,也加快了效率。不像无名管道一样要求亲缘关系。
  4. 缺点:没有提供同步机制,使得在使用共享内存进行进程间通信时,往往要借助其他的手段来进行进程间的同步工作。

11.4 信号量

  1. 本质上是一个计数器,用来记录对某个资源(共享内存)的存取情况
  2. 使用信号量可以解决共享内存的同步问题

11.5 ipcs命令

  1. ipcs 是一个Linux命令,用于报告系统的消息队列,信号量、共享内存等

  2. 常用命令

    (1)ipcs -a列出本用户所有相关的ipcs参数
    (2)ipcs -q列出进程中的消息队列
    (3)ipcs -s列出所有信号量
    (4)ipcs -m列出所有共享内存信息
    (5)ipcs -l列出系统的限额
    (6)ipcs -t列出最后的访问时间
    (7)ipcs -u列出当前的使用情况

猜你喜欢

转载自blog.csdn.net/qq_40028201/article/details/89552377