運行時的存儲組織與分配_第1頁
運行時的存儲組織與分配_第2頁
運行時的存儲組織與分配_第3頁
運行時的存儲組織與分配_第4頁
運行時的存儲組織與分配_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1 運行時的存儲組織與分配編譯程序編譯程序必須為源程序中所出現(xiàn)的量必須為源程序中所出現(xiàn)的量(常量常量,變量及數(shù)組變量及數(shù)組等等等等)分配運行時的存儲空間分配運行時的存儲空間.分配方案選擇的是否得當分配方案選擇的是否得當將關系到資源的合理使用將關系到資源的合理使用, ,從從而會影響到程序的運行效率而會影響到程序的運行效率. .存儲分配的策略有存儲分配的策略有與與兩類兩類.適合于無動態(tài)申請內存適合于無動態(tài)申請內存,無可變長數(shù)組無可變長數(shù)組,無遞歸無遞歸調用的程序調用的程序.如如等等.分配適用面廣是目前最常用的分配方案分配適用面廣是目前最常用的分配方案又有又有棧式分配棧式分配與與堆式分配堆式分配兩種

2、兩種.2:3w 目標代碼的長度在編譯時就可確定目標代碼的長度在編譯時就可確定,可放在可放在內內;w 對于在編譯時已知大小的數(shù)據對象對于在編譯時已知大小的數(shù)據對象(如如等等等等), 也可放在也可放在內內;w 為提高運行效率為提高運行效率,應盡可能多地分配應盡可能多地分配. 的分配一般可全部放在的分配一般可全部放在內內.w 像像這類語言的實現(xiàn)這類語言的實現(xiàn),由于子程序允許由于子程序允許地調地調用用,因此應用一因此應用一來動態(tài)地管理內存分配來動態(tài)地管理內存分配.w 另外另外和和 還允許還允許的內存的內存,這種數(shù)據的這種數(shù)據的空間可由空間可由實現(xiàn)實現(xiàn).4 活動記錄w 執(zhí)行過程時所需進行的信息管理,是通

3、過實現(xiàn)的,連續(xù)存儲在塊中,其內容見右圖。w 以過程為單位的動態(tài)存儲分配方案:n當一過程被調用時,就把其壓入運行時存儲棧頂,返回時彈出之。5 存放目標程序臨時變量的值存放目標程序臨時變量的值; 存放本次執(zhí)行中的局部數(shù)據、簡單變量、存放本次執(zhí)行中的局部數(shù)據、簡單變量、數(shù)組內情向量等數(shù)組內情向量等; 保存在調用該過程前有關機器狀態(tài)的信保存在調用該過程前有關機器狀態(tài)的信息息,包括各種寄存器的當前值及返回地址等包括各種寄存器的當前值及返回地址等; 為訪問其它活動記錄中所存放的非局為訪問其它活動記錄中所存放的非局部數(shù)據提供鏈地址部數(shù)據提供鏈地址(PASCAL中用到中用到); 用于指向主調過程的活動記錄用于

4、指向主調過程的活動記錄; 存放主調過程為被調過程提供的實參信息存放主調過程為被調過程提供的實參信息; 被調過程用來為主調過程存放返回值的域被調過程用來為主調過程存放返回值的域;6w 每個每個都可分為都可分為和和. 用于存放在編譯時就能確定其體積的用于存放在編譯時就能確定其體積的量量,如如簡單變量、常界數(shù)組簡單變量、常界數(shù)組等等; 適用于存放只有在運行時才能確定其適用于存放只有在運行時才能確定其體積的量體積的量,如如可變數(shù)組可變數(shù)組等等.w 雖然雖然可變數(shù)組可變數(shù)組的體積在動態(tài)運行時才能確定的體積在動態(tài)運行時才能確定,但但其地址的訪問卻在編譯時就可確定其地址的訪問卻在編譯時就可確定,即通過即通過

5、的的來訪問來訪問.因為與它的體積因為與它的體積有關的信息有關的信息(如如)是在是在存放的存放的.77.2 w 7.1節(jié)所示的數(shù)據區(qū)的組織節(jié)所示的數(shù)據區(qū)的組織,各自各自使用了不同的存儲分配策略使用了不同的存儲分配策略:87.2.1 w 若在編譯階段就能確定源程序中各個數(shù)據實體的存儲空若在編譯階段就能確定源程序中各個數(shù)據實體的存儲空間大小,則可以采用較簡單的間大小,則可以采用較簡單的w 適合適合的語言應具備下述條件:的語言應具備下述條件:。w 滿足上述條件的語言有滿足上述條件的語言有等。等。w 由于過程調用無遞歸,過程的由于過程調用無遞歸,過程的可直接安排在程可直接安排在程序代碼之后,執(zhí)行時不必進

