操作系統(tǒng)學(xué)習(xí)記錄3-內(nèi)存管理

內(nèi)存管理功能
內(nèi)存的作用是緩和CPU和硬盤之間的速度矛盾
內(nèi)存地址從0開始,每一個(gè)地址對(duì)應(yīng)一個(gè)存儲(chǔ)單元
計(jì)算機(jī)按字節(jié)編址,每個(gè)存儲(chǔ)單元大小為一字節(jié),8bit
計(jì)算機(jī)按字編址,每個(gè)存儲(chǔ)大小為一個(gè)字,16bit
?
程序運(yùn)行的順序:編譯源代碼文件-編譯-鏈接-裝入
編譯:由源代碼文件生成目標(biāo)模塊(高級(jí)語言-》機(jī)器語言)
鏈接:將目標(biāo)模塊生成裝入模塊,鏈接后形成完整的邏輯地址
裝入:將裝入模塊裝入內(nèi)存,裝入后形成物理地址
?
三種鏈接方式:
靜態(tài)鏈接:裝入前鏈接成一個(gè)完整的輸入模塊
裝入時(shí)動(dòng)態(tài)鏈接:運(yùn)行時(shí)邊裝入邊鏈接
運(yùn)行時(shí)動(dòng)態(tài)鏈接:運(yùn)行時(shí)需要目標(biāo)模塊才裝入并鏈接
三種裝入方式:
絕對(duì)裝入:編譯時(shí)產(chǎn)生絕對(duì)地址(物理地址)
可重定位裝入:裝入時(shí)將邏輯地址轉(zhuǎn)換為物理地址
動(dòng)態(tài)運(yùn)行時(shí)裝入:運(yùn)行時(shí)將邏輯地址轉(zhuǎn)換為物理地址,需設(shè)置重定位寄存器
?
內(nèi)存分配與回收:提高效率
地址映射:邏輯地址與物理地址的轉(zhuǎn)換
采用三種裝入方式
內(nèi)存擴(kuò)充:虛擬存儲(chǔ)技術(shù)
內(nèi)存保護(hù):內(nèi)存中的進(jìn)程互不干擾
方法一:設(shè)置一對(duì)上下限寄存器,存放進(jìn)程的上下限地址,進(jìn)程的指令要訪問某個(gè)地址時(shí),CPU檢查是否越界。
方法二:采用重定位寄存器(基址寄存器),界地址寄存器(限長(zhǎng)寄存器)進(jìn)行越界檢查。重定位寄存器中存放的是進(jìn)程的起始物理地址。界地址寄存器中存放的是進(jìn)程的最大邏輯地址。
內(nèi)存共享:允許多個(gè)進(jìn)程共享內(nèi)存區(qū)
覆蓋與交換
覆蓋是設(shè)置一個(gè)固定區(qū)和若干覆蓋區(qū)。固定區(qū)中的程序段在運(yùn)行過程中不會(huì)調(diào)入調(diào)出。覆蓋區(qū)中的程序段在運(yùn)行過程中會(huì)根據(jù)需要調(diào)入調(diào)出。必須要由程序員聲明覆蓋結(jié)構(gòu),對(duì)用戶不透明。
交換是指內(nèi)存緊張時(shí),換出某些進(jìn)程以騰出內(nèi)存空間,再換入某些進(jìn)程。磁盤分為文件區(qū)和對(duì)換區(qū),換出的進(jìn)程再對(duì)換區(qū)。
覆蓋與交換的區(qū)別:覆蓋是在同一個(gè)程序或進(jìn)程中的,交換是在不同進(jìn)程或者作業(yè)中的。
?
內(nèi)存分配
連續(xù)分配(單一連續(xù)分配、固定分區(qū)分配、動(dòng)態(tài)分區(qū)分配)
單一連續(xù)分配:
單一連續(xù)分配只支持單道程序,將內(nèi)存劃分為系統(tǒng)區(qū)和用戶區(qū),用戶程序放在用戶區(qū)。無外部碎片,有內(nèi)部碎片。
固定分區(qū)分配:
支持多道程序,內(nèi)存用戶空間分為若干固定大小的分區(qū),每個(gè)分區(qū)只能裝一道程序。無外部碎片,有內(nèi)部碎片
動(dòng)態(tài)分區(qū)分配:
支持多道程序,進(jìn)程裝入內(nèi)存時(shí),根據(jù)進(jìn)程的大小動(dòng)態(tài)地建立分區(qū)。有外部碎片,無內(nèi)部碎片??梢允褂镁o湊的技術(shù)解決外部碎片。
回收內(nèi)存分區(qū)時(shí),可能遇到四種情況:回收區(qū)之后有相鄰的空閑分區(qū)、回收區(qū)之前有相鄰的空閑分區(qū)、回收前后都有相鄰的空閑分區(qū),回收區(qū)前后都沒有相鄰的空閑分區(qū)。(相鄰的空閑分區(qū)要合并)
內(nèi)部碎片,分配給某進(jìn)程的內(nèi)存區(qū)域中,有些部分沒有用上
外部碎片,內(nèi)存中的某些空閑分區(qū)因?yàn)樘《鵁o法利用
?
動(dòng)態(tài)分區(qū)分配算法:
首次適應(yīng)算法:每次從低地址開始查找,找到第一個(gè)能滿足大小的空閑分區(qū)??臻e分區(qū)按地址遞增的次序排列
最佳適應(yīng)算法:盡可能留下大片的空閑區(qū),優(yōu)先使用更小的空閑區(qū)。按容量遞增次序鏈接,會(huì)產(chǎn)生大量外部碎片
最壞適應(yīng)算法:最大適應(yīng)算法,每次分配優(yōu)先使用最大的空閑區(qū)。按容量遞減次序鏈接。但不利于大進(jìn)程,開銷大。
鄰近適應(yīng)算法:空閑分區(qū)按地址遞增次序排列,每次分配內(nèi)存從上次查找結(jié)束的位置開始查找空閑分區(qū)鏈。開銷小,但是高地址的大分區(qū)也被用完。
四種算法中,首次適應(yīng)算法的效果更好。
單一連續(xù)分配
非連續(xù)分配(分頁管理、分段管理、段頁式管理)
分頁管理
概念:頁框、頁幀、內(nèi)存塊、物理塊、物理頁、頁、頁面
頁表記錄了頁面和實(shí)際存放的內(nèi)存塊之間的映射關(guān)系。
一個(gè)進(jìn)程對(duì)應(yīng)一張頁表,進(jìn)程的每一頁對(duì)應(yīng)一個(gè)頁表項(xiàng),每個(gè)頁表項(xiàng)由頁號(hào)和塊號(hào)構(gòu)成。
每個(gè)頁表項(xiàng)的大小相同,頁號(hào)是隱含的。
i號(hào)頁表項(xiàng)存放地址 = 頁表初始地址 + i*頁表項(xiàng)大小
頁號(hào)=邏輯地址/頁面大小
頁面偏移量 = 邏輯地址%頁面大小
?
快表(TLB)也叫聯(lián)想寄存器,是訪問速度比內(nèi)存快很多的高速緩存(不是內(nèi)存),用來存放最近訪問的頁表項(xiàng)的副本,內(nèi)存中的頁表也叫慢表
頁表和普通cache的區(qū)別,TLB中只有頁表項(xiàng)的副本,普通cache可能會(huì)有其他各種數(shù)據(jù)的樣本。
查詢內(nèi)存中的頁表時(shí),由于局部性原理,可能連續(xù)多次都是查到同一個(gè)頁表項(xiàng)。
基本地址變換需要訪存2次,具有快表的地址變換機(jī)構(gòu)中,快表命中只需要訪問一次內(nèi)存,未命中則需要訪問2次內(nèi)存
?
分段管理
進(jìn)程的地址空間按照自身的邏輯劃分為若干個(gè)段,每個(gè)段從0開始編址。內(nèi)存以段為單位進(jìn)行分配,每個(gè)段在內(nèi)存中占據(jù)連續(xù)的空間,各段之間可以不相鄰。用戶編程更方便,程序的可讀性更高。
邏輯地址結(jié)構(gòu)由段號(hào)(段名)和段內(nèi)地址(段內(nèi)偏移量)組成。
段號(hào)的位數(shù)決定了每個(gè)進(jìn)程可以分為多少個(gè)段
段內(nèi)地址位數(shù)決定了每個(gè)段的最大長(zhǎng)度是多少。
為了從物理內(nèi)存中找到各個(gè)邏輯段的存放位置,需要為每一個(gè)進(jìn)程建立一張段映射表,簡(jiǎn)稱段表。
每個(gè)段表項(xiàng)記錄了該段在內(nèi)存中的起始地址(基址)和段的長(zhǎng)度。
各個(gè)段表項(xiàng)的長(zhǎng)度是相同的,段號(hào)是隱含的,不占用空間。
?
頁是信息的物理單位,對(duì)用戶不可見
段是信息的邏輯單位,分段對(duì)用戶可見
分頁的用戶進(jìn)程地址空間是一維的,一個(gè)記憶符就是一個(gè)地址。
分段的用戶進(jìn)程地址空間是二維的,一個(gè)地址標(biāo)記時(shí)既要給出段名,又要給出段內(nèi)地址。
分段比分頁更容易實(shí)現(xiàn)信息的共享與保護(hù)。
不能被修改的代碼被稱為純代碼或可重入代碼(不是臨界資源),不能共享。
訪問一次邏輯地址時(shí)
分頁(單級(jí)頁表):第一次訪存:查內(nèi)存中的頁表,第二次訪存:訪問目標(biāo)內(nèi)存單元。一共2次訪存。
分段:第一次訪存:查內(nèi)存中的段表,第二次訪存:訪問目標(biāo)內(nèi)存單元。一共2次訪存。
也可以引入快表機(jī)制,可以減少一次訪存。
根據(jù)段表記錄的段長(zhǎng),檢查段內(nèi)地址是否越界。
段頁式管理
分頁管理與分段管理的優(yōu)缺點(diǎn)
分頁管理
優(yōu)點(diǎn):空間利用率高,不會(huì)產(chǎn)生外部碎片,只有少量的頁內(nèi)碎片。
缺點(diǎn):不方便按照邏輯模塊實(shí)現(xiàn)信息共享與保護(hù)
分段管理
優(yōu)點(diǎn):方便按照邏輯模塊實(shí)現(xiàn)信息共享與保護(hù)
缺點(diǎn):段長(zhǎng)過大,分配很大的連續(xù)空間會(huì)很不方便,會(huì)產(chǎn)生外部碎片(可以使用緊湊技術(shù),但會(huì)消耗大量時(shí)間)
?
段頁式系統(tǒng)的邏輯結(jié)構(gòu)地址由段號(hào)、頁號(hào)、頁內(nèi)地址(頁內(nèi)偏移量)組成。
段號(hào)的位數(shù)決定了每個(gè)進(jìn)程最多分為幾個(gè)段
頁號(hào)位數(shù)決定了每個(gè)段最大有多少頁
頁內(nèi)偏移量決定了頁面大小,內(nèi)存塊大小是多少
段頁式管理的地址結(jié)構(gòu)是二維的
?
每個(gè)段對(duì)應(yīng)一個(gè)段表項(xiàng)。每個(gè)段表項(xiàng)由段號(hào)(隱含)、頁表長(zhǎng)度、頁表存放塊號(hào)(頁表起始地址)組成,每個(gè)段表現(xiàn)長(zhǎng)度相等。
每個(gè)頁面對(duì)應(yīng)一個(gè)頁表項(xiàng),每個(gè)頁表項(xiàng)由頁號(hào)、頁面存放的內(nèi)存塊號(hào)組成。每個(gè)頁表項(xiàng)長(zhǎng)度相等,頁號(hào)是隱含的。
訪問一個(gè)邏輯地址需要訪存三次
第一次:查段表。第二次:查頁表。第三次:訪問目標(biāo)單元
引入快表機(jī)制后。以段號(hào)和頁號(hào)作為關(guān)鍵字查快表,只需一次訪存。
?
虛擬內(nèi)存管理
傳統(tǒng)存儲(chǔ)管理方式的特征和缺點(diǎn):
一次性:作業(yè)必須全部裝入內(nèi)存才能運(yùn)行。導(dǎo)致大作業(yè)無法運(yùn)行,多道程序并發(fā)度下降。
駐留性:作業(yè)被裝入內(nèi)存中,就會(huì)一直駐留在內(nèi)存中,直到作業(yè)結(jié)束。
?
局部性原理:時(shí)間局部性、空間局部性
時(shí)間局部性:如果執(zhí)行了程序中的某條指令,那么不久后這條指令有可能再次執(zhí)行。如果某個(gè)數(shù)據(jù)被訪問過,那么不久之后該數(shù)據(jù)可能被再次訪問。
空間局部性:一旦程序訪問了某個(gè)存儲(chǔ)單元,不久之后,其附近的存儲(chǔ)單元很有可能再次被訪問(因?yàn)楹芏鄶?shù)據(jù)是連續(xù)存放的)
?
根據(jù)局部性原理,很快會(huì)用到的部分裝入內(nèi)存,暫時(shí)用不到的部分留在外存。信息不在內(nèi)存時(shí),操作系統(tǒng)負(fù)責(zé)將外存調(diào)入內(nèi)存中。內(nèi)存空間不夠時(shí),操作系統(tǒng)負(fù)責(zé)將暫時(shí)用不到的信息換出外存。
虛擬內(nèi)存的最大容量是計(jì)算機(jī)的地址結(jié)構(gòu)(尋址范圍)決定的。
虛擬內(nèi)存的實(shí)際容量是min(內(nèi)存與外存容量之和,尋址范圍)
如計(jì)算機(jī)地址結(jié)構(gòu)為32位,按字節(jié)編址,內(nèi)存大小為512MB,外存大小為2GB。
虛擬內(nèi)存的最大容量為B=4GB
虛擬內(nèi)存的實(shí)際容量為2GB+512MB
?
虛擬內(nèi)存的三個(gè)特性:
多次性:無需一次性裝入內(nèi)存,可以多次調(diào)入內(nèi)存。
對(duì)換性:作業(yè)運(yùn)行時(shí)無需一直常駐內(nèi)存,允許在作業(yè)允許的過程中將作業(yè)換入換出。
虛擬性:從邏輯上擴(kuò)充了內(nèi)存的容量,使得用戶看到的內(nèi)存容量,遠(yuǎn)大于實(shí)際的容量。
?
虛擬內(nèi)存的實(shí)現(xiàn)需要建立在離散分配的基礎(chǔ)上
在程序執(zhí)行過程中,訪問的信息不在內(nèi)存時(shí),由操作系統(tǒng)負(fù)責(zé)將所需的信息從外存調(diào)入內(nèi)存。內(nèi)存空間不夠時(shí),將內(nèi)存中暫時(shí)用不到的信息換出到外存。
?
請(qǐng)求分頁和基本分頁的區(qū)別:
在程序執(zhí)行過程中,訪問的信息不在內(nèi)存時(shí),由操作系統(tǒng)負(fù)責(zé)將所需的信息從外存調(diào)入內(nèi)存。內(nèi)存空間不夠時(shí),將內(nèi)存中暫時(shí)用不到的信息換出到外存。操作系統(tǒng)提供請(qǐng)求調(diào)頁和頁面置換的功能。
在請(qǐng)求分頁中,頁表項(xiàng)增加了4個(gè)字段,狀態(tài)位、訪問字段、修改位、外存地址。
狀態(tài)位記錄是否已經(jīng)調(diào)入內(nèi)存。
訪問字段記錄最近訪問過幾次,或者記錄上次訪問的時(shí)間,供置換算法選擇換出時(shí)頁面參考。
修改位記錄內(nèi)存后是否被修改過。
外存地址記錄頁面在外存中的存放位置。
?
在請(qǐng)求分頁中,頁面不存在的時(shí)候,產(chǎn)生一個(gè)缺頁中斷,然后操作系統(tǒng)的缺頁中斷處理系統(tǒng)處理中斷。
缺頁的進(jìn)程阻塞,完成后再將其喚醒。
有空閑塊時(shí),為進(jìn)程分配一個(gè)空閑塊
沒有空閑塊的時(shí)候,由頁面置換算法選擇一個(gè)頁面淘汰。該頁面在內(nèi)存被修改,則需要寫回外存,未修改過不用寫。
缺頁中斷是因?yàn)楫?dāng)前指令想要訪問的目標(biāo)頁面未調(diào)入內(nèi)存而產(chǎn)生的,屬于內(nèi)中斷。
一條指令在執(zhí)行期間,可能產(chǎn)生多次缺頁中斷。
內(nèi)中斷:陷阱、陷入、故障(如缺頁中斷)、終止
外中斷:I/O,人工干預(yù)
頁面置換算法(需要最求更少的缺頁率):
最佳置換算法(OPT):每次淘汰的頁面是以后永不使用的,或是淘汰未來最遲被使用的頁面。實(shí)際上無法實(shí)現(xiàn)。
先進(jìn)先出置換算法(FIFO):淘汰最先進(jìn)入內(nèi)存的頁面。
只有FIFO算法有Belady異常,也就是說為進(jìn)程分配的物理塊增大的時(shí)候,缺頁次數(shù)不減反增。實(shí)現(xiàn)簡(jiǎn)單,但是算法性能差。
最近最久未使用置換算法(LRU):淘汰最近最久未使用的頁面。
用訪問字段記錄頁面自上次訪問以來的時(shí)間t,每次淘汰頁面時(shí)選擇一個(gè)t值最大的。該算法性能好,但是實(shí)現(xiàn)困難,開銷大。
做題時(shí),逆向檢查在內(nèi)存中的幾個(gè)頁面號(hào),最后一個(gè)出現(xiàn)的頁號(hào)就是要淘汰的頁面。
最少使用置換算法:淘汰最近時(shí)期使用最少的頁面
Clock置換算法:為每頁設(shè)置訪問位和修改位。
為每個(gè)頁面設(shè)置一個(gè)訪問位,將內(nèi)存中的頁面通過鏈接指針鏈接成一個(gè)循環(huán)隊(duì)列。被訪問時(shí),訪問位置為1,淘汰一個(gè)頁時(shí),檢查訪問位,是0則將該頁換出。是1則置為0,暫不換出。若第一輪掃描中,所有頁面都是1,則將其置為0后,再進(jìn)行第二輪掃描。簡(jiǎn)單的clock算法最多會(huì)經(jīng)過2輪掃描。
?
改進(jìn)型時(shí)鐘置換算法。
簡(jiǎn)單的時(shí)鐘置換算法只考慮一個(gè)頁面最近是否被訪問過。實(shí)際上只有被淘汰的頁面被修改過時(shí),才需要寫回外存。在其他條件都相同的時(shí)候,應(yīng)該優(yōu)先淘汰沒有修改過的頁面。修改位=0,表示頁面沒有修改過;修改位=1,表示頁面被修改過。
用(訪問位,修改位)表示頁面狀態(tài)
第一輪(最近未訪問且未修改):開始掃描找到第一個(gè)(0,0)替換,不修改標(biāo)志位
第二輪(最近未訪問但修改過):第一輪失敗,重新掃描,找到第一個(gè)(0,1),并把所有掃描過的幀訪問位置為0.
第三輪(最近已訪問未修改):第二輪失敗,重新掃描,找到第一個(gè)(0,0)替換,不修改標(biāo)志位
第四輪(最近已訪問且已修改):第三輪失敗,重新掃描,找到第一個(gè)(0,1)替換。
改進(jìn)型的clock算法淘汰一個(gè)頁面會(huì)最多進(jìn)行4輪掃描
?
內(nèi)存映射文件
由一個(gè)文件到一塊內(nèi)存的映射,用于解決本地多個(gè)進(jìn)程之間數(shù)據(jù)共享問題。是操作系統(tǒng)向上層程序員提供的功能(系統(tǒng)調(diào)用)方便程序員訪問文件數(shù)據(jù)。方便多個(gè)進(jìn)程共享同一個(gè)文件。
以訪問內(nèi)存的方式訪問文件數(shù)據(jù)
文件數(shù)據(jù)的讀入、寫出由操作系統(tǒng)自動(dòng)完成。進(jìn)程關(guān)閉文件時(shí),操作系統(tǒng)自動(dòng)將文件被修改的數(shù)據(jù)寫回磁盤。
在物理內(nèi)存中,一個(gè)文件對(duì)應(yīng)一份數(shù)據(jù),當(dāng)一個(gè)進(jìn)程修改文件數(shù)據(jù)時(shí),另一個(gè)進(jìn)程可以馬上看到
?
頁面分配策略
駐留集
指請(qǐng)求分頁存儲(chǔ)管理給進(jìn)程分配物理塊的集合。
駐留集太小會(huì)導(dǎo)致缺頁頻繁,需要花費(fèi)大量的時(shí)間處理缺頁。
駐留集太大會(huì)導(dǎo)致多道程序并發(fā)度下降,資源利用率降低
頁面分配、置換策略
?
固定分配:操作系統(tǒng)為每一個(gè)進(jìn)程分配一組固定數(shù)目的物理塊,在進(jìn)程運(yùn)行時(shí)大小不變
可變分配:先為每個(gè)進(jìn)程分配一定數(shù)目的物理塊,進(jìn)程運(yùn)行期間,可根據(jù)情況做適當(dāng)?shù)脑黾踊蛘邷p少。駐留集大小可變。
局部置換:發(fā)生缺頁時(shí)只能選進(jìn)程自己的物理塊進(jìn)行置換。
全局置換:可以將操作系統(tǒng)保留的空閑物理塊分配給缺頁進(jìn)程,也可以將別的進(jìn)程持有的物理塊置換到外存,再分配給缺頁進(jìn)程。
固定分區(qū)局部置換:系統(tǒng)為每個(gè)進(jìn)程分配一定數(shù)量的物理塊,在整個(gè)運(yùn)行期間都不改變。在運(yùn)行中缺頁,只能從該進(jìn)程在內(nèi)存中的頁面選出一頁換出。
可變分區(qū)全局置換:剛開始先分配一定數(shù)量空閑塊,操作系統(tǒng)會(huì)保持一個(gè)空閑隊(duì)列,發(fā)生缺頁時(shí),從空閑物理塊取出一塊分配給該進(jìn)程。若無空閑物理塊,選擇一個(gè)未鎖定的頁面換出外存,并將該物理塊分配給缺頁的進(jìn)程。只要進(jìn)程發(fā)生缺頁,就能獲得新的物理塊。當(dāng)空閑物理塊用完的時(shí)候,才選擇未選擇的頁面。被選擇的頁面可能時(shí)任意一個(gè)進(jìn)程的頁,被選中的進(jìn)程所擁有的物理塊會(huì)減少,缺頁率會(huì)增加。也就是說,只要缺頁就分配新的物理塊。
可變分區(qū)局部置換:剛開始先分配一定數(shù)量空閑塊,發(fā)生缺頁時(shí),只允許從物理塊分配給該進(jìn)程。如果調(diào)入頁面的時(shí)機(jī)頻繁的換頁,系統(tǒng)會(huì)多分配幾個(gè)物理塊。缺頁率特別低,可以適當(dāng)減少分配給該進(jìn)程的物理塊。也就是說,根據(jù)發(fā)生缺頁的頻率來動(dòng)態(tài)地增加或者減少進(jìn)程的物理塊。
從何時(shí)調(diào)頁
預(yù)調(diào)頁策略:根據(jù)空間局部性原理,一次調(diào)入若干個(gè)相鄰頁面可能比一次調(diào)入一個(gè)頁面更高效。用于進(jìn)程的首次調(diào)入,由程序員指出調(diào)入哪些地方,主要用于進(jìn)程的首次調(diào)入。
請(qǐng)求調(diào)頁策略:在運(yùn)行期間發(fā)現(xiàn)缺頁時(shí)才將所缺頁面調(diào)入內(nèi)存。
從何處調(diào)頁
1.?系統(tǒng)有足夠的對(duì)換區(qū)空間。調(diào)入調(diào)出都是在內(nèi)存與對(duì)換區(qū)進(jìn)行,可以保證頁面的調(diào)入調(diào)出速度很快。在進(jìn)程運(yùn)行時(shí),需要將進(jìn)程相關(guān)的數(shù)據(jù)從文件區(qū)復(fù)制到對(duì)換區(qū)。
2.?系統(tǒng)缺乏足夠的對(duì)換區(qū)空間。凡是不被修改的數(shù)據(jù)直接從文件區(qū)調(diào)入,由于這些頁面不會(huì)被修改,不必寫回磁盤。對(duì)于可能被修改的部分,換出時(shí)需寫回磁盤對(duì)換區(qū),下次需要時(shí)再?gòu)膶?duì)換區(qū)調(diào)入。
3.?Unix方式。運(yùn)行之前進(jìn)程有關(guān)的數(shù)據(jù)全部放在文件區(qū),未使用的頁面,都可以從文件區(qū)調(diào)入。若使用過的頁面需要換出,則寫回對(duì)換區(qū),下次需要時(shí)再?gòu)膶?duì)換區(qū)調(diào)入。
抖動(dòng)(顛簸)
剛剛換出的頁面又馬上換入內(nèi)存,剛剛換入的頁面馬上又要換出外存,這種頻繁的頁面調(diào)度行為稱為抖動(dòng),或者顛簸。主要原因是進(jìn)程頻繁訪問的頁面數(shù)目高于可用的物理塊數(shù)。(分配給進(jìn)程的物理塊不夠)物理塊太少,會(huì)產(chǎn)生抖動(dòng)現(xiàn)象。物理塊太多,會(huì)降低系統(tǒng)整體的并發(fā)度,降低某些資源的利用率。
工作集
駐留集:請(qǐng)求分頁存儲(chǔ)管理中給進(jìn)程分配的物理塊的集合。
工作集:指在某段時(shí)間集合里,進(jìn)程實(shí)際訪問頁面的集合。
操作系統(tǒng)會(huì)根據(jù)“窗口尺寸”來計(jì)算出工作集
選中一個(gè)正在運(yùn)行的進(jìn)程,往前數(shù)多少個(gè)窗口尺寸的進(jìn)程便是工作集。
工作集大小可能小于窗口尺寸。駐留集大小不能小于工作集大小,否則進(jìn)程運(yùn)行過程中會(huì)頻繁缺頁。
?
虛擬存儲(chǔ)器性能的影響因素及改進(jìn)方法