日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

操作系统原理第九章:虚拟内存

發(fā)布時(shí)間:2025/6/17 windows 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统原理第九章:虚拟内存 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • 1 虛擬內(nèi)存的背景
    • 1.1 局部性原理
    • 1.2 虛擬內(nèi)存
  • 2 請(qǐng)求調(diào)頁(yè)
    • 2.1 頁(yè)面調(diào)入策略
  • 3 頁(yè)面置換
  • 4 頁(yè)面置換算法
    • 4.1 最佳算法(OPT, optimal)
    • 4.2 先進(jìn)先出置換算法(FIFO)
    • 4.3 最近最久未使用置換算法(LRU)
  • 5 幀(頁(yè))分配

1 虛擬內(nèi)存的背景

無(wú)論是分頁(yè)還是分段,程序運(yùn)行的基本要求就是必須全部放入內(nèi)存后方可運(yùn)行,如果進(jìn)程大于內(nèi)存的容量或者內(nèi)存中同時(shí)運(yùn)行多個(gè)進(jìn)程,那么進(jìn)程就無(wú)法執(zhí)行了,解決這個(gè)問題有兩種方法,即覆蓋和動(dòng)態(tài)加載,但是這兩種工作都是由程序員手動(dòng)來(lái)做而且實(shí)現(xiàn)很復(fù)雜。

上面的問題究其本質(zhì)就是內(nèi)存不夠用了,那么很容易想到的就是擴(kuò)充內(nèi)存,可以從物理上擴(kuò)充內(nèi)存容量,但是是受限的,如32位操作系統(tǒng)支持的內(nèi)存最大為4GB,64位操作系統(tǒng)支持的內(nèi)存最大為128GB,并且購(gòu)買內(nèi)存也較為昂貴。那么是否可以從邏輯上擴(kuò)充內(nèi)存容量呢?答案是可以的,本文內(nèi)容就是講解如何從邏輯上擴(kuò)充內(nèi)存。


常規(guī)的存儲(chǔ)方式具有如下特征:

  • 一次性:作業(yè)在運(yùn)行前需要一次性的全部裝入內(nèi)存;
  • 駐留性:作業(yè)裝入內(nèi)存后,便一直駐留在內(nèi)存中,直到作業(yè)結(jié)束。

正是由于一次性和駐留性,使得程序中暫時(shí)不用的數(shù)據(jù)占用了大量的內(nèi)存空間,從而需要運(yùn)行的作業(yè)無(wú)法裝入內(nèi)存。那么一次性和駐留性是必需的嗎?人們對(duì)程序做了很多的研究發(fā)現(xiàn)程序在執(zhí)行過程中其實(shí)不是要運(yùn)行所有部分:

  • 程序通常有處理異常錯(cuò)誤的代碼,很少執(zhí)行
  • 數(shù)組、鏈表和表通常分配了比實(shí)際需要更多的內(nèi)存
  • 程序的某些選項(xiàng)或特點(diǎn)可能很少使用
  • 即使需要完整的程序,也并不是同時(shí)需要所有的程序

通過上述四個(gè)特點(diǎn),我們可以發(fā)現(xiàn)程序運(yùn)行時(shí)往往只運(yùn)行了一部分,這個(gè)特點(diǎn)我們叫做局部性原理

1.1 局部性原理

局部性原理的定義是在一段時(shí)間內(nèi),程序的執(zhí)行僅局限于某個(gè)部分;相應(yīng)地,它所訪問的存儲(chǔ)空間也局限于某個(gè)區(qū)域內(nèi)。出現(xiàn)局部性原理有如下原因:

  • 程序在執(zhí)行時(shí),除了少部分的轉(zhuǎn)移和過程調(diào)用指令外,大多數(shù)仍是順序執(zhí)行的;
  • 子程序調(diào)用將會(huì)使程序的執(zhí)行由一部分內(nèi)存區(qū)域轉(zhuǎn)至另一部分區(qū)域,也就是說程序只是從一個(gè)局部跳躍到另一個(gè)局部而已;
  • 程序中存在許多循環(huán)結(jié)構(gòu),循環(huán)體中的指令被多次執(zhí)行;
  • 程序中還包括許多對(duì)數(shù)據(jù)結(jié)構(gòu)的處理,如對(duì)連續(xù)的存儲(chǔ)空間——數(shù)組的訪問,往往局限于很小的范圍內(nèi)。

