1. 程式人生 > >儲存管理技術--連續分配

儲存管理技術--連續分配

簡單儲存管理技術:早期的作業系統,只支援單程序,為了實現簡單。在執行程式之前,作業系統必須將待執行的程式全部裝入記憶體。


虛擬儲存技術:現代作業系統,支援多程序併發執行,允許程序裝入部分程式即可以開始執行。其餘部分保留在外存。當執行所需的部分不在記憶體時,中斷程序執行,使之阻塞等待,直到相應部分裝入記憶體。


現在作業系統分配記憶體採用連續分配與離散分配


連續分配方式分為單一連續分配方式分割槽方式,這兩種方式都將系統記憶體劃分為系統區與使用者區。

單一連續分配:將所有記憶體分配給一個程序,適用於嵌入式作業系統。

分割槽:分別為每個程序分配一段連續的空間,支援多程序併發的儲存管理方式。。

在這裡討論下分割槽管理方式:

分割槽管理的首要問題是分割槽的劃分:每個程序所需的記憶體大小不一樣。如果各分割槽在系統初始化就固定下來,以後不再改變,稱為固定分割槽方式。如果各分割槽開始不固定,而是根據程式的執行再劃分,稱為動態分割槽方式


固定分割槽方式又要解決每個分割槽該分多大?是否採取大小相等與大小不等的分割槽?同時,一個程式不可能完全佔滿一個分割槽,所以產生了空閒部分(即內部碎片)。如何使這些內部碎片最小?這些問題請自己下去研究,本文不做深入討論。


動態分割槽方式:與固定分割槽方式相比,它的分割槽數量,分割槽大小都不固定,而是根據程式的需要動態的劃分。它至少需要處理如下問題。分割槽如何組織(記錄每個分割槽的資訊,如大小,是否可用,分割槽起始地址等)?分割槽如何分配(採用哪種演算法,如首次匹配,迴圈匹配,最佳匹配)?分割槽如何回收(合併這些空閒分割槽)?

動態分割槽方式還產生了大量的外部碎片(無法利用的空閒分割槽),如果把這些隨便聚在一起,又可以形成一個較大的空閒空間,所以這裡又出現了緊湊技術,合併這些小的,碎片化的空閒分割槽

動態分割槽的一個例項:夥伴系統。將記憶體劃分為多個頁面塊,核心思想:先找合適的大小的空閒塊,沒找到就拆大的空閒塊,詳細資訊請自己尋找。


對換技術:把記憶體中暫時不用的程序換出到外存,騰出空間,將已具備執行條件的程序換入記憶體。