The Linux CPU scheduler & runqueue

转载自:http://ccu-cs-os2009s-495410059.blogspot.nl/2009/06/linux-cpu-scheduler-runqueue.html 





在Linux 2.6,每個CPU有屬於自己的一個runqueue,而runqueue又分成兩個結構,active跟expired。這2個queue是根據每個process的priority來由高到低依序排列(範圍:0~139)。

active代表process的quantum尚未使用完畢的。
expire則代表quantum已經使用完畢的process。



現在有1、2、3三個Task在active這個結構等待被執行。

Priority: Task1>Task2=Task3
Time quantum:Task1>Task2=Task3
(Time quantum ≒ 1/Priority)




由Task1開始執行(因為Priority最高),當Task1將自己的Time quantum使用完畢後,就移動到expired。




Task2和Task3的priority是相同的,所以用linked list將兩個串聯起來,而兩者的執行是採用round-robin演算法。




每個Task有一個時間片段(time slice),因為Task2無法在time slice內執行完畢,就要移動到該linked list的最後面去排隊重新等待執行。



Task2在經由round-robin演算法,排隊了幾次之後結束了他的執行Time quantum,也會移動到expired去。




因為有動態優先權(dynamic priority)。動態優先權會以「上一個cycle中,該Task的averge sleep time值的大小」為依據給予該Task一個bouns值。所以Task3移動到expired時,priority比Task2高。



3個Task都到了expired



當active結構裡已經沒有Task在等待被執行,而expired有Task,兩者的指標就會做交換的動作

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值