因此我們說程序是具有局部性的,局部性主要體現(xiàn)在兩個(gè)方面:

  • 時(shí)間局部性: 如果程序中的某條指令一旦執(zhí)行,則不久的將來(lái)該指令可能再次被執(zhí)行;如果某個(gè)存儲(chǔ)單元被訪問,則不久以后該存儲(chǔ)單元可能再次被訪問;產(chǎn)生時(shí)間局限性的典型原因是在程序中存在著大量的循環(huán)操作;
  • 空間局部性: 一旦程序訪問了某個(gè)存儲(chǔ)單元,則在不久的將來(lái),其附近的存儲(chǔ)單元也最有可能被訪問。 即程序在一段時(shí)間內(nèi)所訪問的地址,可能集中在一定的范圍內(nèi),其典型原因是程序是順序執(zhí)行的。

1.2 虛擬內(nèi)存

虛擬內(nèi)存是一種允許進(jìn)程部分裝入內(nèi)存就可以執(zhí)行的技術(shù),它基于的原理就是局部性原理,因?yàn)槌绦蚓哂芯植啃?#xff0c;所以只需要把當(dāng)前需要執(zhí)行的程序內(nèi)容裝入內(nèi)存即可,這個(gè)時(shí)候用戶看到的邏輯地址空間就比物理地址空間大,要實(shí)現(xiàn)這個(gè)功能就必須允許頁(yè)面能夠被換入和換出。

如下圖,虛擬內(nèi)存virtual memory顯然是比實(shí)際內(nèi)存physical memory大的,只需要把當(dāng)前要執(zhí)行的部分裝入內(nèi)存即可;用memory map來(lái)映射當(dāng)前哪些部分是要裝入內(nèi)存的,類似頁(yè)表,當(dāng)運(yùn)行到某個(gè)位置的時(shí)候就可以查詢它在內(nèi)存還是在外存;當(dāng)要運(yùn)行新的程序時(shí)或當(dāng)前內(nèi)存不足時(shí)就要和外存進(jìn)行頁(yè)面的換入和換出:

虛擬內(nèi)存具有如下特征:

  • 離散性:在內(nèi)存分配時(shí)采用離散的分配方式,是虛擬存儲(chǔ)器的最基本的特征;
  • 多次性:一個(gè)作業(yè)被分成多次調(diào)入內(nèi)存運(yùn)行,即在作業(yè)運(yùn)行時(shí)沒有必要將其全部裝入,只須將當(dāng)前要運(yùn)行的那部分程序和數(shù)據(jù)裝入內(nèi)存即可。是虛擬存儲(chǔ)器最重要的特征;
  • 對(duì)換性:作業(yè)運(yùn)行過程中信息在內(nèi)存和外存的對(duì)換區(qū)之間換進(jìn)、換出;
  • 虛擬性:從邏輯上擴(kuò)充內(nèi)存容量,使用戶所看到的內(nèi)存容量遠(yuǎn)大于實(shí)際內(nèi)存容量。

2 請(qǐng)求調(diào)頁(yè)

實(shí)現(xiàn)虛擬存儲(chǔ)器要解決如下三個(gè)問題 :

  • 程序部分運(yùn)行可以嗎? 是可以的,依照程序局部性原理,取出要用的頁(yè),然后裝入內(nèi)存即可;
  • 發(fā)現(xiàn)程序不在內(nèi)存時(shí),如何將其裝入后繼續(xù)運(yùn)行? 用請(qǐng)求調(diào)頁(yè)技術(shù),當(dāng)發(fā)生缺頁(yè)時(shí),產(chǎn)生缺頁(yè)中斷,將外存上的頁(yè)調(diào)入內(nèi)存;
  • 內(nèi)存無(wú)空間時(shí)怎么辦? 用頁(yè)面置換,將部分頁(yè)面換出內(nèi)存。

