作業系統記憶體管理 簡單 頁式 段式 段頁式

2021-08-07 21:59:31 字數 4044 閱讀 5670

一、記憶體管理的目的和功能

記憶體一直是計算機系統中寶貴而又緊俏的資源,記憶體能否被有效、合理地使用,將直接影響到作業系統的效能。此外,雖然物理記憶體的增長現在達到了n個gb,但比物理記憶體增長還快的是程式,所以無論物理記憶體如何增長,都趕不上程式增長的速度,所以作業系統如何有效的管理記憶體便顯得尤為重要。

(1)記憶體管理的目的

記憶體管理的目的主要有兩個:一是方便使用者使用;二是提高儲存器的利用率。

(2)記憶體管控的功能

記憶體管理主要有四個方面的功能:

1)記憶體空間的分配與**:由作業系統完成主儲存器空間的分配和管理,使程式設計師擺脫儲存分配的麻煩,提高程式設計效率。

3)儲存保護和儲存共享:保證各道作業在各自的儲存空間內執行,互不干擾;同時充分利用記憶體空間,共享記憶體中存放的資訊。

4)記憶體空間的擴充:利用虛擬儲存技術或自動覆蓋技術,從邏輯上擴充記憶體。

二、記憶體管理中的基本概念

(1)邏輯位址、相對位址、虛位址

源程式經過編譯處理後,源程式中的各種符號元素轉換成機器指令和資料組成的目標程式,並用實際位址碼替換符號位址。這種經編譯後的目標**所限定的位址域叫做該程式的位址空間。位址空間中的各個位址叫做相對位址,邏輯位址或虛位址。位址空間總是從0號單元開始編址,其他所以位址都是以0單元為起始位址順序編碼的。

(2)線性位址

線性位址是邏輯位址到物理位址變換之間的中間層。在段頁式儲存管理中,程式**會產生邏輯位址,或者說是段中的偏移位址,加上相應段的基位址就生成了乙個線性位址。如果啟用了分頁機制,那麼線性位址可以再經變換以產生乙個實體地址。若沒有啟用分頁機制,那麼線性位址直接就是實體地址。

(3)實體地址、絕對位址、實位址

實體地址空間是指記憶體中物理單元的集合,它是位址轉換的最終位址,程序在執行時執行指令和訪問資料最後都要通過實體地址從主存中訪問。實體地址又叫絕對位址、實位址。

(4)位址重定位

當裝入程式將可執行**裝入記憶體時,必須通過位址轉換將邏輯位址轉換成實體地址,這個過程稱為位址重定位。即把程式相對位址空間的邏輯位址轉換成儲存空間的絕對位址的工作叫做位址重定位,又叫位址對映或位址變換。

1)靜態重定位

在裝入作業時,由裝入程式把使用者程式中的指令位址和資料位址全部轉換成儲存空間的絕對位址。這種位址轉換工作是在程式執行前集中一次完成的,程式執行時就無需要再進行位址轉換工作。

主要優點是無需增加硬體位址變換機構,主要缺點是要求給每個程式分配一片連續的儲存空間。

2)動態重定位

動態重定位是靠硬體的位址轉換機構來實現的,通常使用乙個重定位暫存器。在儲存管理為程式分配乙個主存區域後,裝入程式直接把程式和資料裝入到分配的儲存區中,然後把這個儲存區的起始位址送入重定位暫存器中。在程式執行時,對於每乙個儲存器的訪問,都要講相對位址轉化成主存的絕對位址。

主要優點是使用更加靈活有效,不用給程式分配一大片連續的空間,能夠給使用者提供乙個比主存大的多的位址空間。

三、常見的記憶體管理技術

(1)簡單儲存管理

1)單一連續分配

單一連續分配是指主存中只有乙個使用者作業,把程式裝入主存之後,佔據全部儲存空間和資源。

內存在此方式下分為系統區和使用者區,系統區僅提供給作業系統使用,通常在低位址部分;使用者區是為使用者提供的、除系統區之外的記憶體空間。這種方式的優點是簡單、無外部碎片,可以釆用覆蓋技術,不需要額外的技術支援。缺點是只能用於單使用者、單任務的作業系統中,有內部碎片,儲存器的利用率極低。

2)分割槽分配

分割槽分配又分為:固定式分割槽和可變式分割槽。

-----------------------------

固定分割槽分配是將記憶體空間劃分為若干個固定大小的區域,每個分割槽只裝入一道作業。當有空閒分割槽時,便可以再從外存的後備作業佇列中,選擇適當大小的作業裝入該分割槽,如此迴圈。

固定分割槽方式存在兩個問題:一是程式可能太大而放不進任何乙個分割槽中,這時使用者不得不使用覆蓋技術來使用記憶體空間;二是主存利用率低,當程式小於固定分割槽大小時,也占用了乙個完整的記憶體分割槽空間,這樣分割槽內部有空間浪費,這種現象稱為內部碎片。

-----------------------------

可變式分割槽在程序裝入記憶體時,根據程序的大小動態地建立分割槽,並使分割槽的大小正好適合程序的需要。

動態分割槽在開始分配時是很好的,但是之後會導致記憶體中出現許多小的記憶體塊。隨著時間的推移,記憶體中會產生越來越多的碎片,且隨著程序的換入/換出,很可能會出現更多更小的記憶體塊,記憶體的利用率隨之下降。這些小的記憶體塊稱為外部碎片,指在所有分割槽外的儲存空間會變成越來越多的碎片,這與固定分割槽中的內部碎片正好相對。

動態分割槽的分配策略,考慮以下幾種演算法:

