zoukankan      html  css  js  c++  java
  • 进程间通信方式

    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.套接字
            这是一种用于网络中不同机器之间的进程间通信,应用非常广泛。

    The future's not set,there is no fate but what we make for ourselves.
  • 相关阅读:
    代码优化
    使用python的Flask实现一个RESTful API服务器端
    数据结构与算法之排序
    Ubuntu 13.04/12.10安装Oracle 11gR2图文教程(转)
    Linux 下开启ssh服务(转)
    PLSQL Developer 9.如何设置查询返回所有纪录(转)
    linux下安装oracle11g 64位最简客户端(转)
    Linux下关于解决JavaSwing中文乱码的情况(转)
    servlet(jsp)中的重定向和转发
    在用TabbarController中出现navigationController 嵌套报错
  • 原文地址:https://www.cnblogs.com/wang1994/p/9115382.html
Copyright © 2011-2022 走看看