任务的堆栈是什么,它的用途是什么?- uC/OS-II

Mil*_*iez 2 embedded stack ucos microc

所以我正在阅读 MicroC/OS-II 的书,但在任务堆栈部分我找不到堆栈是什么,最重要的是 - 它用于什么。我知道这不是一件漫长而困难的事情,但我有点必须理解它。这本书只讲了如何设置堆栈大小和其他一些类似的东西。那么,有人可以用简短的语言向我解释 uC/OS-II 中的任务堆栈是什么以及它的用途是什么?

Cli*_*ord 5

通常在过程编程语言的上下文中,堆栈是存储函数/过程/子例程的局部变量和返回地址的地方(在“堆栈框架”中) - 调用深度越大,堆栈框架越多存储 - 每个尚未返回的函数一个。无论您是否使用诸如 MicroC/OS-II 之类的 RTOS,这部分都是正确的。

在单线程环境中,只需要一个堆栈,例如,这通常作为 C 运行时环境设置的一部分提供给您。在多线程环境中,每个单独的执行线程都需要一个堆栈,通常由您为每个线程分配堆栈空间,或者至少指定其长度。