进程通信相关概念
创始人
2024-06-02 00:28:41
0

一、概念

1.1 通信方式有哪些

管道:水管,男纸条放入水管,女看了拿走不回复

消息队列:大盒子,男放入纸条,女看了不拿走,男女都可放

共享内存:直接桌子,男放桌上,女直接就能看见

  1. 管道
    1. 无名管道
    2. 命名管道
  2. 消息队列
  3. 信号量
  4. 共享内存
  5. socket套接字,Streams
    支持不同主机通信

1.2、管道

管道在内核中

通常指无名管道

  1. 半双工,有固定读写端
  2. 只能亲缘关系(父子进程之间)通信
  3. 可以看成一种特殊文件,读写使用read write,不属于任何文件系统,只存在内存中
  4. 管道中数据,读走就没了(水管流走就没了)

命名管道(FIFO)

  1. 半双工
  2. 无关进程间通信
  3. 有路径名相关联,特殊文件形式,存在文件系统中,ls -l(p类型)

1.3、消息队列

是消息的链接表,存放在内核,一个消息队列由一个标识符ID表示

  1. 全双工
  2. 消息有一定的格式和特定的优先级
  3. 进程终止,内容(消息队列)不会删除
  4. 消息随机查询,按消息类型读取(队列里面的哪一个结构体)

1.4、共享内存

  1. 共用一个内存(物理内存),写读用指针指向这个内存,生命周期随内核

  2. 虚拟内存需要进行页表的映射将进程地址映射到物理内存

    1. 进程中的共享内存地址,是虚拟地址,他们指向同一个物理地址

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YDnhjRFH-1678614339852)(C:\Users\戴尔\AppData\Roaming\Typora\typora-user-images\1678607137692.png)]

    2. 为什么是48位6字节,不应该是8字节吗
      因为是虚拟地址,加上前面的2字节就是物理地址,也可能是前面是0省略了

  3. 不能同时往里面写数据,需要信号量来互斥

  4. 使用ipcs -m命令查看共享内存
    ipcrm -m 共享内存号,删除

1.5、信号

  1. 软中断(软件中断),优先级

  2. 信号的名称和编号

    1. 信号在signal.h头文件中

    2. kill -l查看有哪些信号

       1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
      11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
      16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
      21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
      26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
      31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
      38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
      43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
      48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
      53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
      58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
      63) SIGRTMAX-1	64) SIGRTMAX
      
  3. 信号的处理:忽略,捕捉,默认

    1. 忽略,有2信号不能忽略(SIGKILL,SIGSTOP)
    2. 捕捉,用户自定义函数处理信号
    3. 默认,系统默认处理方式,man 7 signal查看系统的具体定义
  4. 发送信号,kill命令,kill -9 pid号杀死进程

  5. 通常使用,异步通信,也就是捕捉动作

  6. 编程有入门和高级api
    入门:动作
    高级:动作+消息

  7. 注意:进程之间无法传递指针

    1. 虚拟地址进程私有,被不同进程映射到物理地址不同

    2. 共享内存可以实现

      想要进程之间传递指针,那么就需要用共享内存方式,这样多个进程都可以访问这一块空间,传递指针也是可以的

    3. 原文链接:https://blog.csdn.net/Dontla/article/details/122677896

1.6、信号量

  1. 不传递数据,管理临界资源
  2. 是一个计数器,用于进程间互斥与同步
  3. 信号量集:信号量集合
    P操作:拿锁
    V操作:放回锁
  4. 临界资源:共享资源,一次同时间只能一个进程使用他
    物理设备,输入机,打印机等

相关内容

热门资讯

小学生手工制作图片 小学生手工制作图片简单一点,好看一点的!折纸花篮制作:用两张正方形彩纸(亦可为两色)作花篮,一长条纸...
女大学生背便宜的包怎么就low... 女大学生背便宜的包怎么就low了背便宜的包怎么就Low了?腋下包腋下包很适合通勤背雹困物,尺寸适中,...
瑞银方锦聪:预料今年即时零售行... 观点网讯:7月11日,瑞银投资银行中国互联网行业研究主管方锦聪预测,2025年即时零售行业(不包括外...
英语怎么区分第一人称,第二人称... 英语怎么区分第一人称,第二人称和第三人称。第一人称就是我(们):单数i,复数we第二人称就是你(们)...
姑姑公布疑脑死亡男童手术时间线... 【#姑姑公布疑脑死亡男童手术时间线# #卫健局回应男童扁桃体手术后脑死亡# 】近日,广东湛江3岁男童...
马蜂窝AI系列应用再升级,全面... 转自:网络7月11日,马蜂窝的深度个性化的攻略定制产品“AI路书”正式宣布向所有用户开放,同步上线“...
追踪|整改!宝山一社区公园亮灯... 转自:上观新闻“晚上7点就亮灯了,还亮到了10点!终于不用摸黑散步了。”顾村镇居民曹先生喜出望外,向...
天津普林预计2025年度上半年... 7月11日,天津普林(002134)发布公告,预计2025年1月1日至2025年6月30日的归母净利...
他在任上主动投案!同一系统今年... 转自:上观新闻10日晚,中央纪委国家监委驻应急管理部纪检监察组、浙江省纪委监委发布消息:浙江省消防救...
晋西车轴:预计上半年净利为12... 晋西车轴晚间披露业绩预告,公司预计2025年半年度实现归属于上市公司股东的净利润为1250万元到15...