Chinaunix首页 | 论坛 | 博客
  • 博客访问: 690753
  • 博文数量: 192
  • 博客积分: 1875
  • 博客等级: 上尉
  • 技术积分: 2177
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-23 23:21
个人简介

有时候,就是想窥视一下不知道的东东,因为好奇!

文章分类

全部博文(192)

文章存档

2024年(8)

2023年(3)

2019年(1)

2018年(1)

2017年(2)

2016年(69)

2015年(53)

2014年(14)

2013年(1)

2012年(5)

2011年(25)

2010年(9)

分类: LINUX

2016-10-07 10:31:24

内核资料收集

调度程序用几个函数来完成调度工作, 最重要的几个如下:
    1. scheduler_tick()
        维持当前最新的time_slice()计数器
    2. try_to_wake_up()
        唤醒睡眠进程
    3. recalc_task_prio()
        更新进程的动态优先级
    4. schedule()
        选择要被执行的新进程
    5. load_balance()
        维持多处理器系统中运行队列的平衡

各函数做了什么事
    1.scheduler_tick()
        该函数使当前进程的时间片计数器减1. 并检查计数器是否已送到0.
        主要步骤如下:
            待补充.
        更新实时进程的时间片
        更新普通进程的时间片
    2.try_to_wake_up()
        此函数通过把进程状态设置为TASK_RUNNING, 并把该进程插入本地CPU的运行队列,来唤醒睡眠进程或停止进程.
        主要步骤如下:
            待补充.
    3.recalc_task_prio()
        更新进程的平均睡眠时间和动态优先级. 
        主要步骤如下:
            待补充.
    4.schedule()
        实现调度程序. 它的任务是从运行队列的链表中找到一个进程, 并随后将CPU分配给这个进程.
        主要步骤如下:
            待补充.
    5.load_balance()
        维持多处理器系统中运行队列的平衡.
        主要步骤如下:
            待补充.
阅读(544) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~