第08章程序運(yùn)行時的存儲組織及管理_第1頁
第08章程序運(yùn)行時的存儲組織及管理_第2頁
第08章程序運(yùn)行時的存儲組織及管理_第3頁
第08章程序運(yùn)行時的存儲組織及管理_第4頁
第08章程序運(yùn)行時的存儲組織及管理_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、12S.PO.P語義分析、生成中間代碼語義分析、生成中間代碼生成目標(biāo)程序生成目標(biāo)程序代碼優(yōu)化代碼優(yōu)化語法分析程序語法分析程序詞法分析程序詞法分析程序錯錯誤誤處處理理符符號號表表管管理理編譯程序在編譯階段要為源程序中出現(xiàn)的變量、常量等組編譯程序在編譯階段要為源程序中出現(xiàn)的變量、常量等組織好在織好在運(yùn)行階段的存儲空間運(yùn)行階段的存儲空間將這種組織形式通過生成的將這種組織形式通過生成的目標(biāo)代碼目標(biāo)代碼體現(xiàn)出來體現(xiàn)出來為運(yùn)行階段實現(xiàn)存儲為運(yùn)行階段實現(xiàn)存儲奠定基礎(chǔ)奠定基礎(chǔ)3教學(xué)目標(biāo)教學(xué)目標(biāo) 要求明確靜態(tài)存儲分配和動態(tài)存儲分配的要求明確靜態(tài)存儲分配和動態(tài)存儲分配的含義含義 了解棧式動態(tài)存儲分配和活動記錄的含

2、義了解棧式動態(tài)存儲分配和活動記錄的含義及組成及組成 了解堆式動態(tài)存儲分配的分配方式和管理了解堆式動態(tài)存儲分配的分配方式和管理技術(shù)技術(shù)48.1 8.1 程序運(yùn)行時的存儲組織程序運(yùn)行時的存儲組織8.2 8.2 靜態(tài)存儲分配靜態(tài)存儲分配8.3 8.3 棧式動態(tài)存儲分配棧式動態(tài)存儲分配8.4 8.4 堆式動態(tài)存儲分配堆式動態(tài)存儲分配教學(xué)內(nèi)容教學(xué)內(nèi)容5運(yùn)行時存儲空間的劃分運(yùn)行時存儲空間的劃分代碼空間代碼空間數(shù)據(jù)空間數(shù)據(jù)空間目標(biāo)代碼區(qū)目標(biāo)代碼區(qū)靜態(tài)數(shù)據(jù)區(qū)靜態(tài)數(shù)據(jù)區(qū)運(yùn)行棧區(qū)運(yùn)行棧區(qū) 運(yùn)行堆區(qū)運(yùn)行堆區(qū)67 臨時變量臨時變量 內(nèi)情向量內(nèi)情向量 形式單元形式單元 動態(tài)鏈動態(tài)鏈 返回地址返回地址 靜態(tài)鏈靜態(tài)鏈 局部

3、變量局部變量 連接連接數(shù)據(jù)區(qū)數(shù)據(jù)區(qū) 局部局部數(shù)據(jù)區(qū)數(shù)據(jù)區(qū) SP TOP891) 1) 隱式參數(shù)隱式參數(shù)主要用于和主調(diào)模塊的通訊,在主要用于和主調(diào)模塊的通訊,在一般情況下這個參數(shù)可以是主調(diào)過程的返回一般情況下這個參數(shù)可以是主調(diào)過程的返回地址,或在不能利用寄存器返回函數(shù)值時傳地址,或在不能利用寄存器返回函數(shù)值時傳回函數(shù)返回值。這些信息不會在程序中明顯回函數(shù)返回值。這些信息不會在程序中明顯地出現(xiàn),所以稱為隱式參數(shù)。地出現(xiàn),所以稱為隱式參數(shù)。2) 2) 形式參數(shù)形式參數(shù)部分存放相應(yīng)實在參數(shù)的地址或部分存放相應(yīng)實在參數(shù)的地址或值。值。3) 3) 程序變量部分程序變量部分將作為簡單變量、數(shù)組、記將作為簡單

4、變量、數(shù)組、記錄以及編譯程序所產(chǎn)生的臨時變量的存儲空錄以及編譯程序所產(chǎn)生的臨時變量的存儲空間。間。101112下面我們通過一段下面我們通過一段C C程序的運(yùn)行來說明運(yùn)行棧的變化情況。設(shè)有程序的運(yùn)行來說明運(yùn)行棧的變化情況。設(shè)有C C程序如下:程序如下:real x; 塊塊1int m1(int ind) 塊塊2 int x; x=m2(ind+1);int m2(int j) 塊塊3 int f10; 塊塊4 bool test1; main()塊塊5 int x; x=2; printf(%dn,m1(x/5); (a) (b) (c) (d) (e)131 1、 參數(shù)區(qū)參數(shù)區(qū) 參數(shù)區(qū)保存的內(nèi)

5、容包括:1) 隱式參數(shù)隱式參數(shù):隱式參數(shù)常包含下列幾項: 返回地址:主調(diào)程序中調(diào)用語句的下一條可執(zhí)行語句的地址。 指向前一個活動記錄起始位置的指針:該基地址指針存放該模塊的主調(diào)模塊的活動記錄的基地址,用于確??刂品祷刂髡{(diào)過程時,能使運(yùn)行環(huán)境恢復(fù)到調(diào)用前的格局。 函數(shù)返回值:有的隱式參數(shù)區(qū)包含此項,有的不包括,還有更好的處理返回值的方法 。2) 顯式參數(shù)顯式參數(shù):顯式參數(shù)區(qū)是形式參數(shù)的通訊區(qū)。 形式參數(shù)的傳遞有傳值、傳地址、傳名等方法。有些語言如PASCAL語言即可傳值、也可傳地址。C語言采用的是傳值的方式,這種參數(shù)傳遞方法,實在參數(shù)的值將賦給形式參數(shù)。當(dāng)程序運(yùn)行進(jìn)入一個程序塊時,就要在運(yùn)行棧中

