linux进程调度

本博文主要从三个方面简单介绍下linux进程调度,调度时机,调度策略,调度步骤三个方面简单介绍下linux系统额进程调度

1 . 什么是调度

调度就是在一组可运行状态的进程中选择一个最合适的进程来执行,这个是调度程序所要完成的基本操作


2. 调度策略

SCHED_NORMAL(SCHED_OTHER): 普 通 的 分时 进程
SCHED_FIFO : 先 入 先出 的 实 时 进程
SCHED_RR : 时 间 片 轮转 的 实 时 进程
SCHED_BATCH: 批 处理 进程
SCHED_IDLE:  只 在 系统空 闲 时 才能 够 被调度执行 的


3.调度类

linux内核将上面的5种调度方式划分成两张调度类

调度 类 的 引 入 增强 了 内核 调度程序 的 可 扩展性 , 这 些类( 调度程序 模 块 ) 封装 了调度 策略 ,并将 调度 策略模 块 化 

CFS  调度 类 (在 在 kernel/sched_fair.c  中实 现 ) 用 于以 下 调度 策略 :

SCHED_NORMAL 、SCHED_BATCH 和 和 SCHED_IDLE 。
实 时 调度 类 (在 在 kernel/sched_rt.c  中实 现 ) 用 于以 下 调度 策略 :
SCHED_RR 和 和 SCHED_FIFO  策略 。

备注:struct sched_class 是调度类结构体 ,其中 pick_next_task : 选择下 一 个 要 运 行 的进程,调度策略在这个函数里面体现出来


4.调度时机

1 、 主 动式
在内核 中 直 接调 用schedule() 这个函数来实现进程调度。比如在下面这种情况需要主动式调度, 当 进程 需 要 等待资 源 等 而暂 时 停 止 运 行 时 , 会把 状态 置于 挂起(睡眠) ,并 主 动 请求 调度 , 让 出CPU 。

主 动 放 弃cpu 例:

current->state = TASK_INTERRUPTIBLE; //将进程设置为可中断状态,此时就不会被调度程序唤醒
schedule();


<

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值