




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Linux內(nèi)存管理福州大學(xué)劉延華本文介紹內(nèi)存管理方面的內(nèi)容,如虛擬內(nèi)存的抽象模型和共享、按需調(diào)入頁面、頁面交換等。1.1 內(nèi)存管理的作用21.2 虛擬內(nèi)存的抽象模型31.3 按需裝入頁面41.4 交換61.5 共享虛擬內(nèi)存61.6 存取控制61.7 高速緩存71.7.1 緩沖區(qū)高速緩存71.7.2 頁面高速緩存71.7.3 交換高速緩存71.7.4 硬件高速緩存71.8 系統(tǒng)頁面表81.9 頁面的分配和釋放91.9.1 頁面的分配101.9.2 頁面的釋放101.10 內(nèi)存映射111.11 請求調(diào)頁121.12 頁面高速緩存121.13 內(nèi)核交換守護(hù)進(jìn)程13內(nèi)存管理系統(tǒng)是操作系統(tǒng)中最為重要的部
2、分,因?yàn)橄到y(tǒng)的物理內(nèi)存總是少于系統(tǒng)所需要的內(nèi)存數(shù)量。虛擬內(nèi)存就是為了克服這個(gè)矛盾而采用的策略。系統(tǒng)的虛擬內(nèi)存通過在各個(gè)進(jìn)程之間共享內(nèi)存而使系統(tǒng)看起來有多于實(shí)際內(nèi)存的內(nèi)存容量。虛擬內(nèi)存可以提供以下的功能:廣闊的地址空間系統(tǒng)的虛擬內(nèi)存可以比系統(tǒng)的實(shí)際內(nèi)存大很多倍。進(jìn)程的保護(hù)系統(tǒng)中的每一個(gè)進(jìn)程都有自己的虛擬地址空間。這些虛擬地址空間是完全分開的,這樣一個(gè)進(jìn)程的運(yùn)行不會影響其他進(jìn)程。并且,硬件上的虛擬內(nèi)存機(jī)制是被保護(hù)的,內(nèi)存不能被寫入,這樣可以防止迷失的應(yīng)用程序覆蓋代碼的數(shù)據(jù)。內(nèi)存映射內(nèi)存映射用來把文件映射到進(jìn)程的地址空間。在內(nèi)存映射中,文件的內(nèi)容直接連接到進(jìn)程的虛擬地址空間。公平的物理內(nèi)存分配。內(nèi)存
3、管理系統(tǒng)允許系統(tǒng)中每一個(gè)運(yùn)行的進(jìn)程都可以公平地得到系統(tǒng)的物理內(nèi)存。共享虛擬內(nèi)存。雖然虛擬內(nèi)存允許進(jìn)程擁有自己單獨(dú)的虛擬地址空間,但有時(shí)可能會希望進(jìn)程共享內(nèi)存。在討論Linux系統(tǒng)虛擬內(nèi)存的實(shí)現(xiàn)方法之前,讓我們先看看虛擬內(nèi)存的抽象模型。當(dāng)處理器執(zhí)行一個(gè)程序時(shí),它從內(nèi)存中讀取指令并解碼執(zhí)行。當(dāng)執(zhí)行這條指令時(shí),處理器將還會需要在內(nèi)存的某一個(gè)位置讀取或存儲數(shù)據(jù)。在一個(gè)虛擬內(nèi)存系統(tǒng)中,所有程序涉及到的內(nèi)存地址均為虛擬內(nèi)存地址而不是機(jī)器的物理地址。處理器根據(jù)操作系統(tǒng)保存的一些信息將虛擬內(nèi)存地址轉(zhuǎn)換為物理地址。為了讓這種轉(zhuǎn)換更為容易進(jìn)行,虛擬內(nèi)存和物理內(nèi)存都分為大小固定的塊,叫做頁面。每一個(gè)頁面有一個(gè)唯一的
4、頁面號,叫做PFN(pageframenumber)。在這種分頁方式下,一個(gè)虛擬內(nèi)存地址由兩部分組成:一部分是位移地址,另一部分是PFNo每當(dāng)處理器遇到一個(gè)虛擬內(nèi)存地址時(shí),它都將會分離出位移地址和PFN地址。然后再將PF例址翻譯成物理地址,以便正確地讀取其中的位移地址。處理器利用頁面表來完成上述的工作。圖1-1是兩個(gè)進(jìn)程,進(jìn)程X和進(jìn)程Y的虛擬內(nèi)存示意圖。兩個(gè)進(jìn)程分別有自己的頁面表。這些頁面表用來將進(jìn)程的虛擬內(nèi)存頁映射到物理內(nèi)存頁中??梢钥闯鲞M(jìn)程X的虛擬內(nèi)存頁0映射到了物理內(nèi)存頁1,進(jìn)程Y勺虛擬內(nèi)存頁1映射到了物理內(nèi)存頁4。虛擬內(nèi)存示意圖虎機(jī)內(nèi)存捌理內(nèi)存廢掖內(nèi)存圖1-1虛擬內(nèi)存示意圖頁面表的每個(gè)
5、入口一般都包括以下的內(nèi)容:?t效標(biāo)志。此標(biāo)志用于表明頁面表入口是否可以使用。?物理頁面號。頁面表入口描述的物理頁面號。?存取控制信息。用來描述頁面如何使用,例如,是否可寫,是否包括可執(zhí)行代碼等。處理器讀取頁面表時(shí),使用虛擬內(nèi)存頁號作為頁面表的位移,例如,虛擬內(nèi)存頁5是頁面表的第6個(gè)元素。在將虛擬內(nèi)存地址轉(zhuǎn)換成物理內(nèi)存地址時(shí),處理器首先將虛擬內(nèi)存地址分解為PFM口位移值。例如,在上圖中,一個(gè)頁面的大小是0x2000字節(jié)(十進(jìn)制的8192),那么進(jìn)程Y的一個(gè)虛擬內(nèi)存地址0x2194將被分解成虛擬內(nèi)存頁號PFM1和位移0x194。然后處理器使用PFN為進(jìn)程頁面表的位移值來查找頁面表的入口。如果該入口
6、是有效入口,處理器則從中取出物理內(nèi)存的頁面號。如果入口是無效入口,處理器則產(chǎn)生一個(gè)頁面錯(cuò)誤給操作系統(tǒng),并將控制權(quán)交給操作系統(tǒng)。假定此處是一個(gè)有效入口,則處理器取出物理頁面號,并乘以物理頁面的大小以便得到此物理頁面在內(nèi)存中的地址,最后加上位移值。再看上面的例子:進(jìn)程Y白PFM1,映射到物理內(nèi)存頁號為4,則止匕頁從0X8000(4X0X2000)開始,再加上位移0X194,得到最終的物理地址為0X8194。1.3按需裝入頁面由于物理內(nèi)存要比虛擬內(nèi)存小很多,所以操作系統(tǒng)一定要十分有效地利用系統(tǒng)的物理內(nèi)存。一種節(jié)約物理內(nèi)存的方法是只將執(zhí)行程序時(shí)正在使用到的虛擬內(nèi)存頁面裝入到系統(tǒng)的物理頁面中。當(dāng)一個(gè)進(jìn)程
7、試圖存取一個(gè)不在物理內(nèi)存中的虛擬內(nèi)存頁面時(shí),處理器將會產(chǎn)生一個(gè)頁面錯(cuò)誤給操作系統(tǒng)。如果發(fā)生頁面錯(cuò)誤的虛擬內(nèi)存地址為無效的地址,說明處理器正在存取一個(gè)它不應(yīng)該存取的地址。這時(shí),有可能是應(yīng)用程序出現(xiàn)了某一方面的錯(cuò)誤,例如寫入一個(gè)內(nèi)存中的隨機(jī)地址。在這種情況下,操作系統(tǒng)將會中止進(jìn)程的運(yùn)行,以防止系統(tǒng)中的其他進(jìn)程受到破壞。如果發(fā)生頁面錯(cuò)誤的虛擬內(nèi)存地址為有效的地址,但此頁面當(dāng)前并不在物理內(nèi)存中,則操作系統(tǒng)必須從硬盤中將正確的頁面讀入到系統(tǒng)內(nèi)存。相對來說,讀取硬盤要花費(fèi)很長的時(shí)間,所以處理器必須等待直到頁面讀取完畢。如果此時(shí)有另外的進(jìn)程等待運(yùn)行,則操作系統(tǒng)將選擇一個(gè)進(jìn)程運(yùn)行。從硬盤中讀取的頁面將被寫入到
8、一個(gè)空的物理內(nèi)存頁中,然后在進(jìn)程的頁面表中加入一個(gè)虛擬內(nèi)存頁面號入口。此時(shí)進(jìn)程就可以重新運(yùn)行了。Linux系統(tǒng)使用需求時(shí)裝入技術(shù)將可執(zhí)行代碼裝入到進(jìn)程的虛擬內(nèi)存中。每當(dāng)一個(gè)命令執(zhí)行時(shí),包括此命令的文件將被打開并映射到進(jìn)程的虛擬內(nèi)存中。此過程是通過修改描述進(jìn)程內(nèi)存映射的數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)的,通常被叫做內(nèi)存映射。但此時(shí)只有文件鏡像的第一部分被裝入到了系統(tǒng)的物理內(nèi)存中,而鏡像的其他部分還保留在硬盤中。當(dāng)此鏡像執(zhí)行時(shí),處理器將產(chǎn)生頁面錯(cuò)誤,射表決定應(yīng)該把鏡像的哪一部分裝入到內(nèi)存中執(zhí)行。Linux使用進(jìn)程的內(nèi)存映當(dāng)一個(gè)進(jìn)程需要把一個(gè)虛擬內(nèi)存頁面裝入到物理內(nèi)存而又沒有空閑的物理內(nèi)存時(shí),操作系統(tǒng)必須將一個(gè)現(xiàn)在不
9、用的頁面從物理內(nèi)存中扔掉以便為將要裝入的虛擬內(nèi)存頁騰出空間。如果將要扔掉的物理內(nèi)存頁一直沒有被改寫過,則操作系統(tǒng)將不保存此內(nèi)存頁,而只是簡單地將它扔掉。如果再需要此內(nèi)存頁時(shí),再從文件鏡像中裝入。但是,如果此頁面已經(jīng)被修改過,操作系統(tǒng)就需要把頁面的內(nèi)容保存起來。這些頁面稱為“臟頁面”(dirtypage)。當(dāng)它們從內(nèi)存中移走時(shí),將會被保存到一個(gè)特殊的交換文件中。Linux系統(tǒng)使用一種叫做“最近最少使用”的技術(shù)(LRU)來決定把哪一個(gè)頁面從物理內(nèi)存中移出。系統(tǒng)中的每一個(gè)頁面都有一個(gè)年齡,當(dāng)一個(gè)頁面被存取時(shí),它的年齡將發(fā)生變化。頁面被存取的越頻繁,頁面的年齡就越年輕;頁面被存取的越少,它的年齡就越大
10、。年齡大的頁面將首先被交換出去。1.5 共享虛擬內(nèi)存由于使用了虛擬內(nèi)存,則幾個(gè)進(jìn)程之間的內(nèi)存共享變得很容易。每個(gè)內(nèi)存的存取都要通過頁面表,而且每個(gè)內(nèi)存都有自己的單獨(dú)的頁面表。如果希望兩個(gè)進(jìn)程共享一個(gè)物理內(nèi)存頁,只需將它們頁面表入口中的物理內(nèi)存號設(shè)置為相同的物理頁面號即可。1.6 存取控制頁面表中還包括存取控制信息,這樣,在處理器使用頁面表把進(jìn)程的虛擬內(nèi)存地址轉(zhuǎn)換為物理內(nèi)存地址時(shí),可以方便地使用存取控制信息來檢查進(jìn)程是否存取了它不該存取的信息。使用存取控制信息是完全必要的。例如,一些內(nèi)存中包括可執(zhí)行代碼,而這些可執(zhí)行代碼通常為只讀,操作系統(tǒng)將不會允許向一段只讀代碼中寫入數(shù)據(jù)。同樣,包括數(shù)據(jù)的內(nèi)存
11、通常為可讀寫的,而試圖執(zhí)行此內(nèi)存中的代碼將產(chǎn)生錯(cuò)誤。大多數(shù)的處理器有內(nèi)核和用戶兩種可執(zhí)行方式。用戶不能執(zhí)行內(nèi)核的代碼,而內(nèi)核的數(shù)據(jù)用戶也無法存取。為了獲得最大的系統(tǒng)效用,操作系統(tǒng)一般使用高速緩存來提高系統(tǒng)性能。Linux系統(tǒng)使用了幾種涉及到高速緩存的內(nèi)存管理方法。1.7.1 緩沖區(qū)高速緩存緩沖區(qū)高速緩存中保存著塊設(shè)備驅(qū)動程序所用到的數(shù)據(jù)緩沖區(qū)。這些緩沖區(qū)的大小固定,一般包括從塊設(shè)備中讀入的和將要寫入到塊設(shè)備中的信息塊。快設(shè)備一次只能處理大小固定的數(shù)據(jù)塊。硬盤就是塊設(shè)備中的一種。緩沖區(qū)高速緩存使用設(shè)備標(biāo)識符和塊號作為索引來快速地查找數(shù)據(jù)塊。塊設(shè)備只通過緩沖區(qū)高速緩存進(jìn)行存取。如果所需要的數(shù)據(jù)存在
12、于緩沖區(qū)高速緩存中,那么就不需要從物理塊設(shè)備中讀取,這樣存取的速度就會加快。1.7.2 頁面高速緩存頁面高速緩存用來加速磁盤中文件鏡像和數(shù)據(jù)的存取,我們將在后面的對它進(jìn)行詳細(xì)討論。1.7.3 交換高速緩存交換文件中只保存那些被修改過的頁面。只要在頁面被寫入到交換文件中后沒有被修改過,那么此頁面下一次從內(nèi)存中交換出來時(shí)就不用再寫入到交換文件中了,因?yàn)榻粨Q文件中已經(jīng)有了該頁面。這樣,該頁面就可以簡單地扔掉,節(jié)省了大量的系統(tǒng)操作。1.7.4 硬件高速緩存一個(gè)常用的硬件高速緩存是在處理器中,它一般保存著頁面表的入口。Linux系統(tǒng)共有三級的頁面表。上一級頁面表的PFN旨向下一級頁面表的入口。如圖1-2
13、所示,一個(gè)虛擬內(nèi)存地址分成了幾個(gè)字段,每個(gè)字段提供一個(gè)相應(yīng)的頁面表位移值。要把一個(gè)虛擬內(nèi)存地址翻譯成一個(gè)物理內(nèi)存地址,處理器必須讀取每一個(gè)字段的內(nèi)容,把其轉(zhuǎn)化成包含頁面表的物理頁的位移值,再取出其中指向下一個(gè)頁面表的PFNo這個(gè)過程重復(fù)三次,直到找到包含物理頁面號的虛擬內(nèi)存地址。圖1-2虛擬內(nèi)存地址示意圖Linux運(yùn)行的所有平臺都提供地址翻譯的宏函數(shù)以便內(nèi)核為某一個(gè)進(jìn)程轉(zhuǎn)化頁面表。這樣,內(nèi)核就無需知道頁面表入口的格式以及它們是如何安排的。第f第二級第三皴頁面中的字節(jié)第一級頁面表第二皴頁面表第三級頁面表物理頁面m系統(tǒng)在運(yùn)行時(shí)會經(jīng)常地需要物理內(nèi)存頁。例如,當(dāng)一個(gè)文件鏡像從磁盤調(diào)入到內(nèi)存時(shí),操作系統(tǒng)
14、需要為它分配物理內(nèi)存頁。當(dāng)程序執(zhí)行完畢時(shí),操作系統(tǒng)需要釋放內(nèi)存頁。物理頁的另一個(gè)用途是存儲內(nèi)核所需要的數(shù)據(jù)結(jié)構(gòu),例如頁面表。頁面的分配和撤消機(jī)制以及所涉及的數(shù)據(jù)結(jié)構(gòu)對內(nèi)存管理來說是至關(guān)重要的。系統(tǒng)中所有的物理內(nèi)存頁都包括在mem_map數(shù)據(jù)結(jié)構(gòu)中,而mem_map是由mem_map_t結(jié)構(gòu)組成的鏈表。mem_map_t在系統(tǒng)啟動時(shí)初始化。每個(gè)mem_map_t結(jié)構(gòu)都描述了系統(tǒng)中的一個(gè)物理頁。其重要的字段有:?count此字段用于記錄使用此頁面的用戶數(shù)。當(dāng)幾個(gè)進(jìn)程共享此物理內(nèi)存頁時(shí),count的值將會大于1。?age此字段描述了頁面的年齡,通過此字段,操作系統(tǒng)可以決定是否將此頁面扔掉或交換出去。
15、?map_nr此字段為頁面的物理頁面號。頁面分配程序使用free_area向量查找和釋放頁面。對于頁面分配程序來說,頁面本身的大小和處理器使用的物理頁面機(jī)制是無關(guān)的。free_area中的每個(gè)元素都包括頁面塊的信息。第一個(gè)元素描述了單個(gè)頁面的頁面塊,第二個(gè)元素描述了兩個(gè)頁面的頁面塊,第三個(gè)元素描述了四個(gè)頁面的頁面塊,以次類推以2的次方數(shù)增加。向量中的list元素用來作為指向mem_map數(shù)據(jù)結(jié)構(gòu)中page結(jié)構(gòu)的隊(duì)列的頭指針,指向空閑的頁面。指針map指向同樣大小頁面組的一個(gè)位圖。如果第N個(gè)頁面塊是空閑的,那么該位圖的第N©置1。圖1-3顯示了free_area結(jié)構(gòu)。元素0有一個(gè)空閑頁
16、塊(頁號0),元素2有兩個(gè)空閑頁塊,一個(gè)從頁號4開始,另一個(gè)從頁號56開始。圖1-3空閑內(nèi)存示意圖物理內(nèi)存/空闌的PFH"/1.9.1 頁面的分配Linux系統(tǒng)使用Buddy算法來分配和釋放頁面塊。如果系統(tǒng)對于請求的分配有足夠的空閑頁面(nr_free_pages>min_free_pages),頁面分酉己程序斗等會查找free_area以便找到一個(gè)和請求的頁面塊大小相同的頁面塊。它根據(jù)free_area中l(wèi)ist元素指向的空閑頁面隊(duì)列進(jìn)行查找。如果沒有同樣大小的空閑頁面塊,則繼續(xù)查找下一個(gè)空閑頁面塊(其大小為上一個(gè)頁面塊的2倍)。如果有空閑的頁面塊,則把頁面塊分割成所請求的大
17、小,返回到調(diào)用者。剩下的空閑頁面塊則插入在空閑頁面塊隊(duì)列中。1.9.2 頁面的釋放以上頁面塊的分配策略會造成將一個(gè)個(gè)大的內(nèi)存塊分割成小塊的結(jié)果。而內(nèi)存頁面釋放程序卻總是試圖將一個(gè)個(gè)的比較小的頁面塊合并為大的頁面塊。每當(dāng)一個(gè)頁面塊釋放時(shí),頁面釋放程序就會檢查其周圍的頁面塊是否空閑。如果存在空閑的頁面塊,則空閑的頁面塊就會和釋放的頁面塊合并在一起組成更大的頁面塊。當(dāng)執(zhí)行一個(gè)文件鏡像時(shí),可執(zhí)行鏡像的內(nèi)容必須裝入到進(jìn)程的虛擬地址空間??蓤?zhí)行鏡像進(jìn)程使用的虛擬內(nèi)存區(qū)數(shù)據(jù)結(jié)構(gòu)鏈接的共享庫也是一樣要裝入到虛擬內(nèi)存空間。進(jìn)程使用的在投內(nèi)存區(qū)圖1-4虛擬內(nèi)存數(shù)據(jù)結(jié)構(gòu)示意圖可執(zhí)行文件并不是真正地裝入到物理內(nèi)存空間
18、,它只是簡單地鏈接到進(jìn)程的虛擬內(nèi)存。然后,隨著應(yīng)用程序運(yùn)行時(shí)的需要,可執(zhí)行鏡像才逐漸地裝入到物理內(nèi)存。這種將一個(gè)文件的鏡像和一個(gè)進(jìn)程的虛擬內(nèi)存地址空間連接起來的方法叫做內(nèi)存映射。數(shù)據(jù)結(jié)構(gòu)mm_struct代表每個(gè)進(jìn)程的虛擬內(nèi)存空間。它包含了正在執(zhí)行的鏡像的信息和一些指向vm_area_struct結(jié)構(gòu)的指針,如圖10-4所示。每個(gè)vm_area_struct結(jié)構(gòu)都描述了進(jìn)程的虛擬內(nèi)存的起始和結(jié)束位置,進(jìn)程的存取權(quán)限以及和內(nèi)存有關(guān)的一系列的操作。這些操作是Linux系統(tǒng)在處理虛擬內(nèi)存時(shí)將要用到的。當(dāng)一個(gè)可執(zhí)行鏡像映射到一個(gè)進(jìn)程的虛擬內(nèi)存地址時(shí),操作系統(tǒng)將創(chuàng)建一系列的數(shù)據(jù)結(jié)構(gòu)vm_area_str
19、uct,每一個(gè)vm_area_struct代表可執(zhí)行鏡像的一部分。Linux系統(tǒng)支持多種標(biāo)準(zhǔn)虛擬內(nèi)存操作,創(chuàng)建vm_area_struct時(shí),相應(yīng)的虛擬內(nèi)存操作就會和vm_area_struct鏈接起來。一旦一個(gè)可執(zhí)行鏡像映射到了一個(gè)進(jìn)程的虛擬內(nèi)存中,它就可以開始執(zhí)行了。因?yàn)殚_始時(shí)只有鏡像開頭的一小部分裝入到了系統(tǒng)的物理內(nèi)存中,所以不久進(jìn)程就會存取一些不在物理內(nèi)存中的虛擬內(nèi)存頁,這時(shí)處理器會通知Linux發(fā)生了頁面錯(cuò)誤。頁面錯(cuò)誤將會描述頁面錯(cuò)誤發(fā)生時(shí)的虛擬內(nèi)存地址和存取內(nèi)存操作的類型。Linux首先查找代表發(fā)生頁面錯(cuò)誤的虛擬內(nèi)存區(qū)的vm_area_struct。如果沒有代表此出錯(cuò)虛擬地址的vm
20、_area_struct,就說明進(jìn)程存取了一個(gè)非法的虛擬內(nèi)存地址。Linux系統(tǒng)將向進(jìn)程發(fā)出SIGSEGV信號。Linux下一步檢查頁面錯(cuò)誤的類型是否和此虛擬內(nèi)存區(qū)所允許的操作類型相符。如果不符,Linux系統(tǒng)也將報(bào)告內(nèi)存錯(cuò)誤。如果Linux認(rèn)為此頁面錯(cuò)誤是合法的,它將處理此頁面錯(cuò)誤。Linux還必須區(qū)分頁面是在交換文件中還是作為文件鏡像的一部分存在于磁盤中。它靠檢查出錯(cuò)頁面的頁面表來區(qū)分:如果頁面表的入口是無效的,但非空,說明頁面在交換文件中。最后,Linux調(diào)入所需的頁面并更新進(jìn)程的頁面表。1.12 頁面高速緩存Linux系統(tǒng)中頁面高速緩存的作用是加快對磁盤中的文件的存取。對于已經(jīng)作好了磁
21、盤映射的文件,Linux每次讀取一頁,并將讀取的頁面存儲到頁面高速緩存中。圖1-5顯示頁面高速緩存由page_hash_table組成,page_hash_table是一個(gè)包含指向mem_map_t結(jié)構(gòu)指針的數(shù)組。每當(dāng)從一個(gè)內(nèi)存映射文件中讀取一個(gè)頁面時(shí),頁面都要從頁面高速緩存中讀取。如果頁面在高速緩存中,則將一個(gè)指向mem_map_t的指針返回給頁面錯(cuò)誤處理程序。否則,頁面必須從磁盤上讀入到內(nèi)存中。如果可能,Linux系統(tǒng)將會提前讀取文件中的下一個(gè)頁面,這樣,如果文件是順序執(zhí)行的,那么下一個(gè)頁面就已經(jīng)在內(nèi)存中了。隨著文件的讀入和執(zhí)行,頁面高速緩存也將變得越來越大。不用的頁面將被移出高速緩存。數(shù)據(jù)構(gòu)pa華_hash_table數(shù)據(jù)結(jié)構(gòu)itLemmapjt數(shù)據(jù)結(jié)構(gòu)memjnapjtinode120x8000r-inude礴1offsetoffsetlie工Jha虧hnext_h4shpr"hashprvhash120x2000圖1-5頁面緩存示意圖1.13 內(nèi)核交換守護(hù)進(jìn)程當(dāng)物理內(nèi)存變少時(shí),Linux內(nèi)存管理必須釋放物理內(nèi)存頁。此任務(wù)由內(nèi)核中的交換守護(hù)進(jìn)程(kswapd)完成。交換守護(hù)進(jìn)程是一個(gè)內(nèi)核線程。內(nèi)核線程是無需使用虛擬內(nèi)存的進(jìn)程,它們在物理內(nèi)存中運(yùn)行于內(nèi)核方式下。交換守護(hù)進(jìn)程還有一個(gè)重要的任務(wù)是保證系統(tǒng)中有足夠的空閑內(nèi)存。交換守
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 茶葉購銷合作合同模板
- 家族遺產(chǎn)合同樣本
- 天津市實(shí)習(xí)學(xué)生勞動合同細(xì)則
- 電梯加裝項(xiàng)目合同模板
- 施工隊(duì)勞動合同簡明合同模板
- 農(nóng)村地區(qū)私人租地合同樣本協(xié)議
- 新版團(tuán)體人身意外傷害保險(xiǎn)合同條款解析
- 房地產(chǎn)公司合同審核與管理制度
- 信息系統(tǒng)的測試與質(zhì)量保證考核試卷
- 孤殘兒童心理關(guān)愛與支持體系構(gòu)建方法研究考核試卷
- 滋補(bǔ)品市場洞察報(bào)告
- 部編版中考?xì)v史一輪復(fù)習(xí):七年級上、下冊歷史復(fù)習(xí)課件534張
- 江蘇省無錫市惠山區(qū)2024年統(tǒng)編版小升初考試語文試卷(含答案解析)
- JGJ/T235-2011建筑外墻防水工程技術(shù)規(guī)程
- 信息科技課的跨學(xué)科主題學(xué)習(xí)PP義務(wù)教育課程方案和課程標(biāo)準(zhǔn)國家級示范培訓(xùn)課件
- 五年級下冊英語作文訓(xùn)練-外研版(三起)
- 7.2.1 圓柱(課件含動畫演示)-【中職】高一數(shù)學(xué)(高教版2021基礎(chǔ)模塊下冊)
- 第七節(jié)碎石路基施工方案
- 三年級數(shù)學(xué)興趣班綱要及教案
- 便利店門店運(yùn)營手冊
- 記者行業(yè)現(xiàn)狀分析及發(fā)展趨勢
評論
0/150
提交評論