當前位置:學問君>學習教育>畢業論文>

進程地址空間數據採集系統的設計與實現

學問君 人氣:1.58W
畢業論文

目錄
前言 1
1 存儲器管理 3
1.1 存儲器地址 3
1.2 分頁機制 4
1.2.1 常規分頁 4
1.2.2 Linux中的分頁 5
1.3 頁幀管理 6
1.3.1 頁描述符 6
1.3.2 宏描述 7
1.4 區管理 8
2 進程管理及地址空間 9
2.1 進程管理 9
2.1.1 進程描述符 9
2.1.2 任務結構 9
2.2 進程地址空間 10
2.2.1 內存描述符 10
2.2.2 內存區域 12
2.2.3 頁表 12
3 內核開發 15
3.1 Linux內核簡介 15
3.1.1 內核版本 15
3.1.2 內核原始碼組成 15
3.2 2.6內核編譯 16
3.2.1 準備工作 16
3.2.2 編譯 16
3.3 內核模組編程 17
3.3.1簡單的模組編程 17
3.3.2 模組參數 20
3.4 用戶空間與內核空間數據交換 20
3.4.1 procfs 21
3.4.2 seq_file 22
4 Qt開發簡介 26
4.1 Qt簡介 26
4.2 開發簡介 26
5 進程地址空間的數據採集系統設計與實現 31
5.1 應用環境 31
5.2 需求分析 31
5.3 系統設計 32
5.3.1 總體設計 32
5.3.2 詳細設計 33
5.4 系統實現 39
5.4.1 數據採集的實現 39
5.4.2 接口實現 40
5.4.3 用戶態應用程序實現 43
6 結論 47
參考文獻 48
致謝 49

進程地址空間數據採集系統的設計與實現

進程地址空間數據採集系統的設計與實現

摘要:虛擬存儲管理技術已被廣泛地應用於現代操作系統中。在當今的教學中它被作爲存儲器管理的重點部分,但是多數教材只是從理論上加以分析介紹,缺乏實例,導致學生感性認識不足。
在採取分頁機制的操作系統中,透過頁表實現進程虛擬頁到物理頁幀的動態映射。本論文設計與實現了進程地址空間的數據採集系統,可以動態跟蹤進程頁表資訊,反映虛擬存儲器的行爲特徵。該系統基於Linux操作系統,硬件體系結構爲IA32。
    首先,本文實現了採集內核態進程地址空間數據的內核可加載模組,其次設計seq_file接口實現內核數據的輸出,然後在應用層利用Qt開發對用戶友好的可視化介面。系統在Linux 2.6.9和2.6.11內核上執行成功,該系統1定程度上將彌補高校操作系統教學的不足。
關鍵詞:Linux內核模組;存儲器管理;進程地址空間;seq_file接口;Qt開發

Design and Implementation of Data Collection System for Process Address Space

Abstract: The virtual memory management technology has been applied widely in modern operating systems. In the today’s teaching it is the key part of memory management. But most textbooks introduce the virtual memory theoretically and lack the real examples. The result is that students are short of perceptual knowledge of virtual memory.
In paging-based operating systems, process page table maintains mappings of virtual pages onto physical frames dynamically. Based on IA32 Linux, this dissertation implements a data collection system for process address space. The system might track process page table information dynamically, and reflects the behavior of virtual memory.
Firstly, this dissertation implements the kernel module to collect the process address space’s data. Secondly, seq_file interface is used to output the kernel data. Finally, by using Qt development tool, a GUI application is created to supply friendly interfaces for users. The system has run successfully in the Linux 2.6.9 and 2.6.11, which will improve operating system teaching in some degree.
Keywords: Linux kernel module; memory management; process address space; seq_file interface; Qt development
 
前言
操作系統控制應用程序的執行,所有多道程序操作系統的創建都圍繞進程的概念。操作系統必須交替地執行多個進程,管理分配給進程的資源。存儲器是進程的重要資源之1,有效地給進程分配存儲器,在多任務的操作系統中是至關重要的。如果僅僅只有少數進程在存儲器中,那麼多數時間所有進程都在等待I/O,處理器也處於空閒狀態。現代操作系統廣泛地採用虛擬存儲管理技術,主要功能是從邏輯上擴充內存的容量,讓更多的進程裝入存儲器,從而提高CPU的利用率。Linux操作系統管理虛擬內存的部分稱爲虛擬存儲管理子系統,它是1個重要的子系統。
進程的地址空間是系統中每個用戶空間進程所看到的內存,它由線性地址區組成。在採取分頁機制的操作系統中,進程的線性地址空間被劃分爲若干大小固定的'區間,稱爲頁。相應地,存儲器也被劃分爲大小固定的塊,稱爲頁幀。進程的頁是虛擬頁,頁幀是物理頁。進程虛擬頁到物理頁幀的映射是透過頁表動態實現的。
在當今的教學中虛擬存取器的管理被作爲存儲器管理的重點部分,但是多數教材只是從理論上加以分析介紹,缺乏實例,導致學生感性認識不足。
Linux 操作系統是UNIX 操作系統的1種克隆系統。它誕生於1991 年的10 月5 日(這是第1次正式向外公佈的時間)。以後藉助於Internet 網絡,並經過全世界各地計算機愛好者的共同努力下,現已成爲今天世界上使用最多的1種UNIX 類操作系統,並且使用人數還在迅猛增長。Linux發展可以分爲3類:服務器端、桌面和嵌入式領域。在桌面領域,Windows 佔有絕對優勢,其友好的介面、易操作性和多種多樣的應用程序是Linux所匱乏的,Linux的長處在於服務器端和嵌入式兩個方向。Linux操作系統作爲發佈軟件,正如Robert Love所言:“Linux是1個非商業化的產品,這是它最讓人感興趣的特徵”[1],它是個免費軟件(Freeware)。其次,它還是個自由軟件(Freeware或Freesoftware),任何用戶都有權使用、拷貝、擴散、修改。Linux的這種開源特性,可以讓任何人修