作業系統面試 記憶體管理

2021-07-13 23:00:44 字數 1823 閱讀 7933

本文是對作業系統概念(第七版)——記憶體管理的學習總結,不足之處歡迎批評指正。

首先我們區分什麼是邏輯位址空間和實體地址空間。

執行是從虛擬位址到實體地址的對映是由記憶體管理單元(mmu)的硬體裝置來完成的。

現在有兩個不同的位址,邏輯位址0~max,實體地址r~r+max。

記憶體分配策略

1、連續記憶體分配

最為簡單的記憶體分配方法之一就是將記憶體分為多個固定大小的分割槽,每個分割槽只能容納乙個程序。從分割槽中如何選擇滿足程序要求的記憶體塊呢?最常用的有三個策略:

(1)首次適應(第一塊滿足要求)

(2)最佳適應(最小的足夠大的)

(3)最差適應(最大的)

三種策略的分析:

首次適應和最佳適應都有外部碎片問題。外部碎片問題:當所有總的可用記憶體之和可用滿足請求之和,但並不連續時就會出現外部碎片。

內部碎片:通常記憶體單元是以塊為單位,程序所分配的可能比所需要的要大。

我們先討論如何解決外部碎片問題。

第一種解決方法:緊縮。緊縮的目的是移動記憶體內容,以便所有空閒空間合併成一整塊。

2、分頁

實現分頁的基本方法涉及將物理記憶體分為固定大小的塊,稱為幀;邏輯記憶體也分為固定大小,稱為頁。

分頁的實現為:

cpu生成邏輯位址,改位址包含兩個部分:頁號(p)和頁偏移(d)。頁號作為頁表的索引。頁表的內容是每頁所在物理記憶體的基位址,這些基位址和頁偏移的組合形成了實體地址。

通常頁大小是由硬體決定的,頁的大小通常為2的冪,如果邏輯位址空間為2^m,且頁的大小為2^n單元(位元組或字),那麼邏輯位址的高m-n為表示頁號,第n為表示頁偏移。由於實體地址非連續,所以分頁是不會產生外部碎片,但是由於頁的大小是由硬體決定的,所以分頁也有內部碎片。

分頁的乙個重要特點是使用者視角的記憶體和實際的物理記憶體的分離。

分頁的硬體支援:

引入轉換表緩衝區(tlb),下圖是從其他地方截圖得到的,若侵犯版權,請告知。

3、頁表結構

提出的原因:以及分頁頁表太大。

(1)層次頁表

二級分頁演算法(頁表號1+頁表號2+頁偏移)

(2)雜湊頁表

雜湊頁表以虛擬頁碼為雜湊值,雜湊頁表中的每一條目都包括乙個鍊錶的元素,這些元素雜湊成同一位置。每個元素有3個域:虛擬頁碼,所對映的幀號,指向鍊錶元素的下乙個指標。

具體工作流程:虛擬位址中的虛擬頁號轉換到雜湊表中,用虛擬頁號和鍊錶中每個元素的第乙個域進行比較,如果匹配,那麼相應的幀號用來形成實體地址,否則繼續查詢。

(3)反向頁表

反向頁表對於每個真正的記憶體頁或幀才有乙個條目。每個條目包含 儲存在真正記憶體位置的頁的虛擬位址以及擁有該頁的程序的資訊。因此,整個作業系統只有乙個頁表,對每個物理記憶體的頁只有一條相應的條目。

pid是程序id。

反向頁表的問題:

1、雖然減少了記憶體儲存空間,但是增加了查詢頁表的時間。這是因為反向頁表是按照實體地址排序(見上圖),而查詢是根據虛擬位址,所以可能需要查詢整個表來尋求匹配。

2、在實現共享記憶體時存在困難。

4、分段

前面我們提到:採用分頁記憶體管理有乙個不可避免的問題:使用者視角的記憶體和實際物理記憶體的隔離,使用者視角的記憶體需要對映到物理記憶體。

為了簡單起見,段名稱是編號的,因此邏輯位址是由段號和段偏移組成的。《段號,段偏移》

這裡總結一下段和頁的區別:

1、頁是資訊的物理單位,段是邏輯單位。

2、頁的作業位址是一維的,段是二維的。

3、頁的長度由系統決定,是等長的,而段是不等長的。

段表的條目都有段基位址和段界限。

作業系統記憶體管理

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

作業系統記憶體管理

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

作業系統記憶體管理

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