• loader引导的主要功能分析介绍


            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引导加载程序可向内核程序传递两类数据,一类是控制信息,另一类是硬件数据信息。这些数据一方面控制内核程序的执行流程,另一方面为内核程序的初始化提供数据信息支持。

    • 控制信息一般用于控制内核执行流程或限制内核的某些功能。这些数据(参数)是与内核程序早已商定的协议,属于纯软件控制逻辑,如启动模式(字符界面或图形界面)、启动方式(网络或本地)、终端重定向(串口或显示器等)等信息。
    • 硬件数据信息通常是指Loader引导加载程序检测出的硬件数据信息。Loader引导加载程序将这些数据信息多半都保存在固定的内存地址中,并将数据起始内存地址和数据长度作为参数传递给内核,以供内核程序在初始化时分析、配置和使用,典型的数据信息有内存信息、VBE信息等。

    摘自《一个64位操作系统的设计与实现》

  • 相关阅读:
    带你掌握如何查看并读懂昇腾平台的应用日志
    Excel 使用技巧集锦——163种技巧
    【新版】系统架构设计师 - 案例分析 - 架构设计<SOA与微服务>
    【SQL语法基础】什么是SQL的聚集函数,如何利用它们汇总表的数据?
    【详细教程hexo博客搭建】1、从零开始搭建一个能用的博客
    【sql】MySQL——插入语句(联表插入)
    【多线程】多线程面试常见基础内容
    MongoDB聚合运算符:$divide
    thinkphp 自定义错误页面
    SDK广告整合
  • 原文地址:https://blog.csdn.net/weixin_42492218/article/details/127766801