进程的互斥与同步及信号量的PV操作

定义

步进程互斥定义:一组并发进程中一个或多个程序段,因共享某一共有资源而导致必须以一个不允许交叉执行的单位执行。也就是说互斥是要保证临界资源在某一时刻只被一个进程访问。
进程同步定义:把异步环境下的一组并发进程因直接制约而互相发送消息而进行互相合作、互相等待,使得各进程按一定的速度执行的过程称为进程同步。
也就是说进程之间是异步执行的,同步即是使各进程按一定的制约顺序和速度执行。
互斥是资源的竞争关系,而同步是进程间的协作关系。

哪些资源需要互斥访问

系统中有些资源可以供多个进程同时使用,有些资源则一次仅允许一个进程使用,将一次仅允许一个进程使用的资源称为临界资源
进程在并发执行中可以共享系统中的资源。但是临界资源的访问则必须互斥进行,即各进程对临界资源进行操作的那段程序(把一个进程访问临界资源的那段程序代码称为临界区)的执行也必须是互斥的,只有这样才能保证对临界资源的互斥访问
进程间的互斥就可以描述为:禁止两个或两个以上的进程同时进入访问同一临界资源的临界区。

系统是如何协调临界区的

(1)空闲让进。无进程处于临界区时,若有进程要求进入临界区则立即允许其进入;
(2)忙则等待。当已有进程进入其临界区时,其他试图进入各自临界区的进程必须等待,以保证诸进程互斥地进入临界区;
(3)有限等待。有若干进程要求进入临界区时,应在有限时间内使一进程进入临界区,即它们不应相互等待而谁也不进入临界区;
(4)让权等待。对于等待进入临界区的进程必须释放其占有的 CPU。

信号量的PV操作

信号量可以有效地实现进程的同步和互斥。在操作系统中,信号量是一个整数。当信号量大于等于 0 时,代表可供并发进程使用的资源实体数,当信号量小于零时则表示正在等待使用临界区的进程数。建立一个信号量必须说明所建信号量代表的意义和设置初值,以及建立相应的数据结构,以便指向那些等待使用该临界区的进程。

P 操作和 V 操作都是不可分割的原子操作,因此,P 原语和 V 原语执行期间不允许中断发生。
P(sem)操作的过程是将信号量 sem 值减 1,若 sem 的值成负数,则调用 P 操作的进程暂停执行,直到另一个进程对同一信号量做 V 操作。V(sem)操作的过程是将信号量sem 值加 1,若 sem 的值小于等于 0,从相应队列(与 sem 有关的队列)中选一个进程,唤醒它。

互斥的信号量,初值为 1,同步信号量是所有同步进程的数量

猜你喜欢

转载自blog.csdn.net/ren365880/article/details/124956341