第九章運行時存儲空間組織_第1頁
第九章運行時存儲空間組織_第2頁
第九章運行時存儲空間組織_第3頁
第九章運行時存儲空間組織_第4頁
第九章運行時存儲空間組織_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

11三月2024第九章運行時存儲空間組織§9.1目標程序運行時的活動9.1.1過程的活動先討論一個過程的靜態(tài)源程序和它的目標程序在運行時的活動之間的關(guān)系。

過程定義僅僅是一個說明;而過程調(diào)用是過程體的一次執(zhí)行。過程的活動:是指該過程的一次執(zhí)行。即每次執(zhí)行一個過程體,就產(chǎn)生該過程體的一個活動。一個活動的生存期:指從執(zhí)行該過程體的第一步操作到最后一步操作之間的這段時間?;顒又g的關(guān)系一個過程是遞歸的:如果該過程在還沒有退出當前的活動時,又開始了它的一次新的活動。即在某個時刻,可能有該過程的幾個活動在活躍著。如果a和b是兩個過程的活動,則它們的生存期或者是不重疊的,或者是嵌套的。9.1.2參數(shù)傳遞如何將實際參數(shù)傳遞給相應的形式參數(shù)?傳地址(callbyreference) 傳值(callbyvalue) 傳名(callbyname)/宏

復制-恢復(copy-restore)/得結(jié)果§9.2運行時存儲器的劃分9.2.1運行時存儲器的劃分目標代碼靜態(tài)數(shù)據(jù)?!压芾磉^程的活動存放動態(tài)數(shù)據(jù)9.2.2活動記錄

為了管理過程在一次執(zhí)行中所需要的信息,使用一個連續(xù)的存儲塊,這個存儲塊就稱為活動記錄。用一個活動記錄表示該活動的相關(guān)信息,并將其壓入棧。臨時單元內(nèi)情向量局部變量形式單元靜態(tài)鏈動態(tài)鏈返回地址SPTOP活動記錄的大小在編譯時可確定。9.2.3存儲分配策略不同的編譯程序關(guān)于數(shù)據(jù)空間的存儲分配策略可能不同。常用的存儲分配策略有: 靜態(tài)分配策略 棧式動態(tài)分配策略 堆式動態(tài)分配策略

由關(guān)于名稱的作用域和生成期的定義規(guī)則決定?!?.3靜態(tài)存儲分配如果在編譯時就能確定一個程序在運行時所需的存儲空間的大小,則在編譯時就能夠安排好目標程序運行時的全部數(shù)據(jù)空間,并能確定每個數(shù)據(jù)項的單元地址。存儲空間的這種分配方法叫做“靜態(tài)分配”?!?.4簡單的棧式存儲分配先考慮一種簡單的程序語言的實現(xiàn)。假設(shè)該語言不允許過程嵌套,但允許過程遞歸調(diào)用。例如:C語言的程序結(jié)構(gòu)intx,y;main(){inta,b;……}voidR(){charch;……}charQ(){floatx;……}這類語言,關(guān)于局部名稱的存儲分配,可以直接采用棧式存儲分配策略。使用棧式存儲分配,即:把存儲組成一個棧,運行時,每當進入一個過程時,就把它的活動記錄壓入棧,從而形成過程工作時的數(shù)據(jù)區(qū)。一個過程的活動記錄的大小在編譯時是可靜態(tài)確定的,當該活動結(jié)束時,則其活動記錄也將出棧。例如:圖9.13C語言程序的存儲組織(P255)

9.4.1C語言的活動記錄C語言的活動記錄有四項:

連續(xù)數(shù)據(jù)(老SP值返回地址) 參數(shù)個數(shù) 形式參數(shù) 過程的局部變量、數(shù)組內(nèi)情向量、臨時工作單元其結(jié)構(gòu)形式見:圖9.14(P256)§9.5嵌套過程語言的棧式實現(xiàn)例如:圖9.15中PASCAL程序。(P258)0P1Q1S2R9.5.1非局部名字的訪問的實現(xiàn)由于允許過程定義是嵌套的,則一個過程可以引用包圍它的任一外層過程中所定義的變量或數(shù)組。為了在活動記錄中查找非局部名字所對應的存儲空間,就必須知道它的所有外層過程的最新活動記錄的地址。一、靜態(tài)鏈臨時單元內(nèi)情向量局部變量形式單元形參個數(shù)靜態(tài)鏈返回地址動態(tài)鏈SPTOP直接外層的最新活動記錄的基地址調(diào)用前的活動記錄的基地址例如圖.15程序運行時棧的變化過程。ic00返回地址0xa0返回地址0SPTOP①P調(diào)用S時S的活動記錄P的活動記錄109876543210ib10返回地址5

…………SPTOP②S調(diào)用R時S的活動記錄P的活動記錄16151413121105R的活動記錄二、嵌套層次形式表為了提高訪問非局部量的速度,還可引用一個指針數(shù)組,即display表。臨時單元內(nèi)情向量局部變量display形式單元形參個數(shù)全局display返回地址動態(tài)鏈SPTOP調(diào)用前的活動記錄的基地址§9.6堆式動態(tài)存儲分配問題:如果一個程序語言允許用戶自由的申請或退還數(shù)據(jù)空間(如new/delete),或者不僅有過程而且還有進程的程序結(jié)構(gòu),這種情況下,棧式的動態(tài)分配就不適用了,而通常使用堆式的動態(tài)存儲分配方案。9.6

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論