2.1 頁(yè)面調(diào)入策略

為能使進(jìn)程運(yùn)行,事先需將一部分要執(zhí)行的程序和數(shù)據(jù)調(diào)入內(nèi)存,有兩種調(diào)頁(yè)的策略:

  • 預(yù)調(diào)頁(yè)策略:主動(dòng)的頁(yè)面調(diào)入策略,即把那些預(yù)計(jì)很快會(huì)被訪問的程序或數(shù)據(jù)所在的頁(yè)面,預(yù)先調(diào)入內(nèi)存;這個(gè)策略的性能取決于預(yù)測(cè)的準(zhǔn)確率,預(yù)測(cè)的準(zhǔn)確率不高(50%),主要用于進(jìn)程的首次調(diào)入。也有的系統(tǒng)將預(yù)調(diào)頁(yè)策略用于請(qǐng)求調(diào)頁(yè)。
  • 請(qǐng)求調(diào)頁(yè)策略:當(dāng)進(jìn)程在運(yùn)行中發(fā)生缺頁(yè)時(shí),由系統(tǒng)將缺頁(yè)調(diào)入內(nèi)存;目前虛擬存儲(chǔ)器系統(tǒng)大多采用此策略;但在調(diào)頁(yè)時(shí)須花費(fèi)較大的系統(tǒng)開銷,如需頻繁啟動(dòng)磁盤I/O。

請(qǐng)求調(diào)頁(yè)只有在一個(gè)頁(yè)需要的時(shí)候才把它換入內(nèi)存,這是請(qǐng)求調(diào)頁(yè)的好處,或者說是虛擬內(nèi)存的好處。它需要需要很少的I/O,需要很少的內(nèi)存,能夠快速響應(yīng),并且可以支持多用戶。當(dāng)需要某個(gè)頁(yè)的時(shí)候判斷它是否在內(nèi)存中是需要進(jìn)行查閱的,通常存在一個(gè)bit位表示它是不是在內(nèi)存,若不在內(nèi)存中就要調(diào)入內(nèi)存。


在具體實(shí)現(xiàn)的時(shí)候需要對(duì)進(jìn)程頁(yè)表的修改,也需要缺頁(yè)中斷的支持。請(qǐng)求分頁(yè)的頁(yè)表機(jī)制是在純分頁(yè)的頁(yè)表機(jī)制上形成的,由于只將應(yīng)用程序的一部分調(diào)入內(nèi)存,還有一部分仍在磁盤上,故需在頁(yè)表中再增加若干項(xiàng),供程序(數(shù)據(jù))在換進(jìn)、換出時(shí)參考。在請(qǐng)求分頁(yè)系統(tǒng)中的每個(gè)頁(yè)表項(xiàng)如下圖所示:

其中增加的各字段說明如下:

  • 狀態(tài)位(存在位P) :用于指示該頁(yè)是否已調(diào)入內(nèi)存,供程序訪問時(shí)參考;
  • 訪問字段A:用于記錄本頁(yè)在一段時(shí)間內(nèi)被訪問的次數(shù),或最近已有多長(zhǎng)時(shí)間未被訪問,提供給置換算法選擇換出頁(yè)面時(shí)參考;
  • 修改位M:表示該頁(yè)在調(diào)入內(nèi)存后是否被修改過。由于內(nèi)存中的每一頁(yè)都在外存上保留一份副本,因此,若未被修改,在置換該頁(yè)時(shí)就不需將該頁(yè)寫回到外存上,以減少系統(tǒng)的開銷和啟動(dòng)磁盤的次數(shù);若已被修改,則必須將該頁(yè)重寫到外存上,以保證外存中所保留的始終是最新副本;
  • 外存地址:用于指出該頁(yè)在外存上的地址,通常是物理塊號(hào),供調(diào)入該頁(yè)時(shí)使用。

