摘要:*堆栈溢出*竞争条件*死锁读者可在网上阅读本文的第二部分,它将探讨下列问题:*时序问题*可重入条件在采用多任务实时设计技术的系统中,以上所有问题都相当普遍。堆栈溢出处理器使用堆栈来存储临时变量、向被调函数传递参数、保存线程“状态”,等等。如果系统不使用虚拟内存(换句话说,它不能将内存页面
* 堆栈溢出
* 竞争条件
* 死锁
读者可在网上阅读本文的第二部分,它将探讨下列问题:
* 时序问题
* 可重入条件
在采用多任务实时设计技术的系统中,以上所有问题都相当普遍。
堆栈溢出
处理器使用堆栈来存储临时变量、向被调函数传递参数、保存线程“状态”,等等。如果系统不使用虚拟内存(换句话说,它不能将内存页面转移到磁盘上以释放内存空间供其它用途),堆栈将固定为产品出厂时的大小。如果由于某种原因堆栈越出了编程人员所分配的数量范围,程序将变得不确定。这种不稳定可能导致系统发生严重故障。因此,确保系统在最坏情况下能够分配到足够的堆栈至关重要。
确保永不发生堆栈溢出的途径就是分析代码,确定程序在各种可能情况下的最大堆栈用量,然后检查是否分配了足够的堆栈。测试不大可能触发特定的瞬时输入组合进而导致系统出现最坏情况。
堆栈深度分析的概念比较简单:
1. 为每个独立的线程建立一棵调用树。
通信工程师备考资料免费领取
去领取