




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验二 缺页次数统计n实验目的1.了解内存管理方法。2.记录进程缺页中断次数。Linux分段和分页在x86CPU中,分段机制是实现虚拟主存的基本单位。在保护模式下,通过硬件地址主存管理单元(Memory Management Unit ,MMU)将虚拟地址转换为物理地址 。分页机制在分段机制之后工作,以完成从线性地址到物理地址的转换。 Linux页面管理n在Linux中,主存的分配与管理以页框为单位,一个页框的大小为4KB。n内核需要对每个页框的状态进行管理,为每个页框分配一个struct page,该结构记录页框的使用状态。 n使用bitmap对页框进行管理。共11个 。第0组的每一个表示单
2、个页框的使用情况,为1表示该页框正在使用,为0表示空闲;第1组的每一位表示相邻的两个页框的使用情况,如果其中有一个位置1,表示对应的两个页框正在使用,以此类推;第i组中的每一位表示相邻的2i个页框被使用的情况。 Linux页面换出 nkswapd()利用两个控制变量free_pages_high和free_pages_low进行判断。如果空闲页框数小于free_pages_high,就要有页面被交换出去;如果空闲页框数小于free_pages_low,kswapd()不仅换出部分页面,还要把睡眠时间减为平时的一半,更频繁地换出页面;当空闲页框数大于free_pages_low时,睡眠时间又会恢
3、复原样。 Linux页表 n所以页目录项和页表一共只需要20位,占用物理地址的1231位,还有12位用作标志位,可以用于控制或其他目的 。n存在位:表明项对应的物理页是否加载到主存。n读/写位:表明该页是只读还是可写,起保护作用。n用户/系统位:选择用户级访问许可或内核级访问许可。n访问位:表明该页是否被访问过。n脏标志位:表明该页是否被写过。n直写位:置位表明页面cache采用“直写”(既写主存也写缓存),否则回写缓存。 Linux地址n页目录表项,置于高10位,存放页目录的索引;页表项,占据中间10位,存放页表的索引;偏移量,占据低12位,表示在4KB的页框中的偏移量。 n页目录用一个物理
4、页框存储,用来保存页表的基址。每个数据项占4B,因而页目录表有1024个数据项。 n页表也使用一个物理页框存储,用来保存物理页框号。每个数据项占4B因而页表也有1024个数据项。 Linux进程虚存区映射 n在Linux内核中,创建并初始化一个虚存区映像是由被称为主存映射的函数mmap()来完成的 。nMMU进行虚实地址转换时会产生缺页异常,然后系统通过异常调用执行do_page_fault()函数来完成可执行文件的剩余页面。 统计系统和单个进程的缺页次数 n先需要添加一个全局变量global_pf作为计数变量,将该变量申明在usr/src/kernels/linux 2.6.18/ incl
5、ude/linux/mm.h文件中:extern unsigned long volatile global_pf;n在arch/i386/mm/fault.c中定义该变量:unsigned long volatile global_pf=0;注:.h文件用“文本编辑器”打开方法:右键点击文件,选择“使用其它程序打开”,在“使用自定义命令”中键入gedit,点击“打开”。n在定义好之后,修改arch/i386/mm/fault.c中的do_page_fault(),global_pf在该函数的开始时自增:fastcall void _kprobes do_page_fault(struct p
6、t_regs*regs,unsigned long error_code) tsk = current;在tsk = current; 后添加global_pf+;n要记录进程的缺页次数,首先要在进程的进程控制块中添加一个成员pf。进程控制块task_struct定义在文件include/Linux/Sched.h中;Struct task_structunsigned long pf;n修改arch/i386/mm/fault.c中的do_page_fault()函数,当前进程的pf在该函数开始时自增:fastcall void_kprobes do_page_fault(struct pt
7、_regs*regs, unsigned long error_code) tsk = current; global_pf+;在上次添加的global_pf+;后添加current-pf+;nkernelfork.c文件中的dup_task_struct函数,修改该函数进程的pf设置成0:Static struct task_struct*dup_task_struct(struct task_struct*orig) *tsk=*orig; 在*tsk=*orig;后添加tsk-pf=0;n添加系统调用。在linux-2.6.18/kernel/sys.c文件的最后添加以下内容。asmli
8、nkage long sys_global_pf()return global_pf;asmlinkage long sys_pf()return current-pf;系统调用设计n在linux-2.6.18/include/asm-i386/unistd.h中 #define _NR_move_pages 317后定义调用号: #define _NR_global_pf 318 #define _NR_pf 319n在linux-2.6.18/arch/i386/kernel/ syscall_table.S的最后添加: .long sys_global_pf .long sys_pf重新编译内核。写测试代码#include #include int main()long gpf=syscall(318);long cpf=syscall(319);printf(%dn,gp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 无线火灾探测器项目可行性研究报告
- 贵阳市旅游公路加宽项目可行性研究报告
- 防汛知识培训新闻课件
- 防汛抢险队伍培训知识课件
- DB34-T 5037-2022 船闸工程施工安全检查标准
- 国际贸易合同法律条款示例
- 商品质量保证合同的法律条款解析
- 住房租赁的合同详细版样书3篇
- 石棉安全标准修订-洞察及研究
- 横突融合技术优化-洞察及研究
- 2025年下半年安徽省港航集团有限公司所属企业社会公开招聘22名考试参考试题及答案解析
- 人教PEP版六年级英语上册全册教案
- 3D打印技术在制造业2025年发展趋势及市场前景可行性分析报告
- 综合楼玻璃安装合同协议书范本模板6篇
- 2025年度集中供暖项目暖气设施安装及售后服务合同
- 2025福建厦门市公安局同安分局招聘警务辅助人员50人笔试备考试题及答案解析
- 固废回收协议书范本
- 同等学力英语申硕考试词汇(第六版大纲)电子版
- 生药学-绪论-第一章
- 2019版外研社高中英语选择性必修二单词默写表
- 第一讲 ASPEN Plus使用入门课件
评论
0/150
提交评论