统计操作系统缺页次数.docx
- 文档编号:28085171
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:7
- 大小:918.17KB
统计操作系统缺页次数.docx
《统计操作系统缺页次数.docx》由会员分享,可在线阅读,更多相关《统计操作系统缺页次数.docx(7页珍藏版)》请在冰豆网上搜索。
统计操作系统缺页次数
实验二:
统计操作系统缺页次数
林
一.实验目的---------------------------------------------3
二.实验内容--------------------------------------------3
三.实验步骤----------------------------------------------3
统计操作系统缺页次数
一实验目的
学习虚拟内存的基本原理和Linux虚拟内存管理技术;
深入理解、掌握Linux的按需调页过程;
掌握内核模块的概念和操作方法,和向/proc文件系统中增加文件的方法;
综合运用内存管理、系统调用、proc文件系统、内核编译的知识。
二实验内容
1.原理
Linux的虚拟内存技术采用按需调页,当CPU请求一个不在内存中的页面时,会发生缺页,缺页被定义为一种异常(缺页异常),会触发缺页中断处理流程。
每种CPU结构都提供一个do_page_fault处理缺页中断。
由于每发生一次缺页都要进入缺页中断服务函数do_page_fault一次,所以可以认为执行该函数的次数就是系统发生缺页的次数。
因此可以定义一个全局变量pfcount作为计数变量,在执行do_page_fault时,该变量值加1。
本实验通过动态加载模块的方法,利用/proc文件系统作为中介来获取该值。
2.实验环境
操作系统:
Ubuntu(内核版本为3.2.0-23-generic-pae)
内核源码:
linux-3.2.58
三实验步骤
1.下载一份内核源代码并解压
Linux受GNU通用公共许可证(GPL)保护,其内核源代码是完全开放的。
现在很多Linux的网站都提供内核代码的下载。
推荐使用Linux的官方网站:
。
在terminal下可以通过wget命令下载源代码:
$cd/tmp
$wget切换到root身份,解压源代码到/usr/src目录下:
#xz–dtar–xvf–C/usr/src
2.修改内核源代码,添加统计变量
1、切换到预编译内核目录
#cd/usr/src/linux-3.2.58
2、修改处理内存访问异常的代码
3.2.58文件:
#makemrproper
然后配置编译选项(此处使用原内核的配置文件,完整的配置命令看操作提示):
#cp/boot/config-3.2.0-23-generic-pae.config
该命令的作用是将原内核配置文件拷贝的当前目录下,并命名为.config。
若需要进一步修改配置请参照操作提示。
用编译Linux内核预备实验中的方法完成新内核的配置、编译、替换,重启后验证是否完成替换。
#uname–r3.2.58
写读取pfcount值的模块代码
系统重启后,执行如下操作:
cd/home/sa
#mkdirsource//在当前用户目录下创建source文件夹,用于存放编写的用户程序
#cdsource//切换到source目录
#vi//新建用于构建模块的代码
--------------------------------------------
/**/
/*modulesprogram*/
#include
#include
#include
#include
#include
#include
#include
structproc_dir_entry*proc_pf;
structproc_dir_entry*proc_pfcount;
externunsignedlongvolatilepfcount;
staticinlinestructproc_dir_entry*proc_pf_create(constchar*name,mode_tmode,read_proc_t*get_info)
{
returncreate_proc_read_entry(name,mode,proc_pf,get_info,NULL);
}
intget_pfcount(char*buffer,char**start,off_toffset,intlength,int*peof,void*data)
{
intlen=0;
len=sprintf(buffer,"%ld\n",pfcount);
returnlen;
}
staticintpf_init(void)
{
proc_pf=proc_mkdir("pf",0);
proc_pf_create("pfcount",0,get_pfcount);
return0;
}
staticvoidpf_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.编译、构建内核模块
cd/home/sa/source
#viMakefile//在source目录下建立Makefile文件
在Makefile中添加如下内容:
obj-m:
=
编译内核模块:
make-C/usr/src/SUBDIRS=/home/sa/sourcemodules
6.加载模块到内核中
执行加载模块命令:
#insmod
查看统计缺页次数:
#cat/proc/pf/pfcount
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 统计 操作系统 页次