【技术实现步骤摘要】
一种基于共享栈的任务分配方法、装置、计算机设备
[0001]本专利技术涉及通信
,特别是涉及一种基于共享栈的任务分配方法、装置、计算机设备和存储介质。
技术介绍
[0002]当前市面上的嵌入式操作系统,如FreeRTOS、RT
‑
Thread等,在创建线程时,会为每一个线程分配一个栈空间,用以保存线程运行时的现场和临时变量。如图1所示,不同线程运行时,会修改SP指针,使其指向本线程栈的位置。
[0003]现有的线程运行方式,线程栈未使用的部分不能够再利用。当操作系统运行图1中未标识的TaskC时,TaskA和TaskB的栈处于如图1所示状态,这两个线程栈的free部分,该部分还未被线程使用到,但是其他线程也无法使用这部分内存,造成内存浪费。其次,线程栈的大小设置困难,如果想要最大可能的节省内存,就需要保证线程运行后,线程使用的最大栈空间刚好达到分配的栈空间,但是即使经过充分的测试,也不敢保证测试得到的最大栈空间使用是测试得到的值,还需要留有一定的余量,而且,随意增加一些运算代码或是函数调用,都 ...
【技术保护点】
【技术特征摘要】
1.一种共享栈的任务分配方法,其特征在于,包括:建立共享栈,以及生成第一任务;控制所述第一任务运行于所述共享栈上;获取到预设的第一堆内存信息;将所述第一任务的栈数据备份至第一堆内存信息对应的第一堆内存;将第二任务的栈数据恢复至所述共享栈,控制所述第二任务运行于所述共享栈上。2.根据权利要求1所述的共享栈的任务分配方法,其特征在于,其中,所述第一任务包括初始的栈信息,所述控制所述第一任务运行于所述共享栈上包括:将第一任务的初始栈信息复制到共享栈上,并释放初始栈信息对应的堆内存,控制所述第一任务运行于所述共享栈上。3.根据权利要求1所述的共享栈的任务分配方法,其特征在于,所述将所述第一任务的栈数据备份至第一堆内存信息对应的第一堆内存,包括:在线程切换时,根据第一任务的任务控制部件TCB中的栈描述信息,获取指定大小的第一堆内存对应的第一堆内存信息;根据所述堆内存信息从所述共享栈中将栈数据备份到指定大小的第一堆内存中;修改第一任务中TCB的栈描述信息。4.根据权利要求1所述的共享栈的任务分配方法,其特征在于,所述将第二任务的栈数据恢复至所述共享栈,控制所述第二任务运行于所述共享栈上,包括:将第二任务的栈数据恢复至所述共享栈,释放第二任务的备份数据,修改第二任务中TCB的栈描述信息,控制所述第二任务运行于所述共享栈上。5.根据权利要求1所述的共享栈的任务分配方法,其特征在于,所述方法还包括:控...
【专利技术属性】
技术研发人员:林家俊,
申请(专利权)人:芯翼信息科技南京有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。