当前位置:  技术问答>linux和unix

OS,问一个p,v操作的问题

    来源: 互联网  发布时间:2015-08-27

    本文导语:  有这样的一道题: 阅览室共有200个座位,读者进入时必须先在一张登记表上登记,该登记表为每一座位列一表目,包括座号和读者姓名等,读者离开时要销掉登记的信息。试用PV操作描述读者进程之间的同步关系。 ...

有这样的一道题:
阅览室共有200个座位,读者进入时必须先在一张登记表上登记,该登记表为每一座位列一表目,包括座号和读者姓名等,读者离开时要销掉登记的信息。试用PV操作描述读者进程之间的同步关系。
答案是这样的:
算法的信号量有三个:seats,表示阅览室是否有座位,初值为200;readers,表示阅览室里的读者数,初值为0;用于登记或注销互斥的信号量s,初值为1。

读者进入阅览室:
while(1)
{
P(seats); //是否有座位
P(s); //是否有人在登记
填写登记表;
V(s); //登记完毕
进入阅览室;
V(readers); //读者个数加1
}

读者离开阅览室:
while(1)
{
P(readers); //阅览室是否有人在读书
P(s); //是否有人在注销
销掉登记;
V(s); //注销完毕
离开阅览室;
V(seats); //释放一个座位资源
}

我做的解是这样的:
算法的信号量有两个:seats,表示阅览室是否有座位,初值为200;用于登记或注销互斥的信号量s,初值为1。

读者进入阅览室:
while(1)
{
P(seats); //是否有座位
P(s); //是否有人在登记
填写登记表;
V(s); //登记完毕
进入阅览室;
}

读者离开阅览室:
while(1)
{
P(s); //是否有人在注销
销掉登记;
V(s); //注销完毕
离开阅览室;
V(seats); //释放一个座位资源
}

不知道我做的对不对,难到如果两合作进程一定要使用2个信号量表示吗?书上也有个题:对N个缓冲区的读写,怎么用PV实现同步。上面也用3个变量。搞不明白,为什么不能象我上面做的方法那样去实现呢?
还请高手指教,谢谢先。

|
你的做法,当无人在阅览室时,如果后一个进程被调度到,将出现错误,在注销登记/离开时。

    
 
 

您可能感兴趣的文章:

  • 基于linux操作系统之上操作LCD问题,急???
  • java执行操作系统命令的问题:如何判断多个操作系统?
  • 操作系统中PV操作的问题
  • 在linux操作系统上向ftp服务器(linux系统)上上传文件,我要纪录操作日志,得到上传到ftp服务器上的文件的路径问题?
  • 问题:在新的操作系统,如Linux中加入现有操作系统的APIs的支持/兼容层算不算侵犯版权?
  • 关于操作系统内部的问题,高手指点
  • pv原语操作的一个问题,望大家解答
  • 关于UNIX文件I/O操作的问题,解决问题立即结贴
  • NOVELL 4.X操作系统的问题
  • 要实现同样的一个问题,例如数据库的查询操作,并将结果返回到页面中,在Servlet与JavaBean中都可以写相同的数据库查询操作的代码,那么
  • 操作系统的以“位”分类问题
  • 一个有关磁盘操作的问题
  • JAVA与数据库操作问题
  • 关于arm linux下硬盘操作的问题
  • SD卡操作问题?
  • 关于pv操作的问题
  • 小妹求教!!关于jsp操作oracle数据库操作的问题(文件读取,插入数据库表相应字段中)
  • USB转串口 读操作的问题
  • 小弟有如下问题:JAVA中怎样实现对操作平台的句柄!谢谢了:)
  • 讨论ejb中数据库操作问题
  • OS/400属于哪类操作系统?
  • 基于 npm 的操作系统 Node OS
  • 怎样在Sun OS 操作系统删除目录下的文件及子目录
  • 哪有 IBM OS/2 或者苹果操作系统下载?
  • 有没有人知道当年的OS/2 wrap操作系统哪有
  • 中国移动手机操作系统 OPhone OS
  • 求助:分析嵌入实时操作系统uc/os-22内核(第一个字母是“谬”,我这边连office都慢得要死,还请大家多包涵)
  • 我想装WIN98,LINUX,MAC OS X,三个操作系统,大家给点意见。
  • 硬实时操作系统 Raw OS
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Stacks(堆栈) 成员 操作:比较和分配堆栈
  • 谁有操作系统PV操作的例子???谁有操作系统PV操作的例子???谢谢!!
  • C++ Strings(字符串) 成员 Operators:操作符,用于字符串比较和赋值
  • 已安装了Windows操作系统,还想安装Linux。却还想在开机选择操作系统时由Windows引导,请问如何操作。在线等待
  • C++ I/O 成员 flags():操作flags
  • 请问LINUX操作系统是怎样对外围设备进行操作的
  • C++ I/O 成员 width():操作域宽度
  • 什么样的操作最耗费服务器的IO操作?
  • c#对象中两种copy操作:深拷贝(Deep Copy)与浅拷贝(Shallow Copy)
  • 无操作系统下对U盘的操作
  • Xcode介绍及创建工程和工程依赖操作步骤
  • 请问命令行操作下怎么改Linux操作系统的日期和时间?
  • MyEclipse如何查看和设置文件编码格式相关操作
  • 正在学操作系统原理,做操作系统方面的实验用那种工具较好?
  • Html checkbox标签如何设置默认选中以及用js操作checkbox代码示例
  • 请问16位操作系统和32位操作系统的区别?
  • c/c++ 操作符优先级参考
  • 哪位大侠知道Linux里的有名管道传送数据快不快?有名管道操作的过程是否有读写硬盘的操作?
  • javascript操作html复选框checkbox:如何判断复选框是否被选中
  • 如何在一个用户对application操作时防止别的用户对它操作?(好难啊)
  • Plesk 中操作和设置 Docker 容器
  • windows 系统是否是多用户操作系统,如何理解“多用户操作系统”的“多用户”?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3