zoukankan      html  css  js  c++  java
  • 《Unix网络编程》卷2 读书笔记 第1章-简介

    1. 概述

    2. 进程、线程与信息共享

    Unix进程间的信息共享有多种方式:注意下图中内核的位置
      

    • 左边的两个进程共享存留于文件系统中某个文件上的某些信息。为访问这些信息,每个进程都得穿越内核。
    • 中间的两个进程共享存留于内核中的某些信息。管道、System V消息队列和System V信号量都是这种共享类型。
    • 右边的两个进程有一个双方都能访问的共享内存区。每个进程一旦设置好该共享内存区,就能根本不涉及内核而访问其中的数据。
    • 注意:以上的IPC技术可以作用于任意数目的进程

    线程

    • 多个进程间的IPC、单个进程中多个线程的IPC
    • 从IPC角度来看,一个给定进程内的所有线程共享共享的全局变量(也就是说共享内存区的概念对这种模型来说是内置的)。
    • 然而我们必须关注的是各个线程间对全局数据的同步访问。
    • 同步尽管不是一种明确的IPC形式,但它确实伴随许多形式的IPC使用,以控制对某些共享数据的访问。

    3. IPC对象的持续性

    • 下图展示了三种类型的持续性:决定了IPC对象存在时间的长短
    • 1、随进程持续的IPC对象一直存在到打开该对象的最后一个进程关闭该对象为止。如管道、FIFO
    • 2、随内核持续的IPC对象一直存在到内核重新自举或显式删除该对象为止。如System V的消息队列、信号量和共享内存区。Posix的消息队列、信号量和共享内存区则必须至少是随内核持续的,但也可以是随文件系统持续的,取决于实现。
    • 3、随文件系统持续的IPC对象一直存在到显式删除该对象为止。即使内核重新自举了,该对象还是保持其值。Posix消息队列、信号量和共享内存区如果是使用映射文件实现的,那么它们就是随文件系统持续的。

      多数形式的IPC并没有在系统重新自举后继续存在的打算,因为进程不可能跨越重新自举继续存活。另外,要求它具备随文件系统的持续性可能会降低其性能,而IPC的一个基本设计目标就是高性能。

      

    4. 名字空间

    • 当两个或多个无亲缘关系的进程使用某种类型的IPC对象来彼此交换信息时,该IPC对象必须有一个某种形式的名字或标识符。这样,其中一个进程(往往是服务器)可以创建该IPC对象,其他进程则可以指定同一个IPC对象。
    • 管道没有名字(故不能用于无亲缘关系的进程间)。
    • FIFO有一个在文件系统中的Unix路径名作为其标识符(故可用于无亲缘关系的进程间)。
    • 对于一种给定的IPC类型,其可能的名字的集合称为它的名字空间。名字空间非常重要,对于除普通管道以外的所有形式的IPC来说,名字是客户与服务器彼此连接以交换消息的手段。

    • 下图汇总了不同形式的IPC所用的命名约定

    5. fork、exec、exit对IPC对象的影响

      

    • 1、考虑到无名同步变量(互斥锁、条件变量、读写锁、Posix基于内存的信号量),从一个具有多个线程的进程中调用fork将变得混乱不堪。
    • 2、System V IPC的三种形式没有打开或关闭的说法。访问这三种形式的IPC对象只需要知道其标识符,因此知道该标识符的任何进程都能访问它们。

    6. 书中IPC例子索引表

    • 文件服务器:客服-服务器应用程序,客户向服务器发送一个路径名,服务器把该文件的内容返回给客户

    • 生产者-消费者:一个或多个线程或进程(生产者)把数据放到一个共享缓冲区中,另有一个或多个线程或进程(消费者)对该共享缓冲区中的数据进行操作。

    • 序列号持续增1:一个或多个线程或进程给一个共享的序列号持续增1。该序列号有时在一个共享文件中,有时在共享内存中。

    7. 小结

    • 4个主要领域:
      1. 消息传递:管道、FIFO、消息队列
      2. 同步:互斥锁、条件变量、读写锁、信号量
      3. 共享内存区:匿名共享内存区、有名共享内存区
      4. 过程调用:Solaris门、Sun RPC
  • 相关阅读:
    idea安装
    IntelliJ IDEA 简单使用
    git客户端安装
    一、AJAX
    一、JSP标签介绍,自定义标签
    注解
    线程
    网络编程Socket
    一 批量插入数据(使用批处理
    day87
  • 原文地址:https://www.cnblogs.com/DayByDay/p/3948424.html
Copyright © 2011-2022 走看看