实验6 系统缺页次数统计实验课件.pptVIP

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验6 系统缺页次数统计实验课件

实验目的 实验内容与要求 预备知识 实验步骤 实验设备与环境 实验报告与评分要求 ;理解内存管理中缺页的概念 综合运用实验1, 实验4, 实验5中/proc文件系统、内存管理、系统调用、内核编译的知识 掌握向/proc文件系统中增加文件的方法 掌握Linux内核模块的概念和操作方法;通过在内核中自建变量并利用/proc文件系统作为中介的方法来统计系统缺页次数;缺页次数 虚拟内存技术的应用使得进程线性地址空间里的页面不必常驻内存。当CPU请求一个不在内存中的页面时,会发生缺页,比如我们从内存读取/写入数据,而数据未在内存,此时都会发生缺页。缺页被定义为一种异常(缺页异常),会触发缺页中断处理流程。 每种CPU结构提供一个do_page_fault处理缺页中断。由于每发生一次缺页都要进入缺页中断服务函数do_page_fault一次,所以统计该函数被调用的次数就可以得到系统从开机到现在的缺页次数。;/proc文件系统 通过完成实验1,已学习了/proc文件系统的概念和基本操作。 /proc文件系统的文件记录了当前所有的系统信息,包括进程、文件系统、硬件等等。因此,可以通过在/proc中添加一个文件的方式,查看内存进程中的一些自定义运行参数,从而达到使用/proc实现内核与用户空间通信的目的。;/proc文件创建和删除;预备知识(4);什么是LInux内核模块 内核模块是Linux内核向外部提供的一个插口,其全称为动态可加载内核模块(Loadable Kernel Module,LKM),简称模块。Linux内核之所以提供模块机制,是因为它本身是一个单内核(monolithic kernel)。单内核的最大优点是效率高,因为所有的内容都集成在一起,但其缺点是可扩展性和可维护性相对较差,模块机制就是为了弥补这一缺陷。 ;模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。它在运行时被链接到内核作为内核的一部分在内核空间运行,这与运行在用户空间的进程是不同的。模块通常由一组函数和数据结构组成,用来实现一种文件系统、一个驱动程序或其他内核上层的功能。 总之,模块是一个为内核(从某种意义上来说,内核也是一个模块)或其他内核模块提供使用功能的代码块。;利用内核模块的动态装载性具有如下优点: 将内核映象的尺寸保持在最小,并具有最大的灵活性; 便于检验新的内核代码,而不需重新编译内核并重新引导。 ;内核模块的缺点: 对系统性能和内存利用有负面影响; 装入的内核模块和其他内核部分一样,具有相同的访问权限,因此,差的内核模块会导致系统崩溃; 为了使内核模块访问所有内核资源,内核必须维护符号表,并在装入和卸载模块时修改这些符号表; 有些模块要求利用其他模块的功能,因此,内核要维护模块之间的依赖性。 内核必须能够在卸载模块时通知模块,并且要释放分配给模块的内存和中断等资源; 内核版本和模块版本的不兼容,也可能导致系统崩溃,因此,严格的版本检查是必需的。;预备知识(9);示例;预备知识(10);预备知识(11);预备知识(12);[root@localhost ~]# cd /usr/src/kernels/linux-2.6.34.13 //切换到预编译内核目录 [root@hadoop2 linux-2.6.34.13]# vi arch/x86/mm/fault.c //在do_page_fault函数上一行定义统计缺页次数全局变量pfcount unsigned long volatile pfcount; //将pfcount加入到do_page_fault中,用以统计缺页次数. pfcount++;;[root@hadoop2 linux-2.6.34.13]# vi include/linux/mm.h //声明全局变量pfcount到头文件mm.h中 //代码就加到extern int page_cluster;语句下 //添加代码如???: extern unsigned long volatile pfcount;;[root@hadoop2 linux-2.6.34.13]# vi kernel/kallsyms.c //导出pfcount全局变量,让整个内核都可以访问 //添加到最后一行 //添加代码如下: EXPORT_SYMBOL(pfcount); 下面开始编译内核, 和系统调用实验编译内核步骤一样。;实验步骤;实验步骤;实验步骤;实验步骤;实验步骤;实验步骤;实验步骤;实验步骤;实验步骤;实验步骤;实验步骤;实验环境 系统版本:CentOS 5.5 内核版本:2.6.18-194.el5 欲编译内核:2.6.34.13;实验报告必须包含以下几项: 实验目的 实验内容 设计思想及算法流程 源程序清单 运行结果

文档评论(0)

dmdt5055 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档