熠熠生辉 | 2023 年 Linux 内核十大技术革新功能
这个机制我们在2022年终盘点中也有提及。在Steven的patch里面,仍然不可能允许用户态去关闭抢占调度,但是用户态在拿spinlock时,可以对内核进行某种暗示(比如通过在一片用户空间和内核空间共享的内存填充一个RSEQ_CR_FLAG_IN_CRITICAL_SECTION),当task B企图在A的临界区抢占的时候,内核看到这个flag,可以让抢占稍微延后一点时间允许A继续执行,这样正在spinlock临界区执行的线程A可以利用这段延后的时间,把自己的临界区执行完,这样C的自旋等待将大为缩短。