跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 实现 OS 调度器时遇到一个问题(Berkerly CS162
未分類
15 5 月 2020

实现 OS 调度器时遇到一个问题(Berkerly CS162

实现 OS 调度器时遇到一个问题(Berkerly CS162

資深大佬 : yanmulin 5

最近在自学 Berkerly CS162 的 OS 课程,第一份作业要求实现一个基于 Multi-level Feedback Queue 的调度器,其中一个测试用例每次运行的结果都不一样。问题是我虚拟机的配置是确定的,计算优先级的时刻(每 4 个 ticks 计算一次)和公式也是确定的,为什么调度出来的结果浮动会那么大呢?

下面是优先级的计算方法:

load_avg = (59/60) × load_avg + (1/60) × ready_threads

recent_cpu = (2 × load_avg)/(2 × load_avg + 1) × recent_cpu + nice

priority = PRI_MAX − (recent_cpu/4) − (nice × 2)

这个测试用例创建了 2 条线程,nice 值分别设为 0 和 5 后,忙等一段时间,在忙等循环中统计花费在当前线程的 ticks 数。

要求 2 条线程的 ticks 数分别为 1904 和 1096,容许的误差在±50,但我用 qemu 中得到的 tick 数每次结果都不一样,浮动范围在 200 左右,根本无法保证通过测试啊!

作业文档: https://people.eecs.berkeley.edu/~kubitron/courses/cs162-S19/sp19/static/projects/proj1.pdf (3.8 节描述了这个调度器的实现)

测试用例代码: https://github.com/Berkeley-CS162/group0/blob/master/pintos/src/tests/threads/mlfqs-fair.c (其中的 test_mlfqs_nice_2 函数)

大佬有話說 (0)

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具