標籤:
1、多級儲存空間
1)儲存層次可以分為三層:寄存器、主存(記憶體)、輔存(磁碟);
2)不同層次之間還有相應的緩衝以減小不同層次間讀寫速度不匹配程度;簡單來說,主存也即寄存器和輔存之間的快取;
3)不同層次的儲存空間讀寫效率不一樣,讀寫速度越快,成本越高。
4)寄存器、主存、快取等屬於作業系統管理的範疇,斷電後資料會丟失;而磁碟屬於裝置管理的範疇,斷電後資料不會丟失。
2、程式裝入
1)絕對裝入方式:程式編譯時間即已經知道裝入記憶體後的地址,程式的邏輯地址和實際記憶體位址完全一致,不需要重定位,這種方式只適合單道批處理系統;
2)可重定位裝入方式:將程式裝入記憶體後,立即重新計算其絕對位址,即邏輯地址加上地址位移量。
3)動態運行時裝入方式:將程式裝入記憶體後,不立即計算其絕對位址,而是等真正需要該模組時才重新計算其絕對位址。
3、程式連結方式
1)靜態連結:直接把目標模組及所需要的庫連結成為一個整體,連結完成後不再拆開;
2)裝入時動態連結:在程式裝入記憶體時,邊裝入邊連結,便於各個目標檔案的共用;
3)運行時動態連結:當一個模組需要時才去連結;
4、記憶體配置方式
連續分配:程式裝入到一塊連續的記憶體地區當中
1)單一連續分配:只適用於單使用者單任務作業系統
2)固定分區分配:把記憶體地區劃分為多個分區,每個分區裝入一道作業;固定分區大小的劃分有兩種方式:相等、不相等,相等時可能引起記憶體浪費或部分大型程式無法裝入。
3)動態分區分配:建立空閑分區鏈或空閑分區表,當需要記憶體時,去鏈中尋找大小匹配的記憶體地區;
分區匹配演算法:首次適應演算法(第一個塊大小能滿足的地區)、迴圈首次適應演算法(從上次一次尋找的地方開始向後尋找,相較於前一種方法,可以使空閑分區更均勻)、最佳適應演算法(能滿足要求,且是當前最小的空閑分區,導致很多小的片段無法再利用)、最壞適應演算法(總是挑選當前最大分區分割給作業使用,優點是使空閑分區不會太小以致無法使用,但會使記憶體中缺少最大儲存空間)、快速適應演算法(建立多個鏈表,大小相等的空閑分區放置到同一鏈表當中,需要使用時,直接取出相應鏈表的第一塊分區給程式使用,不進行切割;但會導致分區回收複雜)。
4)夥伴系統:無論已指派分區還是未分配分區,其大小均是2的k次冪,這種方法分配和回收時都可能會引起多次切割,每次切割都是除以2。
5)雜湊演算法:以分區大小作為關鍵字,使用時取出對應分區的地址;
為應對沒有足夠空間裝入作業問題,有以下兩種解決方案:
1)可重定位分區分配:當零碎分區大小總和大於程式所需要記憶體時,可以通過“緊湊”的方法將記憶體進行整理,將分散的地區拼接在一起,其他程式需要重定位。
2)對換:將記憶體中暫時不能啟動並執行進程或暫時不用的程式和資料調出到外存上,以騰出足夠的記憶體空間。對換的單位可以是:進程、頁、段;
離散分配方式
1)分頁式儲存:將進程的邏輯地址空間劃分成若干大小相等的頁面,將記憶體空間也劃分成大小相等的儲存塊,將進程的頁裝入到記憶體空間的儲存塊當中(儲存塊不一定連續),並建立頁表即頁至物理塊的映射。頁表結構:頁號 塊號
頁大小確定:頁面太小,會導致頁表過大;頁面太大,會導致頁內片段過多(每個作業最後一頁往往是裝不滿的);
頁表:頁表中儲存的是頁號和物理塊號的映射;頁表一般駐留在記憶體當中,頁表寄存器中存放有頁表的始址和頁表長度;
當CPU需要讀取某一資料時,首先訪問記憶體中的頁表,得到對應的物理地址,然後再次訪問記憶體得到所需資料,所以需要兩次訪問記憶體。為提高訪問效率,可在快取中存放一快表,快表中存放有部分頁號,CPU需要讀取資料時,可先在快表中尋找相應的頁號,如果找不到再到記憶體了尋找。
邏輯地址空間非常大時,頁表也會非常大,解決方案:二級頁表或只將部分頁表調入記憶體當中。
2)分段式儲存:將程式按功能劃分為若干大小不同的段,段的儲存位置可以不連續。段表結構:段號 段起始地址 段長
分頁和分段的區別:頁是資訊的物理單位,頁本身沒有實際含義,主要是為了提高記憶體的使用效率,而段是資訊的邏輯單位,段有其完整的的資訊,主要是為了滿足使用者需要;頁的大小固定且相等,其大小由系統決定,而段的大小並不固定,其大小由使用者所編寫的程式決定;頁的地址空間是一維的,只有物理塊號,而段的地址空間是二維的,不僅有物理段號,還有段內位移地址;指向同一段資料區,段表的數量一般比頁表少,當該資料區需要被多個作業共用時,所需段表的數量會比頁表少很多,段更適合資訊共用。
3)段頁式儲存:將每個段分成若干頁,地址結構:段號、段內頁號、頁內地址;CPU讀取資料時,首先訪問記憶體上的段表,讀取其段起始地址和段長,第二次訪問記憶體上的頁表,讀取對應的物理塊號,最後才會讀取到資料,所以需要經過三次訪問記憶體。
5、虛擬儲存空間
當作業很大或都有大量作業需要運行時,引起記憶體不足;解決方案:擴充邏輯記憶體。
1)基礎:
局部性原理:即在一較短時間內,程式的執行只局限於某個部分;相應地,它所訪問的儲存空間也局限於某個地區;
2)虛擬儲存:
程式運行之前,沒有必要將所有模組裝入記憶體,僅將需要的頁或段裝入記憶體,其餘部分暫留在盤上;當記憶體不足時,將暫時不需要的段或頁對換到磁碟上;相當於擴充記憶體。
3)虛擬儲存空間特徵:多次性,一個作業被分成多次調入記憶體運行;對換性,允許作業在運行時被換出;虛擬性,使用者看到的記憶體容量遠大於實際容量;
4)虛擬儲存空間實現方法:
(I)分頁儲存管理方式
a、三要素:頁表機制、缺頁中斷機構、地址變換機構
b、頁面置換演算法:最佳置換演算法(所被淘汰的頁面將是以後永不使用的,或許是在最長時間內不再被訪問的頁面,該方法無法實現,只能用於評價其他方法)、先進先出頁面置換演算法(總是淘汰最先進入記憶體的頁面,即選擇在記憶體中駐留時間最久的頁面予以淘汰)、最近最久未使用置換演算法(選擇最近最久未使用的頁面進行置換,需要硬體支援)、最少使用置換演算法(選擇最近時期他用最少的頁面作為淘汰頁,需要硬體支援)、頁面緩衝演算法(將要被淘汰的頁暫時不移出記憶體,而是放移動到一個鏈表後部,當達到一定數量後再移出)
c、調頁策略
調頁時間:預調頁策略(基於預測)、請求調頁策略
從何處調頁:外存可以分為兩部分,用於存放檔案的檔案區和用於存放對換頁面的對換區。對換區通常是連續儲存,而檔案區則是離散儲存。所以對換區的I/O速度較高。
當對換區空間充足時,程式運行前應將所有頁面都拷貝到對換區,需要時,再從對換區換入所需頁面。
系統缺少對換區空間時,凡是不會被修改的檔案直接從檔案區換入,且不必換出,因為不會被修改,再次需要時直接從檔案區換入。對於可能被修改的部分,則需要換出到對換區,需要時從對換區換入。
Unix方式,對於未出現過的統一從檔案區換入,對於出現過的則從對換區換入。
(II)分段儲存管理方式
a、三要素:段表機制、缺段中斷機構、地址變換機構
6、分段共用:設定一共用段表,維護每個段共用的進程數count,當count==0時,該段可以被回收。
作業系統儲存空間管理知識點