精华内容
下载资源
问答
  • 进程通信概念和进程通信方式

    万次阅读 2017-05-08 19:11:01
    进程通信(IPC,Inter-Porcess Communcation)是进程进行通信和同步的机制。IPC提供两个基本操作: 发送(send message) 接收(receive message) 进程通信流程: 通信进程之间建立通信链路 通过send/receive交换...

    进程通信(IPC,Inter-Porcess Communcation)是进程进行通信和同步的机制。

    IPC提供两个基本操作:

    1. 发送(send message)
    2. 接收(receive message)

    进程通信流程:

    • 在通信进程之间建立通信链路
    • 通过send/receive交换信息

    进程通信方式:

    这里写图片描述

    直接通信:
    进程必须正确命名对方,比如send(p,message)向p发送信息,receive(q,message)从q中接收信息
    通信链路有如下属性:自动建立连接;一条链路恰好对应一对通信进程;每对进程之间只有一个链接存在;链路可以是单向的,但是通常为双向的

    间接通信:
    通过OS维护的消息队列实现进程之间的通信(接收发送信息)
    每个消息队列都有一个唯一标识,只有共享了相同消息队列的进程才能够通信
    通信链路有如下属性:只有共享了相同消息队列的进程才能建立连接,比如send(a,message)向消息队列a发送信息,receive(a,message)从消息队列a中接收信息 ;连接单向或者双向;消息队列可以与多个进程相互关联;每个进程共享多个消息队列(也就是进程和消息队列是多对多的关系)

    阻塞通信(同步)与非阻塞通信(异步)

    同步通信:

    阻塞发送:发送者发送消息后进入等待(阻塞)直到接受者成功接受
    阻塞接收:接收者请求接收信息后等待(阻塞)直到成功接受一条消息
    

    异步通信:

    非阻塞发送:发送者发送消息后,可立即进行其他操作
    非阻塞接收:接收者请求接收信息后,如果没有消息发送就接收不到信息,不需要等待
    

    通信链路缓冲:

    1. 0容量:发送方必须等待接受方
    2. 有限容量:缓冲队列满,发送方必须等待
    3. 无限容量:发送方不需要等待


    上面是关于IPC通信的基本概念,下面我们看一看一些常见的进程通信方式。

    MOOC讲了四种进程通信方式:

    信号,管道, 消息队列, 共享内存,由于都是基本概念,我偷个懒直接复制下来了:


    信号:

    这里写图片描述


    管道:

    这里写图片描述

    这里写图片描述

    这里写图片描述


    消息队列:

    这里写图片描述

    这里写图片描述


    共享内存:

    这里写图片描述

    这里写图片描述

    这里写图片描述

    展开全文
  • 进程通信

    千次阅读 2018-06-17 22:28:23
    进程通信是进程进行通信和同步的机制 基本操作 发送操作:send(message) 接受操作:receive(message) 进程通信流程 通信进程间建立通信链路 通过send/receive交换信息 通信方式:间接通信和直接通信 ...

    一、概念

    进程通信是进程进行通信和同步的机制

    基本操作
    发送操作:send(message)
    接受操作:receive(message)

    进程通信流程
    ①在通信进程间建立通信链路
    ②通过send/receive交换信息

    通信方式:间接通信和直接通信
    这里写图片描述

    1.直接通信

    进程必须正确地命名对方进程
    send(P,message) P为接收方进程
    receive(Q,message) Q为发送方进程

    通信链路的属性

    • 自动建立链路
    • 一条链路对应一对通信进程

    2.间接通信

    通过操作系统维护的消息队列实现进程间的消息接受和发送
    send(A,message) 发送消息到消息队列A
    receive(A,message) 从消息队列A中接受消息

    通信链路的属性

    1. 每个消息队列都有唯一的标识
    2. 只有共享了相同消息队列的进程,才能通信
    3. 消息队列可以与多个进程相关联
    4. 每对进程可以共享多个消息队列

    3.阻塞通信和非阻塞通信

    阻塞通信(同步)
    阻塞发送:发送者在发送消息后进入等待,直到有接受者成功收到消息
    阻塞接受:接受者在请求接受消息后进入等待,直到成功收到消息

    非阻塞通信(异步)
    非阻塞发送:发送者在消息发送后,可立即进行其他操作
    非阻塞接受:没有消息发送时,接受者在请求接受消息后接受不到任何消息

    4.通信链路缓冲

    • 0容量:发送方必须等待接收方
    • 有限容量:通信链路缓冲队列满时,发送方必须等待
    • 无限容量:发送方不许等待

    5.四种通信机制

    信号、管道、消息队列、共享内存

    二、信号

    进程间的软件中断和处理机制(SIGKILL、SIGSTOP、SIGCONT等)
    不足:传送的信号量小、只有一个信号类型

    void sigproc(){
        signal(SIGINT,sigproc);
        printf("you have pressed ctrl-c \n");
    }
    main(){
        signal(SIGINT,sigproc);
        for(;;);
    }

    三、管道

    进程基于内存文件的通信机制

    • 子进程从父进程继承文件描述符
    • 缺省文件描述符:0 stdin、1 stdout、2 stderr
    • 进程不知道另一端的情况(可能从键盘、文件、程序读取,可写入终端、文件、程序)

    与管道相关的系统调用

    1. 读管道:read(fd,buffer,nbytes) scanf()是基于它实现的
    2. 写管道:write(fd,buffer,nbytes) print()是基于它实现的
    3. 创建管道:pipe(p)
      3.1. p是2个文件描述符组成的数组
      3.2. p[0]是读文件描述符
      3.3. p[1]是写文件描述符

    这里写图片描述

    四、消息队列

    消息队列是由操作系统维护的以字节序列为基本单位的间接通信机制

    • 每个消息是一个字节序列
    • 相同标识的消息按先进先出顺序组成一个消息队列

    这里写图片描述

    msgget(key,flags) 获取消息队列标识
    msgsnd(QID,buf,size,flags) 发送消息
    msgrcv(QID,buf,size,type,flags) 接受消息
    msgctl() 消息队列控制(创建、删除等)

    五、共享内存

    共享内存是把同一个物理内存区域同时映射到多个进程的内存地址空间的通信机制

    对于进程

    • 每个进程都有私有内存地址空间
    • 每个进程的内存地址空间需明确设置共享内存段

    对于线程

    • 同一进程的线程总是共享相同的内存地址空间

    优点:快速、方便地共享数据
    缺点:必须额外的同步机制来协调数据访问
    这里写图片描述
    shmget(key,size,flags) 创建共享段
    shmat(shmid,*shmaddr,flags) 把共享段映射到进程地址空间
    shmdt(*shmaddr) 取消共享段到进程地址空间的映射
    shmctl() 共享段控制

    展开全文
  • IPC进程间通信/跨进程通信

    千次阅读 多人点赞 2019-02-16 09:50:36
    一个进程可以包含多个线程,安卓有一个主线程也就是UI线程,UI线程才可以操作界面,如果一个线程里面进行大量耗时操作安卓就会出现ANR(Application Not Responding)AndroidIPC来源IPC不是安卓独有的 ...

    #概念
    进程:一个JVM就是一个进程
    线程:最小的调度单元
    一个进程可以包含多个线程,在安卓中有一个主线程也就是UI线程,UI线程才可以操作界面,如果在一个线程里面进行大量耗时操作在安卓中就会出现ANR(Application Not Responding)
    #Android中IPC来源
    IPC不是安卓中独有的 ,比如Windows中通过剪贴板,管道,油槽等进行进程间通信,Linux通过命名管道,共享内容,信号量等进行进程间通信,虽然Android基于Linux但是不完全继承Linux,Android中独特的进程间通信Binder,同时也支持socket。
    #Android进程间通信通常用在如下几个方面
    当应用中某个模块需要单独运行在某个进程中;或者相同通过多个进程来扩大应用的内存;当前应用需要向其他应用获取数据(其实COntenProvider去查询数据也是跨进程通信只不过底层分装之后我们察觉不到而已)。
    #Android如何开启多进程
    这里只讨论一个APP内的多进程,暂不讨论两个应用之间的多进程
    这里我们目前讨论正规方式:通过Androidmenifest文件中给四大组件(Activity,BroadCast Receiver,Service,ContentProvide)添加Android:process 属性,暂不讨论通过JNI非正规方式开启新进程
    例:<Activity Android:name:".xxxxActivity" Android:process:".remote"/>
    这样我们启动这个Activity的时候就会新开启一个进程。

    扫码关注公众号“伟大程序猿的诞生“,更多干货新鲜文章等着你~

    公众号回复“资料获取”,获取更多干货哦~

    有问题添加本人微信号“fenghuokeji996” 或扫描博客导航栏本人二维码

    展开全文
  • Linux进程通信

    千次阅读 2017-09-14 14:12:09
    进程是一个独立的资源管理单元,不同进程之间资源是独立的,不能一个进程中直接访问另一个进程的用户空间和内核空间。但是操作系统提供了大量通信机制来实现两个进程间的通信,来满足不同进程间需要进行信息的交互...

    进程是一个独立的资源管理单元,不同进程之间资源是独立的,不能在一个进程中直接访问另一个进程的用户空间和内核空间。但是操作系统提供了大量通信机制来实现两个进程间的通信,来满足不同进程间需要进行信息的交互和状态的传递的需求。

    展开全文
  • Linux 进程通信

    万次阅读 2018-05-06 14:31:38
    Linux 进程通信 1.传统进程通信 1.1 信号 信号机制是软件层次上对中断机制的一种模拟。 信号的捕获与处理也成为系统的“软中断”机制。 1.1.1 常用信号 每个信号都有一个编号和宏定义的名称,这些名字...
  • Android跨进程通信:图文详解 Binder机制 原理

    万次阅读 多人点赞 2017-06-22 10:31:24
    如果你接触过 跨进程通信 (IPC),那么你对Binder一定不陌生 虽然 网上有很多介绍 Binder的文章,可是存在一些问题:浅显的讨论Binder机制 或 一味讲解 Binder源码、逻辑不清楚,最终导致的是读者们还是无法形成一...
  • java 进程通信代码

    万次阅读 2018-08-03 10:50:16
    本人写了一个java进程通信的工具jar,方便大家简单的使用java进程通信。 开启守护进程,获取消息: package com.test; import org.msun.process.ProcessMonitor; import org.msun.process.ProcessMonitor....
  • java进程通信方式

    千次阅读 2019-08-26 18:24:43
    由于内存管理的一些机制,导致两个进程间并不能直接的进行通信(独立的用户空间),因此我们需要利用一些介质来完成两个进程之间的通信。以下是常用的进程通信方式。 管道(Pipe):管道是一种半双工的通信方式,...
  • IPC就是进程通信进程通信可以采用的方法很多,比如创建端口后采用组播技术进行握手连接,这里要讲到的就是通过内存文件映射的方法实现。
  • 进程通信方式总结与盘点

    万次阅读 多人点赞 2019-11-20 14:25:23
    ​ 首先回顾下我们前面博文讲到的信号量机制,为了实现进程的互斥与同步,需要进程间交换一定的信息,因此信号量机制也可以被归为进程通信的一种方式,但是也被称为低级进程通信,主要原因为: 效率低:一次只...
  • 网络中进程通信的标识

    千次阅读 2018-03-23 11:01:19
    internet ,一个完整的网络进程通信需要由两个进程组成,两个进程是通信的两个端点,并且只能使用同一种传输层协议。也就是说,不可能通信的一端用TCP,而另一端用UDP。因此一个完整的网间通信需要一个五元组...
  • Windows管道通信实现进程通信

    万次阅读 2015-04-22 17:19:21
    Windows下用管道通信(pipe)实现进程间数据共享管道是一种用于在进程间共享数据的机制,其实质是一段共享内存。Windows系统为这段共享的内存设计采用数据流I/0的方式来访问。由一个进程读、另一个进程写,类似于一个...
  • QT中进程之间通信

    千次阅读 2016-12-14 13:47:52
    Linux中进程之间通信有,pipe,signal,消息队列,共享内存,信号量,socket.Qt提供的进程通信有如下几种:1.TCP/IP跨平台的QNetwork提供了众多的类来实现网络编程.比如QNetworkAccessManger,Qftp等来使用指定的应用...
  • 49-进程通信初步

    千次阅读 2016-12-29 21:46:01
    错综复杂的信号专题终于结束,能写到这里,感觉真不容易,甚至有点小激动,因为接下来进入进程间通信这个老生常谈的大专题。希望能有信心写好,因为我自己也有很多地方...作为进程通信的初步,我并不想以“管道通信”开
  • 本文参考于线程通信与进程通信的区别 。 进程和线程的区别:对于进程来说,子进程是父进程的复制品,从父进程那里获得父进程的数据空间,堆和栈的复制品。而线程,相对于进程而言,是一个更加接近于执行体的概念,...
  • 操作系统进程通信实验

    千次阅读 2019-07-22 19:38:43
    通过 Linux 系统管道通信机制,加深对于进程通信概念的理解,观察和体验 并发进程间的通信和协作的效果 ,练习利用无名管道进行进程通信的编程和调试 技术。 硬件环境 : window 软件环境: VWareUbuntu16.04 实验...
  • 操作系统进程通信

    千次阅读 2014-01-06 10:12:49
    进程通信分类:1、低级通信:进程的互斥和同步,2、高级通信:指用户可直接利用os提供的 一组通信命令,高校地传送大量数据的一种通信方式。对用户同名。高级通信分类:共享存储器系统、消息传递系统、管道通信...
  • Linux进程通信——管道通信

    千次阅读 2019-05-05 18:36:48
    进程通信(Inter-Process Communication, IPC)是指两个或者多个不同得劲进程间传递或者交换信息,通过信息的传递建立几个进程间的联系,协调一个系统的多个进程之间的行为。 1.1 进程通信的工作原理 进程与...
  • 进程通信——管道通信

    千次阅读 2017-04-12 13:01:26
    所谓“管道”,是指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件,又名pipe文件(是一种特殊的文件,这就意味着你可以向操作文件一样操作无名管道,无名管道内核对应的是一段特殊的内存空间...
  • Linux进程通信

    千次阅读 2019-04-21 08:00:23
    进程通信11.1进程通信介绍11.2Linux内核提供的进程通信机制11.3管道11.4SystemV IPC介绍 11.进程通信 11.1进程通信介绍 进程通信(IPC)指的是2个任意进程之间的通信进程用户空间是相互独立的,一般...
  • linux 进程通信

    千次阅读 2013-10-08 12:42:42
    进程通信有如下一些目的: A、数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量一个字节到几M字节之间 B、共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻...
  • 进程通信

    千次阅读 2018-08-18 18:53:54
    进程: 首先,先来讲一下fork之后,发生了什么事情...将子进程id返回给父进程的理由是:因为一个进程的子进程可以多于一个,没有一个函数使一个进程可以获得其所有子进程进程id。对子进程来说,之所以fork返回0...
  • OS引入进程后,一方面使系统的吞吐量和资源的利用率得到提升,另一方面也使得系统变得复杂,如果没有合理的方式对进程进行妥善的管理,必然会引起进程对系统资源的无序竞争,使系统变得混乱;为了实现对并发进程...
  • 进程通信的类型

    千次阅读 2016-06-15 23:09:32
    3.5.1 进程通信的类型 1、进程通信的定义      进程之间的信息交换。   2、按进程通信机制发展来分     ◆ 低级进程通信机制     ◇ 少量...
  • CEFBrowser进程与Render进程通信

    万次阅读 2016-01-26 07:05:29
    CEF提供了Browser与Browser进程通信的几种机制,我实验了Process Runtime Messages这种方式,用到了CefProcessMessage和CefBrowser::SendProcessMessage()。
  • 这个通信中介可以是用来同一个进程中通信,也可以是用来父子进程之间通信通信也可以是多层次的,比如进程、子进程、子孙进程之间的通信等。通信的实现是通过一个进程写入管道,另外一个进...
  • Android AMS 与 APP 进程通信

    千次阅读 2019-05-10 10:54:31
    APK 运行 App 进程,而 AMS 运行 system_server 进程,AMS 承担着对 Activity 的生命周期的管理等工作,而 Activity 生命周期函数的回调又是 App 进程中进行的,App 进程需要频繁的和 AMS 进程进行通信。...
  • Android开发的跨进程通信方式总结

    千次阅读 2020-01-25 00:29:21
    安卓开发过程,为了保证每个应用的程序的不是独立的个体,需要对外提供接口,可以使多个应用程序之间可以进行数据交换,所以app之间的通信应用场景有很多...本文论述了Android开发常用的跨进程通信的方式和方法。
  • 实验一 进程管理与进程通信 一、实验目的 1、掌握进程的概念,明确进程的含义。 2、认识并了解进程并发执行的实质,进程的阻塞与唤醒,终止与退出的过程。 3、熟悉进程的睡眠、同步、撤消等进程控制方法。 4、分析...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 575,251
精华内容 230,100
关键字:

在进程通信中