當前位置:首頁 » 服務存儲 » 簡單分頁存儲管理的原理
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

簡單分頁存儲管理的原理

發布時間: 2023-05-27 07:00:27

㈠ 簡單分頁存儲管理和簡單分段存儲管理了的區別

1、頁是信息的物理單位,分頁是為實現離散分配方式,以消減內存的外零頭,提高內存的利用率;或者說,分頁僅僅是由於系統管理的需要,而不是用戶的需要。段是信息的邏輯單位,它含有一組其意義相對完整的信息。分段的目的是為了能更好的滿足用戶的需要。

2、頁的大小固定且由系統確定,把邏輯地址劃分為頁號和頁內地址兩部分,是由機器硬體實現的,因而一個系統只能有一種大小的頁面。段的長度卻不固定,決定於用戶所編寫的程序,通常由編輯程序在對源程序進行編輯時,根據信息的性質來劃分。

3、分頁的作業地址空間是維一的,即單一的線性空間,程序員只須利用一個記憶符,即可表示一地址。分段的作業地址空間是二維的,程序員在標識一個地址時,既需給出段名,又需給出段內地址。

㈡ 操作系統請求分頁存儲方式的基本原理是什麼謝謝

3.請求分頁系統(1)請求分頁對頁表的擴充
在請求分頁系統中所使用的主要數據結構仍然是頁表。它對頁式系統中的頁表機制進行了擴充但其基本作用是實現由用戶地址空間到物理內存空間的映射。由於只將應用程序的一部分裝入內存,還有一部分仍在磁碟上,故需在頁表中增加若干項,供操作系統實現虛擬存儲器功能時參考。常見的系統中,一般對頁表的表項進行如下擴充:除了頁號對應的物理塊號,還增加了狀態位、修改位、外存地址和訪問欄位等。
·狀態位,用於指示該頁是否已經調入了內存。該位一般由操作系統軟體來管理,每當操作系統把一頁調人物理內存中時,置位。相反,當操作系統把該頁從物理內存調出時,復位。CPU對內存進行引用時,根據該位判斷要訪問的頁是否在內存中,若不在內存之中,則產生缺頁中斷。
·修改位,表示該頁調入內存後是否被修改過。當CPU以寫的方式訪問頁面時,對該頁表項中的修改位置位。該位也可由操作系統軟體來修改,例如,當操作系統將修改過頁面保存在磁碟上後,可將該位復位。
·外存地址,用於指出該頁在外存上的地址,供調人該頁時使用。
·訪問宇段,用於記錄本頁在一定時間內被訪問的次數,或最近已經有多長時間未被訪問。提供給相應的置換演算法在選擇換出頁面時參考。
(2)對缺頁中斷的支持
在請求分頁系統中,CPU硬體一定要提供對缺頁中斷的支持,根據頁表項中的狀態位判斷是否產生缺頁中斷。缺頁中斷是一個比較特殊的中斷,這主要體現在如下兩點:
·在指令的執行期間產生和處理缺頁信號。通常的CPU外部中斷,是在每條指令執行完畢後檢查是否有中斷請求到達。而缺頁中斷,是在一條指令的執行期間,發現要訪問的指令和數據不在內存時產生和處理的。
·一條指令可以產生多個缺頁中斷。例如,一條雙操作數的指令,每個操作數都不在內存中,這條指令執行時,將產生兩個中斷。CPU提供的硬體支持,還要體現在當從中斷處理程序返回時,能夠正確執行產生缺頁中斷的指令。
(3)頁面調度策略
虛擬存儲器系統通常定義三種策略來規定如何(或何時)進行頁面調度:調入策略、置頁策略和置換策略。
(4)置換演算法(replacementalgorithm)決定在需要調入頁面時,選擇內存中哪個物理頁面被置換。置換演算法的出發點應該是,把未來不再使用的或短期內較少使用的頁面調出。而未來的實際情況是不確定的,通常只能在局部性原理指導下依據過去的統計數據進行預測。常用的演算法有以下幾種:
·最佳演算法(optimal,OPT)。選擇「未來不再使用的」或「在離當前最遠位置上出現的」頁面被置換。這是一種理想情況,是實際執行中無法預知的,因而不能實現,只能用作性能評價的依據。
·最近最久未使用演算法(LeastRecentlyUsed,LRU)。選擇內存中最久未使用的頁面被置換,這是局部性原理的合理近似,性能接近最佳演算法。但由於需要記錄頁面使用時間的先後關系,硬體開銷太大。LRU可用如下的硬體機構幫助實現:
一個特殊的棧:把被訪問的頁面移到棧頂,於是棧底的是最久未使用頁面。每個頁面設立移位寄存器:被訪問時左邊最高位置1,定期右移並且最高位補0,於是寄存器數值最小的是最久未使用頁面。
·先進先出演算法(FIFO)。選擇裝入最早的頁面置換。可以通過鏈表來表示各頁的裝入時間先後。FIFO的性能較差,因為較早調入的頁往往是經常被訪問的頁,這些頁在FIFO演算法下被反復調入和調出,並且有Belady現象。所謂Belady現象是指:採用FIFO演算法時,如果對—個進程未分配它所要求的全部頁面,有時就會出現分配的頁面數增多但缺頁率反而提高的異常現象。Belady現象可形式化地描述為:一個進程戶要訪問M個頁,OS分配艫個內存頁面給進程P;對一個訪問序列S,發生缺頁次數為PE(占,N)。當N增大時,PE(S,N)時而增大時而減小。Belady現象的原因是FIFO演算法的置換特徵與進程訪問內存的動態特徵是矛盾的,即被置換的頁面並不是進程不會訪問的。
·時鍾(clock)演算法。也稱最近未使用演算法(NotRecentlyUsed,NRU),它是LRU和FIFO的折中。每頁有一個使用標志位(usebit),若該頁被訪問則置userbit=l,這是由CPU的硬體自動完成的。置換時採用一個指針,從當前指針位置開始按地址先後檢查各頁,尋找usebit=0的面作為被置換頁。指針經過的userbit=l的頁都修改userbit=O,這個修改的過程是操作系統完成的,最後指針停留在被置換頁的下一個頁。
·最不常用演算法(LeastFrequentlyUsed,LFU)。選擇到當前時間為止被訪問次數最少的頁面被置換。每頁設置訪問計數器,每當頁面被訪問時,該頁面的訪問計數器加1。發生缺頁中斷時,淘汰計數值最小的頁面,並將所有計數清零。
·頁面緩沖演算法(pagebuffering)。它是對FIFO演算法的發展,通過建立置換頁面的緩沖,這樣就有機會找回剛被置換的頁面,從而減少系統I/0的開銷。頁面緩沖演算法用FIFO演算法選擇被置換頁,把被置換的頁面放人兩個鏈表之一。即是如果頁面未被修改,就將其歸人到空閑頁面鏈表的末尾,否則將其歸人到已修改頁面鏈表。空閑頁面和已修改頁面,仍停留在內存中一段時間,如果這些頁面被再次訪問,只需較小開銷,被訪問的頁面就可以返還作為進程的內存頁。需要調入新的物理頁面時,將新頁面內容讀人到空閑頁面鏈表的第一項所指的頁面,然後將第一項刪除。當已修改頁面達到一定數目後,再將它們一起調出到外存,然後將它們歸人空閑頁面鏈表。這樣能大大減少I/O操作的次數。

㈢ 基本分段存儲管理方式的分段系統的基本原理

在分段存儲管理方式中,作業的地址空間被劃分為若干個段,每個段定義了一組邏輯信息。例如,有主程序段MAIN、子程序段X、數據段D及棧段S等,如圖4-17所示。每個段都有自己的名字。為了實現簡單起見,通常可用一個段號來代替段名,每個段都從0開始編址,並採用一段連續的地址空間。段的長度由相應的邏輯信息組的長度決定,因而各段長度不等。整個作業的地址空間由於是分成多個段,因而是二維的,亦即,其邏輯地址由段號(段名)和段內地址所組成。
分段地址中的地址具有如下結構:
在該地址結構中,允許一個作業最長有 64 K個段,每個段的最大長度為64 KB。分段方式已得到許多編譯程序的支持,編譯程序能自動地根據源程序的情況而產生若干個段。例如,Pascal編譯程序可以為全局變數、用於存儲相應參數及返回地址的過程調用棧、每個過程或函數的代碼部分、每個過程或函數的局部變數等等,分別建立各自的段。類似地,Fortran編譯程序可以為公共塊(Common block)建立單獨的段,也可以為數組分配一個單獨的段。裝入程序將裝入所有這些段,並為每個段賦予一個段號。 為了實現從進程的邏輯地址到物理地址的變換功能,在系統中設置了段表寄存器,用於存放段表始址和段表長度TL。在進行地址變換時,系統將邏輯地址中的段號與段表長度TL進行比較。若S>TL,表示段號太大,是訪問越界,於是產生越界中斷信號;若未越界,則根據段表的始址和該段的段號,計算出該段對應段表項的位置,從中讀出該段在內存的起始地址,然後,再檢查段內地址d是否超過該段的段長SL。若超過,即d>SL,同樣發出越界中斷信號;若未越界,則將該段的基址d與段內地址相加,即可得到要訪問的內存物理地址。
下圖示出了分段系統的地址變換過程。
像分頁系統一樣,當段表放在內存中時,每要訪問一個數據,都須訪問兩次內存,從而極大地降低了計算機的速率。解決的方法也和分頁系統類似,再增設一個聯想存儲器,用於保存最近常用的段表項。由於一般情況是段比頁大,因而段表項的數目比頁表項的數目少,其所需的聯想存儲器也相對較小,便可以顯著地減少存取數據的時間,比起沒有地址變換的常規存儲器的存取速度來僅慢約10%~15%。

㈣ 基本分頁存儲管理

假設是按位元組編址

考慮支持多道程序的兩種連續分配方式

原因:連續分配要求進程佔有的必須是一塊連續的內存區域
能否講一個進程分散地裝入到許多不相鄰的分區,便可充分利用內存

基本分頁存儲管理的思想:把內存分為一個個相等的小分區,再按照分區大小把進程拆分成一個個小部分

頁框/頁幀:內存空間分成的一個個大小相等的分區(比如4KB)
頁框號:頁框的編號,從0開始,從低地址開始

頁/頁面:用戶進程的地址空間分為和頁框大小相等的一個個區域
頁號:頁/頁面的編號,從0開始

進程的最後一個頁面可能沒有一個頁框那麼大,頁框不能太大,否則可能產生過大的內部碎片

操作系統以頁框為單位為各個進程分配內存空間。進程的每個頁面分別放入一個頁框中,也就是說,進程的頁面與內存的頁框有一一對應的關系
每個頁面不必連續存放,也不必按照先後順序,可以放到不相鄰的各個頁框中

進程在內存中連續存放時,通過動態重定位實現邏輯地址到物理地址的轉換。在裝入模塊之後,內存中指令使用的依然是邏輯地址,直到指令執行的時候才會進行地址轉換。系統會設置一個重定位寄存器,用來存放裝入模塊存放的起始位置,重定位寄存器中的值加上邏輯地址就是該邏輯地址實際對應的物理地址

如果採用分頁技術

頁框大小為4KB,地址空間為4GB的系統
頁號為前20位,頁內偏移量為後12位

頁表:為了能知道進程的每個頁面在內存中存放的位置,操作系統要為每個進程建立一張頁表

一個進程對應一張頁表
進程的每一頁對應一個頁表項
每個頁表項由頁號和頁框號組成
頁表記錄進程頁面和實際存放的頁框之間的對應關系

每個頁表項的長度是相同的,頁號是隱含的
各頁表項會按順序連續存放在內存中,如果該頁表在內存中的起始地址是X,4GB/4KB系統的頁框有

用於實現邏輯地址到物理地址轉換的一組硬體機構

通常會在系統中設置一個頁表寄存器(PTR),存放頁表在內存中的起始地址F和頁表長度M(M個頁表項)
進程未執行時,頁表的起始地址和頁表長度放在進程式控制制塊(PCB)中,當進程被調度時,操作系統內核會把他們放到頁表寄存器中

基本分頁存儲管理中地址是一維的,即只要給出一個邏輯地址,系統就可以自動計算出頁號、偏移量,不需要顯式告訴系統偏移量是多少

理論上,頁表項長度為3即可表示內存塊號的范圍,但是為了方便頁表查詢,會讓頁面恰好能裝得下整數個頁表項,令每個頁表項佔4位元組
4KB頁面,可以放4096/3 =1365個頁表項,有4096%3 =1B的碎片,訪問1365及之後的頁表項時,還要考慮前面的頁框中的碎片,才能得到頁表項的物理地址,比較麻煩

