信号量机制理论详解专题

 一文学懂信号量机制的各种大题,详细操作见下文~


        1965年,荷兰学者Dijkstra提出的信号量(Semaphores)机制是一种卓有成效的进程同步工具。在长期且广泛的应用中,信号量机制又得到了很大的发展,它从整型信号量经记录型信号量,进而发展为“信号量集”机制。现在,信号量机制已经被广泛地应用于单处理机和多处理机系统以及计算机网络中。 

PV操作对于每一个进程来说,都只能进行一次,而且必须成对使用。在PV原语执行期间不允许有中断的发生。

  • 信号量机制分 整型信号量机制、记录型信号量机制、and型信号量机制、信号量集。
  • 整型信号量是一种最简单的信号量,主要用于解决并发程序互斥访问临界资源问题。
  • 记号信号量在整型信号量的举出上进行了改进,让不能进入临界区的进程“让权等待”,即进程状态有运行转换为阻塞状态,进程进入阻塞队列中等待。
  • AND型信号量集是将进程在运行中所需要的临界资源全部一次性分配给进程,等进程用完后再全部一次释放。

整型和记录型的信号量是考研学子学习的重点~


 

问题提出

  • 进入区的检查和上锁操作无法一气呵成,从而导致了两个进程有可能同时进入临界区的问题~
  • 所有的解决方案都无法实现“让权等待”~

目录

一.信号量机制

1.整型

2.记录型信号量

二.互斥、同步、前驱 


一.信号量机制

        用户进程可以通过使用OS提供的一对原语来对信号量进行操作,从而很方便的实现了进程互斥和进程同步。

        信号量本质上是一种变量,可以是一个整数亦或是更加复杂的记录型变量。用信号量来表示系统中某种资源的数量(比如未婚优质对象的个数为1,则可以设置一个初值为1的信号量~)

        原语,之前也说过,是一种特殊的程序段,只能一气呵成——如果进入区、退出区的操作均由原语实现,就能避免检查和上锁无法一气呵成~

  • wait(S)和signal(S)两个原语,被简称为P、V操作~

1.整型

        wait原语(P操作)用来检验信号量是否足够以满足当前进程,如果不满足则卡死在循环等待;signal(V操作)当进程结束后,将此时富余的信号量归还~ (类别先检查后上锁~)

进程会发生忙等,不满足让权等待~) 

2.记录型信号量

 

 

(解决了让权等待~) ——来源于block的自我阻塞~

 

 

二.互斥、同步、前驱 

临界区:系统中的某些资源必须通过互斥来访问,访问那段系统资源的代码叫做临界区~

即——同一个时刻只能有一个进程进入临界区~ 

步骤:

  • 分析并发进程的关键活动,划定临界区
  • 设置互斥信号量mutex,初值为1
  • 在进入区P——申请资源
  • 在退出区V——申请资源 

(互斥信号量mutex本质上是一种进入临界区的名额~)

(semaphore定义的信号量为记录型信号量,本身不会产生“忙等”的现象~) 

  • 不同的临界资源需要设置不同的互斥信号量
  • PV操作必定成对出现~ 

即,要让各个并发的进程按要求有序地推进~

V操作可以理解为唤醒P操作的前提~ 

只有前面进程完成其后面的V获得信号量后——P后面的后置进程才有进入临界区的资格~

 王道的一个典例,仔细看!

牢记前V后P的口诀~

 王道的思维导图,很到位:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/282571.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络基础(十一):VRRP原理与配置

目录 前言: 1、VRRP的基本概述 2、VRRP的基本原理 2.1VRRP的基本结构 2.2设备类型 2.3状态机 2.4VRRP路由器的抢占功能 2.5VRRP路由器的优先级 2.6VRRP工作原理 2.7主备路由器的工作内容 3、VRRP的基本配置 3.1配置主路由器和备用路由器 3.2配置PC1与P…

CMA、CNAS软件检测公司分享:压力测试应关注的指标和面临的问题

