FreeBSD读书笔记—11进程间通信—11.1进程间通信…

2009-05-13 02:07:23来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折



《The Design and Implementation of the FreeBSD Operating System》Part IV: Interprocess CommunicationChapter 11. Interprocess Communication 11.1. Interprocess-Communication Model
BSD当初设计UNIX进程间通信改进方案的几个目的:
提供对Internet之类的通信网络的访问。
实现多进程的程序,比如分布式数据库。
提供新的构建文件服务器之类的局域网服务所需的通信工具程序。
进程间通信的主要设计要求:
  • 透明性:进程之间的通信不应依赖于参与进程是否在同一台机器上。
  • 有效性:进程间通信工具是否能够得到应用取决于它的性能。
  • 兼容性:现存的naive进程应能不加改变地使用在分布式的环境中。
    两个概念:
  • naive进程:读标准输入,写标准输出即可完成工作。
  • sophisticated进程:使用了更为丰富的操作系统接口来完成它的工作。
    要实现上述目标所需满足的条件:
  • 系统必须支持使用不同协议集、不同命名规则、不同硬件的通信网络。由此引出通信域(communication domain)的概念,甴域来定义通信和命名的标准语义。
  • 需要对通信端点进行统一的抽象,并可甴一个文件描述符进行操作。由此引出socket的概念,消息就是通过socket来收发的。
  • 通信语义必须以一种可控的和统一的方式提供给应用程序。由此引出socket的类型的概念。socket是按通信语义来分类的,socket所支持的语义特性有:

    • 数据的顺序传输
    • 数据的无重复传输
    • 数据的可靠传输
    • 面向连接的通信
    • 消息边界的保留
    • 对带外消息的支持

    两个概念:
    带外消息:在通常输入的带内数据流之外向接收方发送的消息,一般用于紧急或以外情况。
    连接:一种可以让协议不必在每包数据中都发送socket标识信息的机制。
    几种类型的socket:
  • datagram socket:提供不可靠的、无连接的分组通信。
  • stream socket:提供可靠的、面向连接的字节流,可支持带外数据传输。
  • sequenced packet socket:提供顺序的、可靠的、无重复的、基于连接的、保留了消息边界的通信。socket的类型是在socket.h中定义的:
    _________________________________________________________________________________________    89    /*
        90     * Types
        91     */
        92    #define    SOCK_STREAM
        1        /* stream socket */
        93    #define    SOCK_DGRAM    2        /* datagram socket */

    标签:

    版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

  • 上一篇:FreeBSD 命令使用

    下一篇:在vmware4 下安裝 FreeBSD4.9 及設置上網.