操作系统--进程调度的有关问题(1)

来源:互联网 发布:电气控制设计软件下载 编辑:程序博客网 时间:2024/06/02 19:41
1,进程调度追求的目标是什么?
    CPU的调度就是要达到极小化平均响应时间、极大化系统吞吐率、保持系统各个功能部件均处于繁忙状态和提供某种貌似公平的机制。
    ①:极小化平均响应时间:就是极小化用户发出的指令和看到结果之间所花费的时间,即减少平均等待的时间,这和系统、硬件的质量有关。
    ②:极大化系统吞吐率:就是在单位时间内,尽可能多的完成程序的计算。即整个系统的运行效率。
    ③:保持系统各个功能部件均处于繁忙状态:因为计算机的资源是极其昂贵的,所以要尽可能的使各个部件处于工作状态。
    
2,程序使用CPU的模式有哪几种?各自有什么样的特点?
    ①:CPU导向(CPU-bound)或者计算机密集型程序
            特点就是长计算,短输入。这种程序使用CPU的时间大大多于用在输入输出上的时间,者计算机密集型程序通常使用在科学计算方面,高精度计算。
    ②:I/O导向(I/O-bound)或者输入输出密集型程序
            与CPU导向相反,这种程序大部分的时间都使用在输入和输出上,I/O操作后,即进行短暂的执行操作,比如PPT,还有游戏等。
    ③:平衡型程序
            特点就是I/O的操作时间和CPU所使用的时间相对平衡,既有长时间的执行,又有长时间的输入输出,比如常见的网页浏览等。
    
3,简要的说明几种调度算法(调度策略)?
    ①:先来先服务调度算法
            这是一个非常公平但不是最优化的算法,非抢占式原则,即一个程序一旦启动,就要一直运行到结束,如果运行期间一旦被其他程序抢占,则破坏其原则。
            但其缺点,可想而知,其后程序等待时间过长。例如:如果使用先来先服务调度算法,第一个程序运行时间是100秒,第二个程序运行时间1秒,
            则,第二个程序需要等待100秒后执行,这样算来,平均运行时间就是100.5秒,如果使用抢占式,第二个程序先运行,等待一秒后,第一个程序执行,
            则平均运行时间是50.5秒。显然先来先服务调度算法不是最好最优的算法。
    ②:时间片轮转算法
            时间片轮转算法是对先来先服务调度算法的一个改进,但也不是最优的算法,例如,每1秒进行进程的调换执行,第一个程序运行时间100秒,第二个程序运行1秒,
            在时间片轮转算法中,第二个程序可以很快被执行。但是值得注意的是,时间片该设置多大才合适?如果时间片设置的长度大于程序运行所花费的时间,则完全
            退化先来先服务调度算法。所以设置时间片的大小,值得商榷。
    ③:短任务优先算法
            短任务即表示运行的时间较短,具体的来说,短任务优先算法中短任务的优先级比长任务高,系统总是会让优先级高的先运行。
            短任务优先算法分为:抢占式和非抢占式。非抢占式短任务优先算法就是让已经在CPU上执行的任务先执行完毕,后在候选的选择最短执行时间的程序来执行。
            抢占式短任务优先算法就是每进来一个新的进程,就重新检查谁的运行时间最短,检查完毕,则运行最短时间的进程。
            在之前的算法当中,这个算法是最优化的。但是可能会导致长进程一直无法运行。导致不平等。
    ④:优先级调度算法
            优先级调度算法就是给每个进程赋予一个优先级 ,在每次切换优先级的时候,总是给优先级最高的先执行。
            短任务优先算法本身就是一种优先级调度算法,只不过给时间短的任务赋予最高的优先级。
            但是出现的问题是:如果每个进程都赋予最高的优先级,则无法保证哪个进程先执行,导致混乱。
    ⑤:混合调度算法
            混合调度算法就是将上面几个算法集中,合并他们的优点,摒弃缺点。
            原理就是将所有进程分为不同的打雷,每个大类为一个优先级。
            如果每个进程处于不同的大类,则处于高优先级大类的进程优先执行;
            如果两个进程处于同一个大类,则采用时间片轮转来执行。