<内核控制路径>
来源:互联网 发布:java三大框架教程 编辑:程序博客网 时间:2024/05/17 08:27
http://blog.csdn.net/jeffreyst_zb/article/details/7280555
1.6.1. The Process/Kernel Model
.......
Unix kernels do much more than handle system calls; in fact, kernel routines can be activated in several ways:
A process invokes a system call.
The CPU executing the process signals anexception, which is an unusual condition such as an invalid instruction. The kernel handles the exception on behalf of the process that caused it.
A peripheral device issues aninterrupt signal to the CPU to notify it of an event such as a request for attention, a status change, or the completion of an I/O operation. Each interrupt signal is dealt by a kernel program called aninterrupt handler. Because peripheral devices operate asynchronously with respect to the CPU, interrupts occur at unpredictable times.
A kernel thread is executed. Because it runs in Kernel Mode, the corresponding program must be considered part of the kernel.
内核控制路径包括
系统调用代码(一种异常处理程序)
异常处理程代码
中断处理程序代码
内核线程代码
内核控制路径不属于任何进程,没有进程标示符,如果不开启内核抢占,内核控制路径将一直执行直到完成任务自动让出cpu
只要进入了内核空间,便是处于以上四种内核控制路径的某一个
******************************************************************************************************************************************************
中断发生以后,CPU跳到内核设置好的中断处理代码中去,由这部分内核代码来处理中断。这个处理过程中的上下文就是中断上下文。
为什么可能导致睡眠的函数都不能在中断上下文中使用呢? 首先睡眠的含义是将进程置于“睡眠”状态,在这个状态的进程不能被调度执行。然后,在一定的时机,这个进程可能会被重新置为“运行”状态,从而可能被调度执行。 可见,“睡眠”与“运行”是针对进程而言的,代表进程的task_struct结构记录着进程的状态。内核中的“调度器”通过task_struct对进程进行调度。
但是,中断上下文却不是一个进程,它并不存在task_struct,所以它是不可调度的。所以,在中断上下文就不能睡眠。
那么,中断上下文为什么不存在对应的task_struct结构呢?
中断的产生是很频繁的(至少每毫秒(看配置,可能10毫秒或其他值)会产生一个时钟中断),并且中断处理过程会很快。如果为中断上下文维护一个对应的task_struct结构,那么这个结构频繁地分配、回收、并且影响调度器的管理,这样会对整个系统的吞吐量有所影响。
但是在某些追求实时性的嵌入式linux中,中断也可能被赋予task_struct结构。这是为了避免大量中断不断的嵌套,导致一段时间内CPU总是运行在中断上下文,使得某些优先级非常高的进程得不到运行。这种做法能够提高系统的实时性,但是代价中吞吐量的降低。
- <内核控制路径>
- 内核控制路径
- 一个概念:内核控制路径嵌套
- 内核控制路径,内核同步,中断,异常--x86
- 【转载】内核控制路径,内核同步,中断,异常--x86
- Linux内核-内核交错指针控制路径和同步
- 转载只为记录经典之<内核控制路径>
- 转载只为记录经典之<内核控制路径,内核同步,中断,异常--x86>
- linux内核学习路径
- Linux内核学习路径
- 【计算机动画】路径控制
- 内核笔记2-Linux内核进程控制
- spring aop实现权限控制,路径控制
- Linux内核编译路径指定
- 内核文件路径正则匹配
- 获取内核地址大小路径
- windows内核访问控制机制
- 进程 控制 内核
- hdu 2255 奔小康赚大钱 (KM算法 二分图最佳完美匹配 模板)
- <Win32_10>子窗口的应用——翻转窗口
- index range scan,index fast full scan,index skip scan发生的条件
- Nginx源码分析--字符串处理
- 强大的Android系统,可自由修改手机型号、SDK版本号等信息。
- <内核控制路径>
- MD5 算法实现(c++)
- Google Chrome源码下载
- Typedef与define解析
- 理解和使用蓝牙BlueZ中的FTP与PBAP协议
- STL中序列式容器之一vector
- [Cocos2D-X官方文档]:多分辨率的支持
- android 下载
- Secure CRT 7.0 通过 SSH服务登录 Vmware 下的Ubuntu 12.04服务器