6、行運行時的存儲管理。序代碼之后,執(zhí)行時不必進行運行時的存儲管理。9語言的程序中各程序段均可獨立進程序中各程序段均可獨立進行編譯;行編譯;w 在編譯時,為程序段中的量分配單元的在編譯時,為程序段中的量分配單元的方法是,為每個量確定一個整數(shù)對方法是,為每個量確定一個整數(shù)對,其中,其中 指明數(shù)據區(qū)編號,指明數(shù)據區(qū)編號, 指明指明該存儲單元在數(shù)據區(qū)相對于首單元的偏該存儲單元在數(shù)據區(qū)相對于首單元的偏移量,并把此對填入符號表中。移量,并把此對填入符號表中。w 各數(shù)據區(qū)首單元地址各數(shù)據區(qū)首單元地址,待各程,待各程序段全部編譯完后再由連接程序指定。序段全部編譯完后再由連接程序指定。局部數(shù)據區(qū)內容見右圖。局部數(shù)

7、據區(qū)內容見右圖。101112345617231015182212適用于允許遞歸調用的程適用于允許遞歸調用的程序設計語言序設計語言;w 引入一運行棧引入一運行棧,w 為讓過程能訪問本次調用記錄中數(shù)為讓過程能訪問本次調用記錄中數(shù)據據,可設一指針可設一指針指向當前正在執(zhí)行指向當前正在執(zhí)行的過程之調用記錄的某一特定單元的過程之調用記錄的某一特定單元.w 訪問本過程量訪問本過程量 可通過訪問地址可通過訪問地址實現(xiàn)實現(xiàn).其中其中, 是是 的相對地址的相對地址SPSP13當被調過程執(zhí)行結束后,程序返回到當被調過程執(zhí)行結束后,程序返回到,此時,此時,將恢復為調用前的狀態(tài);將恢復為調用前的狀態(tài);為了能夠恢復原有

8、狀態(tài),每次調用發(fā)生時,應將為了能夠恢復原有狀態(tài),每次調用發(fā)生時,應將原來的原來的值保存起來(作為被調過程的值保存起來(作為被調過程的的一項內容);的一項內容);為保證過程返回時能夠從調用點正確執(zhí)行下去,為保證過程返回時能夠從調用點正確執(zhí)行下去,應把應把保存在保存在中。中。14都被視為過程的一都被視為過程的一次次。一過程一過程 的一次的一次的的,。在在中,一過程中,一過程 調用過程調用過程 ,無論無論 是否調用其它過程,控制將最是否調用其它過程,控制將最終返回到終返回到 ,即,即 的活動是的活動是 的的。15w 綜上所述,若綜上所述,若是兩個過程的活動,則它們的是兩個過程的活動,則它們的生存期生

9、存期。w 可通過一棵樹(稱為可通過一棵樹(稱為)來描述控制進入)來描述控制進入和離開活動的途徑,在樹中:和離開活動的途徑,在樹中:16program aaa; procedure B(s1,s2); begin end; procedure D(s3,s4); begin end; procedure C(s5,s6); begin end; procedure A(s7,s8); begin end;begin end.1718 w 當程序語言允許在運行時為變量當程序語言允許在運行時為變量,采用采用是最有效的解決方案是最有效的解決方案.,為正運行的程序劃出適當大的空為正運行的程序劃出適當大的

10、空間間(稱為稱為),每當程序申請空間時每當程序申請空間時,就從堆的就從堆的找出一塊空間分配給程序找出一塊空間分配給程序,每當釋放時則回收之每當釋放時則回收之.w 在處理鏈表結構時在處理鏈表結構時,常常隨機地插入或刪除一些結點常常隨機地插入或刪除一些結點,利利用指針變量和結構類型用指針變量和結構類型,可動態(tài)地生成新結點可動態(tài)地生成新結點(使用使用函數(shù)函數(shù)), 或刪除之或刪除之(使用使用函數(shù)函數(shù)).19w 例如例如 struct char data; struct *next;定義了鏈表的定義了鏈表的結點結點,下面函數(shù)可在表尾添加新結點下面函數(shù)可在表尾添加新結點: w 還可用下面的函數(shù)刪除表頭結點還可用下

溫馨提示

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

評論

0/150

提交評論