完成頁(yè)面調(diào)頁(yè)還需要缺頁(yè)中斷機(jī)構(gòu)的支持,在請(qǐng)求分頁(yè)系統(tǒng)中,每當(dāng)所要訪問的頁(yè)面不在內(nèi)存時(shí),便要產(chǎn)生一缺頁(yè)中斷,請(qǐng)求操作系統(tǒng)將所缺頁(yè)調(diào)入內(nèi)存。與一般中斷的主要區(qū)別在于:

  • 缺頁(yè)中斷在指令執(zhí)行期間產(chǎn)生和處理中斷信號(hào),而一般中斷在一條指令執(zhí)行完后檢查和處理中斷信號(hào);
  • 缺頁(yè)中斷返回到該指令的開始重新執(zhí)行該指令,而一般中斷返回到該指令的下一條指令執(zhí)行;
  • 一條指令在執(zhí)行期間,可能產(chǎn)生多次缺頁(yè)中斷;

下圖是缺頁(yè)中斷的處理過程,現(xiàn)在要加載一個(gè)程序 M,?首先要查詢頁(yè)表,發(fā)現(xiàn)該頁(yè)在頁(yè)表中是 i (invalid),表示不在內(nèi)存,?這個(gè)時(shí)候就產(chǎn)生一個(gè)缺頁(yè)中斷,?操作系統(tǒng)就會(huì)根據(jù)在頁(yè)表中指向的外存的地址找到它,?隨后從外存放入內(nèi)存,放入的時(shí)候要找一個(gè)空閑頁(yè),一旦放進(jìn)去了以后,?頁(yè)表就要更新,此時(shí)中斷就結(jié)束了,?接著就要返回到這個(gè)程序重新執(zhí)行:

上面整個(gè)過程主要是執(zhí)行以下三個(gè)操作:

  • 處理缺頁(yè)中斷;
  • 從磁盤讀入所需的頁(yè);
  • 重新開始被中斷的進(jìn)程。

其中最大的一部分時(shí)間開銷為第二步,即從磁盤讀入所需的頁(yè),因此我們希望減少讀入的次數(shù),也就是降低缺頁(yè)率

缺頁(yè)率 = 訪問內(nèi)存次數(shù) / 不成功訪問次數(shù)

3 頁(yè)面置換

隨著裝入內(nèi)存的程序越來(lái)越多,內(nèi)存可能會(huì)有裝滿的情況下,這個(gè)時(shí)候如果來(lái)了新的程序想要進(jìn)入內(nèi)存,就必須執(zhí)行頁(yè)面置換,將內(nèi)存中暫不使用的程序先從內(nèi)存調(diào)出到外存。

如下圖的兩個(gè)用戶程序,其中用戶程序1需要載入程序M,用戶程序2需要載入程序B,而此時(shí)M載入到內(nèi)存后,內(nèi)存已經(jīng)滿了,程序B再要裝入內(nèi)存已經(jīng)沒有位置了,所以此時(shí)要將現(xiàn)在內(nèi)存中的某個(gè)程序置換出去。

現(xiàn)在置換有如下幾種方法:

  • 終止用戶進(jìn)程:一旦終止用戶進(jìn)程,進(jìn)程就會(huì)釋放內(nèi)存空間,那么內(nèi)存就騰出位置來(lái)了,這種方法的代價(jià)是比較大的;
  • 交換進(jìn)程:中級(jí)調(diào)度,釋放其所有幀,降低多道程序的度,這種方法的代價(jià)也是比較大的,因?yàn)槭且哉麄€(gè)進(jìn)程為單位,進(jìn)行的 I/O 操作開銷較大;
  • 頁(yè)面置換:以頁(yè)為單位做交換,這種方法的開銷相比是最小的。

頁(yè)面置換的執(zhí)行步驟如下:

  • 找到頁(yè)面在磁盤中的位置,找到之后便要把它讀入內(nèi)存,就要找到一個(gè)空閑的幀;
  • 若有空閑的幀遍可以直接裝入,若沒有空閑的幀就要選擇一個(gè)頁(yè)調(diào)換出去,同時(shí)修改頁(yè)表,再把頁(yè)面裝入內(nèi)存;

頁(yè)面置換過程如下圖所示,?犧牲當(dāng)前內(nèi)存中的某個(gè)頁(yè), 置換到外存上,?修改頁(yè)表標(biāo)志位,?將頁(yè)面置換進(jìn)內(nèi)存中,?更新頁(yè)表:

