美文网首页
2.3进程间通信

2.3进程间通信

作者: MisAutumn | 来源:发表于2020-07-15 17:29 被阅读0次

进程间的通信方式
一个进程不可直接访问其他进程的地址空间。
以下方式的生命周期都随内核结束而结束,不手动释放就不会消失。

  1. 管道:内核中申请一块固定大小的缓冲区,程序有读写的权利。
    a. 匿名管道:进程和子进程间通信
    b. 有名管道:允许无血缘关系的进程间通信
    特点:自带同步互斥机制,半双工
    缺点:只能承载无格式字节流,携带信息量少;缓冲区大小受限。

  2. 消息传递
    a. 直接通信:消息直接挂在接收进程的消息缓冲队列上
    b. 间接通信:消息先发送到中间实体上
    在内核中的一个队列,其中的元素是一个数据块,可存储不同类型的数据。
    缺点:数据块容量有上限,队列总数有上限

  3. 共享内存
    a. 基于数据结构的共享:速度慢,限制多,低级共享方式
    b. 基于存储区的共享:映射一段能被其他进程访问的内存,由一个进程创建,多个进程可访问,是最高效的进程间通信方式。往往与其他通信机制配合使用。
    特点:需要保证共享资源的同步互斥性;进程访问速度快,不需要从用户态和内核态之间频繁切换,从内存中读取即可。

  4. 信号量:用一个变量表示系统中某种资源的数量。
    解决多进程竞争内存,用计数器实现针对一块内存的进程间同步互斥。
    a. 整形信号量:用整数变量作为信号量,表示系统资源的数量。不满足“让权等待”,会发生“忙等”。
    b. 记录型信号量:用记录型数据结构表示的信号量。
    wait(S) signal(S):申请P(S--)、释放V(S++)系统资源,申请不到资源的进程进入阻塞队列等待,满足“让权等待”。

信号量实现进程互斥

  1. 分析问题,确定临界区
  2. 设置同步信号量为1
  3. 临界区前对信号量执行P操作
  4. 临界区后对信号量执行V操作

信号量实现进程同步

  1. 分析哪里需要实现同步关系,即“一前一后”执行的两个操作。
  2. 设置同步信号量S,value=0。
  3. 在“前操作”之后执行V(S)
  4. 在“后操作”之前执行P(S)
生产者消费者问题,同步互斥问题
  1. 当消息队列为空时,消费者需要等待生产者生产
  2. 消息队列满了后,生产者需要等消费者消费
    两个同步信号量实现同步关系

视频
信号量视频

相关文章

  • 2.3进程间通信

    进程间的通信方式一个进程不可直接访问其他进程的地址空间。以下方式的生命周期都随内核结束而结束,不手动释放就不会消失...

  • linux进程间通信(1)

    一、进程通信概述 1、什么是进程间通信?什么是线程间通信? 进程间通信: 进程间通信就指的是用户空间中进程A与进程...

  • 第二十三章 进程间通信介绍(一)

    本章目标: 进程同步与进程互斥 进程间通信目的 进程间通信发展 进程间通信分类 进程间共享信息的三种方式 IPC对...

  • 进程间的通信

    进程间的通信主要分为本机器进程间的通信和不同机器间进程的通信。本文主要描述本机进程间的通信。 一、传统Linux的...

  • 进程间通信

    进程间通信 进程空间相对独立,资源无法相互获取,此时在不同进程间通信需要专门方法 进程间通信就是在不同的进程间进行...

  • 进程间通信,线程间通信

    进程间通信 进程间通信又称IPC(Inter-Process Communication),指多个进程之间相互通信...

  • Android IPC机制

    IPC 即Inter-Process-Communication,含义是进程间通信/跨进程通信。是指多个进程间通信...

  • 进程管理(五)进程间通信、死锁

    (一)进程间通信 除了同步和互斥外,进程间还有其他的通信手段。 进程间的通信 --> IPC (InterProc...

  • 6. 进程间通信

    参考链接:1. 进程间通信及使用场景2. 进程间通信机制IPC3. 看图理解进程间通信IPC==重点4. 进程间通...

  • 【python】进程间通信:Queue的详细用法

    关于python 进程间通信 Process之间有时需要通信,操作系统提供了很多机制来实现进程间的通信。 进程间通...

网友评论

      本文标题:2.3进程间通信

      本文链接:https://www.haomeiwen.com/subject/icejhktx.html