内核基础 - 进程(十四) - 调度相关的函数

600阅读 0评论2016-10-07 zhanglong71
分类:LINUX

内核资料收集

调度程序用几个函数来完成调度工作, 最重要的几个如下:
    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()
        维持多处理器系统中运行队列的平衡.
        主要步骤如下:
            待补充.
上一篇:内核基础 - 进程(十三) - 调度所用数据结构
下一篇:内核基础 - 进程(十六) - 调度相关系统调用