`
kofsky
  • 浏览: 196730 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

PV操作

阅读更多
  • 进程间的制约

进程1、进程2共享打印机缓冲区(公有资源),显然它们应互斥地向缓冲区写数据——间接制约
进程1、进程2共享它们之间的缓冲区(私有资源),显然应同步地使用缓冲区——直接制约

  • 产生制约的原因
进程并发执行——>资源共享
资源有限——>资源竞争
制约的分类
1.间接制约(由共享和竞争公共资源引起的制约)一组在异步环境下的并发进程,由于不允许并发进程交叉使用共享公有资源,从而限制各进程的执行速度的过程称为并发进程间的间接制约
2.直接制约(由共享和竞争私有资源引起的制约)
一组在异步环境下的并发进程,各自的执行结果互为对方的执行条件,从而限制各进程的执行速度的过程称为并发执行进程间的直接制约
互斥:因间接制约而形成的进程执行方式
同步:因直接制约而形成的进程执行方式


  • 临界资源与临界区
临界资源
任意时刻只允许一个进程使用的资源
如:打印机、键盘、一些数据、表格、队列等
临界区
访问临界资源的程序(程序段),即不允许并发进程交叉执行的程序(程序段)
如:写打印机缓冲区的程序,……
临界资源的访问方式——互斥

进程互斥执行应满足的准则
  • 不能假设各并发进程的相对执行速度
    各并发进程享有平等的、独立的竞争和使用共有资源的权利
    在不采取任何措施的条件下,在临界区内任一指令结束时,其它并发进程可以进入临界区
  • 并发进程中的某个进程不在临界区时,它不阻止其它进程进入临界区
  • 并发进程中的若干个进程申请进入临界区时,只允许一个进程进入
  • 并发进程中的某个进程从申请进入临界区开始,应在有限时间内进入临界区,也应在有限时间之内退出临界区

  • 信号量

交通系统中的信号灯——它表示当前道路是否可以通行
信号量——某种资源可以使用的状况,用整型变量s表示
s>0——资源还有s个可供使用
s=0——资源也用尽
s<0——有| s |个进程等待使用资源


  • 用P、V操作实现进程互斥
原理
设信号量S为全局变量,初值为S=1
S对应的资源同一时刻最多只能有一个进程使用
访问资源前调用P操作,访问结束时调用V操作
使用资源的两个互斥进程描述为
     PA                                           PB
        ……                                          ……
        P(S)                                          P(S)
        <资源调用>                               <资源调用>
        V(S)                                          V(S)
        ……                                          ……

设A,B两站之间是单轨铁路,用P、V操作对通过该段铁路的列车设置安全保护


  • 进程同步的实现

计算进程PC将计算结果写到缓冲区Buf中,打印进程PP从Buf中取出数据进行打印。要求是
只有Buf为空时,PC才能写入数据;
只有Buf为满时,PP才能取出数据
从Buf中取出数据后,Buf为空
初始时Buf为空
分析
显然PC与PP在执行时必须协调速度,即对Buf的操作应该是:PC写,PP取,PC写,PP取, PC写,PP取,……
问题要求PC与PP同步
实现同步的方法可以是
PP等PC写之后再取
PC等PP取之后再写

求解
设Buf有两个状态:Bufempty,Buffull
用State记Buf的状态……
PP与PC为
PP                                      PC
    ……                                       ……
    repeat                                   repeat
    until State=Bufempty                     until State=Buffull
    计算                                     取出Buf中的内容
    计算结果放入Buf                          Buf清空
    State=Buffull                            State=Bufempty
    ……                                     ……
上述Bufempty,Buffull成为PP与PC之间的公用变量,但对系统或其它进程来讲并不知道它们的存在,故称其为PP与PC的私有信号量


  • 用P、V操作实现进程同步
原理
为并发进程设置信号量,
初始化它们的值
用P、V操作限定进程的执行顺序
同步进程的模式
PA                          PB
    ……                    ……
    P(S)                    P(T)
    <使用同步资源>     <使用同步资源>
    V(T)                    V(S)
    ……                    ……

  • 生产者—消费者问题
进程互斥和同步问题可以抽象为生产者—消费者问题

生产者生产出产品后,消费者才能消费
当部分产品消费后,生产者才继续生产
一件产品,不能既在生产又在消费
该问题可形式化为
有界缓冲区共n个单元
生产者进程向缓冲区中写数据,每次写一个单元
消费者进程读缓冲区中的数据,每次写一个单元
缓冲区至少有一个单元有数据(满)时,才能读
缓冲区至少有一个单元无数据(空)时,才能写
生产者进程与消费者进程不能同时操作缓冲区

假设:PA——生产者进程, PB——消费者进程
生产者与消费者的互斥
设公共信号量:mutex,初值为1
     PA                           PB
         ……                       ……
         P(mutex)               P(mutex)
         生产者生产               缓冲区中取出数据
         数据放入缓冲区           消费者消费
         V(mutex)               V(mutex)
         ……                              ……
生产者与消费者的同步
设生产者进程的私有信号量:avail——当前可用的缓冲区单元数,初值为n
设消费者进程的私有信号量:full——缓冲区中有数据的单元数,初值为0
生产者与消费者的同步为:
         PA                             PB
         ……                          ……
         P(avail)                  P(full)
         生产者生产                  缓冲区中取出数据
         数据放入缓冲区              消费者消费
         V(full)                   V(avail)
         ……                          ……

生产者与消费者问题的解
        PA                             PB
         ……                          ……
         P(avail)                  P(full)
         P(mutex)                  P(mutex)
         生产者生产                  缓冲区中取出数据
         数据放入缓冲区              消费者消费
         V(full)                   V(avail)
         V(mutex)                  V(mutex)
         ……                          ……
问题
  • k个生产者之间的生产互斥吗?为什么?
  • m个生产者之间的生产互斥吗?为什么?
  • 如何才能使得多个生产者可以同时生产?多个消费者之间可以同时消费?

分享到:
评论

相关推荐

    计算机操作系统中PV操作

    在计算机操作系统中,PV操作是进程管理中的难点,希望这点资料对你有帮助

    pv操作的实现

    操作系统中pv操作的c/c++的实现,主要是生产者-消费者问题的实例。

    计算机_操作系统_经典PV操作全集

    操作系统_经典PV操作全集

    操作系统PV操作

    操作系统的PV操作,由C语言实现。桌上有一盘子,可以存放一个水果。爸爸总是放苹果到盘子中,而妈妈总是放香蕉到盘子中;一个儿子专等吃盘中的香蕉,一个女儿专等吃盘中的苹果。用P,V操作实现上述问题的解。

    进程PV操作详细讲解

    进程PV操作详细讲解 PV操作 PV原语的含义  P操作和V操作是不可中断的程序段,称为原语。PV原语及信号量的概念都是由荷兰科学家E.W.Dijkstra提出的。信号量sem是一整数,sem大于等于零时代表可供并发进程使用的资源...

    pv操作和尚喝水问题

    和尚喝水问题 某寺庙,有小和尚、老和尚若干.庙内有一水缸,由小和尚提水入缸,供老和尚饮用。水缸可容纳 30 桶水,每次入水、取水仅为1...设水桶个数为5个,试用信号灯和PV操作给出老和尚和小和尚的活动。用C++实现

    pv操作实现前驱图

    pv操作实现前驱图

    操作系统课程设计PV操作

    操作系统课程设计,PV操作 操作系统课程设计PV操作 操作系统课程设计PV操作

    操作系统有关利用PV操作实现互斥与同步 ppt

    利用PV操作实现互斥与同步 有几个经典问题算法 1`哲学家围着一个圆桌在讨论问题和进餐 2南开大学和天津大学之间有一条弯曲的小路,其中从S到T有一段路每次只允许一辆自行车通过 3某数据库有一个写进程、多个读进程...

    操作系统课程设计——使用PV操作模拟实现车站大厅售票

    车站售票大厅有2个人工售票窗口,1个人工签票/...用信号量和PV操作写出顾客进程与人工服务进程的同步与互斥算法。 该压缩包内容为C++语言在VS2015下编写的工程文件,所有文件均在里面,解压后放到VS里即可调试运行。

    java模拟实现PV操作

    java模拟实现PV操作 利用线程的wait和notify方法实现PV操作实现生产者与消费者问题

    操作系统 有关PV操作 水果问题

    用VC实现的PV操作,能实现进程的互斥 桌上有一只盘子,每次只能放入一只水果;爸爸专向盘子中放苹果(apple),妈妈专向盘子中放桔于(orange),一个儿子专等吃盘子中的桔子,一个女儿专等吃盘子里的苹果

    操作系统 PV操作 实验报告

    一个能够完整运行出来的PV操作的实验报告,然后实验报告的结构也很完整,实验目的,实验过程,甚至实验的结果也有截图,如果有小伙伴需要,尽管下载哦

    pv操作解析 了解pv操作

    希望想了解的朋友多知道些 ,不为积分。pv操作的简洁性可以让你更好编程

    PV操作实现读者写者问题

    实现PV操作解决读者写者问题(读者优先)

    操作系统—经典PV操作详解

    操作系统—经典PV操作详解,针对PV操作的各个类型题目的经典讲解。

    模拟PV操作同步机构-消费者问题

    模拟PV操作同步机构,且用PV操作解决生产者——消费者问题

    操作系统pv操作讲解

    对操作系统的pv操作进行详细讲解 可对操作系统进行详细的了解

    C++ PV操作(生产者/消费者)简单实例

    自己写的PV操作简单实例,以简单易懂见长,如果您正在为此事发愁,也许它能帮到你。

    PV操作的实现(源代码+报告)

    本资源包括PV操作的源代码和报告,通过PV操作实现同步机制

Global site tag (gtag.js) - Google Analytics