目录
堆栈使用量测量
在学习任务的切换原理课时中,我们了解到需要为什么配备单独的栈空间用于存储任务的运行状态。同时我们也知道,栈空间也用于局部变量,函数调用时传递的参数。通常情况下,栈的空间是有限的,所以我们要采取方式对使用量进行测量,避免栈溢出破坏其它任务数据或内核数r。
本课时就是要介绍这样一种测试机制。
主要内容
测量原理非常简单,如下图所示。
用更形象的说法来表示,可以这样看:
- 首先我们将栈的整个空间“打扫干净”,即初始化为0;
- 任务运行时,任务对栈的使用总是从某个起始位置向某个方向前进或回退,而不是随意使用任意单元。
- 测量时,我们只需要从另一端开始检查,检查干净的区域有多大(即值为0的单元数),这个大小就是未使用的堆栈大小,然后用整个空间大小减去,即可得使用大小。