已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
計算機操作系統(tǒng)課程小論文計算機操作系統(tǒng)課程小論文 Linux 內(nèi)存管理機制內(nèi)存管理機制 姓名 汪青松姓名 汪青松 班級班級 10 網(wǎng)絡(luò)工程網(wǎng)絡(luò)工程 1 班班 學號 學號 1004031010 Linux 內(nèi)存管理機制內(nèi)存管理機制 班級 10 級網(wǎng)絡(luò)工程 1 班 姓名 汪青松 學號 1004031010 一 一 概述概述 現(xiàn)代操作系統(tǒng)允許多個程序同時運行 因此 內(nèi)存中需要同時存放這些程序 操作系統(tǒng)采用的存儲管理方案有分區(qū)存儲管理 分頁式存儲管理 分段式存儲 管理和段頁式存儲管理 在 Linux 平臺上 多任務(wù)運行是不可或缺的 在合理的進程調(diào)度算法控制 下還得合理的管理內(nèi)存機制 除了在物理內(nèi)存的支持下 Linux 還得借助虛擬 內(nèi)存等來容納更多的程序運行 沒有足夠的內(nèi)存空間來供程序運行 機器則會 出現(xiàn)假死機 服務(wù)異常等問題 如果 Linux 雖然可以在一段時間內(nèi)自行恢復 但是恢復后的系統(tǒng)已經(jīng)基本不可用了 因此 合理規(guī)劃和設(shè)計 Linux 內(nèi)存的使 用 是非常重要的 二 二 LinuxLinux 下內(nèi)存管理框架下內(nèi)存管理框架 在 Linux 中對于內(nèi)存的管理涉及到 頁面管理 連續(xù)內(nèi)存區(qū)管理和非連續(xù) 存儲區(qū)管理 而對于內(nèi)存管理的方式通常為直接使用 使用 slab 分配器和使用 非連續(xù)的存儲區(qū) 其 Linux 采用頁作為內(nèi)存管理的基本單位 其采用的標準的頁面大小為 4KB 采用三次映射機制實現(xiàn)從線性地址到物理地址的映射 Linux 內(nèi)核使用頁描述 符來跟蹤和管理物理內(nèi)存 每個物理頁面都用一個頁描述符表示 頁描述符用 struct page 的結(jié)構(gòu)描述 所有物理頁面的描述符組織在 men map 數(shù)組中 page 則是對物理頁面描述的一個數(shù)據(jù)結(jié)構(gòu)Linux 采用 buddy 算法來解決內(nèi)存的碎片 問題 三 三 LinuxLinux 對虛擬內(nèi)存的管理對虛擬內(nèi)存的管理 在 Linux 中經(jīng)常發(fā)現(xiàn)空閑內(nèi)存很少 似乎所有的內(nèi)存都被系統(tǒng)占用了 表 面感覺是內(nèi)存不夠用了 其實不然 這是 Linux 內(nèi)存管理的一個優(yōu)秀特性 在 這方面 區(qū)別于 Windows 的內(nèi)存管理 主要特點是 無論物理內(nèi)存有多大 Linux 都將其充份利用 將一些程序調(diào)用過的硬盤數(shù)據(jù)讀入內(nèi)存 利用內(nèi)存讀 寫的高速特性來提高 Linux 系統(tǒng)的數(shù)據(jù)訪問性能 而 Windows 是只在需要內(nèi)存 時 才為應用程序分配內(nèi)存 并不能充分利用大容量的內(nèi)存空間 換句話說 每增加一些物理內(nèi)存 Linux 都將能充分利用起來 發(fā)揮了硬件投資帶來的好 處 而 Windows 只將其做為擺設(shè) 即使增加 8GB 甚至更大 Linux 的這一特性 主要是利用空閑的物理內(nèi)存 劃分出一部份空間 做為 cache 和 buffers 以此提高數(shù)據(jù)訪問性能 從而引出物理內(nèi)存的特性 對于從物理內(nèi)存中虛擬出來的內(nèi)存可以解決內(nèi)存容量的問題 還擁有許多 的附加功能 諸如大地址空間 進程保護 內(nèi)存映射 靈活分配物理內(nèi)存 共 享虛擬內(nèi)存等 Linux 對于虛擬內(nèi)存的管理以進程為基礎(chǔ) 如 32 位的線性進程映射到 4Gb 的虛擬空間中去 從 0XC0000000 到 0XFFFFFFFF 的 1Gb 空間為所用進程所共享 的內(nèi)核空間 每個進程都有自己的 3Gb 用戶空間 四 四 LinuxLinux 對物理內(nèi)存的管理對物理內(nèi)存的管理 在 Linux 中對于物理內(nèi)存的管理主要是通過頁面的方式 一 一 物理內(nèi)存的頁面管理 物理內(nèi)存的頁面管理 在內(nèi)存基本框架中已經(jīng)提起 Linux 對于物理內(nèi)存的空間主要是通過分頁的 方式來進行管理的 其具體做法就是將物理內(nèi)存劃分成大小相同的物理頁面 在 X86 平臺下每個頁面的大小為 4KB 4KB 是大多數(shù)磁盤塊大小的倍數(shù) 傳輸效 率高 管理方便 Linux 設(shè)置了一個 mem map 數(shù)組管理內(nèi)存頁面 它開始時由 free area init 來初始化創(chuàng)建 并且放在物理內(nèi)存的底部 圖一 mem map 數(shù)組結(jié)構(gòu) 圖二 Buddy 算法 2 2 空閑頁面的管理 空閑頁面的管理 BuddyBuddy 算法 算法 Buddy 的基本思想是 首先把內(nèi)存中的所有頁面按照 2n 劃分其中 n 0 5 對一個內(nèi)存空間按 1 個頁面 2 個頁面 4 個頁面 8 個頁面 16 個頁面 32 個頁面進行六次劃分 劃分后形成了大小不等的存儲塊稱為頁面塊 簡稱頁塊 包含 1 個頁面的頁塊稱為 1 頁塊 包含 2 個頁面的稱為 2 頁塊 依此類推 Linux 把物理內(nèi)存劃分成了 1 2 4 8 16 32 六種頁塊 對于每種頁面塊按 前后順序兩兩結(jié)合成一對 Buddy 伙伴 按照 1 頁面劃分后 0 和 1 頁 2 和 3 頁 是 1 頁塊 Buddy 按照 2 頁面劃分 0 1 和 2 3 4 5 和 6 7 是 2 頁 塊 BuddyLinux 把空閑的頁面按照頁塊大小分組進行管理 用數(shù)組 free area 來 管理各個空閑頁塊組 在在 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 中在申請和釋放較小的內(nèi)存時 使用 kmalloc 和 kfree 在物理內(nèi) 存中進行分配 這些內(nèi)存是實際存在的 并且是連續(xù)的 并且是根據(jù) slab 塊來 分配 kmalloc 和 kfree 分配和釋放內(nèi)存是以塊 block 為單位進行的 可以分配的空閑塊的大小記錄在 blocksize 表中 它是一個靜態(tài)數(shù)組 定義在 mm kmalloc c 中 在使用 kmalloc 分配空閑塊時仍以 Buddy 算法為基礎(chǔ) 即以 free area 管理的空閑頁面塊做為分配對象 重新制定了分配的單位 blocksize 數(shù)組中的塊長度 它可以分配比 1 個頁面更小的內(nèi)存空間 blocksize 中的前 7 個是在 1 個空閑頁面內(nèi)進行分配 其后的 6 種分別對應 free area 的 1 至 32 空閑頁面塊 當申請分配的空間小于或等于 1 個頁面時 從 free area 管理的 1 頁面塊中查找空閑頁面進行分配 若申請的空間大于 一個頁面時 按照 blocksize 后六個塊單位進行申請 從 free area 中與該 塊長度對應的空閑頁塊組中查找空閑頁面塊 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)存分配 在分配在物理申請較大的內(nèi)存空間時 使用 vmalloc 由 vmalloc 申請 的內(nèi)存空間在虛擬內(nèi)存中是連續(xù)的 它們映射到在物理內(nèi)存時 可以使用不連 續(xù)的物理頁面 而且僅把當前訪問的部分放在物理頁面中 VmallocVmalloc 申請內(nèi)存如下 申請內(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 申請內(nèi)存 if some memery NULL sprintf some memery Hello world n 將字符串寫入 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 六 六 緩存和刷新機制緩存和刷新機制 在 Linux 中除了引入虛擬內(nèi)存的概念外 在前面也提及了高速緩存的概念 為了更好的呃發(fā)揮系統(tǒng)性能 Linux 采用了一系列和內(nèi)存相關(guān)的機制 1 1 緩存區(qū)高速緩存 緩存區(qū)高速緩存 包含了從設(shè)備中讀取的數(shù)據(jù)塊或?qū)懭朐O(shè)備的數(shù)據(jù) 塊 緩沖區(qū)高速緩存由設(shè)備標示號和塊索引 因此可以快速找到數(shù)據(jù)塊 如果 數(shù)據(jù)可以在緩沖區(qū)中高速緩存中找到 則不需要從物理塊設(shè)備上讀取 從而加 快了訪問速度 2 頁高速緩存 頁高速緩存 這一高速緩存用來加速對磁盤上的映像和數(shù)據(jù)訪問 它用來緩存某個文件的邏輯內(nèi)容 并通過文件 VFS 索引節(jié)點和偏移量訪問 當 頁從磁盤讀到物理內(nèi)存時 就緩存在頁高速緩存 3 交換高速緩存 交換高速緩存 用于多個近程共享的頁面被換出到交換區(qū)的情況 當頁面交換到交換文件之后 如果有進程再次訪問 它會被重新調(diào)入內(nèi)存 Linux 需要從物理內(nèi)存中交換出某個頁面時 它首先分析交換緩存中的信息 如果緩存中包含該物理頁面的一個非零頁面表項 則說明該頁面交換出內(nèi)存后 還沒有被修改過 這時 系統(tǒng)只需丟棄該頁面 概括下就是我們提到的 cached buffers 和 swap buffers 與 cached 都是 內(nèi)存操作 用來保存系統(tǒng)曾經(jīng)打開過的文件以及文件屬性信息 這樣當操作系 統(tǒng)需要讀取某些文件時 會首先在 buffers 與 cached 內(nèi)存區(qū)查找 如果找到 直接讀出傳送給應用程序 如果沒有找到需要數(shù)據(jù) 才從磁盤讀取 這就是操 作系統(tǒng)的緩存機制 通過緩存 大大提高了操作系統(tǒng)的性能 但 buffers 與 cached 緩沖的內(nèi)容卻是不同的 buffers 是用來緩沖塊設(shè)備做的 它只記錄文 件系統(tǒng)的元數(shù)據(jù) 而 cached 是用來給文件做緩沖 更通俗一點說 buffers 主 要用來存放目錄里面有什么內(nèi)容 文件的屬性以及權(quán)限等等 而 cached 直接 用來記憶我們打開過的文件和程序 這里給出有關(guān)交換緩存的部分函數(shù)及功能 位于 linux mm swap state c 中 七 七 總結(jié)總結(jié) Linux作為一款免費 開源高效的操作系統(tǒng) 是近年來使用比較多的一款操 作系統(tǒng) 也應用于各個行業(yè) 在全世界范圍內(nèi)也有一大批愛好者 由于簡單 巧妙和高效是Linux內(nèi)核的原則 從而在Linux的發(fā)展過程中需要不斷完善和優(yōu) 化內(nèi)存的管理單元的功能和性能 針對某些特殊和具體的領(lǐng)域和行業(yè) 還可以 根據(jù)自己
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代辦公家具的環(huán)保理念與可持續(xù)發(fā)展
- 現(xiàn)代生活節(jié)奏下的胃腸疾病預防教育
- 生產(chǎn)制造中的綠色技術(shù)升級路徑與策略
- 基坑施工安全專項方案
- 現(xiàn)代服務(wù)業(yè)的發(fā)展趨勢及投資策略研究
- 生產(chǎn)安全監(jiān)督與危機管理一體化建設(shè)
- 生態(tài)農(nóng)業(yè)發(fā)展對商業(yè)模式的創(chuàng)新影響
- 現(xiàn)代農(nóng)業(yè)機械設(shè)備智能化國際對比研究
- 2024-2025學年高中生物 專題5 課題1 DNA的粗提取與鑒定說課稿 新人教版選修1
- 9 生活離不開他們 第一課時 說課稿-2023-2024學年道德與法治四年級下冊統(tǒng)編版001
- 中國城市居民的健康意識和生活方式調(diào)研分析報告
- 上海星巴克員工手冊
- 復產(chǎn)復工試題含答案
- 部編版語文三年級下冊第六單元大單元整體作業(yè)設(shè)計
- 售后服務(wù)經(jīng)理的競聘演講
- 新概念英語第2冊課文(完整版)
- 慢加急性肝衰竭護理查房課件
- 文件丟失應急預案
- 全球職等系統(tǒng)GGS職位評估手冊
- 云南華葉投資公司2023年高校畢業(yè)生招聘1人筆試參考題庫(共500題)答案詳解版
- 專項法律意見書(私募基金管理人重大事項變更)-詳細版
評論
0/150
提交評論