LS
这是TINY OS
每个任务有独立的堆栈,不存在所谓的公有堆栈
TINY OS为了RAM节省空间,会移动堆栈,将所有空闲的RAM分配给当前正在运行的任务当作堆栈,其实就是时间换空间的做法
?STACK就是栈底,也就是第一个任务TASK0的栈底,也是KEIL分配的,这不是什么公有堆栈
为什么说OS下精确定位堆栈安全是扯蛋呢
首先OS下程序调用更复杂,比如用户系统函数进行任务切换可能经过很多层函数才最终实现切换
其次一般OS不提供源代码,多少层调用未知
再其次如果OS支持抢先,情况更糟糕,任务被抢先要占用很多堆栈...
再者局部变量都是保存在任务堆栈中,占用堆栈,调用哪个函数,那么局部就保存在任务堆栈中,不可能限制它调用什么函数
其它原因也很多,不一一列举了
以上不是专门针对TINY OS而言
谈RTOS,我看冷漠连门都没入
.... |