要想多个进程交替运行,操作系统必须对这些进程进行调度,这个调度也不是随即进行的,而是需要遵循一定的法则,由此就有了进程的调度算法。
一丶先来先服务调度算法
先来先服务(FCFS)
ps:名字就把意思安排的明明白白的,就是队列意思
二丶短作业优先调度算法
短作业(进程)优先调度算法(SJ/PF)是指对短作业或短进程优先调度的算法,该算法既可用于作业调度,也可用于进程调度。但其对长作业不利;不能保证紧迫性作业(进程)被及时处理;作业的长短只是被估算出来的。
阿攀大白话:
先做短期的作业,然后长期的作业,造成问题对短期作业的有好处,长期作业可能一直执行不到或时间太久!
三丶时间片轮转法
时间片轮转(Round Robin,RR)法的基本思路是让每个进程在就绪队列中的等待时间与享受服务的时间成比例。
在轮转法中,加入到就绪队列的进程有3种情况:
1.第一种是分给它的时间片用完,但进程还未完成,回到就绪队列的末尾等待下次调度去继续执行。
2.第二种情况是分给该进程的时间片并未用完,只是因为请求I/O或由于进程的互斥与同步关系而被阻塞。当阻塞解除之后再回到就绪队列。
3.第三种情况就是新创建进程进入就绪队列
四丶多级反馈队列
多级反馈队列调度算法则不必事先知道各种进程所需的执行时间,而且还可以满足各种类型进程的需要,因而它是目前被公认的一种较好的进程调度算法。
- 应设置多个就绪队列,并为各个队列赋予不同的优先级。
- 当一个新进程进入内存后,将它放入第一队列的末尾,按先进先出等待调度。如果它在一个时间片尚未完成,调度程序便将该进程转入下个队列的末尾,再同样地按先进先出等待调度执行;
- 仅当上一队列空闲时,调度程序才调度对应队列中的进程运行