处理器管理
1.什么是线程,并比较它与进程的异同?
解答:
传统的进程有两个基本属性:1)可拥有资源的独立单位;2)能够进行处理器调度和分配的基本单位。引入线程后,将其两个属性分开。线程作为处理器调度和运行的基本单位。进程作为分配资源的基本单位,可以通过创建线程来完成任务,以减少程序并发执行时付出的时空开销。
同:
都可以并发执行,都有就绪,执行,阻塞这些基本状态,也都可以在这些基本状态之间转换状态;从创建到撤销有一定的生命周期;都需要同步工具。
异:
1)并发粒度不同;2)拥有资源数量不同。3)管理开销不同,这是由2)可以看出的。
2.说明时间片轮转调度算法的基本思想
解答:
在采用时间片轮转调度算法中,将系统中所有就绪进程按照FCFS原则,排成一个队列。每次调度时将CPU分派给队首进程,让其执行一个时间片(最佳的时间片长度应能使分时用户得到好的响应时间。响应时间=进程数目*时间片)。在一个时间片结束时,发生时钟中断。调度程序暂停当前进程的执行,将其送到就绪队列末尾,并通过CPU现场切换当前的队首进程,当然,进程可以未使用完一个时间片,就让出CPU(如阻塞)。这样可以保证就绪队列中的所有进程都有机会获得处理器而运行的机会,可以提高进程并发性和响应时间特性,从而提高资源利用率。
3.说明多级反馈队列调度算法的思想
解答:
多级反馈队列调度算法不必事先知道各进程的执行时间,又可以满足各类型进程的调度需要,它是一种目前公认较好的进程调度算法。算法思想是(采用抢占式调度)
1)需要设置多个就绪队列,并且为它们分别赋予不同的优先级。每队列分配不同的时间片,规定优先级越低则时间片越长。
2)新进程就绪后,先插入优先级最高的队列的末尾,按FCFS算法调度,若一个时间片未能完成,则降低到次优先级队列的末尾,依次类推,降低到最后的队列,则按“时间片轮转”算法调度直到完成。
3)进程由于等待时间而放弃CPU后,进入等待队列,一旦等待时间发生,则回到原来的就绪队列。
4)只有当较高的优先级队列为空时,才调度较低优先级队列中的进程执行。如果进程执行时有新进程进入较高优先级的队列,则需要重新调度,抢先执行优先级高的进程,并把被抢先的进程插入原队列的末尾。
4.在一个单道批处理系统中,一组作业到达时间和运行时间如下表所示,试计算先来先服务,短作业优先,高响应比优先算法时的平均周转时间和平均带权周转时间
作业 |
到达时间 |
运行时间 |
1 |
8.0 |
1.0 |
2 |
8.5 |
0.5 |
3 |
9.0 |
0.2 |
4 |
9.1 |
0.1 |
解:
用T表示周转时间(运行时间+等待时间【开始时间-提交时间】),用W表示带权周转时间(周转时间/运行时间)
FCFS的作业调度情况如下:
作业 |
提交时间 |
运行时间 |
开始时间 |
结束时间 |
周转时间 |
带权周转时间 |
1 |
8.0 |
1.0 |
8.0 |
9.0 |
1.0 |
1.0 |
2 |
8.5 |
0.5 |
9.0 |
9.5 |
1.0 |
2.0 |
3 |
9.0 |
0.2 |
9.5 |
9.7 |
0.7 |
3.5 |
4 |
9.1 |
0.1 |
9.7 |
9.8 |
0.7 |
7.0 |
FCFS的T =(1.0+1.0+0.7+0.7)/ 4 = 0.85 W =(1.0+2.0+3.5+7.0)/ 4 =3.375
SJF的作业调度情况如下:
作业 |
提交时间 |
运行时间 |
开始时间 |
结束时间 |
周转时间 |
带权周转时间 |
1 |
8.0 |
1.0 |
8.0 |
9.0 |
1.0 |
1.0 |
2 |
8.5 |
0.5 |
9.3 |
9.8 |
1.3 |
2.6 |
3 |
9.0 |
0.2 |
9.0 |
9.2 |
0.2 |
1.0 |
4 |
9.1 |
0.1 |
9.2 |
9.3 |
0.2 |
2.0 |
SJF的T=(1.0+1.3+0.2+0.2)/ 4 = 0.675 W =(1.0+2.6+1.0+2.0)/ 4 = 1.65
高响应比优先的作业调度情况如下:(响应比=周转时间/运行时间,选择响应比最大的)
作业 |
提交时间 |
运行时间 |
开始时间 |
结束时间 |
周转时间 |
带权周转时间 |
1 |
8.0 |
1.0 |
8.0 |
9.0 |
1.0 |
1.0 |
2 |
8.5 |
0.5 |
9.0 |
9.5 |
1.0 |
2.0 |
3 |
9.0 |
0.2 |
9.6 |
9.8 |
0.8 |
4.0 |
4 |
9.1 |
0.1 |
9.5 |
9.6 |
0.5 |
5.0 |
高响应比算法的T=(1.0+1.0+0.8+0.5)/ 4 = 0.825 W =(1.0+2.0+4.0+5.0)/ 4 = 3.0