电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

Linux内核分析之调度算法

Linux内核分析之调度算法_第1页
1/42
Linux内核分析之调度算法_第2页
2/42
Linux内核分析之调度算法_第3页
3/42
下载后可任意编辑Linux 内核分析之调度算法inux 调度算法在 2.6.32 中采纳调度类实现模块式的调度方式。这样,能够很好的加入新的调度算法。linux 调度器是以模块方式提供的,这样做的目的是允许不同类型的进程可以有针对性地选择调度算法。这种模块化结构被称为调度器类,他允许多种不 同哦可动态添加的调度算法并存,调度属于自己范畴的进程。每个调度器都有一个优先级,调度代码会根据优先级遍历调度类,拥有一个可执行进程的最高优先级的 调度器类胜出,去选择下面要执行的那个程序。linux 上主要有两大类调度算法,CFS(完全公平调度算法)和实时调度算法。宏 SCHED_NOMAL 主要用于 CFS 调度,而 SCHED_FIFO 和 SCHED_RR 主要用于实时调度。如下面的宏定义:1. /* 2. * Scheduling policies 3. */ 4. /*支援 Real-Time Task 的排程,包括有 SCHED_FIFO 與 SCHED_RR. 5. */ 6. 7. /*(也稱為 SCHED_OTHER): 主要用以排程 8. 一般目的的 Task.*/ 9. #define SCHED_NORMAL 0 10. #define SCHED_FIFO 1 11. /*task 預設的 Time Slice 長度為 100 msecs*/ 12. #define SCHED_RR 2 13. /*主要用以讓 Task 可以延長執行的時間 14. (Time Slice),減少被中斷發生 Task Context-Switch 15. 的次數.藉此可以提高 Cache 的利用率 16. (每次 Context-Switch 都會導致 Cache-Flush). 比 17. 較適合用在固定週期執行的 Batch Jobs 任 18. 務主機上,而不適合用在需要使用者互 19. 動的產品 (會由於 Task 切換的延遲,而 20. 感覺到系統效能不佳或是反應太慢).*/ 21. #define SCHED_BATCH 3 22. /* SCHED_ISO: reserved but not implemented yet */ 23. /*為系統中的 Idle Task 排程.*/ 24. #define SCHED_IDLE 5 linux 调度算法实现的高层数据结构主要有运行实体、调度类、运行队列,下面我们主要看看这几个数据结构的字段和意义。下载后可任意编辑运行实体,rq 结构体每个 cpu 有一个,主要存储一些基本的用于调度的信息,包括实时调度的和 CFS 调度的1. /*每个处理器都会配置一个 rq*/ 2. struct rq { 3. /* runqueue lock: */ 4. spinlock_t lock; 5. 6. /* 7. * nr_running and cpu_load should be in the same cacheline because 8. * remote CPUs use both these fields when doing ...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

Linux内核分析之调度算法

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部