从Linux系统定时分析内核态进程不会被抢占的原因

来源:互联网 发布:fanuc伺服优化卡使用 编辑:程序博客网 时间:2024/04/29 12:56

我们知道在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()函数直接退出。

0 0
原创粉丝点击