作業系統 記憶體管理 覆蓋與交換技術
- 2019 年 12 月 23 日
- 筆記
覆蓋技術
覆蓋技術是指一個程式的若干程式段和幾個程式的某些部分共享一個存儲空間。覆蓋技術的實現是把程式分為若干個功能上相對獨立的程式,按照其自身的邏輯結構使那些不會同時執行的程式段共享同一塊記憶體區域。未執行的程式段先保存在磁碟上,當有關程式段的前一部分執行結束後,把後續程式段調入記憶體,覆蓋前面的程式段。
覆蓋技術是用戶程式自己附加的控制。要把一個程式劃分成不同的程式段,並規定好他們的執行和覆蓋順序。作業系統則根據程式設計師提供的覆蓋結構,完成程式段之間的覆蓋。
該程式正文段所需要的記憶體空間是A(20KB)+B(50KB)+F(30KB)+C(30KB)+D(20KB)+E(40KB)=190KB,但是在採用了覆蓋技術後只需要A(20KB)+B(50KB)+E(40KB)=110KB佔用空間。

覆蓋技術主要用於系統程式的記憶體管理上,MS-DOS系統分為兩個部分。
- 作業系統中經常要用到的基本部分,它們常駐在記憶體且佔用固定區域。
- 不太經常使用的部分,它們存放在磁碟上,當調用它們時才被調入記憶體覆蓋區。
交換技術
交換技術:在分時系統中,用戶的進程比記憶體能容納的數量要多,這就需要在磁碟上保存那些記憶體放不下的進程。在需要運行這些進程時,再將它們裝入記憶體。
進程從記憶體移到磁碟並再移動回記憶體稱為交換。交換技術是進程在記憶體與外存之間的動態調度,是由作業系統控制的。
後備存儲區(又稱盤交換區)。
目的:儘可能達到」足夠快的交換進程,以使當CPU調度程式想重新調度CPU時,總有進程在記憶體中處於就緒(準備執行)狀態「的理想狀態,從而提高記憶體利用率。
交換技術的原理:
(1)換出進程的選擇:系統需要將記憶體中的進程換出時,應該選擇那個進程?
根據時間片輪轉法或基於優先數的調度演算法來選擇要換出的進程。
(2)交換時間的確定
在記憶體空間不夠或有不夠的危險時,還出記憶體中的部分進程到外存,以釋放所需要的記憶體。
(3)交換空間的分配
在一些系統中,當進程在記憶體中時,不再外塔分配磁碟空間。當它被換出時,必須為它分配磁碟交換空間。
在另一些系統中,進程一但創建,就分配給它磁碟上的交換空間。無論何時程式被換出,他都被換到已經為它分配的空間,而不是每次換到不同的空間。
(4)換入進程換回記憶體時位置的確定
絕對地址:在原來的位置上;
相對地址:可再進行地址重定位。
交換技術的缺點:
由於交換時需要花費大量的CPU時間,這將影響對用戶的響應時間,因此,減少交換的資訊量是交換技術的關鍵問題。
合理的做法:
在外存中保留每個程式的交換副本,換出時僅將執行時修改過的部分複製到外存。
覆蓋技術和交換技術的發展導致了虛擬存儲技術的出現。
本文鏈接:https://www.debuginn.cn/270.html
本文採用CC BY-NC-SA 3.0 Unported協議進行許可,轉載請保留此文章鏈接