作業系統 儲存管理

2021-06-03 11:31:15 字數 1672 閱讀 9654

儲存管理:

1) 所謂虛擬儲存技術,即在記憶體中保留一部分程式或資料,在外存(硬碟)中放置整個位址空間的副本。程式執行過程中可以隨機訪問記憶體中的資料或程式,但需要的程式或資料不在記憶體中時,就將記憶體中的部分內容根據情況寫回外存,然後從外存調入所需程式或資料,實現作業內部的區域性對換,從而允許程式的位址空間大於實際分配的儲存區域。

虛擬儲存器允許使用者用比主存容量大得多的位址空間來程式設計,以執行比主存實際容量大得多的程式。使用者程式設計所用的位址稱為邏輯位址(虛位址),而實際的主存位址稱為實體地址(實位址)。

2)虛擬儲存器可以分為單一連續分割槽、固定分割槽、可變分割槽、可重定位分割槽、非請求頁式、請求頁式、段頁式7種。

現在,最常見的虛存組織有分段技術、分頁技術、段頁式技術3種,如下表:

段內偏移也稱為段內位址,頁內偏移也稱為頁內位址。

因為8kb=2的13次方,所以頁內位址有13位。邏輯位址9612轉換成二進位制得到10 0101 1000 1100,這裡的低13位是頁內偏移量,最高一位是頁號;所以邏輯位址9612的頁號為1,如圖的對照表可知,對應的物理塊號是3(二進位制11)。把物理塊號和頁內偏移位址拼合得到110 0101 1000 1100(前兩位是物理塊號,後13位是頁內偏移量),再轉換成十進位制,得到25996 。

3)虛擬儲存管理的理論基礎是程式的區域性性原理。程式的區域性性原理是指程式在執行時呈現出區域性性規律,即在一段時間內,程式的執行僅限於程式的某一部分。相應地,執行所訪問的儲存空間也侷限於某個記憶體區域。區域性性又表現為時間區域性性和空間區域性性。

根據程式的區域性性理論,denning提出了工作集理論。工作集是指程序執行時被頻繁訪問的頁面集合。

在虛存的管理中涉及載入(調入)、放置(放入分割槽)和交換等問題:

1) 調入策略:即何時將一頁或一段從外存中調入主存,通常有兩種策略,一是請求調入法,即需要使用時才調入;另一種是現行調入法,即將預計要使用的頁/段現行調入主存。

2) 放置策略:即調入後,放在主存的什麼位置,這與實存管理基本一致。

3) 置換策略:當發生缺頁中斷時,需要進行置換。常見的置換演算法有:

最優演算法(opt):淘汰不用的或最遠的將來才用的頁。這是一種理想演算法,不可能實現,只能用來作為衡量演算法效率的參照物;

隨機演算法(rand):隨機淘汰,這種演算法開銷小,但效能不穩定;

先進先出演算法(fifo):選擇最早調入也是駐留時間最長的頁;

最近最少使用演算法(lru):選擇離當前時刻最近的一段時間內使用得最少的頁。

例如,某虛擬儲存系統採用lru頁面淘汰演算法,假定系統為每個作業分配3個頁面的主存空間,其中乙個頁面用來存放程式。現有某作業的部分語句如下:

var a : array[1...150,1...100] of integer;

i, j : integer;

for i:=1 to 150 do

for j:=1 to 100 do

a[i, j] := 0;

設每個頁面可存放150個整數變數,變數i,j放在程式頁中。初始時,程式及變數i、j已在記憶體,其餘兩頁為空,矩陣a按行序存放。

在上述程式片段中,共產生100次缺頁中斷。這是因為採用了3個頁面來儲存,由於第乙個頁面用來存放程式及i、j。所以只有兩個頁面用來存放陣列。整個陣列有150*100 = 15000個整數,而每一頁可存放150個整數變數,所以整個程式執行完,共產生15000/150=100次缺頁。因為矩陣a按行序存放,每一行100個整數,最後保留在兩個記憶體頁面的內容是矩陣a的最後3行的數值。

作業系統儲存管理

分段單元 分頁單元 邏輯位址 段基址 32位偏移量 線性位址 虛擬位址,0 4gb 實體地址 6個段暫存器 cs code段 ss stack段 ds data段 es fs gs 通用段暫存器 16位的段選擇符就存放在以上段暫存器中 線性位址 4gb 被分成以固定長度為單位的組,即頁。頁內部連續的...

作業系統 儲存管理

儲存管理中大概涉及到了下圖所示的這些知識點。在了解儲存管理之前,我們必須要知道計算機當中有那些儲存器,這些儲存器有那些特點,他們是如何工作的!如下圖所示 除了上面這三種儲存器,還有暫存器。暫存器是 處理器內的組成部分。暫存器是有限存貯容量的高速存貯部件,它們可用來暫存指令 資料和位址。在 處理器的控...

作業系統 儲存管理

儲存器 cpu暫存器 快取 主存 外存 編譯 鏈結 載入 編譯 把目標 翻譯為可重定位 包括 資料段 文字段 棧段。載入 在載入乙個絕對程式之前,儲存管理器會分配一塊主存給程序,然後載入器把絕對程式和資料段拷到分配的儲存器中。聯結器將絕對程式中所有的位址設定成好像模組 都是從主存位置0處載入的。靜態...