题目一
为什么对调度程序而言,区分CPU约束型进程和I/O约束型进程很重要?
答:
CPU约束型进程可以利用整个时间片,且不会做任何阻碍I/O操作的工作;另一方面,I/O约束型进程有在运行I/O操作前只运行很少数量的计算机操作的性质。这种进程一般不会使用很多的CPU。所以,通过给I/O约束型进程优先权和允许在CPU约束型进程之前运行,可以很好地利用计算机资源。
题目二
下面哪种调度算法会导致饥饿?
- 先到先服务
- 最短作业优先
- 轮转法
- 优先级
答:
最短作业优先调度算法和优先级调度算法会导致饥饿。最短作业优先调度算法对长作业不利,在SJF算法中长作业的周转时间会增加,可能导致长作业长期不被调度,出现“饥饿”现象。
优先级调度算法会使某个低优先级进程无穷等待CPU,从而产生“饥饿”现象。
题目三
考虑一个运行10个I/O约束任务和1个CPU约束任务的系统,假设I/O约束任务每进行1ms的CPU计算执行一次I/O操作,每个I/O操作花费10ms完成。假设上下文切换花费0.1ms,且所有的进程都是长运行任务。请计算下列条件下RR(时间片轮转)调度程序的CPU利用率?
- 时间片为1ms
- 时间片为10ms
答: 首先明确CPU的利用率 = 所 有 进 程 使 用 C P U 的 时 间 C P U 的 时 间 =\frac{所有进程使用CPU的时间}{CPU的时间} =CPU的时间所有进程使用CPU的时间
- 对于1ms的时间片,不论是哪个进程被调度,这个调度都会为每一次的上下文切换花费0.1ms的时间,CPU的利用率为 1 1.1 × 100 {\frac{1}{1.1}}\times{100} 1.11×100%=92%
- 对于10ms的时间片,I/O约束型任务会在使用完1ms时间片进行一次上下文切换。这个时间片要求在所有的进程间都走一遍,因此, 10 × 1.1 + 10.1 10\times1.1+10.1 10×1.1+10.1(每个I/O约束型任务执行为1ms,然后承担上下文切换的任务,而CPU约束型的任务执行10ms在承担一个上下文切换之前)。因此,CPU的利用率是 20 21.1 × 100 {\frac{20}{21.1}}\times{100} 21.120×100%=94%
题目四
考虑下面一组进程
进程 | 到 达 时 间 到达时间 到达时间 | C P U 区 间 长 度 ( m s ) CPU区间长度(ms) CPU区间长度(ms) | 优 先 级 优先级 优先级 |
---|---|---|---|
P1 | 0 | 10 | 3 |
P2 | 1 | 3 | 1 |
P3 | 2 | 4 | 3 |
P4 | 3 | 1 | 4 |
P5 | 4 | 5 | 2 |
- 分别画出采用FCFS,SJF,抢占式优先级调度(数值越小,优先级越大;优先级相同时采用RR,时间片为1ms),RR(时间片=2ms)算法进行调度时的甘特图。
- 计算上述调度算法下的平均周转时间。
- 计算上述调度算法下的平均等待时间。
答:
- FCFS
SJF(非抢占式)
SJF(抢占式)此处假设剩余时间长度相同的情况下采用先进先出
3. 抢占式优先级调度
4. RR(此处假设在同一时刻有两个进程需要放到队列尾部时,采用原来没有在就绪队列中存在过的进程先放入尾部,再将时间片用完的进程放入队列尾部)
平均周转时间
周转时间 | F C F S FCFS FCFS | S J F ( 非 抢 占 ) SJF(非抢占) SJF(非抢占) | S J F ( 抢 占 ) SJF(抢占) SJF(抢占) | 抢 占 式 抢占式 抢占式 | R R RR RR |
---|---|---|---|---|---|
P1 | 10 | 10 | 23 | 22 | 23 |
P2 | 12 | 13 | 3 | 3 | 11 |
P3 | 15 | 16 | 7 | 15 | 12 |
P4 | 15 | 8 | 2 | 20 | 6 |
P5 | 19 | 19 | 10 | 5 | 17 |
平均周转时间 | 14.2 m s ms ms | 13.2 m s ms ms | 9 m s ms ms | 13 m s ms ms | 13.8 m s ms ms |
平均等待时间
等待时间 | F C F S FCFS FCFS | S J F ( 非 抢 占 ) SJF(非抢占) SJF(非抢占) | S J F ( 抢 占 ) SJF(抢占) SJF(抢占) | 抢 占 式 抢占式 抢占式 | R R RR RR |
---|---|---|---|---|---|
P1 | 0 | 0 | 13 | 12 | 13 |
P2 | 9 | 10 | 0 | 0 | 8 |
P3 | 11 | 12 | 3 | 11 | 8 |
P4 | 14 | 7 | 1 | 19 | 5 |
P5 | 14 | 14 | 5 | 0 | 12 |
平均等待时间 | 9.6 m s ms ms | 8.6 m s ms ms | 4.4 m s ms ms | 8.4 m s ms ms | 9.2 m s ms ms |
题目五
查找文献了解Solaris的调度设计并对其进行详细阐述,并就其调度方案中的至少两个细节说明这样设计所带来的影响(好处)。
答:
- Solaris是最初由Sun开发的Unix操作系统。它在1993年取代了早期的SunOS。自2010年1月被Oracle收购以来,Sun以来一直由Oracle Corporation拥有,OracleSolaris也因此得名。
- Solaris支持来自Oracle和其他供应商提供的基于SPARC以及基于x86的工作站和服务器,并且正在努力移植到其他平台。 CPU调度是计算机多任务处理、多进程操作系统和实时操作系统设计中的关键概念。调度是指分配流程以在可用CPU资源上运行的方式,CPU调度处理确定哪个准备队列中的进程将分配给CPU。
- Solaris系统中的调度类型有:
- 时间共享类型(TimeSharing):这是进程及其关联的内核线程的默认类。该类别中的优先级会根据处理器中的CPU利用率进行动态调整以便均匀分配处理器资源。
- 交互型(Interactive):这是TS的增强版本。一些文本与TS,即TS / IA结合使用。此类适用于GUI中的焦点对准窗口。它提供与该特定窗口关联的进程的额外资源。
- 公平共享调度程序(Fair Share Scheduler):此类型基于“共享”,而不是基于优先级。与该类关联的线程是根据分配给它们的份额以及处理器的利用率来进行调度的。
- 固定优先级调度(Fixed-Priority):这些线程的优先级是固定的,无论它们如何与CPU交互。它们在线程的生存期内不会动态变化。
- 系统级调度(System):用于调度内核线程。这些线程的相关含义与上面列出的用户界面线程不同,它们不会在CPU时间片用完后进行上下文切换。它们一直运行到阻塞或完成为止。
- 实时(RealTime):这些线程是固定优先级的,具有固定的持续时间。它们是优先级最高的类别之一,只有中断具有比实时更高的优先级。
由于与调度类的优先级范围相关,因此用户域类(TS / IA / FX / FSS)携带最低的优先级,即0-59。 SYS类的下一个范围是60-99。具有最高优先级(忽略INT)的是100-159的RT类。
我们可以在同一系统上混合使用调度类,但是要记住一些注意事项。
- 避免让FSS,TS,IA和FX类共享同一处理器集(processor set)。在处理器集上运行的所有进程都必须在相同的调度类中,这样它们就不会争用相同的CPU
- 为避免应用程序匮乏,请对FSS和FX类应用程序使用处理器集
- TS和IA以及FSS和RT可以在同一处理器集中。
- 我们可以通过查看调度表本身来查看TS类(默认)如何做出决定。
FSS可以与处理器集结合使用,从而对运行在每个处理器集上的项目之间的CPU资源分配提供比单独使用处理器集更细粒度的控制。FSS调度器将处理器集视为完全独立的分区,每个处理器集独立地控制CPU分配。
以FSS为例,假设在四个处理器系统上,如果单线程RT进程是CPU绑定的,则它可以消耗整个处理器。如果系统还运行FSS,则常规用户进程将争用RT进程不适用的其余三个CPU。注意,RT进程可能不会连续使用CPU。当RT进程空闲时,FSS使用所有的四个处理器。因此,大大地提高了CPU的利用率。