追踪调试EOS操作系统启动过程

需积分: 0 0 下载量 108 浏览量 更新于2024-06-30 收藏 1.57MB DOCX 举报
"操作系统实验21的目的是跟踪调试EOS操作系统在PC机上的启动过程,从加电复位到内核启动。实验涉及汇编语言、NASM编译、Bochs虚拟机及其调试命令。主要文件包括boot.asm(软盘引导扇区程序)、loader.asm(加载程序)和kernel.dll(EOS内核)。通过BochsDebug进行远程目标机调试,观察CPU段寄存器值,以及对内存中0x7c00处的软盘引导扇区程序进行调试。" 实验内容详述: 1. **引导加载过程**: - BIOS在完成自检和初始化后,将软盘引导扇区(boot.asm生成的boot.bin)加载到内存的0x7c00地址,并从这里开始执行。引导扇区的代码负责加载更复杂的加载程序(loader.asm生成的loader.bin)。 2. **NASM汇编代码**: - boot.asm和loader.asm包含NASM汇编代码,这些代码是操作系统启动过程的关键部分。引导扇区通常负责检测硬件,设置必要的寄存器,并加载更大的内核文件(kernel.dll)。 3. **加载程序loader.asm**: - Loader.asm生成的加载程序loader.bin大小为1566字节,它从磁盘加载kernel.dll到内存并设置执行环境,为内核运行做好准备。 4. **Bochs虚拟机**: - Bochs是一个开源的x86模拟器,用于模拟PC硬件。实验中使用Bochs的调试功能,通过"Bochsforwindows-Display"窗口观察操作系统输出,"Bochsforwindows-Console"窗口输入调试命令。 5. **CPU寄存器调试**: - 使用调试命令`sreg`可以查看CPU的段寄存器状态,例如CS寄存器的值为0xf000,表明代码段在0xf000段。 6. **内存调试**: - `xp`命令用于检查内存内容,例如`xp/1024b0x0000`检查0x0000地址开始的1024字节内存,`xp/512b0x7c00`检查0x7c00地址开始的512字节内存,这有助于理解引导程序的执行。 7. **软盘引导扇区调试**: - 输入`vb0x0000:0x7c00`,使得在逻辑地址0x0000:0x7c00开始执行代码,这允许从引导扇区程序的起点进行单步调试。 实验的重点在于理解操作系统的启动流程,掌握汇编语言编程基础,熟悉Bochs的调试技巧,以及对内存和CPU状态的分析。通过这个实验,学生能够深入学习操作系统的底层机制,为后续的学习打下坚实的基础。