操作系统之进程篇2
1.进程调度主要要解决的问题是什么?
任意时刻到底由哪个进程执行,那些不执行。正在进展中的程序使用CPU的模式有3种:程序大部分时间在CPU上执行(CPU导向,又称计算密集型程序);程序大部分时间在进行输入输出(I/O导向,又称输入输出密集型程序);程序介入前两种模式之间(平衡型程序)。
2.进程调度的目标?
达到极小化平均响应时间,极大化系统吞吐率,保持系统各个功能部件均处于繁忙的状态,并提供某种貌似公平的机制。
3.调度算法有哪些?各算法的利弊?
1)先来先服务FCFS(First Come First Serve):不存在抢占,程序一旦允许运行,就一直运行到结束。用户交互体验差。
2)时间片轮询:主要目的是改善短程序的响应时间,周期性的进行程序切换。系统的平均响应时间取决于时间片的大小。如果时间片过大,时间片轮询将越来越像FCFS算法,如果选择的时间片过小,则进程切换所带来的系统消耗将变多,会降低系统效率。
3)短任务优先算法:改善短任务排在长任务后面轮询而造成响应时间和交互体验下降的办法就是短任务优先算法(Shorted Time to Completion First STCF)。这里开始出现优先级的概念。给予短进程最高优先级。
4)优先级调度算法:它的缺点是多所有的进程响应时间并不能很好的保证。不能将所有的进程优先级都设为最高,那样就毫无意义了。
5)混合调度算法:将所有进程分为不同的大类,每个大类为一个优先级。如果两个进程属于不同的大类,则处于高优先级大类的进程优先执行,如果两个进程处于同一个大类,则采用时间片轮询来执行。
6)保证调度算法:目的是保证每个进程占用的CPU的时间完全一样,每次给的时间片不一定要一样。
7)彩票调度算法:是一种概率调度算法。
8)实时调度算法。
4.时间轮询算法中如何选择合适的时间片?
根据不同的CPU,我们需要知道进行一次进程切换所带来的CPU消耗时间。假如每次进程切换需要消耗0.1ms的CPU时间,则选择10ms的时间片将浪费约1%的CPU时间在上下文切换上,20ms则将浪费约0.5%的CPU时间在上下文切换上。如果我们能承受这1%的CPU上下文切换时间,则这个时间片选择就是合理的。
5.时间轮询算法还需要考虑有多少进程在系统运行,如果运行的进程多,可能时间片就需要短点,不然,用户的交互体验又会变差,进程数少,时间片就可以适当长一点。
6.时间片的长度综合取决于进程切换的时间和进程数。
7.时间片轮询不一定一定比FCFS好。
9.STCF算法的缺陷:第一可能造成长程序长时间无法得到CPU时间而导致饥饿。第二,如何预测每个进程的执行时间?当很多进程时,预测变得很耗时,而且不同的CPU可能执行相同的进程时间还不同。
10.实时调度算法必须考虑每个任务必须在什么时间之前完成,而整个系统的响应时间和吞吐率放在其次。
11.实时调度算法常见的两种:最早截止任务优先(Earliest Deadline First EDF)和最短周期优先(Rate Monotonic Scheduling RMS).
12.实时性比较简单的理解:程序需要执行多长时间?程序所完成的任务的截止时间?程序必须在任务的截止时间之前执行完成。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。