进程通信

  进程间通信就是在不同进程之间传播或交换信息,进程间控制信息的交换称为低级通信,进程间大批量数据的交换称为高级通信。

进程通信分为3种:

1.共享存储器系统:为了传送大量数据,在存储器中划出一块共享存储区,诸进程可通过对共享存储区进行读数据或写数据以实现通信。

2.消息传递系统:又分为直接通信方式、间接通信方式.

3.管道通信系统:向管道提供输入的发送进程,以字符流方式将大量的数据送入管道,而接收进程从管道中接收数据

消息缓冲队列通信机制:

  由于消息缓冲机制中所使用的缓冲区为公用缓冲区,因此使用消息缓冲机制传送数据时,两通信进程必须满足如下条件:

第一,在发送进程把写入消息的缓冲区挂入消息队列时,应禁止其他进程对该消息队列的访问,否则,将引起消息队列的混乱。同理,当接收进程正从消息队列中取消息时,也应禁止其他进程对该队列的访问。

第二,当缓冲区中无消息存在时,接收进程不能接收到任何消息;而发送进程是否可以发送消息,则只由发送进程是否能够申请到缓冲区决定。

缓冲队列通信机制中的数据结构:

(1)消息缓冲区

    typedefstruct message buffer

    {

       sender;  //发送者进程标识符

       size;  //消息长度

       text;  //消息正文

       next;  //指向下一个消息缓冲区的指针

    }

(2)PCB中有关进程通信的数据项

    typedefstruct message block

    {

      …

      mq;  //消息队列队首指针

      mutex;//消息队列互斥信号量,初值为1

      sm;  //消息队列资源信号量,用于消息队列中的消息计数,初值为0

      …

    }

原文地址:https://www.cnblogs.com/lihuidashen/p/3460552.html