




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、-作者xxxx-日期xxxx統(tǒng)計缺頁次數(shù)【精品文檔】統(tǒng)計操作系統(tǒng)缺頁次數(shù)實驗目的學習虛擬內存的基本原理和Linux虛擬內存管理技術;深入理解、掌握Linux的按需調頁過程;掌握內核模塊的概念和操作方法,和向/proc文件系統(tǒng)中增加文件的方法;綜合運用內存管理、系統(tǒng)調用、proc文件系統(tǒng)、內核編譯的知識。實驗內容Linux的虛擬內存技術采用按需調頁,當CPU請求一個不在內存中的頁面時,會發(fā)生缺頁,缺頁被定義為一種異常(缺頁異常),會觸發(fā)缺頁中斷處理流程。每種CPU結構都提供一個do_page_fault處理缺頁中斷。由于每發(fā)生一次缺頁都要進入缺頁中斷服務函數(shù)do_page_fault一次,所以可
2、以認為執(zhí)行該函數(shù)的次數(shù)就是系統(tǒng)發(fā)生缺頁的次數(shù)。因此可以定義一個全局變量pfcount 作為計數(shù)變量,在執(zhí)行do_page_fault時,該變量值加1。本實驗通過動態(tài)加載模塊的方法,利用/proc文件系統(tǒng)作為中介來獲取該值。2.實驗環(huán)境 操作系統(tǒng):Ubuntu 12.04(內核版本為-23-generic-pae)內核源碼:linux-3.2.58實驗指導1. 下載一份內核源代碼并解壓Linux受GNU通用公共許可證(GPL)保護,其內核源代碼是完全開放的?,F(xiàn)在很多Linux的網站都提供內核代碼的下載。推薦使用Linux的官方網站:。圖1 Linux的官方網站在terminal下可以通過wget
3、命令下載源代碼:$ cd /tmp$ wget htt切換到root身份,解壓源代碼到/usr/src目錄下:# xz d linux-3.2.58# tar xvf linux-3.2.58.tar C /usr/src2. 修改內核源代碼,添加統(tǒng)計變量1、切換到預編譯內核目錄#cd /usr/src/linux-2、修改處理內存訪問異常的代碼/用vi編輯器打開fault.c,一般使用Intel x86體系結構,則修改arch/x86/目錄下的文件/在do_page_fault函數(shù)的上一行定義統(tǒng)計缺頁次數(shù)的全局變量pfcountunsigned long volatile pfcount;/
4、將pfcount加入到do_page_fault中,用以統(tǒng)計缺頁次數(shù)pfcount+;3、修改內存管理代碼全局變量pfcount的聲明,代碼加在extern int page_cluster;語句之后extern unsigned long volatile pfcount;4、導出pfcount全局變量,讓整個內核(包括模塊)都可以訪問。方法是:/在文件最后加入一行代碼EXPORT_SYMBOL(pfcount);3. 配置編譯新內核用編譯Linux內核預備實驗中的方法完成新內核的配置、編譯、替換,重啟后驗證是否完成替換。#uname r /如果為(與你采用的新內核版本一至)說明替換完成4.
5、 編寫讀取pfcount值的模塊代碼系統(tǒng)重啟后,執(zhí)行如下操作:#mkdir source /在當前用戶目錄下創(chuàng)建source文件夾,用于存放編寫的用戶程序#cd source /切換到source目錄#vi pf.c /新建用于構建模塊的代碼-/*pf.c*/ /*modules program*/#include <linux/init.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/mm.h>#include <linux/proc_fs.h>
6、#include <linux/string.h>#include <asm/uaccess.h>struct proc_dir_entry *proc_pf; struct proc_dir_entry *proc_pfcount;extern unsigned long pfcount;static inline struct proc_dir_entry *proc_pf_create(const char* name, mode_t mode, read_proc_t * get_info) return create_proc_read_entry(name,
7、mode,proc_pf,get_info,NULL);int get_pfcount(char *buffer, char *start, off_t offset, int length, int *peof, void *data) int len = 0; len = sprintf(buffer, "%ld n", pfcount); return len;static int pf_init(void) proc_pf = proc_mkdir("pf", 0); proc_pf_create("pfcount", 0,
8、get_pfcount); return 0;static void pf_exit(void) remove_proc_entry("pfcount",proc_pf); remove_proc_entry("pf",0);module_init(pf_init);module_exit(pf_exit);MODULE_LICENSE("GPL");5. 編譯、構建內核模塊#vi Makefile /在source目錄下建立Makefile文件在Makefile中添加如下內容:ifneq ($(KERNELRELEASE),)obj-m:=pf.oelseKDIR:= /lib/modules/$(shell uname -r)/buildPWD:= $(shell pwd)default:$(MAKE) -C $(KDIR) M=$(PWD) modulesclean:$(MAKE) -C $(KDIR) M=$(PWD) cleanendif6. 加載模塊到內核中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國網卡項目創(chuàng)業(yè)計劃書
- 中國土沉香項目創(chuàng)業(yè)計劃書
- 中國核酸檢測POCT項目創(chuàng)業(yè)計劃書
- 中國礦泉水電商項目創(chuàng)業(yè)計劃書
- 中國傘形科項目創(chuàng)業(yè)計劃書
- 中國計算機軟硬件項目創(chuàng)業(yè)計劃書
- 中國觀賞苗木項目創(chuàng)業(yè)計劃書
- 2025合伙投資合同協(xié)議書
- 中國尿液分析儀器項目創(chuàng)業(yè)計劃書
- 中國鯛魚淡水養(yǎng)殖項目創(chuàng)業(yè)計劃書
- 抖音電商直播運營團隊KPI績效考核管理辦法【部分崗位績效指標相同要求所有崗位KPI不一樣的請勿下載】
- 幼兒園省一類自評報告
- 《外科常見急腹癥》課件
- 樓宇電氣系統(tǒng)安全檢查表
- 存在問題原因分析及整改措施
- 文員職業(yè)發(fā)展規(guī)劃
- 干部履歷表(中共中央組織部2015年制)
- 廣東省廣州市2023年中考物理試卷
- 新版機動車檢測全部記錄表格
- 數(shù)學教育概論 第3版
- 北師大版二年級數(shù)學下冊《最喜歡的水果》教案及教學反思
評論
0/150
提交評論