《Linux内核设计与实现》读书札记(2)

<!--[if !supportLists]-->5.       <!--[endif]-->当一个进程时间片耗尽时,就不会再运行,除非其他所有进程都耗尽了时间片,那是,所有进程的时间片被重新计算。

<!--[if !supportLists]-->6.       <!--[endif]-->一个进程进入TASK_RUNNING状态时,内核会检查其优先级是否高于当前进程优先级,如果高于,调度进程被唤醒,抢占发生;或者当进程时间片为0时,同样会唤醒调度进程,将其抢占。

<!--[if !supportLists]-->7.       <!--[endif]-->调度程序最基本的是运行队列,每个处理器一个,表示该处理器上可执行进程的链表。

<!--[if !supportLists]-->8.       <!--[endif]-->Cpu_rq(processor)宏用于返回指定CPU上的运行队列,this_rq()返回当前CPU的。

<!--[if !supportLists]-->9.       <!--[endif]-->在对可执行队列操作前需要用task_rq_lock等函数对其加锁。

<!--[if !supportLists]-->10.   <!--[endif]-->每个运行队列都有2个优先级数组,一个活跃的,一个过期的。每个数组都有一个优先级位图,可以提高查找当前系统内最高优先级的可执行进程的效率。每个数组还都有一个list_head队列,包含有多个链表,每个链表与一个给定的优先级对应,即一个链表表示一个优先级上的所有可执行进程,这样能快速找到某个优先级上的进程。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwpyzf.html