8.1虛擬儲存技術(virtual memory)
虛擬儲存技術:當程序執行時,先將其一部分裝入記憶體,另一部分暫留在磁碟,當要執行的指令或訪問的資料不在記憶體時,由作業系統自動完成將它們從磁碟調入記憶體的工作。
虛存:把記憶體與磁碟有機地結合起來使用,從而得到乙個容量很大的記憶體,即虛存。虛存是對記憶體的抽象,構建在儲存體系之上,由作業系統協調各儲存器的使用,虛存提供了乙個比物理記憶體空間大得多的位址空間。虛存的大小受到計算機系統定址機制和磁碟空間中可用空間兩方面的限制。
虛擬頁式(paging)——虛擬儲存技術+頁式儲存管理方案——>虛擬頁式儲存管理系統,其基本思想是:
虛擬頁式儲存管理系統是以cpu時間和磁碟空間換取昂貴記憶體空間,這是作業系統中的資源轉換技術。
8.2頁表及頁表項的設計
頁表表項設計:頁表由頁表項組成。
頁表項應該儲存頁框號(記憶體塊號、物理頁面號、頁幀號)、有效位(駐留位,中斷位,表示該頁是在記憶體還是在磁碟)、訪問位(引用位)、修改位(此頁在記憶體中是否被 修改過)、保護位(讀/可讀寫)。
通常,頁表項是由硬體設計的。
如果頁表頁在記憶體中不連續存放,則需要引入頁表頁的位址索引表——>頁目錄(page directory)。
反轉(倒排)頁表:由於位址轉換需要很大的空間:從虛擬位址空間出發:虛擬位址——>查頁表——>得到頁框號——>形成實體地址,每個程序一張頁表,因此採取從實體地址空間出發,系統建立一張頁表,其中頁表項記錄程序i 的某虛擬位址(虛頁號)與頁框號的對映關係。稱為反轉頁表。
8.3位址轉換過程及tlb引入
位址轉換過程由記憶體管理單元mmu完成:將虛擬位址轉換為實體地址。
在位址轉換過程中,至少有兩次或兩次以上的記憶體訪問,cpu的指令處理速度與記憶體指令的訪問速度差異大,cpu 的速度得不到充分利用。因此基於程式訪問的區域性性原理採用快表(tlb)加快位址對映速度,改善系統效能。
tlb(translation look-aside buffers)——乙個緩衝區,可以放置一些內容的儲存區域。其特點是:
通常稱快表為相聯儲存器(associate memory),按內容並行查詢。快表由cache組成,因此成本較高,大小容量有限,,只能用乙個比較小的儲存空間做快表,儲存正在執行程序的頁表的子集(部分頁表項)。
8.4頁錯誤(頁故障)page fault
頁錯誤又稱頁面錯誤,頁故障,頁面失效,通常指位址轉換過程中硬體發生的異常,例如:(1)缺頁異常,即所訪問的虛擬頁面沒有調入物理記憶體(2)頁面訪問違反許可權( 讀/寫、使用者/核心)(3)錯誤的訪問位址。
缺頁異常處理:
8.5虛擬頁式儲存管理方案中的軟體相關策略
駐留集:即作業系統給每個程序分配多少個頁框(作業系統給程序分配的頁框數)。分為:
置換問題:當乙個記憶體已經用完沒有空閒頁框時,需要挑乙個頁框將其內容置換出去。
置換範圍分為區域性置換策略(僅在產生本次缺頁的程序的駐留集中選擇)和全域性置換策略(將記憶體中所有未鎖定的頁框都作為置換的候選)。共分為固定分配區域性置換、可變分配區域性置換和可變分配全域性置換三種。其中,可變分配區域性置換具體如下:
置換策略:決定置換當前記憶體中的哪乙個頁框。所有置換策略的目標為置換最近最不可能訪問的頁。根據區域性性原理,最近的訪問歷史和最近將要訪問的模式間存在相關性,因此,大多數策略都基於過去的行為來**將來的行為。其中置換策略設計的越精緻、越複雜,實現的軟硬體開銷就越大。除此之外,存在一些約束,即被鎖定的頁框不能置換。
頁框鎖定:採用虛存技術,如果需訪問的**資料暫時不在記憶體,需要臨時調入記憶體,則需要訪問磁碟,修改記憶體的資料結構,以至於帶來開銷,使得程序執行時間不確定。為解決此問題,給每乙個頁框增加乙個鎖定位,通過設定相應的鎖定位,不讓作業系統將程序使用的頁面換出記憶體,避免產生由交換過程帶來的不確定的延遲。類似的需要鎖定的情況有:作業系統核心**、關鍵資料結構、i/o緩衝區,特別是正在i/o的記憶體頁面。windows當中提供virtuallock/virtualunlock執行鎖定和解鎖操作。
清除策略:即從程序的駐留集中收回頁框。
虛擬頁式系統工作的最佳狀態:發生缺頁異常時,系統中有大量的空閒頁框。由此可知,在系統中儲存一定數目的空閒頁框供給比使用所有記憶體並在需要時搜尋乙個頁框有更好的效能。因此大部分的作業系統都會:
當程序需要使用乙個已置換出的頁框時,如果該頁框還沒有被新的內容覆蓋,將它從空閒頁框集合中移出即可恢復該頁面,將這種技術稱為頁緩衝技術:
8.6置換演算法1
置換演算法又稱為頁面淘汰(替換)演算法,主要有:最佳演算法——>先進先出——>第二次機會——>時鐘演算法——>最近未使用——>最近最少使用——>最不經常使用——>老化演算法——>工作集——>工作集時鐘。
8.7置換演算法2——工作集演算法
影響缺頁次數的因素:(1)頁面置換演算法;(2)頁面本身的大小;(3)程式的編制方法;(4)分配給程序的頁框數量。
形容缺頁多而導致的系統效能越差的名詞——顛簸(抖動):虛存中,頁面在記憶體與磁碟之間頻繁排程,使得排程頁面所需的時間比程序實際執行的時間還多,這樣導致系統效率急劇下降,這種現象成為顛簸或抖動。
頁面尺寸問題:確定頁面大小對於分頁的硬體設計非常重要,而對於作業系統是個可選的引數。由以下幾個因素確定頁面尺寸:(1)內部碎片;(2)頁表長度;(3)輔存的物理特性。
工作集(working set)模型——基本思想:根據程式的區域性性原理,一般情況下,程序在一段時間內總是集中訪問一些頁面,這些頁面成為活躍頁面,如果分配給乙個程序的物理頁面數太少了,使該程序所需的頁面不能全部裝入記憶體則程序在執行過程中將頻繁中斷。如果能為程序提供與活躍頁面數相等的物理頁面數,則可減少缺頁中斷次數。
工作集:乙個程序當前正在使用的頁框集合。工作集需要隨時調整。工作集的內容取決於:(1)訪頁序列特性;(2)時刻t;(3)工作集視窗長度。
工作集演算法——基本思路:找出乙個不在工作集中的頁面並置換它。具體如下:
實現:掃瞄所有頁表項,執行操作:
如果是,則該頁面為被置換的頁面;
如果不是,記錄當前所有被掃瞄過頁面的最後訪問時間裡面的最小值,掃瞄下乙個頁面並重複1、2.
8.7與儲存管理相關的一些軟體技術
在多數實現中,在對映共享的頁面時不會實際讀入頁面的內容,而是在訪問頁面時,頁面不會被每次一頁的讀入,磁碟檔案則被當做後備儲存。
當程序退出或顯示地解除檔案對映時,所有被修改頁面會寫回檔案
虛擬儲存技術
一.實現記憶體擴充的技術 1 覆蓋技術 在程式執行中,在不同時刻把同乙個儲存區分配給不同程式段和資料段,實現儲存區共享。適用於連續儲存 單一連續區分配,分割槽 如圖bdg共享乙個儲存區 三個程序不同時發生 cefh同理 2 交換技術 對換技術 1.定義 將記憶體中某程序的的程式和資料 全部或部分 寫...
Linux虛擬儲存技術
標準linux使用虛擬儲存器技術,這種技術用於提供比計算機系統中實際使用的物理記憶體大得多的記憶體空間。使用者將感覺到好像程式可以使用非常大的記憶體空間,從而使得程式設計人員在寫程式時不用考慮計算機中的物理記憶體的實際容量。為了支援虛擬儲存管理器的管理,linux系統採用分頁 paging 的方式來...
頁式虛擬儲存管理 虛擬儲存技術的實現方式是什麼?
1 在伺服器端的虛擬儲存 伺服器廠商會在伺服器端實施虛擬儲存。同樣,軟體廠商也會在伺服器平台上實施虛擬儲存。這些虛擬儲存的實施都是通過伺服器端將映象對映到外圍儲存裝置上,除了分配資料外,對外圍儲存裝置沒有任何控制。伺服器端一般是通過邏輯卷管理來實現虛擬儲存技術。邏輯卷管理為從物理儲存對映到邏輯上的卷...