OS实验-44-第2次实验1
需积分: 0 25 浏览量
更新于2022-08-08
收藏 2.81MB DOCX 举报
实验题目为"Ucore 实验 Lab1",旨在让学生熟悉操作系统开发的基础知识,主要包括以下几个方面:
1. **使用 make 编译文件**:实验要求学生掌握如何使用`make`工具来编译文件,理解`Makefile`的构成。`Makefile`是构建项目的自动化脚本,它指示`make`命令如何编译源代码。`make`默认不显示详细过程,但通过添加`V=`可以使编译过程可视化。在编译ucore时,`gcc`首先将`.c`文件转化为`.o`汇编文件,然后通过`ld`链接器生成可执行文件。`sign.c`的作用是创建引导扇区的标识,确保正确加载。
2. **使用 qemu 与 gdb 调试**:实验中,学生需学会使用虚拟机软件`qemu`配合调试器`gdb`来调试ucore代码。从CPU启动后的第一条指令开始,设置断点在0x7c00地址,逐步跟踪BIOS执行。通过对比反汇编代码与源代码(如`bootasm.S`和`bootblock.asm`),加深对代码执行的理解。
3. **实模式到保护模式的转换**:在bootloader中,转换的关键步骤包括清零标志、开启A20线以启用32位地址空间、初始化全局描述符表(GDT)、设置控制寄存器cr0的PE位以进入保护模式,以及设置段寄存器和堆栈。
4. **加载 ELF 文件**:通过阅读`bootmain.c`,学生应理解bootloader如何加载ELF格式的内核文件。ELF文件包含了程序的代码、数据和加载信息,bootloader需要解析这些信息以正确加载和执行内核。
5. **实现 kdebug.c::print_stackframe**:此部分要求学生完成`kdebug.c`中的`print_stackframe`函数,以便于调试时打印栈帧信息。栈帧记录了函数调用时的局部变量、参数和返回地址,这对于理解函数调用顺序和分析程序运行状态至关重要。
6. **中断描述符表(IDT)**:IDT是保护模式下的中断向量表,每个表项占用8字节,包含段选择子和偏移量。通过段选择子在GDT中找到中断处理程序的地址。IDT的初始化和中断处理函数的编写也是实验的一部分,涉及`SETGATE`宏和`idt_init`、`trap`函数的实现。
实验过程中,学生不仅需要理解理论知识,还需要动手实践,通过编写代码和调试来深化理解。这有助于培养学生的实际操作能力和问题解决能力,为后续的OS开发学习打下坚实基础。
魏水华
- 粉丝: 18
- 资源: 282
最新资源
- 基于java的社区老人健康信息管理系统的设计与实现.docx
- 基于java的山西大同大学学生公寓管理系统的设计与实现.docx
- 基于java的数字化农家乐管理平台的设计与实现.docx
- 基于java的手机销售网站设计和实现的设计与实现.docx
- 基于java的实习生管理系统设计和实现的设计与实现.docx
- 基于java的微乐校园的设计与实现.docx
- 基于java的网上购物系统的设计与实现.docx
- 基于java的网上村委会业务办理系统的设计与实现.docx
- 基于java的小型企业客户关系管理系统的设计与实现.docx
- 基于java的物流管理系统的设计与实现.docx
- 基于java的线上历史馆藏系统的设计与实现.docx
- 基于java的小型医院医疗设备管理系统的设计与实现.docx
- 基于java的校园悬赏任务平台boot的设计与实现.docx
- 基于java的校园失物招领系统的设计与实现.docx
- 基于java的协同过滤算法的东北特产销售系统的设计与实现.docx
- 基于java的校园志愿者管理系统的设计与实现.docx