内核竞态与抢占
来源:互联网 发布:零售数据分析书籍推荐 编辑:程序博客网 时间:2024/05/21 11:17
最古老的操作系统是单进程的。后来出现了多任务操作系统,因为多进程在内核态中资源都是共享的,所以容易造成破坏,早期的进程调度器在内核态是不能被抢占的,在进入内核态的时候进程调度器停止调度,这样降低了内核的复杂程度。稳定性也相对较高,服务器中常用。更先进的内核,能够在内核态抢占,这就需要锁来保证内核线程间的同步
以下用两段代码说明
第一种 非竞态内核
static int test_init(void){ printk("test_init\n"); preempt_disable();for(;;); preempt_enable(); return 0;}module_init(test_init);
提示符下输入:
$insmod test.ko &
test_init
当模块加载时进入死循环,进入内核态时进程调度器停止工作,其他进程不会被调用到,所以机器就彻底死掉了
static int test_init(void){ printk("test_init\n"); //preempt_disable();for(;;); //preempt_enable(); return 0;}module_init(test_init);
提示符下输入:
$insmod test.ko &
test_init
$
$
当模块加载时进入死循环,但是进程调度器仍然在工作,所以后台进程依然可以继续工作
说明:
preempt_enable 允许抢占。
preempt_disable禁止抢占。
请参阅<深入理解linux内核>第5章
具体配置内核抢占方式
内核特性->
抢占模式->
三种抢占模式,内核态禁止抢占,自抢占内核,允许抢占内核
- 内核竞态与抢占
- spin_lock与内核抢占
- linux内核抢占与spinlock
- 内核抢占与中断返回
- 抢占式内核与非抢占式内核的区别
- 抢占式内核与非抢占式内核的区别
- 抢占式内核与非抢占式内核
- 抢占式内核与非抢占式内核的区别
- 抢占式内核与非抢占式内核
- 抢占式内核与非抢占式内核
- 抢占式内核与非抢占式内核
- 内核抢占、用户抢占
- 内核抢占
- 内核抢占
- 内核抢占
- 内核抢占
- 内核抢占
- 内核抢占
- jsp页面中java脚本整型字符串自动转换问题
- 1527端口被占用
- 计算还贷款额度
- 两点距离问题
- android tombstone分析
- 内核竞态与抢占
- PLSQL开发笔记和小结
- mysql实例
- 翻译软件不准确的原因
- python使用suds调用webservice
- oracle form : app_item_property.SET_PROPERTY与set_item_property有什么区别?
- Linux、UNIX设置开机自动运行命令、脚本配置
- 成员变量反射
- java匿名内部类