JOS操作系统实验:PC启动关键步骤解析

4星 · 超过85%的资源 需积分: 10 33 下载量 121 浏览量 更新于2024-08-02 收藏 297KB PDF 举报
"这篇PPT详细介绍了在高级操作系统课程中JOS实验的lab1关键内容,主要关注如何启动个人计算机(Booting a PC)以及JOS内核的启动流程。内容涉及从BIOS的初始化、保护模式的切换、C函数调用规范到内核加载和设备初始化等环节。" 在个人计算机启动过程中,整个流程可以分为以下几个关键步骤: 1. BIOS启动:计算机启动时,BIOS(基本输入输出系统)被激活,它位于主板上的ROM芯片中,位于地址0xffff0。BIOS的主要任务是初始化硬件设备,设置中断处理程序,并读取启动设备的第一扇区(通常是MBR,主引导记录)到内存0xfe05b处,然后跳转执行这段代码。 2. 引导加载器:BIOS加载的代码通常是一个简单的引导加载器,例如在JOS实验中,它位于`boot/boot.S`。引导加载器的任务是将CPU从16位实模式切换到32位保护模式。在这个过程中,它会设置必要的寄存器,清除全局描述符表(GDT),开启A20地址线,加载GDTR(全局描述符表寄存器)并设置控制寄存器CR0的PE位来启用保护模式。 3. 进入C语言:当保护模式开启后,引导加载器会跳转到C代码`boot/main.c:bootmain()`。在这里,引导加载器会加载内核到内存的特定位置(如0x100000),并准备调用内核入口点。 4. 内核初始化:内核的入口点位于`kern/entry.S:_start`。这里会进一步初始化段寄存器,设置内核堆栈,并调用`kern/init.c:i386_init()`进行更深入的初始化工作,如初始化控制寄存器,设置内存管理等。 5. 设备初始化与监控:在`i386_init()`中,会初始化控制台设备,这通常是显卡和键盘等,以便于交互。初始化完成后,系统跳转到监控程序或内核的其他部分,继续执行系统的初始化和服务。 整个启动过程涉及了处理器模式的转换、内存管理机制的设置、中断处理、以及设备驱动的初始化,这些都是操作系统核心功能的基础。JOS实验通过这些步骤让学习者深入了解操作系统是如何控制和管理硬件资源的。理解这些知识点对于深入学习操作系统原理和实现至关重要。