可以發(fā)現(xiàn)在頁(yè)面置換過程中,需要兩個(gè)頁(yè)面?zhèn)鬏?#xff0c;一個(gè)換出,一個(gè)換入。但是有時(shí)候只需要一次置換就可以,因?yàn)橛行┏绦蛟趦?nèi)存中并沒有被修改過,所以它不需要換到外存去更新數(shù)據(jù),只用犧牲它,將新調(diào)入的程序覆蓋它即可,這里用到的方法就是前面提到的修改位

頁(yè)面置換的總的流程圖如下圖所示,圖中的快表指的是聯(lián)想寄存器:

4 頁(yè)面置換算法

在進(jìn)程運(yùn)行過程中,如果發(fā)生缺頁(yè), , 而內(nèi)存中又無(wú)空閑塊時(shí)可以將內(nèi)存中的某一頁(yè)換到磁盤的對(duì)換區(qū)。那么到底選擇調(diào)出哪一個(gè)頁(yè),可以根據(jù)頁(yè)面置換算法來(lái)確定,置換算法的好壞將直接影響系統(tǒng)的性能,不適當(dāng)?shù)乃惴赡軙?huì)導(dǎo)致進(jìn)程發(fā)生 “抖動(dòng)” (Thrashing)

抖動(dòng) (Thrashing):如果進(jìn)程分配到的幀數(shù)量小于計(jì)算機(jī)體系結(jié)構(gòu)所要求的最小數(shù)量,那么必須暫停進(jìn)行執(zhí)行。并將其置換出去,使其所有分配幀空閑。這么做的原因就是如果進(jìn)程沒有這些必需的幀,那么很快會(huì)出現(xiàn)缺頁(yè),此時(shí)需置換某個(gè)頁(yè),然而,其所有頁(yè)都在使用,置換出去的頁(yè)立刻又需要置換進(jìn)來(lái),因此,會(huì)不斷的產(chǎn)生缺頁(yè)。這種頻繁的調(diào)頁(yè)行為稱作抖動(dòng) (Thrashing),也叫顛簸。

頁(yè)面置換最大的問題就是到底換哪一個(gè)頁(yè),若換出的某個(gè)頁(yè)很快就又要用到又要換進(jìn)來(lái),這樣的效率是很低的,所以我們希望我們換出的頁(yè)是今后很長(zhǎng)一段時(shí)間內(nèi)不再用到的頁(yè),這樣就能降低系統(tǒng)的缺頁(yè)率,我們來(lái)衡量一個(gè)頁(yè)面置換算法的好壞主要是通過缺頁(yè)率的大小,從理論上講 , 應(yīng)將那些以后不再被訪問的頁(yè)面換出,或把那些在較長(zhǎng)時(shí)間內(nèi)不會(huì)再被訪問的頁(yè)面換出,在實(shí)際的過程中有很多的置換算法能夠接近理論目標(biāo),為什么說是理論上的,因?yàn)槲覀內(nèi)耸遣恢滥男╉?yè)面是要換的。

我們通過運(yùn)行一個(gè)內(nèi)存訪問的特殊序列(訪問序列),計(jì)算這個(gè)序列的缺頁(yè)次數(shù)來(lái)評(píng)估算法。這個(gè)序列我們假定為 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1,后面討論算法時(shí)都會(huì)用到這個(gè)序列。

4.1 最佳算法(OPT, optimal)

最佳算法中被置換的頁(yè)將是之后最長(zhǎng)時(shí)間不被使用的頁(yè),其置換過程如下:

上述過程的缺頁(yè)次數(shù)是 999,置換次數(shù)是 666。這個(gè)算法的缺點(diǎn)就是在實(shí)際過程中,我們并不知道這個(gè)內(nèi)存訪問序列,尤其是在多道批處理系統(tǒng)中,更是無(wú)法預(yù)測(cè),所以最佳算法只是理論上最優(yōu)的算法,現(xiàn)實(shí)中是無(wú)法實(shí)現(xiàn)的,我們通常用它來(lái)衡量其他算法的性能。

4.2 先進(jìn)先出置換算法(FIFO)

