天天看點

【作業系統】3、存儲管理

計算機的工作方式可以歸結為兩種基本能力,即存儲程式和自動地執行程式,前者靠存儲器實作,後者靠CPU實作。計算機的工作原理即不斷地從記憶體 中取出一條條指令放在CPU中運作。在此過程中,作業系統需要對程式的檔案在記憶體中的儲存方式進行管理,主要方法如下:

1、單道程式存儲管理

該方法是最簡單的一種存儲管理方法,也是其他更複雜的方法的基礎。單道程式存儲管理的基本思路是将整個程式劃分為兩部分,即系統區和使用者區。某一個程序在啟動時,作業系統将該程序的代碼放入使用者區,一直到該程序結束前,該程式始終獨占使用者區直到程序退出。然後作業系統在裝入一個新的程序将其覆寫。

随着技術的發展,該方法已經顯現出了巨大的問題。首先,系統一次僅能運作一個程式,不能實作多程序并行運作;其次,記憶體使用率不高;其三,沒有記憶體保護機制,運作的程序可以無限制地通路任何位址;最後,程序的位址空間有限,最大不可能超過記憶體的大小。為了解決這些問題,出現了多種多道存儲管理。

2、分區存儲管理

分區存儲管理是最簡單的多道存儲管理方案,其基本思路是首先将記憶體分為系統區和使用者區,然後将使用者區劃分為若幹個等大小或不等大小的分區,每個程序占據一個分區,這樣可以實作記憶體中同時保留和運作多個程序,實作并發操作。

分區存儲管理有兩種實作方法:固定分區和可變分區。

固定分區:在初始時刻就将各個程序的分區劃分好,在系統的運作中不做更改;系統在管理固定分區,需要建立一個記憶體配置設定表記錄各個分區的分區号、位址、長度、目前狀态和所裝載的程序資訊等。

可變分區:在系統運作時,每個程序的空間由系統動态建立;在程式裝入記憶體時,系統根據需求和記憶體空間的情況來決定記憶體配置設定。管理可變分區需要維護一個分區連結清單來記錄各個分區的情況;使用最先比對法、下次比對法、最佳比對法和最壞比對法進行記憶體區配置設定;記憶體回收時隻需要修改分區連結清單即可。

3、頁式存儲管理和段式存儲管理

固定分區系統一定會産生記憶體碎片的問題;可變分區系統的碎片問題可以通過記憶體緊縮解決,但是會消耗額外的系統資源。是以,後來提出了頁式存儲管理方案,其特點是打破一個程序記憶體空間的連續性,使之可以分散在若幹個離散的記憶體塊中。

也是存儲管理系統将實體記憶體劃分為多個大小固定的記憶體塊,其大小通常為2^n個位元組;同時也将程序的邏輯位址空間 劃分為相同大小的記憶體塊。這兩種塊的前者分别稱為實體業或頁框,後者稱為邏輯頁面或頁面。應用程式被裝入記憶體時,以頁面為機關進行配置設定,最終将被分别裝入n個不連續的實體頁面中。

實作頁式存儲管理方案需要為每一個程序分别維護頁表和實體頁面表兩個資料結構用于将邏輯位址同實體位址建立聯系;記憶體的配置設定和回收也是修改這兩個資料結構。

段式存儲管理與頁式存儲相似,差別在于,段式存儲的基本單元不再是一個固定大小的頁,而是根據程序的邏輯單元而構成的段,每個段進行分布式存儲。對于每個程序,作業系統維護一個段表,段表包含段号、分區起始位址、長度等資訊。

4、記憶體不足情況下的處理

在多道程式下可能會出現記憶體不足的情況,針對以下三種狀況:

程式太大,超過空閑記憶體的容量而無法一次性裝入,那麼采用覆寫技術,隻裝入目前需要的指令和資料,其他指令和資料儲存于外存;

程序太多,綜合超過了記憶體容量,使得新的程序無法運作,那麼可以采用交換技術,将暫時不能執行的程式移出記憶體;

若試圖在有限的記憶體中盡可能裝入多的程序,且每個程序盡可能大,則采用虛拟存儲技術。