ucos_ii 的任务堆栈大小

正如我们所知道的,操作系统在任务调度时,首先会先把运行任务的寄存器值压栈(保存现场),下次运行时先出栈(恢复现场)。我想请教一个问题:ucos_ii每个任务的堆栈只是用来... 正如我们所知道的,操作系统在任务调度时,首先会先把运行任务的寄存器值压栈(保存现场),下次运行时先出栈(恢复现场)。我想请教一个问题:ucos_ii每个任务的堆栈只是用来保存现场?还是除了保存现场,这个任务中的局部变量也在堆栈中分配?或者说任务栈的大小是和寄存器的大小相等,还是要大于寄存器的大小? 展开
 我来答
ch314156
2011-10-03 · TA获得超过4378个赞
知道小有建树答主
回答量:2036
采纳率:100%
帮助的人:1090万
展开全部
任务堆栈的大小 肯定是要大于 所有寄存器数量 因为任务堆栈还要保存局部变量 和 返回地址等
追问
为局部变量分配内存的机制是什么样的?
追答
比如:
unsigned char add(unsigned char a,unsigned char b)
{
unsigned char c;
c = a + b;
return c;
}

进入后a,b,c都是要入栈的,程序退出前a,b,c出栈。

说远一点,也许你用一些编译器调试时,发现函数的局部变量并没有入栈,这样的函数称为“不可重入性”,这样的程序是不能用在操作系统里的。就说你们多,你要是有问题我们再讨论
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式