内核资料收集
调度程序用几个函数来完成调度工作, 最重要的几个如下:
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()
维持多处理器系统中运行队列的平衡.
主要步骤如下:
待补充.
阅读(545) | 评论(0) | 转发(0) |