先来先服务调度算法

先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。采用FCFS算法,每次从后备队列中选择一个或多个最先进入该队列的作业,将他们调入内存,为他们分配资源,创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。

短作业优先的调度算法

短作业(进程)优先调度算法SJF,是指对短作业或短进程优先调度的算法。它们可以分别用于作业调度和进程调度。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程优先(SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。

优先级调度算法

该算法又称为优先权调度算法,他既可以用于作业调度,又可用于进程调度。该算法中的优先级用于描述作业运行的紧迫程度。

两种类型:

非剥夺式(非抢占式)优先级调度算法。当一个进程正在处理上运行时,即使有某个更为重要或紧迫的进程进入就绪队列,仍然让正在进行的进程继续运行,直到由于其自身原因而主动让出处理机(任务完成或等待事件),才把处理机分配给更为重要或紧迫的进程。
剥夺式(抢占式)优先级调度算法。当一个进程正在处理机上运行时,若有某个更为重要或紧迫的进程进入就绪队列,则立即暂停正在运行的进程,将处理机分配给更重要或紧迫的进程。
两种优先级:

静态优先级。优先级是在创建进程时确定的,且在进程的整个运行期间保持不变。确定静态优先级的主要依据有进程类型、进程对资源的要求、用户要求。
动态优先级。在进程运行过程中,根据进程情况的变化动态调整优先级。动态调整优先级的主要依据有进程占有 CPU 时间的长短、就绪进程等待 CPU 时间的长短。
一般来说,进程优先级的设置有下面几点原则:

系统进程 > 用户进程。系统进程作为系统的管理者,理应拥有更高的优先权。
交互型进程 > 非交互型进程。与用户进行交互的进程需要被优先处理,即要有更高的优先级。
I/O型进程 > 计算型进程。频繁使用 I/O 设备的进程称为 I/O 型进程,I/O 设备的处理速度要比 CPU慢很多,所以将 I/O 型进程的优先级设置得更高,就有可能让 I/O 设备尽早开始工作,进而提升系统的整体效率。

高响应比优先调度算法 (HRRN)
高响应比优先调度算法(Highest Response Ratio Next)是一种对CPU中央控制器响应比的分配的一种算法。HRRN是介于FCFS(先来先服务算法)与SJF(短作业优先算法)之间的折中算法,既考虑作业等待时间又考虑作业运行时间,既照顾短作业又不使长作业等待时间过长,改进了调度性能。

响应比=作业周转时间/作业处理时间=(作业处理时间+作业等待时间)/作业处理时间=1+(作业等待时间/作业处理时间)
等待时间=最后一个的提交时间-该作业到达的时间
作业执行规则,响应比高的先执行
周转时间=完成时间-提交时间

例题
作业号 提交时间 执行时间 完成时间 周转时间
p1 10.0 2.0
p2 10.2 1.0
p3 10.4 0.5
p4 10.5 0.3
先执行的是第一个提交作业,然后其余的作业再用响应比来判断执行顺序
先执行p1 :

作业号 提交时间 执行时间 完成时间 周转时间
p1 10.0 2.0 12.0 2.0
p2 10.2 1.0
p3 10.4 0.5
p4 10.5 0.3
设响应比为R
此时 R(p2)=1+((12.0-10.2)/1.0)=2.8
R(p3)=1+((12.0-10.4)/0.5)=4.2
R(p4)=1+((12.0-10.5)/0.3)=6
所以 执行p4:

作业号 提交时间 执行时间 完成时间 周转时间
p1 10.0 2.0 12.0 2.0
p2 10.2 1.0
p3 10.4 0.5
p4 10.5 0.3 12.3 1.8
设响应比为R
此时 R(p2)=1+((12.3-10.2)/1.0)=3.1
R(p3)=1+((12.3-10.4)/0.5)=4.8
所以 再执行p3:

作业号 提交时间 执行时间 完成时间 周转时间
p1 10.0 2.0 12.0 2.0
p2 10.2 1.0
p3 10.4 0.5 12.8 2.4
p4 10.5 0.3 12.3 1.8
因此最后执行p2:

作业号 提交时间 执行时间 完成时间 周转时间
p1 10.0 2.0 12.0 2.0
p2 10.2 1.0 13.8 3.6
p3 10.4 0.5 12.8 2.4
p4 10.5 0.3 12.3 1.8
此算法作业的平均周转时间为:(2.0+3.6+2.4+1.8)/4=2.45