进程的调度算法

1.先来先服务(FCFS)调度算法
比如有5个任务,放一个队列里面,谁先进去的谁先执行
在这里插入图片描述

2.短作业优先(SJF)调度算法
执行时间短的优先执行,但是这里有个小地方需要注意下,比如三个任务,【A,B,C】
这里短作业,调度是怎么知道谁执行时间短的呢?
先预估一下执行时间,预估了之后去执行,首先这里有个问题,是预估的时间和实际执行时间肯定是有差异的
执行的时候还有个地方需要注意,短作业是根据一个任务最后剩下多少执行时间来做优先调度处理
在这里插入图片描述

3.优先级调度算法
每一个任务都有优先级,优先级比较高的先执行,优先级低的后执行
一般情况下,对用户有感的优先级比较高,用户无感的优先级略低
在这里插入图片描述

4.高相应比优先调度算法
在这里插入图片描述

5.时间片轮转调度算法
一个队列中,存在多个进程,多个进程被分到了不同的时间片上,比如1秒钟,分为了200毫秒,30毫秒,等等这样拆分,拆分之后,给每一个进程分配对应的时间片再去执行,P1执行200毫秒,然后P2执行30毫秒
那么会导致一个结果,就是最后面的Pn,注定是要等前面的在时间片上执行完了,才执行
这里有一个问题,就是时间片是怎么分的?根据什么规则或者算法分的?怎么知道该给哪个进程分多少时间片最合适呢?
看下图所描述的:时间片决定因素是根据系统相应时间,就绪队列进程数量,系统处理能力来计算的
疑问:那么是否还有一个根据进程的历史执行时间来计算?比如,给一个进程分配了200毫秒时间片,但是他20毫秒就执行完了,那么这个再进行执行的时候,应该分配一个20~30之间的是否就足够了呢?
处理机切换频繁:因为你的进程划分到了不同的时间片执行,所以分配给一个时间片上的任务执行时间完了,会切换到另一个时间片执行,这里的切换都是基于【中断】来切换的,简单说就是上下文切换;
【中断】是一个【中断处理程序】,中断的时候,也是一段计算机指令在执行,整个任务所需要的条件都会被保存下来,然后等切回来的再执行,来回切换就会不断的执行【中断】程序,中断程序执行也会耗时的(虽然是毫秒级别)切的频繁反而会慢了
redis:缓存框架,它的底层只有一个进程,一个进程一个线程,绑定单个处理机,就不切换,不切换就避免了切换的开销,可以支持非常高的并发
##-----------------------------------------------------------------------------------------------------------------##
时间片轮转调度其实非常负责,这里只是简单的介绍
在这里插入图片描述

6.多级反馈队列调度算法
注意:之前的5个调度算法,队列都是一个,这个是多个队列
多级反馈队列调度,这个调度算法,有的会忽略掉优先级,因为这里会自动给你分配时间片,然后根据时间片+优先级分配第一,第二,第N个的队列,第一个队列里面肯定是时间片比较小的,如果没执行完,就给你分第二个队列了,然后在第二个队列在执行
问题:两个任务A和B,优先级都是1,时间片,A分配了10毫秒,B分配了100毫秒,那么A和B是否分配到了第一队和第二队?
个人理解:不会分配,因为都进来,是进入第一级队列,优先级高,时间片短的,肯定是在队列前面?也就是A和B,都在第一队列,但是B在A屁股后面执行,先执行A,如果第一队列中的A执行完了,B执行了100毫秒,没完,那么B进入第二队列,再去跑?
在这里插入图片描述
在这里插入图片描述

目前最高级的,是【多级反馈队列调度算法】
以上图片内容来自B站(B站学累了还能看看其他的,比如小姐姐)
内容来自mashibingjiaoyu,非本人整理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值