课程作业-第九章:
9.1计算3个作业在随机种子为1、2和3时的模拟解。
答:
(1)随机种子为1时:
时间片R=1
job0,总占用时间:1,彩票数:0-83
job1,总占用时间:7,彩票数:84-108
job2,总占用时间:2,彩票数:109-152
产生的随机数依次取模得到执行作业的顺序为:2 0 1 2 2 2 1 1 1 1 1 1
分析如下表所示:
时间 | Job0 | Job1 | Job2 | 随机数 | 总份额 | 模 | 运行 |
1 | 0 | 0 | 1 | 651593 | 153 | 119 | Job2 |
2 | 1(已完成) | 0 | 1 | 788724 | 153 | 9 | Job0 |
3 | 1 | 1 | 93859 | 69 | 19 | Job1 | |
4 | 1 | 2 | 28347 | 69 | 57 | Job2 | |
5 | 1 | 3 | 835765 | 69 | 37 | Job2 | |
6 | 1 | 4(已完成) | 432767 | 69 | 68 | Job2 | |
7 | 2 | 762280 | 25 | 5 | Job1 | ||
8 | 3 | 2106 | 25 | 6 | Job1 | ||
9 | 4 | 445387 | 25 | 12 | Job1 | ||
10 | 5 | 721540 | 25 | 15 | Job1 | ||
11 | 6 | 228062 | 25 | 12 | Job1 | ||
12 | 7(已完成) | 945271 | 25 | 21 | Job1 |
(2)随机种子为2时:
同理可得到执行作业的顺序:2 0 0 2 0 1 0 2 0 0 0 1 0 0 1 2 1 1 1 2 1 1 2
分析如下表所示:
时间 | Job0 | Job1 | Job2 | 随机数 | 总份额 | 模 | 运行 |
1 | 0 | 0 | 1 | 605944 | 197 | 169 | Job2 |
2 | 1 | 0 | 1 | 606802 | 197 | 42 | Job0 |
3 | 2 | 0 | 1 | 581204 | 197 | 54 | Job0 |
4 | 2 | 0 | 2 | 158383 | 197 | 192 | Job2 |
5 | 3 | 0 | 2 | 430670 | 197 | 28 | Job0 |
6 | 3 | 1 | 2 | 393532 | 197 | 123 | Job1 |
7 | 4 | 1 | 2 | 723012 | 197 | 22 | Job0 |
8 | 4 | 1 | 3 | 994820 | 197 | 167 | Job2 |
9 | 5 | 1 | 3 | 949396 | 197 | 53 | Job0 |
10 | 6 | 1 | 3 | 544177 | 197 | 63 | Job0 |
11 | 7 | 1 | 3 | 444854 | 197 | 28 | Job0 |
12 | 7 | 2 | 3 | 268241 | 197 | 124 | Job1 |
13 | 8 | 2 | 3 | 35924 | 197 | 70 | Job0 |
14 | 9(完成) | 2 | 3 | 27444 | 197 | 61 | Job0 |
15 | 3 | 3 | 464894 | 103 | 55 | Job1 | |
16 | 3 | 4 | 318465 | 103 | 92 | Job2 | |
17 | 4 | 4 | 390015 | 103 | 48 | Job1 | |
18 | 5 | 4 | 891790 | 103 | 16 | Job1 | |
19 | 6 | 4 | 525753 | 103 | 41 | Job1 | |
20 | 6 | 5 | 560510 | 103 | 87 | Job2 | |
21 | 7 | 5 | 236123 | 103 | 47 | Job1 | |
22 | 8(完成) | 5 | 23858 | 103 | 65 | Job1 | |
23 | 6(完成) | 325143 | 30 | 3 | Job2 |
(3)随机种子为3时:
同理可得到执行作业的顺序:1 1 0 1 0 1 1 2 2 2 2
分析如下表所示:
时间 | Job0 | Job1 | Job2 | 随机数 | 总份额 | 模 | 运行 |
1 | 0 | 1 | 0 | 13168 | 120 | 88 | Job1 |
2 | 0 | 2 | 0 | 837469 | 120 | 109 | Job1 |
3 | 1 | 2 | 0 | 259354 | 120 | 34 | Job0 |
4 | 1 | 3(完成) | 0 | 234331 | 120 | 91 | Job1 |
5 | 2(完成) | 0 | 995645 | 60 | 5 | Job0 | |
6 | 1 | 470263 | 6 | 1 | Job1 | ||
7 | 2 | 836462 | 6 | 2 | Job1 | ||
8 | 3 | 476353 | 6 | 1 | Job2 | ||
9 | 4 | 639068 | 6 | 2 | Job2 | ||
10 | 5 | 150616 | 6 | 4 | Job2 | ||
11 | 6(完成) | 634861 | 6 | 1 | Job2 |
9.2现在运行两个特定的作业:每个长度为 10,但是一个(作业 0)只有一张彩票,另一个(作业 1)有 100 张彩票(−l 10∶1,10∶100)。彩票数量如此不平衡时会发生什么?在作业 1 完成之前,作业 0 是否会运行?运行频率(how often)?一般来说,这种彩票不平衡对彩票调度的行为有什么影响?
答:
详细计算过程如下:
时间 | Job0 | Job1 | 随机数 | 总份额 | 模 | 运行 |
1 | 0 | 1 | 844422 | 101 | 62 | Job1 |
2 | 0 | 2 | 757955 | 101 | 51 | Job1 |
3 | 0 | 3 | 420572 | 101 | 8 | Job1 |
4 | 0 | 4 | 258917 | 101 | 54 | Job1 |
5 | 0 | 5 | 511275 | 101 | 13 | Job1 |
6 | 0 | 6 | 404934 | 101 | 25 | Job1 |
7 | 0 | 7 | 783799 | 101 | 39 | Job1 |
8 | 0 | 8 | 303313 | 101 | 10 | Job1 |
9 | 0 | 9 | 476597 | 101 | 79 | Job1 |
10 | 0 | 10(完成) | 583382 | 101 | 6 | Job1 |
11 | 1 | 908113 | 1 | 0 | Job0 | |
12 | 2 | 504687 | 1 | 0 | Job0 | |
13 | 3 | 281838 | 1 | 0 | Job0 | |
14 | 4 | 755804 | 1 | 0 | Job0 | |
15 | 5 | 618369 | 1 | 0 | Job0 | |
16 | 6 | 250506 | 1 | 0 | Job0 | |
17 | 7 | 909747 | 1 | 0 | Job0 | |
18 | 8 | 982786 | 1 | 0 | Job0 | |
19 | 9 | 810218 | 1 | 0 | Job0 | |
20 | 10(完成) | 902166 | 1 | 0 | Job0 |
在这里,Job0和Job1的彩票数量分别为1:100,差了整整100倍。所以在工作1结束前,抽到Job0的彩票的概率(即Job0占用CPU的概率)为1/101,导所以在工作1完成之前工作0占用CPU几乎是不可能的。在这种极端情况下,像Job0这种持有份额小的工作,一般响应时间与周转时间都非常长,且基本上占用不了CPU,非常容易发生“饿死”的情况。从上图的随机种子模拟结果上看,在工作1完成之前,工作0并没有运行。
9.3如果运行两个长度为100、都有100张彩票的作业(−l100∶100,100∶100),调度程序有多不公平?运行一些不同的随机种子来确定(概率上的)答案,以一项作业比另一项作业早完成多少来确定不公平性。
答:
首先,分别运行以下命令行来执行彩票调度程序lottery.py:
- ./lottery.py -l 100:100,100:100 -s 1 -c
- ./lottery.py -l 100:100,100:100 -s 25 -c
- ./lottery.py -l 100:100,100:100 -s 50 -c
- ./lottery.py -l 100:100,100:100 -s 100 -q 10 -c # 调整时间片为10
- ./lottery.py -l 100:100,100:100 -s 100 -q 30 -c # 调整时间片为30
在上述操作中,使用不同的随机种子(通过-s参数指定)以及时间片大小(通过-q参数调整)。
观察运行结果,我们得到以下信息:
当随机种子设为1时,job0在192时完成,而job1在200时完成。
当随机种子设为25时,job1在182时完成,而job0在200时完成。
当随机种子设为50时,job1在188时完成,job0则在200时完成。
从这些结果中,可以看到公平性相对较好,即不同工作的完成时间较为接近。
接下来,尝试调整时间片大小来观察其对公平性的影响:
当时间片调整为10时,job1在140时完成,而job0在200时完成。
当时间片调整为30时,job1在150时完成,job0则在240时完成。
在这两种情况下,我们观察到公平性较差,即两个工作的完成时间差距较大。
通常,时间片的大小会直接影响调度的公平性。时间片越小,意味着调度器更频繁地进行工作切换,这通常会使两个工作的完成时间更加接近,从而提高公平性。然而,过小的时间片也可能导致过多的上下文切换,从而降低系统整体性能。