》最佳適應(best fit)演算法:空閒分割槽按容量遞增形成分割槽鏈,找到第乙個能滿足要求的空閒分割槽。

》鄰近適應(next fit)演算法:又稱迴圈首次適應演算法,由首次適應演算法演變而成。不同之處是分配記憶體時從上次查詢結束的位置開始繼續查詢。

-----------------------------

解決碎片的方法是採取緊湊技術,即對碎片進行拼接,但是需要消耗系統資源。

3)覆蓋與交換

1.虛擬儲存器

當乙個作業程式的位址空間比主存可用空間大時,作業系統可將這個程式的位址空間的一部分放入主存內,其餘部分放在輔存上。當訪問的資訊不在主存時,再由作業系統負責調入所需要的部分。這樣計算機系統好像為使用者提供了乙個比實際主存大得多的儲存空間,這樣的技術叫做虛擬儲存器。

2.覆蓋

覆蓋是指同一主存區可以被不同的程式段重複使用。作業在一次執行時,把那些不會同時執行的程式段共用乙個主存區。相互覆蓋的程式段叫做覆蓋,可共享的主存區叫做覆蓋區。覆蓋技術的基礎是提供正確的覆蓋結構。

3.交換

交換就是系統根據需要把主存中暫時不允許的某個或某些作業部分或全部移到輔存,而把輔存中的某個或某些作業移到相應的主存區,並使其投入執行。

(2)頁式儲存管理

1)基本概念

頁式儲存管理將程式邏輯位址空間劃分為固定大小的頁(page),而物理記憶體劃分為同樣大小的頁框(page frame)。為方便位址轉換,頁面大小應是2的整數冪。每乙個作業有乙個頁表,用來記錄各個頁在記憶體中所對應的塊(頁框)。

2)位址結構

3)位址變換機制

上面介紹的位址變換過程可知,若頁表全部放在記憶體中,則訪問乙個資料或一條指令至少要訪問兩次記憶體:一次是訪問頁表,確定所訪問的資料或指令的實體地址,第二次才根據該位址訪問資料或指令。顯然,這種方法比通常執行指令的速度慢了一半。

為此,在位址變換機構中增設了乙個具有並行查詢能力的高速緩衝儲存器——快表,又稱聯想暫存器(tlb),用來存放當前訪問的若干頁表項,以加速位址變換的過程。

(3)請求式分頁儲存管理

1)基本概念

請求分頁系統建立在基本分頁系統基礎之上,為了支援虛擬儲存器功能而增加了請求調頁功能和頁面置換功能。請求分頁是目前最常用的一種實現虛擬儲存器的方法。在請求分頁系統中,只要求將當前需要的一部分頁面裝入記憶體,便可以啟動作業執行。在作業執行過程中,當所要訪問的頁面不在記憶體時,再通過調頁功能將其調入,同時還可以通過置換功能將暫時不用的頁面換出到外存上,以便騰出記憶體空間。

2)擴充的頁表

3)位址變換機制

4)頁面置換演算法

1.最佳演算法(opt演算法)

用來評價其他演算法,使用缺頁中斷率:

f = f / a(其中f為作業失敗訪問的次數,a為作業總的訪問次數)

2.先進先出演算法(fifo演算法)

淘汰在記憶體駐留時間最長的頁面。

3.最近最久未使用淘汰演算法(lru演算法)

淘汰最久沒有被使用的頁面。

4.最不經常使用淘汰演算法(lfu演算法)

淘汰一段時間內,訪問次數最少的頁面。

(lru和lfu的區別:

(4)段式儲存管理

1)基本概念

段式儲存管理要求每個作業的位址空間按照程式自身的邏輯劃分為若干段,每個段都有乙個唯一的內部段號。

2)位址結構

邏輯位址由段號s與段內偏移量w兩部分組成。

段號為16位,段內偏移量為16位,則乙個作業最多可有2^16=65536個段,最大段長為64kb。

3)位址變換機制

(5)段頁式儲存管理

1)基本概念

在段頁式儲存中,每個分段又被分成若干個固定大小的頁。

2)位址結構

邏輯位址由段號s、段內頁號p與段內偏移量w兩部分組成。

3)位址變換機制

作業系統(二)記憶體管理 頁式與段式儲存

今天沒有 因為我還沒想明白怎麼寫!因為不知道今天的 應該怎麼寫,所以決定先寫一寫記憶體分配的原理。先忽略掉教材裡面眾多有關於記憶體管理的知識點,只簡單介紹一下頁式和段式儲存兩種記憶體管理方式。為之後引入保護模式和長模式進行一下鋪墊。在我個人的觀念裡,引入記憶體管理主要有一下兩個原因 隨著cpu從開始...

3 作業系統記憶體管理 段頁式(虛擬記憶體)

注 參考哈工大李治軍老師公開課。本小節需要之前分段與分頁為基礎 對使用者而言,分段是對記憶體的有效使用 而對於計算機而言,分頁可以提高記憶體的使用效率。作業系統需要滿足兩個方面的需求,所以就採取了段頁相結合的方式來管理記憶體。對於使用者而言,當使用者發出乙個邏輯位址,使用者希望訪問到特定程式段的記憶...

作業系統 分段式記憶體管理

從計算機的角度出發,提高了記憶體的利用率,提公升了計算機的效能,以分頁通過硬體機制實現,對使用者透明 考慮到使用者和程式設計師,已滿足方便程式設計 資訊保護和共享 動態增長 動態鏈結等多方面需求 分段式記憶體管理 分段 按照使用者程序中的自然段劃分邏輯空間,例如 使用者的程序由主程式 兩個子程式 棧...