• 首页
  • 中国
  • OK6410A 开发板 (八) 79 linux-5.11 OK6410A schedule总览

OK6410A 开发板 (八) 79 linux-5.11 OK6410A schedule总览

2023-11-01 3浏览
百检网是一家专业的第三方检测平台,汇聚众多拥有权威资质的第三方检测机构为你提供一站式的检测服务,做检测就上百检网。百检网让检测从此检测,一份报告全国通用,专业值得信赖。

__schedule 功能描述

__schedule

1.完成一些必要的检查, 并设置进程状态, 处理进程所在的就绪队列

2.调度全局的pick_next_task选择抢占的进程

2.1

如果当前cpu上所有的进程都是cfs调度的普通非实时进程, 则直接用cfs调度找到进程

如果无程序可调度则找到 idle进程

2.2

否则从优先级*高的调度器类sched_class_highest(目前是stop_sched_class)开始依次遍历所有调度器类的pick_next_task函数, 选择*优的那个进程

//本例有 dl -> rt -> fair -> idle

//支持smp 的会有stop_sched_class -> dl_sched_class -> rt_sched_class -> fair_sched_class -> idle_sched_class

3.context_switch 完成进程上下文切换

3.1 调用switch_mm_irqs_off,把虚拟内存从一个进程映射切换到新进程中

3.2 调用switch_to,从上一个进程的处理器状态切换到新进程的处理器状态。

这包括保存、恢复栈信息和寄存器信息

调度器与调度策略

level1 : 6种调度策略

SCHED_NORAML

SCHED_BATCH

SCHED_IDLE

SCHED_RR

SCHED_FIFO

SCHED_DEADLINE

level2 : 调度器类

CFS: 封装了 SCHED_NORAML SCHED_BATCH

RT: 封装了 SCHED_RR SCHED_RR

IDLE: 封装了 SCHED_IDLE

STOP:

DEADLINE:

调度时机

分两种情况

1.一般来说,直接调度就行了

2.但是有的会分为两步,先置位 need_sched , 然后再某个时机判断 need_sched,然后调度


百检网秉承“客户至上,服务为先,精诚合作,以人为本”的经营理念,始终站在用户的角度解决问题,为客户提供“一站购物式”的新奇检测体验,打开网站,像挑选商品一样简单,方便。打破行业信息壁垒,建构消费和检测机构之间高效的沟通平台