作業系統 5 記憶體管理

2021-08-20 16:54:59 字數 2372 閱讀 1358

記憶體管理需要實現:重定位,保護,共享,邏輯組織,物理組織

記憶體管理技術:分割槽(固定/動態分割槽),分頁(簡單分頁/虛擬記憶體分頁),分段(簡單分段/虛擬記憶體分段)。

1.2.1 碎片與壓縮

碎片fragmentation:

通過壓縮compaction解決外碎片:

1.2.2 分配策略

首次適配(first fit)

分配時,從鏈首開始查詢,從第乙個滿足要求的空閒區中劃分出程序需要的大小並分配,其餘部分作為乙個新空閒區。

低位址端遺留許多碎片;高位址端有大空閒區

下次適配(next fit)

分配時,從上次掃瞄結束處繼續查詢,從第乙個滿足要求的空閒去中分配。

平均查詢時間縮短,空間利用比ff均衡

最佳適配(best fit

最差適配(worst fit)

!#:ff,nf,bf比較:ff最常用

記憶體分配上,ff最快。(不需調整新空閒區位置)

記憶體**上,ff最佳。(合併空閒區容易)

nf比ff更均衡地利用記憶體,碎片遍布記憶體,但使高位址端的大空閒區很快被劃分,壓縮次數多。

查詢最合適空閒區時,bf最快,但碎片最多,壓縮最頻繁。**時,合併相鄰空閒區可能要遍歷空閒區鍊錶。通常,bf的效能最差。

?#:設空閒分割槽的平均個數是h,則:

最佳適配,首次適配,下次適配的平均查詢長度時h/2。

最差適配的平均查詢長度時1。

unix、linux採用夥伴系統分配記憶體頁框(幀)。

具體演算法過程:

程序進行時,動態載入及重定位:

基址+界限(base register+bounds register):最小合法記憶體位址+最大合法記憶體位址。

基址+限長(base register+limit register):最小合法記憶體位址+位址範圍的大小。

q:採用固定分割槽管理的最大缺點記憶體利用率不高

頁框(幀frame)記憶體劃分為大小相等的物理塊。

頁表:記錄程序的每個頁存放在哪乙個記憶體幀。

## 位圖:每一bit表示乙個記憶體幀狀態。0-空閒,1-占用。

記憶體幀號i=字型大小*字長+位號

字型大小=int(幀號/字長),位號=幀號mod字長。

程式設計師或編譯器將程式按邏輯上有完整意義的段劃分。段長不固定,每段有自己的段號,每段都從0開始編址共享保護容易

段式管理的記憶體分配與釋放:

段表:每個程序有乙個段表。電表結構如下;

硬體支援:

段表長度暫存器:當段號s<段表長度時,段號s合法。如果段號s≥段表長度,則越界。

!# 段基址b,段長l,合法的邏輯位址a是0<=a < l

合法的實體地址r是b <= r

作業系統記憶體管理

作業系統記憶體管理 一 程序的虛擬位址空間 每個程序都被賦予自己的虛擬位址空間,對於32位程序來說,這個位址空間為4g,因此程序中的位址可以為0x00000000至0xffffffff之間的任何乙個值。其中4g空間中的低區的2g空間留給程序使用,而高區的2g空間則留給系統使用。在windows200...

作業系統記憶體管理

作業系統記憶體管理一 程序的虛擬位址空間 每個程序都被賦予自己的虛擬位址空間,對於 32位程序來說,這個位址空間為 4g,因此程序中的位址可以為 0x00000000 至0xffffffff 之間的任何乙個值。其中 4g空間中的低區的 2g空間留給程序使用,而高區的 2g空間則留給系統使用。在win...

作業系統記憶體管理

記憶體,毫無疑問是最重要的資源,顯然,作業系統對記憶體的管理我必須清楚。這裡主要介紹了分頁管理和分段管理。1.頁式管理 a.頁式管理的基本思想 打破儲存分配的連續性 將邏輯上連續的使用者程式對映到離散的記憶體塊 使用者程式與記憶體空間被劃分為若干等長的區域 邏輯頁 與 物理頁 使用者程式的劃分由系統...