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

操作系统中PV操作的问题

    来源: 互联网  发布时间:2015-07-29

    本文导语:  这个问题我看了书,还是不太懂,谁能给我讲讲,越详细越好。 | 看看《操作系统:设计和实现》第二章,里面讲得很清楚了。 简单的说就是为了实现对资源的互斥访问。 举个例子: 你现...

这个问题我看了书,还是不太懂,谁能给我讲讲,越详细越好。

|
看看《操作系统:设计和实现》第二章,里面讲得很清楚了。

简单的说就是为了实现对资源的互斥访问。
举个例子:
你现在运行有多个进程(A,B,C,D...)
这多个进程都要对某一个文件(F)进行访问,
文件F不能被2个以上的进程同时写,以免冲突。

一个办法就是设置一个全局变量GLOBAL,值为1,进程可以访问,值为0,进程不能访问,
这样当一个进程要访问此文件时候,测试global的值,
要是为1,则访问文件,且将global值设为0,退出时候设为1。
这个办法的一个问题在于当进程A测试到global值为1,把值更改为0之前,
发生了进程切换,此时,另外一个进程测到global值为1,然后访问文件,
当进程切换为进程A时,由于已测试过global的值,因此A进程讲也对文件F进行访问。
就造成了冲突。

解决办法就是PV操作,PV操作保证了测试、修改俩个操作的原子性,
即当测试到global值为1且修改为0之间,不会发生进程切换。

因此对一个互斥资源进行semaphore P/V即可实现资源的占有、释放的原子性操作

|
PV操作是基于信号量的原子操作,由学界泰斗Dijstra提出,PV好象分别是荷兰语中两个单词的首字母。现代一般用wait和signal,linux内核中用down和up.

P.V操作的对象是一个整型变量,物理意义上初始化为计算机系统中某种资源的数目。
当由于P操作变为负数时代表了在该资源上睡眠等待的进程数。

需要说明的是,这种互斥机制一般不适用于分布式系统。

操作系统教材中都会有详细描述。

|
基本上可以看成,P是申请资源,V是释放资源。都是原子操作,执行中不会被打断而调度到其他进程。

    
 
 

您可能感兴趣的文章:

  • 基于linux操作系统之上操作LCD问题,急???
  • java执行操作系统命令的问题:如何判断多个操作系统?
  • 在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中数据库操作问题
  • 关于javabean中的对文件进行操作的路径问题?
  • mount命令(linux操作系统)挂载卸载文件系统(cifs,光驱,nfs等)方法介绍
  • 谁有操作系统PV操作的例子???谁有操作系统PV操作的例子???谢谢!!
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • windows 系统是否是多用户操作系统,如何理解“多用户操作系统”的“多用户”?
  • Linux下u盘文件系统相关操作
  • 正在学操作系统原理,做操作系统方面的实验用那种工具较好?
  • windows7操作系统介绍及各种使用技巧总结
  • 请问16位操作系统和32位操作系统的区别?
  • linux 操作系统下ps命令介绍
  • Linux操作系统和Hurd操作系统
  • 怎样在装有红帽操作系统的机子进行格式化,重新装Windows操作系统?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Stacks(堆栈) 成员 操作:比较和分配堆栈
  • 什么样的操作最耗费服务器的IO操作?
  • C++ Strings(字符串) 成员 Operators:操作符,用于字符串比较和赋值
  • 哪位大侠知道Linux里的有名管道传送数据快不快?有名管道操作的过程是否有读写硬盘的操作?
  • C++ I/O 成员 flags():操作flags
  • 如何在一个用户对application操作时防止别的用户对它操作?(好难啊)
  • C++ I/O 成员 width():操作域宽度
  • 1哪位大侠知道Linux里的有名管道传送数据快不快?有名管道操作的过程是否有读写硬盘的操作?
  • c#对象中两种copy操作:深拷贝(Deep Copy)与浅拷贝(Shallow Copy)
  • C#操作txt文件,进行清空添加操作的小例子
  • Xcode介绍及创建工程和工程依赖操作步骤
  • linux 的命令操作和 windows的命令提示行有什么不同呢?? 为什么windows一般都不用命令提示行操作呢??
  • MyEclipse如何查看和设置文件编码格式相关操作
  • linux 怎么也能用鼠标操作?? 我的系统是Ubuntu ,不是说linux都用代码操作么??
  • Html checkbox标签如何设置默认选中以及用js操作checkbox代码示例
  • 请问我本机操作系统是2K,如何远程操作RedHat9?
  • c/c++ 操作符优先级参考
  • 关于设备操作的一点迷惑:计算机如何知道驱动程序要操作的设备正好是指定的设备?
  • javascript操作html复选框checkbox:如何判断复选框是否被选中
  • linux文本模式下,怎样回看前面被屏幕滚掉的命令操作过程或者我的操作过程
  • Plesk 中操作和设置 Docker 容器
  • Python文件操作类操作实例详解


  • 站内导航:


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

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

    浙ICP备11055608号-3