计算堆栈大小的计算系统及方法与流程

文档序号:12469734阅读:1703来源:国知局
计算堆栈大小的计算系统及方法与流程

本发明有关于一种计算堆栈大小的计算系统及方法,尤指一种对于特定的程序操作环境下所运行的工作模式进行堆栈大小计算的计算系统及方法。



背景技术:

存储空间的配置往往为程序设计者密切关心的项目。基于程序执行上的需求,配置适当大小的存储空间,不仅可以提供足够的存储空间暂存程序运行时的信息,且避免给予过大的存储空间以降低存储空间的浪费。

程序在执行过程中,一般需要三种类型的存储空间(Memory space)来分别暂存不同类型的信息,例如:全局空间(global space)、堆积空间(heap space)、堆栈空间(stack space)。全局空间用于暂存全局变量及静态变量等等信息,堆积空间用于暂存动态分配的信息,而堆栈空间用于暂存局部变量、函数参数等等信息。

全局空间(global space)、堆积空间(heap space)及堆栈空间(stack space)可以根据计算程序的线程(Thread)执行时的全局大小(global size)、堆积大小(heap size)及堆栈大小(stack size)而对应配置。一般而言,全局大小及堆积大小相较于堆栈大小易于计算。因此,在复杂的程序中,堆栈大小的计算存在一定的困难度。

有鉴于此,本发明将提出一种堆栈大小的计算机制,其机制可以简单地计算出程序的线程执行时的堆栈大小,并且根据计算出的堆栈大小以对应配置适当的堆栈的存储空间,将会是本发明欲达到的技术目的。



技术实现要素:

本发明要解决的技术问题在于,提供一种计算堆栈大小的计算系统及方法,其计算系统可以应用在特定的程序操作环境中,并对于程序操作环境下的工作模式运行时的最大值的堆栈大小进行计算,而后,基于工作模式所属的最大值的堆栈大小而对应配置适当的堆栈存储空间。

本发明解决其技术问题所采用的技术方案是:构造一种计算堆栈大小的计算系统及方法。

在本发明所述的计算堆栈大小的方法中,包括以下步骤:

侦测在特定的程序操作环境下所运行的工作模式以取得至少一工作模式参数;

提供应用程序,其中所述应用程序包括复数个线程,各个所述线程包括复数个函数;

令所述应用程序根据所述工作模式参数以启动一或多个对应的线程且从所述启动的线程中执行至少一所述对应的函数;

记录执行中的每一所述函数的堆栈使用;及

从记录的每一所述堆栈使用中比较出最大值的堆栈使用以作为所述工作模式的运行时的最大值的堆栈大小。

可选地,还包括以下步骤:

传送所述工作模式参数及其对应的所述最大值的堆栈大小至数据库以记录所述工作模式参数及其对应的所述最大值的堆栈大小在所述数据库中。

可选地,所述特定的程序操作环境为网络连接程序操作环境,所述工作模式为网络连接模式,而所述工作模式参数为连接设定参数。

可选地,计算系统利用所述网络连接模式连接网络设备时,所述应用程序根据所述连接设定参数以启动一或多个关联于所述网络连接模式的所述线程且从所述启动的线程中执行至少一所述对应的函数,记录执行中的每一所述函数的堆栈使用,从记录的每一所述堆栈使用中比较出所述最大值的堆栈使用以作为所述网络连接模式运行时的所述最大值的堆栈大小。

在本发明所述的计算堆栈大小的计算系统中,应用于计算应用程序执行时的堆栈大小,所述应用程序包括有复数个线程,每一所述线程包括有复数个函数,所述计算系统包括:

侦测单元,侦测在特定的程序操作环境下所运行的工作模式以取得至少一工作模式参数;

控制单元,连接所述侦测单元及所述应用程序,根据所述工作模式参数以控制所述应用程序启动一或多个对应的线程且从所述启动的线程中执行至少一所述对应的函数;及

计算单元,连接所述控制单元,包括堆栈记录器及比较器,所述堆栈记录器记录执行中的每一所述函数的堆栈使用,所述比较器从记录的每一所述堆栈使用中比较出最大值的堆栈使用以作为所述工作模式的运行时的最大值的堆栈大小。

可选地,还包括数据库,所述数据库连接所述控制单元,所述控制单元传送所述工作模式参数及其对应的所述最大值的堆栈大小至所述数据库,以将所述工作模式参数及其对应的该最大值的堆栈大小记录在所述数据库中。

可选地,所述特定的程序操作环境为网络连接程序操作环境,所述工作模式为网络连接模式,而所述工作模式参数为连接设定参数。

可选地,所述计算系统利用所述网络连接模式连接网络设备时,所述应用程序根据所述连接设定参数以启动一或多个关联于所述网络连接模式的所述线程且从所述启动的线程中执行至少一所述对应的函数,所述计算单元的所述堆栈记录器记录每一执行中的所述函数的所述堆栈使用,所述计算单元的所述比较器从记录的所述每一堆栈使用中比较出所述最大值的堆栈使用以作为所述网络连接模式运行时的所述最大值的堆栈大小。

可选地,所述计算系统网络连接服务器,所述控制单元将所述工作模式参数及其对应的所述最大值的堆栈大小上传至所述服务器,以将所述工作模式参数及其对应的所述最大值的堆栈大小记录在所述服务器中。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1:本发明计算堆栈大小的计算系统一实施例的结构示意图。

图2:本发明应用程序与计算单元一实施例的详细结构示意图。

图3:本发明计算堆栈大小的计算系统一应用实施例的结构示意图。

图4:本发明计算系统与网络设备进行网络连接的一应用实施例的结构示意图。

图5:本发明应用程序与计算单元一应用实施例的详细结构示意图。

图6:本发明计算堆栈大小的计算系统又一应用实施例的结构示意图。

图7:本发明计算系统与网络设备进行网络连接又一应用实施例的结构示意图。

图8:本发明应用程序与计算单元又一应用实施例的详细结构示意图。

图9:本发明计算堆栈大小的计算系统又一应用实施例的结构示意图。

图10:本发明计算系统与网络设备进行网络连接又一应用实施例的结构示意图。

图11:本发明应用程序与计算单元又一应用实施例的详细结构示意图。

符号说明:

10 计算系统 101 局域网网络连接

102 点对点网络连接 103 中继网络连接

11 控制单元 13 侦测单元

130 工作模式参数 131 局域网连接设定参数

132 点对点连接设定参数 133 中继连接设定参数

15 应用程序 17 计算单元

171 堆栈记录器 1710 堆栈使用

1711 堆栈使用 1712 堆栈使用

1713 堆栈使用 173 比较器

1730 最大值的堆栈大小 1731 最大值的堆栈大小

1732 最大值的堆栈大小 1733 最大值的堆栈大小

19 数据库 30 网络设备

50 网络中继装置

Thread_1 线程 Thread_2 线程

Thread_3 线程 Thread_4 线程

Fun_A 函数 Fun_B 函数

Fun_C 函数 Fun_D 函数

Fun_E 函数 Fun_F 函数

Fun_G 函数 Fun_H 函数

Fun_I 函数 Fun_J 函数

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图和具体实施例,对本发明进行进一步的详细说明。应当理解,此处描述的具体实施例仅用于解释本发明,并不用于限定本发明。

请参阅图1及图2,分别为本发明计算堆栈大小的计算系统一实施例的结构示意图以及应用程序与计算单元一实施例的详细结构示意图。如图1及图2所示,本发明计算系统10可以应用在特定的程序操作环境中,其结构包括控制单元11、侦测单元13、应用程序15及计算单元17。侦测单元13、应用程序15及计算单元17分别连接控制单元11。

其中,侦测单元13可以侦测在特定程序操作环境下所运行的工作模式,以取得至少一工作模式参数130。应用程序15为特定程序操作环境的相关执行程序,其包括复数个线程(Thread_1~4),每一线程(Thread_1)/(Thread_2)/(Thread_3)/(Thread_4)分别包括有复数个函数,例如:线程(Thread_1)包括函数Fun_A、函数Fun_B及函数Fun_C,线程(Thread_2)包括函数Fun_D及函数Fun_E,线程(Thread_3)包括函数Fun_F、函数Fun_G及函数Fun_H,而线程(Thread_4)包括函数Fun_I及函数Fun_J。

控制单元11根据侦测单元13所侦测出的工作模式参数130以控制应用程序15启动一或多个对应的线程(Thread_1)、(Thread_2)、(Thread_3)、(Thread_4)且从启动的线程中执行至少一对应的函数。

计算单元17包括堆栈记录器171及比较器173。堆栈记录器171用于记录执行中的每一函数的堆栈使用(stack usage)1710。比较器173从记录的每一堆栈使用1710中比较出最大值,以将最大值的堆栈使用1710作为工作模式运行时的最大值的堆栈大小(max stack size)1730。如此,即可计算出最大值的堆栈大小1730。之后,基于工作模式所属的最大值的堆栈大小1730而对应配置适当的堆栈的存储空间,以经由配置的堆栈的存储空间而提供暂存工作模式运行时的信息,例如:局部变量或函数参数。

本发明一实施例中,计算系统10可以为计算机程序软件,其可以建置在计算机装置之中。

再者,本发明又一实施例中,计算系统10还包括数据库19,其连接控制单元11。控制单元11将工作模式参数130及其对应的最大值的堆栈大小1730传送至数据库19,以将工作模式参数130及其对应的最大值的堆栈大小1730记录在数据库19中。在本发明中,数据库19可以为计算机装置中的存储媒体或网络服务器。

本案技术可以实际应用在不同网络连接的程序操作环境之中,以对于各网络连接的程序操作环境下的网络连接模式进行堆栈大小的计算,其详细内容如下所述:

请参阅图3、图4及图5,分别为本发明计算堆栈大小的计算系统一应用实施例的结构示意图、计算系统与网络设备进行网络连接一应用实施例的结构示意图以及应用程序与计算单元一应用实施例的详细结构示意图。在本实施例中,计算系统10应用在网络连接的程序操作环境时,其所运行的工作模式可以为局域网的网络连接模式。计算系统10经由局域网网络连接101而与网络设备30进行网络连接。

当侦测单元13侦测出计算系统10运行在局域网的网络连接模式时,将可以取得至少一局域网连接设定参数131。控制单元11控制应用程序15启动一个关联于局域网连接的线程(Thread_1)。

线程(Thread_1)启动后,控制单元11根据局域网连接设定参数131依序执行对应的函数(Fun_A)及函数(Fun_C),计算单元17的堆栈记录器171分别记录函数(Fun_A)及函数(Fun_C)的堆栈使用(S=50)1711、(S=80)1711。

当线程(Thread_1)的各函数(Fun_A)、(Fun_C)皆已执行完毕后,计算单元17的比较器173从记录的每一堆栈使用(S=50)1711、(S=80)1711中比较出最大的堆栈使用(S=80)1711,并将最大的堆栈使用(S=80)1711作为局域网连接模式运行时的最大值的堆栈大小(S=80)1731。则,局域网连接模式所属的最大值的堆栈大小(S=80)1731即可计算得到。之后,基于最大值的堆栈大小(S=80)1731而配置对应大小的堆栈存储空间,以经由配置的堆栈存储空间而提供暂存局域网的网络连接模式运行时的信息。

再者,最大值的堆栈大小(S=80)1731计算完成后,控制单元11将局域网连接设定参数131及其对应的最大值的堆栈大小(S=80)1731传送至数据库19,以将其存储在数据库19之中。

请参阅图6、图7及图8,分别为本发明计算堆栈大小的计算系统又一应用实施例的结构示意图、计算系统与网络设备进行网络连接又一实施例的结构示意图以及应用程序与计算单元又一应用实施例的详细结构示意图。在本实施例中,计算系统10应用在网络连接程序操作环境时,其所运行的特定工作模式可以为点对点(Peer to Peer,P2P)的网络连接模式。计算系统10经由点对点网络连接102而与网络设备30进行网络连接。

当侦测单元13侦测出计算系统10运行在点对点的网络连接模式时,将可以取得至少一点对点连接设定参数132。控制单元11控制应用程序15启动多个关联于点对点连接的线程(Thread_1)、(Thread_3)。

线程(Thread_1)启动后,控制单元11根据点对点连接设定参数132依序执行对应的函数(Fun_A)及函数(Fun_C),计算单元17的堆栈记录器171记录函数(Fun_A)及函数(Fun_C)的堆栈使用(S=50)1712、(S=80)1712;接续,线程(Thread_3)启动后,控制单元11根据点对点连接设定参数132依序执行对应的函数(Fun_G)及其子函数(Fun_H),计算单元17的堆栈记录器171继续记录函数(Fun_G)及其子函数(Fun_H)的总加堆栈使用(S=50+70=120)1712。

当线程(Thread_1)及线程(Thread_3)的各函数(Fun_A)、(Fun_C)、(Fun_G)、(Fun_H)皆已执行完毕后,计算单元17的比较器173从记录的每一堆栈使用(S=50)1712、(S=80)1712、(S=120)1712中比较出最大的堆栈使用(S=120)1712,并将最大的堆栈使用(S=120)1712作为点对点的网络连接模式运行时的最大值的堆栈大小(S=120)1732。则,点对点连接模式所属的最大值的堆栈大小(S=120)1732即可计算得到。之后,基于最大值的堆栈大小(S=120)1732而配置对应大小的堆栈存储空间,以经由配置的堆栈存储空间而提供暂存点对点的网络连接模式运行时的信息。

再者,最大值的堆栈大小(S=120)1732计算完成后,控制单元11将点对点连接设定参数132及其对应的最大值的堆栈大小(S=120)1732传送至数据库19,以将其存储在数据库19之中。

进一步,在本实施例中,数据库19除记录有点对点连接设定参数132及其对应的最大值的堆栈大小1732外,还可记录其他网络连接模式的连接设定参数及其堆栈大小的最大值,如记录有局域网连接设定参数131及其对应的最大值的堆栈大小1731。

请参阅图9、图10及图11,分别为本发明计算堆栈大小的计算系统又一应用实施例的结构示意图、计算系统与网络设备进行网络连接又一实施例的结构示意图以及应用程序与计算单元又一应用实施例的详细结构示意图。在本实施例中,计算系统10应用在网络连接程序操作环境时,其所运行的特定工作模式可以为中继(Relay)的网络连接模式。计算系统10能够通过网络中继装置50所提供的中继网络连接103而与网络设备30进行网络连接。

当侦测单元13侦测出计算系统10运行在中继连接模式时,将可以取得至少一中继连接设定参数133。控制单元11控制应用程序15启动多个关联于中继连接的线程(Thread_1)、(Thread_4)。

线程(Thread_1)启动后,控制单元11根据中继连接设定参数133依序执行对应的函数(Fun_B)及函数(Fun_C),计算单元17的堆栈记录器171记录函数(Fun_B)及函数(Fun_C)的堆栈使用(S=40)1713、(S=80)1713;接续,线程(Thread_4)启动后,控制单元11根据中继连接设定参数133执行对应的函数(Fun_I)及函数(Fun_J),计算单元17的堆栈记录器171记录函数(Fun_I)及函数(Fun_J)的堆栈使用(S=60)1713、(S=90)1713。

当线程(Thread_1)、(Thread_4)的各函数(Fun_B)、(Fun_C)、(Fun_I)、(Fun_J)皆已执行完毕后,计算单元17的比较器173从记录的每一堆栈使用(S=40)1713、(S=80)1713、(S=60)1713、(S=90)1713中比较出最大的堆栈使用(S=90)1713,并将最大的堆栈使用(S=90)1713作为中继的网络连接模式运行时的最大值的堆栈大小(S=90)1733。则,中继的网络连接模式所属的最大值的堆栈大小(S=90)1733即可计算得到。之后,基于最大值的堆栈大小(S=90)1733而配置对应大小的堆栈存储空间,以经由配置的堆栈存储空间而提供暂存中继的网络连接模式运行时的信息。

再者,最大值的堆栈大小(S=90)1733计算完成后,控制单元11将中继连接设定参数133及其对应的最大值的堆栈大小(S=90)1733传送至数据库19,以将其存储在数据库19之中。

又,本发明实施例中,网络中继装置50相对于计算系统10可以为独立装置或网络服务器,其用于协助建构计算系统10与网络设备30之间的网络连接。

进一步,在本实施例中,数据库19除记录有中继连接设定参数133及其对应的最大值的堆栈大小1733外,还可进一步记录有局域网连接设定参数131及其对应的最大值的堆栈大小1731与点对点连接设定参数132及其对应的最大值的堆栈大小1732。

或者,本发明又一实施例中,数据库19可为网络服务器,计算系统10连接网络服务器,以将工作模式参数131、132、133及其对应的该最大值的堆栈大小1731、1732、1733记录在网络服务器中。使用者可远程登录网络服务器以获取工作模式参数131、132、133及其对应的该最大值的堆栈大小1731、1732、1733。

承上所述,本发明计算系统10分别对于局域网的网络连接模式、点对点的网络连接模式、中继的网络连接模式所对应的线程(Thread_1~4)进行堆栈大小的计算,以分别计算出所属的最大值的堆栈大小1731、1732、1733,并将局域网的网络连接模式、点对点的网络连接模式、中继的网络连接模式所属的最大值的堆栈大小1731、1732、1733分别记录在数据库19之中。而后,电子装置的使用者欲采用局域网的网络连接模式、点对点的网络连接模式或中继的网络连接模式与网络相关设备进行网络连接时,计算系统10亦可提供关联性的最大值的堆栈大小1731、1732、1733,则,电子装置的使用者即可根据最大值的堆栈大小1731、1732、1733配置相对应的堆栈存储空间。

经由上述,借由计算出的最大值的堆栈大小1731、1732、1733来配置堆栈存储空间,在网络连接程序进行程序操作时,不仅可以提供足够的堆栈存储空间暂存网络连接程序操作时的信息,且避免给予过大的堆栈存储空间以降低存储空间的浪费。

此外,本发明一实施例中,计算系统10可以为独立的计算装置;或者,本发明另一实施例中,计算系统10为配置于可联网电子装置(例如:IPcam、智能家电、手机、智能门铃等等)中的系统,其系统型态可以为芯片、固件,或者为软件形式。

再者,本发明上述对于网络连接程序操作环境下所运行的各网络连接模式进行堆栈大小的计算仅为一具体应用而已,熟知该项技术领域者应可以理解本发明的技术也可应用在其他类型的程序操作环境(例如:不同的操作系统)之中,并对于其他类型的程序操作环境下的各工作模式分别进行堆栈大小的计算,在此,均属于本发明欲主张的权利范围。

以上所述者,仅为本发明的较佳实施例而已,并非用来限定本发明实施的范围,即凡依本发明权利要求书所述的形状、构造、特征及精神所为之均等变化与修饰,均应包括于本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1