十三、临界资源,临界区

news/2024/11/8 1:27:06/

一、临界资源

被多个进程能够看到的公共资源 叫做 临界资源。(管道和共享内存都叫临界资源,只是管道是安全的,共享内存是不安全的)
如果没有对临界资源进行任何保护,对于临界资源的访问,双方进程在进行访问的时候,就都是乱序的,可能会因为读写交叉而导致的各种乱码,废弃数据,等访问控制方面的问题。(例如父子进程的任意printf,因为显示器就是父子进程的临界资源)。

二、临界区

对多个进程而言,进程代码中,有大量的代码,只有一部分代码,会访问临界资源,这部分访问临界资源的代码,叫做,临界区。

原子性:我们把一件事情,要不没做,要么做完了——原子性——没有中间状态。
互斥:任何时刻,只允许一个进程,访问临界资源。

注意:共享内存没有进行同步与互斥。

三、信号量,信号灯

(一)信号量

信号量本质是一个计数器。定义:信号量是一个计数器,这个计数器对应的PV操作(V ++ P --)是原子的。
信号量的PV操作:V ++归还资源,P --申请资源。
你怎么证明放映厅里面特定的座位是你的呢?——我只要买到了票,这个座位就是我的。

看电影为类比,假设一个放映厅(临界资源)有100个座位(座位就是临界资源的一小块),100个座位对应100张票,用cnt计数:cnt=100,if(cnt <= 0) wait ;else return cnt–;卖一张票,cnt–,卖完了就等待。这个cnt就类似于信号量。

二元信号量:只能为0或为1的信号量称为二元信号量。为1的时候,表现的就是互斥特性。
——类比看电影,这时一个放映厅(临界资源)就一个座位,只能一个人(进程)进入,当一个人进入坐上这个座位看电影时,这个行为就是互斥访问。

常规信号量:多元信号量:
多个人看电影不是直接冲进放映厅抢座位,而是去抢票 -> 本质就是对 信号量(int cnt = 100) 进行抢占申请
任何人想看电影——必须先申请计数器cnt——如果申请成功,就一定能看到电影
任何进程想访问临界资源——必须现申请信号量——如果申请成功,就一定能访问临界资源中的一部分资源[信号量(1,0)互斥]

你怎么证明放映厅里面特定的座位是你的呢?——我只要买到了票,这个座位就是我的。

(二)信号量操作

sem: – :申请资源: P
sem:++:释放资源:V
信号量对应的操作是PV操作,PV操作是原子的。

共享内存不做访问控制,可以通过信号量进行对资源保护!

创建 释放 对应操作 查看 删除

shmget:创建共享内存 shmctl shmat,shmdt ipcs -m ipcrm -m
msgget:创建消息队列 msgctl msgsnd,msgrcv ipcs -q ipcrm -q
semget:创建信号量 semctl semop -> +1 -1 PV ipcs -s ipcrm -s

结构体的第一个元素的地址,在数字上和结构体整体的地址大小是一样的!

信号量主要用于实现同步操作,只要资源数大于0就表示可获取,可访问。若要使用信号量模拟实现互斥,则需要初始化资源计数为1,表示资源只有一个,则只有一个执行流能访问!


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

相关文章

编译原理中有穷自动机DFA是什么?

DFA DFA&#xff08;Deterministic Finite Automaton&#xff0c;确定有限状态自动机&#xff09;是一个五元组&#xff0c;包括&#xff1a; 1. 状态集合&#xff08;Q&#xff09;&#xff1a;有限个状态的集合。 2. 输入字母表&#xff08;Σ&#xff09;&#xff1a;有限…

75寸电视长宽多少厘米

75寸电视的长和宽&#xff0c;精确为166.03厘米、93.38厘米&#xff0c;大约为166厘米、93厘米。 家里的电视就是活动时8折抢购的真不错http://www.adiannao.cn/dw 电视的尺寸一般都是代表电视屏幕对角线的长度&#xff0c;所以这里的75寸&#xff0c;其实就是电视屏幕对角线…

寸和厘米

86英寸的电视的一般宽高尺寸约为&#xff1a;1935.5mmx1189.5mm&#xff08;含底座尺寸&#xff09;&#xff0c;1935.5mmx1111.5mm&#xff08;单屏尺寸&#xff09;。不同品牌的尺寸会有一点偏差。 详细计算分析过程如下&#xff1a; 英寸&#xff0c;是使用于联合王国(UK,…

PotPlayer固定播放尺寸

目录 STEP 1&#xff1a;进入“播放设置”STEP 2&#xff1a;自定义用播放窗口尺寸 PotPlayer是一个非常好用的视频播放器&#xff0c;但是每次新打开一个视频都SB地自己调整窗口大小。下面介绍一种方式避免这个问题&#xff0c;从而每次打开都是固定尺寸的窗口。 STEP 1&…

机器学习复习(下)

严正声明&#xff1a;本文的答案是ChatGPT的回答&#xff0c;仅供参考&#xff0c;不代表就是正确答案&#xff01;&#xff01;&#xff01; 9.什么是泛化误差和经验误差&#xff0c;是不是越小越好?为什么? 经验误差指的是模型在训练数据集上的误差&#xff0c;而泛化误差…

2寸的照片长宽各是多少_2寸-2寸照片的长宽分别是多少厘米 – 手机爱问

2006-01-18 1寸免冠相片的尺寸是多少?1寸免冠相片 照片规格 英寸 厘米 像素 数码相机类型 1寸 2。5x3。5cm 413x295 身份证大头照 3。 3x2。2cm 390x260 2寸 3。5x5。3cm 626x413 小2寸(护照) 4。 8x3。3cm 567x390 5 寸 5x3。5 12。7x。9cm 1200x840以上...全部 照片规格 英寸…

1U是多少厘米

U的概念 U是一种表示服务器外部尺寸的单位&#xff0c;是unit的缩略语&#xff0c;详细的尺寸由作为业界团体的美国电子工业协会&#xff08;EIA&#xff09;所决定。 之所以要规定服务器的尺寸&#xff0c;是为了使服务器保持适当的尺寸以便放在铁质或铝质的机架上。机架上有…

腰围2尺1,2,3,4,5,6,7,8寸分别等于是多少厘米/英寸(对照表)

腰围2尺1,2,3,4,5,6,7,8,9寸转换结果&#xff1a; ■70厘米 ■2尺1 ●26英寸 ■74厘米 ■2尺2 ●28英寸 ■76厘米 ■2尺3 ●29英寸 ■78厘米 ■2尺35●30英寸 ■80厘米 ■2尺4 ●31英寸 ■82厘米 ■2尺45●32英寸 ■84厘米 ■2尺5 ●33英寸 ■86厘米 ■2尺6 ●34英寸 ■88…