X86汇编与内存管理:操作系统启动与内核初始化探索

需积分: 10 6 下载量 156 浏览量 更新于2024-07-18 收藏 983KB PDF 举报
本次实验是操作系统课程中的Lab1,着重于X86汇编语言、QEMU模拟器以及PC机的启动过程理解。实验分为三个部分,旨在帮助学生深入学习和实践操作系统内核的基础构建。 **第一部分:X86汇编语言与QEMU模拟器** 这部分任务是让学生熟悉X86汇编语言,并通过QEMU模拟器观察和理解PC机的引导过程。QEMU是一个开源的模拟器,它能模拟各种处理器架构,对于初学者来说,这是一个很好的工具,可以帮助他们将理论知识与实际硬件操作相结合。 **第二部分:内核引导加载程序** 在实验源代码的boot文件夹中,你需要研究内核的引导加载程序,这部分代码负责加载内核到内存并启动内核执行。这部分的学习有助于理解启动过程中的内存管理和引导机制。 **第三部分:内存管理和内核初始化** 在kernel目录下的代码中,涉及到内存管理的关键部分是`memlayout.h`和`pmap.c`文件。`memlayout.h`描述了虚拟地址空间的结构,学生需要通过修改`pmap.c`实现内存映射和物理页面管理。此外,`kclock.c`和`kclock.h`文件与电池供电时钟和CMOS RAM有关,因为它们记录了系统的物理内存信息,`pmap.c`中的代码需要读取这些数据以确定内存大小。 在内存管理方面,实验涉及到`mem_init()`函数,这是在内核启动初期执行的,它负责设置页表和内存初始化。函数中通过`i386_detect_memory`子函数检测可用内存,并通过`boot_alloc()`函数动态分配内存,使用了一个静态变量`start`来跟踪空闲内存地址。学生需要理解这些函数的作用,如分配和释放内存,以及如何维护内存页表。 这个实验不仅涵盖了操作系统的基础知识,如内存管理、内存布局和内核启动,还锻炼了学生的编程技能和对硬件的理解,是操作系统学习过程中不可或缺的实践经验。通过完成这些任务,学生将能够加深对现代操作系统核心组件如内存管理模块的内部工作原理的认识。