感性了解一下互斥和信号量

news/2024/11/28 21:55:12/

一、互斥的四个概念

我们把大家都能看到的资源叫做:公共资源

a、互斥:任何一个时刻,都只允许一个执行流在进行共享资源的访问——加锁

b、我们把任何一个时刻,都只允许一个执行流进行访问的共享资源叫做临界资源

c、临界资源需要通过代码访问,凡是访问临界资源的代码,叫做临界区。系统资源我们没怎么好管理,但是访问系统资源的代码我们却很好管理。

存在临界资源的原因主要是由于系统资源有限,多个进程或线程需要共享这些资源。如果同时有多个进程或线程同时访问一个临界资源,那么就会出现互斥访问问题,即可能会发生资源冲突,导致系统崩溃或产生错误。

因此,在设计多任务操作系统时,需要实现一些机制来保证对临界资源的访问是互斥的,如使用信号量、互斥量等同步机制,确保同一时间只有一个进程或线程访问临界资源,从而保证系统的稳定性和可靠性。

  1. 共享内存:多个进程或线程需要同时访问的内存区域。

  2. 文件系统:多个进程或线程需要同时读写的文件。

  3. 数据库:多个进程或线程需要共享的数据库。

  4. 硬件设备:多个进程或线程需要共享的硬件资源,如打印机、网络接口卡等。

  5. 信号量:用于控制多个进程或线程并发访问的系统资源,如缓冲区、管道等。

  6. 锁:用于控制对临界区的访问,防止并发访问造成数据不一致、竞态条件等问题。

d、原子性:只有两种状态的属性,比如:要么不做,要么做完!

二、认识信号量

举一个例子:就像我们去一个比较热门的返点吃饭一样,这家饭店里一般都是满客的状态,如果你想一去就有点吃的话,就需要预约一张桌子,然后在那天那顿饭那张桌子只有你才能落座。其他人想吃的话就只能等你离开。

在这个例子中,预约这个操作对于返点的作用是什么:

1、防止餐桌与客人数量的不匹配。

2、避免同一张桌子同时被两个客人争夺。

如果我定的是VIP包厢,只有一一张桌子,这就形成了上文说的互斥这种情况。

我们要说的信号量其实就是,一家店老板手上的一个小本本,上面时刻记录了这家店还剩下多少张桌子没有被预约出去。

也就是说,信号量本质上就是一个计数器:int count=??

客人就是不同的执行流,餐桌就是临界区中的一个个临界资源。

比如count 初始为8,每次来一个执行流count就会-- ——————p操作

如果申请失败了:

if(count>0)count--;
else 挂起阻塞

每次一个执行流结束访问就会让count++————————————v操作

所有的进程都能看到信号量,所以它是共享资源,所以信号量的原子性对于临界区来说非常重要,同一个时刻信号量只能有一个值,不允许阻塞,要么++要么--,不能有任何的中间状态。

 


http://www.ppmy.cn/news/261270.html

相关文章

C#读写EM4205/4305/4469卡复制ID卡制做FDX-B动物标签源码

EM4305/EM4205卡是采用瑞士EM微电子公司工作频率为125kHz,具有读、写功能的非接触式RFID射频芯片,它具有功耗低、可提供多种数据传输速率和数据编码方法等特点,适合射频芯片ISO 11784/11785规范,该芯片被广泛应用于动物识别和跟踪…

【6.07 代随_50day】 买卖股票的最佳时机 III、买卖股票的最佳时机 IV

买卖股票的最佳时机 III、买卖股票的最佳时机 IV 买卖股票的最佳时机 III1.动态规划方法图解步骤递归代码 买卖股票的最佳时机 IV1.动态规划方法图解步骤代码 买卖股票的最佳时机 III 力扣连接:123. 买卖股票的最佳时机 III(中等) 1.动态规…

数据线如何申请办理检验报告,需要的资料有什么?

为了提高天猫数码电器行业的总体产品品质,更好地规范卖家的发布行为。淘宝规定所有在天猫销售的数码电器类商品,包括(厨房电器、生活电器、个人护理/保健/按摩器材、闪存卡/U盘/存储/移动硬盘、3C数码配件市场、影音电器、电脑硬件/显示器/电脑周边、手机…

如何检查 ODBC SQL Server 驱动程序版本 (Windows)

您的计算机可能包含来自 Microsoft 和其他公司的多种 ODBC 驱动程序。使用 Windows ODBC 数据源管理器可以查看已安装的驱动程序的版本。 检查 ODBC SQL Server 驱动程序版本(32 位 ODBC) 在 ODBC 数据源管理器中,单击**“驱动程序”**选项卡…

python父亲节礼物_父亲节有什么礼物可以推荐?

又到6月份了,马上就是父亲节了,很多人都在为父亲节到底要送什么礼物而烦恼,这种烦恼其实也是幸福的,说明你懂事了。父爱如山,一般父亲都不善于表达,默默地给爱着我们。 今天给大家带来一份最走心撩爸攻略&…

CodeForces..奇数查询.[简单].[数组计算].[n项和]

题目描述: 题目解读: 给定数组an,将数组内第l位到第r位的元素变为k,问数组元素和会变为奇数吗? 第一行输入数组长度n和查询(改写)次数q 第二行输入数组所有元素 接下来q行输入 l&#xff0c…

URL到页面: 探索网页加载的神秘过程

当我们从浏览器的地址栏输入 URL, 按下回车, 再到最后出现需要的网页界面, 这中间究竟发生了什么, 接下来就一步步进行解析. 主要是如下过程: 输入网址DNS 解析客户端发送 HTPP 请求建立 TCP 连接服务器处理请求, 计算响应, 返回响应浏览器渲染页面关闭连接 本篇中只是概述整…

H3C交换机常用命令大全

一.用户配置: system-view [H3C]super password H3C 设置用户分级密码 [H3C]undo super password 删除用户分级密码 [H3C]localuser bigheap 123456 1 Web网管用户设置,1(缺省)为管理级用户,缺省admin,admin [H3C]undo localuser bigheap 删除Web网管用…