作業系統 記憶體管理 非連續分配方式

2021-10-21 23:44:02 字數 2360 閱讀 8936

上篇介紹了記憶體管理的連續分配方式,本文介紹非連續分配方式。

將記憶體空間分為乙個個大小相等的分割槽(如每個分割槽4k),每個分割槽就是乙個頁框、或稱頁幀、記憶體塊、物理塊

每個頁框有乙個編號,即頁框號、或稱記憶體塊號、頁幀號、物理塊號

頁框號從0開始。

將使用者程序的位址空間也分為與頁框大小相等的乙個個區域,稱為頁、或稱頁面

每個頁面也有乙個編號,即頁號,頁號也是從0開始的。

可以這麼理解,頁框是實體地址,編號為頁框號;頁面是邏輯位址,編號為頁號;

作業系統以頁框為單位為各個程序分配記憶體空間;

程序的每個頁面分別放入乙個頁框中,也就是說程序的頁面與記憶體的頁框有一對一的關係;

各個頁面不必連續存放,也不必按先後順序來,可以放到不相鄰的各個頁框中。

由上圖看到,要進行邏輯位址到實體地址的轉換,需要以下幾步:

計算出邏輯位址對應的頁號

計算出該頁號對應對應頁面在記憶體中的起始位址

計算出邏輯位址在頁面內內的偏移量

實體地址 = 頁面位址 + 頁面偏移量

計算機中用二進位制表示邏輯位址,如果乙個頁面大小為4k時,則分配如下圖所示:

作業系統會為每個程序建立一張頁表,用來記錄本程序內每個頁面在記憶體中存放的位置;

乙個程序對應一張頁面

程序的每一頁應用 乙個頁表項

每個頁表項由頁號和塊號組成

頁面記錄程序頁面和實際存放的記憶體的記憶體塊之間的對應關係

每個頁表項的長度是相同的,頁號是隱含的

如下示例,用3個位元組表示塊號,則該程序的頁表大小為3n個位元組;當然,實際中計算機是用4個位元組表示塊號,是為了方便頁表的查詢,使得每個頁面恰好可以裝得下整數個頁表項。

基本位址變換機構是用於實現邏輯位址到實體地址轉換的一組硬體機構。 基本位址變換機構可以借助程序的頁表將邏輯位址轉換為實體地址。

通常會在系統中設定乙個頁表暫存器ptr,存放頁表在記憶體中的起始位址f和頁表長度m。其中頁表長度是指這個頁表中總共有幾個頁表項,即總共有多少頁;頁表項長度是指每個頁表項佔多大的儲存空間;頁面大小指乙個頁面占多大的儲存空間;

程序未執行時,頁表的起始位址和頁表長度放在程序控制塊pcb中;當程序被排程時,作業系統核心會把他們放到頁表暫存器中。

它是基於基本位址變換機構的改進版本。

區域性性原理是指cpu訪問儲存器時,無論是訪問指令還是訪問資料,所訪問的儲存單元都趨於聚集在乙個較小的連續區域中。

基於區域性性原理,在上文介紹的基本位址變換機構中,每次訪問乙個邏輯位址,都需要查下記憶體中的頁表,可能連續很多次查到的都是同乙個頁表,於是便有了塊表。

快表,又稱為聯想暫存器tlb,是一種訪問速度比記憶體快很多的高速緩衝儲存器,用來存放當前訪問的若干頁表項,以加速位址變換的過程。與此對應,記憶體中的頁表常稱為慢表。

假設32位指令機器,4g記憶體,頁面大小為4kb,則共劃分為2^32 / 2^12 = 220個記憶體塊,即該系統中使用者程序最多將會有220個頁表項,再假設頁表項長度為4b,即乙個頁表最大需要 2^20 * 4b = 222b,則共需要222/212=210個頁框儲存該頁表。

所以第乙個問題是需要專門給該程序分配2^10=1024個連續的頁框來儲存這個程序的頁表。

由於區域性性原理,程序在一段時間內可能只需要訪問幾個頁面就可以正常執行了。因此沒必要讓整個頁表都常駐記憶體。

可以將頁表再進行分組,使每個記憶體塊剛好剛好可以放入乙個分組。如剛才的例子,可以讓每1k個連續的頁表為一組,1k * 4b = 4k,剛好可以佔滿乙個記憶體塊,再將各組離散的放到各個記憶體塊中。

當然此時需要為離散分配的頁表再建立一張頁表,稱為頁目錄表、或稱外層頁表、頂層頁表

即使用虛擬儲存技術。

可以在需要訪問頁面時才把頁面調入記憶體,可以給每個頁表項新增乙個是否在記憶體中的標誌位;

若想訪問的頁面不在記憶體中,則產生缺頁中斷,然後將目標頁面從外存調入記憶體。

程序的位址空間,按照程式程式自身的邏輯關係劃分為若干個段,每個段都有乙個段名,每段從0開始編址。

記憶體分配規則:以段為單位進行分配,每個段在記憶體中佔據連續空間,但各個段之間可以不相鄰。

綜合了分頁式和分段式的優缺點;

將程序按照邏輯模組分段,再將各段分頁,再將記憶體空間分為大小相同的記憶體塊,然後程序內各個分頁裝入各個記憶體塊中。

作業系統 記憶體非連續分配方式

基本分頁儲存方式 1 把記憶體分為乙個個小分割槽,再按照分割槽大小把程序拆分成乙個個的小部分,比如每個分割槽4kb,每個分割槽就是乙個頁框 頁幀 頁存塊 物理塊,頁框號從0開始 2 將程序也分成和頁框大小相等的乙個個區域,稱為頁 頁面,每個頁面也有個編號,頁號也是從0開始的 3 將程序分頁然後離散的...

作業系統 記憶體非連續分配方式

基本分頁儲存方式 1 把記憶體分為乙個個小分割槽,再按照分割槽大小把程序拆分成乙個個的小部分,比如每個分割槽4kb,每個分割槽就是乙個頁框 頁幀 頁存塊 物理塊,頁框號從0開始 2 將程序也分成和頁框大小相等的乙個個區域,稱為頁 頁面,每個頁面也有個編號,頁號也是從0開始的 3 將程序分頁然後離散的...

作業系統 記憶體管理 連續分配管理

記憶體管理 對記憶體的劃分和動態分配 功能程式鏈結的三種方式 靜態鏈結 裝入時動態鏈結 執行時動態鏈結 裝入的三種方式 絕對裝入 重定位裝入 動態執行時裝入 邏輯位址空間與實體地址空間記憶體保護 1 設定上下限暫存器,cpu要訪問時,與兩個暫存器相比,判斷有無越界 2 重定位暫存器 最小實體地址 和...