C 自由实时操作系统中调度器的实现

C 自由实时操作系统中调度器的实现,c,scheduler,freertos,C,Scheduler,Freertos,我需要一些帮助。我有一个项目要为freeRTos构建一个具有不同算法的替代调度器,并尝试在操作系统中替换它 我的问题是: 在正常时间有可能吗?(大约几个月) 如何在整个操作系统代码中识别调度程序的代码 考虑到FreeRTOS只有几千行代码,在几个月内肯定是可能的。当然,如果您知道如何编写调度程序 然而,FreeRTOS甚至没有真正的调度器。它维护一个可运行任务的列表,在每个调度点(从中断或显式产量返回),它从该列表中获取最高优先级的任务。鉴于FreeRTOS只有几千行代码,在几个月内肯定是可能的

我需要一些帮助。我有一个项目要为freeRTos构建一个具有不同算法的替代调度器,并尝试在操作系统中替换它

我的问题是:

  • 在正常时间有可能吗?(大约几个月)

  • 如何在整个操作系统代码中识别调度程序的代码


  • 考虑到FreeRTOS只有几千行代码,在几个月内肯定是可能的。当然,如果您知道如何编写调度程序


    然而,FreeRTOS甚至没有真正的调度器。它维护一个可运行任务的列表,在每个调度点(从中断或显式产量返回),它从该列表中获取最高优先级的任务。

    鉴于FreeRTOS只有几千行代码,在几个月内肯定是可能的。当然,如果您知道如何编写调度程序


    然而,FreeRTOS甚至没有真正的调度器。它维护一个可运行任务列表,在每个调度点(从中断或显式产量返回),它从该列表中获取最高优先级的任务。

    要为问题2添加更多答案:

    任务控件位于tasks.c、portable/port中。c包含上下文开关


    看看医生;给定的函数名给出了它定义的文件。他们也能去的地方真的不多。使用grep:)

    为问题2添加更多答案:

    任务控件位于tasks.c、portable/port中。c包含上下文开关


    看看医生;给定的函数名给出了它定义的文件。他们也能去的地方真的不多。使用grep:)

    如果您有这些问题,那么您可能不应该编写调度程序,特别是对于实时操作系统。我必须备份@Vald Lazarenko-尽量不要尝试这样做。对内核进行黑客攻击将需要一个广泛的测试阶段,以确保您所做的一切不会破坏其他东西。每次你的代码不起作用时,你都会对你的操作系统黑客有一个唠叨的怀疑。FreeRTOS已经非常灵活了-它可以执行线程或协同例程,并且拥有所有常用的同步机制来控制/通信/在线程之间发送信号-您不能用这些机制构建什么?如果您有这些问题,那么您可能不应该编写调度程序,特别是对于实时操作系统,我必须备份@Vald Lazarenko-尽量不要尝试这样做。对内核进行黑客攻击将需要一个广泛的测试阶段,以确保您所做的一切不会破坏其他东西。每次你的代码不起作用时,你都会对你的操作系统黑客有一个唠叨的怀疑。FreeRTOS已经相当灵活了——它可以执行线程或协同例程,并且拥有所有常用的同步机制来控制/通信/在线程之间发送信号——你不能用这些来构建什么?尽管如此,整个过程都集中在代码中的某个地方?我的意思是,在代码中有一个地方,可以处理所有的任务并为它们分配内存,我可以根据自己的需要进行更改吗?要改变ALGO,它不会采取最高,但考虑其他限制?或者,这些内存分配分散在操作系统中的许多地方,这意味着我们需要挖掘任何一段代码来找到并更改分配内存的标准?非常感谢,对于这个复杂的问题,很抱歉,这非常重要,让我有点紧张……但是,整个事情都集中在代码中的某个地方?我的意思是,在代码中有一个地方,可以处理所有的任务并为它们分配内存,我可以根据自己的需要进行更改吗?要改变ALGO,它不会采取最高,但考虑其他限制?或者,这些内存分配分散在操作系统中的许多地方,这意味着我们需要挖掘任何一段代码来找到并更改分配内存的标准?非常感谢,很抱歉这件事太复杂了,这件事很重要,让我有点紧张。。。