動態分割槽、虛擬記憶體、分頁儲存、分段儲存 簡介
動態分割槽的特點:
分割槽的個數和大小可變
存在記憶體碎片:動態分割槽,就是動態的判斷某一塊的記憶體空間能否儲存,不會找到剛剛好的,一般都是能放進去就放了,其他剩下的區域,又交給其他程式進行儲存,然後幾輪下來,就會存在很小的空間,無法利用,這就是記憶體的碎片
虛擬記憶體管理的目標
使得大的程式能在較小的記憶體中執行
使得多個程式能在較小的記憶體中執行
使得多個程式併發執行時地址不衝突
使得記憶體利用效率高
虛擬記憶體管理實現的思路
在程式執行時,只把當前必要的很小一部分程式碼和資料裝入記憶體中。其餘程式碼和資料需要時再裝入。不在執行的程式碼和資料及時從記憶體中刪除
頁式虛擬儲存管理
將程式的邏輯地址空間(有的又叫做虛擬地址空間)劃分為固定大小的頁(page),而實體記憶體劃分為同樣大小的頁框(pageframe)。程式載入時,可將任意一頁放人記憶體中任意一個頁框,這些頁框不必連續,從而實現了離散分配。也就是把記憶體等分成N份,存放執行的程式時,按分成的快放置即可。
把程序空間和記憶體開年化成等大小的小片,小片的典型大小:1k,2k或4k
程序的小片——頁(虛擬頁或頁面)
記憶體的小片——頁框(物理頁)
記憶體以頁框為單位分配使用
程序以頁為單位裝入記憶體
頁式虛擬儲存管理:把程序全部頁面裝入虛擬儲存器,執行時先把部分頁面裝入實際記憶體,然後,根據執行行為,動態調入不在主存的頁,同時進行必要的頁面調出,是現代OS的主流儲存管理技術。
當主存空間已滿而又需要裝入新頁時,頁式虛擬儲存管理必須按照一定的演算法把已在主存的一些頁調出去。選擇淘汰頁的工作稱為頁面排程 ,選擇淘汰頁的演算法稱為頁面排程演算法,頁面排程演算法設計不當,會出現剛被淘汰的頁面立即又要調入,並如此反覆,這種現象稱為抖動或顛簸。
最佳頁面替換演算法 、 先進先出頁面排程演算法 、 最近最少用頁面排程演算法
段式儲存管理
把程序按邏輯意義劃分為多個段,每段有段名,長度不定。程序由多段組成
段式程式設計:把一個程式設計成多個段(程式碼段、資料段、堆疊段等),使用者可以自己應用段覆蓋技術擴充記憶體空間使用量。每一段都可以從“0”開始編址,段內的地址是連續的
段式記憶體管理系統的記憶體分配
以段為單位裝入,每段分配連續的記憶體,段和段不要求相鄰
段式虛擬儲存管理:把程序的所有分段都存放在輔存中,程序執行時先把當前需要的一段或幾段裝入主存,在執行過程中訪問到不在主存的段時再把它們動態裝入
段式系統的缺點:
段需要連續的儲存空間
段的最大尺寸受到記憶體大小的限制
段與頁的區別:
段長可變,頁面大小固定
段的劃分有意義,頁面無意義
段方便共享,頁面不方便共享
段使用者可見,頁面使用者不可見
段偏移有溢位,頁偏移就下一頁無溢位
段頁式儲存系統
在段式儲存中結合頁式儲存管理技術——在段中劃分頁面