複製鏈接
請複製以下鏈接發送給好友

分頁

鎖定
分頁(英語:Paging),是一種操作系統存儲器管理的一種技術,可以使電腦的主存可以使用存儲在輔助存儲器中的數據。操作系統會將輔助存儲器(通常是磁盤)中的數據分區成固定大小的區塊,稱為“頁”(pages)。當不需要時,將分頁由主存(通常是內存)移到輔助存儲器;當需要時,再將數據取回,加載主存中。相對於分段,分頁允許存儲器存儲於不連續的區塊以維持文件系統的整齊。分頁是磁盤和內存間傳輸數據塊的最小單位。
中文名
分頁
外文名
Paging
定    義
一種操作系統存儲器管理的技術
性    質
磁盤和內存間傳輸數據塊最小單位
學    科
計算機
領    域
計算機

分頁簡介

分頁(英語:Paging),是一種操作系統存儲器管理的一種技術,可以使電腦的主存可以使用存儲在輔助存儲器中的數據。操作系統會將輔助存儲器(通常是磁盤)中的數據分區成固定大小的區塊,稱為“頁”。當不需要時,將分頁由主存(通常是內存)移到輔助存儲器;當需要時,再將數據取回,加載主存中。相對於分段,分頁允許存儲器存儲於不連續的區塊以維持文件系統的整齊。分頁是磁盤和內存間傳輸數據塊的最小單位。
分頁/虛擬內存能有助“大大地”降低整體及額外非必要的 I/O 次數,提高系統整體運作性能。因為這能有助提高 RAM 的讀取命中率,也透過其內部的高效率算法來達到 I/O 數據流的預緩存工作,通過與之相關的等等手段也能很好地提高了 CPU 的使用效率,而擁有大物理內存的用户更可能考慮利用如RamdiskSupercache、SoftPerfect RAM Disk等模擬出硬盤分區來同時將虛擬內存/系統臨時文件等設置其上以進一步加強系統性能,及達至保障硬盤的措施。分頁是虛擬內存技術中的重要部分。

分頁概覽

分頁就是當數據並沒有映射在隨機存取存儲器上時,操作系統必需控制使程序繼續運行所會做的動作。一般來説,操作系統會將運行中程序的數據放至隨機存取存儲器上空的幀中,將不需要的數據從幀上清除,但如果隨機存取存儲器沒有空的幀可用,操作系統會把一部分的數據存回輔助存儲器然後釋放。輔助存儲器會用分頁的方式將文件存在經過平均分配大小的頁上,等到隨機存取存儲器需要使用時再寫回。如果在隨機存取存儲器釋放數據過後還需要更新數據,系統必須將數據先寫回後更新,再存入輔助存儲器中。高性能的系統需要在替換隨機存取存儲器上的數據時消耗較少的時間,所以一般的系統會採取最近最少使用算法(LRU)來達到較高的效果。

分頁命中和缺頁

由於更早地被髮明(20世紀60年代早期),類似CPU-存儲器之間的SRAM緩存,虛擬存儲器系統使用不同的術語。 [1] 
  • 虛擬存儲器系統中,DRAM緩存命中,為稱讀取一個地址時,該地址在DRAM緩存中的過程。命中過程不需要程序再從磁盤中緩慢讀取數據。
  • 相對地,DRAM不命中稱為缺頁(page fault)。由於頁幀由有效位物理頁號(或磁盤地址)構成,當有效位標記為0時,即表明該地址未在緩存中,調用該地址則會引發缺頁異常,從而從磁盤中拷貝需要的內容,覆蓋緩存中的一個犧牲頁,從而能夠命中。過多的缺頁將導致反覆的磁盤讀取和寫入,非常耗費計算時間。

分頁系統顛簸

