[笔记分享] [OS] Linux的进程调度

Platform: msm8x60
Kernel: 2.6

介绍

多任务操作系统都可以让程序的并发执行,这种功能通过进程调度来实现。Linux提供了抢占式的多任务模式,由调度程序决定什么时候可以被抢占。


策略

进程分I/O消耗和处理器消耗型两种。I/O消耗型如键盘活动,处理器消耗型如视频解码。调度策略采用复杂的算法来决定哪个进程投入运行。一般都倾向于I/O消耗型进程。

优先级有两种:
1. nice值。范围-20到 +19,默认为0, 值越大优先级越低,它也用来决定时间片的长短。
2. 实时优先级。可配置,默认范围从0到99。任何实时进程优先级都高于普通进程。

再来说下时间片,它表明的是一个进程在被抢占前所能运行的时间。进程并不是一次用完它的时间片。没有时间片的进程不会再投入运行,等其他所有进程全部耗尽时间片后,再重新分配。

Linux是可抢占式的。当一个进程进入TASK_RUNNING时,内核先判断其优先级是否高于其他进程,如果是,调用程序被唤醒,抢占当前进程。当进程时间片变为0时,也会被抢占。


调度算法

Linux2.6以O(1)调度为核心算法,调度的时间是恒定的,保证了对各个进程之间的公平性。
最基本数据结构为运行队列。每个处理器一个,每个可投入运行的进程属于一个运行队列。通过cpu_rq()、this_rq()、task_rq()等宏来获取可执行队列,对多个运行队列操作时为避免死锁可通过double_rq_lock()、double_rq_unlock()来自动完成防死锁操作。
每个运行队列有两个优先级数组,过期和活跃数组。结构如下:</

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值