1. 程式人生 > >記憶體離散分配、分頁、分段

記憶體離散分配、分頁、分段

連續分配方式:一個程序連續的裝進記憶體一個大小合適的區。
“碎片”  “緊湊”  增大開銷
如果允許一個程序直接分散裝入多個不相鄰分割槽中,則無需“緊湊”
產生儲存管理的離散分配方式。

基本分頁儲存管理

比較連續分配方式
作業邏輯地址空間有M大,就需要向記憶體申請一個M大的連續區域。
分頁的目的是更細粒度的處理空間,減少粗放管理的浪費或開銷問題。
離散分配記憶體:
作業規定大小劃分成小份;記憶體也按同樣大小劃分成小份
作業的任一小份可分散放入記憶體任意未使用的小份
分頁方式下,記憶體的使用率高,浪費少。但不是絕對沒有碎片(程序的最後一頁不總是能佔滿一個物理塊)

1)頁面的概念
記憶體劃分成多個小單元,每個單元K大小,稱(物理)塊。作業也按K單位大小劃分成片,稱為頁面。
① 物理劃分塊的大小 = 邏輯劃分的頁的大小
②頁面大小要適中。

2)頁表的概念
為了找到被離散分配到記憶體中的作業,記錄每個作業各頁對映到哪個物理塊,形成的頁面對映表,簡稱頁表。
每個作業有自己的頁表
頁表的作用:頁號到物理塊號的地址對映

3)地址的處理
連續方式下,每條指令用基地址+偏移量即可找到其物理存放的地址。

計算口訣
頁面大小決定偏移量(頁內地址)的位數 n;
作業大小頁面數量
頁表長度 a
頁號的位數 m(或總位數-頁內位數)
記憶體容量決定塊數,塊數決定編址位數,即頁表項位數 b。

4)地址變換機構
頁表資料放在記憶體。只設置一個頁表暫存器PTR(page table register)記錄頁表在記憶體中的首地址和頁表長度,執行時快速定位頁表。
分頁系統中,程序建立,放入記憶體,構建頁表,在PCB中記錄頁表存放在記憶體的首地址及頁表長度。

程序發出邏輯地址的訪問請求,經過地址變換,到記憶體中找到對應的實際實體地址單元並取出資料,所需花費的總時間,稱為記憶體的有效訪問時間EAT(effective access time)

5)快表

基本分頁機制下,一次指令需兩次記憶體訪問,處理機速度降低1/2,分頁空間效率的提高以如此的速度為代價,得不償失。
改進:減少第1步訪問記憶體的時間。增設一個具有“並行查詢”能力的高速緩衝暫存器,稱為“快表”,也稱“聯想暫存器”(Associative memory),IBM系統稱為TLB(Translation Look aside Buffer)。
快表放正在執行程序的頁表的資料項。
雖不能完全避免兩次訪問記憶體,但如果命中率a高還是能大幅度提高速度。
設一次查詢訪問快表時間為t' ,則
EAT= a*t' + (1-a)(t'+t) + t = 2t +t' -t*a

6)多級頁表
程序分頁離散存放,但頁表的資料是連續在存放記憶體的。而頁表可能很大。
①兩級頁表
將頁表分頁,並離散地將頁表的各個頁面分別存放在不同的物理塊中
為離散分配的頁表再建立一張頁表,稱為“外層頁表”,其每個表項記錄了頁表頁面所在的物理塊號。

 

 

②多級頁表
64位作業系統下,兩級仍然不足以解決頁表過大問題時,可按同樣道理繼續分頁下去形成多級頁表。
③反置頁表
站在物理塊的角度,記錄佔用它的已調入記憶體的程序標識和頁號。

基本分段儲存管理

從提高記憶體利用率角度;
固定分割槽  動態分割槽 分頁
從滿足並方便使用者(程式設計師)和使用上的要求角度:
分段儲存管理:作業分成若干段,各段可離散放入記憶體,段內仍連續存放。
方便程式設計:如彙編中通過段:偏移確定資料位置
資訊共享:同地位的資料放在一塊方便進行共享設定
資訊保護
動態增長:動態增長的資料段事先固定記憶體不方便
動態連結:往往也是以邏輯的段為單位更方便
1)分段系統的基本原理
程式通過分段(segmentation)劃分為多個模組,每個段定義一組邏輯資訊。
段的特點
每段有自己的名字(一般用段號做名),都從0編址,可分別編寫和編譯。裝入記憶體時,每段賦予各段一個段號。
每段佔據一塊連續的記憶體。(即有離散的分段,又有連續的記憶體使用)
分段下的相對地址:
地址結構:段號 + 段內地址
段表:記錄每段實際存放的實體地址
2)段表與地址變換機構
段是連續存放在記憶體中。段表中針對每個“段編號”記錄:“記憶體首地址”和“段長”
3)分頁和分段的主要區別 ★ ★ ★
需求:分頁是出於系統管理的需要,是一種資訊的物理劃分單位,分段是出於使用者應用的需要,是一種邏輯單位,通常包含一組意義相對完整的資訊。
一條指令或一個運算元可能會跨越兩個頁的分界處,而不會跨越兩個段的分界處。
大小:頁大小是系統固定的,而段大小則通常不固定。分段沒有內碎片,但連續存放段產生外碎片,可以通過記憶體緊縮來消除。相對而言分頁空間利用率高。
邏輯地址:
分頁是一維的,各個模組在連結時必須組織成同一個地址空間;
分段是二維的,各個模組在連結時可以每個段組織成一個地址空間。
其他:通常段比頁大,因而段表比頁表短,可以縮短查詢時間,提高訪問速度。分段模式下,還可針對不同型別採取不同的保護;按段為單位來進行共享
4)資訊共享
分段系統的突出優點:
易於實現共享
在分段系統中,實現共享十分容易,只需在每個程序的段表中為共享程式設定一個段表項。
對同樣的共享內容的管理上,很明顯分段的空間管理更簡單。分頁的圖涉及太多的頁面劃分和地址記錄的管理。
易於實現保護:
程式碼的保護和其邏輯意義有關,分頁的機械式劃分不容易實現。
5)段頁式儲存管理方式
① 基本原理
將使用者程式分成若干段,併為每個段賦予一個段名。
把每個段分成若干頁
地址結構包括段號、段內頁號和頁內地址三部分

②地址變換過程