9.1
1.计算 3 个工作在随机种子为 1、2 和 3 时的模拟解。
答:① 随机数种子为1
随机数序列为:651593,788724, 93859, 28347,835765,432767,762280,2106,445387,721540,228762,945271
根据作业长度及随机数序列推得作业票号变化:
Job 0(0-83) Job 1(84-108) Job 2(109-152)
Job 0(null) Job 1(0-24) Job 2(25-68)
Job 0(null) Job 1(0-24) Job 2(null)
又因为随机数对总票数取余就是“中奖”的作业,中奖号码序列为:
119,9,19,57,37,68,5,6,12,15,12,21
运行作业序列:2 0 1 2 2 2 1 1 1 1 1 1
② 随机数种子为2
随机数序列为:605944,606802,581204,158383,430670,393532,723012,994820,949396,544177,444854,268241,35924,27444,464894,318465,380015,891790,525753,560510,236123,23858,325143
根据作业长度及随机数序列推得作业票号变化:
Job 0(0-93) Job 1(94-166) Job 2(167-196)
Job 0(null) Job 1(0-72) Job 2(73-102)
Job 0(null) Job 1(null) Job 2(0-29)
又因为随机数对总票数取余就是“中奖”的作业,中奖号码序列为:
169,42,54,192,28,123,22,167,53,63,28,124,70,61,55,92,48,16,41,87,47,
65,3
运行作业序列:2 0 0 2 0 1 0 2 0 0 0 1 0 0 1 2 1 1 1 2 1 1 2
③ 随机数种子为3
随机数序列为:13168,837469, 259354, 234331,995645,470263,836462,476353,639068,150616,634861
根据作业长度及随机数序列推得作业票号变化:
Job 0(0-53) Job 1(54-113) Job 2(114-119)
Job 0(0-53) Job 1(null) Job 2(54-59)
Job 0(null) Job 1(null) Job 2(0-5)
又因为随机数对总票数取余就是“中奖”的作业,中奖号码序列为:
88,109,34,91,5,1,2,1,2,4,1
运行作业序列:1 1 0 1 0 2 2 2 2 2 2
9.2
2.现在运行两个具体的工作:每个长度为 10,但是一个(工作 0)只有一张彩票,另 一个(工作 1)有 100 张(−l 10∶1,10∶100)。 彩票数量如此不平衡时会发生什么?在工作 1 完成之前,工作 0 是否会运行?多久? 一般来说,这种彩票不平衡对彩票调度的行为有什么影响?
答:当彩票数量如此不平衡时极有可能作业1一直“中奖”,长时间霸占CPU。在作业1完成之前作业0有可能会运行,每次运行的可能性为1/101,如果能运行,长度每次为一个时间片。这种彩票不平衡的情况使得彩票数多的长时间占用CPU,彩票数少的很难与彩票数多的竞争。
9.3
3.如果运行两个长度为 100 的工作,都有 100 张彩票(−l100∶100,100∶100),调度程序有多不公平?运行一些不同的随机种子来确定(概率上的)答案。不公平性取决于一项工作比另一项工作早完成多少。
答:令不公平性U = T0 / T1,T0为作业0的周转时间,T1为作业1的周转时间。当|U - 1|≈0时我认为是比较公平的,否则不是很公平。
Random seed T0 T1 U
1 200 196 1.0204
3 196 200 0.9800
6 200 193 1.0363
9 200 192 1.0417
我们可以看到在不同随机数种子下(seed = 1,3,6,9)运行两个长度为 100 的工作,都有 100 张彩票,它们的不公平性U都近似于1,即
|U - 1|≈0,所以我认为在这种情况下调度程序是比较公平的。