task_struct结构中的list_head类型的tasks分量用于连接系统中存在的进程(进程描述符task_struct),该链表需要一个头节点,即init_task变量,该变量也就是0号进程的进程描述符。
可运行进程链表,task_struct中的run_list分量(2.6.32版本中是位于task_struct结构体的rt分量中),用于连接处于可运行状态(TASK_RUNNING)的进程,这些进程等待内核的调度器进行调度,为了提高调度的效率,这些处于可运行状态的进程按照优先级分成了140个链表(优先级为0-139),处于相同优先级的进程连接到同一个链表,由prio_array_t结构体管理这些。
kernel/sched.c中定义了两个宏:
#defineNICE_TO_PRIO(nice)(MAX_RT_PRIO+(nice)+20)
#definePRIO_TO_NICE(prio)((prio)-MAX_RT_PRIO-20)
可见prioity和nice的关系是:priority=MAX_RT_PRIO+nice+20
下节:3.2.3. Relationships Among Processes
阅读(2616) | 评论(0) | 转发(0) |