《UNP》-IPC学习笔记(1):IPC综述

1. 《UNP》是《UNIX Network Programming》,unix网络编程这本书的简称。作者是:W.Richard Stevens,他是unix与网络方面的专家,他写了几本书,都是unix和网络方面的经典:
(1). 《APUE》一卷, 《AdvancedProgramming in the UNIX Environment 》中文称为unix环境高级编程。是一本详细描述unix类系统调用的书,unix的C编程中的经典。
(2). 《UNP》二卷,第一卷是关于Unix 网络方面的API详细描述;第二卷写的是IPC,就是interprocess communication(进程间通信)。是关于Unix网络编程方面的经典。
(3). 《TCP/IP详解》三卷,第一卷写的是TCP/IP协议,第二卷写TCP/IP协议在BSD中的C实现,第三卷写事务和HTTP协议等。

这六本书,可以说一出书以来就是UNIX类黑客的最爱和必读之书。

在学习Stevens先生的书时,先对先生的在天之灵说声谢谢,由于他,我才能方便的学到这些知识。

我现在在看的是《UNP》的第二卷,IPC的应用。第一卷还没有翻过呢,打算看了第二卷之后有时间能学习第一卷的东西。

这些书中的源码可以到 Stevens 先生的主页:http://www.kohala.com/start/ 里面去下载哈。

2、IPC简介

IPC是进程间通信,就是不同进程如何传递消息和同步资源。IPC从来就是UNIX中的一个杂乱不堪的领域,虽然方案很多,但没有一个是完美的。

IPC通常分为4个领域:
(1)、信息传递(管道,fifo,消息队列)
(2)、同步(互斥锁,条件变量,读写锁,信号量)
(3)、共享内存区(匿名共享区,有名共享区)
(4)、RPC--远程调用(Solaris门,Sun RPC)

这里的IPC适用于单个进程中多个线程间的消息通信和多个进程间的消息通信。下面只说进程,如果要线程,把进换成线即可(呵呵)

3、信息共享方式

(1)、通过文件共享,线程之间通过访问同一个文件来共享文件里面的信息。要点:这样要访问文件则要穿越内核访问磁盘;当文件需要更新时,某种形式的同步是必须的。
(2)、通过共享在内核中的某些信息,对这些信息的访问操作要调用一次系统调用。如管道、System V信号量和System V 消息队列
(3)、设置一个共享内存区,如此,就不用通过内核而直接访问此内存区。需要某种形式上的同步机制。

4、书中的IPC例子:
(1)、文件服务器: C/S模式的程序,客户向服务器发送一个文件的路径名(请求),服务器向客户发送该文件的内容或者是出错信息。
(2)、生产者-消费者:一个或多个称为生产者的进程将数据放到共享缓冲区内,另外有一个或多个称为消费者的进程从缓冲区里面取数据出来。
(3)、序列号持续加1:一个或多个进程给同一个共享序列号持续加1,这个序列号在文件或者是在共享内存中。

第一个例子分析的是各种形式的消息传递,第二、三个例子分析的是共享内存和各种同步机制。

你可能感兴趣的:(编程,网络,unix,服务器,Solaris,System)