1. 并发的原理
并发包括很多设计问题,其中有进程间的通信,资源共享与竞争(例如文件,I/O访问,内存)、多个进程活动的同步以及分配给进程的处理器时间等。
出现的三种情况:
a.多应用程序。多道程序设计允许在多个活动的应用程序间动态共享处理器时间。
b.结构化应用程序。作为模块化设计与结构化程序设计的扩展,一些应用程序可以被有效地设计为一组并发进程。
c.操作系统结构。
操作系统为每个活跃进程分配和释放各种资源。资源包括:处理器时间,存储器,文件,I/O设备。
2.进程的交互
感知程度 | 关系 | 一个进程对其他进程的影响 | 潜在的控制问题 |
进程间不知道 对方的存在 | 竞争 | 一个进程的结果与另一个进程的活动无关 进程的执行时间可能会受影响 | 互斥 死锁(可复用资源) 饥饿 |
进程间知道对方 的存在 | 通过共享合作 | 一个进程的结果可能依赖于另一个进程获得的信息 进程的执行时间可能会受影响 | 死锁(可复用资源) 互斥 饥饿 数据相关性 |
进程直接知道 对方的存在 | 通过通信合作 | 一个进程的结果可能依赖于另一个进程获得的信息 进程的执行时间可能会受影响 | 死锁(可消耗资源) 饥饿 |