操作系統 內存管理 覆蓋與交換技術
- 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協議進行許可,轉載請保留此文章鏈接