信号量机制之整型信号量,记录型信号量

news2025/1/10 1:43:33

1.信号量机制

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

1.信号量

信号量其实就是一个变量(可以是一个整数,也可以是更复杂的记录型变量),可以用一个信号量来表示系统中某种资源的数量,比如:系统中只有一台打印机,就可以设置一个初值为1的信号量。

2.原语

  • 原语是一种特殊的程序段,其执行只能一气呵成,不可被中断
  • 原语是由关中断/开中断指令实现的。
  • 软件解决方案的主要问题是由“进入区的各种操作无法一气呵成”,因此如果能把进入区、退出区的操作都用“原语”实现,使这些操作能“一气呵成”就能避免问题。

3.PV操作

  • 一对原语: wait(S)原语和signal(S)原语,可以把原语理解为我们自己写的函数,函数名分别为wait和signal,括号里的信号量S其实就是函数调用时传入的一个参数。
  • wait、signal原语常简称为P、V操作(来自荷兰语proberen和 verhogen)。
  • 因此,做题的时候常把wait(S)、signal(S)两个操作分别写为P(S)、V(S)

2.整型信号量

用一个整数型的变量作为信号量,用来表示系统中某种资源的数量。

与普通整数变量的区别:对信号量的操作只有三种,即初始化、P操作、V操作

eg:某计算机系统中有一台打印机…

在这里插入图片描述

3.记录型信号量

整型信号量的缺陷是存在“忙等”问题,因此人们又提出了“记录型信号量”,即用记录型数据结构表示的信号量。
在这里插入图片描述
Eg:某计算机系统中有2台打印机…,则可在初始化信号量S时将S.value的值设为2,队列S.L设置为空。
在这里插入图片描述
在考研题目中wait(S)、signal(S)也可以记为P(S)、V(S),这对原语可用于实现系统资源的**“申请”和“释放”**。

S.value的初值表示系统中某种资源的数目

1.P操作(申请资源)

  1. 对信号量S的一次Р操作意味着进程请求一个单位的该类资源,
  2. 因此需要执行S.value–,表示资源数减1,
  3. 当S.value <0时表示该类资源已分配完毕,
  4. 因此进程应调用block原语进行自我阻塞(当前运行的进程从运行态 → → 阻塞态),
  5. 主动放弃处理机,并插入该类资源的等待队列S.L中。
  6. 可见,该机制遵循了“让权等待”原则,不会出现“忙等”现象。

2.V操作(释放资源)

  1. 对信号量S的一次V操作意味着进程释放一个单位的该类资源,
  2. 因此需要执行S.value++,表示资源数加1,
  3. 若加1后仍是S.value <=0,表示依然有进程在等待该类资源,
  4. 因此应调用wakeup原语唤醒等待队列中的第一个进程(被唤醒进程从阻塞态 → → 就绪态)。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

游戏设计模式专栏(六):在Cocos游戏开发中运用适配器模式

点击上方亿元程序员关注和★星标 引言 大家好&#xff0c;我是亿元程序员&#xff0c;一位有着8年游戏行业经验的主程。 本系列是《和8年游戏主程一起学习设计模式》&#xff0c;让糟糕的代码在潜移默化中升华&#xff0c;欢迎大家关注分享收藏订阅。 适配器模式是一种常见的…

王道考研计算机组成原理——计算机硬件的基础知识

计算机组成原理的基本概念 计算机硬件的针脚都是用来传递信息&#xff0c;传递数据用的&#xff1a; 服务程序包含一些调试程序&#xff1a; 计算机硬件的基本组成 控制器通过电信号来协调其他部件的工作&#xff0c;同时负责解析存储器里存放的程序指令&#xff0c;然后指挥…

渗透测试--Struts2框架

前言 Struts2是apache项目下的一个web 框架&#xff0c;普遍应用于阿里巴巴、京东等互联网、政府、企业门户网站。在我国strust2被广泛使用与各种战略性资产&#xff0c;Struts 2是Struts的下一代产品&#xff0c;但和一代相比架构有很大的区别&#xff0c;近年也是爆出了很多…

10-Node.js模块化

01.模块化简介 目标 了解模块化概念和好处&#xff0c;以及 CommonJS 标准语法导出和导入 讲解 在 Node.js 中每个文件都被当做是一个独立的模块&#xff0c;模块内定义的变量和函数都是独立作用域的&#xff0c;因为 Node.js 在执行模块代码时&#xff0c;将使用如下所示的…

Android---深入理解ClassLoader的加载机制

目录 Java 中的 ClassLoader 1. APPClassLoader 系统类加载器 2. ExtClassLoader 扩展类加载器 3. BootstrapClassLoader 启动类加载器 双亲委派模式(Parents Delegation Model) Android 中的 ClassLoader 1. PathClassLoader 2. DexClassLoader 总结 一个完整的 Java…

好物周刊#11:远程桌面软件

