




已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
計(jì)算機(jī)操作系統(tǒng)課程小論文計(jì)算機(jī)操作系統(tǒng)課程小論文 Linux 內(nèi)存管理機(jī)制內(nèi)存管理機(jī)制 姓名 汪青松姓名 汪青松 班級(jí)班級(jí) 10 網(wǎng)絡(luò)工程網(wǎng)絡(luò)工程 1 班班 學(xué)號(hào) 學(xué)號(hào) 1004031010 Linux 內(nèi)存管理機(jī)制內(nèi)存管理機(jī)制 班級(jí) 10 級(jí)網(wǎng)絡(luò)工程 1 班 姓名 汪青松 學(xué)號(hào) 1004031010 一 一 概述概述 現(xiàn)代操作系統(tǒng)允許多個(gè)程序同時(shí)運(yùn)行 因此 內(nèi)存中需要同時(shí)存放這些程序 操作系統(tǒng)采用的存儲(chǔ)管理方案有分區(qū)存儲(chǔ)管理 分頁(yè)式存儲(chǔ)管理 分段式存儲(chǔ) 管理和段頁(yè)式存儲(chǔ)管理 在 Linux 平臺(tái)上 多任務(wù)運(yùn)行是不可或缺的 在合理的進(jìn)程調(diào)度算法控制 下還得合理的管理內(nèi)存機(jī)制 除了在物理內(nèi)存的支持下 Linux 還得借助虛擬 內(nèi)存等來(lái)容納更多的程序運(yùn)行 沒(méi)有足夠的內(nèi)存空間來(lái)供程序運(yùn)行 機(jī)器則會(huì) 出現(xiàn)假死機(jī) 服務(wù)異常等問(wèn)題 如果 Linux 雖然可以在一段時(shí)間內(nèi)自行恢復(fù) 但是恢復(fù)后的系統(tǒng)已經(jīng)基本不可用了 因此 合理規(guī)劃和設(shè)計(jì) Linux 內(nèi)存的使 用 是非常重要的 二 二 LinuxLinux 下內(nèi)存管理框架下內(nèi)存管理框架 在 Linux 中對(duì)于內(nèi)存的管理涉及到 頁(yè)面管理 連續(xù)內(nèi)存區(qū)管理和非連續(xù) 存儲(chǔ)區(qū)管理 而對(duì)于內(nèi)存管理的方式通常為直接使用 使用 slab 分配器和使用 非連續(xù)的存儲(chǔ)區(qū) 其 Linux 采用頁(yè)作為內(nèi)存管理的基本單位 其采用的標(biāo)準(zhǔn)的頁(yè)面大小為 4KB 采用三次映射機(jī)制實(shí)現(xiàn)從線性地址到物理地址的映射 Linux 內(nèi)核使用頁(yè)描述 符來(lái)跟蹤和管理物理內(nèi)存 每個(gè)物理頁(yè)面都用一個(gè)頁(yè)描述符表示 頁(yè)描述符用 struct page 的結(jié)構(gòu)描述 所有物理頁(yè)面的描述符組織在 men map 數(shù)組中 page 則是對(duì)物理頁(yè)面描述的一個(gè)數(shù)據(jù)結(jié)構(gòu)Linux 采用 buddy 算法來(lái)解決內(nèi)存的碎片 問(wèn)題 三 三 LinuxLinux 對(duì)虛擬內(nèi)存的管理對(duì)虛擬內(nèi)存的管理 在 Linux 中經(jīng)常發(fā)現(xiàn)空閑內(nèi)存很少 似乎所有的內(nèi)存都被系統(tǒng)占用了 表 面感覺(jué)是內(nèi)存不夠用了 其實(shí)不然 這是 Linux 內(nèi)存管理的一個(gè)優(yōu)秀特性 在 這方面 區(qū)別于 Windows 的內(nèi)存管理 主要特點(diǎn)是 無(wú)論物理內(nèi)存有多大 Linux 都將其充份利用 將一些程序調(diào)用過(guò)的硬盤(pán)數(shù)據(jù)讀入內(nèi)存 利用內(nèi)存讀 寫(xiě)的高速特性來(lái)提高 Linux 系統(tǒng)的數(shù)據(jù)訪問(wèn)性能 而 Windows 是只在需要內(nèi)存 時(shí) 才為應(yīng)用程序分配內(nèi)存 并不能充分利用大容量的內(nèi)存空間 換句話說(shuō) 每增加一些物理內(nèi)存 Linux 都將能充分利用起來(lái) 發(fā)揮了硬件投資帶來(lái)的好 處 而 Windows 只將其做為擺設(shè) 即使增加 8GB 甚至更大 Linux 的這一特性 主要是利用空閑的物理內(nèi)存 劃分出一部份空間 做為 cache 和 buffers 以此提高數(shù)據(jù)訪問(wèn)性能 從而引出物理內(nèi)存的特性 對(duì)于從物理內(nèi)存中虛擬出來(lái)的內(nèi)存可以解決內(nèi)存容量的問(wèn)題 還擁有許多 的附加功能 諸如大地址空間 進(jìn)程保護(hù) 內(nèi)存映射 靈活分配物理內(nèi)存 共 享虛擬內(nèi)存等 Linux 對(duì)于虛擬內(nèi)存的管理以進(jìn)程為基礎(chǔ) 如 32 位的線性進(jìn)程映射到 4Gb 的虛擬空間中去 從 0XC0000000 到 0XFFFFFFFF 的 1Gb 空間為所用進(jìn)程所共享 的內(nèi)核空間 每個(gè)進(jìn)程都有自己的 3Gb 用戶空間 四 四 LinuxLinux 對(duì)物理內(nèi)存的管理對(duì)物理內(nèi)存的管理 在 Linux 中對(duì)于物理內(nèi)存的管理主要是通過(guò)頁(yè)面的方式 一 一 物理內(nèi)存的頁(yè)面管理 物理內(nèi)存的頁(yè)面管理 在內(nèi)存基本框架中已經(jīng)提起 Linux 對(duì)于物理內(nèi)存的空間主要是通過(guò)分頁(yè)的 方式來(lái)進(jìn)行管理的 其具體做法就是將物理內(nèi)存劃分成大小相同的物理頁(yè)面 在 X86 平臺(tái)下每個(gè)頁(yè)面的大小為 4KB 4KB 是大多數(shù)磁盤(pán)塊大小的倍數(shù) 傳輸效 率高 管理方便 Linux 設(shè)置了一個(gè) mem map 數(shù)組管理內(nèi)存頁(yè)面 它開(kāi)始時(shí)由 free area init 來(lái)初始化創(chuàng)建 并且放在物理內(nèi)存的底部 圖一 mem map 數(shù)組結(jié)構(gòu) 圖二 Buddy 算法 2 2 空閑頁(yè)面的管理 空閑頁(yè)面的管理 BuddyBuddy 算法 算法 Buddy 的基本思想是 首先把內(nèi)存中的所有頁(yè)面按照 2n 劃分其中 n 0 5 對(duì)一個(gè)內(nèi)存空間按 1 個(gè)頁(yè)面 2 個(gè)頁(yè)面 4 個(gè)頁(yè)面 8 個(gè)頁(yè)面 16 個(gè)頁(yè)面 32 個(gè)頁(yè)面進(jìn)行六次劃分 劃分后形成了大小不等的存儲(chǔ)塊稱為頁(yè)面塊 簡(jiǎn)稱頁(yè)塊 包含 1 個(gè)頁(yè)面的頁(yè)塊稱為 1 頁(yè)塊 包含 2 個(gè)頁(yè)面的稱為 2 頁(yè)塊 依此類推 Linux 把物理內(nèi)存劃分成了 1 2 4 8 16 32 六種頁(yè)塊 對(duì)于每種頁(yè)面塊按 前后順序兩兩結(jié)合成一對(duì) Buddy 伙伴 按照 1 頁(yè)面劃分后 0 和 1 頁(yè) 2 和 3 頁(yè) 是 1 頁(yè)塊 Buddy 按照 2 頁(yè)面劃分 0 1 和 2 3 4 5 和 6 7 是 2 頁(yè) 塊 BuddyLinux 把空閑的頁(yè)面按照頁(yè)塊大小分組進(jìn)行管理 用數(shù)組 free area 來(lái) 管理各個(gè)空閑頁(yè)塊組 在在 linux mm page alloc clinux mm page alloc c 中定義如下 中定義如下 define NR MEN LIST 6 Static struct free area struct free men NR MEN LIST Struct free area struct Struct page next Struct page prev Unsigned int map 五 五 內(nèi)存空間的分配和釋放內(nèi)存空間的分配和釋放 一 一 物理內(nèi)存分配 物理內(nèi)存分配 Linux 中在申請(qǐng)和釋放較小的內(nèi)存時(shí) 使用 kmalloc 和 kfree 在物理內(nèi) 存中進(jìn)行分配 這些內(nèi)存是實(shí)際存在的 并且是連續(xù)的 并且是根據(jù) slab 塊來(lái) 分配 kmalloc 和 kfree 分配和釋放內(nèi)存是以塊 block 為單位進(jìn)行的 可以分配的空閑塊的大小記錄在 blocksize 表中 它是一個(gè)靜態(tài)數(shù)組 定義在 mm kmalloc c 中 在使用 kmalloc 分配空閑塊時(shí)仍以 Buddy 算法為基礎(chǔ) 即以 free area 管理的空閑頁(yè)面塊做為分配對(duì)象 重新制定了分配的單位 blocksize 數(shù)組中的塊長(zhǎng)度 它可以分配比 1 個(gè)頁(yè)面更小的內(nèi)存空間 blocksize 中的前 7 個(gè)是在 1 個(gè)空閑頁(yè)面內(nèi)進(jìn)行分配 其后的 6 種分別對(duì)應(yīng) free area 的 1 至 32 空閑頁(yè)面塊 當(dāng)申請(qǐng)分配的空間小于或等于 1 個(gè)頁(yè)面時(shí) 從 free area 管理的 1 頁(yè)面塊中查找空閑頁(yè)面進(jìn)行分配 若申請(qǐng)的空間大于 一個(gè)頁(yè)面時(shí) 按照 blocksize 后六個(gè)塊單位進(jìn)行申請(qǐng) 從 free area 中與該 塊長(zhǎng)度對(duì)應(yīng)的空閑頁(yè)塊組中查找空閑頁(yè)面塊 Free areaFree area 數(shù)組定義如下 數(shù)組定義如下 Typedef struct free area struct Struct list head free list Unsigned int map free area t 二 二 虛擬內(nèi)存分配 虛擬內(nèi)存分配 在分配在物理申請(qǐng)較大的內(nèi)存空間時(shí) 使用 vmalloc 由 vmalloc 申請(qǐng) 的內(nèi)存空間在虛擬內(nèi)存中是連續(xù)的 它們映射到在物理內(nèi)存時(shí) 可以使用不連 續(xù)的物理頁(yè)面 而且僅把當(dāng)前訪問(wèn)的部分放在物理頁(yè)面中 VmallocVmalloc 申請(qǐng)內(nèi)存如下 申請(qǐng)內(nèi)存如下 define A MEGABYTE 1024 1024 int main char some memery int megabyte A MEGABYTE int exit code EXIT FAILURE some memery char valloc megabyte 申請(qǐng)內(nèi)存 if some memery NULL sprintf some memery Hello world n 將字符串寫(xiě)入 some memery 所 指向內(nèi)存 printf s some memery free some memery 釋放內(nèi)存 printf memery is free n exit code EXIT SUCCESS exit exit code 六 六 緩存和刷新機(jī)制緩存和刷新機(jī)制 在 Linux 中除了引入虛擬內(nèi)存的概念外 在前面也提及了高速緩存的概念 為了更好的呃發(fā)揮系統(tǒng)性能 Linux 采用了一系列和內(nèi)存相關(guān)的機(jī)制 1 1 緩存區(qū)高速緩存 緩存區(qū)高速緩存 包含了從設(shè)備中讀取的數(shù)據(jù)塊或?qū)懭朐O(shè)備的數(shù)據(jù) 塊 緩沖區(qū)高速緩存由設(shè)備標(biāo)示號(hào)和塊索引 因此可以快速找到數(shù)據(jù)塊 如果 數(shù)據(jù)可以在緩沖區(qū)中高速緩存中找到 則不需要從物理塊設(shè)備上讀取 從而加 快了訪問(wèn)速度 2 頁(yè)高速緩存 頁(yè)高速緩存 這一高速緩存用來(lái)加速對(duì)磁盤(pán)上的映像和數(shù)據(jù)訪問(wèn) 它用來(lái)緩存某個(gè)文件的邏輯內(nèi)容 并通過(guò)文件 VFS 索引節(jié)點(diǎn)和偏移量訪問(wèn) 當(dāng) 頁(yè)從磁盤(pán)讀到物理內(nèi)存時(shí) 就緩存在頁(yè)高速緩存 3 交換高速緩存 交換高速緩存 用于多個(gè)近程共享的頁(yè)面被換出到交換區(qū)的情況 當(dāng)頁(yè)面交換到交換文件之后 如果有進(jìn)程再次訪問(wèn) 它會(huì)被重新調(diào)入內(nèi)存 Linux 需要從物理內(nèi)存中交換出某個(gè)頁(yè)面時(shí) 它首先分析交換緩存中的信息 如果緩存中包含該物理頁(yè)面的一個(gè)非零頁(yè)面表項(xiàng) 則說(shuō)明該頁(yè)面交換出內(nèi)存后 還沒(méi)有被修改過(guò) 這時(shí) 系統(tǒng)只需丟棄該頁(yè)面 概括下就是我們提到的 cached buffers 和 swap buffers 與 cached 都是 內(nèi)存操作 用來(lái)保存系統(tǒng)曾經(jīng)打開(kāi)過(guò)的文件以及文件屬性信息 這樣當(dāng)操作系 統(tǒng)需要讀取某些文件時(shí) 會(huì)首先在 buffers 與 cached 內(nèi)存區(qū)查找 如果找到 直接讀出傳送給應(yīng)用程序 如果沒(méi)有找到需要數(shù)據(jù) 才從磁盤(pán)讀取 這就是操 作系統(tǒng)的緩存機(jī)制 通過(guò)緩存 大大提高了操作系統(tǒng)的性能 但 buffers 與 cached 緩沖的內(nèi)容卻是不同的 buffers 是用來(lái)緩沖塊設(shè)備做的 它只記錄文 件系統(tǒng)的元數(shù)據(jù) 而 cached 是用來(lái)給文件做緩沖 更通俗一點(diǎn)說(shuō) buffers 主 要用來(lái)存放目錄里面有什么內(nèi)容 文件的屬性以及權(quán)限等等 而 cached 直接 用來(lái)記憶我們打開(kāi)過(guò)的文件和程序 這里給出有關(guān)交換緩存的部分函數(shù)及功能 位于 linux mm swap state c 中 七 七 總結(jié)總結(jié) Linux作為一款免費(fèi) 開(kāi)源高效的操作系統(tǒng) 是近年來(lái)使用比較多的一款操 作系統(tǒng) 也應(yīng)用于各個(gè)行業(yè) 在全世界范圍內(nèi)也有一大批愛(ài)好者 由于簡(jiǎn)單 巧妙和高效是Linux內(nèi)核的原則 從而在Linux的發(fā)展過(guò)程中需要不斷完善和優(yōu) 化內(nèi)存的管理單元的功能和性能 針對(duì)某些特殊和具體的領(lǐng)域和行業(yè) 還可以 根據(jù)自己
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 經(jīng)濟(jì)型酒店的國(guó)際化發(fā)展策略考核試卷
- 稀土元素在石油化工催化劑中的應(yīng)用考核試卷
- 自動(dòng)搬運(yùn)設(shè)備在半導(dǎo)體生產(chǎn)線的作用考核試卷
- 跨境人民幣資金池業(yè)務(wù)合作協(xié)議
- 物流貨物保險(xiǎn)理賠流程服務(wù)合同
- 零售行業(yè)智能攝像頭租賃與商品追溯服務(wù)協(xié)議
- 智能門鎖配置安裝與定期檢修服務(wù)條款
- 工業(yè)廢水回用與水資源綜合利用合作協(xié)議
- 考研保過(guò)班協(xié)議全面輔導(dǎo)與考試技巧提升合同
- 智能家居影視廣告拍攝與市場(chǎng)推廣服務(wù)合同
- EBSD初級(jí)原理和簡(jiǎn)單應(yīng)用
- ICU成人患者靜脈血管通路裝置評(píng)估與選
- DL∕T 2447-2021 水電站防水淹廠房安全檢查技術(shù)規(guī)程
- 球閥設(shè)計(jì)計(jì)算書(shū)
- 2024年6月29日四川省地市州事業(yè)單位選調(diào)筆試真題及解析
- 12月改革大學(xué)英語(yǔ)四級(jí)聽(tīng)力技巧省公開(kāi)課金獎(jiǎng)全國(guó)賽課一等獎(jiǎng)微課獲獎(jiǎng)?wù)n件
- 餐飲服務(wù)外包食堂衛(wèi)生管理方案
- 綠色設(shè)計(jì)產(chǎn)品評(píng)價(jià)技術(shù)規(guī)范 粉末冶金氣門座
- 醫(yī)用高分子材料行業(yè)發(fā)展趨勢(shì)
- 2024年醫(yī)學(xué)高級(jí)職稱-皮膚與性病學(xué)(醫(yī)學(xué)高級(jí))歷年考試高頻考點(diǎn)試題附帶答案
- 中國(guó)公民健康素養(yǎng)66條知識(shí)講座課件
評(píng)論
0/150
提交評(píng)論