記憶體離散分配,分段

2021-09-02 21:38:04 字數 2786 閱讀 6008

(分頁的目的是更細粒度的處理空間,減少粗放管理的浪費或開銷問題。

)離散分配記憶體:

作業規定大小劃分成小份;記憶體也按同樣大小劃分成小份

作業的任一小份可分散放入記憶體任意未使用的小份

分頁方式下,記憶體的使用率高,浪費少。但不是絕對沒有碎片(程序的最後一頁不總是能佔滿乙個物理塊)

1)頁面的概念

記憶體劃分成多個小單元,每個單元k大小,稱(物理)塊。作業也按k單位大小劃分成片,稱為頁面。

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

②頁面大小要適中。

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

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

2)頁表的概念

為了找到被離散分配到記憶體中的作業,記錄每個作業各頁對映到哪個物理塊,形成的頁面對映表,簡稱頁表。

每個作業有自己的頁表

頁表的作用:

頁號到物理塊號的位址對映

要找到作業a

關鍵是找到頁表(pcb)

根據頁表找物理塊

3)位址的處理

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

分頁方式下詳細的位址處理會如何呢?

位址對映(位址計算)的過程?

若要執行某作業的一條指令,其相對位址是24b (設10b一頁,頁表如右表),其實體地址到底是多少呢?

分析其所在的頁和偏移得:2號頁(頁號從0開始) ,偏移4b處是該條指令

查頁表找頁面對應的塊(2號頁儲存在6號物理塊)

找物理塊6,向下偏移4b,找到要執行的指令。取出執行即可。

計算上就是求商(頁號)及取餘(偏移量)的過程

前面講解了位址變換的原理,那麼誰具體實現位址對映?——位址變換機構。

圍繞頁表進行工作,那麼頁表資料放在哪?

暫存器。乙個程序有n個頁,頁表就需要記錄n項資料,需要n個暫存器。不現實。

記憶體。只設定乙個頁表暫存器ptr(page table register)記錄頁表在記憶體中的首位址和頁表長度,執行時快速定位頁表。

位址變換過程

分頁系統中,程序建立,放入記憶體,構建頁表,在pcb中記錄頁表存放在記憶體的首位址及頁表長度。

執行某程序a時,將a程序pcb中的頁表資訊寫入ptr中;

每執行一條指令時,根據分頁計算原理,得到指令頁號x和內部偏移量y;

cpu高速訪問ptr找到頁表在**;

為防止錯誤檢索,增加預先的判斷:

計算得到的頁號是否大於頁表長度(即頁表項數)

※ 訪問記憶體的有效時間 ※

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

access time) 設訪問一次記憶體時間為t,則基本分頁機制下eat=2t,why? cpu操作一條指令需訪問記憶體兩次:

訪問記憶體中的頁表(以計算指令所在的實際實體地址) 訪問指令記憶體位址 引入快表後的記憶體訪問時間如何?

快表的暫存器單元數量是有限的,不能裝下乙個程序的所有頁表項。雖不能完全避免兩次訪問記憶體,但如果命中率a高還是能大幅度提高速度。

設一次查詢訪問快表時間為t』 ,則 eat= at』 + (1-a)(t』+t) + t

= 2t +t』 -ta

6)兩級、多級頁表,反置頁表——針對大頁表占用記憶體問題段是連續存放在記憶體中。段表中針對每個「段編號」記錄:「記憶體首位址」和「段長」

同樣有兩次記憶體訪問問題

解決方法:設定聯想暫存器,用於儲存最近常用的段表項。

3)分頁和分段的主要區別 ★ ★ ★

分段系統的突出優點:

易於實現共享

在分段系統中,實現共享十分容易,只需在每個程序的段表中為共享程式設定乙個段表項。

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

易於實現保護:

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

5)段頁式儲存管理方式

① 基本原理

將使用者程式分成若干段,並為每個段賦予乙個段名。

把每個段分成若干頁

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

記憶體離散分配 分頁 分段

基本分頁儲存管理方式 本部分討論不具備對換功能的純分頁模式,作業執行需要全部裝入記憶體。離散分配記憶體 作業規定大小劃分成小份 記憶體也按同樣大小劃分成小份 作業的任一小份可分散放入記憶體任意未使用的小份 分頁方式下,記憶體的使用率高,浪費少。但不是絕對沒有碎片 程序的最後一頁不總是能佔滿乙個物理塊...

記憶體分配 分頁 分段

關於計算機記憶體分配,主要有兩種 連續記憶體分配和非聯絡記憶體分配。需要注意的是,這是作業系統級別的,而堆與棧的記憶體分配,是屬於編譯器級別的,具體可以參考另一篇筆記 連續記憶體分配是指為乙個程式分配位址連續的一段記憶體,當出現許多程式時,由於程式大小不一必然會出現許多的記憶體碎片,無法充分發揮出所...

4 3記憶體離散分配 分頁

基本分頁儲存管理方式 分頁的目的是更細粒度的處理空間,減少粗放管理的浪費或開銷問題。離散分配記憶體 作業規定大小劃分成小份,記憶體也按同樣大小劃分成小份 作業的任一小份可分散放入記憶體任意未使用的小份 分頁方式下,記憶體的使用率高,浪費少,但不是絕對沒有碎片 程序的最後一頁不總是能佔滿乙個物理塊 1...