Linux进程调度算法

进程调度算法

时间片轮转。

队列调度:同一优先级属于某个队列,但是不能跨越队列。

  • 服务高优先级队列,低优先级队列可能被饿死?
  • 低优先级队列自己优先级内轮转
  • 每个队列也有自己的调度策略

多级反馈队列调度算法

  • 进入系统,最高优先级
  • 当前时间没完成,强制降级(否则CPU进程欺骗),一旦完成某一层时间配额,就降低优先级
  • 经过一段时间S,重新洗牌,所有工作全加入最高优先级

单CPU算法

  • FIFO
  • 短作业优先
  • 最短剩余时间算法
    • 允许抢占
  • 最高响应比优先
    • 等待/执行时间
  • 公平共享
    • 用户调度

实时管理和调度,必须在DDL之前调度完成

强实时:必须完成 软实时:尽量但是不是必须完成

工控设备和硬件绑在一起的,前提是明确了每个任务的执行时间

  • 静态优先级调度

    • 周期安排优先级
    • 周期越短优先级越高
    • 执行周期最短的任务

    P1:e=20,p=50;e=35,p=100

  • 动态调度算法

    • EDF(EarLiest Deadline First)任务的优先级根据任务的截止时间分配,要抢占的人如果DDL在后面那就不能抢占
    • LLF最低松弛度优先算法
      • 还能等待/容忍/拖多长时间:松弛度=必须完成的任务DDL-本身还需要运行的时间-当前时间
      • 执行每个时间片后判断优先级
    • 优先级反置
      • 用我锁上的资源的任务里面优先级最高的优先级拿来——优先级天花板协议
        • 不管是否发生等待,优先级,怕的就是比最高优先级低居然比高优先级先执行
    • Linux或者自己的小系统能不能分配专门用来抢占的时间
    • 发生了变化,会有什么问题
      • 扩展?

超线程处理器可以做并发

NUMA(非一致内存访问系统)

  • 多队列多处理器调度
    • 负载均衡问题:偷(迁移),多核处理器的问题
      • 什么时机去检查?但是检查也会去消耗资源,预测的问题
Linux的O(1)调度策略

O(n)->O(1)->CPS

  • O(1),spinlock不释放资源,大概率很快拿到资源:1个问一下1000多个就慢了,Global runnable queue Scheduler logic
  • O(1)要有很好的调度质量
    • 每个优先级要有一个队列

优先级、时间片

  • 从技术上讲,军队的技术往往是最先进的

参考资料:

https://www.cnblogs.com/zhaoyl/archive/2012/09/04/2671156.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值