操作系统启动原理:BIOS到操作系统的过渡解析

需积分: 14 34 下载量 174 浏览量 更新于2024-07-17 1 收藏 200KB DOCX 举报
"国科大操作系统高级教程-2018" 在计算机科学中,操作系统是计算机硬件和软件之间的重要桥梁,它负责管理和控制系统的资源,为应用程序提供接口。本课程内容涉及的操作系统启动过程是这一领域的核心知识。下面将详细解释相关知识点: 1. **计算机启动流程**: 当计算机开机时,由于内存尚未初始化,CPU无法直接执行存储在外设上的操作系统代码。此时,基本输入输出系统(BIOS)起作用,进行一系列自检(POST),设置中断向量表和初始化硬件。BIOS随后将操作系统的引导扇区加载到内存的0x7C00地址,并跳转执行,因为这是BIOS的约定。 2. **BIOS加载扇区的策略**: BIOS仅加载一个启动扇区的原因在于,这是系统启动过程中的一个标准化步骤。BIOS的角色是初始化硬件环境,之后的工作交给引导加载器。引导加载器(如bootsect)由操作系统开发者编写,负责加载其余的系统分区或文件系统。这样做的好处是保持体系结构的灵活性,允许操作系统和BIOS独立发展,同时简化了启动流程。 3. **内存地址选择**: BIOS不会将bootsect加载到0x00000,因为这个地址用于建立中断向量表(IVT)和BIOS数据区。0x7C00是BIOS预留给引导扇区的内存地址。加载后,为了防止内核初始化时覆盖这些数据,bootsect会被移动到0x90000,这里暂时存储硬件配置数据,便于内核使用。 4. **引导程序之间的衔接**: - **bootsect到setup的过渡**:在bootsect中,使用`jmpi 0, SETUPSEG;`指令跳转到setup程序的地址(0x90200)。这使得CS:IP寄存器指向setup的第一条指令,从而开始执行setup程序。 - **setup到head的过渡**:setup程序执行完毕后,通常会更新内存配置和硬件设置,然后通过指令跳转到操作系统内核的入口点,即head程序。具体的跳转指令可能因实现不同而略有差异,但通常涉及改变CS:IP寄存器以指向head程序的地址。 操作系统启动过程的理解对于深入学习操作系统原理至关重要。这个过程涉及到硬件初始化、内存管理、程序加载和执行等多个层面,是操作系统设计和实现的基础。掌握这些知识有助于我们更好地理解和调试操作系统相关的问题,也能为将来在系统级编程和优化打下坚实基础。