程序的顺序执行和并发执行
-
顺序执行
- 概念:把一个具有独立功能的程序独占处理机直至最终结束的过程。
- 特点
- 顺序性:程序顺序执行时,其执行过程可看作一系列严格按程序规定的状态转移过程,也即是每执行一条指令,系统将从上一个执行状态转移到下一个执行状态,且上一条指令的执行结束是下一条指令执行开始的充分必要条件(严格的先后顺序)。
- 封闭性:程序执行得到的最终结果由给定的初始条件决定,不受外界因素的影响(程序运行时独占全机资源 )。
- 再现性:顺序执行的最终结果可再现是说他与执行速度无关。只要输入的初始条件相同,则无论何时重复执行该程序都会得到相同的结果。
- 示意图
-
并发执行
- 概念:一组在逻辑上互相独立的程序或程序段在执行过程中,其执行时间在客观上互相重叠,即一个程序段的执行尚未结束,另一个程序段的执行已经开始的这种执行方式。
- 特点
- 间断性:交叉执行。
- 失去封闭性:多个程序共享系统中的各种资源 。
- 不可再现性:当程序重复执行时,结果可能不同。
- 示意图
前驱图
概念:前趋图是一个有向无循环图。图中每个结点表示一个语句,一段程序或一个进程,从结点到结点的有向边表示它们的前趋关系,记为→,即和应顺序执行,仅在执行完成后才能开始执行。
-
用前驱图表示进程(程序)顺序执行->并发执行的示例
- 分析:对于将绞肉、切葱末、切姜蒜看成三道程序,可在同一时间并行完成。
- 分析:对于将绞肉、切葱末、切姜蒜看成三道程序,可在同一时间并行完成。
进程的同步与互斥
-
进程的同步
- 概念:相互合作的两个进程之间需要在某个(些)确定点协调它们的工作,一个进程到达了该点后,除非另一进程已经完成了某些操作,否则就不得不停下来,等待这些操作的完成。
- 进程同步是指多个进程之间的制约关系。
- 主要特征:一个进程在某一点上等待另一进程提供信息,两进程之间存在直接制约关系,其表现形式为进程—进程。
- 例:张三和李四(相当于两个进程)约定逛街,张三步行前去,李四骑自行车。当李四提前到达后,需在约定地点等待张三的到来,随后两人手拉手愉快地逛街买东西。
-
进程的互斥
- 概念:两个进程由于不能同时使用同一临界资源,只能在一个进程使用完了,另一进程才能使用。
- 进程互斥是指多个进程与临界资源之间的制约关系。
- 争用资源,两进程间存在间接制约关系,其表现形式是进程—资源—进程 。
- 例:50个人过独木桥,独木桥(相当于临界资源)一次只允许一人(一个进程)通过。
PV操作
-
PV操作由P操作和V操作组成。用信号量及PV操作来实现进程的同步和互斥。
临界资源:进程间需要互斥方式对其进行共享的资源,如打印机、磁带机等。
临界区:每个进程中访问临界资源的那段代码称为临界区。
-
临界区管理原则
- 有空即进。当无进程进入临界区时,允许进程进入临界区,并且在临界区运行有限的时间。
- 无空则等。当有一个进程在临界区时,其他欲进入临界区的进程必须等待,以保证进程互斥地访问临街资源。
- 有限等待。对于要求访问临街资源的进程,应保证进程能在有限的时间进入临界区,以免陷入“饥饿“状态。”
- 让权等待。当进程不能进入自己的临界区时,应立即释放处理机,以免陷入忙等状态。
-
信号量:一种特殊的变量。
- 数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数。注意,信号量的值仅能由PV操作来改变。
-
生产者和消费者问题(单缓冲区)
- 问题描述:生产者生产一个产品放入缓冲区,消费者从缓冲区取走产品并消费。
- 分析:生产者生产第一个产品时,缓冲区为空,可放入产品;当生产者生产第二个产品时,若消费者未从缓冲区取走产品,第二个产品是不能成功放入缓冲区的,直至消费者取走产品。
- 分析:当消费者需要消费产品时,需查看缓冲区是否有产品,若无产品,需等待生产者生产产品并放入缓冲区为止。
- 分析:因此,生产者和消费者存在制约关系。
-
PV操作实例
- 分析:答案为A,C。
- 分析:答案为A,C。
PV操作和前驱图
实例1
-
实例2
- 分析:答案为C,A,A。和执行完应将信号量加1,因此a为和b为。要执行,应满足和,因此c为、。、要执行,需对信号量减一,则先前有加1操作,因此d为、。故而e为和f为。
- 分析:答案为C,A,A。和执行完应将信号量加1,因此a为和b为。要执行,应满足和,因此c为、。、要执行,需对信号量减一,则先前有加1操作,因此d为、。故而e为和f为。