`
lc52520
  • 浏览: 369164 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

PV操作【Z】

阅读更多
  • 进程间的制约


进程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操作是进程间通信和同步的一种机制,由荷兰计算机科学家Dijkstra提出。PV操作源于信号量(Semaphore)的概念,分为P操作(Wait或Acquire)和V操作(Signal或Release)。这些操作用于控制对共享资源的...

    PV3D学习资料-----PV3D Essentials(汉语)

    2. **3D坐标系统**:PV3D使用右手坐标系统,理解X、Y、Z轴的关系对于构建3D模型至关重要。你将学习如何在3D空间中定位和旋转对象。 3. **几何体创建**:PV3D提供了多种预定义的几何体,如立方体、球体和圆柱体,你...

    S5PV210_UM_REV1.1.pdf.7z

    《S5PV210_UM_REV1.1.pdf》这份用户手册是开发基于S5PV210平台软件和硬件的关键参考资料,它详细介绍了处理器的体系结构、寄存器配置、操作模式以及编程模型,是开发者深入理解S5PV210并进行高效开发的必备工具。...

    AI_Based_Hybrid_PV_DFIG_Grid_dfig_zsi_inverterzsource_z-source_I

    标题中的“AI_Based_Hybrid_PV_DFIG/Grid_dfig_zsi_inverterzsource_z-source_I”揭示了一个基于人工智能的混合光伏系统,该系统中包含了双馈感应发电机(DFIG)与Z源逆变器(ZSI)的交互。描述中的“Z SOURCE ...

    Pv3D-镜头.Dq

    每个摄像机都从DisplayObject3D继承x,y,z属性,我们可以让摄影机绕坐标轴进行旋转.不但如此,还可以像旋转DisplayObject3D实例那样对摄影机进行操作.尽管摄影机没有在屏幕上可见,我们依然有很多方法可以控制它.摄影机...

    2020.10.23-计算机操作系统(第四版)(汤小丹)-1-8章思维导图.7z

    这一章主要讲解并发进程间的互斥与同步问题,如信号量机制、管程、PV操作、死锁预防和避免等。互斥是为了防止多个进程同时访问同一资源,而同步则是控制进程间操作的顺序和协作。 以上是基于《计算机操作系统(第四...

    计算机操作系统原理(第2版).7z

    进程间的通信、同步和互斥是进程管理的重要内容,例如信号量机制、管程、PV操作等。 2. **内存管理**:内存管理负责分配、回收和保护内存资源,确保多个进程之间的隔离。常见的内存管理技术有分页、分段、虚拟内存...

    STM32F767-SOEM-控制1个电机转圈圈-PV模式(速度模式)-添加代码注释-CSDN.7z

    并且对1个EtherCAT从站 电机进行操作,通过 PV模式(速度模式)控制一个电机转圈圈,正转,反转及停止,及电机运行过程中停止。 key0是电机使能、key1是电机反转、key2是电机正转 、 key_UP是电机停止。

    计算机操作系统教程(第3版).7z

    2. **进程管理**:讲解进程的概念、状态转换、进程调度算法(如FCFS、SJF、优先级调度、多级反馈队列等)、进程通信(共享内存、消息传递)以及同步机制(信号量、管程、PV操作)。 3. **内存管理**:讨论内存的...

    生产者消费者问题模拟实现z.doc

    PV 操作是信号量的基本操作,包括 P 操作(wait)和 V 操作(signal)。P 操作使进程等待直至信号量的值大于零,然后将信号量的值减一;V 操作将信号量的值加一,并唤醒一个等待的进程。 3. 生产者消费者问题的解决...

    flash as3 pv3d实现的魔方效果源文件

    在PV3D中,我们可以使用`DisplayObject3D`类来表示这些立方体,并使用`Sprite3D`或`Plane`子类进行具体操作。 2. **旋转动画**:实现魔方的旋转效果,我们需要掌握`Transform3D`类,它提供了旋转、缩放和移动3D对象...

    pv3d加入Flex控件及创建热点(附部分代码)

    具体操作如下: ```actionscript var materialForm:MovieMaterial = new MovieMaterial(myCanvas, false, true, true); materialForm.doubleSided = true; materialForm.interactive = true; materialForm.smooth =...

    招聘网站项目jsp+servlet

    它将Java对象与数据库表对应,通过HQL(Hibernate Query Language)进行查询,降低了数据库操作的复杂性。 **二、JSP与Servlet** 1. **JSP(JavaServer Pages)**:JSP是Java Web开发中的视图层技术,用于生成动态...

    eclipse-kepler-for-arm-windows-x86_64.7z

    标题中的“eclipse-kepler-for-arm-windows-x86_64.7z”表明这是一个针对Windows 64位操作系统的Eclipse IDE版本,特别优化用于ARM架构的开发。Eclipse Kepler是Eclipse IDE的一个特定发布版本,它包含了对开发者来...

    操作系统课设

    这个设计中使用了PV操作(P代表wait,V代表signal)来管理资源访问,以实现互斥和同步。 例如,写者的PV操作伪代码如下: ```cpp // 写者优先的写操作 write() { P(mutex); // 获取互斥锁 first = first + 1; // ...

    JMU jmdx计算机工程学院-21操作系统——大题(期末考试、PTA)

    本篇内容聚焦于操作系统中的调度算法及其应用,包括处理器调度、实时任务调度、周转时间和带权周转时间的计算,以及PV操作在解决读者/写者问题中的应用。 1. **处理器调度算法** - **先到先服务(FCFS)**:这是一...

    面试题(操作系统部分)

    3. **PV 操作**:在进程 R、M、P 的例子中,可以使用 PV 操作来确保正确同步。进程 R 读取数据后释放信号量 `buffer_free`(表示缓冲器可用),进程 M 在获取 `buffer_free` 后处理数据并释放信号量 `buffer_used`...

    《操作系统》课程教学大纲学时.docx

    在进程管理部分,会讲解进程的定义、状态变化、同步与互斥,通过实验让学生实践理解PV操作。存储器管理则涉及分页、分段、虚拟存储器等概念。设备管理会讨论设备分类、I/O控制方式,以及设备分配策略。文件管理部分...

    操作系统os试题

    18. **PV操作**:PV操作用于进程同步,防止竞争条件和死锁。 19. **服务员、男顾客、女顾客同步**:通过信号量机制,可以确保服务员放水果、男顾客吃草莓、女顾客吃香蕉的过程同步。 20. **进程并发执行**:信号量...

Global site tag (gtag.js) - Google Analytics