进程间同步的几种方法

什么是临界区?

每个进程中访问临界资源的那段程序称为临界区(临界资源是一次仅允许一个进程使用的共享资源)。每次只准许一个进程进入临界区,进入后不允许其他进程进入。

进程间同步

把异步环境下的一组并发进程因直接制约而互相发送消息而进行互相合作、互相等待,使得各进程按一定的速度执行的过程称为进程间的同步。

实现进程间同步主要有如下方法:

  • 信号量

  • 用P、V原语

  • 生产者-消费者模型


1 信号量

一种最为简单和直观的方法是直接制约的进程互相给对方进程发送执行条件已经具备的信号。这样,被制约进程即可省去对执行条件的测试,只要收到了制约进程发来的信号便开始执行,而在未收到制约进程发来的信号时便进入等待状态。

2 用P、V原语

P操作:

p(s)是一个原语操作,p操作执行 s– ,若s为负数,调用p(s)的进程被阻塞,放到等待队列q中。

V操作

v(s)刚好与p(s)操作相反,v操作执行 s++ ,若s为大于0,继续执行;s <=0,从信号灯等待队列移出一个进程,解除等待状态,返回本程序继续执行。

使用P、V原语操作实现进程间的同步,分为3步:

  1. 首先为各并发进程设置私用信号量
  2. 然后为私用信号量赋初值
  3. 最后利用P、V原语和私用信号量规定各进程的执行顺序

3 生产者-消费者模型

并发进程同步和互斥问题,一般都可以抽象为生产者-消费者问题。

4 参考资料

张尧学著《计算机操作系统教程》第4版

猜你喜欢

转载自blog.csdn.net/chen134225/article/details/81772185