linux內(nèi)存管理論文
linux內(nèi)存管理論文
Linux是多用戶(hù)、多任務(wù)的操作系統(tǒng),存儲(chǔ)資源由多個(gè)進(jìn)程有效共享。下面是學(xué)習(xí)啦小編整理了linux內(nèi)存管理論文,有興趣的親可以來(lái)閱讀一下!
linux內(nèi)存管理論文篇一
分頁(yè)式虛擬內(nèi)存管理及Linux實(shí)現(xiàn)
摘 要:本文分析了操作系統(tǒng)的頁(yè)式虛擬存儲(chǔ)管理機(jī)制,并結(jié)合當(dāng)前支持多平臺(tái)的Linux操作系統(tǒng),根據(jù)其中虛擬存儲(chǔ)的特點(diǎn),詳細(xì)分析了在Linux系統(tǒng)下的頁(yè)式內(nèi)存虛擬實(shí)現(xiàn),重點(diǎn)指出了Linux所獨(dú)特的具體實(shí)現(xiàn)過(guò)程,其中包括請(qǐng)頁(yè)機(jī)制,物理內(nèi)存分配與回收和交換機(jī)制等。
關(guān)鍵詞:內(nèi)存;分頁(yè);虛擬;Linux
現(xiàn)代大多數(shù)計(jì)算機(jī)操作系統(tǒng)由于內(nèi)存空間的限制,都采用了虛擬內(nèi)存空間管理的方法。虛擬存儲(chǔ)管理器通過(guò)在輔存中建立一個(gè)虛擬地址空間,提供了一個(gè)物理存儲(chǔ)器的抽象,并且在任意時(shí)刻“自動(dòng)地”確定哪部分地址空間被加載在內(nèi)存中,系統(tǒng)處理在內(nèi)存和輔存之間地址空間塊的來(lái)回傳送,而無(wú)須人工干預(yù)?,F(xiàn)在大部分的虛擬內(nèi)存系統(tǒng)都采用了分頁(yè)式虛擬內(nèi)存管理。提高其管理性能可增強(qiáng)計(jì)算機(jī)的運(yùn)行速率和工作效率。本文即介紹分頁(yè)式虛擬內(nèi)存管理的過(guò)程并結(jié)合Linux操作系統(tǒng)介紹其實(shí)現(xiàn)。
一、實(shí)現(xiàn)過(guò)程
1、地址轉(zhuǎn)換。在分頁(yè)式虛擬內(nèi)存管理系統(tǒng)中,虛擬地址空間劃分成許多頁(yè),頁(yè)是一段連續(xù)的虛擬地址空間。相應(yīng)的,物理內(nèi)存空間也劃分成多個(gè)頁(yè)幀。頁(yè)和頁(yè)幀的大小是相同的,一個(gè)頁(yè)可以映射到一個(gè)頁(yè)幀。頁(yè)表項(xiàng)(Page Table Entry,PTE)包含有與主存中的頁(yè)相對(duì)應(yīng)的幀號(hào),對(duì)應(yīng)的頁(yè)是否在主存中的存在位(P),頁(yè)的內(nèi)容從上次裝入至今是否改變的修改位(M)。圖示如下:
為了將邏輯地址轉(zhuǎn)換成物理地址,系統(tǒng)中必須設(shè)置地址變換機(jī)構(gòu)。但是現(xiàn)在計(jì)算機(jī)使用的虛擬地址一般是32位的,而且每次訪(fǎng)問(wèn)內(nèi)存都要進(jìn)行地址轉(zhuǎn)換,這將嚴(yán)重影響系統(tǒng)效率?,F(xiàn)實(shí)中使用TLB(Translation Lookaside Buffer)以及三級(jí)頁(yè)表等解決上述問(wèn)題。
2、請(qǐng)求頁(yè)面調(diào)度。 虛擬內(nèi)存管理中,進(jìn)程駐留在次級(jí)存儲(chǔ)器。當(dāng)訪(fǎng)問(wèn)到某頁(yè)中的一個(gè)單元時(shí)才將該頁(yè)取入內(nèi)存。當(dāng)一個(gè)進(jìn)程第一次啟動(dòng)時(shí),會(huì)出現(xiàn)大量的頁(yè)錯(cuò)誤,當(dāng)越來(lái)越多的頁(yè)被取入內(nèi)存時(shí),根據(jù)局部性原理,在一段時(shí)間后錯(cuò)誤會(huì)逐漸平息下來(lái),頁(yè)錯(cuò)誤的數(shù)目會(huì)降的很低。
3、頁(yè)面置換算法。在進(jìn)程運(yùn)行過(guò)程中,若其所要訪(fǎng)問(wèn)的頁(yè)面不在內(nèi)存而需把它們調(diào)入內(nèi)存,但內(nèi)存無(wú)空閑空間時(shí),系統(tǒng)必須從內(nèi)存中調(diào)出一頁(yè)程序或數(shù)據(jù),送磁盤(pán)的對(duì)換區(qū)中。頁(yè)面置換算法(Page-Replacement Algorithms)確定將哪個(gè)頁(yè)面調(diào)出。
二、Linux中的分頁(yè)虛擬內(nèi)存管理具體實(shí)現(xiàn)
Linux是多用戶(hù)、多任務(wù)的操作系統(tǒng),存儲(chǔ)資源由多個(gè)進(jìn)程有效共享。Linux內(nèi)存管理的設(shè)計(jì)充分利用了計(jì)算機(jī)系統(tǒng)所提供的虛擬存儲(chǔ)技術(shù),真正實(shí)現(xiàn)了虛擬存儲(chǔ)器管理。其虛擬地址空間大小為4GB,內(nèi)核將這4G的空間分為兩部分,高1G為內(nèi)核空間,低3G為內(nèi)核空間,即Linux可以擁有4GB的虛擬空間。
1、Linux虛擬尋址
Linux使用三級(jí)頁(yè)表結(jié)構(gòu),且與平臺(tái)無(wú)關(guān),由頁(yè)目錄,頁(yè)中間目錄和頁(yè)表構(gòu)成。Linux中的虛擬地址可由4個(gè)域組成,其地址轉(zhuǎn)換與前述類(lèi)似。
2、Linux請(qǐng)頁(yè)機(jī)制。在Linux中,當(dāng)一個(gè)進(jìn)程執(zhí)行時(shí),如果CPU訪(fǎng)問(wèn)到一個(gè)有效的虛地址,但是這個(gè)地址對(duì)應(yīng)的頁(yè)不在內(nèi)存,則CPU產(chǎn)生一個(gè)缺頁(yè)異常,并將這個(gè)虛地址存入CR2存儲(chǔ)器,然后調(diào)用缺頁(yè)異常處理程序do_page_fault()。
有兩種方法裝入所缺的頁(yè),取決于此頁(yè)是否與磁盤(pán)文件建立了映射關(guān)系??梢哉{(diào)用do_no_page()函數(shù)檢查虛存區(qū)描述符的nopage域來(lái)確定這一點(diǎn)。若nopage域不為空,說(shuō)明映射了一個(gè)磁盤(pán)文件,nopage域指向執(zhí)行從磁盤(pán)讀入操作的函數(shù);若nopage域?yàn)榭?虛存區(qū)沒(méi)有映射磁盤(pán)文件。因此,do_no_page()調(diào)用do_anonymous_page()函數(shù),獲得一個(gè)新的頁(yè)面。
3、物理內(nèi)存分配與回收。在Linux中,虛存區(qū)間的分配在前,物理頁(yè)面的分配在后。隨著用戶(hù)程序的執(zhí)行和結(jié)束,系統(tǒng)不斷地分配和釋放物理頁(yè)面,這導(dǎo)致在已分配的內(nèi)存塊中分散著許多小的空閑頁(yè)面,即外碎片。外碎片無(wú)法滿(mǎn)足大塊連續(xù)頁(yè)面的分配要求。為此,Linux采用伙伴(buddy)算法來(lái)解決外碎片問(wèn)題。它把所有的空閑頁(yè)面分為10個(gè)塊組,每組中塊的大小是2n個(gè)頁(yè)面,且把同樣大小的塊形成一個(gè)鏈表。然后把大小相等且物理地址連續(xù)的兩個(gè)塊合并為一個(gè)塊。
4、交換機(jī)制。物理頁(yè)面的換入換出主要過(guò)程如下,其中涉及Linux中的page結(jié)構(gòu)和free_area結(jié)構(gòu)。
釋放頁(yè)面。如果一個(gè)頁(yè)面變?yōu)榭臻e可用,就把該頁(yè)面的page結(jié)構(gòu)鏈入某個(gè)空閑隊(duì)列free_area,同時(shí)頁(yè)面的使用計(jì)數(shù)count減1。
分配頁(yè)面。調(diào)用在__get_free_page()從某個(gè)空閑隊(duì)列分配內(nèi)存頁(yè)面,將頁(yè)面的使用計(jì)數(shù)count置為1。
活躍狀態(tài)。已分配的頁(yè)面處于活躍狀態(tài),該頁(yè)面的數(shù)據(jù)結(jié)構(gòu)page通過(guò)其隊(duì)列頭結(jié)構(gòu)lru鏈入活躍頁(yè)面隊(duì)列active_list,并在進(jìn)程地址空間中至少有一個(gè)頁(yè)與該頁(yè)面之間建立了映射關(guān)系。
總結(jié):操作系統(tǒng)中的虛擬存儲(chǔ)技術(shù)是當(dāng)今計(jì)算機(jī)領(lǐng)域的熱點(diǎn)之一。它的優(yōu)劣直接影響到計(jì)算機(jī)的性能的好壞。Linux是一個(gè)功能強(qiáng)大的實(shí)際的操作系統(tǒng),每個(gè)技術(shù)環(huán)節(jié)都有其自身的特點(diǎn),特別在系統(tǒng)架構(gòu)方面有其獨(dú)到的特點(diǎn)。在Linux虛擬內(nèi)存方面的性能改善將成倍的提高計(jì)算機(jī)在實(shí)際應(yīng)用中的價(jià)值和生產(chǎn)率。本文為虛擬內(nèi)存的理論闡述,可作為相關(guān)方向的理論介紹材料,對(duì)提高計(jì)算機(jī)實(shí)際應(yīng)用能力有一定幫助。
作者單位:東北林業(yè)大學(xué)信息與計(jì)算機(jī)工程學(xué)院
參考文獻(xiàn):
[1]Abraham Baer Galvin等.鄭扣銀譯.OPERATING SYSTEM CONCEPTS[M].北京:高等教育出版社.2005.
[2]William Stallings,陳渝譯.Operating Systems Internals and Design Principles[M].北京:電子工業(yè)出版社.2007.
點(diǎn)擊下頁(yè)還有更多>>>linux內(nèi)存管理論文