作業系統的儲存管理

2020-07-16 10:04:36
為了方便計算機使用者,作業系統提供資訊儲存的統一邏輯檢視。作業系統對儲存裝置的物理屬性進行了抽象,並定義了邏輯儲存單元,即檔案(file)。作業系統對映檔案到物理媒介,並通過儲存裝置來存取檔案。

檔案系統管理

檔案管理是作業系統最明顯的元件之一。計算機可在多種型別的物理媒介上儲存資訊,最常用的有硬碟、光碟和磁帶等。每種媒介都有各自的特點與物理組織。每個媒介都由一個裝置來控制,如磁碟驅動器或磁帶驅動器等。它們都有自己的特點,包括存取速度、容量、資料傳輸率和存取方法(順序或隨機)等。

檔案是建立者定義的相關資訊組合。通常,檔案內容為程式(源程式和目標程式)和資料。資料檔案可以是數值的、字元的、字元數值的或二進位制的等。檔案可以沒有格式(例如文字檔案),或有嚴格格式(例如固定的域)。顯然,檔案這一概念是極為廣泛的。

作業系統管理大容量儲存媒介,如磁碟和磁帶,並控制它們,以實現檔案這一抽象概念。再者,為了方便使用,檔案可組織成目錄。最後,當多個使用者存取檔案時,需要控制哪個使用者如何存取檔案(例如,讀、寫、附加)。

作業系統負責檔案管理的以下活動:
  • 建立和刪除檔案。
  • 建立和刪除目錄,以便組織檔案。
  • 提供檔案和目錄的操作原語。
  • 對映檔案到外存。
  • 備份檔案到穩定(非易失的)儲存媒介。

大容量記憶體管理

由於記憶體太小不能容納所有資料和程式,再加上掉電會失去資料,所以計算機系統應該提供外存以備份記憶體。

大多數現代計算機系統採用硬碟作為主要線上儲存媒介,來儲存程序和資料。大多數程式,如編譯程式、組合程式、字處理器、編輯器和格式化程式等,儲存在硬碟上,執行時才調入記憶體。它們在執行時將硬碟作為處理的起源和終點。因此,硬碟的妥善管理對計算機系統尤為重要。

作業系統負責有關硬碟管理的以下活動:
  • 空閒空間管理;
  • 儲存空間分配;
  • 硬碟排程;

由於外存使用頻繁,因此使用應該高效。計算機執行的最終速度與硬碟子系統的速度和管理該子系統的演算法有很大關係。

雖然有的儲存相比外存速度更慢、價格更低(或許容量更大),但是也有許多用處,如備份磁碟的資料、儲存很少使用的資料、儲存長期的檔案等。典型的三級儲存(tertiary storage)裝置包括:磁帶驅動器及其磁帶、CD/DVD 驅動器及光碟等。這些媒介(磁帶和光碟)分為一次寫多次讀(Write-OnceRead-Many-times,WORM)和讀-寫(Read-Write, RW)。

三級儲存對系統效能並不關鍵,但也應管理好。有的作業系統直接管理,還有的留給應用程式來管理。作業系統的功能可以包括:安裝和解除安裝裝置媒介,為進程互斥使用而分配和釋放裝置,以及將資料從二級儲存移動到三級儲存。

二級和三級儲存的管理技術將在後續章節加以討論。

快取記憶體

快取記憶體(caching)有時也簡稱為快取,是計算機系統的一條重要原理。它的工作原理是:資訊通常儲存在一個儲存系統中(如記憶體),使用時,它會被臨時複製到更快儲存系統,即快取記憶體;當需要特定資訊時,首先檢查它是否處於快取記憶體,如果是,可以直接使用快取記憶體的資訊,如果否,就使用位於源地的資訊,同時將其複製到快取記憶體以便下次再用。

另外,可程式化的內部暫存器(如索引暫存器)為記憶體提供快取記憶體。程式設計師(或編譯程式)通過暫存器分配與暫存器替換的演算法,決定哪些資訊應存在暫存器中而哪些應存在記憶體中。

還有的快取記憶體完全通過硬體實現。例如,大多數系統都有一個指令的快取記憶體,用以儲存下個需要執行的指令。如沒有這一快取記憶體,CPU 要用多個時鐘週期才能從記憶體中獲得指令。基於類似原因,大多數系統在儲存層次結構中有一個或多個快取記憶體。本教學並不關心只用硬體的髙速快取,這是因為它們不受作業系統控制。

由於快取記憶體的大小有限,因此快取記憶體管理(cache management)的設計就很重要。慎重選擇快取記憶體大小與置換策略,可以極大提高效能。表 1 比較了大型工作站與小型伺服器的儲存效能。關於軟體控制的各種快取記憶體的置換演算法,也將在後續章節加以討論。

表 1 各種級別儲存的效能
級別 1 2 3 4 5
名稱 暫存器 快取記憶體 記憶體 固態盤 硬碟
典型尺寸 <1KB < 16MB <64GB <1TB <10TB
實現技術 具有多個埠CMOS的客製化記憶體 片上或片外 CMOS SRAM CMOS SRAM 快閃記憶體 硬碟
存取時間(ns) 0.25~0.5 0.5 ~ 25 80 ~ 250 25 000 ~ 50000 5 000 000
頻寬(MB/sec) 20 000 ~ 100 000 5 000 ~10 000 1 000 ~ 5 000 500 20 ~150
由誰管理 編譯器 硬體 作業系統 作業系統 作業系統
由誰備份 快取記憶體 記憶體 硬碟 硬碟 硬碟或磁帶

記憶體可以看作外存的快取記憶體,這是因為外存資料應先複製到記憶體以便使用,而且資料應位於記憶體中才可儲存到外存。永久駐留在外存上的檔案系統的資料,會位於儲存層次的多個層次上。在最高層上,作業系統可在記憶體中儲存一個檔案系統資料的快取記憶體。

另外,固態盤也可作為高速儲存,並可通過檔案系統介面來存取。大容量的外存為磁碟。磁碟儲存又通常可以用磁帶或移動磁碟來備份資料,以防止因磁碟損壞造成的資料丟失。有的系統將位於磁碟上的舊檔案資料自動備份到三級儲存,如磁帶塔,以便降低儲存費用。

儲存層次間的資訊移動可以是顯式的,也可以是隱式的,這取決於硬體設計和作業系統的控制軟體。例如,快取記憶體到CPU或暫存器的資料傳遞,通常通過硬體完成,無需作業系統干預。相反,磁碟到記憶體的資料傳遞通常通過作業系統控制。

在層次儲存結構中,同一資料可能出現在儲存系統的不同層次上。例如,位於檔案 B 的整數 A 需要加 1,而檔案 B 位於磁碟。加 1 操作這樣進行:先進行 I/O 操作以將 A 所在的塊調入記憶體。之後,A 被複製到快取記憶體和內部暫存器。這樣,A 的副本出現在多個地方:磁碟上、記憶體中、快取記憶體中、內部暫存器中(見圖 2)。

整數 A 從磁盤到寄存器的遷移
圖 2 整數 A 從磁碟到暫存器的遷移