操作系统P,V(wait,signal原语)操作讲解,以及两个例题(答案仅供参考)

您所在的位置:网站首页 p和pv有什么区别 操作系统P,V(wait,signal原语)操作讲解,以及两个例题(答案仅供参考)

操作系统P,V(wait,signal原语)操作讲解,以及两个例题(答案仅供参考)

2024-07-14 18:20| 来源: 网络整理| 查看: 265

操作系统的pv操作是很核心的概念。

临界区 : 我们把并发进程中与共享变量有关的程序段称为临界区。

信号量 : 信号量的值与相应资源的使用情况有关。当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数。

进程的互斥:是指当有若干个进程都要使用某一共享资源时,任何时刻最多只允许一个进程去使用该资源,其他要使用它的进程必须等待,直到该资源的占用着释放了该资源。 进程的同步:是指在并发进程之间存在这一种制约关系,一个进程依赖另一个进程的消息,当一个进程没有得到另一个进程的消息时应等待,直到消息到达才被唤醒。

pv操作又称wait,signal原语。 主要是操作进程中对进程控制的信息量的加减控制。

wait用法: wait(num),num是目标参数,wait的作用是使其(信息量)减一。 如果信息量>=0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。 signal用法: signal(num),num是目标参数,signal的作用是使其(信息量)加一。 如果信息量>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。

一下提供两个例题,答案仅供参考。 1.有一阅览室,共有100个座位。读者进入时必须先在一种登记表上登记,该表为每一座位列一个表目,包括座号和读者姓名。读者离开时要注销掉登记内容。试用wait和signal原语描述读者进程的同步问题。 在这里插入图片描述 首先提供一份我参考的答案网址 https://www.ppkao.com/tiku/shiti/10058883.html 然后·我个人理解的代码(解释基本在注释中):

定义seats为阅览室剩余座位,初值100 定义r_num为当前阅览室内读者人数,初值0 定义互斥描述 m,初值1 定义读者进入的进程定义为in(),反之out() 则:in(){//进入 while(1){ wait(seats);//seats>0有位置,否则离开 位置信息量减1, 填表是大家的共享资源,既是临界区 wait(m);开始填表; signal(m)结束填表; 读者信息量加1; signal(r_num)//添加一个读者人数,r_num+1 } } out(){ while(1){ wait(r_num)//读者数>0有人离开,减少一个读者人数,r_num-1 读者信息量减1; wait(m);拿其表; signal(m)勾选表,放下表; 消除表登记信息; 位置信息量加1; signal(seats);//人离开阅览室,释放位置资源 } }

2.这个题是按我自己理解写的,无任何参考(可能有错)

在这里插入图片描述 (1)小问可以看成经典的生产消费模型, 共用资源是独木桥,且同时只允许一人通过。

定义上桥为walkUp(),是生产者进程, 反之walkDown(),是消费者进程。 定义桥上有人isTrue初值为0 定义桥上无人isFalse初值为1 walkUp(){ while(1){ P(isFalse);//无人则上桥,代表现在有人了 无人信息减一; 有人加一代表有人; V(isTrue);//有人了 } } walkDown(){ while(1){ P(isTrue);//现在走下来了,就没人了 有人信息减一,代表无人 V(isFalse);//加一代表没人 } }

(2)小问

设信号量: MUTEX=1 (东西方互斥) MD=1 (东向西使用计数变量互斥) MX=1 (西向东使用计数变量互斥) 设整型变量: CD=0 (东向西的已上桥人数) CX=0 (西向东的已上桥人数) 从东向西: P (MD) IF (CD=0) {P (MUTEX) } CD=CD+1 V (MD) 过桥 P (MD) CD=CD-1 IF (CD=0) {V (MUTEX) } V (MD) 从西向东: P (MX) IF (CX=0) {P (MUTEX) } CX=CX+1 V (MX) 过桥 P (MX) CX=CX-1 IF (CX=0) {V (MUTEX) } V (MX)

有些不规范,如果有错,希望大家多多指教!

加油!

ps:第二次修改,学艺不精,例题坑了(少写,有错)部分同学!不好意思!现在改了,我把例题及一些其他概念也补充了一些,虽然可能还是不太好!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3