Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1320418
  • 博文数量: 175
  • 博客积分: 2743
  • 博客等级: 少校
  • 技术积分: 4024
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-30 01:41
文章分类

全部博文(175)

文章存档

2015年(1)

2013年(53)

2012年(71)

2011年(50)

分类: LINUX

2013-04-25 15:58:47


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);





阅读(1115) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~