软件压力测试是容易被传统企业忽视的测试点,用户人数一旦超过预期,极易造成软件产品卡顿、崩溃的情况,不利于用户正常使用,严重影响企业公信力和盈利水平。今天卓码软件测评小编来聊聊压力测试过程中应该关注的指标和会面临的问题…

关联规则 FP-Growth算法

FP-Growth算法 FP-growth 算法思想 FP-growth算法是韩家炜老师在2000年提出的关联分析算法,它采取如下分治策略: 将提供频繁项集的数据库压缩到一棵频繁模式树 (FP-Tree)但仍保留项集关联信息。FP-growth算法是对Apriori方法的改进。生成一个频繁模式而不需要生成…

菜鸟学习日记(python)——匿名函数

Python 使用 lambda 来创建匿名函数。 lambda 函数是一种小型、匿名的内联函数,它可以具有任意数量的参数,但只能有一个表达式。 匿名函数的一般格式如下: lambda 参数列表:表达式 表达式用于计算并返回函数结果 lambda 函数通常用于编写…

version `GLIBC_2.29‘ not found 的原因和怎么解决问题

程序上经常有在这台Linux上编译,然后放到另一个Linux上运行的情况。 如果Linux版本差别不大或都是ubuntu或centos系列还好。 如果不是一个系列很容易出现GLIBC 找不到的情况。 尤其是ubuntu上编译,然后放到centos系列。因为centos为了追求所谓的稳定&…

Java小案例-RocketMQ的11种消息类型,你知道几种?(请求应答消息)

前言 Rocket的请求应答消息是指在使用Rocket(这里可能是RocketMQ或者Rocket框架)进行通信时,客户端发送一个请求到服务端,然后服务端处理该请求并返回一个响应的过程中的数据交换。 在RocketMQ中: 请求应答消息通常…

用Kotlin抓取微博数据并进行热度预测

闲来无事,逛逛微博,看着每条热度很高的博文趣事,心想能否通过爬虫抓取微博热度并进行趋势分析,说干就干,这里需要注意的问题我会一一标注。 爬虫ip信息的设置是在爬虫程序中进行的。爬虫ip信息可以帮助爬虫程序在访问…

python排序算法 直接插入排序法和折半插入排序法

最近需要使用到一些排序算法,今天主要使针对直接插入排序和折半插入排序进行讲解。 首先是直接插入排序,其排序过程主要是,针对A[a1,a2,a3,a4,a5....an],从排序的序列头部起始位置开始,将其也就是a1视为只有一个元素的…

DC电源模块的设计与制造技术创新

BOSHIDA DC电源模块的设计与制造技术创新 DC电源模块的设计与制造技术创新主要涉及以下几个方面: 1. 高效率设计:传统的DC电源模块存在能量转换损耗较大的问题,技术创新可通过采用高效率的电路拓扑结构、使用高性能的功率开关器件和优化控制…

网络基础(十二):ACL与NAT

目录 一、ACL 1、ACL的概述 2、ACL的分类 3、ACL的应用 4、ACL的组成和基本原理 ​编辑 5、ACL的配置 5.1配置基本ACL 5.2配置高级ACL 二、NAT 1、NAT的概述 2、NAT的分类 3、NAT的工作原理 4、静态NAT的配置 5、动态NAT的配置 6、NAPT(端口映射&am…

机器学习 | 机器学习基础知识

一、机器学习是什么 计算机从数据中学习规律并改善自身进行预测的过程。 二、数据集 1、最常用的公开数据集 2、结构化数据与非结构化数据 三、任务地图 1、分类任务 Classification 已知样本特征判断样本类别二分类、多分类、多标签分类 二分类:垃圾邮件分类、图像…

NtripShare Mos监测平台边缘计算终端与自动优化平差算法

忙忙乎乎23年又要过去了,回头看今年做的事,只有两件事值得一提: 1、自动化监测边缘计算终端; 2、自动优化平差算法。 自动化监测边缘计算终端 终端采用全国产硬件方案终端支持全站仪供电控制终端支持远程控制终端支持数据缓存技…