首页 > 其他分享 >论几种临界区实现方式对系统的杀伤力

论几种临界区实现方式对系统的杀伤力

时间:2022-12-02 21:33:07浏览次数:29  
标签:睡眠 中断 语义 对系统 调度 临界 杀伤力 关闭


单核:

系统杀伤力:    睡眠锁<关调度<关中断

安全程度:       睡眠锁<关调度<关中断

推荐指数:          睡眠锁>关调度>关中断

SMP核:

相对于单核,SMP核多了一个自旋锁进行多核同步的机制。

系统杀伤力:    睡眠锁<关调度<关中断<自旋锁

安全程度:       睡眠锁<关调度<关中断<自旋锁

推荐指数:          睡眠锁>关调度>关中断>自旋锁

关闭调度有两种语义,一种是全局调度器的关闭,另一种是任务调度器的关闭,任务级调度器的关闭后,仅仅关闭了抢占调度,但仍然是可以主动调度的。也有一部分系统,关闭中断的上下文可以安全调度,上面讨论不包括这两种case.

论几种临界区实现方式对系统的杀伤力_自旋锁

总结:

1.临界区的目的是将都资源的乱序访问顺序化,保证在任何系统处于正常运行级的时候,资源描述都是完整的。
2.在多核情况下,出现了一种新的资源共享情况,即是核间共享资源,单纯禁止中断显然不能满足临界区要求,因为处理器核心与核心之间互相独立,一个处理器核心不能禁止在另一个处理器核心上的中断,必须使用自旋锁及案例临界区。

3.包括互斥锁,信号量,事件等机制在内的睡眠锁,可以针对资源独立设锁,这样保障不共享资源的任务没必要被串行化,允许不共享同一个资源任务之间的并发,具备一定的并发度,对系统影响最小。

   举一个生活中的例子,一个路口的交通阻塞没必要关闭整个城市的交通。

4.spin_lock本身也可以针对资源独立设锁,但是其实现已经包含了关中断和关调度的语义,是临界区中最狠的。

5.锁问题的本质是资源问题,遇到问题的试着先不要考虑锁,先考虑资源试试?

6.需要硬件提供最原始的原子语义,系统方能在此基础之上构建原子操作大厦,通常对单核系统,最本源的原子语义是关中断,这在现代处理器上很容易得到满足,其次是关调度和基于这两种原子语义构建更加复杂的semophore,mutex等等。对于多核系统,仅提供关中断语义还不够,还需要系统提供spin_lock的实现语义,例如链接-存储指令,总线锁等等,自旋锁单纯依赖软件是无法实现的。必须由硬件架构层面进行支持。

论几种临界区实现方式对系统的杀伤力_临界区_02


结束

标签:睡眠,中断,语义,对系统,调度,临界,杀伤力,关闭
From: https://blog.51cto.com/u_15899439/5907533

相关文章

  • 中断控制寄存器的说明/临界区的进出
    中断控制寄存器对中断的屏蔽与否,通过一下控制寄存器决定 简单来说就是PRIMASK只留了个NMI(不可屏蔽异常,一般是系统出错)和硬件异常;FAULTMASK只留了个硬件异常......
  • [答疑精选]是否针对系统保存失败,要写扩展路径呢
    是否针对系统保存失败,要写扩展路径呢阿厉(309***4)15:41:13咨询下:在写用例规约时,遇到这样的情况,是否针对系统保存失败,要写扩展路径呢1会员提交订单信息2系统保存......
  • 临界资源和临界区
    1.临界资源临界资源是一次仅允许一个进程使用的共享资源。各进程采取互斥的方式,实现共享的资源称作临界资源。属于临界资源的硬件有,打印机,磁带机等;软件有消息队列,变量,数组,缓......
  • 4、OpenMP的临界区critical、atomic、omp_lock_t
    基本思想:OpenMP和多线程的互斥锁很像#pragmaompparallelforfor(inti=0;i<num;i++){#pragmaompcritical//#pragmaompcritical(sum)//#pragmaompcritical(i......
  • compare-mt:因为对系统进行评分还不够
    compare-mt:因为对系统进行评分还不够揭露你的分数背后的原因,以获得更有洞察力和可信度的评估。Generatedwith克雷永withtheprompt:“chartunderamagnifyingg......