學(xué)習(xí)啦 > 論文大全 > 管理論文 > linux內(nèi)存管理論文

linux內(nèi)存管理論文

時(shí)間: 家文952 分享

linux內(nèi)存管理論文

  Linux是多用戶、多任務(wù)的操作系統(tǒng),存儲(chǔ)資源由多個(gè)進(jìn)程有效共享。下面是學(xué)習(xí)啦小編整理了linux內(nèi)存管理論文,有興趣的親可以來閱讀一下!

  linux內(nèi)存管理論文篇一

  分頁式虛擬內(nèi)存管理及Linux實(shí)現(xiàn)

  摘 要:本文分析了操作系統(tǒng)的頁式虛擬存儲(chǔ)管理機(jī)制,并結(jié)合當(dāng)前支持多平臺(tái)的Linux操作系統(tǒng),根據(jù)其中虛擬存儲(chǔ)的特點(diǎn),詳細(xì)分析了在Linux系統(tǒng)下的頁式內(nèi)存虛擬實(shí)現(xiàn),重點(diǎn)指出了Linux所獨(dú)特的具體實(shí)現(xiàn)過程,其中包括請頁機(jī)制,物理內(nèi)存分配與回收和交換機(jī)制等。

  關(guān)鍵詞:內(nèi)存;分頁;虛擬;Linux

  現(xiàn)代大多數(shù)計(jì)算機(jī)操作系統(tǒng)由于內(nèi)存空間的限制,都采用了虛擬內(nèi)存空間管理的方法。虛擬存儲(chǔ)管理器通過在輔存中建立一個(gè)虛擬地址空間,提供了一個(gè)物理存儲(chǔ)器的抽象,并且在任意時(shí)刻“自動(dòng)地”確定哪部分地址空間被加載在內(nèi)存中,系統(tǒng)處理在內(nèi)存和輔存之間地址空間塊的來回傳送,而無須人工干預(yù)?,F(xiàn)在大部分的虛擬內(nèi)存系統(tǒng)都采用了分頁式虛擬內(nèi)存管理。提高其管理性能可增強(qiáng)計(jì)算機(jī)的運(yùn)行速率和工作效率。本文即介紹分頁式虛擬內(nèi)存管理的過程并結(jié)合Linux操作系統(tǒng)介紹其實(shí)現(xiàn)。

  一、實(shí)現(xiàn)過程

  1、地址轉(zhuǎn)換。在分頁式虛擬內(nèi)存管理系統(tǒng)中,虛擬地址空間劃分成許多頁,頁是一段連續(xù)的虛擬地址空間。相應(yīng)的,物理內(nèi)存空間也劃分成多個(gè)頁幀。頁和頁幀的大小是相同的,一個(gè)頁可以映射到一個(gè)頁幀。頁表項(xiàng)(Page Table Entry,PTE)包含有與主存中的頁相對應(yīng)的幀號(hào),對應(yīng)的頁是否在主存中的存在位(P),頁的內(nèi)容從上次裝入至今是否改變的修改位(M)。圖示如下:

  為了將邏輯地址轉(zhuǎn)換成物理地址,系統(tǒng)中必須設(shè)置地址變換機(jī)構(gòu)。但是現(xiàn)在計(jì)算機(jī)使用的虛擬地址一般是32位的,而且每次訪問內(nèi)存都要進(jìn)行地址轉(zhuǎn)換,這將嚴(yán)重影響系統(tǒng)效率?,F(xiàn)實(shí)中使用TLB(Translation Lookaside Buffer)以及三級(jí)頁表等解決上述問題。

  2、請求頁面調(diào)度。 虛擬內(nèi)存管理中,進(jìn)程駐留在次級(jí)存儲(chǔ)器。當(dāng)訪問到某頁中的一個(gè)單元時(shí)才將該頁取入內(nèi)存。當(dāng)一個(gè)進(jìn)程第一次啟動(dòng)時(shí),會(huì)出現(xiàn)大量的頁錯(cuò)誤,當(dāng)越來越多的頁被取入內(nèi)存時(shí),根據(jù)局部性原理,在一段時(shí)間后錯(cuò)誤會(huì)逐漸平息下來,頁錯(cuò)誤的數(shù)目會(huì)降的很低。

  3、頁面置換算法。在進(jìn)程運(yùn)行過程中,若其所要訪問的頁面不在內(nèi)存而需把它們調(diào)入內(nèi)存,但內(nèi)存無空閑空間時(shí),系統(tǒng)必須從內(nèi)存中調(diào)出一頁程序或數(shù)據(jù),送磁盤的對換區(qū)中。頁面置換算法(Page-Replacement Algorithms)確定將哪個(gè)頁面調(diào)出。

  二、Linux中的分頁虛擬內(nèi)存管理具體實(shí)現(xiàn)

  Linux是多用戶、多任務(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í)頁表結(jié)構(gòu),且與平臺(tái)無關(guān),由頁目錄,頁中間目錄和頁表構(gòu)成。Linux中的虛擬地址可由4個(gè)域組成,其地址轉(zhuǎn)換與前述類似。

  2、Linux請頁機(jī)制。在Linux中,當(dāng)一個(gè)進(jìn)程執(zhí)行時(shí),如果CPU訪問到一個(gè)有效的虛地址,但是這個(gè)地址對應(yīng)的頁不在內(nèi)存,則CPU產(chǎn)生一個(gè)缺頁異常,并將這個(gè)虛地址存入CR2存儲(chǔ)器,然后調(diào)用缺頁異常處理程序do_page_fault()。

  有兩種方法裝入所缺的頁,取決于此頁是否與磁盤文件建立了映射關(guān)系。可以調(diào)用do_no_page()函數(shù)檢查虛存區(qū)描述符的nopage域來確定這一點(diǎn)。若nopage域不為空,說明映射了一個(gè)磁盤文件,nopage域指向執(zhí)行從磁盤讀入操作的函數(shù);若nopage域?yàn)榭?虛存區(qū)沒有映射磁盤文件。因此,do_no_page()調(diào)用do_anonymous_page()函數(shù),獲得一個(gè)新的頁面。

  3、物理內(nèi)存分配與回收。在Linux中,虛存區(qū)間的分配在前,物理頁面的分配在后。隨著用戶程序的執(zhí)行和結(jié)束,系統(tǒng)不斷地分配和釋放物理頁面,這導(dǎo)致在已分配的內(nèi)存塊中分散著許多小的空閑頁面,即外碎片。外碎片無法滿足大塊連續(xù)頁面的分配要求。為此,Linux采用伙伴(buddy)算法來解決外碎片問題。它把所有的空閑頁面分為10個(gè)塊組,每組中塊的大小是2n個(gè)頁面,且把同樣大小的塊形成一個(gè)鏈表。然后把大小相等且物理地址連續(xù)的兩個(gè)塊合并為一個(gè)塊。

  4、交換機(jī)制。物理頁面的換入換出主要過程如下,其中涉及Linux中的page結(jié)構(gòu)和free_area結(jié)構(gòu)。

  釋放頁面。如果一個(gè)頁面變?yōu)榭臻e可用,就把該頁面的page結(jié)構(gòu)鏈入某個(gè)空閑隊(duì)列free_area,同時(shí)頁面的使用計(jì)數(shù)count減1。

  分配頁面。調(diào)用在__get_free_page()從某個(gè)空閑隊(duì)列分配內(nèi)存頁面,將頁面的使用計(jì)數(shù)count置為1。

  活躍狀態(tài)。已分配的頁面處于活躍狀態(tài),該頁面的數(shù)據(jù)結(jié)構(gòu)page通過其隊(duì)列頭結(jié)構(gòu)lru鏈入活躍頁面隊(duì)列active_list,并在進(jìn)程地址空間中至少有一個(gè)頁與該頁面之間建立了映射關(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)方向的理論介紹材料,對提高計(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)擊下頁還有更多>>>linux內(nèi)存管理論文

2457214