CN115454653A - 一种基于嵌入式实时操作系统的rcu实现方法 - Google Patents
一种基于嵌入式实时操作系统的rcu实现方法 Download PDFInfo
- Publication number
- CN115454653A CN115454653A CN202211405364.9A CN202211405364A CN115454653A CN 115454653 A CN115454653 A CN 115454653A CN 202211405364 A CN202211405364 A CN 202211405364A CN 115454653 A CN115454653 A CN 115454653A
- Authority
- CN
- China
- Prior art keywords
- cpu
- operating system
- rcu
- grace period
- time operating
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 230000004048 modification Effects 0.000 claims abstract description 12
- 238000012986 modification Methods 0.000 claims abstract description 12
- 230000000903 blocking effect Effects 0.000 claims description 21
- 239000000725 suspension Substances 0.000 claims description 3
- 238000011084 recovery Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 4
- 230000007547 defect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于嵌入式实时操作系统的RCU实现方法,包括以下步骤:1)读线程对共享数据进行读取时,为读操作进行加解锁;2)写线程对共享数据进行拷贝后修改,修改后更新源数据;3)开启全局宽限期;4)宽限期阶段等待;5)判定CPU是否经历静默期;6)对CPU进行静默期标记;7)判定全局宽限期是否结束;8)全局宽限期结束后,确认修改前的共享数据能够被释放;通过借助嵌入式实时操作系统的线程控制块TCB实时记录RCU占用情况,作为静默期QS的判定条件之一,提高判定的实时性和效率;RCU在实时系统上创建定时器,通过定期检测作为进行静默期QS和宽限期GP判定的一个时机,提高判定准确性和判定效率。
Description
技术领域
本发明涉及数据同步实现方法的技术领域,具体涉及一种基于嵌入式实时操作系统的RCU实现方法。
背景技术
RCU是Read,Copy-Update的缩写,意指读,复制-更新,是一种同步机制,是Linux操作系统下数据同步的一种实现方式。以链表为例,RCU机制同一时刻允许多个线程对链表进行读操作,且读的时候允许一个线程对链表进行修改。当读者多,更新者少时,RCU 的效率很高,在Linux操作系统中,有很多子系统借助RCU来进行数据同步,如文件系统中,由于查找目录情形比较多,修改目录则相对较少,因此就可以使用 RCU同步机制。
RCU的基本思想是:先拷贝一份旧数据,然后对拷贝后的数据进行修改,形成一个新的数据,最后再用新的数据替换掉旧的数据。
例如,如图1所示,假设有一个单向链表,其中包含一个由指针P指向的节点;
现在,要使用RCU同步机制来更新这个节点的数据,那么首先需要分配一段新的内存空间,由指针 Q 指向,用于存放这个复制的节点数据,如图2所示。
然后将指针P 指向的节点数据,以及它和下一节点[11, 4, 8]的关系,都完整地复制到指针Q指向的内存区域中,如图3所示。
接下来,写者会修改这个复制的数据,即如图4所示,将[5, 6, 7]修改为[5, 2,3]。
修改完成之后,写者就可以将这个更新发布(publish)了,对于读者来说就可见了。因此,发布之后才开始读取操作的读者,比如读节点[1, 2, 3]的下一个节点,得到的就是新的数据[5, 2, 3],如图5中粗边框所示;而在 publish 之前就开始读取操作的读者则不受影响,依然使用旧的数据[5, 6, 7],如图5中细边框所示。
等到所有引用旧数据区的读者都完成了相关操作,写者才会释放由指针P指向的内存区域,如图6所示。虽然思想简单且能够有效提高数据同步效率,但是 RCU在实际实现时,仍然存在以下缺陷与不足:
1)需要依赖很多操作系统相关的独有技术,又因为Linux操作系统不属于实时系统,不需要考虑实时性等问题,因此当前RCU同步机制仅在Linux操作系统下有源代码能够实现,其他嵌入式实时操作系统尚缺乏与RCU资源同步方法的有效结合。
2)RCU同步机制的实现依赖Linux操作系统下独有的技术,对于其他嵌入式实时操作系统,没有相关技术实现,因此无法在此类嵌入式实时操作系统中开发出 RCU同步机制。
3)Linux操作系统不是实时系统,RCU同步机制实现时,也没有充分考虑实时性,因此其当前实现方法也无法在实时系统上直接使用。
发明内容
为了解决现有技术中存在的缺陷与不足,本发明提供了一种基于嵌入式实时操作系统的RCU实现方法。
本发明提供的具体方案为:
一种基于嵌入式实时操作系统的RCU实现方法,其特征在于:包括以下步骤:
1)读线程对共享数据进行读取时,为读操作进行加解锁;
2)写线程对共享数据进行拷贝后修改,修改后更新源数据;
3)开启全局宽限期;
4)宽限期阶段等待;
5)判定CPU是否经历静默期;
6)对CPU进行静默期标记;
7)判定全局宽限期是否结束;
8)全局宽限期结束后,确认修改前的共享数据能够被释放。
作为本发明的进一步优选实施方式,所述步骤1)中,为读操作进行加解锁包括在所述嵌入式实时操作系统的线程控制块中,记录RCU占用情况。
作为本发明的进一步优选实施方式,所述步骤3)中,当写线程完成了数据更新后,开启全局宽限期,并在与该CPU对应的数据结构中进行记录,并将与该 CPU对应的位图变量中对应每一个核的 bit均设为1。
作为本发明的进一步优选实施方式,所述步骤4)中,所述宽限期阶段等待包括宽限期阶段非阻塞等待和宽限期阶段阻塞等待;其中,所述宽限期阶段阻塞等待过程通过互斥锁内核锁、线程挂起与恢复、或布尔类型的变量循环等待中的任意一种方式实现。
作为本发明的进一步优选实施方式,所述步骤5)中,判定CPU经历静默期的条件包括:
5.1)CPU进行了一次线程调度操作;
5.2)CPU运行在空闲线程;
5.3)CPU正在运行的线程控制块(TCB)记录的 RCU占用情况为非占用状态;
当且仅当满足上述条件中的任意一种时,就判定当前 CPU经历过一次静默期。
作为本发明的进一步优选实施方式,所述步骤6)中,对CPU进行静默期标记包括:
6.1)在与该CPU对应的数据结构中记录;
6.2)在与该 CPU对应的位图变量中将对应的核的 bit清0。
作为本发明的进一步优选实施方式,所述步骤7)中,判定全局宽限期是否结束时,判断与该 CPU对应的位图变量中每一个核对应的 bit是否都为0,bit均为0时,判定全局宽限期结束。
作为本发明的进一步优选实施方式,所述嵌入式实时操作系统在线程调度时,进行CPU是否经历静默期和判定全局宽限期是否结束的检测;同时,所述嵌入式实时操作系统还通过定时器定期检测CPU是否经历静默期和判定全局宽限期是否结束。
作为本发明的进一步优选实施方式,所述定时器在所述嵌入式实时操作系统上通过 tick或者手动创建。
相较于现有技术,本发明能够实现的技术效果包括:
1)本发明提供一种基于嵌入式实时操作系统的RCU实现方法,通过借助嵌入式实时操作系统的线程控制块TCB实时记录RCU占用情况,提高实时性和效率。
2)本发明提供一种基于嵌入式实时操作系统的RCU实现方法,RCU在实时操作系统上借助线程控制块 TCB实时记录RCU占用情况,作为静默期QS的判定条件之一,提高判定的实时性和效率。
3)本发明提供一种基于嵌入式实时操作系统的RCU实现方法,RCU在实时系统上通过tick或者手动创建定时器,而不是软中断的方式,通过定期检测作为进行静默期QS和宽限期GP判定的一个时机,提高判定准确性和判定效率。
4)本发明提供一种基于嵌入式实时操作系统的RCU实现方法,RCU更新数据时的阻塞,使用嵌入式实时操作系统中多种方案实现阻塞操作。
5)本发明提供一种基于嵌入式实时操作系统的RCU实现方法,可以实现RCU同步机制运行在嵌入式实时操作系统。
6)本发明提供一种基于嵌入式实时操作系统的RCU实现方法,基于嵌入式实时操作系统,在保证实时性的前提下,有效提高嵌入式实时操作系统读操作多,写操作少的使用场景的工作效率。
附图说明
图1所示为现有技术中RCU同步机制的逻辑结构示意图。
图2所示为现有技术中RCU同步机制的指针结构示意图。
图3所示为现有技术中RCU同步机制的指针复制示意图。
图4所示为现有技术中RCU同步机制的指针修改示意图。
图5所示为现有技术中RCU同步机制的指针发布前读取操作的旧数据的示意图。
图6所示为现有技术中RCU同步机制的指针指向区域释放后的示意图。
图7所示为RCU中宽限期的逻辑结构示意图。
图8所示为本发明嵌入式实时操作系统中RCU实现方法的步骤流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图7所示,在RCU同步机制中,
GP的英文全称是Grace Period,即为宽限期,它是 RCU实现数据同步的关键。要更新一个共享数据的内容时,写者首先会拷贝一份数据,然后对拷贝后的数据进行修改,当修改完之后,写者就会用修改后的数据替换源数据,替换之后,写者就调用synchronize_rcu这个 API开启了一个 GP。写者会等待GP开启前,还没有结束的读者对旧数据读取操作完成。这表明旧的数据不再被引用,此时 GP结束,旧数据可以被释放。
QS的英文全称是Quiescent State,即为静默期,当一个读者完成了共享数据的读取,并调用read_rcu_unlock这个 API 开始,到操作系统确认其已经离开了临界区的这段时间,被称为静默期QS。在多核 CPU下,只有每一个 CPU核都经历了一个静默期QS,宽限期GP才能结束,否则,宽限期GP会认为当时还有读者在引用旧数据, 宽限期GP就不会结束,旧资源也不会释放。
RCU工作时,
首先,对于读线程来说,RCU提供了两个对应的API 接口:rcu_read_lock和rcu_read_unlock。当一个线程需要对一个共享数据进行读取时,先调用rcu_read_lock,对资源进行类似读加锁操作。在完成读操作后,再调用rcu_read_unlock接口,对资源进行类似读解锁操作。
写线程在访问共享数据时,需要手动拷贝一份后进行修改,修改后直接更新源数据。需要注意的时,更新源数据,这个操作应该是原子性的。这样,在写线程没有更新前,如果新来一个读线程,那么拿到的数据就是旧数据。如果写线程更新后,新来一个读线程,那么读到的就是新的数据。不管怎么样,读线程都永远只可能拿到旧或者新数据,不可能拿到一个中间状态的数据。
写线程更新数据后,需要调用 sychronize_rcu或者 call_rcu两个接口,来同步或者异步的开启一个全局的 GP,从而进行阻塞或非阻塞等待。此后,CPU的每一个核都会开始进行QS的判定。每一个核被判定未经历过了一次 QS周期时,就会进行记录,也就是进行QS标记。当所有的核都经过一个 QS之后,说明没有线程在引用旧数据了,此时全局 GP结束,完成了一次完整的更新操作。
基于此,本发明附图8提供了第一实施例,其具体方案为:
一种基于嵌入式实时操作系统的RCU实现方法,包括以下步骤:
1)读线程对共享数据进行读取时,为读操作进行加解锁;
在该步骤中,为读操作进行加解锁包括在所述嵌入式实时操作系统的线程控制块TCB中,记录RCU占用情况。
在 Linux操作系统中,对读操作加锁的目的是禁止当前 CPU进行线程调度,对读操作解锁的目的是允许当前 CPU进行线程调度。这种方案在嵌入式实时操作系统中,很难保证可靠的实时性,因为在嵌入式实时操作系统中,可能某些任务没有使用 RCU,但它也会禁止线程调度。此时,就会导致当前核即使没有占用 RCU,但 RCU同步机制仍在等待其完成静默期QS。
因此本发明在上述禁止调度的基础上,新增了一个适合实时操作系统的加解锁机制:即在嵌入式实时操作系统的线程控制块TCB中,使用新增或者复用其他成员等方式,选择一个可以记录 RCU占用情况的成员。在 RCU读占用时,记录为“占用状态”,当 RCU读释放,或者不占用共享资源时,记录为“未占用”状态。这样的读加解锁方式配合后续判定CPU是否经历静默期QS的判定方法,就可以极大的提高嵌入式实时操作系统下RCU的实时性和效率。
2)写线程对共享数据进行拷贝后修改,修改后更新源数据;
3)开启全局宽限期GP;
在该步骤中,当写线程完成了数据更新后,手动调用sychronize_rcu或者 call_rcu两个接口,来同步或者异步的开启全局宽限期GP,并在与该CPU对应的数据结构中进行记录,每一个 CPU都有一个数据结构,来记录当前 CPU内与 RCU相关的内容,因此,如果一个写线程开启了宽限期GP,那么其相关信息就会记录在当前 CPU的数据结构上。RCU数据结构里存在一个全局位图变量,每一位 bit对应 CPU的一个核,当开启一个宽限期GP后,将与该 CPU对应的位图变量中将与每一个核对应的 bit均设为1。
4)宽限期GP阶段等待;
在该步骤中,宽限期GP阶段等待包括宽限期GP阶段非阻塞等待和宽限期GP阶段阻塞等待;其中,
宽限期GP阶段非阻塞等待,就是直接调用call_rcu,并传入一个回调函数,此后写线程可以继续向下运行,等到完成一个宽限期GP之后,回调函数会被执行。
宽限期GP阶段非阻塞等待,调用的是 sychronize_rcu函数,其实现方式是先调用call_rcu传入一个释放阻塞的回调函数,然后,使用嵌入式实时操作系统提供的相关内核阻塞机制,来阻塞当前的线程。Linux操作系统下使用的是 completion技术,而本发明设计了三种更适合嵌入式实时操作系统的方案:
4.1)使用互斥锁之类的内核锁机制实现:
嵌入式实时操作系统几乎都是具备此条件的,因此可以将锁句柄保存在 RCU的数据结构中,然后使用类似 pend锁之类的方式,进行阻塞等待。call_rcu回调函数里,则通过RCU的数据结构,拿到锁句柄,然后再调用 post锁之类的方式,释放阻塞等待宽限期GP的线程。
4.2)使用线程挂起与恢复的方式实现:
嵌入式实时操作系统的线程或任务的状态都支持挂起状态。因此这里可以将线程的句柄保存在 RCU的数据结构中,然后将等待宽限期GP的线程自身挂起,进行阻塞等待。call_rcu回调函数里,则通过 RCU的数据结构,拿到线程句柄,然后再通过恢复挂起线程的方式,让阻塞等待宽限期GP的线程重新运行。
4.3)使用布尔类型的变量循环等待实现:
在嵌入式实时操作系统内定义一个布尔类型的变量,然后将其保存在 RCU的数据结构中,此后线程就一直 while+ sleep循环检测,等到布尔变量状态改变时,则跳出while循环,向下继续运行。call_rcu回调函数里,则通过 RCU的数据结构,拿到布尔变量,然后修改其状态,使得等待宽限期GP的线程可以不再阻塞。
本实施例中所述宽限期(GP)阶段阻塞等待过程则通过选用上述互斥锁内核锁、线程挂起与恢复、或布尔类型的变量循环等待中的任意一种方式实现,以提高判定准确性和判定效率。
5)判定CPU是否经历静默期QS;
判定CPU经历静默期QS的条件包括:
5.1)CPU进行了一次线程调度操作;
5.2)CPU运行在空闲线程;
5.3)CPU正在运行的线程控制块TCB记录的 RCU占用情况为非占用状态;
当且仅当满足上述条件中的任意一种时,就判定当前 CPU经历过一次静默期QS。
这三种条件,第一种和第二种在 Linux操作系统下也存在,考虑实时操作系统对实时性的要求,本实施例相对于现有技术的改进,还设计了第三种条件,即在线程控制块TCB里使用新增或者复用其他成员等方式,选择一个可以记录 RCU占用情况的成员,在 RCU读占用时,记录为“占用状态”,否则,记录为“未占用”状态。这样通过3 种判定条件相结合,可以大大提高静默期QS判定的实时性。 6)对CPU进行静默期QS标记;
在该步骤中,对CPU进行静默期QS标记包括:
3.1)在与该CPU对应的数据结构中记录;每一个 CPU都有一个数据结构,当检测到当前 CPU经历过一次静默期QS阶段后,就在CPU对应的数据结构里,记录下来。
3.2)在与该 CPU对应的位图变量中将对应的核的bit清0,在RCU数据结构中的CPU位图变量中,将对应的核的bit清0,方便宽限期GP进行结束判定。
7)判定全局宽限期GP是否结束;
在该步骤中,判定全局宽限期GP是否结束时,判断与该 CPU对应的位图变量中每一个核对应的 bit是否都为0,bit均为0时,即判定全局宽限期GP结束。全局宽限期GP的结束判定条件只有一个,即CPU所有的核都经过了一次静默期QS,则可以判定为宽限期GP结束。因此对宽限期GP进行结束判定时,就是去检测每一个 CPU核是否完成了静默期QS,方式是判断RCU数据结构中的位图变量,因为在开启宽限期GP时,位图变量中与每一核对应的bit均被设置为1,因此这里检测时,如果位图都为0,则说明所有的 CPU核都经过了一次静默期QS,此时宽限期GP结束。
8)全局宽限期GP结束后,即确认修改前的共享数据能够被释放。
在本实施例中,所述嵌入式实时操作系统在线程调度时,进行CPU是否经历静默期QS和判定全局宽限期GP是否结束的检测;同时,所述嵌入式实时操作系统还通过定时器定期检测CPU是否经历静默期QS和判定全局宽限期GP是否结束。在本实施例中,所述定时器在所述嵌入式实时操作系统上通过tick或者手动创建。在 Linux操作系统下会使用软中断等方式,而嵌入式实时操作系统下很少会去实现软中断机制,因此本发明充分考虑大多数嵌入式实时操作系统的实现,设计了使用 tick或者手动设置定时器,通过定期检测的方式,来保证可以在这类系统上实现 RCU技术,同时保证数据同步实现的实时性。
Claims (9)
1.一种基于嵌入式实时操作系统的RCU实现方法,其特征在于:包括以下步骤:
1)读线程对共享数据进行读取时,为读操作进行加解锁;
2)写线程对共享数据进行拷贝后修改,修改后更新源数据;
3)开启全局宽限期(GP);
4)宽限期(GP)阶段等待;
5)判定CPU是否经历静默期(QS);
6)对CPU进行静默期(QS)标记;
7)判定全局宽限期(GP)是否结束;
8)全局宽限期(GP)结束后,确认修改前的共享数据能够被释放。
2.根据权利要求1所述的一种基于嵌入式实时操作系统的RCU实现方法,其特征在于:所述步骤1)中,为读操作进行加解锁包括在所述嵌入式实时操作系统的线程控制块(TCB)中,记录RCU占用情况。
3.根据权利要求1所述的一种基于嵌入式实时操作系统的RCU实现方法,其特征在于:所述步骤3)中,当写线程完成了数据更新后,开启全局宽限期(GP),并在与该CPU对应的数据结构中进行记录,并将与该 CPU对应的位图变量中对应每一个核的 bit均设为1。
4.根据权利要求1所述的一种基于嵌入式实时操作系统的RCU实现方法,其特征在于:所述步骤4)中,所述宽限期(GP)阶段等待包括宽限期(GP)阶段非阻塞等待和宽限期(GP)阶段阻塞等待;其中,所述宽限期(GP)阶段阻塞等待过程通过互斥锁内核锁、线程挂起与恢复、或布尔类型的变量循环等待中的任意一种方式实现。
5.根据权利要求1所述的一种基于嵌入式实时操作系统的RCU实现方法,其特征在于:所述步骤5)中,判定CPU经历静默期(QS)的条件包括:
5.1)CPU进行了一次线程调度操作;
5.2)CPU运行在空闲线程;
5.3)CPU正在运行的线程控制块(TCB)记录的 RCU占用情况为非占用状态;
当且仅当满足上述条件中的任意一种时,就判定当前 CPU经历过一次静默期(QS)。
6.根据权利要求1所述的一种基于嵌入式实时操作系统的RCU实现方法,其特征在于:所述步骤6)中,对CPU进行静默期(QS)标记包括:
6.1)在与该CPU对应的数据结构中记录;
6.2)在与该 CPU对应的位图变量中将对应的核的 bit清0。
7.根据权利要求1所述的一种基于嵌入式实时操作系统的RCU实现方法,其特征在于:所述步骤7)中,判定全局宽限期(GP)是否结束时,判断与该 CPU对应的位图变量中每一个核对应的 bit是否都为0,bit均为0时,判定全局宽限期(GP)结束。
8.根据权利要求1所述的一种基于嵌入式实时操作系统的RCU实现方法,其特征在于:所述嵌入式实时操作系统在线程调度时,进行CPU是否经历静默期(QS)和判定全局宽限期(GP)是否结束的检测;同时,所述嵌入式实时操作系统还通过定时器定期检测CPU是否经历静默期(QS)和判定全局宽限期(GP)是否结束。
9.根据权利要求8所述的一种基于嵌入式实时操作系统的RCU实现方法,其特征在于:所述定时器在所述嵌入式实时操作系统上通过 tick或者手动创建。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211405364.9A CN115454653B (zh) | 2022-11-10 | 2022-11-10 | 一种基于嵌入式实时操作系统的rcu实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211405364.9A CN115454653B (zh) | 2022-11-10 | 2022-11-10 | 一种基于嵌入式实时操作系统的rcu实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115454653A true CN115454653A (zh) | 2022-12-09 |
CN115454653B CN115454653B (zh) | 2023-02-24 |
Family
ID=84295743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211405364.9A Active CN115454653B (zh) | 2022-11-10 | 2022-11-10 | 一种基于嵌入式实时操作系统的rcu实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115454653B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117271141A (zh) * | 2023-11-21 | 2023-12-22 | 新华三技术有限公司 | 资源更新系统、装置及网络设备 |
CN117785496A (zh) * | 2023-12-29 | 2024-03-29 | 电子科技大学 | 一种微内核操作系统的用户级rcu实现方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1770157A (zh) * | 2004-10-27 | 2006-05-10 | 国际商业机器公司 | 效率得到提高的读取-复制更新系统和方法 |
US20100023732A1 (en) * | 2008-07-24 | 2010-01-28 | International Business Machines Corporation | Optimizing non-preemptible read-copy update for low-power usage by avoiding unnecessary wakeups |
US20100023946A1 (en) * | 2008-07-28 | 2010-01-28 | International Business Machines Corporation | User-level read-copy update that does not require disabling preemption or signal handling |
CN101770403A (zh) * | 2008-12-30 | 2010-07-07 | 北京天融信网络安全技术有限公司 | 一种多核平台上控制系统配置并发与同步的方法 |
US20110055183A1 (en) * | 2009-09-02 | 2011-03-03 | International Business Machines Corporation | High Performance Real-Time Read-Copy Update |
US20120079301A1 (en) * | 2010-09-27 | 2012-03-29 | International Business Machines Corporation | Making Read-Copy Update Free-Running Grace Period Counters Safe Against Lengthy Low Power State Sojourns |
US20120331237A1 (en) * | 2011-06-27 | 2012-12-27 | International Business Machines Corporation | Asynchronous Grace-Period Primitives For User-Space Applications |
US20180060140A1 (en) * | 2016-08-30 | 2018-03-01 | International Business Machines Corporation | Short-Circuiting Normal Grace-Period Computations In The Presence Of Expedited Grace Periods |
US10613913B1 (en) * | 2018-10-06 | 2020-04-07 | International Business Machines Corporation | Funnel locking for normal RCU grace period requests |
US20210064446A1 (en) * | 2019-08-29 | 2021-03-04 | International Business Machines Corporation | Determining when it is safe to use scheduler lock-acquiring wakeups to defer quiescent states in real-time preemptible read-copy update |
-
2022
- 2022-11-10 CN CN202211405364.9A patent/CN115454653B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1770157A (zh) * | 2004-10-27 | 2006-05-10 | 国际商业机器公司 | 效率得到提高的读取-复制更新系统和方法 |
US20100023732A1 (en) * | 2008-07-24 | 2010-01-28 | International Business Machines Corporation | Optimizing non-preemptible read-copy update for low-power usage by avoiding unnecessary wakeups |
US20100023946A1 (en) * | 2008-07-28 | 2010-01-28 | International Business Machines Corporation | User-level read-copy update that does not require disabling preemption or signal handling |
CN101770403A (zh) * | 2008-12-30 | 2010-07-07 | 北京天融信网络安全技术有限公司 | 一种多核平台上控制系统配置并发与同步的方法 |
US20110055183A1 (en) * | 2009-09-02 | 2011-03-03 | International Business Machines Corporation | High Performance Real-Time Read-Copy Update |
US20120079301A1 (en) * | 2010-09-27 | 2012-03-29 | International Business Machines Corporation | Making Read-Copy Update Free-Running Grace Period Counters Safe Against Lengthy Low Power State Sojourns |
US20120331237A1 (en) * | 2011-06-27 | 2012-12-27 | International Business Machines Corporation | Asynchronous Grace-Period Primitives For User-Space Applications |
US20180060140A1 (en) * | 2016-08-30 | 2018-03-01 | International Business Machines Corporation | Short-Circuiting Normal Grace-Period Computations In The Presence Of Expedited Grace Periods |
US10613913B1 (en) * | 2018-10-06 | 2020-04-07 | International Business Machines Corporation | Funnel locking for normal RCU grace period requests |
US20210064446A1 (en) * | 2019-08-29 | 2021-03-04 | International Business Machines Corporation | Determining when it is safe to use scheduler lock-acquiring wakeups to defer quiescent states in real-time preemptible read-copy update |
Non-Patent Citations (4)
Title |
---|
D. GUNIGUNTALA 等: "The read-copy-update mechanism for supporting real-time applications on shared-memory multiprocessor systems with Linux", 《IBM SYSTEMS JOURNAL》 * |
VOLKMAR UHLIG 等: "The mechanics of in-kernel synchronization for a scalable microkernel", 《ACM SIGOPS OPERATING SYSTEMS REVIEW》 * |
李娟 等: "一种机载嵌入式对称多处理机系统互斥策略", 《电子科技》 * |
极客重生: "深入理解RCU|核心原理", 《HTTPS://BLOG.CSDN.NET/LIANHUNQIANR1/ARTICLE/DETAILS/118215624》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117271141A (zh) * | 2023-11-21 | 2023-12-22 | 新华三技术有限公司 | 资源更新系统、装置及网络设备 |
CN117271141B (zh) * | 2023-11-21 | 2024-02-23 | 新华三技术有限公司 | 资源更新系统、装置及网络设备 |
CN117785496A (zh) * | 2023-12-29 | 2024-03-29 | 电子科技大学 | 一种微内核操作系统的用户级rcu实现方法 |
CN117785496B (zh) * | 2023-12-29 | 2024-09-24 | 电子科技大学 | 一种微内核操作系统的用户级rcu实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115454653B (zh) | 2023-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115454653B (zh) | 一种基于嵌入式实时操作系统的rcu实现方法 | |
Reed | Implementing atomic actions on decentralized data | |
AU768747B2 (en) | Method and apparatus for transferring data from the cache of one node to the cache of another node | |
JP3763992B2 (ja) | データ処理装置及び記録媒体 | |
US6766471B2 (en) | User-level checkpoint and restart for groups of processes | |
Kazar et al. | DEcorum File System Architectural Overview. | |
US4823261A (en) | Multiprocessor system for updating status information through flip-flopping read version and write version of checkpoint data | |
US6647510B1 (en) | Method and apparatus for making available data that was locked by a dead transaction before rolling back the entire dead transaction | |
EP0549140A2 (en) | Record updating method | |
JP4295333B2 (ja) | データベースの制御方法及びプログラム | |
JPH0887511A (ja) | B木インデクスの管理方法およびシステム | |
JPH0683692A (ja) | データベースアクセス方法およびシステム | |
McKenney | Selecting locking primitives for parallel programming | |
Kumar et al. | Database recovery | |
JP3785004B2 (ja) | トランザクション管理方法及びトランザクション管理装置 | |
CN117785496B (zh) | 一种微内核操作系统的用户级rcu实现方法 | |
Alonso et al. | Reducing recovery constraints on locking based protocols | |
CN111475264A (zh) | 一种用户态无锁转发的实现方法及装置 | |
WO2001013229A2 (en) | System and method for data exchange | |
KR950011056B1 (ko) | 트랜잭션 처리시스템의 로그/회복관리방법 | |
EP1162539B1 (en) | Recovering data from one or more failed caches | |
Mancini et al. | Secure concurrency control in MLS databases with two versions of data | |
AU2007202588B2 (en) | Method and apparatus for transferring data from the cache of one node to the cache of another node | |
CN114817185A (zh) | 一种基于消息驱动的异步日志处理方法 | |
JPH0438537A (ja) | Dasd上のデータ・バックアップ/復元方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |