进程并发运行的环境中,多个进程之间存在如下竞争和合作的关系:
- 进程中的资源争用(间接作用)
当并发进程竞争使用同一个资源时,它们之间就会发生冲突。为了避免冲突,当一个进程获得资源时,另一个进程必须等待。这种情况需要通过互斥机制来解决。
- 进程间通过共享的合作(间接作用)
一个进程等待另一个进程的执行,并以另一个进程的执行结果作为本进程的执行条件,就形成了同步机制
- 进程间通过通信的合作(直接作用)
进程间还可以通过通信进行合作,同性提供了同步和协调各种活动的方法。如操作系统提供的通信功能。
进程间通过共享的竞争:
特点:
1. 每个进程不知道其他进程的存在
2. 两个或者和更多的进程在各自的执行过程中需要访问相同的资源(IO设备、存储器、CPU等)
3. 进程之间没有信息交互
相互间产生的影响:
执行结果不会受影响
执行时间会受影响
竞争引发的控制问题:
互斥、死锁、饥饿
与并发相关的术语:
临界资源:一次只能允许一个进程访问的资源
临界区:访问和操作临界资源的代码段
互斥:多个进程需要访问一个临界资源时,任何时刻只能有一个进程正在访问;通俗点,资
源需要排它使用,防止出现竞争冲突(不同时使用,但无先后次序)。
同步:指两个事件的发生存在着某种时序上的先后关系。
死锁:一组进程中,每个进程都无限等待改组进程中另一进程所占有的临界资源
饥饿:一组进程中,某个或者某些进程无限等待改组中其他进程所占有的临界资源
进程间通过共享的合作:
特点:
没有意识到其他进程的存在,但直到要维护数据的完整性
共享变量、文件或者数据库等
相互间产生的影响:
执行结果和执行时间都会受影响
共享引发的控制问题
互斥、死锁、饥饿、数据一致性
进程间通过通信的合作:
特点:
进程直到自己的合作伙伴
采用消息传递的方式
相互间产生的影响:
执行结果和执行时间都会受影响
引发的控制问题:
互斥、死锁
同步机制应遵循的准则:
空闲让进
忙则等待
有限等待
让权等待 – 当进程不能进入临界区,应该立即释放处理器