《实验6系统缺页次数统计实验》-精选课件(公开).pptVIP

《实验6系统缺页次数统计实验》-精选课件(公开).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验环境 系统版本:CentOS 5.5 内核版本:2.6.18-194.el5 欲编译内核:2.6.34.13 实验设备与环境 实验报告必须包含以下几项: 实验目的 实验内容 设计思想及算法流程 源程序清单 运行结果及解释 实验报告要求 实验目的 实验内容与要求 预备知识 实验步骤 实验设备与环境 实验报告与评分要求 实验4 系统缺页次数统计实验 理解内存管理中缺页的概念 综合运用实验1, 实验4, 实验5中/proc文件系统、内存管理、系统调用、内核编译的知识 掌握向/proc文件系统中增加文件的方法 掌握Linux内核模块的概念和操作方法 实验目的 通过在内核中自建变量并利用/proc文件系统作为中介的方法来统计系统缺页次数 实验内容与要求 缺页次数 虚拟内存技术的应用使得进程线性地址空间里的页面不必常驻内存。当CPU请求一个不在内存中的页面时,会发生缺页,比如我们从内存读取/写入数据,而数据未在内存,此时都会发生缺页。缺页被定义为一种异常(缺页异常),会触发缺页中断处理流程。 每种CPU结构提供一个do_page_fault处理缺页中断。由于每发生一次缺页都要进入缺页中断服务函数do_page_fault一次,所以统计该函数被调用的次数就可以得到系统从开机到现在的缺页次数。 预备知识(1) /proc文件系统 通过完成实验1,已学习了/proc文件系统的概念和基本操作。 /proc文件系统的文件记录了当前所有的系统信息,包括进程、文件系统、硬件等等。因此,可以通过在/proc中添加一个文件的方式,查看内存进程中的一些自定义运行参数,从而达到使用/proc实现内核与用户空间通信的目的。 预备知识(2) /proc文件创建和删除 预备知识(3) 所需头文件 #include linux/proc_fs.h 创建目录 struct proc_dir_entry* proc_mkdir (const char *name,struct proc_dir_entry *parent); @name :要创建的目录名 @parent :这个目录的父目录 创建只读文件 struct proc_dir_entry* create_proc_read_entry (const char *name,mode_t mode,struct proc_dir_entry *parent,read_proc_t* read_proc,void *data); @name :要创建的文件名 @mode :要创建的文件的属性 默认0755 @parent :这个文件的父目录 @read_proc :当用户读这个文件时,内核调用的函数 @data :传给read_proc的参数 预备知识(4) 所需头文件 #include linux/proc_fs.h 删除文件和目录 void remove_proc_entry (const char *name,struct proc_dir_entry *parent); @name :要删除的文件或目录名 @parent :所在的父目录 只读回调函数声明 typedef int (read_proc_t)(char *page, char **start, off_t off,int count, int *eof, void *data); 什么是LInux内核模块 内核模块是Linux内核向外部提供的一个插口,其全称为动态可加载内核模块(Loadable Kernel Module,LKM),简称模块。Linux内核之所以提供模块机制,是因为它本身是一个单内核(monolithic kernel)。单内核的最大优点是效率高,因为所有的内容都集成在一起,但其缺点是可扩展性和可维护性相对较差,模块机制就是为了弥补这一缺陷。 预备知识(5) 模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。它在运行时被链接到内核作为内核的一部分在内核空间运行,这与运行在用户空间的进程是不同的。模块通常由一组函数和数据结构组成,用来实现一种文件系统、一个驱动程序或其他内核上层的功能。 总之,模块是一个为内核(从某种意义上来说,内核也是一个模块)或其他内核模块提供使用功能的代码块。 预备知识(6) 利用内核模块的动态装载性具有如下优点: 将内核映象的尺寸保持在最小,并具有最大的灵活性; 便于检验新的内核代码,而不需重新编译内核并重新引导。 预备知识(7) 内核模块的缺点: 对系统性能和内存利用有负面影响; 装入的内核模块和其他内核部分一样,具有相同的访问权限,因此,差的内核模块会导致系统崩溃; 为了使内核模块访问所有内核资源,内核必须维护符号表,并在装入和卸载模块时修改这些符号表; 有些模块要求利用其他

文档评论(0)

小米兰 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档