6、為當(dāng)程序運(yùn)行進(jìn)入一個程序塊時,就要在運(yùn)行棧中為此程序塊添加一個活動記錄?;顒佑涗浿谐舜鎯Υ顺绦驂K添加一個活動記錄。活動記錄中除了存儲局部變量外,還包括一個參數(shù)區(qū)和一個局部變量外,還包括一個參數(shù)區(qū)和一個displaydisplay區(qū)。區(qū)。圖圖8.38.3表示了一個典型的活動記錄的概貌。表示了一個典型的活動記錄的概貌。 14210例如,令過程例如,令過程R R的外層為的外層為Q Q,Q Q的外層為的外層為P P,則過程,則過程R R運(yùn)行運(yùn)行時時displaydisplay表的內(nèi)容應(yīng)為:表的內(nèi)容應(yīng)為:15圖圖8.48.4給出了圖給出了圖8.2(e)8.2(e)的運(yùn)行的運(yùn)行棧中各活動記錄的內(nèi)容。棧中

7、各活動記錄的內(nèi)容。塊塊4 4的活動記錄如下:的活動記錄如下:DISPLAYDISPLAY區(qū):區(qū):指針指針d1d1和和d2d2,分,分別指向全局變量區(qū)的地址別指向全局變量區(qū)的地址Abp0Abp0和和Abp3Abp3。隱式參數(shù)區(qū):隱式參數(shù)區(qū):有兩個參數(shù),第有兩個參數(shù),第一個是返回地址,因塊一個是返回地址,因塊4 4不是不是一個獨立的函數(shù),是一嵌套的一個獨立的函數(shù),是一嵌套的塊程序,所以,沒有返回地址,塊程序,所以,沒有返回地址,同樣也沒有形參,第同樣也沒有形參,第2 2個參數(shù)個參數(shù)Abp3Abp3表示在運(yùn)行棧中,前一個表示在運(yùn)行棧中,前一個活動記錄是開始地址為活動記錄是開始地址為Abp3Abp3的

8、的m2m2活動記錄。活動記錄。局部數(shù)據(jù)區(qū):局部數(shù)據(jù)區(qū):f f和和testtest。 塊塊4活動記錄活動記錄abp4abp4 m2活動記錄活動記錄abp3 m1活動記錄活動記錄abp2 main活動記錄活動記錄abp1abp016int fact()int fact() staticstatic int i=5; int i=5; if(i=0) return 1; if(i=0) return 1; else else i-; i-; return( return( (i+1)(i+1)* *fact()fact() ); ); /第第6 6行行 main()main() printf(fac

9、tor of 5!=%dn,fact(); printf(factor of 5!=%dn,fact(); 171819(a)程序運(yùn)行初期:程序運(yùn)行初期: (b)運(yùn)行一段時間后:運(yùn)行一段時間后:當(dāng)有新請求分配內(nèi)存時,有兩種當(dāng)有新請求分配內(nèi)存時,有兩種策略分配策略分配空間:空間: 系統(tǒng)繼續(xù)從高地址的空閑塊中進(jìn)行分配,而不查看已分配給系統(tǒng)繼續(xù)從高地址的空閑塊中進(jìn)行分配,而不查看已分配給用戶的內(nèi)存區(qū)是否已空閑,直到分配無法進(jìn)行用戶的內(nèi)存區(qū)是否已空閑,直到分配無法進(jìn)行(即剩余的空閑塊即剩余的空閑塊不能滿足分配的請求不能滿足分配的請求)時,系統(tǒng)才去回收所有用戶不再使用的空時,系統(tǒng)才去回收所有用戶不再使用的空閑塊。閑塊。1) 用戶使用一旦結(jié)束,便將所占內(nèi)存區(qū)釋放成空閑塊。同時,用戶使用一旦結(jié)束,便將所占內(nèi)存區(qū)釋放成空閑塊。同時,每當(dāng)新的用戶請求分配內(nèi)存時,系統(tǒng)需要巡視整個內(nèi)存中所有每當(dāng)新的用戶請求分配內(nèi)存時,系統(tǒng)需要巡視整個內(nèi)存中所有空閑塊,并從中找出一個空閑塊,并從中找出一個“合適合適”的空閑

溫馨提示

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

最新文檔

評論

0/150

提交評論