多道程序设计:分离进程为独立的功能

实现子进程方式:


  • 降低进程生成的开销。
  • 提供方法(shellout、I/O重定向、管道、消息传递和套接字)简化进程间通信。
  • 提倡使用能由管道和套接字传递的简单、透明的文本数据格式。

UNIX IPC 方法的分类

把任务转给专门的程序

管道、重定向和过滤器

管道依赖的约定,每个程序一开始有两个I/O数据流可用:标准输入和标准输出。许多程序都可写作过滤器,从标准输入顺序读取数据,并且只向标准输出写数据。

包装器

安全性包装器和Bernstein链

从进程

对等进程间通信

  • 临时文件 最古老的IPC技法。
  • 信号 Unix的信号是一种软终端形式:每个信号都对接收进程产生默认作用。
  • 系统守护程序和常规信号
  • 套接字 封装网络数据访问的方法
  • 共享内存

要避免的问题和方法

废弃的UnixIPC方法

远程过程调用

线程——恐吓或威胁

线程增加了复杂度,线程程序可移植性差

在设计层次上的进程划分

第一个要注意的是,临时文件、交互性更强的主/从进程关系、套接字、RPC和其它一些双向IPC方法在某种程度上是等价的——————它们都只不过是程序在生命期内交换程序的方法。我们通过使用套接字或共享内存在这种复杂方法所完成的任务,大多数都可以通过使用临时文件作为信箱和通知信号这种简单的方法来完成。差别很小,主要体现在程序如何建立通信、何时何地完成信息的列集和散集、可能产生何种缓冲问题,以及如何保证获取信息的原子性。





上一页  Unix编程艺术(三)

下一页  Unix编程艺术(五)