大学生做兼职上什么网站好,天津海外seo,做电影网站的资源从哪里换,山东泰安特产1、两种纯软件的栈溢出检测方法
参考博客#xff1a;《freeRTOS的栈溢出检测机制》#xff1b;
2、纯硬件#xff1a;使用栈限制寄存器
2.1、工作逻辑分析 前提条件#xff1a;使用满减栈硬件上提供栈限制寄存器#xff08;用SP_limit表示#xff09;#xff0c;可以…1、两种纯软件的栈溢出检测方法
参考博客《freeRTOS的栈溢出检测机制》
2、纯硬件使用栈限制寄存器
2.1、工作逻辑分析 前提条件使用满减栈硬件上提供栈限制寄存器用SP_limit表示可以通过设置栈限制寄存器来告诉硬件可用栈空间的最低地址也就是知道了栈空间能使用的最后地址在每次申请栈空间也就是修改SP寄存器的值时判断SP是否小于SP_limit如果小于则说明发生栈溢出产生异常中断可在中断中进行处理
2.2、优缺点分析
优点 判断是否发生栈溢出由硬件完成速度快程序员不用太过担心栈溢出问题发生栈溢出会产生中断可以定位出发生栈溢出的位置 缺点 必须CPU要支持栈限制寄存器在多任务的系统中每个任务都有自己的栈空间所以在切换任务的“保存/恢复”现场中需要额外设置栈限制寄存器
3、软硬件结合
3.1、工作逻辑分析 将栈空间最后可用的一小段设置成不可写权限当SP指向被保护的栈空间时写该段地址空间会发生异常报错在RISC-V中内存保护机制被称为PMP(Physical Memory Protection)在ARM架构中被称为MPU(Memory Protection Unit)内存保护机制可参考博客《RISC-V架构——物理内存属性和物理内存保护》
3.2、优缺点分析
优点 巧妙使用硬件PMP机制来检查栈空间是否溢出可在栈溢出时发生异常中断方便定位出发生栈溢出的位置 缺点 PMP机制能设置的物理内存区域个数是有限的如果是多任务系统不能为每个任务的栈空间都设置PMP表项来保护如果切换任务时根据任务栈空间重复设置PMP表项会增加任务切换的开销能否修改已经设置的PMP表项这个要看芯片具体的硬件实现