先進(jìn)先出置換算法中是按照內(nèi)存先來(lái)先得,先進(jìn)來(lái)的先出去這種方式來(lái)選擇置換的頁(yè),其置換過程如下:

上述過程的缺頁(yè)次數(shù)是 151515,置換次數(shù)是 121212。這個(gè)算法的性能幾乎是比最佳算法差了一倍了,導(dǎo)致性能不好的原因是剛剛換出去的頁(yè),很可能又要被換進(jìn)來(lái),于是增加了缺頁(yè)率,因此有了下面第三種置換算法。

4.3 最近最久未使用置換算法(LRU)

雖然并不知道頁(yè)面未來(lái)的使用情況,但是可以使用離過去最近的情況作為不遠(yuǎn)將來(lái)的近似,可以選擇最近最少使用的頁(yè)進(jìn)行置換,其置換過程如下:

上述過程的缺頁(yè)次數(shù)是 121212,置換次數(shù)是 999。這個(gè)算法的性能顯然比先進(jìn)先出置換算法要好,但是實(shí)現(xiàn)LRU算法需要硬件支持,記錄物理頁(yè)的使用情況。

但是實(shí)際上可能沒有足夠的硬件支持,所以就有了LRU的近似算法,如基于訪問位的算法,二次機(jī)會(huì)算法。

  • 訪問位算法:每個(gè)頁(yè)都與一個(gè)位相關(guān)聯(lián),初始值為0,每當(dāng)這個(gè)頁(yè)被訪問的時(shí)候就把這個(gè)頁(yè)置位1,所以在選擇置換的頁(yè)時(shí)就可以看這個(gè)訪問位,看誰(shuí)是未被訪問過的。但是這個(gè)算法有不足的地方就在于我們并不知道這個(gè)置換順序,因?yàn)橛锌赡苡械捻?yè)時(shí)很久都沒有使用過的,有的頁(yè)只是最近未被使用過的,理論上來(lái)說很久未被使用的頁(yè)大概率以后不會(huì)再使用了,而最近未使用的頁(yè)很可能再被使用歐冠。
  • 二次機(jī)會(huì)算法 (clock算法):同樣它也需要訪問位的支持,它會(huì)把所有的頁(yè)組成一個(gè)環(huán),同樣未被訪問時(shí),訪問位置0,訪問位就置1,在要置換時(shí),我們以順時(shí)針的方向遍歷這個(gè)環(huán)來(lái)尋找訪問位為0的頁(yè)換出去,若找到訪問位為1的頁(yè),就把它置位0,代表著給它一次機(jī)會(huì),這也是二次機(jī)會(huì)算法名字的由來(lái)。如果所有頁(yè)的訪問位都為1,則此算法退化為FIFO算法。二次機(jī)會(huì)算法執(zhí)行過程如下圖所示:

5 幀(頁(yè))分配

前面提到每個(gè)進(jìn)程要運(yùn)行則必須給它分配一定的內(nèi)存空間,它才能把需要的內(nèi)容放到內(nèi)存去執(zhí)行,那么如何給進(jìn)程分配內(nèi)存空間呢?首先我們要保證給它分配的空間是能夠讓它正常的運(yùn)行的,即保證進(jìn)程正常運(yùn)行所需的最小物理塊數(shù),若系統(tǒng)為某進(jìn)程所分配的物理塊數(shù)少于此值時(shí),進(jìn)程將無(wú)法正常運(yùn)行(頻繁發(fā)生缺頁(yè)),這個(gè)數(shù)目取決于指令的格式、功能和尋址方式。

具體分配多個(gè)頁(yè),有如下的分配方式:

  • 平均分配:比如有100個(gè)頁(yè),和5個(gè)進(jìn)程,則每個(gè)進(jìn)程分給20個(gè)頁(yè);
  • 按比例分配:根據(jù)每個(gè)進(jìn)程的大小比例來(lái)分配;
  • 優(yōu)先分配:根據(jù)優(yōu)先級(jí)而不是大小來(lái)使用比率分配策略。

