新四季網

判斷存儲器區塊所對應函數式的查詢方法及計算機系統的製作方法

2023-10-05 06:08:24

專利名稱:判斷存儲器區塊所對應函數式的查詢方法及計算機系統的製作方法
技術領域:
本發明提供一種用以查詢一存儲器區塊所對應的函數式的方法及系統,尤指一種將一返回地址紀錄於一存儲器區塊的首標以判斷一存儲器區塊所對應的函數式的查詢方法及計算機系統。
背景技術:
在一計算機系統中,動態配置一存儲器區塊給一函數式(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)的空間,即能達到準確且快速的找到該已配置的存儲器區塊由哪一函數式要求計算機系統所配置,因此,應用本發明查詢方法的計算機系統具有較低的系統負擔,此外,本發明查詢方法能降低時間與存儲器空間的成本以進一步地提高計算機系統的執行效能與執行速度。
以上所述僅為本發明的優選實施例,凡依本發明權利要求所進行的等效變化與修改,皆應屬本發明的涵蓋範圍。
權利要求
1.一種查詢方法,用來查詢一計算機系統的一存儲器中的一存儲器區塊所對應的一函數式,該存儲器包含有多個存儲器區塊,且存儲一第一函數式執行碼、一第二函數式執行碼與一符號配置表,該計算機系統所執行的該第一函數式執行碼調用該第二函數式執行碼以要求該計算機系統將一第一存儲器區塊配置給該第一函數式執行碼,該符號配置表紀錄該第一函數式執行碼所對應的一符號地址,該查詢方法包含有(a)紀錄該第二函數式執行碼的一返回地址於該存儲器中一預定存儲器區塊中;以及(b)自該預定存儲器區塊讀取該返回地址,並依據該返回地址與該符號配置表中的該符號地址,判斷出該第一存儲器區塊配置給該第一函數式執行碼。
2.如權利要求1所述的查詢方法,其中該預定存儲器區塊為該第一存儲器區塊。
3.如權利要求2所述的查詢方法,其中步驟(a)將該返回地址記錄於該第一存儲器區塊的一首標中。
4.如權利要求1所述的查詢方法,其中該符號配置表紀錄該第一函數式執行碼的函數式名稱與該符號地址,以及該符號地址為該函數式名稱於該存儲器中的存儲地址。
5.一種計算機系統,其包含有一存儲器,用來存儲一第一函數式執行碼、一第二函數式執行碼與一符號配置表,該符號配置表紀錄該第一函數式執行碼所對應的一符號地址,該存儲器包含有多個存儲器區塊;以及一運算單元,耦接於該存儲器,用來執行該第一函數式執行碼與該第二函數式執行碼,該第一函數式執行碼調用該第二函數式執行碼以要求將一第一存儲器區塊配置給該第一函數式執行碼,並將該第二函數式執行碼的一返回地址存儲於該存儲器中一預定存儲器區塊中,其中該運算單元自該預定存儲器區塊讀取該返回地址,並依據該返回地址與該符號配置表中的該符號地址來判斷該第一存儲器區塊配置給該第一函數式執行碼。
6.如權利要求5所述的計算機系統,其中該預定存儲器區塊為該第一存儲器區塊。
7.如權利要求6所述的計算機系統,其中該運算單元將該返回地址記錄於該第一存儲器區塊的一首標中。
8.如權利要求5所述的計算機系統,其中該符號配置表紀錄該第一函數式執行碼的函數式名稱與該符號地址,以及該符號地址為該函數式名稱於該存儲器中的存儲地址。
全文摘要
本發明提供一種用以查詢一計算機系統的一存儲器中的一存儲器區塊所對應的一函數式的查詢方法及其計算機系統。該計算機系統所執行的一第一函數式執行碼調用一第二函數式執行碼以要求該計算機系統將一第一存儲器區塊配置給該第一函數式執行碼,一符號配置表紀錄該第一函數式執行碼所對應的一符號地址,該查詢方法包含有紀錄該第二函數式執行碼的一返回地址於該存儲器中一預定存儲器區塊中,之後自該預定存儲器區塊讀取該返回地址,以及依據該返回地址與該符號配置表中的該符號地址,判斷出該第一存儲器區塊配置給該第一函數式執行碼。
文檔編號G06F12/02GK1924828SQ20051009767
公開日2007年3月7日 申請日期2005年8月31日 優先權日2005年8月31日
發明者林昂賢 申請人:明基電通股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