計算機操作系統之存儲管理


以下是本人大學學計算機操作系統的筆記。有版權的,轉載請注明出處。

 

存儲管理:就是對內存的管理。

內存管理提高存儲器的利用率以及從邏輯上擴充存儲器。

存儲管理功能:

內存的回收與分配,地址變換(程序中的邏輯地址與內存中的物理地址之間的轉換),內存擴充(借助虛擬技術或覆蓋技術從邏輯上擴充內存容量),內存保護(保證進入內存的各道作業都在自己的存儲空間運行,互不干擾)

 

虛擬內存

以往的存儲管理技術必須將作業全部裝入內存才能執行且作業常駐內存直到運行結束,難以滿足較大作業或較多作業進入內存執行。所以為了能讓作業的一部分裝入就可以運行的存儲管理技術叫做虛擬內存管理技術。

局部性原理:大多數程序執行時,在一個較短的時間內僅能使用程序代碼的一部分,相應的,程序所訪問的存儲空間也局限於某個區域,這就是程序執行的局部性原理。

表現為時間局部性和空間局部性。

 

基於局部性原理,在程序裝入時可以將程序的一部分放入內存,而將其余部分放在外存,然后啟動程序(部分裝入)。

在程序執行期間,當所訪問的信息不在內存中,再由操作系統將所需的部分調入內存(請求調入)。

另外,系統將內存中暫時不用的內容置換到外存上,騰出空間存放將要調入內存的信息(置換功能)。

這種從邏輯上擴充內存容量的存儲器系統稱為虛擬存儲器。

 

 

 

 

 

 

 

分區存儲管理:將內存分成若干個大小不等的區域,由多道環境下的各並發進程共享。

(給每一個內存中的進程划分一塊適當大小的存儲區,連續存儲進程的程序和數據)

特點:管理簡單,存在嚴重的碎片問題使內存利用率不高。進程在分區連續存放,進程大小受到分區大小的限制。

兩種分法:

固定分區法:把內存固定的划分為若干個大小不等的區域。(系統對內存的管理和控制通過分區說明表進行,分區說明表說明各分區號,分區大小,起始地址和是否空閑(分區狀態)。內存的分配釋放,保護,地址變換都是通過分區說明表進行)

動態分區法:在作業執行前不建立分區,分區的建立是建立在作業的處理過程中進行的,大小隨着作業或進程對內存的要求而改變的。相比提供內存利用率。

動態分區除了分區說明表還把內存中的可以分區單獨構成可用分區表或可以分區自由鏈,描述內存資源。

動態分區組成,,分區說明表-,,可用分區表,每個表目記錄一個空閑區:區號,分區長度,起始地址.,管理簡單,缺點表大小難以確定,-占用一部分內存-可用分區自由鏈(利用每個空閑區頭幾個單元存放本空閑區大小和下一個空閑區的起始地址,系統設置一個-自由鏈指針指向第一個空閑區。)查找比較困難,但不占用額外內存區。....

 

頁式管理:各進程的虛擬空間被划分為若干個長度相等的頁,頁長1K—4K。

進程虛擬地址變為由頁號P與頁內地址W組成。

同時也把內存分成與頁面大小相等的區域,稱為塊或物理塊(頁面)。用戶進程在內存空間除了在每個頁面內地址連續之外,每個頁面之間不再連續。

調度作業時必須將作業的所有頁面一次調入內存,如果內存沒有足夠多的物理塊,那么作業等待,這種方式稱為簡單分頁。

特點:減少了碎片(任一碎片都小於一個頁面)以及只在內存存放反復執行或即將執行的程序段與數據部分,把不經常執行的程序段和數據存放於外存,執行時再調入,且由連續存儲提高為非連續存儲。

頁式虛擬地址與內存頁面物理地址轉:頁式虛擬地址與內存物理地址建立一一對應的頁表(硬件地址變換機構來執行轉換)。將邏輯地址上連續的頁號映射到物理內存中稱為離散的多個物理塊(頁面),將頁面和物理塊一一對應,體現在頁表。(頁表由頁號和塊號組成)

對內外存的統一管理采用請求調頁技術(基於局部性原理)。(什么管理?只在內存存放反復執行或即將執行的程序段與數據部分,把不經常執行的程序段和數據存放於外存,執行時再調入)

 

 

動態頁式管理:1,請求頁式管理2,預調入頁式管理

相同點:在作業開始執行之前,都不把作業或進程的程序段和數據段一次性的全部裝入內存,而只裝被認為是經常執行的部分,其他部分執行過程中動態裝入。

不同點:

請求頁式管理:當需要的數據或指令不在內存即發生缺頁中斷,系統將外存中相應頁面調入內存。

預調入頁式管理:系統對外存中的頁進行調入計算,估計出這些頁中指令和數據的執行和被訪問順序,按此順序調入和調出內存。

重點請求頁式管理

系統如何發現不在內存中的虛頁?

擴充頁表法。

如何處理虛頁這種情況設計兩個問題,1,何種方式把所缺頁調入內存2,內存沒有空閑區,調進來的頁放在什么地方()。

頁面置換算法置換的單位是頁面,連續存儲中交換區交換的是整個進程

缺頁的調入和存放,內存沒有空閑頁時都是一個內存頁面置換算法問題。

置換算法:在內存中沒有空閑頁面時被調用,目的是選出一個被淘汰的頁面。

輪轉法:循環換出內存可用區內一個可用被換出的頁,無論該頁是剛被換進或已換進內存很長時間。

先進先出(FIFO)法:選擇在內存駐留時間最長的一頁將被淘汰。(實現方式,把已分配頁面按分配時間鏈接起來,組成FIFO隊列,置換指針指向隊首,置換時把隊首頁換出,換人的頁鏈接在隊尾。)

FIFO的bleady現象:未給進程或作業分配足它所要求的頁面數時,有時會出現分配的頁面數增多,缺頁次數增加的現象。

引用串

3

4

2

6

4

3

7

4

3

內存

3

4

2

6

6

3

7

4

4

 

3

4

2

2

6

3

7

7

 

 

3

4

4

2

6

3

3

是否缺頁

T

T

T

T

 

T

T

T

 

缺頁7次,命中率2/9=

 

最近最少使用LRU算法:選擇最近最長時間沒有被使用過的頁面予以淘汰。

引用串

3

4

2

6

4

3

7

4

3

內存

3

4

2

6

4

3

7

4

3

 

3

4

2

6

4

3

7

4

 

 

3

4

2

6

4

3

7

是否缺頁

T

T

T

T

 

T

T

 

 

缺頁6次,命中率3/9=

 

最近沒有使用NUR頁面淘汰算法:從那些最近一個時期內未被訪問的頁中任選一頁淘汰。在頁表中增設一個訪問位,當某頁被訪問時,訪問位置1,否則置0。系統周期性對所有訪問位清0.淘汰時從哪些訪問位為0的頁面選擇一個進行淘汰。

引用串

3

4

2

6

4

3

7

4

3

內存

3

3

3←

6

6

6←

6

4

4

4

4

4←

4←

4

7

7←

7←

 

2

2

2

3

3←

3

3

是否缺頁

T

T

T

T

 

T

T

T

 

缺頁7次,命中率2/9=

最不經常使用LFU頁面淘汰算法:淘汰到當前時間為止被訪問次數最少的那一頁。在頁表中增設一個訪問計數器。每當某頁被訪問,訪問計數器加1,發生中斷時,淘汰計數值最小的那一頁,並將所有頁計數器清零。

 

抖動現象:內存頁面置換算法選擇不當,導致剛被調出內存的頁面又馬上調入內存,調入內存不久的頁面馬上被調出,如此反復的現象。

抖動原因:請求分頁系統中每個進程只能分配到所需全部內存空間的一部分。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM