操作系统-进程调度算法
进程调度算法,一共有8种我这里只是简单来介绍下其中的几种!
这里说两个概念:
1.抢占式:运行状态不会终止,直到运行结束
2.非抢占式:当前运行状态可以被打断的,转到就绪态度,防止资源浪费。
先来先服务算法:本人理解就是谁先来,谁优先,根据先后顺序,按照进入系统的先后顺序,最简单的进程调度算法之一(非抢占式)。
偏正规:该算法算是最简单的一种调度算法,它既可用于作业调度,也可以用于进程调度。在进程调度中采用 FCFS 算法时,将选择最先进入就绪队列的进程投入执行。FCFS 算法属于非抢占调度方式,其特点时简单、易于实现,但不利于短作业和 I/O 型的作业运行。FCFS 算法很少作为进程调度的主算法,但常作为辅助调度算法。
介绍下上面的:周转时间,带权周转时间,平均周转时间,平均周转时间。
周转时间:完成时间-到达时间(列如P1进程:9-0=9);(驻留时间=周转时间)
带权时间:周转时间/运行时间(列入P2进程:16/10=1.6)
平均周转时间:周转时间/个数(9+16+20+49+57+60/6=35.166)
平均带权周转时间:带权周转时间/个数(1+1.6+3.33+2.45+2.59+7.5/6=1.66)
1. 周转时间是作业在进入系统开始,到结束时的时间差
2.带权周转时间是周转时间与运行时间之比,反应出这个作业长短,带权周转时间越大,这个进程越短,带权周转时间越小,进程作业越长。
比如上图P3的这个带权时间非常大,这个地方就展现了先来先服务的一个缺点。
------------------------------------------------------------------------------
先来先服务算法:
优点:简单,算法实现容易。
缺点:由于是根据先来先服务算法来的,对短作业进程 不友好。排在长作业后面的短作业进程需要等待很长的时间.
2.短作业优先算法(SJF shortest Job First)
参考最短的那个作业时间,优先调用作业时间最短的那个进程
意思就是说一个进程运行的时间,如果后面的进程都到了,那么选一个进程最短的运行,依次从最短到最长时间。
上下可以对比下
上面的平均周转时间是8s,
下面的平均周转时间9.25s.
P1运行完了时间是5,最下面P4已经到达了,因为他的到达时间也是5时。
依次是P2,P3运行(图片一中可能有错误,但是我说的就是这个意思)。
短作业优先算法的优点:1.拥有最短的平均时间。
缺点:1.对短作业有利,对长作业不利,容易产生“饥饿”现象。长作业得不到服务被“饿死”。
接下来介绍短进程优先算法的第二种(抢占式)称为
3.最短剩余时间算法:
这个是上面的进化版本,如果新的进程加入或者同类进程,他的运行时间小于当前进程的运行时间,那么就终止当前进程,转而运行时间短的进程。
这个意思就是:比如A运行8个小时,但是3个小时的时候B进来了,B运行4个小时,这个时候C是6小时到达,那么C运行,如果C运行多久以后,后面有进程到了那么久切断当前进程,转而其他进程
下面这张是正确的,上面那张有误
4.最高响应比算法(Highest Reponse Ratio First, HRRF)
高响应比算法是基于FCFS和SJF之间的一种算法,每次要调入的时候都选择响应比高的调入,都会去计算他们的响应比。公式如下
响应比=(运行时间+等待时间)/运行时间=周转时间/运行时间
响应比=1+(等待时间/运行时间)
相同等待时间,运行时间越短,越优先
相同运行时间,等待时间越长,也是越优先。。
后面还有4种,以后再写。。。。。