進程頁表通常存放在連續的頁框中,這樣就能用統一的計算方式得到想要得到的頁表項存儲的位置

地址變換過程中有兩次訪存操作:查詢頁表、訪問目標內存單元

局部性原理

如果這個程序將程序對應的指令存放在10號內存塊,將程序中定義的變數存放在23號內存塊,當這個程序執行時,會很頻繁地反問10、23號內存塊

時間局部性:如果執行了程序中的某條指令,那麼不久後這條指令很有可能被再次執行;如果某個數據被訪問過,不久之後該數據很有可能再次被訪問(因為程序存在大量循環)
空間局部性:一旦程序訪問了某個存儲單元,在不久之後,其附近的存儲單元也很有可能被訪問(因為很多數據在內存中連續存放)

基本地址變換機構中,每次要訪問一個邏輯地址,都要查詢頁表,由於局部性原理,可能連續多次查詢同一個頁表項

快表:又稱聯想寄存器(TLB),是一種訪問速度比內存塊很多的高速緩存,用來存放當前訪問的若干頁表項,以加速地址變換的過程。內存中的頁表常稱為慢表

引入快表後地址的變換過程

一般來說,快表的命中率可以達到90%以上

單級頁表存在的問題

對問題1

可將頁表進行分組,使每個內存塊剛好可以放入一個分組。為離散分配的頁表再建立一張頁表,稱為頁目錄表,或外層頁表
各級頁表的大小不能超過一個頁面

針對兩級頁表

對問題2

可以在需要訪問頁面時,才把頁面調入內存(虛擬存儲技術),可以在頁表項中增加一個標志位,用於表示該頁面是否已經調入內存
若想訪問的頁面不在內存中,會產生缺頁中斷(內中斷),然後將目標頁面從外存調入內存
之後的文章會有展開

兩級頁表訪存次數分析:如果沒有TLB,第一次訪存是訪問內存中的頁目錄表,第二次訪存是訪問內存中的二級頁表,第三次訪存是訪問目標內存單元

㈤ 說明分頁存儲管理的基本原理

分頁存儲管理的基本原理是:將主存空間和輔存空間分別等分為大小相等的若干頁,頁的大小為個位元組,如(1KB),(2KB),(4KB)等,並且為每個頁按順序指定一個頁號,即0頁、1頁、2頁、…。

