进程间通信目的:
1、数据传输:一个进程需要将它的数据发送给另一个进程
2、资源共享:多个进程之间共享同样的资源。
3、通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。
4、进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。
进程间通信分类:
1、文件
2、文件锁
3、管道(pipe)和有名管理(FIFO)
4、信号(signal)
5、消息队列
6、共享内存
7、信号量
9、互斥量
10、条件变量
11、读写锁
12、套接字(socket)
进程同步和进程互斥理解
进程互斥:(矛盾的关系)例如:两个小孩争抢同一个玩具
1、由于各进程要求共享资源,而且有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系为进程的互斥
2、系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源。
3、在进程中涉及到互斥资源的程序段叫临界区
互斥示例:
进程同步:(协作的关系)例如:公共汽车安全行驶的问题
进程同步指的是多个进程需要相互配合共同完成一项任务。
Unix进程间共享信息的三种方式
1、文件系统持方式。(POSIX消息队列、共享内存、信号量是用映射文件来实现的)
2、内核的方式。(System V消息队列(进程结束的时候,队列不会被删除,需手动删除)、共享内存、信号量)注释:
3、进程的方式。(如pipe、FIFO)
图例如下: