CN1924828A - 判断存储器区块所对应函数式的查询方法及计算机系统 - Google Patents
判断存储器区块所对应函数式的查询方法及计算机系统 Download PDFInfo
- Publication number
- CN1924828A CN1924828A CN 200510097676 CN200510097676A CN1924828A CN 1924828 A CN1924828 A CN 1924828A CN 200510097676 CN200510097676 CN 200510097676 CN 200510097676 A CN200510097676 A CN 200510097676A CN 1924828 A CN1924828 A CN 1924828A
- Authority
- CN
- China
- Prior art keywords
- functional expression
- memory block
- actuating code
- computer system
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供一种用以查询一计算机系统的一存储器中的一存储器区块所对应的一函数式的查询方法及其计算机系统。该计算机系统所执行的一第一函数式执行码调用一第二函数式执行码以要求该计算机系统将一第一存储器区块配置给该第一函数式执行码,一符号配置表纪录该第一函数式执行码所对应的一符号地址,该查询方法包含有纪录该第二函数式执行码的一返回地址于该存储器中一预定存储器区块中,之后自该预定存储器区块读取该返回地址,以及依据该返回地址与该符号配置表中的该符号地址,判断出该第一存储器区块配置给该第一函数式执行码。
Description
技术领域
本发明提供一种用以查询一存储器区块所对应的函数式的方法及系统,尤指一种将一返回地址纪录于一存储器区块的首标以判断一存储器区块所对应的函数式的查询方法及计算机系统。
背景技术
在一计算机系统中,动态配置一存储器区块给一函数式(function)使用是一个基本的系统服务,各个函数式可在需要的时候去要求该计算机系统动态地配置一存储器区块给它,然后在确定不需要使用该存储器区块后,将该已配置的存储器区块归还给该计算机系统,以达到存储器资源共享的目的;然而,若该已配置的存储器区块已确定不会再被使用,却仍没被正确地归还给该计算机系统时,则该已配置但不再被使用的存储器区块便不会被该计算机系统重新配置给其他函数式,亦即造成可共享的存储器资源减少,此现象一般称之为存储器遗失(memory leak)。存储器遗失会造成该计算机系统的存储器资源不足,轻者导致该计算机系统的执行效能下降,重者导致该计算机系统崩溃(crash),因此,存储器遗失是一个相当严重的问题。所以,如何在该计算机系统检测到存储器不足时,进一步去检测是否为存储器遗失的问题,并找出造成存储器遗失的问题的根源所在,是一必需且重要的工作。接下来将提供一实施例,以描述现有技术如何解决上述问题。
请参阅图1,图1为现有计算机系统10的功能方块图。计算机系统10包含有一微处理器12、一闪速存储器(flash memory)14、一随机存储存储器(random access memory,RAM)16与一寄存器式存储器18。于计算机系统10的工作为微处理器12存取闪速存储器14、随机存储存储器16或寄存器式存储器18内所存储的数据,并执行必要的运算。闪速存储器14为一非易失性(non-volatile)存储器,存储有一第一函数式F1的原始码FS1、一第二函数式F2的原始码FS2以及两个对应第一函数式的假指令(pre-processdirective),分别为”__FILE__”以及”__LINE__”,这些假指令的功用会于之后的篇幅解释。随机存储存储器16为一易失性(volatile)存储器,其包含有多个存储器区块(memory block)16a、16b、16c,存储器区块16a拥有一首标16ah,存储器区块16b拥有一首标16bh,而存储器区块16c拥有一首标16ch。此外,计算机系统10中,寄存器式存储器18用来存储微处理器12对一函数式进行编译(compile)后所产生的执行码。
请同时参阅图1与图2,图2为图1所示的第一函数式F1调用第二函数式F2的示意图。当微处理器12编译一个包含有第一函数式F1与第二函数式F2的程序,于程序编译(compile time)的过程中,可知第一函数式F1中的第L1行程序码的内容为调用第二函数式F2,此时,依据现有技术,微处理器12会将第一函数式F1的函数式名称(例如F1)纪录于假指令__FILE__内,而将行号L1纪录于假指令__LINE__内。在程序编译完成之后,微处理器12便产生一对应第一函数式F1的第一函数式执行码FE1以及一对应第二函数式F2的第二函数式执行码FE2,请注意,第一函数式执行码FE1与第二函数式执行码FE2皆存储于寄存器式存储器18内。
于本实施例中,第一函数式F1调用第二函数式F2的目的为要求计算机系统10将某一存储器区块配置给第一函数式F1,因此,在程序编译完成后,接下来于程序执行(run time)时,当计算机系统10执行第一函数式执行码FE1的内容到了对应行号L1的部分,程序执行点会跳跃(branch)到第二函数式执行码FE2所在的地址,亦即从第二函数式F2的起点开始执行第二函数式执行码FE2的内容,假设目前计算机系统10应第二函数式F2的要求配置给第一函数式F1使用的存储器区块为存储器区块16b,此时,计算机系统10将存储器配置信息记录在存储器区块16b的首标(header),也就是将假指令__FILE__与__LINE__所纪录的内容,分别为第一函数式F1的函数式名称(亦即F1)与行号L1,拷贝至存储器区块16b的首标。如本领域所现有,假指令__FILE__的数据存储类型(data type)是字符(character),因此若需存储的函数式名称愈长,即代表假指令__FILE__需占用的存储空间愈大,而假指令__LINE__内所存储的行号的数据存储类型为一整数(integer),通常一整数所占用的空间为四个字节(4bytes)。在计算机系统10执行完第二函数式执行码FE2之后,程序执行点会跳跃回第一函数式F1,继续执行第一函数式F1的第L2行(第L1行的下一行),亦即执行第一函数式执行码FE1中对应于行号L2的部分。
当一工程人员(例如程序设计师)查觉可能有存储器遗失(memory leak)的现象时,工程人员可查看存储器区块16b的首标以得知存储器区块16b由第一函数式F1要求计算机系统10所配置给其使用的存储器区块。因此,利用现有方法可得知所有存储器区块的配置情形,检视遗失的存储器为哪一函数式要求计算机系统来配置使用,以找出存储器遗失的问题根源。然而现有方法于程序编译时需要占用非易失性存储器的空间来纪录存储器配置信息,亦即假指令__FILE__与__LINE__的内容,且于程序执行时亦需要拷贝该存储器配置信息至随机存储存储器内,因此提高了计算机系统于时间与存储器空间的成本而提高计算机系统的系统负担(system overhand)。
发明内容
因此,本发明的主要目的的一在于提供一种将一返回地址(returnaddress)纪录于一存储器区块的首标以查询一存储器区块所对应的函数式的查询方法及计算机系统,以解决上述问题。
依据本发明的申请专利范围,其提供一种查询方法。该查询方法用来查询一计算机系统的一存储器中的一存储器区块(memory block)所对应的一函数式(function),该存储器包含有多个存储器区块,且存储一第一函数式执行码、一第二函数式执行码与一符号配置表(linker map),该计算机系统所执行的该第一函数式执行码调用该第二函数式执行码以要求该计算机系统将一第一存储器区块配置给该第一函数式执行码,该符号配置表纪录该第一函数式执行码所对应的一符号地址,该查询方法包含有:纪录该第二函数式执行码的一返回地址于该存储器中一预定存储器区块中;以及自该预定存储器区块读取该返回地址,并依据该返回地址与该符号配置表中的该符号地址,判断出该第一存储器区块配置给该第一函数式执行码。
此外,依据本发明,其还提供一种计算机系统。该计算机系统包含有:一存储器,用来存储一第一函数式执行码、一第二函数式执行码与一符号配置表(linker map),该符号配置表纪录该第一函数式执行码所对应的一符号地址,该存储器包含有多个存储器区块(memory block);以及一运算单元,耦接于该存储器,用来执行该第一函数式执行码与该第二函数式执行码,该第一函数式执行码调用该第二函数式执行码以要求将一第一存储器区块配置给该第一函数式执行码,并将该第二函数式执行码的一返回地址存储于该存储器中一预定存储器区块中,其中该运算单元自该预定存储器区块读取该返回地址,并依据该返回地址与该符号配置表中的该符号地址来判断该第一存储器区块配置给该第一函数式执行码。
本发明的优点的一在于完全不需要占用任何额外的非易失存储器空间,且相较于现有方法的存储器配置信息,本发明纪录于已配置存储器区块的首标内的存储器配置信息仅为一个返回地址,因此仅需占用存储器区块的首标内四个字节(4bytes)的空间,即能达到准确且快速的找到该已配置的存储器区块由哪一函数式要求计算机系统所配置,因此,本发明方法对于计算机系统造成的系统负担较低,且能降低时间与存储器空间的成本以进一步地提高计算机系统的执行效能与执行速度。
附图说明
图1为现有计算机系统的功能方块图。
图2为图1所示的第一函数式调用第二函数式的示意图。
图3为本发明计算机系统的功能方块图。
图4为本发明查询一存储器区块所对应的函数式的查询方法于一第一阶段的流程图。
图5为本发明查询一存储器区块所对应的函数式的查询方法于一第二阶段的流程图。
主要元件符号说明
10、20 计算机系统 12、22 微处理器
14、24 闪速存储器 16、26 随机存取存储器
16a、16b、16c、26a、26b、26c 存储器区块
16ah、16bh、16ch、26ah、26bh、26ch 首标
18、28 寄存器式存储器
具体实施方式
请参阅图3,图3为本发明计算机系统20的功能方块图。计算机系统20包含有一微处理器22、一闪速存储器24、一随机存储存储器26与一寄存器式存储器28。本实施例中,闪速存储器24存储有一第一函数式F1的原始码FS1以及一第二函数式F2的原始码FS2。随机存储存储器26包含有多个存储器区块(memory block)26a、26b、26c,其中存储器区块26a、26b、26c分别具有一相对应的首标26ah、26bh、26ch。请注意,图3所示的计算机系统20与图1所示的计算机系统10中的同名元件具有相同的功能,因此其功能与操作不再重复赘述。本实施例中,寄存器式存储器28内除了纪录微处理器22编译第一函数式F1与第二函数式F2所产生的第一函数式执行码FE1及第二函数式执行码FE2外,其另存储有一符号配置表ST,符号配置表ST纪录有第一函数式F1的函数式名称(例如F1),以及第一函数式执行码FE1所对应的一符号地址F1A(也就是第一函数式执行码FE1位于寄存器式存储器28内的存储地址F1A),同样地,符号配置表ST亦会纪录有第二函数式F2的函数式名称(例如F2),以及第二函数式执行码FE2所对应的一符号地址F2A(也就是第二函数式执行码FE2位于寄存器式存储器28内的存储地址F2A),符号配置表ST于本实施例中的用途会于之后的篇幅中详述。请注意,符号配置表ST为现有程序编译操作时必有的元件,因此在不影响本发明技术公开的情况下,符号配置表ST的详细建置过程不再赘述。
请同时参阅图3、图4以及图5,图4为本发明查询存储器区块16b所对应的函数式的查询方法于一第一阶段的流程图,而图5为本发明查询存储器区块16b所对应的函数式的查询方法于一第二阶段的流程图。本发明查询方法的工作包含有两个阶段:第一阶段与第二阶段,其各自包含的步骤如下:
第一阶段:
步骤200:第一阶段开始;
步骤202:将返回地址RA存储于存储器区块26b的首标26bh中;以及
步骤204:第一阶段结束。
当一工程人员(例如程序设计师)查觉到可能有存储器遗失的现象时,则开始控制计算机系统20执行下列步骤:
第二阶段:
步骤206:第二阶段开始;
步骤208:读取存储器区块26b的首标内26bh所纪录的返回地址RA;
步骤210:依据返回地址RA与符号配置表ST中的符号地址F1A,判断出存储器区块16b于第一函数式执行码FE1执行时配置给第一函数式F1;以及
步骤212:第二阶段结束。
上述第一阶段的工作(如图4所示)详细说明如下。举例来说,寄存器式存储器28中一部份的空间用来存放对应第一函数式F1的第一函数式执行码FE1,行号L1部分的执行码即是存放于寄存器式存储器28的地址A1处,行号L2部分的执行码即是存放于寄存器式存储器28的地址A2处,而寄存器式存储器28的地址B1处所存放的是对应第二函数式F2的第二函数式执行码FE2。
本实施例中,当一程序执行时,若计算机系统20执行第一函数式执行码FE1的内容到了对应行号L1的部分,亦即寄存器式存储器28的地址A1中所存储的内容时,则第一函数式F1需调用第二函数式F2,此时计算机系统20会同时做两个动作:控制程序的执行点跳跃(branch)到地址B1,以及将地址A2视为第二函数式F2(第二函数式执行码FE2)的返回地址RA,并纪录地址A2在一返回地址寄存器(LR Register)内。因此,计算机系统20将该返回地址寄存器内所纪录的第二函数式F2(第二函数式执行码FE2)的返回地址RA(其值为地址A2)存储于存储器区块26b中的首标26bh(步骤202),请注意,于其他实施例中,本发明亦可将该返回地址RA纪录于一堆栈(stack)而非一返回地址寄存器内,以及该堆迭可存储于寄存器式存储器28或于微处理器22可存取到的任何存储装置中。之后,计算机系统20开始执行寄存器式存储器28中地址B1的内容,也就是开始执行第二函数式执行码FE2。当第二函数式执行码FE2执行完毕后,执行点会跳回该返回地址寄存器内所记录的地址A2,继续执行第一函数式F1的第L2行(第L1行的下一行),亦即执行第一函数式执行码FE1中对应于行号L2的部分。请注意,因为返回地址RA是在程序执行中动态地取得,因此不会像现有技术一般地需要占用寄存器式存储器28的空间做额外的记录,亦即记录如图1所示的假指令__FILE__与__LINE__,所以本发明所提出的方法可避免造成计算机系统20的负担。
当工程人员(例如程序设计师)查觉到可能有存储器遗失的现象时,工程人员必须查看每一个存储器区块的首标,以找出出现不正常工作的已配置存储器区块,也就是有应该归还给计算机系统20却尚未归还的存储器区块,于此一实施例中,假设存储器区块26b为上述不正常工作的存储器区块,因此,工程人员可从存储器区块26b的首标26bh读取出其所记录的返回地址RA(步骤208),然而,此时尚无法得知存储器区块26b是由哪个函数式要求计算机系统20所配置,因此工程人员便依据返回地址RA,从符号配置表ST中所有小于返回地址RA的数值中选取出一最大数值,该最大数值对应符号地址F1A,因此可知记录有返回地址RA的存储器区块26b被计算机系统20配置给符号地址F1A所对应的第一函数式F1(步骤210)。
上述实施例中,本发明所提出的方法应用于处理存储器遗失的问题,然而,本发明所提出的方法亦可用于纪录调用堆栈(call stack)或是系统安全方面功能的设计,例如设定某些开放函数式仅允许特定模组调用等等方面的应用,均属本发明的范畴。
相较于现有技术,本发明查询方法完全不需要占用任何额外的非易失存储器空间,且相较于现有方法的存储器配置信息,本发明查询方法纪录于存储器区块的首标内的存储器配置信息仅为一个返回地址,因此仅需占用存储器区块的首标内四个字节(4bytes)的空间,即能达到准确且快速的找到该已配置的存储器区块由哪一函数式要求计算机系统所配置,因此,应用本发明查询方法的计算机系统具有较低的系统负担,此外,本发明查询方法能降低时间与存储器空间的成本以进一步地提高计算机系统的执行效能与执行速度。
以上所述仅为本发明的优选实施例,凡依本发明权利要求所进行的等效变化与修改,皆应属本发明的涵盖范围。
Claims (8)
1.一种查询方法,用来查询一计算机系统的一存储器中的一存储器区块所对应的一函数式,该存储器包含有多个存储器区块,且存储一第一函数式执行码、一第二函数式执行码与一符号配置表,该计算机系统所执行的该第一函数式执行码调用该第二函数式执行码以要求该计算机系统将一第一存储器区块配置给该第一函数式执行码,该符号配置表纪录该第一函数式执行码所对应的一符号地址,该查询方法包含有:
(a)纪录该第二函数式执行码的一返回地址于该存储器中一预定存储器区块中;以及
(b)自该预定存储器区块读取该返回地址,并依据该返回地址与该符号配置表中的该符号地址,判断出该第一存储器区块配置给该第一函数式执行码。
2.如权利要求1所述的查询方法,其中该预定存储器区块为该第一存储器区块。
3.如权利要求2所述的查询方法,其中步骤(a)将该返回地址记录于该第一存储器区块的一首标中。
4.如权利要求1所述的查询方法,其中该符号配置表纪录该第一函数式执行码的函数式名称与该符号地址,以及该符号地址为该函数式名称于该存储器中的存储地址。
5.一种计算机系统,其包含有:
一存储器,用来存储一第一函数式执行码、一第二函数式执行码与一符号配置表,该符号配置表纪录该第一函数式执行码所对应的一符号地址,该存储器包含有多个存储器区块;以及
一运算单元,耦接于该存储器,用来执行该第一函数式执行码与该第二函数式执行码,该第一函数式执行码调用该第二函数式执行码以要求将一第一存储器区块配置给该第一函数式执行码,并将该第二函数式执行码的一返回地址存储于该存储器中一预定存储器区块中,其中该运算单元自该预定存储器区块读取该返回地址,并依据该返回地址与该符号配置表中的该符号地址来判断该第一存储器区块配置给该第一函数式执行码。
6.如权利要求5所述的计算机系统,其中该预定存储器区块为该第一存储器区块。
7.如权利要求6所述的计算机系统,其中该运算单元将该返回地址记录于该第一存储器区块的一首标中。
8.如权利要求5所述的计算机系统,其中该符号配置表纪录该第一函数式执行码的函数式名称与该符号地址,以及该符号地址为该函数式名称于该存储器中的存储地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510097676 CN1924828A (zh) | 2005-08-31 | 2005-08-31 | 判断存储器区块所对应函数式的查询方法及计算机系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510097676 CN1924828A (zh) | 2005-08-31 | 2005-08-31 | 判断存储器区块所对应函数式的查询方法及计算机系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1924828A true CN1924828A (zh) | 2007-03-07 |
Family
ID=37817478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200510097676 Pending CN1924828A (zh) | 2005-08-31 | 2005-08-31 | 判断存储器区块所对应函数式的查询方法及计算机系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1924828A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107168884A (zh) * | 2016-03-08 | 2017-09-15 | 东芝存储器株式会社 | 存储系统、信息处理系统及非易失性存储器的控制方法 |
-
2005
- 2005-08-31 CN CN 200510097676 patent/CN1924828A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107168884A (zh) * | 2016-03-08 | 2017-09-15 | 东芝存储器株式会社 | 存储系统、信息处理系统及非易失性存储器的控制方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100518584B1 (ko) | 공유 라이브러리 시스템 및 상기 시스템 구축 방법 | |
US7343598B2 (en) | Cache-conscious coallocation of hot data streams | |
EP2487585B1 (en) | Method and device for dynamically loading relocatable file | |
US7404182B1 (en) | Deferring and combining write barriers for a garbage-collected heap | |
US11573894B2 (en) | Tracking garbage collection states of references | |
CN1281562A (zh) | 改进的闪速文件系统 | |
WO2010014981A2 (en) | Method and apparatus for detection and optimization of presumably parallel program regions | |
US20100186001A1 (en) | Method and apparatus for native method calls | |
US9921959B2 (en) | Efficient reference classification and quick memory reuse in a system that supports concurrent garbage collection | |
US7028293B2 (en) | Constant return optimization transforming indirect calls to data fetches | |
US20060101437A1 (en) | Data processing device and method | |
Ducournau | Implementing statically typed object-oriented programming languages | |
US20040015864A1 (en) | Method and system for testing memory operations of computer program | |
CN1492320A (zh) | Windows程序异常捕获及定位方法 | |
CN1924828A (zh) | 判断存储器区块所对应函数式的查询方法及计算机系统 | |
US6499094B1 (en) | Management of memory heap space for data files accessible to programs operating in different addressing modes | |
CN111190658B (zh) | 一种基于片内执行且在不具有MMU的SoC片上支持应用程序动态加载的系统 | |
JP2001273141A (ja) | コンピュータシステム、仮想マシン、オブジェクトの実行時表現方法、記憶媒体及びプログラム伝送装置 | |
EP4291988B1 (en) | Tracking frame states of call stack frames including colorless roots | |
EP4288866B1 (en) | Implementing state-based frame barriers to process colorless roots during concurrent execution | |
Chawdhary et al. | Closing the performance gap between doubles and rationals for octagons | |
US11513954B2 (en) | Consolidated and concurrent remapping and identification for colorless roots | |
CN1877518A (zh) | 于一计算机系统执行一函数时找出函数呼叫堆栈的方法 | |
CN116991415A (zh) | 栈空间分配方法、装置、电子设备及可读存储介质 | |
Trepakov et al. | Compact Interface Method Table Layout |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
AD01 | Patent right deemed abandoned | ||
C20 | Patent right or utility model deemed to be abandoned or is abandoned |