操作系统 -- PV操作

网友投稿 266 2022-08-31

操作系统 -- PV操作

三态模型

进程通常分为就绪、运行和阻塞三种工作状态。

三种状态在某些条件下可以转换,具体转换关系如下:

进程三个状态之间的转换是通过PV操作和信号量来控制的,其中信号量起到了很重要的作用。

信号量

信号量是最早出现的用来解决进程同步与互斥问题的机制。信号量(Saphore)由一个值和一个指针组成,指针指向等待该信号量的进程,信号量的值表示相应资源的使用情况。信号量 ​​S>=0​​​ 时,​​S​​ 表示可用资源的数量,执行一次P操作意味着请求分配一个资源,因此 ​​S​​​ 的值减 ​​1​​ ;信号量 ​​S<0​​​ 时,表示已经没有可用资源,​​S​​ 的绝对值表示当前等待该资源的进程数,请求者必须等待其他进程释放该类资源才能继续运行,而执行一个V操作意味着释放一个资源,因此 ​​S​​​ 的值加 ​​1​​ ;若 ​​S<0​​ ,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。注意,信号量的值只能通过PV操作来改变。

两类问题

在说明这两类问题之前首先解释一些相关的概念:

PV操作:一种实现进程互斥与同步的有效方法,包含P操作与V操作。

P操作:使 ​​S=S-1​​​ ,若 ​​S>=0​​ ,则该进程继续执行,否则排入等待队列。

V操作:使 ​​S=S+1​​​ ,若 ​​S>0​​ ,唤醒等待队列中的一个进程。

临界资源:同一时刻只允许一个进程访问的资源,与上面所说的 ​​S​​ 有关联。

缓冲区问题

进程 ​​P1​​​ 将信息输入到缓冲区 ​​B​​​ 中,进程 ​​P2​​​ 负责从缓冲区 ​​B​​​ 中取出数据输出,缓冲区容量为 ​​n​​ 。

对于进程 ​​P1​​​ 来说,如果缓冲区满,则应暂停输入,等待 ​​P2​​ 进程取走数据后再输入新数据;

而对于进程 ​​P2​​​ 来说,如果缓冲区空,则应等待 ​​P1​​ 进程送来新数据。

我们首先分析一下,假设缓冲区未满且有数据存在时, ​​P2​​​ 进程可以顺利的取出一个数据,同样 ​​P1​​ 进程此时也可以顺利的添加一个数据。

也就是说,对于这两个进程的每一次操作,只要初始条件满足,那么它一定可以顺利的执行下去,不会受到其他条件的制约。

于是便有:

P1(){ P(empty); 输入新数据; V(full);}P2(){ P(full); 取出数据; V(empty);}

其中 ​​empty​​​ 初始值为缓冲区容量 ​​n​​​ , ​​full​​​ 初始值为 ​​0​​ 。

假如缓冲区为空时, ​​P2​​​ 进程阻塞, ​​P1​​​ 可以顺利执行,随后唤醒 ​​P2​​ 进程运行。

假如缓冲区为满时, ​​P1​​​ 进程阻塞, ​​P2​​​ 可以顺利执行,随和唤醒 ​​P1​​ 进程运行。

其中的制约关系如下

公交车司机售票员问题

设公交车上司机的活动是启动车辆,正常行车,到站停车;售票员的活动是关车门,售票,开车门,用信号量和PV操作来实现它们的同步。

首先设信号量 ​​S1​​​ 、 ​​S2​​ ,其中:

​​S1​​​ 表示是否允许司机启动汽车,初始值为 ​​0​​ 。

​​S2​​​ 表示是否允许售票员开门,初始值为 ​​0​​ 。

于是便有:

司机进程(){ P(S1); 启动车辆; 正常行驶; 到站停车; V(S2);}售票员进程(){ 关车门; V(S1); 售票; P(S2); 开车门; 上下客;}

我们来分析一下这个过程, ​​S1​​​ 与 ​​S2​​​ 的初始值都为 ​​0​​ 。

如果售票员没有关车门的话司机进程会阻塞在P操作之前,直到售票员关闭车门后执行V操作唤醒司机进程启动车辆…

之后的一段时间司机进程与售票员进程可以同时运行。

当司机到站停车前售完票的售票员会阻塞在P操作之前,直到司机到站停车后执行V操作唤醒售票员开车门,然后上下客。

(那么问题来了,如果到站停车后售票员还没有售完票会怎么样呢?答案是售票员会继续售票,直到结束以后才会开车门上下客,然后耽误了好多乘客的时间于是被解雇了,hahah没有那么夸张啦~)

这便是公交车司机与售票员之间的制约关系了,如下:

总结

使用PV操作实现进程同步时应该注意的问题有:

同一信号量的P、V操作要成对出现信号量的初始值与相应资源的数量有关,也与P、V操作在程序中出现的位置有关我们要首先分析出进程间的制约关系,在保证进程间有正确同步关系的情况下,确定哪一个进程先执行,哪一个进程后执行,彼此间应该用什么信号量来协调

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:山东省第八届 ACM 省赛 Parity check (规律、水)
下一篇:营销案例精选:肖战又双叒有代言官宣了!九阳的这条片子有点高级!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~