实验目的<编辑> 熟悉hit-oslab 实验环境; 建立对操作系统引导过程的深入认识; 掌握操作系统的基本开发过程; 能对操作系统代码进行简单的控制,揭开操作系统的神秘面纱。 实验内容<编辑> 此次实验的基本内容是: 1. 阅读《Linux内核完全注释》的第6 章,对计算机和Linux 0.11 的引导过程进行初步的了解; 2. 按照下面的要求改写0.11 的引导程序bootsect.s 3. 有兴趣同学可以做做进入保护模式前的设置程序setup.s。 改写bootsect.s 主要完成如下功能: 1. bootsect.s 能在屏幕上打印一段提示信息“XXX is booting...”,其中XXX 是你给自己的操作系统起的名字,例如LZJos、Sunix等(可以上论坛上秀秀谁的OS 名字最帅,也可以显示一个特色 logo,以表示自己操作系统的与众不同。) 改写setup.s 主要完成如下功能: 1. bootsect.s 能完成setup.s 的载入,并跳转到 setup.s 开始地址执行。而 setup.s 向屏幕输出一行"Now we are in SETUP"。 2. setup.s 能获取至少一个基本的硬件参数(如内存参数、显卡参数、硬盘参数等),将其存放在内存的特定地址,并输出到屏幕上。 3. setup.s 不再加载 Linux内核,保持上述信息显示在屏幕上即可。 实验报告<编辑> 在实验报告中回答如下问题: 1. 有时,继承传统意味着别手蹩脚。x86 计算机为了向下兼容,导致启动过程比较复杂。请找出 x86 计算机启动过程中,被硬件强制,软件必须遵守的两个“多此一举”的步骤(多找几个也无妨),说说它们为什么多此一举,并设计更简洁的替代方案。 评分标准<编辑> bootsect 显示正确,1020% bootsect 正确读入 setup,10% setup 显示正确,10% setup 获取硬件参数正确,5% setup 正确显示硬件参数,5% tools/build.c 修改正确,1020% 实验报告,5060% 实验提示<编辑> 操作系统的 boot 代码有很多,并且大部分是相似的。本实验仿照 Linux-0.11/boot 目录下的bootsect.s 和 setup.s,以剪裁它们为主线。当然,如果能完全从头编写,并实现实验所要求的功能,是再好不过了。 同济大学赵炯博士的《Linux 内核 0.11 完全注释(修正版 V3.0)》(以后简称《注释》)的第6 章是非常有帮助的参考,实验中可能遇到的各种问题,几乎都能找到答案。可以在“资料和文件下载”中下载到该书的电子版。同目录中,校友谢煜波撰写的《操作系统引导探究》也...