1、固定分割槽儲存管理
其基本思想是將記憶體劃分成若干固定大小的分割槽,每個分割槽中最多隻能裝入一個作業。當作業申請記憶體時,系統按一定的演算法為其選擇一個適當的分割槽,並裝入記憶體執行。由於分割槽大小是事先固定的,因而可容納作業的大小受到限制,而且當用戶作業的地址空間小於分割槽的儲存空間時,造成儲存空間浪費。
一、空間的分配與回收
系統設定一張“分割槽分配表”來描述各分割槽的使用情況,登記的內容應包括:分割槽號、起始地址、長度和佔用標誌。其中佔用標誌為“0”時,表示目前該分割槽空閒;否則登記佔用作業名(或作業號)。有了“分割槽分配表”,空間分配與回收工作是比較簡單的。
二、地址轉換和儲存保護
固定分割槽管理可以採用靜態重定位方式進行地址對映。
為了實現儲存保護,處理器設定了一對“下限暫存器”和“上限暫存器”。當一個已經被裝入主儲存器的作業能夠得到處理器執行時,程序排程應記錄當前執行作業所在的分割槽號,且把該分割槽的下限地址和上限地址分別送入下限暫存器和上限暫存器中。處理器執行該作業的指令時必須核對其要訪問的絕對地址是否越界。
三、多作業佇列的固定分割槽管理
為避免小作業被分配到大的分割槽中造成空間的浪費,可採用多作業佇列的方法。即系統按分割槽數設定多個作業佇列,將作業按其大小排到不同的佇列中,一個佇列對應某一個分割槽,以提高記憶體利用率。
2、可變分割槽儲存管理
可變分割槽儲存管理不是預先將記憶體劃分分割槽,而是在作業裝入記憶體時建立分割槽,使分割槽的大小正好與作業要求的儲存空間相等。這種處理方式使記憶體分配有較大的靈活性,也提高了記憶體利用率。但是隨著對記憶體不斷地分配、釋放操作會引起儲存碎片的產生。
採用可變分割槽儲存管理,系統中的分割槽個數與分割槽的大小都在不斷地變化,系統利用“空閒區表”來管理記憶體中的空閒分割槽,其中登記空閒區的起始地址、長度和狀態。當有作業要進入記憶體時,在“空閒區表”中查詢狀態為“未分配”且長度大於或等於作業的空閒分割槽分配給作業,並做適當調整;當一個作業執行完成時,應將該作業佔用的空間作為空閒區歸還給系統。
可以採用首先適應演算法、最佳(優)適應演算法和最壞適應演算法三種分配策略之一進行記憶體分配。
可變分割槽儲存管理一般採用動態重定位的方式,為實現地址重定位和儲存保護,系統設定相應的硬體:基址/限長暫存器(或上界/下界暫存器)、加法器、比較線路等。
基址暫存器用來存放程式在記憶體的起始地址,限長暫存器用來存放程式的長度。處理機在執行時,用程式中的相對地址加上基址暫存器中的基地址,形成一個絕對地址,並將相對地址與限長暫存器進行計算比較,檢查是否發生地址越界。
三、儲存碎片與程式的移動
所謂碎片是指記憶體中出現的一些零散的小空閒區域。由於碎片都很小,無法再利用。如果記憶體中碎片很多,將會造成嚴重的儲存資源浪費。解決碎片的方法是移動所有的佔用區域,使所有的空閒區合併成一片連續區域,這一技術稱為移動技術(緊湊技術)。移動技術除了可解決碎片問題還使記憶體中的作業進行擴充。顯然,移動帶來系統開銷加大,並且當一個作業如果正與外設進行I/O時,該作業是無法移動的。
3、頁式儲存管理
基本原理
1.等分記憶體
頁式儲存管理將記憶體空間劃分成等長的若干區域,每個區域的大小一般取2的整數冪,稱為一個物理頁面有時稱為塊。記憶體的所有物理頁面從0開始編號,稱作物理頁號。
2.邏輯地址
系統將程式的邏輯空間按照同樣大小也劃分成若干頁面,稱為邏輯頁面也稱為頁。程式的各個邏輯頁面從0開始依次編號,稱作邏輯頁號或相對頁號。每個頁面內從0開始編址,稱為頁內地址。程式中的邏輯地址由兩部分組成:
邏輯地址
頁號p
頁內地址 d
3.記憶體分配
系統可用一張“位示圖”來登記記憶體中各塊的分配情況,儲存分配時以頁面(塊)為單位,並按程式的頁數多少進行分配。相鄰的頁面在記憶體中不一定相鄰,即分配給程式的記憶體塊之間不一定連續。
對程式地址空間的分頁是系統自動進行的,即對使用者是透明的。由於頁面尺寸為2的整數次冪,故相對地址中的高位部分即為頁號,低位部分為頁內地址。
3.5.2實現原理
1.頁表
系統為每個程序建立一張頁表,用於記錄程序邏輯頁面與記憶體物理頁面之間的對應關係。地址空間有多少頁,該頁表裡就登記多少行,且按邏輯頁的順序排列,形如:
邏輯頁號
主存塊號
0
B0
1
B1
2
B2
3
B3
2.地址對映過程
頁式儲存管理採用動態重定位,即在程式的執行過程中完成地址轉換。處理器每執行一條指令,就將指令中的邏輯地址(p,d)取來從中得到邏輯頁號(p),硬體機構按此頁號查頁表,得到記憶體的塊號B’,便形成絕對地址(B’,d),處理器即按此地址訪問主存。
3.頁面的共享與保護
當多個不同程序中需要有相同頁面資訊時,可以在主存中只保留一個副本,只要讓這些程序各自的有關項中指向記憶體同一塊號即可。同時在頁表中設定相應的“存取許可權”,對不同程序的訪問許可權進行各種必要的限制。
4、段式儲存管理
1.邏輯地址空間
程式按邏輯上有完整意義的段來劃分,稱為邏輯段。例如主程式、子程式、資料等都可各成一段。將一個程式的所有邏輯段從0開始編號,稱為段號。每一個邏輯段都是從0開始編址,稱為段內地址。
程式中的邏輯地址由段號和段內地址(s,d)兩部分組成。
系統不進行預先劃分,而是以段為單位進行記憶體分配,為每一個邏輯段分配一個連續的記憶體區(物理段)。邏輯上連續的段在記憶體不一定連續存放。
3.6.2實現方法
1.段表
系統為每個程序建立一張段表,用於記錄程序的邏輯段與記憶體物理段之間的對應關係,至少應包括邏輯段號、物理段首地址和該段長度三項內容。
2.建立空閒區表
系統中設立一張記憶體空閒區表,記錄記憶體中空閒區域情況,用於段的分配和回收記憶體。
3.地址對映過程
段式儲存管理採用動態重定位,處理器每執行一條指令,就將指令中的邏輯地址(s,d)取來從中得到邏輯段號(s),硬體機構按此段號查段表,得到該段在記憶體的首地址S’, 該段在記憶體的首地址S’加上段內地址d,便形成絕對地址(S’+d),處理器即按此地址訪問主存。
5、段頁式儲存管理
頁式儲存管理的特徵是等分記憶體,解決了碎片問題;段式儲存管理的特徵是邏輯分段,便於實現共享。為了保持頁式和段式上的優點,結合兩種儲存管理方案,形成了段頁式儲存管理。
段頁式儲存管理的基本思想是:把記憶體劃分為大小相等的頁面;將程式按其邏輯關係劃分為若干段;再按照頁面的大小,把每一段劃分成若干頁面。程式的邏輯地址由三部分組成,形式如下:
段號s
頁內地址d
記憶體是以頁為基本單位分配給每個程式的,在邏輯上相鄰的頁面記憶體不一定相鄰。
系統為每個程序建立一張段表,為程序的每一段各建立一張頁表。地址轉換過程,要經過查段表、頁表後才能得到最終的物理地址。
1、固定分割槽儲存管理
其基本思想是將記憶體劃分成若干固定大小的分割槽,每個分割槽中最多隻能裝入一個作業。當作業申請記憶體時,系統按一定的演算法為其選擇一個適當的分割槽,並裝入記憶體執行。由於分割槽大小是事先固定的,因而可容納作業的大小受到限制,而且當用戶作業的地址空間小於分割槽的儲存空間時,造成儲存空間浪費。
一、空間的分配與回收
系統設定一張“分割槽分配表”來描述各分割槽的使用情況,登記的內容應包括:分割槽號、起始地址、長度和佔用標誌。其中佔用標誌為“0”時,表示目前該分割槽空閒;否則登記佔用作業名(或作業號)。有了“分割槽分配表”,空間分配與回收工作是比較簡單的。
二、地址轉換和儲存保護
固定分割槽管理可以採用靜態重定位方式進行地址對映。
為了實現儲存保護,處理器設定了一對“下限暫存器”和“上限暫存器”。當一個已經被裝入主儲存器的作業能夠得到處理器執行時,程序排程應記錄當前執行作業所在的分割槽號,且把該分割槽的下限地址和上限地址分別送入下限暫存器和上限暫存器中。處理器執行該作業的指令時必須核對其要訪問的絕對地址是否越界。
三、多作業佇列的固定分割槽管理
為避免小作業被分配到大的分割槽中造成空間的浪費,可採用多作業佇列的方法。即系統按分割槽數設定多個作業佇列,將作業按其大小排到不同的佇列中,一個佇列對應某一個分割槽,以提高記憶體利用率。
2、可變分割槽儲存管理
可變分割槽儲存管理不是預先將記憶體劃分分割槽,而是在作業裝入記憶體時建立分割槽,使分割槽的大小正好與作業要求的儲存空間相等。這種處理方式使記憶體分配有較大的靈活性,也提高了記憶體利用率。但是隨著對記憶體不斷地分配、釋放操作會引起儲存碎片的產生。
一、空間的分配與回收
採用可變分割槽儲存管理,系統中的分割槽個數與分割槽的大小都在不斷地變化,系統利用“空閒區表”來管理記憶體中的空閒分割槽,其中登記空閒區的起始地址、長度和狀態。當有作業要進入記憶體時,在“空閒區表”中查詢狀態為“未分配”且長度大於或等於作業的空閒分割槽分配給作業,並做適當調整;當一個作業執行完成時,應將該作業佔用的空間作為空閒區歸還給系統。
可以採用首先適應演算法、最佳(優)適應演算法和最壞適應演算法三種分配策略之一進行記憶體分配。
二、地址轉換和儲存保護
可變分割槽儲存管理一般採用動態重定位的方式,為實現地址重定位和儲存保護,系統設定相應的硬體:基址/限長暫存器(或上界/下界暫存器)、加法器、比較線路等。
基址暫存器用來存放程式在記憶體的起始地址,限長暫存器用來存放程式的長度。處理機在執行時,用程式中的相對地址加上基址暫存器中的基地址,形成一個絕對地址,並將相對地址與限長暫存器進行計算比較,檢查是否發生地址越界。
三、儲存碎片與程式的移動
所謂碎片是指記憶體中出現的一些零散的小空閒區域。由於碎片都很小,無法再利用。如果記憶體中碎片很多,將會造成嚴重的儲存資源浪費。解決碎片的方法是移動所有的佔用區域,使所有的空閒區合併成一片連續區域,這一技術稱為移動技術(緊湊技術)。移動技術除了可解決碎片問題還使記憶體中的作業進行擴充。顯然,移動帶來系統開銷加大,並且當一個作業如果正與外設進行I/O時,該作業是無法移動的。
3、頁式儲存管理
基本原理
1.等分記憶體
頁式儲存管理將記憶體空間劃分成等長的若干區域,每個區域的大小一般取2的整數冪,稱為一個物理頁面有時稱為塊。記憶體的所有物理頁面從0開始編號,稱作物理頁號。
2.邏輯地址
系統將程式的邏輯空間按照同樣大小也劃分成若干頁面,稱為邏輯頁面也稱為頁。程式的各個邏輯頁面從0開始依次編號,稱作邏輯頁號或相對頁號。每個頁面內從0開始編址,稱為頁內地址。程式中的邏輯地址由兩部分組成:
邏輯地址
頁號p
頁內地址 d
3.記憶體分配
系統可用一張“位示圖”來登記記憶體中各塊的分配情況,儲存分配時以頁面(塊)為單位,並按程式的頁數多少進行分配。相鄰的頁面在記憶體中不一定相鄰,即分配給程式的記憶體塊之間不一定連續。
對程式地址空間的分頁是系統自動進行的,即對使用者是透明的。由於頁面尺寸為2的整數次冪,故相對地址中的高位部分即為頁號,低位部分為頁內地址。
3.5.2實現原理
1.頁表
系統為每個程序建立一張頁表,用於記錄程序邏輯頁面與記憶體物理頁面之間的對應關係。地址空間有多少頁,該頁表裡就登記多少行,且按邏輯頁的順序排列,形如:
邏輯頁號
主存塊號
0
B0
1
B1
2
B2
3
B3
2.地址對映過程
頁式儲存管理採用動態重定位,即在程式的執行過程中完成地址轉換。處理器每執行一條指令,就將指令中的邏輯地址(p,d)取來從中得到邏輯頁號(p),硬體機構按此頁號查頁表,得到記憶體的塊號B’,便形成絕對地址(B’,d),處理器即按此地址訪問主存。
3.頁面的共享與保護
當多個不同程序中需要有相同頁面資訊時,可以在主存中只保留一個副本,只要讓這些程序各自的有關項中指向記憶體同一塊號即可。同時在頁表中設定相應的“存取許可權”,對不同程序的訪問許可權進行各種必要的限制。
4、段式儲存管理
基本原理
1.邏輯地址空間
程式按邏輯上有完整意義的段來劃分,稱為邏輯段。例如主程式、子程式、資料等都可各成一段。將一個程式的所有邏輯段從0開始編號,稱為段號。每一個邏輯段都是從0開始編址,稱為段內地址。
2.邏輯地址
程式中的邏輯地址由段號和段內地址(s,d)兩部分組成。
3.記憶體分配
系統不進行預先劃分,而是以段為單位進行記憶體分配,為每一個邏輯段分配一個連續的記憶體區(物理段)。邏輯上連續的段在記憶體不一定連續存放。
3.6.2實現方法
1.段表
系統為每個程序建立一張段表,用於記錄程序的邏輯段與記憶體物理段之間的對應關係,至少應包括邏輯段號、物理段首地址和該段長度三項內容。
2.建立空閒區表
系統中設立一張記憶體空閒區表,記錄記憶體中空閒區域情況,用於段的分配和回收記憶體。
3.地址對映過程
段式儲存管理採用動態重定位,處理器每執行一條指令,就將指令中的邏輯地址(s,d)取來從中得到邏輯段號(s),硬體機構按此段號查段表,得到該段在記憶體的首地址S’, 該段在記憶體的首地址S’加上段內地址d,便形成絕對地址(S’+d),處理器即按此地址訪問主存。
5、段頁式儲存管理
頁式儲存管理的特徵是等分記憶體,解決了碎片問題;段式儲存管理的特徵是邏輯分段,便於實現共享。為了保持頁式和段式上的優點,結合兩種儲存管理方案,形成了段頁式儲存管理。
段頁式儲存管理的基本思想是:把記憶體劃分為大小相等的頁面;將程式按其邏輯關係劃分為若干段;再按照頁面的大小,把每一段劃分成若干頁面。程式的邏輯地址由三部分組成,形式如下:
邏輯地址
段號s
頁號p
頁內地址d
記憶體是以頁為基本單位分配給每個程式的,在邏輯上相鄰的頁面記憶體不一定相鄰。
系統為每個程序建立一張段表,為程序的每一段各建立一張頁表。地址轉換過程,要經過查段表、頁表後才能得到最終的物理地址。