买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:江苏领储宇能科技有限公司
摘要:本发明公开一种采用动态管理策略的栈空间任务分配方法,分配方法步骤如下:Systick中断处理;任务选择;动态管理上文大小;判断是否为首次申请;计算零拷贝阈值;计算零拷贝阈值公式;判断任务栈使用情况;动态申请任务栈内存;拆分原任务栈内存;挂起任务;处理下文内存;释放下文内存;通过判断下文任务栈的内存大小与原任务栈内存大小是否一致,来确定动态管理还是静态管理,这种动态管理策略的栈空间任务分配方法通过对内存管理的优化,提高了系统的运行效率、稳定性和资源利用率,对于需要高性能和高可靠性的嵌入式系统和实时操作系统具有重要的应用价值。
主权项:1.一种采用动态管理策略的栈空间任务分配方法,其特征在于:分配方法步骤如下:步骤1、Systick中断处理在CPU产生systick中断;步骤2、任务选择操作系统根据自身配置以及任务的优先级选择即将要运行的任务;步骤3、动态管理上文大小在可悬起中断或系统软中断中判断上文大小进行动态管理;步骤4、判断是否为首次申请;步骤5、计算零拷贝阈值如果拷贝内存小于等于1024字节,则进入步骤6,计算零拷贝阈值,如果首次拷贝的内存超过1024字节,则根据主频频率进行选择,如下所述;对于主频频率低于20MHz或拷贝内存超过10240字节的,自动申请1024字节数据进行零拷贝阈值计算,进入步骤6,完成计算后释放,如果申请内存失败,则直接使用零拷贝方式,进入步骤7;对于主频频率高于等于20MHz且小于等于50MHZ的,如果拷贝内存不超过5120字节的,直接使用原数据进行零拷贝阈值计算,进入步骤6,如果拷贝内存超过5120字节的,则直接使用零拷贝方式,进入步骤7;对于主频频率高于50MHz的,直接使用原数据进行零拷贝阈值计算,进入步骤6;步骤6、计算零拷贝阈值公式根据公式THD=L*F2*N-M*F+2*n-m*f计算零拷贝阈值,其中,L为数据大小,F为系统主频,f为操作系统调度频率,F和f单位为Hz,m为内存拷贝前时间戳读取的systick计数值,M为systick中断计数值,n为内存拷贝后时间戳读取的systick计数值,N为systick中断计数值;上述零拷贝阈值根据系统性能计算,确保在操作系统的调度周期内节省内存的流程能够执行完成,拷贝前后systick计数差值为N-M*Ff+n-m,以操作系统调度周期为单位的话,所花费的时间ts为[N-M*Ff+n-m]reload*T,其中操作系统调度周期为T=1f,systick重载值reload=Ff,简化后t为N-Mf+n-mF,根据t小于等于T,N-Mf+n-mF≤1f,然而,考虑到除了内存拷贝的操作,还有其余代码流程操作,本发明限定所花费的最多时间为T2,即N-Mf+n-mF≤12f;在此基础上量化出可拷贝的内存以供流程判断,为此需要通过初始化测量得出相应数据,即通过首次拷贝数据时进行量化测量,即测量出首次对于拷贝内存小于等于1024字节的数据L字节进行拷贝所花费的时间,首次的判断条件为零拷贝阈值大小为零,通过上述公式计算出t的时间,即可得出在一个操作系统调度周期内可拷贝的数据大小为L*Tt,此大小按照最终判断公式N-Mf+n-mF≤12f计算需要乘以12,即为零拷贝阈值大小THD=L*T2t=L*F2*N-M*F+2*n-m*f,获取该阈值后将该值更新至零拷贝阈值大小中以便后续流程使用;内存管理的快速返回申请结果可以判断空闲未使用的内存大小是否满足需要申请的动态任务栈大小,并且将系统主频与需要内存管理机制相匹配,以及根据DMA状态,来判断使用DMA搬运还是直接代码拷贝的方式;步骤7、判断任务栈使用情况判断任务栈实际使用大小是否满足零拷贝阈值大小,如果小于等于零拷贝阈值大小,则进入步骤8,如果大于零拷贝阈值大小,则进入步骤9;步骤8、动态申请任务栈内存根据硬件配置和LRU算法选择是否使用压缩方式计算任务栈实际使用大小,根据计算结果调用非阻塞接口重新申请任务栈内存,将重新申请的任务栈作为新任务栈,然后根据DMA状态选择使用DMA的方式或者直接将原任务栈的实际使用内容搬运或者拷贝至新任务栈,释放原任务栈内存,然后将新任务栈内存节点的信息更新至进入步骤10;步骤9、拆分原任务栈内存通过零拷贝的方式,拆分原任务栈的内存,重新更新原任务栈的内存节点,将原任务栈的内存节点中的大小改为上文实际使用的大小,将剩余未使用的内存重新分配内存节点并挂载到空闲内存链表上,然后将新任务栈内存节点的信息更新至该任务控制块;步骤10、挂起任务将上文任务挂起,完成内存从低效利用到高效利用的转换;步骤11、处理下文内存根据内存链表和任务控制块判断下文内存大小是否为任务栈申请大小,如果下文大小为任务栈申请大小,则直接使用下文内存地址作为任务栈地址,否则根据之前是否使用压缩判断是否进行解压缩,计算重新申请任务栈所需内存大小,根据DMA状态选择使用DMA的方式或直接将下文内容搬运或者拷贝至新任务栈地址内;步骤12、释放下文内存搬运或者拷贝完成后,采用特殊内存管理线程释放下文内存地址,将新任务栈的信息更新至该任务的任务控制块,同时开始执行下文任务,完成内存从高效利用到释放使用的转换。
全文数据:
权利要求:
百度查询: 江苏领储宇能科技有限公司 一种采用动态管理策略的栈空间任务分配方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。