OSTEP第九章:调度:比例份额

OSTEP:调度:比例份额

此系列主要完成操作系统导论(Operating Systems: Three Easy Pieces)的课后作业,还会涉及一些每章总结和感悟,大部分的题目都没有一个标准的答案,有争议和错误的地方欢迎同学们一起讨论。

相关资源

Website:http://www.ostep.org/

Homework:https://github.com/remzi-arpacidusseau/ostep-homework/

专栏:操作系统导论(ostep)

习题答案

本章习题需要使用lottery.py,首先使用-h查看使用帮助:

yzy@yzy-virtual-machine:~/ostep-homework/cpu-sched-lottery$ python3 lottery.py -h
Usage: lottery.py [options]

Options:
  -h, --help            show this help message and exit
  -s SEED, --seed=SEED  the random seed
  -j JOBS, --jobs=JOBS  number of jobs in the system
  -l JLIST, --jlist=JLIST
                        instead of random jobs, provide a comma-separated list
                        of run times and ticket values (e.g., 10:100,20:100
                        would have two jobs with run-times of 10 and 20, each
                        with 100 tickets)
  -m MAXLEN, --maxlen=MAXLEN
                        max length of job
  -T MAXTICKET, --maxticket=MAXTICKET
                        maximum ticket value, if randomly assigned
  -q QUANTUM, --quantum=QUANTUM
                        length of time slice
  -c, --compute         compute answers for me

1.分别使用如下命令执行:

python3 lottery.py -s 1 -j 3 -c
python3 lottery.py -s 2 -j 3 -c
python3 lottery.py -s 3 -j 3 -c

2.运行此命令 python3 lottery.py -l 10:1,10:100 -c

任务0的运行几率会很小很小。从概率上讲,工作0会运行1/101的时间。这种不平衡对彩票少的任务不公平,将会得到很少的运行时间。

3.分别运行如下命令,可以看到,彩票数量是一样的,本该拥有相同的运行时间,即在相同的时间下运行结束,但是在实际运行的时候,结束时间有比较大的偏差:

python3 lottery.py -s 0 -l 100:100,100:100 -c
python3 lottery.py -s 2 -l 100:100,100:100 -c
python3 lottery.py -s 1 -l 100:100,100:100 -c

4.量子规模即时间片大小。随着时间片越小,彩票比例形成的概率越精准。

总结与感悟

  • 比例份额调度的目的是确保每个工作获得一定比例的CPU时间,而不是优化周转时间和响应时间。
  • 彩票数比例代表CPU占用比例。例如A拥有75彩票,B拥有25彩票,则此机制为保证A有75%的运行时间,B有25%的运行时间。
  • 彩票可以发放和转让,用于实现不同功能。
  • 操作系统生成0~彩票总数的随机数,然后根据随机数选择将要运行的进程
  • 彩票调度有一定的随机性,步长调度可以解决此问题,但是步长调度需要全局状态,不够灵活。
  • 步长调度和彩票调度都没有广泛应用,因为不能很好的解决IO问题
  • 在某些特定场景,比例份额有其独特作用,例如VM的ESX系统就使用了比例分配来共享内存。

猜你喜欢

转载自blog.csdn.net/doreen211/article/details/125589002
今日推荐