(完整word版)实验六系统缺页次数统计实验.doc
上传人:春波****公主 上传时间:2024-09-11 格式:DOC 页数:2 大小:80KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

(完整word版)实验六系统缺页次数统计实验.doc

(完整word版)实验六系统缺页次数统计实验.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验6系统缺页次数统计实验1.实验目的理解内存管理中缺页的概念综合运用实验1,实验4,实验5中/proc文件系统、内存管理、系统调用、内核编译的知识掌握向/proc文件系统中增加文件的方法掌握Linux内核模块的概念和操作方法2.实验内容(上交的实验2统一取名为:test2)通过在内核中自建变量并利用/proc文件系统作为中介的方法来统计系统缺页次数3.设计思想及算法流程缺页次数:虚拟内存技术的应用使得进程线性地址空间里的页面不必常驻内存。当CPU请求一个不在内存中的页面时,会发生缺页,比如我们从内存读取/写入数据,而数据未在内存,此时都会发生缺页。缺页被定义为一种异常(缺页异常),会触发缺页中断处理流程。每种CPU结构提供一个do_page_fault处理缺页中断。由于每发生一次缺页都要进入缺页中断服务函数do_page_fault一次,所以统计该函数被调用的次数就可以得到系统从开机到现在的缺页次数。/proc文件系统:/proc文件系统的文件记录了当前所有的系统信息,包括进程、文件系统、硬件等等。因此,可以通过在/proc中添加一个文件的方式,查看内存进程中的一些自定义运行参数,从而达到使用/proc实现内核与用户空间通信的目的。在do_page_fault函数上一行定义统计缺页次数全局变量pfcountunsignedlongvolatilepfcount;将pfcount加入到do_page_fault中,用以统计缺页次数.pfcount++;声明全局变量pfcount到头文件mm.h中externunsignedlongvolatilepfcount;导出pfcount全局变量,让整个内核都可以访问EXPORT_SYMBOL(pfcount);4.源程序/*内核模块代码*/#include<linux/init.h>#include<linux/module.h>#include<linux/kernel.h>#include<linux/mm.h>#include<linux/proc_fs.h>#include<linux/string.h>#include<asm/uaccess.h>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");MODULE_AUTHOR("Aron.t.wang");5.运行结果N