如果進(jìn)程 PiP_iPi? 產(chǎn)生了一個(gè)缺頁(yè),我們知道這個(gè)時(shí)候需要使用頁(yè)面替換算法來(lái)替換一個(gè)頁(yè)面,所替換頁(yè)面的位置分為如下兩種:

  • 全局替換:進(jìn)程在所有的頁(yè)中選擇一個(gè)替換頁(yè)面;一個(gè)進(jìn)程可以從另一個(gè)進(jìn)程中獲得頁(yè)面;
  • 局部替換:每個(gè)進(jìn)程只從屬于它自己的頁(yè)中選擇。

所以當(dāng)進(jìn)行全局置換的時(shí)候,進(jìn)程所分配的頁(yè)數(shù)是可以變化的,因?yàn)樗加昧似渌M(jìn)程的頁(yè),因此使用全局置換可能造成其他進(jìn)程的運(yùn)行錯(cuò)誤;當(dāng)進(jìn)行局部置換的時(shí)候,進(jìn)程所分配的頁(yè)數(shù)是固定不變的,因?yàn)樗辉谧约核鶎俚姆秶鷥?nèi)置換。

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的操作系统原理第九章:虚拟内存的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久久免费在线观看 | 日本天堂影院 | 国产女人爽到高潮a毛片 | av在线免 | 国产男女猛烈无遮挡免费视频 | 日本国产精品 | 欧美一级少妇 | www免费网站在线观看 | 性欧美精品| 黄瓜污视频 | 久99| 中文字幕日韩欧美一区二区三区 | 日韩中文字幕亚洲 | 国产精品视频第一页 | 久久久亚洲 | 舌奴调教日记 | 欧美福利视频在线观看 | 麻豆精品一区二区三区 | 久久五月天av | 国产色吧| 天堂999| 性网爆门事件集合av | 精品一区二区三区在线播放 | 国产精品乱码久久久久 | 国产在线观看免费网站 | 国产伦精品一区二区三区四区视频 | 韩国av免费观看 | 又黄又骚又爽 | 黑人一级黄色片 | 国产亚洲精品久久久久久久久动漫 | 亚洲精品网站在线观看 | 成人手机在线视频 | 一级黄色片国产 | 国产精品色婷婷99久久精品 | 亚洲成年人在线 | 日本三级日本三级日本三级极 | 日韩一区二区三区三四区视频在线观看 | 高h视频在线免费观看 | 久久综合伊人 | 日韩视频免费看 | xxxx18日本| 久久精品香蕉 | 爱涩av| 国产欧美日韩在线视频 | av怡红院 | 天天干天天谢 | 日韩黄色av网站 | 爱爱精品视频 | 欧美影院一区二区三区 | 在线观看成人一区 | 91精品国产亚洲 | 在线免费观看黄色片 | 人成在线视频 | 伊人www| 欧美一级免费视频 | 人与拘一级a毛片 | 久久久久久久久久久久久女过产乱 | 亚洲成人av免费在线观看 | 免费在线看黄网址 | 欧美乱日 | 一区二区三区在线免费播放 | 久久亚洲一区二区 | 天堂网一区二区三区 | 黄色a级在线观看 | 日韩高清不卡在线 | 小柔好湿好紧太爽了国产网址 | 给我免费观看片在线电影的 | 麻豆精品久久久久久久99蜜桃 | wwwxxx欧美 | 日韩视频免费 | 亚洲第三区 | 亚洲福利电影网 | 亚洲精品一区 | 日本视频免费在线播放 | 国产女18毛片多18精品 | 美女又黄又免费的视频 | 亚洲欧美精品午睡沙发 | 91天堂在线观看 | 久久成人国产 | 亚洲国产欧美在线 | 一区在线不卡 | 日本精品一区二区三区在线观看 | 久久国产精品影院 | 无码人妻一区二区三区精品视频 | 国产色 | 大色av| 日韩一级影视 | 精品中文视频 | 一级黄色大片免费 | 久久aaa | 亚洲图片在线视频 | 三级黄视频| 蜜臀视频在线播放 | 日韩在线免费 | 国产日韩精品suv | 欧美乱轮 | 九一亚洲精品 | 亚洲精品一卡 | 亚洲伦理在线 |