【操作系統】第四章 存儲器管理(3)——存儲管理的離散分配方式

1 基本分頁存儲管理方式


1.1 頁面的概念

內存劃分成多個小單元,每個單元K大小,稱(物理)塊。作業也按K單位大小劃分成片,稱爲頁面。

①物理劃分塊的大小 = 邏輯劃分的頁的大小

②頁面大小要適中。

    太大,(最後一頁)內碎片增大,類似連續分配的問題。

    太小的話,頁面碎片總空間雖然小,提高了利用率,但每個進程的頁面數量較多,頁表過長,反而又增加了空間使用。


1.2 頁表的概念

爲了找到被離散分配到內存中的作業,記錄每個作業各頁映射到哪個物理塊,形成的頁面映射表,簡稱頁表。每個作業有自己的頁表

頁表的作用:

  頁號到物理塊號的地址映射

要找到作業A

  關鍵是找到頁表(PCB),根據頁表找物理塊


1.3 地址的處理



1.4 地址變換機構


1.5 引入快表——針對訪問速度問題

問題:基本分頁機制下,一次指令需兩次內存訪問,處理機速度降低1/2,分頁空間效率的提高以如此的速度爲代價,得不償失。

改進:減少第1步訪問內存的時間。增設一個具有“並行查詢”能力的高速緩衝寄存器,稱爲“快表”,也稱“聯想寄存器”(Associative

memory),IBM系統稱爲TLB(Translation Look aside Buffer)。


1.6 兩級、多級頁表,反置頁表——針對大頁表佔用內存問題

①兩級頁表

將頁表分頁,並離散地將頁表的各個頁面分別存放在不同的物理塊中

爲離散分配的頁表再建立一張頁表,稱爲“外層頁表”,其每個表項記錄了頁表頁面所在的物理塊號。


②多級頁表

64位操作系統下,兩級仍然不足以解決頁表過大問題時,可按同樣道理繼續分頁下去形成多級頁表。



2 基本分段存儲管理方式

2.1 分段系統的基本原理

程序通過分段(segmentation)劃分爲多個模塊,每個段定義一組邏輯信息。如代碼段(主程序段main,子程序段X)、數據段D、棧段S等。


誰決定一個程序分幾段,每段多大?

編譯程序(基於源代碼)


段的特點

每段有自己的名字(一般用段號做名),都從0編址,可分別編寫和編譯。裝入內存時,每段賦予各段一個段號。

每段佔據一塊連續的內存。(即有離散的分段,又有連續的內存使用)

各段大小不等。


地址結構:段號 + 段內地址



2.2 段表與地址變換機構

段是連續存放在內存中。段表中針對每個“段編號”記錄:“內存首地址”和“段長”



同樣有兩次內存訪問問題

解決方法:設置聯想寄存器,用於保存最近常用的段表項。


2.3 分頁和分段的主要區別

需求:

分頁是出於系統管理的需要,是一種信息的物理劃分單位,分段是出於用戶應用的需要,是一種邏輯單位,通常包含一組意義相對完整的信息。

一條指令或一個操作數可能會跨越兩個頁的分界處,而不會跨越兩個段的分界處。

大小:

頁大小是系統固定的,而段大小則通常不固定。分段沒有內碎片,但連續存放段產生外碎片,可以通過內存緊縮來消除。相對而言分頁空間利用率高。

邏輯地址:

分頁是一維的,各個模塊在鏈接時必須組織成同一個地址空間;

分段是二維的,各個模塊在鏈接時可以每個段組織成一個地址空間。

其他:

通常段比頁大,因而段表比頁表短,可以縮短查找時間,提高訪問速度。分段模式下,還可針對不同類型採取不同的保護;按段爲單位來進行共享


2.4 信息共享

分段系統的突出優點:

易於實現共享:

在分段系統中,實現共享十分容易,只需在每個進程的段表中爲共享程序設置一個段表項。

比較課本圖。對同樣的共享內容的管理上,很明顯分段的空間管理更簡單。分頁的圖涉及太多的頁面劃分和地址記錄的管理。


易於實現保護:

代碼的保護和其邏輯意義有關,分頁的機械式劃分不容易實現。



3 段頁式存儲管理方式

3.1 基本原理

將用戶程序分成若干段,併爲每個段賦予一個段名。

把每個段分成若干頁

地址結構包括段號、段內頁號和頁內地址三部分



3.2 地址變換過程


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章