00:00
首先欢迎各位朋友来到铃声教育啊,我是维克。接下来我们要学习的是啊。Linu内核里面的并发与同步。那本节课的话呢,我们从四个点进行学习。第一个是延迟操作与内存屏障。第二个的话呢,是自选锁与MCS锁。第三是啊,信号量与副词所,第四读写所以rcu。那么我们在学习这四个点技术之前。那首先我们了解一下。你比如啊。比如什么呢?比如这个Linux内核对不对,它这个技术面试啊。一些什么呢,常见的啊。常见的这个什么呢,这个题型啊。如下。我给他整出几个啊。
01:00
第一个一般问的比较多的就是说啊。就是你自选锁的一个什么呢?临界区。他不允许发生这个抢占。就这个意思啊,自选锁。嗯。自选锁啊,自选锁的临界区啊,它不允许什么呢发生这个。抢占。那为什么?这一点我们要搞清楚。第二个是什么呢?第二个就是说啊,人也经常会问。什么意思呢?你比如这个啊,信号量对不对,信号量是如何进行实现的。这个啊。啊,信号量。它如何什么呢,实现。这个是面试过程当中啊,也是经常出现的这些题目。
02:02
那么我们大家啊思考一下,三第二个。那第三个是什么呢?注意啊。第三个就是说。我们要了解MCS所的一个什么。机制的一个实现原理。MCS锁。它机制的一个什么,实现原理是怎么样的?那第四个是不是还有一个RCU的一个什么呢?RCU实现的一个什么。基本。啊,就是它的一个原理机制是怎么样的。啊,第四个是吧。好,第五个我们要掌握的是什么呢。你比如啊,经常用到的那个叫什么呢,叫做。啊,大家看一下啊,就是我们在编写内核代码的时候对不对。
03:02
我们怎么去选,到底你选择这个副词所还是选择这个信号量,是不是就是我们在编写啊内核代码的时候。应该,嗯。如何选择这个什么呢?如何选择这个副词所啊。和这个什么呢。信号量。那么我们每一节课,每一节课只要掌握几个啊,面试题型,每一节课只要掌握几个,基本上我们就差不多了,是不是。啊,那么今天晚上啊,后面来各位朋友啊,那么大家如果需要相关的学习资料的话呢,记得啊,直接找秋香老师来领取就可以了啊。他的QQ和微信啊,是207032995,那么这些学习的相关笔记啊资料全部在这里,是不是大家可以啊,找秀香老师来领取可以了多少呢?你看啊。在这边是吧,首先啊,我给大家准备好的是吧。
04:04
第一个。是什么呢?是啊。PDF的五本教材啊。把这五本教材啊大致了解一下。那面试基本上是打通关的,这个不用想啊。还有什么呢?如果大家从事啊,这个后台服务器研发的面试这个大厂BAT公司是不是那么这个啊。搞定这个啊,相关的啊,面试题那也基本上都是OK啊,还有就是我给他准备两份课堂笔记,一份是专门搞这个什么呢,网络协商架构,另外一份是内存管理架构。我可以告诉大家啊,一般我们Linux内核啊,源码分析是不是重点是研究进程管理啊,内程管理以及网络协站,那如果你做分布式,那你要掌握一下文件系统是吧,你做这个设备驱动开发的话呢,你要掌设备驱动程序这一块,所以这个相关资料啊,我就发到公屏里面来,那么具体这个相关资料呢,领取啊领取就直接找秋香了啊就可以了。
05:08
好,那么接下来我们搞清这五个啊,常用面试题之后啊,那么接下来我就带着大家来看一下。什么意思?这些啊,并发与同步的话,就是说我们编写这个内核,就是你你做这个内核开放的时候,或者是说你写这个驱动代码的时候,哎,有时候我们需要什么呢?我们需要注意一些共享资源的保护。那我们要防止这些共享资源被并发访问的话。对不对,那么并发访问它是什么意思啊,并发访问就是你多个内核代码。这个路径啊,它同时会访问或者是操作操作数据。这样这样的话,它就会发生什么,有可能会发生这个覆盖共享的数据的这种情况,会造成你原来的数据跟现在的数据完全不一致。
06:00
所以内核代码路径,它可以是一个什么呢?内核的执行路径啊,或者中断处理程序啊,以及内核线程等等啊。并发访问。它可能会造成什么呢?系统不稳定,或者是一些啊错误的因素。这样的话,我们在开发过程当中,如果找到这个错误就找到,找不到的话,那你在已经产品上线之后,那么可能你再去调试和追踪,那就相当相当难了。啊,这就是我们要考虑的问题。那么在以前啊,以前这些啊内核版本是不是它不支持这个SMP就是对称啊,我们叫什么呢?对称多处理器啊,这个内核啊。那么它会导致这个并发访问的原因呢?因素是一些什么呢?比如一些中断服务程序啊。那么只有中断发生了。那么内核代码这个路径啊,它显示要求什么呢?重新调度并且执行另一另一个什么进程的时候,才可能会发生这个并发访问。
07:07
所以在支持Linux内核这个系统当中叫SMP。在不同CPU中,它并发执行的内核线程,它完全可以在同一个时刻并发访问共享数据。所以你并发访问这个数据呢,啊,它都可能会发生。所以说。现在你说5.0这些相关的Linux内核啊,这个相关的操作系统啊,就是说它怎么样呢。他已经支持我们内核抢占了。但是这个调度器呢。调度器它可能会什么呢?他可能啊抢占正在抢占的过程当中,他会重新调度其他这个进程线程什么的。所以这个计算机当中啊,它就出现了一个概念,是不是这概念叫什么呢?这个概念叫做我们经常讲的critical啊,这个是不是叫做临界七是不是啊,临界期啊,这个英文读的不是很准,是不是啊。
08:10
啊。OK啊,就就这一个啊,就这个临界区。那么临界区它到底是什么呢?就是说临界器,就说一般它是指什么,比如指什么呢?指我们操作什么,指操作,操作和什么呢,和访问这个共享数据的一个什么代码。那么其中的这个什么呢?资源啊,其中资源无法什么呢?无法同时被什么被多个执行线程去访问。对不对,那么访问这个临界区它的一个什么呢?访问临界区的执行线程或者是代码路径啊,它都称为什么呢?都称为病化缘。这是最基本的啊。
09:01
嗯,我们这个就搞清楚了是吧。好,那么搞清楚这个问题之后。那我们要想,那我们呢,我们要避免这个什么呢,你要想办法啊,避免这个什么呢?啊并发访问。并发访问这个临界区,你要避免访并发访问这个临界区啊。所以说这个开发工程师。他就必须什么呢。必须保证我们访问这个临界区的一个什么原子性。所以说在临界区内啊,你不能有多个并发炎同时啊,同时执行其访问这个临界区。那么整个临界系就像一个不可分割的一个整体。所以说。下面就产生了一个问题。什么问题呢?所以说我们在这个什么。嗯。我们在linu克斯啊内核当中,它所产生的一个什么,产生的一个产生的一个并发访问的一个什么并发语言,它主要啊啊。
10:11
有哪些呢?第一个就是我们所讲的一个什么嗯,软中弹和task什么ne这第一个。那么软中断和to它随时可以被调用啊,什么时候都可以执行啊。这样的话,他就可以打断什么,打断我们当前正在执行的一个进程上下文,他就这个意思啊。除此以外还有一个什么,还有一个是多处理器要注意啊。嗯,还有一个是多处理器。我们叫做。多处理器这个并发啊执行。多处理器并发执行什么意思?就是说你多个CPU同时期什么呢?可以同时去执行。多个进程。
11:00
这叫做多处理器并发。仔细。啊,还有就是我们所讲的内核抢占。内核抢占是什么意思啊,就是这个调度器啊,你要搞清楚这是调度器啊。调度器呢,它支持什么呢?支持可抢占的一个特性。那么它会导致我们这个进程呢,跟进程之间它有一个什么并发访问。另外一个就是我们异常和什么呢中断。异常和中断什么意思?就是说中断发生之后。那么中断处理程序和被中断进程之间。它可能会产生什么?并发访问执行。这就是我们必须要了解的第一个啊,基础概念的问题。那我们了解这些相关基础概念值和问题呢,就是说啊,这个刚才讲的是啊。
12:00
比如单核,还有一种是多核啊,那么对一什么呢?你对单核这个处理器系统的话,它的并发炎也比较多,是不是,那么对多核的话,它也有,它有两种是不是。那你比如这个对单核处理器系统的话呢,它的并发眼是什么?就是说你比如啊,在不支持抢占内核当中啊,这个进程上下文之间它不会产生变化。那么在支持抢占内核的时候呢,那么进程上下文之间,它就会产生并发,就是并发源,当处理器系统的并发源,它的一个产生,还有一个就是刚才我们讲那个task light跟那个啊软动之间,它不会并化执行。但是可以打断进程双向文的一个什么执行。中断处理程序呢,它可以打断什么呢?打断那个软中断和这个什么他LA的执行,这是对单处理器系统,那么对多多核来讲啊。刚才的单核是不是,但是对于多核就不一样了。
13:00
多核的情况比较复杂,为什么呢?多核就是说你同一个类型的软中断在不同CPU上,它并发执行是吧?那你不同CPU上的进程上下上下文切换,它也会并发执行是不是?所以说同一个类型的中断处理程序,它不会变化执行,但是不同类型的中断它可能会啊达到什么呢?达到不同的一个什么送到不同的CPU,所以说不同类型的终端程序,那可能也会产生变化执行。这些啊,都是我们程序员都要想到必须要考虑的一个问题,是不是,诶那我们了解这些之后呢,后面就有这些问题了,你比如啊。进程他在上下文切换的这个操作过程当中,你比如某一个临界区是不是它的资源啊,发生中断了啊,正好在什么呢?对应的中断处的程序也访问这个资源。如果我们不使用这个内核同步机制来保护这个资源,抢占保这个资源的话。
14:04
那么可能会什么呢?可能会发生这个什么并发访问的一个啊。错误,是不是这个异常。那么如果进程上下文正在访问和修改,临界区资源发生了抢占调度的话。那么。它就会发生什么呢?并发访问的bug。那么如果在自选锁的临界区当中,他主动啊,比如这个主动睡眠,它可以让出CPU。那也可能是一个并发红的bug。那么如果两个CPU同时修改连接器的同一个字眼。也可能是产生错误是不是?所以说我们在实际的这个项目开发当中啊,那么真正的这个问题呢,是如何发现这个内核代码的并发访问可能性,要采取一些保护措施。因为我们在编写代码的时候啊,应该考虑哪一些资源为临界区,应该采取嗯,什么样的这个保护措施,那么如果在我们代代码的设计架构上面,是不是一旦设计完成之后,你再回来去查找这个bug需要保护的资源的话,那肯定这个呃像难度是相当大的。
15:18
所以我们要搞清一个问题。就是什么呢。在复杂的内核代码当中,我们要找出一个保护资源和数据它是一件非常困难的事情。那么任何啊,任何可能被并发访问的这个数据啊,都需要保护。那究竟什么样的数据我们需要保护呢?如果你要从多个内核。啊,如果要从多个内核代码路径可能访问某些数据。那就应该对这些数据啊进行啊强制性保护是不是。但是要记住啊,要保护资源和数据。啊,不是保护代码要搞清楚啊。
16:02
这里我们讲了一个问题,是不是就是什么问题呢?就是我们要保护。我们要保护的是什么呢?是资源。或者是什么。资源或者数数据,而不是什么呢?而不是保护。还不是保护这个单马就。这个意思是不是?那么你保护对象的话。你比如什么共享数据啊,返程链表,什么红黑素啊等等啊。在实际。在实际编写过程当中,这个内核代码和驱动程序的话。这里就必须要考虑几个问题。那么你要考虑什么问题?就是说进程会不会进入睡眠状态,等待这个数据?对吧。还有就是说,如果从当前这个内核代码。访问什么呢?数据的,他发现了一个抢占了。
17:02
发现被抢了啊,或者是执行进程的不会怎么呢?不会访问啊,相关的数据或者被调度了是不是。那你怎么办呢?是不是啊,除了我们从当前这个内核代码这个啊路径以外啊,是否我们还可以从其他内核代码,是不是访问这些数据,你比如啊。如果我们从这个什么呢?中断处理程序啊,或者是工作线程处理程序啊,或者task light这个处理程序啊。或者软中断处理层线等等,这些都可以找出这个问题。所以说我们经常讲了。所以说我们为了解决我们刚刚讲的这些问题,是不是,所以说第二个问题就出来了。水利纳克斯内河。你下子内核它干什么呢。他就专门什么,专门提供这个多种并发,嗯。
18:00
多种并发访问的一个什么啊?保护措施。就是保护机制了,就是接下来我们要讲的啊。你比如什么啊,原子操作啊嗯。或者是这个信号量啊。还有什么副词所啊等等啊,我就不再列了,是不是等一下要讲。所以说Linux内核当中这个保护机制啊,它是第一步是不是,但是重要的是什么呢?你要思考清楚哪一些地方是我们要保护的一个临界区。我们用什么样的机制来保护这个什么临界区,你到底选择这个延迟操作啊,还是信号量啊,还是副词锁啊啊,还是自选锁等等这些都要我们考虑的是不是,嗯。那么接下来的话,我们就要了解一个问题。什么问题呢?接下来我们看第三个啊。那么第三个是什么?第三个就是我们所讲要学的一个原子操作。
19:03
原子操作它主要是保证什么,保证我们这个指令它是以什么呢,延子的方式去。执行的。对不对,那么执行过程当中,它不会被什么,不会被打断。就是在代码的片段当中是不是啊。他都。不能被什么拆开。就这个意思。所以说延迟操作。但是我们注意啊。颜值操作我们经常啊。可以看得到是不是。也可以,什么也可以了解。什么意思,你比如啊两个CPU。CPU0和CP啊,它同时访问啊。他发现了并发访问。那么从CP的角度来看的话,就是说啊。你这些静态的一些相关的这个变量啊,或者你存储在这个数据档当中啊。
20:02
首先你要读取一些它的相关值啊,把它放到存储器啊,放到这些啊,寄存器就通用寄存器里面去,是不是让他去计算对不对,这是对单方面的,那么如果对于什么呢?对。再多处理器架构来讲的话啊。再多处理器注意啊,多器价格的话,那么可能就同时进行了,单处理器的话,它依然可能会发生并发访问。就这个问题啊。所以说你看。延值操作,Linux内它是一个延值变量嘛,它根据不同的架构进行操作,你你也得搞清楚是不是。所以现在我们就来看这个问题,是不是?你看第三个是吧。什么意思呢?啊,我们讲了Linux内核。Linux内核它提供什么呢?提供凹凸什么make_T,通过这个类型的什么原子变量?
21:02
但是。它的一个什么呢?它的一个实线。主要还是依赖于什么,依赖于不同的一个什么架构是不是。但是要注意啊,那具体的这个什么内核的这个盐码啊。如下我们可以看得到啊。那么这个内和野马如下有哪些呢?你看啊。在这边。打开它啊。啊,打开它之后,这里面很多先把它关闭啊看一下。啊,就这个没错,我可以用这个啊。你可以找到什么,找到types。注意啊,在纳克斯这地方看到没有?嗯,在这里啊。不是啊。是在整个。
22:00
掩码的目录下。你那下面。有一个什么呢。有一个。叫做。哎,这个地方。双击。Automak啊。嗯,就这地方看到没有,这我们已经讲过了,看到没有。你看啊。在这里啊。看到没有,你看。这个tify structure是不是啊,中间就是数据类型的CT是不是。
23:02
后面一个auto make_T什么意思,这里提到了啊,Auto make_T。它是什么呢?就是原子操作函数,它是个原子操作函数,它可以什么,可以保证这个什么呢?保证一个操作的原子性的,原子性的和原子性的哦,延子性和完整性啊。但是我们从内核来看,内核来看的话,你比如这些原子操作函数,就像一条汇编指令一样啊。他保证操作的手不会被打断。就这个意思是不是,所以说保证要保证操作完整性和延迟性,所以我们还需要通常什么呢?通常使用什么延子完成。啊,就是我们经常讲的是不是啊。就什么意思呢,需要完成什么呀,比如说读。啊,修改还有一个是回写机制。那么中间是不能被打断了。
24:00
当时是什么意思呢,就是在在在这个啊。在这个整个过程当中。CPU就是如果其他CPU同时对这个原子变量进行进行写操作的话。它就会影响什么,影响数据的完整性。哎,他就可以做到这一点。但是你影响数据完整性的话,你比如啊读取原值变量的值啊,或者你修改啊,或者你把新值写回内存里面,它就会影响你这个数据值,就这个意思。所以说在读取原值,变量值或者修改啊,把一些新词写到内存里面去写回内存的话,那么处理器的就必须提供原值操作汇编指令来完成。啊,比如CS指令是不是。你看啊。什么意思,大家注意啊,就是说处理器架构是不是把这个放放过来啊。
25:01
就这个啊,大家看一下什么意思呢。就是说。比如处理器啊。你比如在读取是不是,比如你在读取啊,啊或者是你修改什么呢?修改原子变量的值是不是或者是什么,你将一些什么,将一些新的数据是不是,你写回哪里去啊,新数据写。新数据。写回内存呢,对不对,你写回内存的话。那么这个时候。处理器,嗯。他必须提供什么呢?提供原子操作的一个什么费编指令来。完成啊。来完成这个操作啊。对不对,你比如啊。比如什么呢?比如这个264。M64这个处理器。
26:02
对不对,他提供什么CAS指令。它这个不一样啊。这是不一样的。CS指令,那如果你是叉八六,那也不一样了,叉八六这个处理器呢?嗯,它提供的是哪个指令呢?是compare exchange。啊,用这个来操作啊。CMP啊,注意啊比较嘛,嗯。Exchange。SCHG啊这个指令。所以它不一样是不是。我们注意这点就行了,是不是。你看这不就出来了,是不是啊。所以说。在Linux内核里面。他的一些什么呢?一些基本的原子操作函数很多是不是啊,它不止一两个啊,你可以看一下我前面,呃,上课的时候我也给大家讲过了,是不是你看啊。
27:00
你找到这个什么呀。Include。下面一个什么。ASM。Rick。下面一首歌,Autoak。啊,这个点H。好,我们在奥特麦克点H里面,你看到没有。下面不就可以找到了。找到你看啊,这个原子变量的初始方案。看一下啊。IT3。我输一下快一些啊。在哪里练?Or?Make下划线,哎,就这个跟我们讲过了,看到没有。你像这个。啊,紧靠def DeFine auto下RT什么意思?这个是原子变量,什么是原子变量初始化I。还有一个是read是不是,Read是什么读取延迟变量的值。瑞的括号里面V是不是I,那么这个是做什么呢?
28:05
看下面这个VI嘛,是不是,其实它在做的整个过程当中,它就设置啊,设置变量VV的值为什么呢为I,就这个意思是不是ones。啊,这是原子啊,原子操作函数是不是啊,常用的这些我们都给大家列举出来了是不是。OK。这是第一个啊。嗯,这是第二个。嗯,下面这个是第三个。OK。
29:04
嗯。好,那么这个问题啊,我们解决之后,那么还有什么呢?其实还有很多,还有一些不带参数的,是不是有哪些呢。你比如这个啊。读啊。对不对,比如说读啊修改回写机制。它也可以,什么呢?避免多个处理器并化同一个来访问同一个原子变量带来的一个并发问题,是不是大家注意啊,我们经常讲嘛。经常提到的啊。什么意思呢?就是一个是读啊,要注意啊。啊,一个是读。还有一个是什么呢,修改。还有一个是回血是不是?啊,这些机制对不对,嗯,它可以什么呢?可以避免避免多处理器并发访问。并发访问什么呢?同一个原子。
30:03
变量所带来的一个什么原因?所带来的一个并发问题。就说你不考虑这些架构优化问题的话。其实通过这个叉八六这个什么comp exchange是不是诶写错了。不好意思啊。CNPXCXC写错了XCHG,是不是,那么通过这个来实现就可以了啊,这个这个并不难是不是。那我们下面就有一个什么呢,你看啊。Autom下划线,刚才品访问这一个里面。有专门有这么这么个change指令,来来来来来处理你看啊这这这。嗯。有没有这个啊,叉八六是不是。CMMP。就这个。看到没有?
31:00
啊,它是由这个来执行,看到没有。这个部分。牵涉到。CHG。啊,就这个。看到没有?就这地方,井号DeFine。就盯到这儿来了,看到没有?这个部分。是这么个意思。这就可以实现啊。这其什么呢?SP。我直接把它放到栅栏了。好,这些问题里面啊,你看。没问题了是吧。这个就。搞定了是吧。好,那么搞定这个问题之后啊,还注意了。
32:03
如果你这个颜值操作函数有一种是可以带回值的。有一种是古代妃子。就是说。带回值的就是带返回值的原值操作函数。对不对,一是返回颜子的一个新子,还有一个就是返回颜子的旧子,就这个意思,你要搞清楚啊。就是说Linux内核。嗯,他提供什么呢。提供两类,这个带什么呢?两类带返回的一个返回值的一个什么。原子操作函数是不是那么一类,它就是返回值啊,返回原子变量的一个什么。颜子变了一个星子。那另一类呢,它是返回什么呢?返回原值变量的一个什么。
33:00
哎,就此就这个意思。那返回原值变量新值的话,那么你比我们机体操作你可以看啊,这里面肯定有是吧。有个什么,比如奥。下划线康力F啊。凹凸啊。Onto迈下划线,Ad看到没有?ID_一个return对不对啊。HD_retain带有返回的。好,这个返回里面您可以看一下啊。在这里,这个函数是。啊,带有两个常数什么意思。他的意思就是。原子的给V啊,加上I是不是加I并且返回V的值。他这个操作就这个意思是不是。要摸清楚它这个核心的一个优势啊。它那个意思就说。
34:00
原子的给什么呢?给V啊,加上什么。加I并且什么,并且返回这个什么。看微的一个什么星子?就这意思。这么干?你看现在被搞定了是吧。这是啊。返回值是吧。那么还有什么呢?除此以外啊,这是返费星子,你要搞清楚啊,现在讲的这个是仿费星子。这是返回。颜值变量的一个什么星子?
35:00
如下。那如果返回这个原子变量的一个旧字怎么办呢?是不是?比如返回。颜值变量的一个什么旧值?旧子的话很很容易理解啊。到这来,你看一下。就子的话,你就这个fit feet。Fit。嗯,就这。就这个函数啊,我随便挑一个函数。返回一个旧址相加。啊,就比如加操作还是什么操作啊,这个这个两个井号可以,比如and是不是sub or X y抑或什么的啊。他可以。井号可以代替别的是不是?嗯,那就相当于什么呢?你比如这个我们就找一个。Autoak。那个A了。
36:01
F。啊,ET ch下划线什么ad就这个。是。就这个函数你看。好,那么像这个的话,注意啊。他有什么呢?这个它有两个参数是不是啊。一个是I是不是一个是相加,一个是相加的嘛,那就是什么呢。它相当于。原值的给V是不是啊,加上I,并且返回V的一个旧值。他就这个意思啊。要摸清楚的关系就行了。这些都可以展开啊。这是分配九次的。
37:02
除此以外,内核还有什么呢?原子交换函数是不是,你比如原子交换函数是这些了,你看啊。在汇编时不是讲过嘛,是吧。Iba专门有一个叫做。Two。麦克下划线exa不对啊。Comp巴,这个。你像这个是吧。这两个。他就是什么就是。原子交换函数。这个是颜子。交换函数如下。这些啊。还有什么呢?还有一些说还有一些内核,它也提供一些什么,提供一些比如引用技术,原子函数。
38:00
引用基数原子函数就是INC了。那么INC是基哪一块呢?大家可以注意一下啊,INC你看一下。看这一边啊。CTF。INC。这个没有啊。Automic and。你看他的一些操作,大家注意一下。这个比如LDXR这个指令,我给你去讲一下,是不是你们了解一下这个。叫做什么?我想一想。有一个叫做。叫什么?
39:02
在要在对对要到架构里面去。要到ARM架构里面啊。六四啊。Include asm下面。Or sc?Tom。啊,这个。这个下面啊。比较经典的指令是。奥op。Countryf。就这个操作了。
40:06
其实它就是下面这一个坑没有。就这个子。这个地方。没错。LLC。对,没错,LL是跟上面一样的LLLL下划线没错。你看啊。我们可以发现一个问题,是不是你看在这里面的实现。他有一个什么。返回结果asm。在哪个地方?M4价格。上面这个不是六四。
41:13
这个操作。这个操作。这个操作可以是。And可以相加。看这些指令啊。Subs。仙境。这比较多,这些指令。646464。
42:00
应该是这个词。这个嗯。OK。啊,这些。然后你比如二麻还有一种什么呢?还有一种原子加法指令,比如说S。什么T里面是不是。那么它的一些相关判断有时候也不一样,是不是?你比如这个比较比较交换指令有compare是不是。有比较指令你看啊。
43:00
Sweep是吧?CMMP。A。交交换指令。叫做什么,我一下子忘了啊。所以说你要注意两点,比如说CS是不是CS啊。CS这个指令是比较交换指令,是不是CS指令根据不同内存屏障属性啊。它又可以分为一种菌类,是不是啊?分为几类啊,你比如什么呢?你比如这个有CS ABB啊,CS ABB l a LB csb啊,还CSLB啊,CSSH啊,就是说它内存屏障可以什么,比如说加载获取,或者加载获取或者存储释放。存储释放或者是加载获取,它就通过这个啊言语操作进行了完成。那么如果做做过这个阿米六四架构肺片的话,大家应该知道还有一个,刚才我们提到一个叫什么呢。叫做这个。
44:02
前面提到的啊,就这个HR这个指令。这个它这个函数注意啊,它也有个比较这个交换函数是不是。但是这个是基于什么,基于叉八六这个指令集里面才有的,Linux内它还是保留这个指令啊,要注意还是保留这个指令。所以说我们在操作过程当中,是不是这个延子啊,这个延子操作,你只要掌握这些,基本上就没有任何问题了。说明在实际的开发过程当中,大家也可以什么可以进行进一步啊,重新啊。来研究一下是不是有任何问题啊,大家可以通过QQ啊。想跟我们进行进一步的沟通与交流,那么今天晚上啊,这个课程啊,我就给大家分享到这里,主要讲的是什么呢?是原子操作对不对,相关的啊一些详细技术知识点。那我们啊,下一次课。
我来说两句