操作系统实验报告——操作系统启动与EOS内核调试
实验名称:操作系统的启动
实验目的:本实验旨在让学生熟悉操作系统集成实验环境OS Lab的基本操作,包括编译、调试EOS操作系统内核及应用程序,从而深入理解操作系统的启动流程。
实验环境:OS Lab
实验工具:Bochs(远程目标机)
实验步骤:
1. 新建实验项目,配置相关参数,以启动操作系统开发环境。
2. 使用调试工具对EOS内核进行调试,理解各个阶段的执行过程。
3. 在Bochs中模拟软盘启动,观察boot.bin和loader.bin的作用。
4. 分析boot.lst文件,了解引导加载过程。
5. 调试加载程序,观察如何将内核加载到内存中。
6. 调试内核启动后的状态,分析进程ID,比较应用程序与系统进程的区别,如优先级和数量等。
思考题解析:
1. EOS操作系统从软盘启动时,为何需要boot.bin和loader.bin两个程序?
- boot.bin是引导加载程序,它在实模式下运行,通过BIOS中断服务读取FAT12文件系统的根目录,找到并加载loader.bin。
- loader.bin除了加载内核kernel.dll之外,还负责内存检测和设置保护模式环境,这些任务在实模式下无法完成。
- 如果将loader.bin的功能合并到boot.bin,可能会导致boot.bin超过512字节,超出软盘引导扇区的容量限制。
2. 为何loader.bin被加载到内存的0x1000处?
- 这是因为在软盘引导扇区加载完毕后,内存的低地址区域是第一个可用区域,且相对较小,适合存放较小的loader.bin。
- 选择低地址有利于程序执行时的地址查找,提高效率。
- 该位置的限制意味着loader.bin的大小必须小于1c00k,否则无法加载。
实验体会:
通过本次实验,我对操作系统的启动流程有了更深入的理解,特别是EOS操作系统如何从软盘启动,以及boot.bin和loader.bin在启动过程中的关键作用。在实验中遇到问题时,与老师和同学的交流使我学会了如何解决问题,提升了问题解决能力。同时,实验报告的撰写锻炼了我的书面表达能力,使我在理论知识与实践操作上都有所进步。