【TencentOS tiny】深度源码分析(2)——调度器
温馨提示:本文不描述与浮点相关的寄存器的内容,如需了解自行查阅(毕竟我自己也不懂) 调度器的基本概念 TencentOS tiny 中提供的任务调度器是基于优先级的全抢占式调度,在系统运行过程中,当有比当前任务优先级更高的任务就绪时,当前任务将立刻被 切出 ,高优先级任务 抢占 处理器运行。 TencentOS tiny 内核中也允许创建相同优先级的任务。相同优先级的任务采用时间片轮转方式进行调度(也就是通常说的分时调度器),时间片轮转调度仅在当前系统中 无更高优先级就绪任务 的情况下才有效。 为了保证系统的实时性,系统尽最大可能地保证高优先级的任务得以运行。任务调度的原则是一旦任务状态发生了改变,并且当前运行的任务优先级小于优先级队列中任务最高优先级时,立刻进行任务切换(除非当前系统处于中断处理程序中或禁止任务切换的状态)。 调度器是操作系统的 核心 ,其主要功能就是 实现任务的切换 ,即从就绪列表里面 找到 优先级最高的任务,然后去 执行 该任务。 启动调度器 调度器的启动由 cpu_sched_start 函数来完成,它会被 tos_knl_start 函数调用,这个函数中主要做两件事,首先通过 readyqueue_highest_ready_task_get 函数获取当前系统中处于最高优先级的就绪任务,并且将它赋值给指向当前任务控制块的指针 k_curr_task