一种线程优化系统及方法

文档序号:10569791阅读:332来源:国知局
一种线程优化系统及方法
【专利摘要】本发明涉及计算机领域,尤其涉及一种线程优化系统及方法。本发明通过将当前被调出的第一线程中浪费的存储空间减小,节省了第一线程占用的存储空间,当前被调入的第二线程存储空间不足时,增加第二线程的存储空间,提高了线程的执行效率,提高了存储空间的利用率,避免了存储空间的浪费。
【专利说明】
一种线程优化系统及方法
技术领域
[0001 ]本发明涉及计算机领域,尤其涉及一种线程优化系统及方法。
【背景技术】
[0002] 现有技术中,为了执行线程通常会为该线程预分配一定的存储空间,现有的分配 方法是对所有的线程采用同一的分配标准,并且线程的存储空间的申请没有被限制,有一 些线程由于函数的嵌套较多,会占用较大的存储空间,但是有一些线程的存储空间内有大 量的未被使用的部分,这就会造成存储空间的浪费,其他准备执行的线程由于存储空间的 浪费导致存储空间的不足,使其执行过程因存储空间不足而被打断。

【发明内容】

[0003] 针对现有技术存在的问题,现提供一种线程优化系统及方法,能够减小存储空间 的浪费,提高存储空间的利用率。
[0004] 具体的技术方案如下:
[0005] -种线程优化系统,应用于嵌入式系统中,所述线程优化系统包括:
[0006] 调度模块3,用以于一处理器上调出当前执行的一第一线程,以及向所述处理器调 入需要执行的一第二线程;
[0007] 判断模块1,与所述调度模块3连接,用以判断所述第一线程被调出后的实际占用 的存储空间是否小于所述第一线程被分配的存储空间,以及判断所述第二线程被调入前的 被分配的存储空间与所述第二线程被实际占用的存储空间的差是否小于一第一值;
[0008] 调整模块2,与所述判断模块1连接,用以于所述第一线程的所述实际占用的存储 空间小于所述第一线程的所述被分配的存储空间时,减小所述第一线程的所述被分配的存 储空间至一第二值,以及于所述第二线程的所述被分配的存储空间与所述第二线程的所述 实际占用的存储空间的差小于所述第一值时增大所述第二线程的所述被分配的存储空间。
[0009] 优选的,所述存储空间为堆栈。
[0010] 优选的,还包括
[0011] 回收模块4,所述回收模块4与所述调整模块3连接,用以于所述调整模块3减小所 述第一线程的所述被分配的存储空间时,回收所述第一线程的所述被分配的存储空间被减 小的部分。
[0012] 优选的,第二值大于等于所述第一线程被调出后的实际占用的存储空间;或者
[0013] 所述第二值为4千字节。
[0014]优选的,所述第一值为8千字节。
[0015] 一种线程优化方法,包括:
[0016] 步骤S1,于一处理器上调出当前执行的一第一线程,以及向所述处理器调入需要 执行的一第二线程;
[0017] 步骤S2,判断所述第一线程被调出后的实际占用的存储空间是否小于所述第一线 程被分配的存储空间,以及判断所述第二线程被调入前的被分配的存储空间与所述第二线 程被实际占用的存储空间的差是否小于一第一值;
[0018] 步骤S3,于所述第一线程的所述实际占用的存储空间小于所述第一线程的所述被 分配的存储空间时,减小所述第一线程的所述被分配的存储空间至一第二值,以及于所述 第二线程的所述被分配的存储空间与所述第二线程的所述实际占用的存储空间的差小于 所述第一值时增大所述第二线程的所述被分配的存储空间。
[0019] 优选的,所述存储空间为堆栈。
[0020] 优选的,所述步骤S3具体包括:
[0021 ]步骤S31,于减小所述第一线程的所述被分配的存储空间时,回收所述第一线程的 所述被分配的存储空间被减小的部分。
[0022]优选的,第二值大于等于所述第一线程被调出后的实际占用的存储空间;或者 [0023]所述第二值为4千字节。
[0024]优选的,所述第一线程的所述被分配的存储空间与所述第二值的差值为8千字节。 [0025]上述技术方案的有益效果是:
[0026] 上述技术方案通过将当前被调出的第一线程中浪费的存储空间减小,节省了第一 线程占用的存储空间,当前被调入的第二线程存储空间不足时,增加第二线程的存储空间, 提高了线程的执行效率,提高了存储空间的利用率,避免了存储空间的浪费。
【附图说明】
[0027] 图1-图2为本发明一种线程优化系统的实施例的结构示意图;
[0028] 图3为本发明一种线程优化方法的实施例的流程图。
【具体实施方式】
[0029] 需要说明的是,在不冲突的情况下,下述技术方案,技术特征之间可以相互组合。
[0030] 下面结合附图对本发明的【具体实施方式】作进一步的说明:
[0031] 本实施例提供了一种线程优化系统,应用于嵌入式系统中,如图1所示,线程优化 系统包括:
[0032] 调度模块3,用以于一处理器上调出当前执行的一第一线程,以及向处理器调入需 要执行的一第二线程;
[0033] 判断模块1,与调度模块3连接,用以判断第一线程被调出后的实际占用的存储空 间是否小于第一线程被分配的存储空间,以及判断第二线程被调入前的被分配的存储空间 与第二线程被实际占用的存储空间的差是否小于一第一值;
[0034] 调整模块2,与判断模块1连接,用以于第一线程的实际占用的存储空间小于第一 线程的被分配的存储空间时,减小第一线程的被分配的存储空间至一第二值,以及于第二 线程的被分配的存储空间与第二线程的实际占用的存储空间小于第一值时增大第二线程 的被分配的存储空间。
[0035] 本实施例中每个线程可以有对应的存储空间,其中被调出的第一线程的实际占用 的存储空间小于第一线程被分配的存储空间时,说明第一线程的实际占用的存储空间并未 占满第一线程被分配的存储空间,存在存储空间浪费现象,调度模块2通过调整第一线程被 分配的存储空间头部或者尾部的指针将浪费的存储空间释放。
[0036] 本实施例中,调度模块3对被调入的第二线程进行调度,使得第二线程的执行时能 够获得足够的存储空间,避免第二进程的执行过程被打断。
[0037] 本发明一个较佳的实施例中,存储空间为堆栈。
[0038] 当存储空间为堆栈时,判断模块1可通过调用栈空间调度函数检查第一线程的栈 空间和第二线程的栈空间,以判断第一线程被调出后的实际占用的栈空间是否小于第一线 程被分配的栈空间,以及第二线程被调入前的被分配的存储空间与判断第二线程的实际占 用的栈空间是否小于一第一值。
[0039] 本发明一个较佳的实施例中,如图2所示,还包括
[0040] 回收模块4,回收模块4与调整模块3连接,用以于调整模块3减小第一线程的被分 配的存储空间时,回收第一线程的被分配的存储空间被减小的部分。
[0041] 进一步的,当存储空间为堆栈时,回收模块4通过调用栈回收函数回收第一线程的 被分配的栈空间被减小的部分。
[0042] 本发明一个较佳的实施例中,第二值大于等于第一线程被调出后的实际占用的存 储空间。
[0043] 本发明一个较佳的实施例中,第二值为4千字节。
[0044]本发明一个较佳的实施例中,第一值为8千字节。
[0045]本实施例提供了一种线程优化方法,如图3所示,包括:
[0046] 步骤S1,于一处理器上调出当前执行的一第一线程,以及向处理器调入需要执行 的一第二线程;
[0047] 步骤S2,判断第一线程被调出后的实际占用的存储空间是否小于第一线程被分配 的存储空间,以及判断第二线程被调入前的被分配的存储空间与第二线程被实际占用的存 储空间的差是否小于一第一值;
[0048] 步骤S3,于第一线程的实际占用的存储空间小于第一线程的被分配的存储空间 时,减小第一线程的被分配的存储空间至一第二值,以及于第二线程的被分配的存储空间 与第二线程的实际占用的存储空间的差小于第一值时增大第二线程的被分配的存储空间。
[0049] 本发明一个较佳的实施例中,存储空间为堆栈。例如,本实施例中的存储空间可以 为栈空间。
[0050] 本发明一个较佳的实施例中,步骤S3具体包括:
[0051] 步骤S31,于减小第一线程的被分配的存储空间时,回收第一线程的被分配的存储 空间被减小的部分。
[0052] 本发明一个较佳的实施例中,第二值大于等于第一线程被调出后的实际占用的存 储空间。
[0053]本发明一个较佳的实施例中第二值为4千字节。
[0054] 本发明一个较佳的实施例中,第一值为8千字节。
[0055] 综合上述实施例,现对上述实施例提供的线程优化方法的伪代码进行举例说明: void stac:k_adjust(struct vm_area_struct *from_staGl</struct vm_area_struct *to_stack) { void *from_esp;
[0056] void *to_esp; void* tmp; i* * from^esp是第一线程当前的栈指针,
[0057] from_stack->vm_start是第一线程栈空间的结束位置,这两个指针之间的栈空间 空隙就是被浪费的栈内存,为了保证线程执行切换的速度,可以预留4K的栈空间给每一个 线程,将其余的栈空间回收,这4K的栈空间即可以为第二值。
[0058] 本实施例中,增加栈空间的伪代码为: .*/ for (tmp = from_esp; tmp > (from_stack->vm_start + 4KB); tmp
[0059] = 4KB) free(tmp);
[0060] 1* * t0_esf)是第二线程当前的栈指针,to_stack->vm_start是 第二线程的栈空间的结束位置,to_stad<->vm_end是第二线程旗起始 位置。 * t〇_e_sp和t〇_stac:k->vm_start的栈空间空隙就是尚未植 使用的栈空间,为了保证线程有足够的栈:空间,当栈空间空隙小于8KB 的肘候:,可以给第二线程多分配一些栈空间,防止第二线程在执行过 程中被频繁打断。 if (to_esp - to_stack->vm_start <= 8KB) { tmp = from_stack->vm_end; from stack->vm__end = realloc(16KB); memcpy(from_stack->vm_end, tmp, (to_esp -from_stack->end)); } }
[006i]本实施例中栈回收函数的伪代码为: static void shrink cacbetetruct vm area struct ^vma stack} void *esp;
[0062] { * I <h-± voia nnip; i* * esp是第二进程的栈指针,vma_stack->vm_start是第二 进程栈空间的结束位置,这两个指针之间的空隙就是被第一线程浪费 的部分。 n for (遍历系统中每一个进程)
[0063] { for (tmp = esp; tmp > vma_stack->vm_start; tmp -= 4KB) { //释放浪费了的内存页。 free(tmp); } }
[0064]综上,上述技术方案通过将当前被调出的第一线程中浪费的存储空间减小,节省 了第一线程占用的存储空间,当前被调入的第二线程存储空间不足时,增加第二线程的存 储空间,提高了线程的执行效率,提高了存储空间的利用率,避免了存储空间的浪费。
[0065]通过说明和附图,给出了【具体实施方式】的特定结构的典型实施例,基于本发明精 神,还可作其他的转换。尽管上述发明提出了现有的较佳实施例,然而,这些内容并不作为 局限。
[0066] 对于本领域的技术人员而言,阅读上述说明后,各种变化和修正无疑将显而易见。 因此,所附的权利要求书应看作是涵盖本发明的真实意图和范围的全部变化和修正。在权 利要求书范围内任何和所有等价的范围与内容,都应认为仍属本发明的意图和范围内。
【主权项】
1. 一种线程优化系统,其特征在于,应用于嵌入式系统中,所述线程优化系统包括: 调度模块(3),用以于一处理器上调出当前执行的一第一线程,以及向所述处理器调入 需要执行的一第二线程; 判断模块(1),与所述调度模块(3)连接,用以判断所述第一线程被调出后的实际占用 的存储空间是否小于所述第一线程被分配的存储空间,以及判断所述第二线程被调入前的 被分配的存储空间与所述第二线程被实际占用的存储空间的差是否小于一第一值; 调整模块(2),与所述判断模块(1)连接,用以于所述第一线程的所述实际占用的存储 空间小于所述第一线程的所述被分配的存储空间时,减小所述第一线程的所述被分配的存 储空间至一第二值,以及于所述第二线程的所述被分配的存储空间与所述第二线程的所述 实际占用的存储空间的差小于所述第一值时增大所述第二线程的所述被分配的存储空间。2. 根据权利要求1所述的线程优化系统,其特征在于,所述存储空间为堆栈。3. 根据权利要求1所述的线程优化系统,其特征在于,还包括 回收模块(4),所述回收模块(4)与所述调整模块(3)连接,用以于所述调整模块(3)减 小所述第一线程的所述被分配的存储空间时,回收所述第一线程的所述被分配的存储空间 被减小的部分。4. 根据权利要求1所述的线程优化系统,其特征在于,第二值大于等于所述第一线程被 调出后的实际占用的存储空间;或者 所述第二值为4千字节。5. 根据权利要求1所述的线程优化系统,其特征在于,所述第一值为8千字节。6. -种线程优化方法,其特征在于,包括: 步骤Sl,于一处理器上调出当前执行的一第一线程,以及向所述处理器调入需要执行 的一第二线程; 步骤S2,判断所述第一线程被调出后的实际占用的存储空间是否小于所述第一线程被 分配的存储空间,以及判断所述第二线程被调入前的被分配的存储空间与所述第二线程被 实际占用的存储空间的差是否小于一第一值; 步骤S3,于所述第一线程的所述实际占用的存储空间小于所述第一线程的所述被分配 的存储空间时,减小所述第一线程的所述被分配的存储空间至一第二值,以及于所述第二 线程的所述被分配的存储空间与所述第二线程的所述实际占用的存储空间的差小于所述 第一值时增大所述第二线程的所述被分配的存储空间。7. 根据权利要求6所述的线程优化方法,其特征在于,所述存储空间为堆栈。8. 根据权利要求6所述的线程优化方法,其特征在于,所述步骤S3具体包括: 步骤S31,于减小所述第一线程的所述被分配的存储空间时,回收所述第一线程的所述 被分配的存储空间被减小的部分。9. 根据权利要求6所述的线程优化方法,其特征在于,第二值大于等于所述第一线程被 调出后的实际占用的存储空间;或者 所述第二值为4千字节。10. 根据权利要求6所述的线程优化方法,其特征在于,所述第一值为8千字节。
【文档编号】G06F9/50GK105930217SQ201610237415
【公开日】2016年9月7日
【申请日】2016年4月15日
【发明人】黄金钰
【申请人】上海斐讯数据通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1