【9】Linux进程调度

1、基本调度模型

基本调度模型

  • 调度算法
  • 进程切换
  • 时钟中断

2、进程调度与时间片

进程调度:Linux通过一个进程到另一个进程的快速切换,达到表面上看来多个进程同时执行的效果
时间片:分时操作系统分配给每个正在运行的进程微观上的一段CPU时间

3、调度的主战场:就绪队列

3.1 Linux2.4以前内核调度

队列是一个单链表,init_task(0号进程PCB)为队头

  • 采取动态优先级,选择进程的依据就是剩余时间片counter的大小,寻找剩余时间片最长的就绪进程
  • 进程被创建时,counter = priority(0~40)
  • 进程运行过程中,counter不断减少,而priority(静态优先级)不变
  • count为0(时间片用完),发生调度
  • 如果所有就绪进程的时间片都用完了,重置所有进程的时间片:counter = counter/2 + priority (就绪进程时间片还是静态优先级priority,等待队列I/O进程时间片增大)
  • 用户可以通过系统调用改变policy、priority等

3.2 Linux2.6内核的O(1)调度算法

每CPU一个就绪队列,系统所有就绪进程首先经过负载均衡模块挂入各个CPU的就绪队列上,然后由主调度器和周期性调度器驱动该CPU上的调度行为,基于多级反馈队列算法,内核是抢占式调度,基本优化思路就是把原来就绪队列的单链表变成多个链表

Linux2.6内核的O(1)调度算法


3.3 目前内核的完全公平调度(CFS)-红黑树

CFS通过每个进程的虚拟运行时间(vruntime)来衡量哪个进程最值得被调度
CFS调度器总是选择红黑树最左边的叶子节点作为下一个运行进程

完全公平调度(CFS)-红黑树虚拟运行时间是通过实际运行时间和进程的权重计算

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值