您的位置:首页 > 运维架构 > Linux

从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()函数直接退出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: