Chinaunix首页 | 论坛 | 博客
  • 博客访问: 244815
  • 博文数量: 32
  • 博客积分: 557
  • 博客等级: 中士
  • 技术积分: 431
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-20 23:05
文章分类

全部博文(32)

文章存档

2015年(4)

2014年(2)

2012年(4)

2011年(22)

分类: LINUX

2012-03-10 11:43:15

进程调度涉及到的时间有两类:
① 真实时间:exec_start(tick, schedule更新),sum_exec_runtime,pre_sum_exec_runtime;
② 加权时间:vruntime;

关于时间的操作有二:
① 更新自己;
② 与人比较:
 a. 检查抢占;
 b. 选择next执行;

时间的更新在tick和schedule函数中都有,都是调用update_curr()函数,其中:

  1. delta_exec = (unsigned long)(now - curr->exec_start); 实际执行时间delta;

  2. curr->exec_start = now; (now = cpu_rq(cfs_rq)->clock)

  3. curr->sum_exec_runtime += delta_exec; 更新总运行时间

  4. delta_exec_weighted = calc_delta_fair(delta_exec, curr);
  5. 将运行时间加权,优先级越高,计算出来的已执行时间越少

  6. curr->vruntime += delta_exec_weighted; 更新vruntime,vruntime是加权时间;

与人比较中的检查抢占(check_preempt_tick),有三个步骤:
① 计算理想运行时间(ideal_runtime):
     a. 计算所有进程(nr_running)总运行时间;
     b. 按se.load占cfs_rq->load的比重,计算该进程应当运行的时间,即理想运行时间;
         其中se.load即是nice值,故优先级越高,计算出来的可执行时间越多;
② 如果该进程执行时间超过ideal_runtime,则执行抢占;
③ 如果该进程执行时间比执行时间最少的进程的多出ideal_runtime,则执行抢占;

进程的优先级是执行时间加权时的权重:
① 优先级越高,计算出来的已执行时间越少;(delta_exec_weighted)
② 优先级越高,计算出来的可执行时间越多;(ideal_runtime)

阅读(2933) | 评论(0) | 转发(0) |
0

上一篇:sockaddr族

下一篇:Ubuntu 修改屏幕分辨率

给主人留下些什么吧!~~