一、进程互斥
首先我们要知道,为了保证程序执行最终结果的正确性,必须对并发执行的各进程进行制约,以控制它们的执行速度和对资源的竞争。需要回到一个问题,需要对程序哪些部分进行制约才能保证其执行结果的正确性?如:进程PA和PB共享内存 MS,进程PA和PB各执行两条语句时,可能按以下顺序执行:当进程PA执行完第一条语句,开始执行进程PB,再接着执行进程PA的第二条语句。这样会导致错误。如何保证正确性了?我们可以将各自的两条语句抽象为两个各以一个动作完成的顺序执行单位,这样执行结果的正确性就可以得到保证。这也引出了一个概念。
临界区(critical region):把不允许多个并发进程交叉执行的一段程度称为临界区。临界区是有属于不同并发进程的程序段共享公用数据或公用数据变量二引起的。
把这种由于共享某一公有资源而引起的在临界区内不允许并发进程交叉执行的现象,称为由共享公有资源而造成的对并发进程执行速度的间接制约,简称间接制约。
1、什么是互斥?
一组并发进程中的一个或多个程序段,因共享某一公有资源而导致它们必须以一个不允许交叉执行的单位执行。也就是说,不允许两个以上的共享该资源的并发进程同时进入临界区称为互斥。
一组并发进程互斥执行时必须满足如下准则:
i)不能假设各并发进程的相对执行速度。即各并发进程享有平等地、独立地竞争公有资源的权利。
ii)并发进程中的某个进程不在临界区时,它不阻止其他进程进入临界区;
iii)并发进程中的若干个进程申请进入临界区时,只能允许一个进程进入;
iv)并发进程中的某个进程从申请进入临界区时开始,应在有限时间内得以进入临界区。
准