Lab1: 操作系统ucore引导加载与保护模式切换

需积分: 9 0 下载量 179 浏览量 更新于2024-09-07 收藏 1.73MB DOCX 举报
"ucore lab1实验文档,主要内容涉及操作系统加载机制、bootloader的实现、保护模式切换、qemu模拟器的使用、GDB调试以及bootloader进入保护模式的分析。" ucore实验1主要围绕操作系统加载的基础知识展开,通过编写和理解bootloader来启动ucore操作系统。首先,实验强调了操作系统作为软件也需要被加载执行,这个过程通常由bootloader完成。bootloader是系统启动时首先执行的一段小程序,负责初始化硬件环境,如开启x86的保护模式,并加载操作系统到内存中。 在实验中,学生需要掌握通过`make`工具生成执行文件的过程。`kernel`和`bootblock`是生成ucore.img的关键部分。`kernel`是操作系统的核心部分,而`bootblock`是引导装载程序,它负责加载kernel到内存并切换到保护模式。生成kernel涉及将所有`.c`文件编译为`.o`对象文件,然后链接生成最终的kernel。生成bootblock则涉及到多个步骤,包括创建`bootasm.o`、`bootmain.o`以及`sign`,最后汇编和链接生成bootblock。 实验还涉及使用qemu模拟器进行软件的执行和调试。qemu是一个强大的虚拟机,可以模拟多种计算机硬件,便于软件开发和测试。通过配置gdb和qemu之间的通信,可以实现对lab1中的软件进行调试。实验中,通过修改`gdbinit`文件设置断点,以从CPU启动的第一条指令开始调试,并逐步分析程序执行过程。 在练习3中,学生需要理解bootloader进入保护模式的细节。开启A20门(Address Line 20)是这个过程的关键步骤,因为实模式下只能访问1MB的内存,而开启A20允许访问超过1MB的地址空间,这是进入保护模式的必要条件。实验要求分析为何需要开启A20以及如何实际操作。 整个实验旨在让学生深入理解操作系统启动的底层机制,熟悉bootloader的编写,掌握使用qemu和gdb进行调试的技能,以及了解保护模式的切换过程。这些知识对于理解和开发操作系统至关重要。