https://cunyu1943.github.io https://yuque.com/cunyu1943 村雨遥的好物周刊&#xff0c;记录每周看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;每周五发布。 一、项目 1. live 一个国内可直连的直播源分享项目&#xff0c;具有以下特点&#xff1a; 永…

IDEA 生成 javadoc

IDEA 生成 javadoc 在IDEA工具栏tools中&#xff0c;打开选项Generate JavaDoc(生成javaDoc 文件) 配置参数

【python海洋专题十三】读取多个nc文件画温度季节变化图

【python海洋专题十三】读取多个nc文件画温度季节变化图 上期内容 年平均的温度分布 本期内容 读取多个文件&#xff1b;拼接数据在画温度的季节分布图Part01. 使用数据 IAP 网格温度数据集 Part02. 读取nc的函数包对比 from netCDF4 import Dataset a Dataset(fileli…

华为OD机试 - 最远足迹(2022Q4 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#xff09;》。 刷的越多&…

设计模式14、命令模式 Command

解释说明&#xff1a;命令模式&#xff08;Command Pattern&#xff09;是一种数据驱动的设计模式&#xff0c;它属于行为型模式。请求以命令的形式包裹在对象中&#xff0c;并传递给调用对象。调用对象寻找可以处理该命令的合适对象&#xff0c;并把该命令传给相应的对象&…

Datagrip:高效数据库管理和开发

文章目录 摘要引言Datagrip的特点与优势多数据库支持强大的查询和编辑功能数据库导航和管理版本控制集成数据库安全性 Datagrip的使用方法安装和配置Datagrip查询和编辑数据数据库导航和管理版本控制和团队协作 总结参考文献 摘要 本文介绍了Datagrip作为一款强大的数据库管理…

什么是跨域资源共享(CORS)?如何在前端中处理CORS问题?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

2000至2022年中国月度植被覆盖度产品

简介&#xff1a; 中国区域2000至2022年月度植被覆盖度产品的空间分辨率250米&#xff0c;合成方式采用月最大值合成。本产品采用基于归一化植被指数&#xff08;NDVI&#xff09;像元二分模型&#xff0c;根据土地利用类型确定纯植被像元值和纯裸土像元值&#xff0c;计算中去…

cvpr24写作模板pdfLaTex编译器注意点小结

文章目录 1 更改作者显示 Anonymous CVPR submission2 \label标签的作用3 换行符// 与换列符&4 \medskip5 首行缩进6 插入图片6.1 单幅图片6.2 并排显示 Reference https://cvpr.thecvf.com/Conferences/2024 1 更改作者显示 Anonymous CVPR submission 这一行开头加上% …

代码检查过程中为什么需要涉及到编译呢?

作者&#xff1a; gentle_zhou 原文链接&#xff1a;代码检查过程中为什么需要涉及到编译呢&#xff1f;-云社区-华为云 随着大家对软件安全越来越重视&#xff0c;在编码阶段针对源码安全的保障也被各行各业企业研发测试运维团队与个人开发者越来越频繁的被提及&#xff0c;其…

【开发篇】二十、SpringBoot整合RocketMQ

文章目录 1、整合2、消息的生产3、消费4、发送异步消息5、补充&#xff1a;安装RocketMQ 1、整合 首先导入起步依赖&#xff0c;RocketMQ的starter不是Spring维护的&#xff0c;这一点从starter的命名可以看出来&#xff08;不是spring-boot-starter-xxx&#xff0c;而是xxx-s…

分类预测 | MATLAB实现KOA-CNN开普勒算法优化卷积神经网络数据分类预测

分类预测 | MATLAB实现KOA-CNN开普勒算法优化卷积神经网络数据分类预测 目录 分类预测 | MATLAB实现KOA-CNN开普勒算法优化卷积神经网络数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现KOA-CNN开普勒算法优化卷积神经网络数据分类预测&#xff0…

安果计算器-您的全能计算伴侣

在日常生活、工作中&#xff0c;我们常常面临各种计算需求。安果计算器为您提供全面而精确的计算解决方案。 一、综 合数学功能:基础运算: 包括加、减、乘、除等基础算术功能。高级数学: 平方根、立方根、开方、随机复数、随机整数、绝对值、常用对数、自然对数、正弦、余弦、…

跨时区系统设计方案

一、背景 门店收银系统分布在澳洲、中国、新西兰&#xff0c;分跨不同时区&#xff0c;系统需要显示不同时区的时间&#xff0c;这是比较折腾的一件事&#xff0c;今天讲一下我们是怎么作的。 二、时区概念 时区 划分时区作用是为了统一时间&#xff0c;让各个区域12点都是…

基于BERT模型进行文本处理(Python)

基于BERT模型进行文本处理(Python) 所有程序都由Python使用Spyder运行。 对于BERT&#xff0c;在运行之前&#xff0c;它需要安装一些环境。 首先&#xff0c;打开Spyder。其次&#xff0c;在控制台中单独放置要安装的&#xff1a; pip install transformers pip install tor…