首页 > 其他分享 >理解信号灯和P\V操作原语

理解信号灯和P\V操作原语

时间:2023-02-16 22:22:04浏览次数:35  
标签:变量值 信号灯 进程 原语 理解 停车位 操作

信号灯和P\V操作原语

在复习操作系统进程及进程管理这一章节的时候,对信号灯和P、V操作有点不理解,于是尝试用生活中的例子来解释一下。

首先,简单介绍一下信号灯,及其特点

信号灯为一个二元组(s,q),s为一个初值>=0的整型变量,q为一个初始空队列。
当变量值>0,表示绿灯,进程执行;
当变量值<=0,表示红灯,进程等待,停止执行。

再介绍一下P、V原语

进程对信号灯s进行P(s)操作,
信号灯s变量值自减1后,
若s>=0绿灯,执行;若s<=0红灯,进程进入等待队列

P操作

进程对信号灯进行V(s)操作,
信号灯s变量值自增1,
若s>0绿灯,执行;若s<=0红灯,将等待队列中首元素进程转入就绪队列,置为"就绪状态"

P操作

  然后,我准备用一个停车场来模拟P、V操作,如下:

  假想信号灯为停车厂,s表示当前的空位

  • 当s>0时,表示有剩余的停车位

  • 当s=0时,表示停车场里停满了,同时外面也没有车在等

  • 当s<0时,表示停车场里停满了,但是外面还有车在等

    此时,P操作代表进车,V代表出车,

  • 执行P操作时,(管你有没有车位)首先将停车位s减1,若s>=0,表示还有停车位,顺利通过;若s<0,表示没有了停车位,车滚去排队。

  • 执行V操作时,首先将停车位s加1,若s还是<=0,说明外面还有车在等,需要唤醒第一辆车,也就是等待队列的首元素进程;若s>0,直接顺利出车即可。

标签:变量值,信号灯,进程,原语,理解,停车位,操作
From: https://www.cnblogs.com/jianchuxin/p/17128486.html

相关文章

  • 深度理解变分自编码器(VAE) | 从入门到精通
    前言本文介绍了深度理解变分自编码器(VAE)的系列发展及相应的局限性。 本文转载自CVHub作者丨派派星 欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结......
  • 理解梅尔谱图 Understanding the Mel Spectrogram
    理解梅尔谱图(UnderstandingtheMelSpectrogram)文章中的示例音频音频文件信号信号就是某一特定量随时间变化。对于音频来说,这个特定的变化量就是气压。那我们如何......
  • Epoll原理解析--网卡接收数据说起
     转至 https://blog.csdn.net/armlinuxww/article/details/92803381 太重要了怕丢失,冒昧转一下  从网卡接收数据说起下边是一个典型的计算机结构图,计算机由CPU......
  • pwm 理解
    PWM:  假设PWM的时钟主频是 PWM_CLK_FREQ Hz,则如果需要输出频率为 xHz,占空比为 y% 的波形时,则只需要在定时器的周期寄存器中写入(PWM_CLK_FREQ/x),在占空比寄存器中......
  • mysql事务隔离级别及实现原理,深度理解
    1、事务是什么?事务是数据库一个不可分的工作单元,可以将多个操作步骤表示为一个步骤。2、事务的四大特性Atomicity原子性,Consistency一致性,Isolation隔离性,Durability持......
  • springboot starter 原理解析及实践
    什么是springbootstarterstarter是springBoot的一个重要部分。通过starter,我们能够快速的引入一个功能,而无需额外的配置。同时starter一般还会给我提供预留的自定配置选......
  • 深入理解 FFT
    理论前置知道啥是多项式(即\(f(x)=\displaystyle\sum_{i=0}^{n-1}f_ix^i\)这一类东西)。知道啥是多项式的卷积(即\((f\timesg)(x)=h(x)\),其中\(h_i=\displaystyle\sum_......
  • 对于前几天进行的课堂测试的错误的更正的理解(期待指正)
    有关更正内容的描述本次更正内容,主要是对于用户权限管理的改正,也是我第一次做这样的题目类型具体实现第一项--实现权限列表所谓权限,也就是用户的菜单项,即登录之后,进入......
  • 字符串常用类及常量池和扩容机制理解
    字符串相关类:String、StringBuffer、StringBuilder  字符串相关的类:* 1.String字符串类,底层是基于常量char[],一旦创建长度就固定不变了,适用于字符串不经常增删改的......
  • 接口的理解
    1.1概述接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么接口的内部主要就是封装了方法,包含抽象方法(JDK7及以前),默认方法......