㈥ 基本分頁存儲管理

  閱讀前請先閱讀 內存管理基礎 。從本文開始就介紹不連續分配的幾種方式,本文主要介紹基本分頁存儲管理。

  假設進程A的大小為23MB,但是每個分區的大小隻有10MB,如果進程只能佔用一個分區,顯然是放不下的。
  解決思路:如果允許進程佔用多個分區,那麼可以把進程拆分成 10MB + 10MB + 3MB三個部分 ,再把這三個部分別放在三個分區中(這些分區不要求連續).....

  將內存空間分為一個個大小相等的分區(如每個分區4KB,每個分區就是一個 「頁框」 ,或稱 「內存塊」 「物理塊」 。每個頁框有一個編號,即 「頁框號」 ,或 「內存塊號」 「物理塊號」 ,頁框號 從0開始 )。將用戶進程的地址空間也分為與頁框大小相等的一個個區域,稱為 頁面 。頁框的大小不能太大,否則可能會產生過大的內存碎片。
  操作系統 以頁框為單位為各個進程分配內存空間。 進程的每個頁面分別放入一個頁框中,即進程的 頁面和內存的頁框 一一對應 的關系。

  進程分頁後,進程的各個頁面可以放在不連續的頁框中,所以如何實現邏輯地址到物理的地址的轉換?
  如下圖,將下面的進程分頁,假設每頁大小為50B,那麼就分為4個頁面。

  手動計算方法:
   頁號 = 邏輯地址 / 頁面長度(取整數部分)。
   頁內偏移量 = 邏輯地址 % 頁面長度
   頁面在內存中的起始位置 :操作系統需要用某種數據結構記錄進程各個頁面的起始位置。
  對於計算機,通常將 頁面的大小劃分為2的整數次冪 。假設用32個二進制位表示邏輯地址,頁面大小為取2 12 B = 4096B = 4KB。

  如邏輯地址2,用二進製表示00000000 00000000 0000 0000 00000010 ,前24位二進制對應的十進制值就是邏輯地址2對應的頁號,即0號頁,而後12二進制位對應的十進制值就是偏移量。如果0號頁在內存中的起始地址為X,那麼邏輯地址2對應的物理地址就是 X + 2.
  同理,邏輯地址4097,用二進製表示00000000 00000000 0001 0000 00000001 ,前24位二進制對應的十進制值就是邏輯地址4097對應的頁號,即1號頁,而後12二進制位對應的十進制值就是偏移量。如果0號頁在內存中的起始地址為Y,那麼邏輯地址4097對應的物理地址就是 Y + 1.
  結論: 如果每個頁面的大小為2 k B,用二進製表示邏輯地址,則末尾的K位表示頁內偏移量,其餘部分就是頁號。
  因此,如果讓 每個頁面的大小為2的整數次冪, 計算機就可以很方便的得出一個邏輯地址對應的頁號和頁內偏移量。
  如果一個頁面的大小為2KB,那分頁存儲管理的邏輯地址結構為:

  地址結構包括兩個部分:前一個部分表示頁號,後一個部分表示頁內偏移量W。

  在知道如何計算頁號和偏移量後,要計算實際的物理地址,還需要知道頁號在內存中的起始地址,如何知道每個頁面在內存中存放的位置——操作系統要為 每個進程建立一張頁表。

  按照之前的方法計算出邏輯地址所對應的頁號N,然後根據頁表區查詢實際的內存塊號M,由於每個內存塊號的大小都是相等的,所以實際地址 = M * 內存塊大小 + 偏移量。

  在實際上,頁表中是沒有頁號的,那怎麼找到實際對應的內存塊號呢?
  假設某系統物理內存大小為4GB,頁面大小為4KB,則每個頁表項至少應該佔用多少位元組?

  各頁表項會 按順序連續地 存放在內存中,如果該頁表在內存中存放的地址為X,則M號頁對應的頁表項存放的地址為:X + M * 3B
  因此,頁表的頁號可以是隱含的。只需要知道 頁表存放的起始地址 頁表項長度 ,即可找到各個頁號對應的頁表項存放的位置,找到位置後就可以讀取該位置的值,即實際內存塊號。
  舉個例子,如果按照邏輯地址計算出了偏移量為20,頁號為1,頁表中的頁號是隱藏的,那麼根據頁表在內存中的起始地址20(假設的值),以及頁表項長度3B,那麼頁號為1所對應的實際內存塊號的值所在的地址就是:20 + 3 * 1 = 23的位置,然後在該位置的值,該值就是實際內存塊號,如果是4的話,那麼實際地址就是: 4 * 頁面大小(4096B) + 20 = 16404。

  基本地址變換結構可以藉助進程的頁表將邏輯地址轉換為物理地址。
  通常在系統中設置一個 頁表寄存器(PTR Page-Table Register) ,存放 頁表在內存中起始地址F 頁表長度M
  進程在未執行時,頁表的起址和頁表長度放在 進程式控制制塊(PCB)中 ,當進程被調度時,操作系統內核會把它們放在頁表寄存器中。

  邏輯地址到物理地址變換的過程:

  比較頁表長度,頁表項長度和頁面大小三個概念:

  在分頁存儲管理(頁式管理)系統中,只要確定了每個頁面的大小,邏輯地址結構就確定了。因此, 頁式管理中地址是一維的。 即只要給出一個邏輯地址,系統就可以自動算出頁號、頁內偏移量兩個部分,並不需要顯示告系統這個邏輯地址中,頁內偏移量佔多少位。
  基本地址變換結構需要訪問兩次內存: 第一次訪問內存查找頁表;第二次訪問物理內存對應的內存單元。

  對於上圖,會很頻繁地訪問10號塊中的指令、23號塊。
   時間局部性 :如果執行了程序中的某條指令,那麼不久後這條指令很有可能再次執行:如果某個數據被訪問過,不久之後該數據很有可能再次被訪問。(因此程序中存在大量循環)。
   空間局限性 :一旦程序訪問了某個存儲單元,在不久之後,其附近的存儲單元也很有可能被訪問。(因為很多數據在內存中都是連續存放的。如上面的數組,每次循環一次都會訪問鄰近的下一個元素地址)。
  在基本地址變換機構中,每次訪問一個邏輯地址,都需要查詢內幕才能中的頁表。由於局部性原理,可能連續很多次查找到的都是一個頁表項。既然如此,就可以利用這個特性減少訪問頁表的次數——快表。

   快表 ,又稱 聯想寄存器(TLB) ,是一種 訪問速度比內存快很多 的高速緩沖存儲器,用來存儲當前訪問的若干頁表項,以加速地址變換的過程。與此對應,內存中的頁表常稱為 慢表。
  快表的地址包換過程:
  (1) CPU給出邏輯地址,由某個硬體算得頁號、頁內偏移量,將頁號與快表中的所有頁號進行比較。
  (2) 如果找到匹配的頁號,說明要訪問的頁表項在快表中有副本,則直接從中取出該頁對應的內存塊號,再根據內存塊號中與頁內偏移量算地物理地址。最後訪問該物理地址對應的內存單元。因此如果快表命中,則訪問某個邏輯地址只需 一次 訪問內存即可。
  (3) 如果沒有找到匹配的頁號,則就需要訪問頁表,需要兩次訪問內存,在第一次訪問內存查詢得到頁號後,需要將頁號添加到快表中,以便後面再次被訪問。如果快表已滿,則必須按照一定的演算法對舊的頁表項進行替換。
  由於查詢快表比查詢頁表的速度快很多,因此只要快表命中,就可以節省很多時間。因為局部性原理,一般來說快表的命中率可以達到90%以上。

