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

2022-09-23 11:21:13 字數 1333 閱讀 6500

從計算機的角度出發,提高了記憶體的利用率,提公升了計算機的效能,以分頁通過硬體機制實現,對使用者透明

考慮到使用者和程式設計師,已滿足方便程式設計、資訊保護和共享、動態增長、動態鏈結等多方面需求

分段式記憶體管理

分段:按照使用者程序中的自然段劃分邏輯空間,例如:使用者的程序由主程式、兩個子程式、棧和一段資料組成,五部分劃分為 5 個段,每段都從 0 開始編址,並分配一段連續的位址空間(段內要求連續、段間不要求連續)其邏輯位址由段號 s 和偏移位址 w 兩部分組成

在段式系統中,段號和段內偏移量必須由使用者提供,高階程式語言中,這個工作由編譯程式完成

段表:每個程序都有一張邏輯空間與記憶體空間對映的段表,每乙個段表項對應程序的乙個段。段表項記錄該段在記憶體中的起始位址和段的長度。段表項的組成 = 段號+段長+本段在主存中的起始位址 b

執行中的程序可以根據段表找個每個段對應的記憶體區域,段表用於實現從邏輯段到物理記憶體區的對映。

位址變換機構:分段式記憶體管理的邏輯位址到實體地址間的轉換(在一般問題中,段號和段內偏移一定要顯式給出)

1:從邏輯位址a 中取出前幾位為段號s,後幾位為段內偏移量w(一般對於分段式,其邏輯位址以二進位制給出)(段號和段內偏移量所佔的位數不確定)

2:比較段號 s 與段表長度 m(存在控制暫存器中),s >= m產生越界中斷,否則繼續執行

3:段號s 對應的段表項位址 = 段表項起始位址f + 段號s * 段表項長度。取出該段表項的前幾位得到段長c,若段內偏移量 w >= c產生越界中斷,否則繼續執行

4:取出段表項中該段的起始位址b,實體地址:e = b + w

共享:在分段系統中,段的共享是通過兩個作業的段表中相應表項指向被共享段的同乙個物理副本來實現的。當乙個作業正在從共享段中讀取資料時,必須防止另乙個作業修改此共享段中的資料。不能修改的**稱為純**或可重入**,這樣的**和不能修改的資料是可以共享的,可修改的**或資料不能共享。

保護:上面的訪問控制保護和越界控制保護(上面的第二步)

頁式儲存管理可以有效的提高記憶體利用率。段式儲存管理可以反映程式的邏輯結構並有利於段的共享。將其結合,形成了段頁式儲存管理方式

在段頁式系統中,作業的位址空間首先被分為若干邏輯段,每段都有自己的段號,然後再將每個段分成若干個大小固定的頁。對記憶體空間的管理仍然和分頁儲存管理一樣,將其分為若干個和頁面大小相同的儲存塊。對記憶體的分配仍然以儲存塊為單位。

段頁式系統中,邏輯位址 = 段號 + 頁號 + 頁內偏移量。為了實現位址轉換,系統為每個程序都建立了一張段表,每個分段都有一張頁表,段表 = 段號 + 段長 + 頁表的起始位址。頁表 = 頁號 + 塊號。此外系統中應該還有乙個段表暫存器,指出作業的段表起始位址和段表長度。

在邏輯位址到實體地址時,段號 和 頁號按照之前的方式進行對映 e = b +w

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

1.分頁作業系統的缺點?1 頁表太大,我們用多級頁表克服了。2 多級頁表速度慢,我們用tlb翻譯快表解決了絕大部分。3 頁面來回更換所帶來的缺頁中斷的問題,我們用各類頁面更換演算法解決了大部分。4 內部碎片相對於交換系統的外部碎片,還是可以忍受的。最大的缺陷是 共享困難。2.分段管理系統?3.邏輯分...

作業系統核心原理 5 記憶體管理(下) 段式記憶體管理

分頁系統存在的乙個無法容忍,同時也是分頁系統無法解決的乙個缺點就是 乙個程序只能占有乙個虛擬位址空間。在此種限制下,乙個程式的大小至多只能和虛擬空間一樣大,其所有內容都必須從這個共同的虛擬空間內分配。分段管理就是將乙個程式按照邏輯單元分成多個程式段,每乙個段使用自己單獨的虛擬位址空間 如此,乙個段占...

作業系統分頁分段小筆記

以前看分頁分段時記得筆記,今天無意翻出來發現記得還挺好的,雖然當時貌似看的不怎麼懂,部落格發下 分段機制 cs,ds,es,fs,gs,ss 段選擇器 高13位表示索引 從0開始 第二位 ti 0在gdt中,ti 1在ldt中 0,1位表示程式的當前優先順序rpl gdtr 全域性描述符表暫存器 4...