做网站文件下载,网页设计图片轮播切换,2021年最火的网页游戏,有什么关于网站建设实例的书4-7 课堂练习4.4#xff1a;页式虚存
缺页异常在 Linux 内核处理中占有非常重要的位置#xff0c;很多 Linux 特性#xff0c;如写时复制#xff0c;页框延迟分配#xff0c;内存回收中的磁盘和内存交换#xff0c;都需要借助缺页异常来进行。 本实训分析 Linux 0.11 的…4-7 课堂练习4.4页式虚存
缺页异常在 Linux 内核处理中占有非常重要的位置很多 Linux 特性如写时复制页框延迟分配内存回收中的磁盘和内存交换都需要借助缺页异常来进行。 本实训分析 Linux 0.11 的缺页处理机制。 第1关版本 0 内核的第一次缺页页故障
任务描述
本关任务分析版本 0 内核的第一次缺页页故障回答下列问题 1.该页故障由几号进程引发 2.在该故障发生前该进程执行的最后一个可执行文件是什么该可执行文件的第 2 块每块 1KB 的头 16 字节的内容是什么 3.引发该页故障的线性地址是什么该进程的代码段起始地址是多少 4.该页故障处理前该线性地址对应的页目录项的地址和值分别是什么 5.该页故障处理时申请到的空闲页帧的起始地址是什么该页帧的头 16 字节的内容是什么 6.该页故障处理过程中、读入硬盘数据后上述页帧的头 16 字节的内容是什么 7.该页故障处理过程中、修改对应的页表项后上述线性地址对应的页表项的值是什么
相关知识
为了完成本关任务你需要掌握 1.如何跟踪到缺页页故障的发生 2.如何跟踪可执行文件的执行 3.如何显示 bochs 虚拟机硬盘中某个可执行文件的内容 4.在 gdb 中如何知道引发缺页页故障的线性地址是多少 5.函数 do_no_page 的处理过程是怎样的 6.在 gdb 中如何查看当前进程的用户代码段的起始地址 7.如何分析线性地址空间到物理地址空间的映射关系 8.如何计算一个线性地址对应的物理地址 9.如何计算一个线性地址的高 10 位和中间 10 位的值 10.页目录项和页表项的格式是什么 11.如何查看某个页目录项的值 12.在 gdb 调试时如何知道某页帧的头 16 字节的内容。
实验准备
本关卡使用版本 0 内核进行分析内核文件为 ~/os/linux-0.11-lab/0 。
编程要求
分析版本 0 内核的第一次缺页页故障回答下列问题将第一关答案填写在/data/workspace/myshixun/第一关.txt。 1.该页故障由几号进程引发 2.在该故障发生前该进程执行的最后一个可执行文件是什么该可执行文件的第 2 块每块 1KB 的头 16 字节的内容是什么 3.引发该页故障的线性地址是什么该进程的代码段起始地址是多少 4.该页故障处理前该线性地址对应的页目录项的地址和值分别是什么 5.该页故障处理时申请到的空闲页帧的起始地址是什么该页帧的头 16 字节的内容是什么 6.该页故障处理过程中、读入硬盘数据后上述页帧的头 16 字节的内容是什么 7.该页故障处理过程中、修改对应的页表项后上述线性地址对应的页表项的值是什么
实验过程及答案
实验过程
默认为0内核所以本次不需额外配置 cd os/linux-0.11-lab
./rungdb 另开一个终端 cd os/linux-0.11-lab
./mygdb [/usr/root]hexdump /bin/sh | less输入q退出 再次进入gdb调试 答案 第2关第一次使用零页的缺页页故障
任务描述
本关任务回答问题在版本 0 内核中处理第一次使用零页的缺页页故障时 1.该页故障由几号进程引发 2.在该故障发生前该进程执行的最后一个可执行文件是什么该可执行文件的未初始化数据段 BSS 的起始虚拟地址 VMA 是什么 3.引发该页故障的线性地址是什么 4.该页故障处理前该线性地址对应的页表项的地址和值分别是什么 5.该页故障处理后上述线性地址对应的页表项的值是什么该线性地址被映射到的零页新页帧的起始地址是什么 6.该新页帧的头 16 个字节是什么
相关知识
为了完成本关任务你需要掌握 1.如何跟踪到缺页页故障的发生 2.如何跟踪可执行文件的执行 3.如何分析一个可执行文件的结构和指令 4.如何将文件放入 bochs 虚拟机 5.在 bochs 虚拟机中如何编辑文件 6.如何将一个文件从 bochs 虚拟机拷入 Ubuntu 容器 7.在 gdb 中如何知道引发缺页页故障的线性地址是多少 8.函数 do_no_page 的处理过程是怎样的 9.在 gdb 中如何查看当前进程的用户代码段的起始地址 10.如何分析线性地址空间到物理地址空间的映射关系 11.如何计算一个线性地址对应的物理地址 12.如何计算一个线性地址的高 10 位和中间 10 位的值 13.页目录项和页表项的格式是什么 14.如何查看某个页目录项的值 15.在 gdb 调试时如何知道某页帧的头 16 字节的内容。
实验准备
本关卡使用版本 0 内核进行分析。
编程要求
本关任务回答问题在版本 0 内核中处理第一次使用零页的缺页页故障时 1.该页故障由几号进程引发 2.在该故障发生前该进程执行的最后一个可执行文件是什么该可执行文件的未初始化数据段 BSS 的起始虚拟地址 VMA 是什么 3.引发该页故障的线性地址是什么 4.该页故障处理前该线性地址对应的页表项的地址和值分别是什么 5.该页故障处理后上述线性地址对应的页表项的值是什么该线性地址被映射到的零页新页帧的起始地址是什么 6.该新页帧的头 16 个字节是什么
实验过程及答案
实验过程
默认为0内核所以本次不需额外配置 cd os/linux-0.11-lab
./rungdb 另开一个终端 cd os/linux-0.11-lab
./mygdb 进入虚拟机 点yes 然后一直c直到第一次跳到376行 答案 4-8 课堂练习4.4页式虚存
缺页异常在 Linux 内核处理中占有非常重要的位置很多 Linux 特性如写时复制页框延迟分配内存回收中的磁盘和内存交换都需要借助缺页异常来进行。 本实训分析 Linux 0.11 的缺页处理机制。 第1关可执行文件的执行
任务描述
本关任务在 bochs 虚拟机中编译程序 01.c 可以得到一个可执行文件。请分析该程序的运行回答下列问题 1.执行该文件的 execve 系统调用刚开始执行时当前进程的用户虚空间是什么该空间的第一个页表项和最后一个页表项分别是什么 2.执行该文件的 execve 系统调用执行结束时该进程的用户虚空间是什么该空间占据几个页目录项第一个页目录项的地址和值分别是什么 3.该可执行文件的代码段和数据段的长度之和是多少
相关知识
为了完成本关任务你需要掌握 1.如何跟踪可执行文件的执行 2.如何确定一个进程的用户虚空间范围 3.如何分析一个可执行文件的结构和指令 4.如何将文件放入 bochs 虚拟机 5.在 bochs 虚拟机中如何编辑文件 6.如何将一个文件从 bochs 虚拟机拷入 Ubuntu 容器 7.如何显示 bochs 虚拟机硬盘中某个可执行文件的内容 8.如何计算一个线性地址对应的物理地址 9.如何计算一个线性地址的高 10 位和中间 10 位的值 10.页目录项和页表项的格式是什么 11.如何查看某个页目录项的值。
实验准备
本关卡使用版本 0 内核进行分析01.c 文件存放在/data/workspace/myshixun/exp1下。
编程要求
本关任务在 bochs 虚拟机中编译程序 01.c 可以得到一个可执行文件。请分析该程序的运行回答下列问题 1.执行该文件的 execve 系统调用刚开始执行时当前进程的用户虚空间是什么该空间的第一个页表项和最后一个页表项分别是什么 2.执行该文件的 execve 系统调用执行结束时该进程的用户虚空间是什么该空间占据几个页目录项第一个页目录项的地址和值分别是什么 3.该可执行文件的代码段和数据段的长度之和是多少
实验过程及答案
实验过程 直接简单粗暴手动把/data/workspace/myshixun/exp1的01.复制到os/linux-0.11-lab/b cd os/linux-0.11-lab
./run 点yes 打开gdb 然后一直c 转到虚拟机 回到gdb 答案 第2关可执行文件的加载