存儲管理-覆蓋技術和交換技術
覆蓋技術
基本思想
1.對於一個進程,不需要一開始就把程序的全部指令和數據都裝入內存再執行。
2.程序划分為若干個功能上相對獨立的程序段,按照程序邏輯結構讓那些不需要同時執行的程序段共享同一塊內存區
3.當有關程序段的先頭程序段已經執行結束后,再把后續程序段從外存調入內存覆蓋前面的程序段
要求
程序員提供一個清楚的覆蓋結構。即程序員必須把一個程序划分成不同的程序段,並規定好它們的執行和覆蓋順序。
詳細過程
思想:不相互調用的程序段可以共享同一內存區
例子:
設某進程的程序正文段由A,B,C,D,E和F等6個程序段組成.
由於程序段B不調用C,程序段C也不調用B,因此程序段B和C無需同時駐留在內存,它們可以共享同一內存區。
同理,程序段D、E、F也可共享同一內存區。
內存可以分為兩個部分:
- 常駐內存區:常駐內存部分,與所有被調用程序段有關,不能被覆蓋。這一部分稱為根程序。圖 (b)中,根程序是程序段A
- 覆蓋區
覆蓋技術可以節約內存空間
覆蓋區0由程序段B、C共享,容量50K。
覆蓋區1為程序段F、D、E共享,容量40K。
進程正文段要求內存空間:
A(20K)+B(50K)+F(30K)+C(30K)+D(20K)+E(40K)=190K
采用覆蓋技術,只需110K的內存空間即可開始執行。
交換技術
基本思想
對象是進程,等待狀態的進程駐留內存會造成存儲空間的浪費。因此,有必要把處於等待狀態的進程換出內存。交換技術是實現此目標的常用方法之一。
相對與交換技術的優點
與覆蓋技術相比,交換技術不要求程序員給出程序段之間的覆蓋結構。
交換技術和覆蓋技術的區別
1.交換主要是在不同進程或作業之間進行。
2.覆蓋主要在同一個作業或進程內進行,只能對與覆蓋程序段無關的程序段進行覆蓋。