码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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位操作系统的设计与实现》

  • 相关阅读:
    openpnp - src - 配置文件载入过程的初步分析
    YOLOv7改进:小目标遮挡物性能提升(SEAM、MultiSEAM),涨点神器!!!
    文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑多热源协同互补的含先进绝热压缩空气储能系统容量配置方法》
    维格云筛选组件入门教程
    RS232/RS485信号转4路模拟信号 隔离D/A转换器 RS-485串行通信
    CTF-Crypto学习记录-第四天 “ “ --- SHA1安全散列算法,实现原理。
    ADSP-21569/ADSP-21593的开发入门(下)
    Day22 SSH远程管理服务
    通过一道简单的累加题,加深对C++匿名对象,static静态函数静态变量,构造函数,内部类的理解
    洛谷P3065 First G
  • 原文地址:https://blog.csdn.net/weixin_42492218/article/details/127766801
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号