码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 01 - 进阶操作系统(BIOS)


    ---- 整理自狄泰软件唐佐林老师课程

    查看所有文章链接:(更新中)深入浅出操作系统 - 目录

    文章目录

    • 1. BIOS - Base input & Output system
      • 1.1 系统启动流程
      • 1.2 BIOS的运行机制
      • 1.3 BIOS的最后使命
        • 1.3.1 主引导区(MBR:Master Boot Record)
        • 1.3.2 更详细的系统启动流程(x86架构)
    • 2. 小结

    1. BIOS - Base input & Output system

    • BIOS是上电后第一个运行的程序
    • BIOS首先检测硬件状态,检测通过后立即进行硬件初始化工作
    • BIOS会在内存中建立 中断向量表(提供硬件访问的方法)
    • BIOS最后将控制权交由 主引导程序 执行

    BIOS不是软件 ,而是 固件Firmware

    固件是固化在硬件中的程序,在硬件出厂前已经烧写固定。

    1.1 系统启动流程

    ==> 上电
    ==> 运行BIOS(0xFFFF0)
    ==> 硬件初始化
    ==> 建立中断向量表
    ==> 加载运行主引导程序(0x07c00)
    ==> 软件初始化
    ==> 加载运行操作系统内核
    ==> 系统初始化
    ==> …

    问题:

    • BIOS是如何被运行起来的?

    1.2 BIOS的运行机制

    • BIOS存储于ROM中,地址映射为0xF0000~0xFFFFF(实地址)
    • BIOS的入口地址为:0xFFFF0
    • 硬件电路的特殊设计使得:
      • 开机后,CPU从0xFFFF0处开始执行,也即 开机后运行BIOS

    1.3 BIOS的最后使命

    • 按照用户设置扫描各个 存储介质(光驱、软驱、U盘,等),寻找是否有 主引导程序
    • BIOS发现主引导程序后,BIOS将存储介质主引导区中的 主引导程序载入内存
    • 主引导程序在内存中的入口地址为 物理地址 0x07c00
    • 将控制权交由主引导程序执行(jmp 0x07c00)

    思考:

    • BIOS如何在存储介质中寻找主引导区?
    • 如何判断引导区中有没有主引导程序?

    1.3.1 主引导区(MBR:Master Boot Record)

    • 位置:位于存储介质的 最开始处,大小为 512字节
    • 特点:前512字节的 最后两个字节为 0x55aa
    • 数据:0x55aa之前的数据被视为主引导程序

    1.3.2 更详细的系统启动流程(x86架构)

    在这里插入图片描述

    2. 小结

    • BIOS是计算机上电后第一个运行的程序
    • BIOS进行必要的初始化 ,并加载运行主引导程序
    • 主引导程序位于存储介质的最开始512字节处
    • 主引导程序负责后续初始化,并加载操作系统内核
  • 相关阅读:
    Elasticsearch8 常用查询
    如何给多参数接口添加缓存(根据方法名字+参数名生成对应的key)
    [k8s] pod的创建过程
    k8s异常Too many requests: Too many requests, please try again later.
    Hadoop 集群搭建(docker版本)
    【FPGA教程案例71】基础操作1——Xilinx原语学习及应用1
    powershell和cmd对比
    干货!分享解决python脚本中涉及账号密码泄露的方案(pyarmor)
    一篇万字博文带你入坑爬虫这条不归路 【万字图文】
    RobotFramework框架之导入自己打包的python程序(十五)
  • 原文地址:https://blog.csdn.net/weixin_36098975/article/details/128129036
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号