Linux内核产生并发的原因
Linux内核产生并发的原因主要是中断和睡眠再调度。
一 :中断,由于中断执行是异步的,而且是在非抢占式内核中打断当前运行内核代码的唯一方法,所以中断是可以和其它内核代码并发执行的。因此如果中断操作和被中断的内核代码访问同样的内核数据,就会发生竞争。
二 :睡眠和再调度, 处于进程上下文(下面会进行讲述)的内核任务可以睡眠(睡眠意味放弃处理器),这时调度程序会调度其它程序去执行(首先执行调度任务队列中的内核任务,然后执行软中断等,最后从运行队列中选择一个高优先级的用户进程运行)。显然这里也会造成内核并发访问,当睡眠的内核任务和新投入运行的内核任务访问同一共享数据时,就发生了竞争。
一 :中断,由于中断执行是异步的,而且是在非抢占式内核中打断当前运行内核代码的唯一方法,所以中断是可以和其它内核代码并发执行的。因此如果中断操作和被中断的内核代码访问同样的内核数据,就会发生竞争。
二 :睡眠和再调度, 处于进程上下文(下面会进行讲述)的内核任务可以睡眠(睡眠意味放弃处理器),这时调度程序会调度其它程序去执行(首先执行调度任务队列中的内核任务,然后执行软中断等,最后从运行队列中选择一个高优先级的用户进程运行)。显然这里也会造成内核并发访问,当睡眠的内核任务和新投入运行的内核任务访问同一共享数据时,就发生了竞争。
【Linux内核产生并发的原因】相关文章
4. Linux管理员面试题 Linux admin interview questions
6. 在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
8. 盘点那些跳槽的原因
10. 九个会让你求职失败的原因
本文来源:https://www.mianshiwenti.com/a13626.html
进入下载页面
上一篇:介绍一下UNIX启动过程
下一篇:如何在Shell脚本中使用函数
﹝Linux内核产生并发的原因﹞相关内容
- EJB3推出JPA的原因
- 如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗
- 网络编程中设计并发服务器,使用多进程与多线程,请问有什么区别?
- 若通过ObjectOutputStream向一个文件中多次以追加方式写入object,为什么用ObjectInputStream读取这些object时会产生StreamCorruptedExcepti
- WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回?
- 什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
- 我那惨痛的软件研发的实习面试
- 劳动合同纠纷引发的跳槽
- 测试驱动开发的主要步骤是什么
- 敏捷开发的主要原则都有哪些