进程间通信方式

1.管道(pipe)及有名管道(named pipe)
    管道可用于具有亲缘关系进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。
  2.信号(signal)
    信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某事件发生。
  3.消息队列(message queue)
    消息队列是消息的链接表。
    一个进程可以给若干个进程发送消息,反之,一个进程可以接受不同进程发来的消息,显然,进程中关于消息队列的操作是临界区。
    当发送进程正往接受进程的消息队列中添加一条消息时,接收进程不能同时从该消息队列中读取消息。反之一样。
    消息缓冲区通信机制包括以下内容:
    1> 消息缓冲区,由以下几项组成的数据结构:
        1. 消息长度
        2. 消息正文
        3. 发送者
        4. 消息队列指针
        2> 消息队列首指针,一般保存在PCB中
        1.  互斥信号量m-mutex,初值为1,用于互斥访问消息队列,在PCB中设置。
                2.  同步信号量m-syn,初值为0,用于消息计数,在pcb中设置。
                3.  发送消息原语send
                4.  接收消息原语receive
  4.共享内存(shared memory)
    可以说这是最有用的进程通信方式,它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程对共享内存中数据的更新。
   这种方式需要依靠某种同步操作,如互斥锁和信号量等。
       这种通信模式需要解决两种问题:第一种问题是怎样提供共享内存;第二个是公共内存的互斥关系这是程序开发者的责任。
  5.信号量
    主要作为进程之间及同一种进程的不同线程之间的同步和互斥手段。
  6.套接字
        这是一种用于网络中不同机器之间的进程间通信,应用非常广泛。

posted @ 2018-05-31 10:51  努力飞的小菜鸟  阅读(171)  评论(0编辑  收藏  举报