四.(3-4)儲存管理的離散分配方式
基本分頁儲存管理方式
本部分討論不具備對換功能的純分頁模式,作業執行需要全部裝入記憶體。
比較連續分配方式
作業邏輯地址空間有M大,就需要向記憶體申請一個M大的連續區域。
分頁的目的是更細粒度的處理空間,減少粗放管理的浪費或開銷問題。
1)頁面的概念
u記憶體劃分成多個小單元,每個單元K大小,稱(物理)塊。作業也按K單位大小劃分成片,稱為頁面。
①物理劃分塊的大小= 邏輯劃分的頁的大小
②頁面大小要適中。
太大,(最後一頁)內碎片增大,類似連續分配的問題。
太小的話,頁面碎片總空間雖然小,提高了利用率,但每個程式的頁面數量較多,頁表過長,反而又增加了空間使用。
2)頁表的概念
為了找到被離散分配到記憶體中的作業,記錄每個作業各頁對映到哪個物理塊,形成的頁面對映表,簡稱頁表。
每個作業有自己的頁表
頁表的作用:頁號到物理塊號的地址對映
要找到作業A 關鍵是找到頁表(PCB) 根據頁表找物理塊
Ø作業相對地址在分頁下不同位置的數有一定的意義結構:
頁號+頁內地址(即頁內偏移)
Ø關鍵的計算是:根據系統頁面大小找到不同意義二進位制位的分界線。
Ø從地址中分析出頁號後,地址對映只需要把頁號改為對應物理塊號,偏移不變,即可找到記憶體中實際位置。
4)地址變換機構
前面講解了地址變換的原理,那麼誰具體實現地址對映?——地址變換機構。
圍繞頁表進行工作,那麼頁表資料放在哪?
暫存器。一個程式有n個頁,頁表就需要記錄n項資料,需要n個暫存器。不現實。
記憶體。只設定一個頁表暫存器PTR(page table register)記錄頁表在記憶體中的首地址和頁表長度,執行時快速定位頁表。
5)引入快表——針對訪問速度問題
問題:基本分頁機制下,一次指令需兩次記憶體訪問,處理機速度降低1/2,分頁空間效率的提高以如此的速度為代價,得不償失。
改進:減少第1步訪問記憶體的時間。增設一個具有“並行查詢”能力的高速緩衝暫存器,稱為“快表”,也稱“聯想暫存器”(Associative
memory),IBM系統稱為TLB(Translation Look aside Buffer)。
快表放什麼?:正在執行程式的頁表的資料項。
基本分段儲存管理方式
從提高記憶體利用率角度;
固定分割槽-》動態分割槽-》分頁
從滿足並方便使用者(程式設計師)和使用上的要求角度:
分段儲存管理:作業分成若干段,各段可離散放入記憶體,段內仍連續存放。
方便程式設計:如彙編中通過段:偏移確定資料位置
資訊共享:同地位的資料放在一塊方便進行共享設定
資訊保護
動態增長:動態增長的資料段事先固定記憶體不方便
動態連結:往往也是以邏輯的段為單位更方便
1)分段系統的基本原理
程式通過分段(segmentation)劃分為多個模組,每個段定義一組邏輯資訊。如程式碼段(主程式段main,子程式段X)、資料段D、棧段S等。
誰決定一個程式分幾段,每段多大?
編譯程式(基於原始碼)
段的特點:
每段有自己的名字(一般用段號做名),都從0編址,可分別編寫和編譯。裝入記憶體時,每段賦予各段一個段號。
每段佔據一塊連續的記憶體。(即有離散的分段,又有連續的記憶體使用)
各段大小不等。
3)分頁和分段的主要區別
1.需求:分頁是出於系統管理的需要,是一種資訊的物理劃分單位,分段是出於使用者應用的需要,是一種邏輯單位,通常包含一組意義相對完整的資訊。
一條指令或一個運算元可能會跨越兩個頁的分界處,而不會跨越兩個段的分界處。
2.大小:頁大小是系統固定的,而段大小則通常不固定。分段沒有內碎片,但連續存放段產生外碎片,可以通過記憶體緊縮來消除。相對而言分頁空間利用率高。
3.邏輯地址:分頁是一維的,各個模組在連結時必須組織成同一個地址空間;
分段是二維的,各個模組在連結時可以每個段組織成一個地址空間。
4.其他:通常段比頁大,因而段表比頁表短,可以縮短查詢時間,提高訪問速度。分段模式下,還可針對不同型別採取不同的保護;按段為單位來進行共享
4)資訊共享
分段系統的突出優點:
易於實現共享:
在分段系統中,實現共享十分容易,只需在每個程式的段表中為共享程式設定一個段表項。
比較課本圖。對同樣的共享內容的管理上,很明顯分段的空間管理更簡單。分頁的圖涉及太多的頁面劃分和地址記錄的管理。
易於實現保護:
程式碼的保護和其邏輯意義有關,分頁的機械式劃分不容易實現。
相關文章
- 本週總結 雜湊表+逆元儲存原根的離散對數
- 儲存管理
- 日期的正確儲存方式
- 容器化RDS—— 計算儲存分離 or 本地儲存
- 四、InnoDB儲存引擎如何利用鎖實現四種事務隔離級別儲存引擎
- linux 頁框管理(四) 管理區分配器Linux
- JavaScript本地儲存的方式有哪些JavaScript
- Java常見的本地儲存方式Java
- Hadoop HDFS 3.3.1分散式儲存搭建Hadoop分散式
- block底層儲存方式BloC
- MySQL之四 儲存引擎MySql儲存引擎
- 離散化
- Git儲存內容的位置與方式Git
- 人類儲存方式的變革史
- MySQL:Innodb中數字的儲存方式MySql
- 突破本地離線儲存的JS庫 localforageJS
- Ceph儲存池管理
- 第四講 資料儲存
- 細述Kubernetes和Docker容器的儲存方式Docker
- Laravel 自定義配置資訊的儲存方式Laravel
- 變數的儲存方式和生存期變數
- 百易儲存:2022分散式儲存市場調查報告(附下載)分散式
- 帶你瞭解地址分配DHCP,IP地址管理方式及分配原則
- iOS開發資料儲存篇—iOS中的幾種資料儲存方式iOS
- 離散請求
- 離散作業
- docker儲存配置與管理Docker
- 003.DirectPV儲存管理
- PLM在離散製造業的實施管理應用研究
- STM32 記憶體分配解析及變數的儲存位置記憶體變數
- NAS儲存外網遠端訪問的方式
- 加鹽hash儲存密碼的正確方式密碼
- Springboot呼叫Oracle儲存過程的幾種方式Spring BootOracle儲存過程
- Web3證明資料的儲存方式Web
- 這種方式解決EMC儲存崩潰RAID離線問題,簡單又高效AI
- 實驗、可變分割槽儲存管理系統模擬 —— 最先適應分配演算法演算法
- 儲存大師新作,三星儲存四大新品面世!
- Docker的持久化儲存和資料共享(四)Docker持久化