调度和调度算法
调度是操作系统的基本功能。进程调度是将CPU的执行时间根据一定的算法分配给进程,是多道程序运行的根本。调度算法的选择影响着CPU的使用效率和用户进程的执行。
【调度类型】:
1)高级调度:也称作业调度,它决定将外存上后备队列中的哪些作业调入内存。因此可以控制多道程序的道数。
2)中级调度:也叫对换调度,中级调度是为了使内存中同时存放的进程数目不至于太多,或者暂时不能运行的进程不再 占用内存,有时需要把某些进程从内存中移到外存中,以减少多道程序的数目。特别是在采用虚拟存储技术的系统中 或分时系统中。引入中级调度的主要目的是为了提高内存的利用率和系统吞吐量。它实际上就是存储器中的对换功能。
3)低级调度:进程调度,决定那个进程获得处理机,低级调度的使用频率非常高,低级调度是操作系统的基本调度,在 操作系统中必须配置这种调度
【进程调度方式】:
1)不可剥夺式:(非抢占式)一旦把处理机分配给某个进程,该进程将一直执行下去,直到运行完毕或因某种原因不能运行,才把处理机分配给其它进程,决不允许其它进程强占正在运行进程占有的处理机。
2)可剥夺方式:(抢占式)允许一个进程按照某种原则,抢占其它进程占有的处理机。抢占采用优先权原则的比较多,也就是说,如果一个进程比正在运行进程的优先级高,则它可以抢占处理机而运行。
不可剥夺方式实现简单,系统开销少,它难于满足紧急任务的要求,故不适于要求严格的实时系统。
【进程调度的时机】:
1)进程退出:当进程退出时,调度新进程运行,若此时没有就绪进程,由操作系统提供空转进程。
2)进程阻塞:当进程由于某种原因阻塞时,调用另一个进程运行。
3)时钟中断:可能因为当前进程的时间片到了,而调用其他进程。
4)中断发生
5)新进程创建:新进程优先级可能高于正在运行的进程,在抢占式方式下,进程调度决定是否让新进程运行。
进程的运行时间:
[周转时间]从进程提交到进程完成的时间间隔(包括一切因其他原因而等待的时间)
[平均周转时间] (Ti表示每个进程的周转时间)
[带权周转时间](Tsi 表示进程实际占用处理机时间)
[平均带权周转时间]
调度算法:
【先来先服务调度算法】(First Come First Served FCFS)
是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是 从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪 队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机, 使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。
特点:有利于长作业,不利于短作业,有利于处理机繁忙作业,不利于IO繁忙作业。
【短作业(进程)优先调度算法】(Shortest Job First SJF)
是指对短作业或短进程优先调度的算法。它们可以分别用于作业调度和进程调度。短作业优先(SJF)的调度算法是从后备 队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程优先(SPF)调度算法则是从就 绪队 列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻 塞放弃处理机时再重新调度。
特点:对长作业或进程不利,没有考虑进程或者任务的紧迫程度,有可能导致长作业“饿死”,运行时间为估计值不准确。
【时间片轮转调度算法】
系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU 分配给队首进程,并令其执行一个时间 片。时间片的大小从几ms 到几百ms。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信 号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执 行一个时间片。这样就可以保证就绪队列中的所有进程在一给定的时间内均能获得一时间片的处理机执行时间。换言之, 系统能在给定的时间内响应所有用户的请求。
特点:对IO频繁进程不利因为通常用不完一个时间片就阻塞了,等待IO完成后又要像其他进程一样排队
(改机的时间片轮转法:为进入IO的进程建立一个专门的辅助队列,调度是辅助队列优于就绪队列)
【优先权调度算法】
为了照顾紧迫型作业,使之在进入系统后便获得优先处理,引入了最高优先权优先(FPF)调度算法。此算法常被用 于批 处理系统中,作为作业调度算法,也作为多种操作系统中的进程调度算法,还可用于实时系统中。当把该算法 用于 作业调度时,系统将从后备队列中选择若干个优先权最高的作业装入内存。当用于进程调度时,该算法是把处 理机 分配给就绪队列中优先权最高的进程。
[非抢占式优先权算法]
在这种方式下,系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成;或因发生 某事件使该进程放弃处理机时,系统方可再将处理机重新分配给另一优先权最高的进程。这种调度算法主要用于批处理系 统中;也可用于某些对实时性要求不严的实时系统中。
[抢占式优先权调度算法]
在这种方式下,系统同样是把处理机分配给优先权最高的进程,使之执行。但在其执行期间,只要又出现了另一个其优先 权更高的进程,进程调度程序就立即停止当前进程(原优先权最高的进程)的执行,重新将处理机分配给新到的优先权最高 的进程。因此,在采用这种调度算法时,是每当系统中出现一个新的就绪进程i 时,就将其优先权Pi与正在执行的进程 j 的优先权Pj进行比较。如果Pi≤Pj,原进程Pj便继续执行;但如果是Pi>Pj,则立即停止Pj的执行,做进程切换,使 i 进程投入执行。显然,这种抢占式的优先权调度算法能更好地满足紧迫作业的要求,故而常用于要求比较严格的实时系 统中,以及对性能要求较高的批处理和分时系统中。