整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          操作系統(tǒng):虛擬內(nèi)存的定義及實現(xiàn)方式

          傳統(tǒng)存儲管理方式的特征

          各種內(nèi)存管理策略都是為了同時將多個進程保存在內(nèi)存中以便允許多道程序設計。

          傳統(tǒng)的內(nèi)存管理策略它們都具有以下兩個共同的特征:

          1) 一次性

          作業(yè)必須一次性全部裝入內(nèi)存后,方能開始運行。這會導致兩種情況發(fā)生:

          ·當作業(yè)很大,不能全部被裝入內(nèi)存時,將使該作業(yè)無法運行;

          ·當大量作業(yè)要求運行時,由于內(nèi)存不足以容納所有作業(yè),只能使少數(shù)作業(yè)先運行,導致多道程序度的下降。

          2) 駐留性

          作業(yè)被裝入內(nèi)存后,就一直駐留在內(nèi)存中,其任何部分都不會被換出,直至作業(yè)運行結(jié)束。運行中的進程,會因等待I/O而被阻塞,可能處于長期等待狀態(tài)。

          由以上分析可知,許多在程序運行中不用或暫時不用的程序(數(shù)據(jù))占據(jù)了大量的內(nèi)存空間,而一些需要運行的作業(yè)又無法裝入運行,顯然浪費了寶貴的內(nèi)存資源。

          局部性原理

          高速緩存技術(shù)依賴的設計原理就是程序局部性原理

          要真正理解虛擬內(nèi)存技術(shù)的思想,首先必須了解計算機中著名的局部性原理。著名的 Bill Joy (SUN公司CEO)說過:”在研究所的時候,我經(jīng)常開玩笑地說高速緩存是計算機科學中唯一重要的思想。事實上,髙速緩存技術(shù)確實極大地影響了計算機系統(tǒng)的設計。“快表、頁高速緩存以及虛擬內(nèi)存技術(shù)從廣義上講,都是屬于高速緩存技術(shù)。這個技術(shù)所依賴的原理就是局部性原理。局部性原理既適用于程序結(jié)構(gòu),也適用于數(shù)據(jù)結(jié)構(gòu)(更遠地講, 著名的關(guān)于“goto語句有害”的論文也是出于對程序局部性原理的深刻認識和理解)。

          局部性原理表現(xiàn)在以下兩個方面:

          ·時間局部性:如果程序中的某條指令一旦執(zhí)行,不久以后該指令可能再次執(zhí)行;如果某數(shù)據(jù)被訪問過,不久以后該數(shù)據(jù)可能再次被訪問。產(chǎn)生時間局部性的典型原因,是由于在程序中存在著大量的循環(huán)操作。

          ·空間局部性:一旦程序訪問了某個存儲單元,在不久之后,其附近的存儲單元也將被訪問,即程序在一段時間內(nèi)所訪問的地址,可能集中在一定的范圍之內(nèi),這是因為指令通常是順序存放、順序執(zhí)行的,數(shù)據(jù)也一般是以向量、數(shù)組、表等形式簇聚存儲的。

          時間局部性是通過將近來使用的指令和數(shù)據(jù)保存到高速緩存存儲器中,并使用高速緩存的層次結(jié)構(gòu)實現(xiàn)。空間局部性通常是使用較大的高速緩存,并將預取機制集成到高速緩存控制邏輯中實現(xiàn)。虛擬內(nèi)存技術(shù)實際上就是建立了 “內(nèi)存一外存”的兩級存儲器的結(jié)構(gòu),利用局部性原理實現(xiàn)髙速緩存。

          虛擬存儲器的定義和特征

          基于局部性原理,在程序裝入時,可以將程序的一部分裝入內(nèi)存,而將其余部分留在外存,就可以啟動程序執(zhí)行。在程序執(zhí)行過程中,當所訪問的信息不在內(nèi)存時,由操作系統(tǒng)將所需要的部分調(diào)入內(nèi)存,然后繼續(xù)執(zhí)行程序。

          另一方面,操作系統(tǒng)將內(nèi)存中暫時不使用的內(nèi)容換出到外存上,從而騰出空間存放將要調(diào)入內(nèi)存的信息。這樣,系統(tǒng)好像為用戶提供了一個比實際內(nèi)存大得多的存儲器,稱為虛擬存儲器。

          之所以將其稱為虛擬存儲器,是因為這種存儲器實際上并不存在,只是由于(對用戶完全透明),給用戶的感覺是好像存在一個比實際物理內(nèi)存大得多的存儲器。虛擬存儲器的大小由計算機的地址結(jié)構(gòu)決定,并非是內(nèi)存和外存的簡單相加。虛擬存儲器有以下三個主要特征:

          ·多次性,是指無需在作業(yè)運行時一次性地全部裝入內(nèi)存,而是允許被分成多次調(diào)入內(nèi)存運行。

          ·對換性,是指無需在作業(yè)運行時一直常駐內(nèi)存,而是允許在作業(yè)的運行過程中,進行換進和換出。

          ·虛擬性,是指從邏輯上擴充內(nèi)存的容量,使用戶所看到的內(nèi)存容量,遠大于實際的內(nèi)存容量。

          虛擬內(nèi)存技術(shù)的實現(xiàn)

          虛擬內(nèi)存中,允許將一個作業(yè)分多次調(diào)入內(nèi)存。釆用連續(xù)分配方式時,會使相當一部分內(nèi)存空間都處于暫時或“永久”的空閑狀態(tài),造成內(nèi)存資源的嚴重浪費,而且也無法從邏輯上擴大內(nèi)存容量。因此,虛擬內(nèi)存的實現(xiàn)需要建立在離散分配的內(nèi)存管理方式的基礎(chǔ)上。虛擬內(nèi)存的實現(xiàn)有以下三種方式:

          ·請求分頁存儲管理。 ·請求分段存儲管理。 ·請求段頁式存儲管理。

          不管哪種方式,都需要有一定的硬件支持。一般需要的支持有以下幾個方面:

          ·一定容量的內(nèi)存和外存。

          ·頁表機制(或段表機制),作為主要的數(shù)據(jù)結(jié)構(gòu)。

          存儲虛擬化的方法有哪些_存儲虛擬化原理_存儲虛擬化的作用

          ·中斷機構(gòu),當用戶程序要訪問的部分尚未調(diào)入內(nèi)存,則產(chǎn)生中斷。

          ·地址變換機構(gòu),邏輯地址到物理地址的變換。

          3.6 請求分頁管理方式實現(xiàn)虛擬內(nèi)存

          請求分頁系統(tǒng)建立在基本分頁系統(tǒng)基礎(chǔ)之上,為了支持虛擬存儲器功能而增加了請求調(diào)頁功能和頁面置換功能。請求分頁是目前最常用的一種實現(xiàn)虛擬存儲器的方法。

          在請求分頁系統(tǒng)中,只要求將當前需要的一部分頁面裝入內(nèi)存,便可以啟動作業(yè)運行。在作業(yè)執(zhí)行過程中,當所要訪問的頁面不在內(nèi)存時,再通過調(diào)頁功能將其調(diào)入,同時還可以通過置換功能將暫時不用的頁面換出到外存上,以便騰出內(nèi)存空間。

          為了實現(xiàn)請求分頁,系統(tǒng)必須提供一定的硬件支持。除了需要一定容量的內(nèi)存及外存的計算機系統(tǒng),還需要有頁表機制、缺頁中斷機構(gòu)和地址變換機構(gòu)。

          頁表機制

          請求分頁系統(tǒng)的頁表機制不同于基本分頁系統(tǒng),請求分頁系統(tǒng)在一個作業(yè)運行之前不要求全部一次性調(diào)入內(nèi)存,因此在作業(yè)的運行過程中,必然會出現(xiàn)要訪問的頁面不在內(nèi)存的情況,如何發(fā)現(xiàn)和處理這種情況是請求分頁系統(tǒng)必須解決的兩個基本問題。為此,在請求頁表項中增加了四個字段,如圖3-24所示。

          圖3-24請求分頁系統(tǒng)中的頁表項

          增加的四個字段說明如下:

          ·狀態(tài)位P:用于指示該頁是否已調(diào)入內(nèi)存,供程序訪問時參考。

          ·訪問字段A:用于記錄本頁在一段時間內(nèi)被訪問的次數(shù),或記錄本頁最近己有多長時間未被訪問,供置換算法換出頁面時參考。

          ·修改位M:標識該頁在調(diào)入內(nèi)存后是否被修改過。

          ·外存地址:用于指出該頁在外存上的地址,通常是物理塊號,供調(diào)入該頁時參考。

          缺頁中斷機構(gòu)

          在請求分頁系統(tǒng)中,每當所要訪問的頁面不在內(nèi)存時,便產(chǎn)生一個缺頁中斷,請求操作系統(tǒng)將所缺的頁調(diào)入內(nèi)存。此時應將缺頁的進程阻塞(調(diào)頁完成喚醒),如果內(nèi)存中有空閑塊,則分配一個塊,將要調(diào)入的頁裝入該塊,并修改頁表中相應頁表項,若此時內(nèi)存中沒有空閑塊,則要淘汰某頁(若被淘汰頁在內(nèi)存期間被修改過,則要將其寫回外存)。

          請求頁面的時候,若內(nèi)存中有空閑的塊未使用,則直接將調(diào)入的頁放入這個塊使用,并修改頁表中的頁表項;若內(nèi)存中沒有空閑塊,則要采取頁面置換算法淘汰一個頁面。

          缺頁中斷作為中斷同樣要經(jīng)歷,諸如保護CPU環(huán)境、分析中斷原因、轉(zhuǎn)入缺頁中斷處理程序、恢復CPU環(huán)境等幾個步驟。但與一般的中斷相比,它有以下兩個明顯的區(qū)別:

          ·在指令執(zhí)行期間產(chǎn)生和處理中斷信號,而非一條指令執(zhí)行完后,屬于內(nèi)部中斷。

          ·一條指令在執(zhí)行期間,可能產(chǎn)生多次缺頁中斷。

          地址變換機構(gòu)

          請求分頁系統(tǒng)中的地址變換機構(gòu),是在分頁系統(tǒng)地址變換機構(gòu)的基礎(chǔ)上,為實現(xiàn)虛擬內(nèi)存,又增加了某些功能而形成的。

          圖3-25請求分頁中的地址變換過程

          存儲虛擬化的作用_存儲虛擬化原理_存儲虛擬化的方法有哪些

          如圖3-25所示,在進行地址變換時,先檢索快表:

          ·若找到要訪問的頁,便修改頁表項中的訪問位(寫指令則還須重置修改位),然后利用頁表項中給出的物理塊號和頁內(nèi)地址形成物理地址。

          ·若未找到該頁的頁表項,應到內(nèi)存中去查找頁表,再對比頁表項中的狀態(tài)位P,看該頁是否已調(diào)入內(nèi)存,未調(diào)入則產(chǎn)生缺頁中斷,請求從外存把該頁調(diào)入內(nèi)存。

          3.8頁面分配策略:駐留集大小、調(diào)入頁面的時機以及從何處調(diào)入頁面

          駐留集大小

          存儲虛擬化的作用_存儲虛擬化的方法有哪些_存儲虛擬化原理

          對于分頁式的虛擬內(nèi)存,在準備執(zhí)行時,不需要也不可能把一個進程的所有頁都讀取到主存,因此,操作系統(tǒng)必須決定讀取多少頁。也就是說,給特定的進程分配多大的主存空間,這需要考慮以下幾點:

          1.分配給一個進程的存儲量越小,在任何時候駐留在主存中的進程數(shù)就越多,從而可以提高處理機的時間利用效率。

          2.如果一個進程在主存中的頁數(shù)過少,盡管有局部性原理,頁錯誤率仍然會相對較高。

          3. 如果頁數(shù)過多,由于局部性原理,給特定的進程分配更多的主存空間對該進程的錯誤率沒有明顯的影響。

          基于這些因素,現(xiàn)代操作系統(tǒng)通常釆用三種策略:

          1.固定分配局部置換。它為每個進程分配一定數(shù)目的物理塊,在整個運行期間都不改變。若進程在運行中發(fā)生缺頁,則只能從該進程在內(nèi)存中的頁面中選出一頁換出,然后再調(diào)入需要的頁面。實現(xiàn)這種策略難以確定為每個進程應分配的物理塊數(shù)目:太少會頻繁出現(xiàn)缺頁中斷,太多又會使CPU和其他資源利用率下降。

          2.可變分配全局置換。這是最易于實現(xiàn)的物理塊分配和置換策略,為系統(tǒng)中的每個進程分配一定數(shù)目的物理塊,操作系統(tǒng)自身也保持一個空閑物理塊隊列。當某進程發(fā)生缺頁時,系統(tǒng)從空閑物理塊隊列中取出一個物理塊分配給該進程,并將欲調(diào)入的頁裝入其中。

          3.可變分配局部置換。它為每個進程分配一定數(shù)目的物理塊,當某進程發(fā)生缺頁時,只允許從該進程在內(nèi)存的頁面中選出一頁換出,這樣就不會影響其他進程的運行。如果進程在運行中頻繁地缺頁,系統(tǒng)再為該進程分配若干物理塊,直至該進程缺頁率趨于適當程度; 反之,若進程在運行中缺頁率特別低,則可適當減少分配給該進程的物理塊。

          調(diào)入頁面的時機

          程序初始化啟動的時候,預調(diào)頁策略

          為確定系統(tǒng)將進程運行時所缺的頁面調(diào)入內(nèi)存的時機,可釆取以下兩種調(diào)頁策略:

          1.預調(diào)頁策略。根據(jù)局部性原理,一次調(diào)入若干個相鄰的頁可能會比一次調(diào)入一頁更高效。但如果調(diào)入的一批頁面中大多數(shù)都未被訪問,則又是低效的。所以就需要釆用以預測為基礎(chǔ)的預調(diào)頁策略,將預計在不久之后便會被訪問的頁面預先調(diào)入內(nèi)存。但目前預調(diào)頁的成功率僅約50%。故這種策略主要用于進程的首次調(diào)入時,由程序員指出應該先調(diào)入哪些頁。

          2.請求調(diào)頁策略。進程在運行中需要訪問的頁面不在內(nèi)存而提出請求,由系統(tǒng)將所需頁面調(diào)入內(nèi)存。由這種策略調(diào)入的頁一定會被訪問,且這種策略比較易于實現(xiàn),故在目前的虛擬存儲器中大多釆用此策略。它的缺點在于每次只調(diào)入一頁,調(diào)入調(diào)出頁面數(shù)多時會花費過多的I/O開銷。

          從何處調(diào)入頁面

          請求分頁系統(tǒng)中的外存分為兩部分:用于存放文件的文件區(qū)和用于存放對換頁面的對換區(qū)。對換區(qū)通常是釆用連續(xù)分配方式,而文件區(qū)釆用離散分配方式,故對換區(qū)的磁盤I/O速度比文件區(qū)的更快。這樣從何處調(diào)入頁面有三種情況:

          1.系統(tǒng)擁有足夠的對換區(qū)空間:可以全部從對換區(qū)調(diào)入所需頁面,以提髙調(diào)頁速度。為此,在進程運行前,需將與該進程有關(guān)的文件從文件區(qū)復制到對換區(qū)。

          2.系統(tǒng)缺少足夠的對換區(qū)空間:凡不會被修改的文件都直接從文件區(qū)調(diào)入;而當換出這些頁面時,由于它們未被修改而不必再將它們換出。但對于那些可能被修改的部分,在將它們換出時須調(diào)到對換區(qū),以后需要時再從對換區(qū)調(diào)入。

          3.UNIX方式:與進程有關(guān)的文件都放在文件區(qū),故未運行過的頁面,都應從文件區(qū)調(diào)入。曾經(jīng)運行過但又被換出的頁面,由于是被放在對換區(qū),因此下次調(diào)入時應從對換區(qū)調(diào)入。進程請求的共享頁面若被其他進程調(diào)入內(nèi)存,則無需再從對換區(qū)調(diào)入。

          3.9頁面抖動(顛簸)和工作集(駐留集)

          頁面抖動(顛簸)

          在頁面置換過程中的一種最糟糕的情形是,剛剛換出的頁面馬上又要換入主存,剛剛換入的頁面馬上就要換出主存,換句話說就是進程需要頻繁的進行缺頁中斷。這種頻繁的頁面調(diào)度行為稱為抖動,或顛簸。如果一個進程在換頁上用的時間多于執(zhí)行時間,那么這個進程就在顛簸。

          頻繁的發(fā)生缺頁中斷(抖動),其主要原因是某個進程頻繁訪問的頁面數(shù)目高于可用的物理頁幀數(shù)目。虛擬內(nèi)存技術(shù)可以在內(nèi)存中保留更多的進程以提髙系統(tǒng)效率。在穩(wěn)定狀態(tài),幾乎主存的所有空間都被進程塊占據(jù),處理機和操作系統(tǒng)可以直接訪問到盡可能多的進程。但如果管理不當,處理機的大部分時間都將用于交換塊,即請求調(diào)入頁面的操作,而不是執(zhí)行進程的指令,這就會大大降低系統(tǒng)效率。

          工作集(駐留集)

          工作集(或駐留集)是指在某段時間間隔內(nèi),進程要訪問的頁面集合。經(jīng)常被使用的頁面需要在工作集中,而長期不被使用的頁面要從工作集中被丟棄。為了防止系統(tǒng)出現(xiàn)抖動現(xiàn)象,需要選擇合適的工作集大小。

          工作集模型的原理是:讓操作系統(tǒng)跟蹤每個進程的工作集,并為進程分配大于其工作集的物理塊。如果還有空閑物理塊,則可以再調(diào)一個進程到內(nèi)存以增加多道程序數(shù)。如果所有工作集之和增加以至于超過了可用物理塊的總數(shù),那么操作系統(tǒng)會暫停一個進程,將其頁面調(diào)出并且將其物理塊分配給其他進程,防止出現(xiàn)抖動現(xiàn)象。

          正確選擇工作集的大小,對存儲器的利用率和系統(tǒng)吞吐量的提嵩,都將產(chǎn)生重要影響。

          3.10內(nèi)存管理知識點總結(jié)

          分頁管理方式和分段管理方式在很多地方相似,比如內(nèi)存中都是不連續(xù)的、都有地址變 換機構(gòu)來進行地址映射等。但兩者也存在著許多區(qū)別,表3-20列出了分頁管理方式和分段管理方式在各個方面的對比。

          表3-20 分頁管理方式和分段管理方式的比較

          存儲虛擬化原理_存儲虛擬化的方法有哪些_存儲虛擬化的作用

          設置Chrome默認搜索引擎

          設置Chrome默認搜索引擎

          打開Chrome選項,然后單擊管理搜索引擎。由于默認的搜索參數(shù)不能修改,只好新建一個。添加新的搜索引擎,名字和關(guān)鍵字隨意。名字是在網(wǎng)頁中選中內(nèi)容后單擊右鍵時顯示的,可以來點個性化。默認的Google搜索配置如下:

          {google:baseURL}search?{google:RLZ}{google:acceptedSuggestion}{google:originalQueryForSuggestion}sourceid=chrome&ie={inputEncoding}&q=%s
          

          引擎默認搜索設置在哪里_引擎搜索方式_怎么設置默認搜索引擎

          {google:baseURL}代表你所在的國家或地區(qū)是否有本地化的Google搜索,比如在中國,會自動跳轉(zhuǎn)到.hk。所以需要需將該字段修改為(注意{}要刪除)。由于默認配置無法修改,則新建一個Google搜索。

          修改后如下:

          http://www.google.com/search?{google:RLZ}{google:acceptedSuggestion}{google:originalQueryForSuggestion}sourceid=chrome&ie={inputEncoding}&q=%s
          

          引擎默認搜索設置在哪里_引擎搜索方式_怎么設置默認搜索引擎

          添加完成后,將鼠標移到新添加的Google搜索,單擊“設為默認值”即可。

          最后編輯于 :2017.12.05 02:49:43

          ?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者


          主站蜘蛛池模板: 亚洲日韩AV无码一区二区三区人| 制服美女视频一区| 一区二区三区免费看| 精品国产乱码一区二区三区| 亚洲熟妇av一区二区三区漫画| 国产精品无码一区二区在线观一 | 国产伦精品一区二区三区免.费 | 日本中文一区二区三区亚洲| 男人免费视频一区二区在线观看| 波多野结衣一区二区三区高清av| 精品久久久久久无码中文字幕一区 | 日韩a无吗一区二区三区| 国产精品无码亚洲一区二区三区 | 一区二区三区四区精品视频| 无码精品人妻一区二区三区免费看| 国产一区二区三区乱码| 亚洲视频一区二区在线观看| 欲色aV无码一区二区人妻 | 亚洲制服丝袜一区二区三区 | 日本中文一区二区三区亚洲| 久久精品无码一区二区app| 国产精品香蕉在线一区| 国产亚洲福利精品一区二区| 丰满人妻一区二区三区免费视频| 亚洲国产一区国产亚洲| 色综合一区二区三区| 精品一区二区三区免费毛片爱 | 无码av不卡一区二区三区| 人妻体体内射精一区二区 | 亚洲另类无码一区二区三区| 一区五十路在线中出| 亚洲一区二区三区在线观看精品中文| 精品不卡一区二区| 日本一区精品久久久久影院| 国产人妖在线观看一区二区| 亚洲香蕉久久一区二区| 性无码免费一区二区三区在线| 午夜性色一区二区三区不卡视频 | 91在线视频一区| 国产成人一区二区动漫精品| 亚洲一区二区三区播放在线|