任务栈的管理方法及电子设备与流程
- 国知局
- 2024-09-05 14:42:46
本技术涉及终端,尤其涉及一种任务栈的管理方法及电子设备。
背景技术:
1、电子设备可以创建并运行各种任务以实现对应的功能。
2、通常,电子设备在创建任务后,可以将内存空间分配给各任务,以形成对应于各任务的任务栈。任务栈用于存储电子设备在运行对应的任务时产生的临时数据和上下文信息。
3、但是,若任务栈空间过小,电子设备在运行该任务的过程中会导致程序崩溃。若任务栈空间过大,会造成电子设备的内存空间的浪费。
技术实现思路
1、本技术实施例提供一种任务栈的管理方法及电子设备,能够动态调节任务栈,避免由于发生栈溢出事件而导致任务的执行出现异常的问题。
2、第一方面,本技术实施例提供了一种任务栈的管理方法,该方法可以应用于电子设备。该方法中,响应于第一任务的创建,确定对应于第一任务的第一任务栈。在检测到第一任务栈发生栈溢出事件的情况下,确定第一数值。其中,第一数值基于电子设备运行第一任务过程中使用的任务栈的历史最大值与电子设备当前运行第一任务所需的任务栈的大小值确定。基于第一数值,调整第一任务栈。
3、在本技术的方法中,电子设备在执行第一任务时,可以实时检测对应于第一任务的第一任务栈是否发生栈溢出事件。若检测到第一任务栈发生栈溢出事件,可以动态调整第一任务栈,既避免了由于发生栈溢出事件而导致任务的执行出现异常,又避免了过大的任务栈空间会占用过多的内存空间,从而造成电子设备的内存空间浪费的问题。
4、结合第一方面,在一种可能的设计中,在检测到调整后的第一任务栈发生栈溢出事件的情况下,基于电子设备当前运行第一任务所需的任务栈的大小值,对调整后的第一任务栈进行调整。
5、在该方案中,若第一任务栈已经被调整后,再次发生针对于第一任务栈的栈溢出事件。电子设备无需获取电子设备运行第一任务过程中使用的任务栈的历史最大值,而是基于当前运行第一任务所需的任务栈的大小值即可调整第一任务栈,提升调整效率。
6、结合第一方面,在一种可能的设计中,在检测到第一任务栈发生栈溢出事件的情况下,将电子设备运行第一任务过程中使用的任务栈的历史最大值与电子设备当前运行第一任务所需的任务栈的大小值中的最大值确定为所述第一数值。
7、在确定第一数值的过程中,可以读取第一任务栈对应的文件配置信息。文件配置信息包括电子设备运行第一任务过程中使用的任务栈的历史值。根据文件配置信息确定电子设备运行第一任务过程中使用的任务栈的历史最大值。
8、在该方案中,电子设备可以获取第一任务在执行过程中使用的任务栈的最大历史值,并将该历史值确定为第一数值。后续电子设备可以基于该第一数值调整第一任务栈。既避免了由于发生栈溢出事件而导致任务的执行出现异常,又避免了过大的任务栈空间会占用过多的内存空间,从而造成电子设备的内存空间浪费的问题。
9、结合第一方面,在一种可能的设计中,第一任务栈包括第一区域和第二区域。其中,第一区域相对于第二区域位于第一任务栈的栈顶。第一区域具有可读写属性,第二区域具有不可读写属性。
10、在该方案中,通过将第一任务栈中的不同的部分设置为不同的属性,能够对第一任务栈进行分区,以将第一任务栈分为第一区域和第二区域。由于第一区域位于第二区域的栈顶,且具有可读写属性,因此,对应于第一任务栈的第一任务在运行时产生的临时数据和上下文信息会存储至第一区域中。当第一区域被占满后,电子设备会将新产生的临时数据和上下文信息存储至第二区域。由于第二区域具有不可读写属性,因此,电子设备中的某些硬件在检测到第二区域被占用时,能够生成异常信号。电子设备在检测到有异常信号生成时,可以进一步判断第一任务栈是否发生栈溢出时间。
11、结合第一方面,在一种可能的设计中,第一区域对应的内存空间大于第二区域对应的内存空间。
12、在该方案中,为了保证第一区域中可以存储更多的临时数据和上下文信息,可以设置第一区域的内存空间大于或远大于第二区域对应的内存空间。例如,可以设置第二区域的内存空间仅为32字节,设置第一任务栈中其余的内存空间均为第一区域的内存空间。
13、结合第一方面,在一种可能的设计中,在检测到第二区域被占用时,确定第一任务栈发生栈溢出事件。
14、在该方案中,可以基于电子设备中的硬件实时监测第二区域被是否被占用。若监测到第二区域被占用,则可以确定第一任务栈发生栈溢出事件。或者,也可以基于电子设备中的如内核模块等软件实时监测第二区域被是否被占用。若监测到第二区域被占用,则可以确定第一任务栈发生栈溢出事件。
15、结合第一方面,在一种可能的设计中,基于第一数值,重置第一任务栈。重置后的第一任务栈包括第三区域和第四区域。其中,第三区域对应的内存空间大于或等于第一数值。第三区域具有可读写属性,第四区域具有不可读写属性。
16、在该方案中,可以基于第一数值,重新在电子设备中设置对应于第一任务的第一任务栈,以增加第一任务栈对应的内存空间。重新设置后的第一任务栈仍然被分为两个区域,即具有可读写属性的第三区域和具有不可读写属性的第四区域。为了将之前产生的临时数据和上下文信息存储至第一任务栈中,第三区域对应的内存空间应大于或等于第一数值。
17、结合第一方面,在一种可能的设计中,在检测到存在满足预设条件的第五区域的情况下,对第一任务栈执行扩容处理。经过扩容处理的第一任务栈包括第五区域的部分或全部区域、第一区域以及第二区域。位于第一任务栈中的第五区域具有可读写属性。第五区域是与第一任务栈相邻的电子设备的内存区域且第五区域对应的内存空间与第一区域对应的内存空间的和大于或等于所述第一数值。
18、在该方案中,若存在与第一区域和/或第二区域相邻的电子设备内存区域。且该内存区域未被占用。可以基于该内存区域直接对第一任务栈中的第一区域执行扩容处理,而不需要重新设置第一任务栈。基于第五区域对第一任务栈中的第一区域执行扩容处理后,第五区域的部分或全部区域变为执行扩容处理后的第一区域的一部分。由于第一区域具有可读写属性。因此,位于执行扩容处理后的第一区域中的第五区域也应被设置为具有可读写属性。
19、为了保证基于第五区域得到的执行扩容处理后的第一区域足够存储已产生的临时数据和上下文信息。第五区域对应的内存空间与第一区域对应的内存空间的和应大于或等于第一数值。因此,执行扩容处理后,可以将存储在第二区域中的内容直接存储至执行扩容处理后的第一区域中。以及,后续新生成的临时数据和上下文信息也可以继续存储至经过扩容处理后的第一区域中。
20、结合第一方面,在一种可能的设计中,在检测到第一任务栈发生栈溢出事件的情况下,将第一任务栈中存储的内容保存至第二任务栈,并清除第一任务栈中存储的内容。其中,第二任务栈与第一任务栈不同。在基于第一数值,调整第一任务栈对应的内存空间之后,将第二任务栈中存储的内容存储至调整后的第一任务栈。
21、在该方案中,为了避免在调整第一任务栈的过程中,损坏第一任务栈中存储的数据。可以将第一任务栈中存储的数据存储至与第一任务栈不同的第二任务栈中进行备份。当对第一任务栈调整完毕后,可以重新将存储至第二任务栈中的数据拷贝或移动至第一任务栈中。并继续执行第一任务。
22、第二方面,本技术实施例提供了一种电子设备。该电子设备包括存储器和一个或多个处理器,存储器和处理器耦合;存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当处理器执行计算机指令时,使得该电子设备执行第一方面及其任一种可能的设计方式所述的方法。
23、第三方面,本技术实施例提供了一种芯片系统。该芯片系统包括一个或多个接口电路和一个或多个处理器。接口电路和处理器通过线路互联,接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令,当处理器执行所述计算机指令时,所述电子设备执行第一方面及其任一种可能的设计方式所述的方法。
24、第四方面,本技术实施例提供了一种计算机存储介质,包括计算机指令。当计算机指令在电子设备上运行时,使得电子设备执行第一方面及其任一种可能的设计方式所述的方法。
25、第五方面,本技术实施例提供了一种计算机程序产品。当计算机程序产品在计算机上运行时,使得计算机执行第一方面及其任一种可能的设计方式所述的方法。
本文地址:https://www.jishuxx.com/zhuanli/20240905/287772.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。