⑴ 簡述虛擬化存儲技術的三種實現方法及工作原理
從系統的觀點看,有三種主要的存儲虛擬化方法:
基於主機的虛擬存儲;
基於存儲設備的虛擬存儲;
基於網路的虛擬存儲。
方法1:基於主機的虛擬存儲
基於主機的虛擬存儲依賴於代理或管理軟體,它們安裝在一個或多個主機上,實現存儲虛擬化的控制和管理。由於控制軟體是運行在主機上,這就會佔用主機的處理時間。因此,這種方法的可擴充性較差,實際運行的性能不是很好。基於主機的方法也有可能影響到系統的穩定性和安全性,因為有可能導致不經意間越權訪問到受保護的數據。這種方法要求在主機上安裝適當的控制軟體,因此一個主機的故障可能影響整個SAN系統中數據的完整性。軟體控制的存儲虛擬化還可能由於不同存儲廠商軟硬體的差異而帶來不必要的互操作性開銷,所以這種方法的靈活性也比較差。
但是,因為不需要任何附加硬體,基於主機的虛擬化方法最容易實現,其設備成本最低。使用這種方法的供應商趨向於成為存儲管理領域的軟體廠商,而且目前已經有成熟的軟體產品。這些軟體可以提供便於使用的圖形介面,方便地用於SAN的管理和虛擬化,在主機和小型SAN結構中有著良好的負載平衡機制。從這個意義上看,基於主機的存儲虛擬化是一種性價比不錯的方法。
方法2:基於存儲設備的虛擬化
基於存儲設備的存儲虛擬化方法依賴於提供相關功能的存儲模塊。如果沒有第三方的虛擬軟體,基於存儲的虛擬化經常只能提供一種不完全的存儲虛擬化解決方案。對於包含多廠商存儲設備的SAN存儲系統,這種方法的運行效果並不是很好。依賴於存儲供應商的功能模塊將會在系統中排斥JBODS(Just a Bunch of Disks,簡單的硬碟組)和簡單存儲設備的使用,因為這些設備並沒有提供存儲虛擬化的功能。當然,利用這種方法意味著最終將鎖定某一家單獨的存儲供應商。
基於存儲的虛擬化方法也有一些優勢:在存儲系統中這種方法較容易實現,容易和某個特定存儲供應商的設備相協調,所以更容易管理,同時它對用戶或管理人員都是透明的。但是,我們必須注意到,因為缺乏足夠的軟體進行支持,這就使得解決方案更難以客戶化(customzing)和監控。
方法3:基於網路的虛擬存儲
基於網路的虛擬化方法是在網路設備之間實現存儲虛擬化功能,具體有下面幾種方式:
1. 基於互聯設備的虛擬化
基於互聯設備的方法如果是對稱的,那麼控制信息和數據走在同一條通道上;如果是不對稱的,控制信息和數據走在不同的路徑上。在對稱的方式下,互聯設備可能成為瓶頸,但是多重設備管理和負載平衡機制可以減緩瓶頸的矛盾。同時,多重設備管理環境中,當一個設備發生故障時,也比較容易支持伺服器實現故障接替。但是,這將產生多個SAN孤島,因為一個設備僅控制與它所連接的存儲系統。非對稱式虛擬存儲比對稱式更具有可擴展性,因為數據和控制信息的路徑是分離的。
基於互聯設備的虛擬化方法能夠在專用伺服器上運行,使用標准操作系統,例如Windows、Sun Solaris、Linux或供應商提供的操作系統。這種方法運行在標准操作系統中,具有基於主機方法的諸多優勢--易使用、設備便宜。許多基於設備的虛擬化提供商也提供附加的功能模塊來改善系統的整體性能,能夠獲得比標准操作系統更好的性能和更完善的功能,但需要更高的硬體成本。
但是,基於設備的方法也繼承了基於主機虛擬化方法的一些缺陷,因為它仍然需要一個運行在主機上的代理軟體或基於主機的適配器,任何主機的故障或不適當的主機配置都可能導致訪問到不被保護的數據。同時,在異構操作系統間的互操作性仍然是一個問題。
3. 基於路由器的虛擬化
基於路由器的方法是在路由器固件上實現存儲虛擬化功能。供應商通常也提供運行在主機上的附加軟體來進一步增強存儲管理能力。在此方法中,路由器被放置於每個主機到存儲網路的數據通道中,用來截取網路中任何一個從主機到存儲系統的命令。由於路由器潛在地為每一台主機服務,大多數控制模塊存在於路由器的固件中,相對於基於主機和大多數基於互聯設備的方法,這種方法的性能更好、效果更佳。由於不依賴於在每個主機上運行的代理伺服器,這種方法比基於主機或基於設備的方法具有更好的安全性。當連接主機到存儲網路的路由器出現故障時,仍然可能導致主機上的數據不能被訪問。但是只有聯結於故障路由器的主機才會受到影響,其他主機仍然可以通過其他路由器訪問存儲系統。路由器的冗餘可以支持動態多路徑,這也為上述故障問題提供了一個解決方法。由於路由器經常作為協議轉換的橋梁,基於路由器的方法也可以在異構操作系統和多供應商存儲環境之間提供互操作性。
⑵ 連續分配方式不能實現虛擬存儲管理,為什麼
虛擬存儲器的實現是將進程的部分內容調入內存,而暫時不用的部分暫時存放在外存。很明顯,內外存的地址不可能連續啊。所以連續分配方式不可能實現虛擬存儲管理
⑶ 實現虛擬存儲器需要哪些硬體支持
實現虛擬存儲器需要三方面的硬體支持:
1、請求分頁/段的頁表或段表機制;
請求分頁存儲管理是建立在分頁存儲管埋的基礎上,並結合虛擬存儲系統原理實現的,是目前常用的一種實現虛擬存儲器的方式
2、缺頁/段中斷機構;
作用就是就是要訪問的頁不在主存,需要操作系統將其調入主存後再進行訪問。在這個時候,被內存映射的文件實際上成了一個分頁交換文件。
3、地址變換機構。
當進程要訪問某個邏輯地址中的數據時,分頁地址變換機構會自動地將有效地址(相對地址)分為頁號頁內地址兩部分,再以頁號為索引去檢索頁表。查找操作由硬體執行。在執行檢索之前,先將頁號與頁表長度進行比較,如果頁號大於或等於頁表長度,則表示本次所訪問的地址已超越進程的地址空間。於是,這一錯誤將被系統發現並產生一地址越界中斷。若未出現越界錯誤,則將頁表始址與頁號和頁表項長度的乘積相加,便得到該表項在頁表中的位置,於是可從中得到該頁的物理塊號,將之裝入物理地址寄存器中。與此同時,再將有效地址寄存器中的頁內地址送入物理地址寄存器的塊內地址欄位中。這樣便完成了從邏輯地址到物理地址的變換。
⑷ 虛擬存儲器技術主要用於解決什麼問題簡述虛擬存儲器的基本工作原理。
虛擬存儲器技術主要解決電腦內存不夠的問題,電腦中所運行的程序均需經由內存執行,若執行的程序佔用內存很大或很多,則會導致內存消耗殆盡。
為解決該問題,Windows中運用了虛擬內存技術,即勻出一部分硬碟空間來充當內存使用。當內存耗盡時,電腦就會自動調用硬碟來充當內存,以緩解內存的緊張。若計算機運行程序或操作所需的隨機存儲器(RAM)不足時,則 Windows 會用虛擬存儲器進行補償。
工作原理
1、中央處理器訪問主存的邏輯地址分解成組號a和組內地址b,並對組號a進行地址變換,即將邏輯組號a作為索引,查地址變換表,以確定該組信息是否存放在主存內。
2、如該組號已在主存內,則轉而執行④;如果該組號不在主存內,則檢查主存中是否有空閑區,如果沒有,便將某個暫時不用的組調出送往輔存,以便將這組信息調入主存。
3、從輔存讀出所要的組,並送到主存空閑區,然後將那個空閑的物理組號a和邏輯組號a登錄在地址變換表中。
4、從地址變換表讀出與邏輯組號a對應的物理組號a。
5、從物理組號a和組內位元組地址b得到物理地址。
6、根據物理地址從主存中存取必要的信息。
(4)虛擬存儲技術不能配什麼配合擴展閱讀:
相關概念
1、實地址與虛地址
用戶編製程序時使用的地址稱為虛地址或邏輯地址,其對應的存儲空間稱為虛存空間或邏輯地址空間;而計算機物理內存的訪問地址則稱為實地址或物理地址,其對應的存儲空間稱為物理存儲空間或主存空間。程序進行虛地址到實地址轉換的過程稱為程序的再定位。
2、虛擬內存的訪問過程
虛存空間的用戶程序按照虛地址編程並存放在輔存中。程序運行時,由地址變換機構依據當時分配給該程序的實地址空間把程序的一部分調入實存。
每次訪存時,首先判斷該虛地址所對應的部分是否在實存中:如果是,則進行地址轉換並用實地址訪問主存;否則,按照某種演算法將輔存中的部分程序調度進內存,再按同樣的方法訪問主存。
3、異構體系
從虛存的概念可以看出,主存-輔存的訪問機制與cache-主存的訪問機制是類似的。這是由cache存儲器、主存和輔存構成的三級存儲體系中的兩個層次。cache和主存之間以及主存和輔存之間分別有輔助硬體和輔助軟硬體負責地址變換與管理,以便各級存儲器能夠組成有機的三級存儲體系。
⑸ 虛擬存儲技術與什麼不能配合使用
樓主問題有點模糊。
我的理解是,虛擬存儲與什麼硬體存儲設備不能配合使用。
這個問題要想理解,就需要明白虛擬存儲技術是怎樣通過硬體實現的。
現在的虛擬存儲技術平台有很多,競爭也非常激烈,像IBM、EMC、HDS等重視存儲技術研發的廠商,在該領域的建樹都是非常深的。
下面我就將虛擬存儲的硬體實現為樓主講解一下:
簡單說來,在磁碟陣列等存儲設備與主機之間加「一台」裝有「磁碟管理軟體」,且具備很高IO帶寬的伺服器。就能實現虛擬存儲。
所有存儲設備均接在「虛擬存儲伺服器」上,再由該伺服器將所有認到的磁碟重新條帶化,分區,最後分配給所需要的主機。這樣便實現了虛擬存儲統一管理其他異構存儲設備的功能了。
因此,再回答樓主的問題就簡單了:
只要「虛擬存儲伺服器」能認到存儲空間的設備就都能配合虛擬存儲技術。如果認不到,就不能!
⑹ 什麼是虛擬存儲技術
虛擬內存
內存在計算機中的作用很大,電腦中所有運行的程序都需要經過內存來執行,如果執行的程序很大或很多,就會導致內存消耗殆盡。為了解決這個問題,Windows中運用了虛擬內存技術,即拿出一部分硬碟空間來充當內存使用,當內存佔用完時,電腦就會自動調用硬碟來充當內存,以緩解內存的緊張。舉一個例子來說,如果電腦只有128MB物理內存的話,當讀取一個容量為200MB的文件時,就必須要用到比較大的虛擬內存,文件被內存讀取之後就會先儲存到虛擬內存,等待內存把文件全部儲存到虛擬內存之後,跟著就會把虛擬內里儲存的文件釋放到原來的安裝目錄里了。下面,就讓我們一起來看看如何對虛擬內存進行設置吧。
虛擬內存的設置
對於虛擬內存主要設置兩點,即內存大小和分頁位置,內存大小就是設置虛擬內存最小為多少和最大為多少;而分頁位置則是設置虛擬內存應使用那個分區中的硬碟空間。對於內存大小的設置,如何得到最小值和最大值呢?你可以通過下面的方法獲得:選擇「開始→程序→附件→系統工具→系統監視器」(如果系統工具中沒有,可以通過「添加/刪除程序」中的Windows安裝程序進行安裝)打開系統監視器,然後選擇「編輯→添加項目」,在「類型」項中選擇「內存管理程序」,在右側的列表選擇「交換文件大小」。這樣隨著你的操作,會顯示出交換文件值的波動情況,你可以把經常要使用到的程序打開,然後對它們進行使用,這時查看一下系統監視器中的表現值,由於用戶每次使用電腦時的情況都不盡相同,因此,最好能夠通過較長時間對交換文件進行監視來找出最符合您的交換文件的數值,這樣才能保證系統性能穩定以及保持在最佳的狀態。
找出最合適的范圍值後,在設置虛擬內存時,用滑鼠右鍵點擊「我的電腦」,選擇「屬性」,彈出系統屬性窗口,選擇「性能」標簽,點擊下面「虛擬內存」按鈕,彈出虛擬內存設置窗口,點擊「用戶自己指定虛擬內存設置」單選按鈕,「硬碟」選較大剩餘空間的分區,然後在「最小值」和「最大值」文本框中輸入合適的范圍值。如果您感覺使用系統監視器來獲得最大和最小值有些麻煩的話,這里完全可以選擇「讓Windows管理虛擬內存設置」。
調整分頁位置
Windows 9x的虛擬內存分頁位置,其實就是保存在C盤根目錄下的一個虛擬內存文件(也稱為交換文件)Win386.swp,它的存放位置可以是任何一個分區,如果系統盤C容量有限,我們可以把Win386.swp調到別的分區中,方法是在記事本中打開System.ini(C:\Windows下)文件,在[386Enh]小節中,將「PagingDrive=C:WindowsWin386.swp」,改為其他分區的路徑,如將交換文件放在D:中,則改為「PagingDrive=D:Win386.swp」,如沒有上述語句可以直接鍵入即可。
而對於使用Windows 2000和Windows XP的,可以選擇「控制面板→系統→高級→性能」中的「設置→高級→更改」,打開虛擬內存設置窗口,在驅動器[卷標]中默認選擇的是系統所在的分區,如果想更改到其他分區中,首先要把原先的分區設置為無分頁文件,然後再選擇其他分區。
或者,WinXP一般要求物理內存在256M以上。如果你喜歡玩大型3D游戲,而內存(包括顯存)又不夠大,系統會經常提示說虛擬內存不夠,系統會自動調整(虛擬內存設置為系統管理)。
如果你的硬碟空間夠大,你也可以自己設置虛擬內存,具體步驟如下:右鍵單擊「我的電腦」→屬性→高級→性能 設置→高級→虛擬內存 更改→選擇虛擬內存(頁面文件)存放的分區→自定義大小→確定最大值和最小值→設置。一般來說,虛擬內存為物理內存的1.5倍,稍大一點也可以,如果你不想虛擬內存頻繁改動,可以將最大值和最小值設置為一樣。
⑺ 常見的虛擬化技術
虛擬化技術有哪些
1、CPU虛擬化
虛擬化在計算機方面通常是指計算元件在虛擬的基礎上而不是真實的基礎上運行。虛擬化技術可以擴大硬體的容量,簡化軟體的重新配置過程。簡單說來,CPU的虛擬化技術就是單CPU模擬多CPU並行,允許一個平台同時運行多個操作系統,並且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率。
2、網路虛擬化
網路虛擬化是目前業界關於虛擬化細分領域界定最不明確,存在爭議較多的一個概念。微軟眼中的「網路虛擬化」,是指虛擬專用網路(VPN)。VPN對網路連接的概念進行了抽象,允許遠程用戶訪問組織的內部網路,就像物理上連接到該網路一樣。網路虛擬化可以幫助保護IT環境,防止來自Internet的威脅,同時使用戶能夠快速安全的訪問應用程序和數據。
3、伺服器虛擬化
與網路虛擬化不同,伺服器虛擬化卻是虛擬化技術最早細分出來的子領域。根據2006年2月ForresterResearch的調查,全球范圍的企業對伺服器虛擬化的認知率達到了75%。三分之一的企業已經在使用或者准備部署伺服器虛擬化。這個產生於20世紀60年代的技術日益顯示出其重要價值。由於伺服器虛擬化發展時間長,應用廣泛,所以很多時候人們幾乎把伺服器虛擬化等同於虛擬化。
4、存儲虛擬化
隨著信息業務的不斷運行和發展,存儲系統網路平台已經成為一個核心平台,大量高價值數據積淀下來,圍繞這些數據的應用對平台的要求也越來越高,不光是在存儲容量上,還包括數據訪問性能、數據傳輸性能、數據管理能力、存儲擴展能力等等多個方面。可以說,存儲網路平台的綜合性能的優劣,將直接影響到整個系統的正常運行。因為這個原因,虛擬化技術又一子領域——虛擬存儲技術,應運而生。
5、應用虛擬化
前面幾種虛擬化技術,主要還專注於對硬體平台資源的虛擬優化分配,隨著IT應用的日益廣泛,應用虛擬化作為虛擬化家族的明日之星登上了歷史舞台。2006年7月由Forrester咨詢公司在美國對各種不同行業的高層IT管理人員所做的一項研究顯示,當今的機構現在將應用虛擬化當作是業務上的一個必由之路,而不是一個IT決策。據統計,全世界目前至少有超過18萬個機構在利用應用虛擬化技術進行集中IT管理、加強安全性和減少總體成本。
⑻ 虛擬存儲技術的虛擬存儲的特點
虛擬存儲具有如下特點:
(1)虛擬存儲提供了一個大容量存儲系統集中管理的手段,由網路中的一個環節(如伺服器)進行統一管理,避免了由於存儲設備擴充所帶來的管理方面的麻煩。例如,使用一般存儲系統,當增加新的存儲設備時,整個系統(包括網路中的諸多用戶設備)都需要重新進行繁瑣的配置工作,才可以使這個「新成員」加入到存儲系統之中。而使用虛擬存儲技術,增加新的存儲設備時,只需要網路管理員對存儲系統進行較為簡單的系統配置更改,客戶端無需任何操作,感覺上只是存儲系統的容量增大了。
(2)虛擬存儲對於視頻網路系統最有價值的特點是:可以大大提高存儲系統整體訪問帶寬。存儲系統是由多個存儲模塊組成,而虛擬存儲系統可以很好地進行負載平衡,把每一次數據訪問所需的帶寬合理地分配到各個存儲模塊上,這樣系統的整體訪問帶寬就增大了。例如,一個存儲系統中有4個存儲模塊,每一個存儲模塊的訪問帶寬為50MBps,則這個存儲系統的總訪問帶寬就可以接近各存儲模塊帶寬之和,即200MBps。
(3)虛擬存儲技術為存儲資源管理提供了更好的靈活性,可以將不同類型的存儲設備集中管理使用,保障了用戶以往購買的存儲設備的投資。
(4)虛擬存儲技術可以通過管理軟體,為網路系統提供一些其它有用功能,如無需伺服器的遠程鏡像、數據快照(Snapshot)等。
⑼ 什麼是虛擬存儲技術
1 虛擬存儲技術的產生
虛擬化技術並不是一件很新的技術,它的發展,應該說是隨著計算機技術的發展而發展起來的,最早是始於70年代。由於當時的存儲容量,特別是內存容量成本非常高、容量也很小,對於大型應用程序或多程序應用就受到了很大的限制。為了克服這樣的限制,人們就採用了虛擬存儲的技術,最典型的應用就是虛擬內存技術。隨著計算機技術以及相關信息處理技術的不斷發展,人們對存儲的需求越來越大。這樣的需求刺激了各種新技術的出現,比如磁碟性能越來越好、容量越來越大。但是在大量的大中型信息處理系統中,單個磁碟是不能滿足需要,這樣的情況下存儲虛擬化技術就發展起來了。在這個發展過程中也由幾個階段和幾種應用。首先是磁碟條帶集(RAID,可帶容錯)技術,將多個物理磁碟通過一定的邏輯關系集合起來,成為一個大容量的虛擬磁碟。而隨著數據量不斷增加和對數據可用性要求的不斷提高,又一種新的存儲技術應運而生,那就是存儲區域網路(SAN)技術。SAN的廣域化則旨在將存儲設備實現成為一種公用設施,任何人員、任何主機都可以隨時隨地獲取各自想要的數據。目前討論比較多的包括iSCSI、FC Over IP 等技術,由於一些相關的標准還沒有最終確定,但是存儲設備公用化、存儲網路廣域化是一個不可逆轉的潮流。
2 虛擬存儲的概念
所謂虛擬存儲,就是把多個存儲介質模塊(如硬碟、RAID)通過一定的手段集中管理起來,所有的存儲模塊在一個存儲池(Storage Pool)中得到統一管理,從主機和工作站的角度,看到就不是多個硬碟,而是一個分區或者卷,就好象是一個超大容量(如1T以上)的硬碟。這種可以將多種、多個存儲設備統一管理起來,為使用者提供大容量、高數據傳輸性能的存儲系統,就稱之為虛擬存儲。
⑽ 內存擴充之虛擬存儲技術
傳統存儲管理
特徵
時間局部性:如果執行了程序中的某條指令,那麼不久後這條指令很有可能再次執行;如果某個數據被訪問過,不久之後該數據很可能再次被訪問(因為程序中存在大量循環)
空間局部性:一旦程序訪問了某個存儲單元,在不久之後,其附近的存儲單元很有可能被訪問(因為很多數據在內存中是連續存放的,並且程序的指令也是順序地在內存中存放的
寄存器
高速緩存
內存
外存(如磁碟、磁帶等)
越往上容量越小,訪問速度越快,成本越高
越往下容量越大,訪問速度越慢,成本越低
高速緩存技術的思想:將近期會頻繁訪問到的數據放到更高速的存儲器中,暫時用不到的數據放在更低速存儲器中
快表機構就是將近期常訪問的頁表項副本放到更高速的cache中
基於局部性原理,在程序裝入時,可以將程序中很快就會用到的部分裝入內存,暫時用不到的部分留在外存,就可以讓程序開始執行
在程序執行過程中,當所訪問的信息不在內存時,由操作系統負責將所需信息從外存調入內存,然後繼續執行程序
若內存空間不夠,由操作系統將內存中暫時用不到的信息換出到外存
因此,在操作系統的管理下,在用戶看來似乎有一個比實際內存大得多的內存,這就是虛擬內存
操作系統虛擬性的一個體現,實際的物理內存大小沒有變,只是在邏輯上進行了擴充
虛擬內存的最大容量是由計算機的地址結構(CPU定址范圍)確定的
虛擬內存的實際容量 = min(內存外存容量之和,CPU定址范圍)
虛擬內存有以下三個主要特徵
虛擬內存技術,允許一個作業多次調入內存。如果採用連續分配方式,會不方便實現。因此,虛擬內存的實現需要建立在離散分配的內存管理方式基礎上
傳統的非連續分配存儲管理
基本分頁存儲管理
基本分段存儲管理
基本段頁式存儲管理
虛擬內存的實現
請求分頁存儲管理
請求分段存儲管理
請求段頁式存儲管理
主要區別:在程序執行過程中,當所訪問的信息不在內存時,由操作系統負責將所需信息從外存調入內存,然後繼續執行程序。若內存空間不夠,由操作系統負責將內存中暫時用不到的信息換出到外存
操作系統要提供請求調頁/段功能、頁面/段置換功能
請求分頁存儲管理和基本分頁存儲管理的主要區別
頁表機制
頁表項:內存塊號、狀態位、訪問欄位、修改位、外存地址,頁號時隱含的
內存塊號是頁面在內存中對應的頁框號,如果狀態位為0,則內存塊號為無
狀態位表示是否已被調入內存
訪問欄位記錄最近被訪問過幾次,或者上次訪問時間,由此操作系統能夠提供置換演算法
修改位記錄頁面被調入內存後是否被修改過,如果沒有,就不需要浪費時間寫回外存
外存地址是頁面在外存中的存放位置
缺頁中斷機構
在請求分頁系統中,每當要訪問的頁面不在內存時,便會產生一個缺頁中斷,然後由操作系統的缺頁中斷處理程序處理中斷(內中斷)
此時缺頁的進程阻塞,放入阻塞隊列,調頁完成後再將其喚醒,放回就緒隊列
如果內存中有空閑塊,則為進程分配一個空閑塊,將所缺頁面裝入該塊,並修改頁表中相應的頁表項
如果內存中沒有空閑塊,則由頁面置換演算法選擇一個頁面淘汰,若該頁面在內存期間被修改過,則要將其寫回外存,為修改過的頁面不用寫回外存
一條指令再執行期間可能產生多次缺頁中斷( A to B)
新增的步驟
頁面的換入、換出需要磁碟IO,會有較大的開銷,因此好的頁面置換演算法應該追求更少的缺頁率
缺頁中斷≠頁面置換
發生缺頁中斷會發生調頁,只有內存塊滿了才發生頁面置換
最佳置換演算法OPT:每次淘汰以後永不使用或最長時間內不再被訪問的頁面
理想化的演算法,很難實現
先進先出演算法FIFO:每次淘汰最先進入內存的頁面
實現:把調入內存的頁面根據調入的先後順序排成隊列,頁面置換時換出隊頭頁面,新調入的頁面排到隊尾
優點:實現簡單
缺點1:belady異常,為進程分配的物理塊數增大時,缺頁次數不減反增的異常現象。只有FIFO會產生belady異常。
缺點2:演算法與進程實際運行時的規律不適應,因為先調入的頁面有可能最經常被訪問,因此演算法性能差
最近最久未使用置換演算法LRU:淘汰最近最久未使用的頁面
實現方法:賦予每個頁面對應的頁表項中,用訪問欄位記錄該頁面自上次被訪問以來所經歷的時間t
優點:性能最接近OPT
缺點:實現困難、開銷大
時鍾置換演算法CLOCK/NRU
簡單NRU:為每一個頁表項設置一個訪問位,再將內存中的頁面都通過連接指針連成一個循環隊列,當某頁被訪問時,訪問位為1,只需檢查頁的訪問位。如果為0,就將該頁換出,否則將其改為0,暫不換出,繼續向後掃描,若第一輪掃描都是1,將這也頁面的訪問位改為0後,進行第二輪掃描,第二輪掃描中一定會有訪問位為0的頁面,將其換出。因此最多經過兩輪掃描
改進NRU:如果淘汰的頁面沒有被修改過,就不需要執行IO操作,只有淘汰的頁面被修改過時,才需要寫回外存。因此,同時考慮最近有無訪問和有無修改,在其他條件相同時,優先淘汰沒有修改過的頁面,避免IO操作
第一輪:找到第一個訪問位和修改位都為0的頁面進行替換,如果沒有找到進行下一輪掃描
第二輪:查找第一個訪問位為0,修改位為1的頁面進行替換,本輪將所有被掃描過的訪問位設置為0,如果沒有進行下一輪掃描
第三輪:查找0,0替換否則下一輪
第四輪:查找0,1替換
最多會進行四輪掃描
駐留集:請求分頁管理中給進程分配的物理塊的集合
在採用了虛擬存儲技術的系統中,駐留集大小一般小於進程的總大小
駐留集太小,導致缺頁頻繁,系統要花大量時間處理缺頁,實際用於進程推進的時間很少
駐留集太大,會導致多道程序並發度下降,資源利用率降低
固定分配:操作系統為每個進程分配一組固定數目的物理塊,在進程運行期間不再改變
可變分配:先為每個進程分配一定數目的物理塊,在進程運行期間,可根據情況作適當的增加或減少
局部置換:發生缺頁時只能選進程自己的物理地址塊進行置換
全局置換:可以將操作系統保留的空閑物理塊分配給缺頁進程,也可以將別的進程持有的物理塊置換到外存,再分配給缺頁進程
不存在固定分配全局置換的策略,因為全局置換意味著一個進程擁有的物理塊數量必然改變
其他三種組合存在
固定分配局部置換:系統為每個進程分配一定數量的物理塊,在整個運行期間都不改變。若進程在運行中發生缺頁,並且需要進行頁面置換,則只能從該進程在內存中的頁面中選出一頁換出,然後再調入需要的頁面
缺點:很難在剛開始就確定應為每個進程分配多少個物理地址塊才算合理(採用這種策略的系統可以根據進程大小、優先順序、或是根據程序員給出的參數來確定為一個進程分配的內存塊數
可變分配全局置換:剛開始會為進程分配一定數量的物理塊。操作系統會保持一個空閑物理塊隊列,當某進程發生缺頁時,從空閑物理塊中取出一塊分給該進程;若無空閑物理塊,則選擇一個未鎖定的頁面換出到外存,再將該物理塊分配給缺頁的進程。採用這種策略時,只要某進程發生缺頁,都將獲得新的物理塊,僅當空閑物理塊用完時,系統才選擇一個未鎖定的頁面調出。被選擇調出的頁面可能是系統中任何一個進程的頁面,因此這個被選中的進程擁有的物理塊會減少,缺頁率會增加
只要缺頁就給該進程分配新的物理塊
可變分配局部置換:剛開始會為每個進程分配一定數量的物理塊,當某進程發生缺頁時,只允許從該進程自己的物理塊中選出一個進行頁面置換。如果進程在運行過程中頻繁缺頁,系統會為該進程多分配幾個物理塊,直至該進程缺頁率趨於適當程度;反之,如果缺頁率太低,就是當減少分配給該進程的內存塊數
要根據發生缺頁的頻率來動態增加或減少進程的物理塊
何時調入頁面
從何處調入頁面
對換區:讀寫速度更快,採用連續分配方式
文件區:讀寫速度更慢,採用離散分配方式
抖動/顛簸現象:剛剛換出的頁面馬上要換入內存,剛剛換入的頁面馬上要換出外存,這種頻繁的頁面調度行為稱為抖動/顛簸
主要原因是進程頻繁訪問的頁面數目高於可用的物理塊數(分配給進程的物理塊不夠)
為進程分配物理塊太少會使進程發生抖動現象,為進程分配的物理塊太多會降低系統的並發度降低某些資源的利用率。因此提出了「工作集」的概念
工作集:在某段時間間隔里,進程實際訪問頁面的集合
駐留集:請求分頁存儲管理中給進程分配的內存塊的集合
駐留集不能小於工作集,否則進程運行過程中將頻繁缺頁