linux网络编程之进程间通信基础(一):进程间通信概述
来源:互联网 发布:js面向对象编程案例 编辑:程序博客网 时间:2024/05/16 08:30
一、顺序程序与并发程序特征
顺序程序特征
顺序性
封闭性:(运行环境的封闭性)
确定性
可再现性
并发程序特征
共享性
并发性
随机性
二、进程互斥
1、由于各进程要求共享资源,而且有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系为进程的互斥
2、系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源。
3、在进程中涉及到互斥资源的程序段叫临界区
举例如下图:
假设x = 1; 当A进程已经判断完毕x>0,此时时间片轮转到了B,B也判断x>0,然后执行x–,即x=0,然后过后又轮转到继续执行A,此时再执行x– 就明显系统逻辑出现了错误。
三、进程同步
进程同步指的是多个进程需要相互配合共同完成一项任务。举例如下图:
P1和P2进程是互相配合的,只有当P2关门后,P1才能启动车辆;P1正常运行了,P2开始售票;当P1到站停车后,P2才能开门;
即需要互相等待对方完成某个操作,自身才能继续运行下去。
四、进程间通信的目的
1、数据传输:一个进程需要将它的数据发送给另一个进程
2、资源共享:多个进程之间共享同样的资源。
3、通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。
4、进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。
五、进程间通信的分类
文件
文件锁
管道(pipe)和命名管道(FIFO)
信号(signal)
消息队列
共享内存
信号量
互斥量
条件变量
读写锁
套接字(socket)
需要注意的是,消息队列、共享内存和信号量在System V 和 POSIX 标准中都有定义,而互斥量、条件变量和读写锁只在POSIX标准才有定义。
六、进程间共享信息的三种方式
1、随进程持续:一直存在直到打开的最后一个进程结束。(如pipe和FIFO)
2、随内核持续( kernel persistence):一直存在直到内核自举或显式删除(如System V消息队列、共享内存、信号量)
3、随文件系统持续:一直存在直到显式删除,即使内核自举还存在。(POSIX消息队列、共享内存、信号量使用文件系统tmpfs 来实现)
参考:
《TCP/IP详解 卷一》
《UNP》
转载自http://blog.csdn.net/jnu_simba/article/details/9086625
- linux网络编程之进程间通信基础(一):进程间通信概述
- linux网络编程之进程间通信基础(一):进程间通信概述
- Linux 进程间通信一之概述
- UNIX网络编程 进程间通信概述
- 【Linux系统编程】进程间通信概述
- 学习Linux C编程之进程间通信(一)
- Linux编程学习之进程间通信篇-进程间通信概述
- Linux进程间通信之概述
- UNIX网络编程卷2进程间通信读书笔记(一)—概述
- Linux C编程--进程间通信(IPC)1--进程间通信机制概述
- linux进程间通信概述
- linux进程间通信概述
- linux进程间通信概述
- linux进程间通信概述
- linux进程间通信概述
- Linux 进程间通信--- 概述
- Linux进程间通信概述
- Linux进程间通信概述
- UMeng统计分析Android集成文档
- Java 位运算(与、或、非、异或)
- Android MediaPlayer的生命周期
- HDU5927 Auxiliary Set(dfs)
- 极客班
- linux网络编程之进程间通信基础(一):进程间通信概述
- 面向对象基础
- 线程间通信(生产者消费者问题)
- 【HDU 1085】【母函数】Holding Bin-Laden Captive!【给你a1个一元硬币,a2个两元硬币,a3个五元硬币,问不能凑出来的第一个面额是多少】
- python中的string相关用法(1)
- MyEclipse使用总结——设置MyEclipse开发项目时使用的JDK
- 2017今年CSDN博客排名
- Java实现单例模式之饿汉式、懒汉式、枚举式,带测试。
- 113. Path Sum II