Loader引导加载程序负责检测硬件信息、处理器模式切换、向内核传递数据三部分工作,这些工作为内核的初始化提供信息及功能支持,以便内核在完成初始化工作后能够正常运行。
Loader引导加载程序需要检测的硬件信息很多,主要是通过BIOS中断服务程序来获取和检测硬件信息。由于BIOS在上电自检出的大部分信息只能在实模式下获取,而且内核运行于非实模式下,那么就必须在进入内核程序前将这些信息检测出来,再作为参数提供给内核程序使用。
在这些硬件信息中,最重要的莫过于物理地址空间信息,只有正确解析出物理地址空间信息,才能知道ROM、RAM、设备寄存器空间和内存空洞(即内存碎片)等资源的物理地址范围,进而将其交给内存管理单元模块加以维护。还有VBE功能,通过VBE功能可以检测出显示器支持的分辨率、显示模式、刷新率以及显存物理地址等信息,有了这些信息才能配置出合理的显示模式。
(操作系统开发)从实模式---->保护模式---->IA-32e模式( 64位模式)_What’smean的博客-CSDN博客
从起初BIOS运行的实模式( real mode ),到32位操作系统使用的保护模式 ( protect mode ),再到64位操作系统使用的IA-32e模式( long mode,长模式),Loader引导加载程序必须历经这三个模式,才能使处理器运行于64位的IA-32e模式。在各个模式的切换过程中,Loader引导加载程序必须手动创建各运行模式的临时数据,并按照标准流程执行模式间的跳转。其中有配置系统临时页表的工作,即既要根据各个阶段的页表特性设置临时页表项,还要保证页表覆盖的地址空间满足程序使用要求。临时段结构亦是如此。
Loader引导加载程序可向内核程序传递两类数据,一类是控制信息,另一类是硬件数据信息。这些数据一方面控制内核程序的执行流程,另一方面为内核程序的初始化提供数据信息支持。
摘自《一个64位操作系统的设计与实现》