调度器 scheduler
一般情况下,系统中进程 (task) 的数量远远大于系统 cpu 的数量,而每个时刻,只能有一个进程占据 cpu 在运行。如
果任由该进程占据 cpu 不放,必然导致其他进程“饿死” .
在多任务系统中,为了使得每个任务都能合理地使用 cpu 来执行任务,调度器应运而生,它负责安排进程什么时候
占用 cpu 运行,什么时候释放 cpu 而选择其他进程来使用 cpu.
调度器运行在各个 cpu 上,负责从本 cpu 的运行队列 running queue 中挑选最合适地进程来运行 .
调度器的执行时机 :
1. 硬件中断返回:检查是否有比自己更有”资格”的进程等待 cpu( 返回用户态,即检查 TIF_NEED_RESCHED 标识 ) 以
及是否有内核抢占发生 ( 返回内核态时检查是否有内核抢占发生 )
2. 系统调用返回:检查是否有比自己更有”资格”的进程等待 cpu( 返回用户态,即检查 TIF_NEED_RESCHED 标识 )
3. 系统调用:如 sys_exit(), sys_sleep() 等进程主动放弃 cpu
评论0