儘管在整個運行過程中程序引用的不同頁面總數(也就是虛擬內存大小)可能超出物理存儲器(DRAM)總大小,但是程序常常在較小的活動頁面(active page)上活動,這個集合叫作工作集(working set)或常駐集(resident set)。在工作集被緩存後,對它的反覆調用將使程序命中提高,從而提高性能。 [1] 
大部分的程序都可以在存儲器獲取數據和讀取中達到穩定的狀態,當程序達到穩定狀態時,存儲器的使用量通常都不會太大。虛擬內存雖然可以有效率的去控制存儲器的使用,但解決大量的頁缺失還是造成系統遲緩的主要因素。當工作集的大小超過物理存儲器大小,程序將發生一種不幸的情況,這種情況被稱為“顛簸(Thrashing)”,頁面將不停地寫入、釋放、讀取,由於大量的丟失(而非命中)而損失極大性能。用户可以增加隨機存取存儲器的大小或是減少同時在系統裏運行程序的數量來降低系統顛簸的機率。

分頁頁面調度

  • 當需要用到數據時再向系統請求,使系統將數據由輔助存儲器傳入存儲器上,這就叫“需求分頁”。它使得系統不需要將全部的程序都放在存儲器上,減少了所需要的存儲器的數量。所有現代系統都使用按需頁面調度(paging)的方式。
  • 當系統查看分頁表時認為某些數據可能需要用到,而先將數據傳到存儲器上的行為,就叫做“先行分頁”, 當存儲器夠大的話通常會採取這種方式。
  • Unix系統會定期使用sync程序來清理所有經過更動的幀,它會將所有被更動過的幀存到輔助存儲器中。Windows系統有時亦會進行類似功能的操作,它可以使新程序在打開時更快速。

分頁分享

多任務處理多用户的環境下,經常遇到不同的程序需要用到相同的數據,如果採用個別處理的話,很多的存儲器會被浪費掉,分享的功用使不同的程序可以使用相同的存儲器。分享功能還需注意的是系統必須要分離經過修改過後的數據以防止其他程序需要用到修改前的數據。

分頁實現

分頁Ferranti Atlas

第一台支持分頁系統的電腦是Atlas,這台電腦有着分區成各250字的分頁的結合存儲

分頁Windows 3.X和9x

微軟為了要使1990年的Windows 3.x不像Windows 1.0Windows 2.0一樣需要大量的硬件資源,因而把分頁系統加到Microsoft Windows內。系統會創造名為386SPART.PAR或WIN386.SWP的隱藏檔來跟存儲器交換檔案,通常可以在根目錄找到,有時候也會生成在WINDOWS文件夾中。此文件的大小決定頁面文件的大小(可以在控制面板中調整),如果用户移動或刪除這個文件會在下次引導時出現藍屏死機

分頁Windows NT

Windows NT的系統中(如Windows XPVista78等),頁面文件名為pagefile.sys並存儲在根目錄中。有時在引導扇區會出現系統崩潰並出現存儲器傾印的狀況,Windows系統會將頁面文件作為暫存用途,並在下次重起系統時釋放頁面文件的空間。

分頁Unix及類Unix系統

Unix及類Unix系統中,系統會定期更新隨機存取存儲器與虛擬內存間的數據,其中有些系統會在硬盤上劃一塊專門的區塊作為頁面文件交換檔案用,稱為交換分區(swap partitions),有些系統還可以把這個區塊用文件的形式出現。
Linux核心2.6以上中,因為系統可以直接繞過其他程序直接跟文件形式的分區交換,分區檔的速度已經可以跟交換分區一樣快了,且分區檔可以自動被存放在硬盤讀取最頻繁的地方,不過紅帽公司還是建議將硬盤劃專門區塊做使用。不過使用文件形式的分區的靈活度較高,可以自由存放在任一個磁盤,更改成任一大小,在硬盤劃專門區塊後除非使用特殊的工具,否則無法更動位置及大小。Linux可以創建無數個分區,並將文件排優先級,硬盤讀取越頻繁的地方通常越是系統優先使用該分區,因此要謹慎的排好優先級,否則會大大的降低系統的性能。
OS X使用多重的分區文件,雖然它可以存到其他的地方,但默認就會將文件存到硬盤的根目錄中。

分頁32位硬件限制

由於32位的硬件地址總線最高只能定址到4GB的位置,超過的部分將不能被電腦進行分頁使用存儲器。
參考資料
  • 1.    《深入理解計算機系統》(美)Randal E.Bryant, David R. O'Hallaron 著.機械工業出版社(2010)