当前位置:首页 > 知识 > OS-P47基础篇,信号量实现互斥

OS-P47基础篇,信号量实现互斥

OS-P47基础篇,信号量实现互斥

信号量实现同步复制啊,再向上里边,咱们讲的用信号量实现同步啊,接下来咱们这里讲一讲信号量实现互斥依然是一样的,咱们先讲一个实现互斥的一个代码模板,然后利用这个模板来实现一个代码的一个例子啊,举一个例子啊,为什么能够这样写那么实现啊复制啊,咱们就不去做过多的推倒了,因为这事啊,别人已经设计好的一个东西啊,没有必要再去做啊,过度的追求就好像大家去学,比如说在数学里边儿啊,发明的拍摄技术,你需要去追根溯源的学啊。去就是说啊,就知道他是怎么被推导出来的,其实大多数对于大多数人来说,根本没有必要去理解它是怎么被推导出来的啊,反正有有的事做起来有一有的是做起来的意义啊,咱们既然有别人的一个模板,咱们肯定就用这样的一个模板来啊,来实现这样一个功能来实现所需要的功能,对吧,既然咱们主要讲的就是说,对于这样的一个模板,为什么能够实现获取的这么一个功能啊?首先这个模板里边啊也是啊,第一个销量,这个销量复出。

在讲的过程中,你就能够知道为什么把他的复制必须到位啊,首先呢,这一个第一个模板视频第二个模板是的啊,他们的代码是一模一样的,位置都是一模一样的,然后该玩的地方玩,然后该批的是P2PL的是地方为你所需要的代码用省略号代替的,然后省略号是你写的代码,你写的代码必须加载操作和V操作之间,而且操作在前面的操作,在接下来咱们来看一下这个模板是怎么样来实现啊,胡子的首先啊,将它的初值啊赋值为一。第一种情况,Cpu先执行P0在执行批啊代码先执行P0的代码在执行的代码啊,Cpu先执行批零一种情况执行执行之后执行的一个操作啊,他问操作啊,她问操作系统有没有资源cpu跑这里啊,这个时候就会啊,问操作系统有没有缘啊?操作系统说有资源,因为等于一,那么接下来啊那个啊,就可以执行中间这一段代码,执行中间这段代码,然后执行的操作啊,执行的操作啊,这是已经从一变为了零。

VRP,有一个几秒钟,然后再执行操作,没操作啊,就会有价格没有变化的一个室友回来,然后先执行的代码在执行批的代码在执行的过程中啊,然后就跑来执行P一个代码啊,也是一样啊,这个时候啊,11啊,然后执行一个解码啊操作执行的结果,如果操作有资源,那么有资源的话就啊就执行解码啊,执行解码之后呢,他就进行访问,资源访问之后执行V操作同样道理啊,资源归还之后啊标一,这就是整个过程,因为霹雳在这种情况下平行运行PE后运行。所以说不存在于大家会同时进入这一段啊,这一段程序的一个同时进入这段程序的一种啊功能,或者说啊,一种一种现象应该是一种现象,所以说这种情况啊,是啊,不会出现,不会啊,不会不,不会产生护齿碰撞,不会产生互斥现象,但是呢,不会产生互斥现象,这样的代码呢,也能够正常的运行通道,第二种情况是。

先执行再执行批评,这种情况适合第一种情况是一样的啊,分析这个也是一样的,那么第三种情况下就会产生或执行,但是他又是怎么样的事情,不知道咱们来理解谁优先执行期间,然后执行批,咱开始理解啊,谁优先执行就凭这个地方来执行,然后在执行的操作系统有资源操作系统,所有资源啊资源,那么就可以进来,然后执行这个代码执行代码的时候啊,在飘的时候他会加啊资源,做一个地方,并未在执行这个期间呢,然后谁来执行批谁都不要提,这个地方执行,谁跑这来执行这个是因为做了一个减法。这个时候他的啊申请的时候是零零,然后再减个一,然后就变成了负一对吧,负一的时候就会将啊,这个经常挂在那个挂在那个队里边,然后煮色起来啊,就是排在那个啊,在吃火锅的第一个队列里边啊,在那个队列的第一行啊,他那时候就在啊,就在这个地方,一直在等运行表后边儿啊。

他一直等等等等,到时候啊,Cpu啊,总有一个时候他就会继续执行啊,这段代码这段代码执行完之后呢,它就会执行资源这样的一个操作,执行这个操作的时候,它就会从啊负一啊负一减啊,负一加各加一,然后就会重复一遍问题,因为你的过程中因为操作有一个唤醒的时候,他发现这个啊,他发现那个啊,就是说队里边啊,有人在排队等着吃啊吃火锅,所以说CP粉啊,操作检测之后,检测系统里有人在排队,那么它就会唤醒,因为cpu已经执行完了啊平的这个程序。那么再去唤醒的时候就会继续来执行哈批的这后面的代码,然后他就因为PPT里面的这批操作已经执行了,他继续来执行中间的这一段代码,执行完这段代码之后呢就执行这个微操作,这个时候因为已经等于零了,换季的时候已经等于零零加上啊执行操作价格也就变味了,然后就回到了原始的这么一个状态啊,同时呢,这个屁啊,操作和V操作啊,把代码加在操作和V操作之间呢,就能够实现在啊霹雳。

在这个地方一直等待不能进来执行这段代码,这就是在第三种情况下能够达到护齿啊的一种效果,能达到护齿能达到的一个效果。

第四种情况是返回C优先执行,他啊先执行到在执行批评啊,他整个过程就是反过来和第三个,这种情况是反过来的,所以说不论是种情况中的哪一种情况,这样的一个代码模板都能够解啊,无论是否产生互斥现象,它能够正常运啊,不,不产生物质现象,它能够能够正常运行啊,产生互斥的时候呢,他也能够达到护齿的这么一个效果啊,所以说这个代码模板啊,是能够完美地实现啊,利用效率来实现啊护士的,那么这个代码模板理解的一个精髓就在于啊,信号量一定要足出自唯一啊,你可以试一试您啊附一他们能不能啊?当然肯定是不能的,因为这是通过大家的一个设计啊,他肯定只能等于一啊,对,为什么只能等于大家一定要通过啊?理解一下前面,咱们讲的匹配操作的一个啊,工作原理去理解一下为什么要设置为一第二个呢,就是说啊你所运行的代码,也就说这段代码又叫临界区,临界区的这段代码一定要放在加载匹配操作之间啊,大家在匹配操作之间这样写出来就能够实现护持。

咱们啊,同样的啊,为这个代码举个例子来实现获取,咱们前面讲过faker和rookie来捡枪,在刺激游戏里边对吧来捡枪啊,这个例子咱们也按照这个模板搬过来P0代表faker faker捡枪代码啊加在操作和V操作直接代替这个位置,然后rookie s PE,然后啊操作和V操作,其他的代码检测代码啊夹在中间,那咱们开始来看如果faker到来的话,先执行faker的智能代码的话。第一种情况,第二种情况咱们都已经讲了啊,不会产生一个啊护士的形象,所以说不存在于真真的去潜点同一把枪的一个功能啊,第二和第三种情况呢,咱们只讲第三种情况,现在执行的代码执行备课代码为一,那么这个手机啊,执行一个计划变成那么有资源啊,菲儿把枪捡起来啊,正在进行,正在进行的过程中,谁来执行啊,Rookie的这段代码rookie啊只发出一个皮草作响。

OK啊,这发出一个操作系统,操作系统有操作系统没资源,只有一个资源啊,那么你就去排队,你就去排队,变成一副一去排队,这个时候啊,就在这个地方的时候停下来,永远停在这,因为堵塞它正在排队,要等其他的人啊,离开他就作为做下去啊,这时候啊,就在这个地方等啊等等做一段时间啊,会回来运行,这个代码继续可以继续运行,玩具枪运行完枪之后faker运行微操作的,因为负一所以负一加一就变成零的过程中呢,Faker执行操作的时候。操作系统执行操作的时候发现有人在等,有人在等啊,这有人在排队等待,所以说操作系统会执行一个唤醒的一个功能,执行唤醒的时候,就让cpu继续执行这段尽情的一段代码,在检查的过程中,衣服刚等于这时候刚已经被扣了,所以说刚顶四个,那么OK就不能捡枪啊,他什么都没做,接着出来之后啊,接着出来之后啊,因为是您了,您把这些操作之后加一,然后就回到了一个原始的状态,整个一个原始啊,整个一个。

配种介绍出来之后啊,记得出来之后啊,因为是您呢,您啊,因为操作之后加一,然后回到了一个原始的方案,整个一个原始啊整个一个循环,然后就完成啊,这就是啊,实现互斥的一个代码的例子,你所写的一个代码啊,一定要加在护齿一定要加在PK操作之间啊,谢谢大家啊,代码的护持呢,咱们就讲到这儿。

以上就是(OS-P47基础篇,信号量实现互斥)全部内容,收藏起来下次访问不迷路!