从Linux系统定时分析内核态进程不会被抢占的原因
2016-09-27 10:07
381 查看
我们知道在linux系统中,内核态的进程一旦被cpu载入运行是不会被调度程序切换掉的。so,why are you so diao?!!
Linux在0.11的版本中是通过一片8253来进行系统定时的,每隔10ms就会发出一个时钟中断信号,我们将之称为一个系统滴答。而每经过一个系统滴答系统就会调用一个时钟中断处理函数,该函数会通过jiffies变量来统计系统运行时间,并将被中断程序的特权级CPL作为参数调用do_timer()函数。do_timer函数会统计该进程的运行时间,当CPL=0时,该进程的内核态运行时间就会+1;CPL不为0时,该进程的用户态运行时间+1。而当一个进程被加了运行定时器之后,如果定时器-1<=0就证明时间片用完了,若CPL!=0,则do_timer()调用schedule()切换进程,若CPL=0,则do_timer()函数直接退出。
Linux在0.11的版本中是通过一片8253来进行系统定时的,每隔10ms就会发出一个时钟中断信号,我们将之称为一个系统滴答。而每经过一个系统滴答系统就会调用一个时钟中断处理函数,该函数会通过jiffies变量来统计系统运行时间,并将被中断程序的特权级CPL作为参数调用do_timer()函数。do_timer函数会统计该进程的运行时间,当CPL=0时,该进程的内核态运行时间就会+1;CPL不为0时,该进程的用户态运行时间+1。而当一个进程被加了运行定时器之后,如果定时器-1<=0就证明时间片用完了,若CPL!=0,则do_timer()调用schedule()切换进程,若CPL=0,则do_timer()函数直接退出。
相关文章推荐
- Linux系统内核UDP丢包原因分析
- linux系统内核UDP丢包原因分析
- Linux启动过程之内核挂载内存文件系统和真正根文件系统原因及过程分析
- Linux系统内核UDP丢包原因分析
- Linux 系统内核空间与用户空间通信的实现与分析
- linux内核中断、异常、系统调用的分析以及实践
- 基于Linux系统中进程调度分析
- Linux 系统内核空间与用户空间通信的实现与分析
- linux 2.6.11内核文件IO的系统调用实现分析--再续
- 关于Linux系统内核源代码分析经验谈
- Linux 系统内核空间与用户空间通信的实现与分析(转)
- Linux系统分析之进程
- Arm linux 内核移植及系统初始化过程分析
- Linux 系统内核空间与用户空间通信的实现与分析 from [http://www-900.ibm.com/developerWorks/cn/linux/]
- Linux 系统内核空间与用户空间通信的实现与分析
- Linux 系统内核空间与用户空间通信的实现与分析
- Linux2.6内核进程创建过程分析
- linux内核的idle进程分析
- linux内核情景分析{中断 系统调用 内存}
- linux2.6.29内核 进程调度分析