操作系统学习-常见的CPU调度进程的策略

下面我们分别就单核和多核的情况加以分析:

1.单核:

1.1 FCFS (first come first service)先到先处理方式
顾名思义,这种调度方法就是CPU按照先到先处理的方式对进程进行处理,非抢占式
优点:简单,一般结合其他策略使用
缺点:平均等待时间较长,举例:三个进程 P1的cpu时间是24s,P2是3s,P3也是3s,这样P2和P3分别需要等待24s和27s才能得到运行

1.2 SJF(short job first)短作业优先
CPU时间短的进程优先被处理
优点:平均等待时间最短
缺点:CPU时间需要靠估算;CPU时间长的进程可能很久都运行不到

1.3优先级调度
按照进程的优先级进行调度,相同优先级按照FCFS调度,SJF是把时间当作优先级的调度方式
优先级定义方法:
a. 内部定义 - 按照CPU时间,内存要求,打开文件数量,平均I/O等系统参数进行定义优先级
b. 外部定义 - 政策性的定义,按照服务的性质,比如对外服务的进程优先级高于状态检测的进程
优点:重要的进程可以得到及时的处理
缺点:会出现饥饿问题,低优先级的进程可能永远得不到处理;解决方法是老化(aging),当一个进程超过一定时间按仍没有被处理,提高它的优先级

1.4时间轮转法调度
把CPU分成10~100ms的时间片,进程按照FCFS的方式调度,每当进程每次得到CPU后只能运行一个时间片,如果运行不完,换下一个,将进程的就绪队列当作循环队列。
关于时间片是10~100ms的原因:当时间片过大,就变成FCFS了;CPU切换进程上下文的时间是10us左右,当时间片过小,会导致效率很低
优点:不出会先饥饿,平均等待时间也不是很长
缺点:缺少对重要进程的优先处理

1.5多级队列调度
按照优先级将进程分为不同的队列,每个队列有自己的调度方法,高优先级的队列为空,低优先级的队列中的进程才能被运行
=> 系统进程 => FCFS
=> 交互进程 => SJF
=> 交互编译进程 => 优先级
=> 批处理进程 => 时间片
=> 学生进程 => FCFS
优点:低调度开销
缺点:不灵活

1.6多级反馈队列调度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wb0DaOWD-1657271682713)(https://img-blog.csdn.net/20180212100111548?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1eGluZ3J1aTRw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]
按照FCFS的方式,每个进程被调度的时候都在就绪队列1,被分配到一个大小为S1的时间片,如果其S1足够其运行结束,则离开队列,否则将其放入就绪队列2,依次例推。一般S1小于S2小于S3 (8ms,16ms,24ms),但是linux下是反过来的。这种调度方式需要考虑很多方面,比如队列数,升降进程所处的队列等等
优点:最为灵活,当前最为通用
缺点:比较复杂

2.多核的情况:
多核分为对称多处理器和为对称多处理器两种情况

2.1 对称多处理器:
每个核能力一致,此种情况又分为共享就绪队列和私有就绪队列两种情况,共享就绪队列选进程时要互斥,私有就绪队列时,需要均衡负载,linux提供push和pull操作,使核与核之间可以均匀其进程

2.2非对称(异构):
有一个核专门用来调度,这样效率比较低

3.linux提供nice命令来调整优先级

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值