虛擬位址由作業系統維護,由mmu可以進行轉換,擴大了記憶體空間分頁管理。大多數使用虛擬儲存器的系統都使用一種稱為分頁(paging)機制。虛擬位址空間劃分成稱為頁(page)的單位,而相應的實體地址空間也被進行劃分,單位是頁幀(frame),乙個在磁碟,乙個在記憶體,頁和頁楨的大小必須相同。在32位位址的機器,它的虛擬位址範圍從0~0xffffffff(4g),而這台機器只有256m的實體地址,因此他可以執行4g的程式,但該程式不能一次性調入記憶體執行。這台機器必須有乙個達到可以存放4g程式的外部儲存器(例如磁碟或是flash),以保證程式片段在需要時可以被呼叫。在這個例子中,頁的大小為4k,頁楨大小與頁相同——這點是必須保證的,因為記憶體和外圍儲存器之間的傳輸總是以頁為單位的。對應4g的虛擬位址和256m的物理儲存器,他們分別包含了1m個頁和64k個頁幀。
頁表就像乙個函式,輸入是頁號,輸出是頁楨,實現從頁號到實體地址的對映。作業系統給每乙個程序維護乙個頁表。所以不同程序的虛擬位址可能一樣。頁表給出了程序中每一頁所對應的頁幀的位置。
頁面置換:把乙個頁面從記憶體調換到磁碟的對換區中
抖動:在具有虛存的計算機中,由於頻繁的調頁活動使訪問磁碟的次數過多而引起的系統效率降低的一種現象.
在位址對映過程中,若在頁面中發現所要訪問的頁面不再記憶體中,則產生缺頁中斷。當發生缺頁中斷時作業系統必須在記憶體選擇乙個頁面將其移出記憶體,以便為即將調入的頁面讓出空間。而用來選擇淘汰哪一頁的規則叫做頁面置換演算法
常用的頁面置換演算法:
先進先出法fifo(置換次數比較多) ;最佳置換法opt:選擇將來不再使用或在最遠的將來才被訪問的頁調換出去(不便於實現);最近最久未使用lru:選擇在最近一段時間裡最久沒有使用過的頁面予以淘汰 ;clock置換演算法(lru演算法的近似實現); 最少使用(lfu)置換演算法;頁面緩衝置換算。
頁式可以分為:
1 靜態頁式管理。靜態分頁管理的第一步是為要求記憶體的作業或程序分配足夠的頁面。系統通過儲存頁面表、請求表以及頁表來完成記憶體的分配工作。靜態頁式管理解決了分割槽管理時的碎片問題。但是,由於靜態頁式管理要求程序或作業在執行前全部裝入記憶體,如果可用頁面數小於使用者要求時,該作業或程序只好等待。而且作業和程序的大小仍受記憶體可用頁面數的限制。
2 動態頁式管理。動態頁式管理是在靜態頁式管理的基礎上發展起來的。它分為請求頁式管理和預調入頁式管理。 優點: 沒有外碎片,每個內碎片不超過頁大小。乙個程式不必連續存放。便於改變程式占用空間的大小(主要指隨著程式執行而動態生成的資料增多,要求位址空間相應增長,通常由系統呼叫完成而不是作業系統自動完成)。 缺點:程式全部裝入記憶體。要求有相應的硬體支援。例如位址變換機構,缺頁中斷的產生和選擇淘汰頁面等都要求有相應的硬體支援。這增加了機器成本。增加了系統開銷,例如缺頁中斷處理機,請求調頁的演算法如選擇不當,有可能產生抖動現象。 雖然消除了碎片,但每個作業或程序的最後一頁內總有一部分空間得不到利用果頁面較大,則這一部分的損失仍然較大。
分頁記憶體,非分頁記憶體
分頁記憶體是低中斷級別的例程可以訪問的。而非分頁記憶體則是各個中斷級別的例程都可以使用的。區別在於 分頁記憶體是虛擬記憶體,在物理上未必總是能得到。作業系統實現虛擬記憶體的主要方法就是通過分頁機制。在win32中,實體地址空間,二維虛擬位址空間和實際記憶體位址是三個不同的概念。作業系統通過段選擇子構...
mysql分頁概念 MySQL 分頁
分頁的基本原理 mysql explain select from message order by id desc limit 10000,20 1.row id 1 select type table message type index possible keys null key prima...
分頁記憶體和非分頁記憶體區別
在寫驅動的時候,經常要呼叫exallocatepoolwithtag函式分配記憶體,其中第乙個引數可以是如下幾個 nonpagedpool 從非分頁記憶體池中分配記憶體 pagedpool 從分頁記憶體池中分配記憶體 nonpagedpoolmustsucceed 從非分頁記憶體池中分配記憶體,如果...