关于操作系统中的stack

操作系统中的stack。
从freertos的手册中可以看到每个任务都需要有一个stack space。

Autosar的操作系统中配置也有同样的定义(和freertos的机制不同)。

这样做的必要性因为是多任务。任何一个task都可以被context switch发生时被打断,此时需要保存当前的函数调用的信息,比如函数的局部变量,
尤其是层层调用时,或者函数的局部变量的大小比较大时,有可能会发生stack overflow。

 中断发生时,在ISR任务中应该如何处理?

在autosar的OS中,强行地将中断分为两类中断。
个人认为这种分类不适合推广或者说并不具备普遍适用的意义。
因为对于MCU来说,中断不存在这种分类。这种强行地分类只是从用户对中断处理程序内部执行逻辑的角度去进行分析。

比如在linux内核中,由于linux不是硬实时的操作系统,那么中断发生时,在ISR中执行尽可能少的任务,发出一个信号,然后主要的工作推后处理。

posted @ 2022-08-16 16:26  panrui  阅读(42)  评论(0编辑  收藏  举报