操作系统的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初值为1walkUp(){
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:第二次修改,学艺不精,例题坑了(少写,有错)部分同学!不好意思!现在改了,我把例题及一些其他概念也补充了一些,虽然可能还是不太好!

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

  1. risc-v汇编语言输出斐波那契数列前6位数(仅供参考,不一定正确)

    .data array_A: .word 3,5,7,9,11 .text la x8,array_A #x8为数组A首地址,x9=&A[i] add x9,x8,x0 #x9=&A[ ...

  2. v.douyin.com/xxx v.ixigua.com/xxx抖音西瓜网址官方生成制作抖音西瓜缩短口令网址(仅供参考学习)

    抖音短链:https://v.douyin.com/2vGHjMu/(仅限抖音打开) 西瓜短链:https://v.ixigua.com/2oXjpMN/ v.douyin.com是抖音官方的接口,可 ...

  3. linux文件系统扩容操作步骤,仅供参考

    1.查看/opt/aspire/product/ess/apache-tomcat-ess/webapps/doc文件系统使用率为91%,需要扩容[root@CMDI-DZQZ-Svr /]# df ...

  4. 常用的excel操作小技巧--自己用的,仅供记录

    1. 如何做下拉菜单进行选择输入 选择单元格 点击Date→Date Validation→ Allow中选择List→Source中添加你想要的列表选项→ok  2.不同数字/文本 的填充区域,显示 ...

  5. 单链表操作2-单链表A拆分成奇数和偶数值单链表B和C(个人学习笔记,仅供参考)

    单链表A拆分成奇数和偶数值单链表B和C 题目要求 单链表结点定义 函数接口定义 测试程序样例 输入样例 输出样例 答案 题目要求 在一个带头结点的单链表A中,头指针为a,设计算法SplitList ( ...

  6. 单链表操作10-带头结点的单链表逆置(个人学习笔记,仅供参考)

    带头结点的单链表逆置 题目要求 单链表结点定义 函数接口定义 测试程序样例 输入样例 输出样例 答案 题目要求 设计算法Reverse( ),将带头结点的单链表A逆置,要求利用原有链表的链点,最后输出 ...

  7. 【操作系统原理】信号量及PV操作详解

    信号量 一个特殊变量 用于进程间传递信息的一个整数值 定义如下: struct semaphore {int count;quenue Type quenue; } 信号量说明:semaphore s ...

  8. 操作系统P/V操作(V操作中的典型理解偏差)

    信号量是操作系统提供的⼀种协调共享资源访问的⽅法. 通常信号量表示资源的数量,对应的变量是⼀个整型( sem )变量. 另外,还有两个原⼦操作的系统调⽤函数来控制信号量的,分别是: P 操作:将 se ...

  9. 桌上有一只盘子,每次只能放入一个水果。请用Wait()、Signal()原语实现爸爸、儿子、女儿三个并发进程的同步。

    1.桌上有一只盘子,每次只能放入一个水果.爸爸专向盘中放苹果,妈妈专向盘中放桔子,一个女儿专等吃盘中的苹果,一个儿子专等吃盘中的桔子.试用P,V操作写出他们(4个并发进程)能同步的程序. semaph ...

最新文章

  1. LAMP+Postfix+Dovecot+Postfixadmin搭建邮件管理系统(六)
  2. 在内部循环中Continue外部循环
  3. 全球及中国数字出版产业投资产值与运营模式咨询报告2022版
  4. hp g6服务器安装系统,HPProLiantDL180G6服务器安装图.PDF
  5. bag of words matlab,Bag of words(matlab实现)
  6. python 路径的操作
  7. 智乃的树旋转(easy version)(思维+暴力)
  8. 用正则验证用户输入文本框的内容是否是中文汉字
  9. C语言之内存分配函数
  10. 手机闪存速度排行_2020年手机性能排行榜前十
  11. java中的流思想_Java8新特性 Stream流式思想(二)
  12. STM32固件库的安装
  13. linux batch date,BatchDate官方版
  14. miui怎么用第三方图标包_【教程纪】原生ROM养老指南:图标篇
  15. 电力系统微型计算机继电保护试题,浙江省2008年7月高等教育自学考试电力系统微型计算机继电保护试题课程代码02313...
  16. 基于SSM的医院科室人员管理系统
  17. 浏览器播放rtsp视频,基于nodeJs
  18. 沉睡者IT - 抖音中视频计划赚钱项目初级教程
  19. 1加3减5加7减9C语言表示,c语言中1+三分之一加五分之二加七分之三
  20. 小米手机市场份额为何下降

热门文章

  1. 关于线程池,那些你还不知道的事
  2. form表单的一个页面多个上传按钮实例
  3. WebDriver API 元素定位(三)
  4. Ubuntu下的第一个博客
  5. struts2的文件上传机制
  6. Nginx-----相关配置-详细介绍
  7. Nslookup-查dns
  8. [CentOS Python系列] 四.阿里云服务器CentOS连接远程MySQL数据库及pymsql
  9. iOS之深入解析KVC的底层原理和自定义KVC的实现
  10. 【网络通信与信息安全】之深入分析Token、session和cookie的使用场景和区别