unix网络编程2-IPC-0-前言

由于本学期操作系统课设选择了linux的进程通信,准备学习《unix网络编程卷2: 进程间通信》。这门书英文版为《UNIX NETWORK Programming, volume 2, Second Edition: Interprocss Communications》,该版出版于2015年。

目前不太了解linux和unix在IPC这一部分的区别,希望大致相同吧,准备写博客记录这些知识。

概述

大部分程序都涉及到进程间通信(Interprocess Communication, IPC),这是受这个设计原则影响的结果:把应用程序设计为一组相互通信的小片段比将其设计为单个庞大的程序更好

从历史角度看,应用程序有以下几种构建方法:

(1) 用一个庞大的的程序完成全部工作。程序的各部分实现为函数,函数之间通过参数返回值全局变量来交换 信息。
(2) 使用多个程序(个人理解为进程),程序之间用某种形式的IPC通信。许多标准的unix工具都是按照这种风格设计的,它们使用shell管道(IPC的一种形式)在程序之间的传递信息。

(3) 使用一个包含多个线程的程序,线程之间通过某种IPC(假定认为是在进程之间进行的)

还可以把后两种设计形式结合起来:用多个进程实现,每个进程包含几个线程,进程内部线程之间可以通信,不同进程之间也可以通信。

本书主要描述的IPC形式

IPC可以分为非网络IPC(本书第2卷)和网络IPC(本书第1卷)。本书主要讲述非网络IPC,详细描述了以下4种不同的IPC形式:

  • 消息传递(管道、FIFO和消息队列)
  • 同步(互斥量、条件变量、读写锁、文件与记录锁、信号量)
  • 共享内存(匿名的和有名的)
  • 远程过程调用(Solaris门和Sun RPC)

代码下载

https://www.ituring.com.cn/book/156

Linux的进程通信