zoukankan      html  css  js  c++  java
  • 关于preempt_enable 和 preempt_disable 【转】

    转自:http://blog.chinaunix.net/uid-8478094-id-2031177.html

    关于preempt_enable 和 preempt_disable

    允许抢占和禁止抢占。

    例如:内核态程序 和 中断处理程序的互斥

    因为中断是异步的(不只要何时发生中断,也即随时可能发生中断),因此如果内核态的程序使用了和中断处理程序中相同的数据结构,那么必须进行互斥访问。

    load %r0, counter

    add %r0,1 //发生中断

    store %r0,conter

    如果在第二条指令执行时发生中断,而中断处理程序也需要将counter加1等操作,那么counter变量的值就会变得紊乱。

    因此,只要非中断处理代码要更新一个与中断处理程序共享的数据结构,那么它就首先禁止中断,执行临界段,然后再重新允许中断。在linux中,如下

    preempt_disable();

    load %r0, counter

    add %r0,1 //发生中断

    store %r0,conter

    preempt_enable();

     
  • 相关阅读:
    selenium 难定位元素、时间插件
    列表生成式
    三元表达式
    监控日志
    非空即真
    深拷贝浅拷贝
    元组
    list字典嵌套
    2021
    布尔类型
  • 原文地址:https://www.cnblogs.com/sky-heaven/p/5392152.html
Copyright © 2011-2022 走看看