Chinaunix首页 | 论坛 | 博客
  • 博客访问: 485707
  • 博文数量: 41
  • 博客积分: 4007
  • 博客等级: 中校
  • 技术积分: 725
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-30 15:43
文章分类

全部博文(41)

文章存档

2011年(13)

2010年(14)

2009年(2)

2008年(12)

分类:

2010-05-05 13:56:44

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
阅读(2551) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~