北京航空航天大学计算机学院-2020春操作系统课程
题目作者为北航计算机学院操作系统课程组,答案为博主原创。水平有限,无法保证作答正确性,如有错误敬请批评指正。部分作答源自百度谷歌等其他资料,如有侵权联系删除
1 一个线程是否会被时钟中断剥夺CPU使用权?请分线程实现类型讨论。
用户级线程不会被时钟中断剥夺CPU使用权。用户级线程在用户空间通过库函数实现,无需内核支持也不参与内核的调度,由用户程序自行调用、调度和维护。用户级线程不受内核时钟中断的影响,但如果其所在的进程时间片用完,自然整个进程的所有线程都会让出CPU。
内核级线程由内核调度和维护,是可以被时钟中断单独剥夺CPU使用权的。
对于混合线程实现方式,用户级线程和内核级线程之间有映射关系,一个线程是否会被时钟剥夺CPU使用权取决于其由哪一方控制。不论是Many-to-One, One-to-One, 还是Many-to-Many,其映射中内核级线程是可以被时钟中断剥夺CPU使用权的,而用户级线程的情况取决于其所映射的内核级线程,一旦内核级线程被剥夺CPU使用权,其所映射的用户级线程都将让出CPU。如果一个内核级线程映射多个用户级线程,其用户级线程不可单独被时钟中断剥夺CPU使用权;如果一个内核级线程只映射了一个用户级线程,那么中断掉内核级线程也就相当于中断掉了对应的用户级线程。
2 一个软实时系统中有4个周期性进程,其周期分别为:50、100、200、250,每次CPU运行时长分别为:35、20、10、x,求使得这些进程可调度的最大x取值。
若使用静态调度算法,RMS已被证明是静态最优调度算法,其推导了,当任务集满足 ∑ i = 1 n C i / T i ≤ n ( 2 n − 1 ) \sum_{i=1}^n C_i/T_i \leq n(\sqrt[n]2-1) ∑i=1nCi/Ti≤n(n2−1) 时一定可调度,在题目所述情况下有4个进程,不等式右侧为 4 × ( 2 4 − 1 ) = 0.75682846 4 \times (\sqrt[4]2-1)=0.75682846 4×(42−1)=0.75682846 ,将4个进程的运行时间和周期代入不等式左侧,得到 35 / 50 + 20 / 100 + 10 / 200 + x / 250 ≤ 0.75682846 35/50+20/100+10/200+x/250 \leq 0.75682846 35/50+20/100+10/200+x/250≤0.75682846 ,发现 x x x 必须是负数,说明上述条件得任务集是静态不可调度的。
若使用动态的调度算法,只需要任务集满足 ∑ i = 1 n C i / T i ≤ 1 \sum_{i=1}^n C_i/T_i \leq1 ∑i=1nCi/Ti≤1 即可调度。 35 / 50 + 20 / 100 + 10 / 200 + x / 250 ≤ 1 35/50+20/100+10/200+x/250 \leq 1 35/50+20/100+10/200+x/250≤1 ,得到 x ≤ 12.5 x \leq 12.5 x≤12.5 。
3 有五个进程P1、P2、P3、P4、P5,它们同时依次进入就绪队列,它们的优先数和需要的处理器时间如下表。
进程 | 处理器时间 | 优先级(数小优先级高) |
---|---|---|
P1 | 10 | 3 |
P2 | 1 | 1 |
P3 | 2 | 3 |
P4 | 1 | 4 |
P5 | 5 | 2 |
忽略进行调度等所花费的时间,回答下列问题:
四种调度算法下五个进程的执行顺序如下图所示:
先来先服务:
进程 | 周转时间 | 等待时间 | 执行时间 |
---|---|---|---|
P1 | 10 | 0 | 10 |
P2 | 11 | 10 | 1 |
P3 | 13 | 11 | 2 |
P4 | 14 | 13 | 1 |
P5 | 19 | 14 | 5 |
先来先服务的平均周转时间: ( 10 + 11 + 13 + 14 + 19 ) ÷ 5 = 13.4 (10+11+13+14+19)\div5=13.4 (10+11+13+14+19)÷5=13.4
短作业优先:
进程 | 周转时间 | 等待时间 | 执行时间 |
---|---|---|---|
P1 | 19 | 9 | 10 |
P2 | 1 | 0 | 1 |
P3 | 4 | 2 | 2 |
P4 | 2 | 1 | 1 |
P5 | 9 | 14 | 5 |
短作业优先的平均周转时间: ( 19 + 1 + 4 + 2 + 9 ) ÷ 5 = 7 (19+1+4+2+9)\div5=7 (19+1+4+2+9)÷5=7
非抢占式优先数:
进程 | 周转时间 | 等待时间 | 执行时间 |
---|---|---|---|
P1 | 16 | 6 | 10 |
P2 | 1 | 0 | 1 |
P3 | 18 | 16 | 2 |
P4 | 19 | 18 | 1 |
P5 | 6 | 1 | 5 |
非抢占式优先数的平均周转时间: ( 16 + 1 + 18 + 19 + 6 ) ÷ 5 = 12 (16+1+18+19+6)\div5=12 (16+1+18+19+6)÷5=12
时间片轮转(时间片为2):
进程 | 周转时间 | 等待时间 | 执行时间 |
---|---|---|---|
P1 | 19 | 9 | 10 |
P2 | 3 | 2 | 1 |
P3 | 5 | 3 | 2 |
P4 | 6 | 5 | 1 |
P5 | 15 | 10 | 5 |
时间片轮转(时间片为2)的平均周转时间: ( 19 + 3 + 5 + 6 + 15 ) ÷ 5 = 9.6 (19+3+5+6+15)\div5=9.6 (19+3+5+6+15)÷5=9.6