进程调度结构体记录

1070阅读 0评论2013-04-25 cainiao413
分类:LINUX


1.虚拟内存信息(Virtual Memory)

   除了内核线程(kernel thread),每个进程都拥有自己的地址空间(也叫虚拟空间),用mm_struct来描述。另外Linux2.4还引入了另外一个域active_mm,这是为内核线程而引入。因为内核线程没有自己的地址空间,为了让内核线程与普通进程具有统一的上下文切换方式,当内核线程进行上下文切换时,让切换进来的线程的active_mm指向刚被调度出去的进程的active_mm(如果进程的mm域不为空,则其active_mm域与mm域相同)。内存信息如表1所示


定义形式

解释

Struct mm_struct *mm

描述进程的地址空间

Struct mm_struct *active_mm

内核线程所借用的地址空间

表1   虚拟内存描述信息


2.优先级


int prio, static_prio, normal_prio;

unsigned int rt_priority;

static_prio= MAX_RT_PRIO + nice + 20            // (100 + nice +20)
实时进程

normal_prio=MAX_RT_PRIO-1 - p->rt_priority; p->prio =p->normal_prio

实时进程只是用了四个优先级变量中的三个(prionormal_priort_priority),而没有使用static_prio

普通进程

 

在调用接口set_user_nice()设置普通进程的优先级时,读者可以自己顺着函数set_user_nice()查看下面的关系。

p->static_prio = NICE_TO_PRIO(nice);

p->prio = effective_prio(p);  p->prio = p->static_prio

p->normal_prio = p->static_prio 参见函数effective_prio(p);





上一篇:linux 进程调度器框架
下一篇:浅析linux内核调度器与时间系统之PID 哈希表