1. 程式人生 > >軟考-架構師-第二章-作業系統 第三節 儲存管理(讀書筆記)

軟考-架構師-第二章-作業系統 第三節 儲存管理(讀書筆記)

主要針對希賽出版的架構師考試教程《系統架構設計師教程(第4版)》,作者“希賽教育軟考學院”。完成相關的讀書筆記以便後期自查,僅供個人學習使用,不得用於任何商業用途。

第三節 儲存管理

儲存器是計算機系統中最重要的資源之一。因為任何程式和資料以及各種控制用的資料結構都必須佔有一定的儲存空間,因此,儲存管理直接影響系統性能。

儲存器由記憶體和外存組成。記憶體是由系統實際提供的儲存單元(常指位元組)組成的一個連續地址空間,處理器可直接存取。外存(輔存)是指軟盤、硬碟、光碟和磁帶等一些外部儲存部件,常用來存放暫不執行的程式和資料。處理器不能直接訪問外存,需通過啟動 I/O(Input/Output,輸入/輸出)裝置才能進行記憶體、外存交換,其訪問速度慢,但價格便宜,常用作記憶體的後援裝置。

系統中記憶體的使用一般分成兩部分,一部分為系統空間,存放作業系統本身及相關的系統程式;另一部分為使用者空間,存放使用者的程式和資料。

儲存管理主要是指對記憶體儲器的管理,負責對記憶體的分配和回收、記憶體的保護和記憶體的擴充。儲存管理的目的是儘量提高記憶體的使用效率。儲存管理的機制經歷了多次變遷,由以前的單一連續區管理到分割槽儲存管理再發展為段頁式管理。目前前兩種技術已逐步被淘汰,下面我們將詳細解讀段頁式儲存管理。

頁式儲存管理

分頁的基本思想是把程式的邏輯空間和記憶體的物理空間按照同樣的大小劃分成若干頁面,並以頁面為單位進行分配。在頁式儲存管理中,系統中虛地址是一個有序對(頁號,位移)。系統為每一個程序建立一個頁表,其內容包括程序的邏輯頁號與物理頁號的對應關係、狀態等。

img

頁式系統的動態地址轉換是這樣進行的:當程序執行時,其頁表的首地址已在系統的動態地址轉換機構中的基本地址暫存器中。執行的指令訪問虛存地址(p,d)時,首先根據頁號 p 查頁表,由狀態可知,這個頁是否已經調入記憶體。若已調入記憶體,則得到該頁的記憶體位置 p’,然後,與頁內相對位移 d 組合,得到實體地址 r。如果該頁尚未調入記憶體,則產生缺頁中斷,以裝入所需的頁。

頁式虛擬儲存管理是在頁式儲存管理的基礎上實現虛擬儲存器的。首先把作業資訊作為副本存放在磁碟上,作業執行時,把作業資訊的部分頁面裝入記憶體儲器,作業執行時若所訪問的頁面已在記憶體中,則按頁式儲存管理方式進行地址轉換,得到欲訪問的記憶體絕對地址,若欲訪問的頁面不在記憶體中,則產生一個“缺頁中斷”,由作業系統把當前所需的頁面裝入記憶體儲器中。

當要裝入一個當前需要的頁面時,如果記憶體儲器中無空閒塊,則可選擇一個已在記憶體儲器中的頁面,把它暫時調出記憶體。若在執行中該頁面被修改過,則把該頁資訊重新寫回到磁碟上,否則不必重新寫回磁碟。當一頁被暫時調出記憶體後,讓出的記憶體空間用來存放當前需要使用的頁面。以後再使用被調出的頁面時,可用同樣的方法調出另一個頁面而將其再裝入記憶體。頁面被調出或裝入之後都要對頁表中的相應表目做修改。

頁面排程

當記憶體中無空閒塊時,為了裝入一個頁面而必須按某種演算法從已在記憶體的頁中選擇一頁,將它暫時調出記憶體,讓出記憶體空間以存放所需裝入的頁面,這個工作稱為“頁面排程”。

頁面排程演算法

最優(OPT)演算法

選擇不再使用或最遠的將來才被使用的頁,這是理想的演算法,但是難以實現,常用於淘汰演算法的比較。

隨機(RAND)演算法

隨機地選擇被淘汰的頁,開銷小,但是可能選中立即就要訪問的頁。

先進先出演算法

選擇在記憶體駐留時間最長的頁似乎合理,但可能淘汰掉頻繁使用的頁。另外,使用 FIFO 演算法時,在未給予程序分配足夠的頁面數時,有時會出現給予程序的頁面數增多,缺頁次數反而增加的異常現象。FIFO 演算法簡單,易實現。可以把裝入記憶體儲器的那些頁的頁號按進入的先後順序排成佇列,每次總是調出隊首的頁,當裝入一個新頁後,把新頁的頁號排到隊尾。

最近最少使用(Least Recently Used,LRU)演算法

選擇離當前時間最近的一段時間內使用得最少的頁。這個演算法的主要出發點是,如果某個頁被訪問了,則它可能馬上就要被訪問;反之,如果某個頁長時間未被訪問,則它在最近一段時間也不會被訪問。

段式儲存管理

段式儲存管理與頁式儲存管理相似。分段的基本思想是把使用者作業按邏輯意義上有完整意義的段來劃分,並以段為單位作為內外存交換的空間尺度。

一個作業是由若干個具有邏輯意義的段(如主程式、子程式、資料段等)組成。分段系統中,容許程式(作業)佔據記憶體中許多分離的分割槽。每個分割槽儲存一個程式分段。這樣,每個作業需要幾對界限地址暫存器,判定訪問地址是否越界也就更困難了。在分段儲存系統中常常利用儲存保護鍵實現儲存保護。分段系統中虛地址是一個有序對(段號,位移)。系統為每個作業建立一個段表,其內容包括段號、段長、記憶體起始地址和狀態等。狀態指出這個段是否已調入記憶體,即記憶體起始地址指出這個段,狀態指出這個段的訪問許可權。

img

段式儲存與頁式儲存的地址轉換方式類似。

段頁式儲存管理

段頁式管理是段式和頁式兩種管理方法結合的產物,綜合了段式組織與頁式組織的特點,根據程式模組分段,段內再分頁,記憶體被分劃成定長的頁。段頁式系統中虛地址形式是(段號、頁號、頁內偏移)。系統為每個程序建立一個段表,為每個段建立一個頁表。段頁式管理採用段式分配、頁式使用的方法,便於動態連線和儲存的動態分配。這種儲存管理能提高記憶體空間的利用率。

img

段式虛擬管理還是以段為單位分配記憶體空間,整段的調出、裝入,有時還要移動,這些都增加了系統的開銷。如果按段頁式儲存管理的方式,把每一段再分成若干頁面,那麼,每一段不必佔用連續的儲存空間;甚至當記憶體塊不夠時,可只將一段中的部分頁面裝入記憶體,這種管理方式稱為“段頁式虛擬儲存管理”。

段頁式虛擬儲存管理為每一個裝入記憶體的作業建立一張段表,還要為每一段建立頁表。段表中指出該段的頁表存放位置及長度,頁表中應指出該段的各頁在磁碟上的位置以及頁是否在記憶體中,若在記憶體中則填上佔用的記憶體塊號。作業執行時按段號查段表,找到相應的頁表再根據頁號查頁表,由標誌位判定該頁是否已在記憶體,若是,則進行地址轉換;否則進行頁面排程。

img

段頁式虛擬儲存管理結合了段式和頁式的優點,但增加了設定表格(段表、頁表)和查表等開銷,段頁式虛擬儲存器一般只在大型計算機系統中使用。