2. 调试分析 Linux 0.00 多任务切换¶
2.1. 实验目的¶
通过调试一个简单的多任务内核实例,使大家可以熟练的掌握调试系统内核的方法;
掌握Bochs虚拟机的调试技巧;
通过调试和记录,理解操作系统及应用程序在内存中是如何进行分配与管理的;
2.2. 实验内容¶
通过调试一个简单的多任务内核实例,使大家可以熟练的掌握调试系统内核的方法。
这个内核示例中包含两个特权级 3
的用户任务和一个系统调用中断过程。我们首先说明这个简单内核的基本结构和加载运行的基本原理,然后描述它是如何被加载进机器 RAM
内存中以及两个任务是如何进行切换运行的。
2.2.1. 掌握Bochs虚拟机的调试技巧¶
如何单步跟踪?
如何设置断点进行调试?
如何查看通用寄存器的值?
如何查看系统寄存器的值?
如何查看内存指定位置的值?
如何查看各种表,如
gdt
,idt
,ldt
等?如何查看
TSS
?如何查看栈中的内容?
如何在内存指定地方进行反汇编?
2.3. 实验报告¶
通过仔细的调试与跟踪程序,完成以下任务:
当执行完
system_interrupt
函数,执行153
行iret
时,记录栈的变化情况。当进入和退出
system_interrupt
时,都发生了模式切换,请总结模式切换时,特权级是如何改变的?栈切换吗?如何进行切换的?当时钟中断发生,进入到
timer_interrupt
程序,请详细记录从任务0
切换到任务1
的过程。又过了
10ms
,从任务1切换回到任务0
,整个流程是怎样的?TSS
是如何变化的?各个寄存器的值是如何变化的?请详细总结任务切换的过程。
2.3.1. 评分标准¶
记录描述要详细完整,前4项每题 20%,总共 80%
总结任务切换过程,10%
格式规范美观,10%