1.作业包:lottery.py
2.作业说明:
通过程序 l o t t e r y . p y lottery.py lottery.py,我们能够观察到彩票调度算法执行进程的情况。
命令行参数解释如下:
- − h -h −h: 查看帮助信息以及退出
- − s -s −s: 随即因子
- − j -j −j: 系统中的进程数量
- − l -l −l: 使用进程列表,进程间用逗号隔开,不使用随机生成的进程
- − m -m −m:进程执行时间的最大长度
- − T -T −T:彩票的最大数量
- − q -q −q: 就绪队列的时间片长度
- − c -c −c:计算进程调度执行情况
3.作业要求:
(1) 分别用随机因子 1,2,3 生成 3 个进程并计算模拟结果
答:下面以随机因子 1 为例:
./lottery.py -j 3 -s 1 -c
进程1 | 进程2 | 进程3 | |
---|---|---|---|
票号 | 0~83 | 84~108 | 110~152 |
执行顺序:
2 0 1 2 2 2 1 1 1 1 1 1
(2) 运行 2 个进程,执行时间均为 10,进程0只有1张彩票,而进程1有100张彩票( (e.g., -l 10:1,10:100),彩票数目如此不平衡会发生什么?进程0在进程1完成前会运行么?运行多少次?总而言之,该种不平衡分配对彩票调度算法有什么影响?
答:
./lottery.py -j 2 -l 10:1,10:100 -c
执行顺序:
1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
彩票数目如此不平衡,很可能导致进程1一直得到执行,进程0能够运行,但运行概率很低为 1/101,该种不平衡分配对彩票份额低的进程不友好。
(3) 运行 2 个进程,执行时间均为 100,进程持有彩票数均为100(-l 100:100,100:100),该调度有多不平衡?使用不同的随机因子确定答案;多大程度上一个进程可比另一个提早完成
答:影响因子与提早时间占比相关度不高。
./lottery.py -j 2 -s 0 -l 100:100,100:100 -c
./lottery.py -j 2 -s 1 -l 100:100,100:100 -c
随机因子 | 0 | 1 |
---|---|---|
结束时间 | 192:200 | 196:200 |
提早时间占比 | 0.04 | 0.04 |
(4) 时间片(-q)增大对有什么影响?
答:时间片增大,其中一个进程越早完成。
./lottery.py -j 2 -s 0 -l 100:100,100:100 -q 1 -c
./lottery.py -j 2 -s 0 -l 100:100,100:100 -q 10 -c
时间片 | 1 | 10 |
---|---|---|
结束时间 | 196:200 | 160:200 |
提早时间占比 | 0.04 | 0.4 |