精华内容
下载资源
问答
  • 进程的四种高级通信方式

    千次阅读 2020-10-24 16:38:54
    进程的四种高级通信方式共享存储器系统基于共享数据结构的通信方式基于共享存储区的通信方式管道(pipe)通信系统 进程通信是指进程之间的信息交换。由于进程的互斥与同步,需要在进程间交换一定的信息,故称进程...


    进程通信是指进程之间的信息交换。由于进程的互斥与同步,需要在进程间交换一定的信息,故称进程通信。但通过进程交换信息是一种低级进程通信,以信号量机制为例,原因如下:

    • 效率低。生产者每次只能向缓冲池投放一个产品(消息) ,消费者每次只能从缓冲池中得到一个消息。
    • 通信对用户不透明。OS为进程间通信提供了共享存储器。而关于进程间通信所需之共享数据结构的设置、数据的传送、进程的互斥与同步,都必须由程序员去实现。

    1 共享存储器系统

    在贡献存储器系统中,相互通信的进程共享某些数据结构或贡献存储区,进程间通过这些空间进行通信。据此,又可以把他们分为一下两种类型。

    1.1 基于共享数据结构的通信方式

    在这种通信方式中,要求诸进程公用某些数据结构,借以实现诸进程间的信息交换,如生产者-消费者中的有界缓存区。OS仅提供共享存储器,由程序员负责对公用数据结构的设置及对进程间同步的处理。这种通信方式仅适用于传递相对少量的数据,通信效率低下,属于低级通信。

    1.2 基于共享存储区的通信方式

    为了传输大量数据,在内存中划出了一块共享存储区域,诸进程可通过对该共享区的读或写交换信息,实现通信,数据形式和位置甚至访问控制都是由进程负责,而不是OS。这种通信方式属于高级通信。需要通信的进程在进程通信前,先向系统申请获得共享存储区中的一个分区,并将其附加到自己的自己的地址空间中,便可对其中的数据进行正常读写,读写完或者不在需要时,将其归还给共享存储区,完成数据通信。

    2 管道(pipe)通信系统

    所谓“管道”,是指用于连接一个读进程和一个写进程以实现他们之间通信的一个文件,又名pipe文件。向管道(共享文件)提供输入的发送进程(即写进程)以字符流形式将大量数据送入管道,而接受管道输出的接受进程(即读进程)则从管道中接受数据。由于发送进程和接受进程都是利用管道通信的,故又称管道通信。
    为了协调双方的通信,管道机制必须提供一下三方面的协调能力。

    • 互斥。即当一个进程正在对pipe进行读/写操作时,其他进程必须等待
    • 同步。跟生产者-消费者模式类似。当写进程把一定数量的数据写入pipe,便去睡眠等待,当直到读进程取走数据后再把他唤醒。当读进程读一个空pipe时,也应睡眠等待,直至写进程将数据写入管道后才将之唤醒。
    • 确定对方是否存在。只有确定对方已存在才行通信。

    3 消息传递系统

    在该机制中,进程不必借助任何共享存储区或者数据结构,而是以格式化的消息(message)为单位,将通信的数据封装在消息中,并利用操作系统提供的一组通信命令(原语),在进程间进行消息传递,完成进程间的数据交换。
    该方式隐藏了通信实现细节,使通信过程对用户透明化,降低了通信程序设计的复杂性和错误率。
    基于消息传递系统的通信方式属于高级通信方式,因实现方式的不同,可分为两类。

    • 直接通信方式。是指发送进程利用OS所提供的发送原语,直接把消息发送给目标进程
    • 间接通信方式。是指发送和接受进程,都通过共享中间实体(称为邮箱)的方式进行消息的发送和接收,完成进程间的通信。

    4 客户机-服务器系统

    其主要实现方法分为三类:套接字,远程过程调用和远程方法调用

    4.1 套接字

    一个套接字就是一个通信标识类型的数据结构,包含了通信目的地址、通信使用端口号、通信网络的传输层协议、进程所在的网络地址、以及针对客户或服务器程序提供的不同系统调用,是进程通信和网络通信的基本构件。套接字包括两类

    • 基于文件型。通信进程都位于同一台机器中的环境中,套接字是基于本地文件系统支持的,一个套接字关联到一个特殊的文件,通信双方通过对这个特殊文件的读写实现通信,其原理类似管道。
    • 基于网络型。该类型通常采用的是非对称方式通信,即发送者需要提供接收者命名。通信双方的进程运行在不同主机的网络环境下,被分配了一堆套接字,一个属于接受进程(或服务器),一个属于发送进程(或客户端)。一般的,发送进程发出连接请求时,随机申请一个套接字,主机位置分之一个端口,与该套接字绑定,不再分配给其他进程。接受进程(或服务端)拥有全局公认的套接字和指定的端口,并通过监听端口等待客户请求。
      套接字的优势在于,它不仅适用于同一台计算机内部的进程通信,也适用于网络环境中不同计算机的进程通信。

    4.2 远程过程调用和远程方法调用

    远程过程(函数)调用RPC(Remote Produce Call),是一个通信协议,用于通过网络连接的系统。该协议允许运行于一台主机(本地)系统上的进程调用另一台主机(远程)系统上的进程
    负责处理远程过程调用的进程有两个,一个是本地客户进程,另一个是远程服务进程,这两个进程通常也被称为网络守护进程,主要负责在网络间的消息传递,一般情况下,这两个进程都是处于阻塞状态,等待消息。
    为了使远程过程调用看上去和本地过程调用一样,即希望实现RPC的透明性,使得调用者感受不到此次调用的过程是在其他主机(远程)上执行的,RPC引入了一个存根的概念:在本地客户端,每个能够独立运行的远程调用过程都拥有一个客户存根,本地进程远程调用远程过程实际是调用该过程关联的存根;与此类似,在每个远程进程所在服务器端,其所对应的实际可执行进程也存在一个服务器存根与其关联。本地客户存根与对应的远程服务器的存根一般也是处于等待状态,等待消息。

    展开全文
  • 0-4G 虚拟内存空间,除了进程的代码区,其他用户空间和系统空间都是各自独立,彼此不能直接访问,这就要求不同进程之间存在着可以双方都可以访问介质,这里所讲介绍都是低级的进程通信方式,企业中使用...

    1、进程间通信

          进程间通信就是在不同进程之间数据交互或交换信息,以实现多进程之间相互控制协调工作。因为每个进程都拥有自己 0-4G 的虚拟内存空间,除了进程的代码区,其他的用户空间和系统空间都是各自独立,彼此不能直接访问,这就要求不同进程之间存在着可以双方都可以访问的介质,这里所讲介绍的都是低级的进程间通信方式,企业中使用的多是高级方式,如 RPC 远程过程调用。


    展开全文
  • 进程间4种通信方式的使用范围

    千次阅读 2011-11-25 09:51:56
    那么这4种四种通信方式分别用于什么场合呢? 如果我要传一个文件,是用有名管道好,还是共享内存好,判断标准是什么?让两个进程间相互控制,是用消息队列好,还是信号好,怎么判断? 详细说明见《Unix环境高级编程》...
    
    
    关于进程间4种通信方式的使用范围(转载)
    2009-10-15 下午 08:45

    1,管道,FIFO 
    2, 信号 
    3,消息队列 
    4,共享类存 
    那么这4种四种通信方式分别用于什么场合呢?

    如果我要传一个文件,是用有名管道好,还是共享内存好,判断的标准是什么?让两个进程间相互控制,是用消息队列好,还是信号好,怎么判断? 详细说明见《Unix环境高级编程》和《Unix网络编程》第2卷!

          (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。
      (
    2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。
      (
    3)信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数)。
      (
    4)消息(Message)队列:消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺
      (
    5)共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。
      (
    6)内存映射(mapped memory):内存映射允许任何多个进程间通信,每一个使用该机制的进程通过把一个共享的文件映射到自己的进程地址空间来实现它。
      (
    7)信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。
      (
    8)套接口(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字。

    传递文件最好是用共享内存的方式,MAP_SHARED可以提供多进程共享一个文件的能力。 
    管道 和 FIFO 是一样的,只是匿名管道需要在 父子进程间使用,FIFO是增强型的管道,适合传递较小的消息,FIFO实际相当于内核内部实现的一个共享文件。 
    信号,严重的不建议使用,尤其是你的线程库不能做到异步安全的时候,使用信号作为通信方式很容易导致系统死锁。 
    消息队列 与 FIFO 相似,是在FIFO的基础上封装的一个消息结构队列。 

    建议使用 FIFO 或消息队列传递控制类型的消息(数据量小,有明确的数据结构) 
    使用共享内存传递数据类型的消息(数据量大,数据结构多变)

    展开全文
  • 进程之间的通信方式及适用场景

    千次阅读 2019-07-31 10:17:42
    进程通信是指进程之间信息交换,根据传输数据大小,可以把进程通信分为 低级通信机制(效率低,例如信号量机制) 高级通信机制(OS封装了细节,直接...具体的进程通信方式有以下几: =====================...

    进程通信是指进程之间的信息交换,根据传输数据的大小,可以把进程通信分为

    • 低级通信机制(效率低,例如信号量机制)
    • 高级通信机制(OS封装了细节,直接高效使用原语)

    在进程之间要传递大量数据时,应当使用高级通信机制,高级通信机制一般分为四大类:

    • 共享存储器系统
    • 管道通信系统
    • 消息传递系统
    • 客户机-服务器系统

    具体的进程通信方式有以下几种:

    ==============================================================

    一、共享内存通信

    共享内存是指多个进程共享一块内存,是专门用来解决不同进程之间的通信问题的,由于是直接对内存进行数据传输操作,所以是速度最快的IPC(inter-process communication)方式,因为是共享内存,所以需要配合信号量机制实现同步。

    二、管道通信

    无名管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。

    当一个管道建立时,它会创建两个文件描述符:fd[0]为读而打开,fd[1]为写而打开。如下图:

    高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。

    有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。

    三、消息队列通信

    消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

    四、套接字通信

    套接字( socket ) : 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。

    展开全文
  • 进程通信

    2020-09-06 00:56:06
    随着OS的发展,用于进程之间实现通信的机制也在发展,并已由早期的低级进程通信机制发展为能传送大量数据的高级通信工具机制。目前,高级通信机制可归结为四大类;共享存储器系统、管道通信系统、消息传递系统和客户...
  • 而消息队列的通信方式则克服了这前两种通信方式的缺点。   二 消息队列定义 消息队列就是一个消息链表,可以把消息看作一个记录,具有特定格式。进程可以向消息队列中按照一定规则添加新消息,另一个进程则...
  • 进程管理(十)-进程通信 什么是进程通信 ...进程通信的四种方式 主从式 特点: 1.主进程可自由地使用从进程的资源或数据 2.从进程的动作受主进程的控制 3.主进程和从进程的关系是固定的 例子:主从...
  • 随着OS的发展,用于进程之间的实现通信的机制也在发展,并已由早期的低级进程通信机制发展为能传送大量数据的高级通信工具机制。目前,高级通信机制可归结为四大类:共享存储器系统、管道通信系统、消息传递系统以及...
  • PV操作是低级通信方式高级通信方式是指以较高效率传输大量数据高级通信方法主要有以下三类。 一、共享存储   共享存储是指多个进程共享一块内存,是专门用来解决不同进程之间通信问题,由于是直接对...
  • <...进程通信四种方式:管道(pipe),命名管道(FIFO),消息队列,信号量,那么接下来让我们看看其他的四种重要的进程通信方式:信号机制,共享存储。 (5)信号  信号是一种软件中断(只是软...
  • vsftpd是一个基于GPL发布类UNIX类操作系统上运行服务器名字(是一守护进程),可以运行在诸如Linux、BSD、Solaris、HP-UX以及Irix上面。该服务器支持很多其他传统FTP服务器不支持良好特征,本文将介绍该...
  • 进程通信,线程

    2018-11-28 19:44:03
    高级通信机制可归结为四大类 (1)共享存储器系统(操作存储区方式)  相互通信的进程共享某些数据结构或共享存储区,进程之间能够通过这些空间进行通信。 基于共享数据结构的通信方式(低级) 基于共享存储区的...
  • 进程通信:四种高级通信: 线程与进程: 进程基本属性: 线程基本属性: 作业调度算法: 先来先服务调度算法(FCFS): 短作业优先调度算法(SPF): 最高响应比优先算法(HRN): 基于优先数调度算法(HPF): 基本...
  • 多路复用是指以同一传输媒质(线路)承载多路信号进行通信的方式。各路信号在送往传输媒质以前,需按一定的规则进行调制,以利于各路已调信号在媒质中传输,并不致混淆,从而在传到对方时使信号具有足够能量,且可用...
  • 经典传世之作,包括《TCP/IP详解》(三卷)、《UNIX环境高级编程》和《UNIX网络编程》(两卷).Stevens于1999年9月1日去世,年仅48岁.2000年他被国际权威机构USENIX追授“终身成 就奖”. 目录 封面 -12 封底 -11...
  •  还可以把后两设计形式结合起来:用多个进程来实现,其中每个进程包含几个线程。在这种情况下,进程内部线程之间可以通信,不同的进程之间也可以通信。  上面讲述了可以把完成给定任务所需工作分到多个进程...
  • 2.7进程通信 1.低级通信:在进程间交换数据量少的进程通信方式。...2.高级通信:用户可以直接利用操作系统所提供一组通信命令,高效地传送大量数据通信方式。 (传输效率高。通信过程对用户是...
  • modbus通信协议

    热门讨论 2010-08-06 15:26:22
    此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的...
  • IPC是Inter-Process Communication缩写,意为进程通信或者跨进程通信,是指两个进程进行数据交换过程。下面就介绍一下IPC 种方式: 1.Bundle 这种方式使用是比较多,也是很常见。四大组件中...
  • 5. IPC——进程通信(第十、十五章)。 6. 实例—一个数据库函数库(第十六章)、与Postscrip打印机的通信(第十七章)、调制解调器拨号程序(第十八章)以及使用伪终端(第十九章)。 如果对C语言较熟悉并...
  • 第十九章 有关进程通信的编程 19.1 进程间的通信简介 19.2 半双工UNIX管道 19.2.1 基本概念 19.2.2 使用C语言创建管道 19.2.3 创建管道的简单方法 19.2.4 使用管道的自动操作 19.2.5 使用关双工管道时的注意事项 ...
  • 第19章 有关进程通信的编程 181 19.1 进程间通信简介 181 19.2 半双工UNIX管道 181 19.2.1 基本概念 181 19.2.2 使用C语言创建管道 182 19.2.3 创建管道的简单方法 185 19.2.4 使用管道的自动操作 187 19.2.5 使用...
  • 02 css的四种基本选择器 03 css的组合选择器 04 css的属性选择器 05 css的伪类 06 css的选择器优先级 07 css的背景属性 第39章 01 css的文本属性与边框属性 02 css的列表属性与display属性 03 css的内外边距 04 ...
  • 第19章 有关进程通信的编程 181 19.1 进程间通信简介 181 19.2 半双工UNIX管道 181 19.2.1 基本概念 181 19.2.2 使用C语言创建管道 182 19.2.3 创建管道的简单方法 185 19.2.4 使用管道的自动操作 187 19.2.5 使用...
  • 第19章 有关进程通信的编程 181 19.1 进程间通信简介 181 19.2 半双工UNIX管道 181 19.2.1 基本概念 181 19.2.2 使用C语言创建管道 182 19.2.3 创建管道的简单方法 185 19.2.4 使用管道的自动操作 187 19.2.5 使用...

空空如也

空空如也

1 2 3 4 5 6
收藏数 113
精华内容 45
关键字:

进程高级通信的四种方式