㈦ 什麼是內存分頁存儲管理

分頁存儲管理是將各進程的地址空間分成大小相等的頁,把內存的存儲空間也分成與頁大小相同的片,稱為物理塊。在分配存儲空間時,以塊為單位來分配。
優點:有效解決存儲器的零頭問題,能在更高的程度上進行多道程序設計,從而相應提高了存儲器和CPU的利用率。
缺點:採用動態地址變換為增加計算機成本和降低CPU的速度。表格占內存空間,費時來管理表格。存在頁內碎片。作業動態的地址空間受內存容量限制。

㈧ 頁式管理的基本原理

將各進程的虛擬空間劃分成若干個長度相等的頁(page),頁式管理把內存空間按頁的大小劃分成片或者頁面(page frame),然後把頁式虛擬地址與內存地址建立一一對應頁表,並用相應的硬體地址變換機構,來解決離散地址變換問題。頁式管理採用請求調頁或預調頁技術實現了內外存存儲器的統一管理。

㈨ 請問,分頁式管理其頁面大小是固定不變的嗎,謝謝

不是。

這個是和內存頁框的大小一樣的,不同的計算機可能會不同,但是對同一個機器而言,因為與硬體有關,出廠之後或者操作系統確認了大小就不會變。

內存塊大:將要執行的頁面裝入分頁內存,裝入多少頁面,不同系統演算法不同。

內存太小:將非活動進程的頁面,移入虛擬內存,裝入要執行的頁面,.NET系統會同時進行垃圾回收。

分頁存貯管理的原理是:內存等分為塊,作業等分為頁,頁與塊等大(即頁是以塊為標准衡量,頁<=塊),作業執行時頁裝入塊執行。

(9)簡單分頁存儲管理的原理擴展閱讀:

在分頁系統中的頁面其大小應適中。頁面若太小,一方面雖然可使內存碎片減小,從而減少了內存碎片的總空間,有利於提高內存利用率,但另一方面也會使每個進程佔用較多的頁面,從而導致進程的頁表過長,佔用大量內存;此外,還會降低頁面換進換出的效率。

如果選擇的頁面較大,雖然可以減少頁表的長度,提高頁面換進換出的速度,但卻又會使頁內碎片增大。因此,頁面的大小應選擇適中,且頁面大小應是2的冪,通常為512 B~8 KB。

㈩ 操作系統概論,關於頁式存儲管理的基本原理

頁號佔5位,2^5不就是32嗎,5個位表示頁號,地址總長度為15,5位表示頁號了,剩下10位就是頁內地址了,2^10=1024