OS引导过程

news/2024/11/22 19:00:59/
  1. Computer Startup–加电
  • 电源开关打开,开始供电,主板的控制芯片组向CPU发出一个RESET信号,让CPU恢复到初始状态。
  • 当芯片组检测到电源已经稳定供电,就会撤去RESET信号。
  • CPU从0xffff0处开始执行指令。
  • 该地址在系统BIOS(Basic I/O System)的地址范围内,大部分系统BIOS厂商放在这里的都只是一条跳转指令,跳转到系统BIOS真正的启动代码处。
  1. Computer Startup–自检
  • 系统BIOS的启动代码首先要做的事情是进行POST(Power-On Self Test,加电后自检)
  • POST的主要任务是检测系统中一些关键设备是否存在和能否正常工作,例如内存、显卡、键盘等设备。
  • 由于POST 是最早进行的检测过程,此时尚未初始化显卡,如果系统BIOS 在POST 的过程中发现了一些致命错误,有时不会将错误信息在屏幕上显示。
  • 例如没有找到内存或者内存有问题(此时只会检查640K 常规内存),或其它关键设备,系统BIOS 就会直接控制喇叭发声来报告错误,声音的长短和次数代表了错误的类型。
  1. Computer Startup–初始化设备
  • 接下来系统BIOS 将查找显卡的BIOS,显卡BIOS在ROM 芯片的起始地址通常设在0xC0000 处,系统BIOS 在该地址处找到显卡BIOS 之后就调用它的初始化代码,由显卡BIOS 来初始化显卡。
  • 此时多数显卡都会在屏幕上显示出一些初始化信息,介绍生产厂商、图形芯片类型等内容。
  • 系统BIOS 接着会查找其它设备的BIOS 程序,找到之后同样要调用这些BIOS内部的初始化代码来初始化相关的设备。
  1. Computer Startup–测试设备
  • 查找完所有其它设备的BIOS 之后,系统BIOS 将显示出它自己的启动画面,其中包括有系统BIOS 的类型、序列号和版本号等内容。
  • 接着系统BIOS 将检测和显示CPU 的类型和工作频率,然后开始测试所有的RAM (Random Access Memory),并同时在屏幕上显示内存测试的进度。
  • 内存测试通过之后,系统BIOS 将开始检测系统中安装的一些标准硬件设备,包括硬盘、光驱、串口、并口、软驱等。
  • 另外绝大多数较新版本的系统BIOS 在这一过程中还要自动检测和设置内存的定时参数、硬盘参数和访问模式等。
  • 标准设备检测完毕后,系统BIOS 内部的支持即插即用的代码将开始检测和配置系统中安装的即插即用设备,每找到一个设备之后,系统BIOS 都会在屏幕上显示出设备的名称和型号等信息,同时为该设备分配中断(INT)、DMA (Direct Memory Access,直接存储器存取)通道和I/O (Input/Output,输入输出)端口等资源。
  1. Computer Startup–更新SECD
  • 所有硬件都检测配置完毕后,多数系统BIOS 会重新清屏并在屏幕上方显示出一个表格,其中概略地列出了系统中安装的各种标准硬件设备,以及它们使用的资源和一些相关工作参数。
  • 接下来系统BIOS 将更新ESCD (Extended System Configuration Data,扩展系统配置数据)
  • ESCD (Extended System Configuration Data,扩展系统配置数据)是系统BIOS 用来与操作系统交换硬件配置信息的一种手段,这些数据被存放在CMOS (Complementary Metal Oxide Semiconductor,互补金属氧化物半导体)中;
    • 操作系统将根据这些信息配置与使用设备
    • 有些设备安装后需要重启机器
  1. Computer Startup–启动操作系统
  • ESCD 更新完毕后,系统BIOS 的启动代码将进行它的最后一项工作,即根据用户指定的启动顺序从软盘、硬盘及光驱等启动操作系统。

  • 以Windows为例

  1. 系统BIOS将启动盘(一般是主硬盘)的主引导扇区(MBR, 主引导记录)读入到内存的0x7c00处;
  2. 检查0x7dfe 地址的内存,如果其内容是0xAA55,就跳转到0x7c00 处执行MBR (Master Boot Record,主引导记录, 512字节);
  3. MBR 从分区表(Partition Table)中找到第一个活动分区(Active Partition,一般是C 盘第一个分区),然后按照类似方式读取并执行这个活动分区的引导扇区(Partition Boot Sector),引导扇区负责读取并执行NTLDR (NT Loader,Windows NT的加载程序),完成Windows的启动 。
  • 如果你自己写一个操作系统,一般是从修改主引导扇区开始(汇编),因为BIOS将主引导扇区装入到内存的0x7c00处并执行之。需要对所用文件系统在磁盘上的布局相当熟悉。

http://www.ppmy.cn/news/22757.html

相关文章

Linux线程同步

🧸🧸🧸各位大佬大家好,我是猪皮兄弟🧸🧸🧸 文章目录一、线程同步概念二、条件变量条件变量概念同步、竞态条件条件变量初始化资源不就绪等待唤醒资源就绪唤醒线程三、代码编写代码要求完整代码…

寒假总结2.6

这周集中精力做题,经过一段时间的练习,简单的普及提高题差不多能做出来了,在做题中也学到了一些新的知识,感觉收获还是不小的,也试着做了几道省选题,但是没ac,看来省选对目前的我来说还是有些难…

使用Vue脚手架工具搭建vue项目

场景:使用vue脚手架快速搭建vue的项目 前提:需要安装node.js和npm以及yarn 并且npm需要设置为淘宝镜像 1.全局安装webpack 使用npm全局安装webpack, 打开命令行工具输入:npm i -g vue/cli-init,安装完成之后输入 web…

分享98个JS表单脚本,总有一款适合您

分享98个JS表单脚本,总有一款适合您 98个JS表单脚本下载链接:https://pan.baidu.com/s/1dsRRD_IWoLmgKcmuxyzjZg?pwdxex7 提取码:xex7 Python采集代码下载链接:https://wwgn.lanzoul.com/iKGwb0kye3wj Js登陆注册表单设计代…

SpringBoot原理——Bean花式装配——Day02

目录 Five——容器初始化完成后注入bean 那么同一个实体类被加载多次会怎么样呢? Six——导入源的编程式处理 Seven——bean裁定 拓展 Eight——最终裁定 Five——容器初始化完成后注入bean import lombok.Data; import org.springframework.stereotype.Compon…

mysql 慢sql 分析工具pt-query-digest

mysql 慢sql 分析工具pt-query-digest1.简介2.安装2.1源码安装2.2 安装问题3.工具用法简介3.1 慢查询日志分析统计3.2 服务器摘要3.3 服务器磁盘监测3.4 mysql服务状态摘要3.5 pt-query-digest 慢SQL分析3.5.1 pt-query-digest语法及重要选项3.5.2 分析pt-query-digest输出结果…

JAVA-Spring Bean的生命周期

目录 基本概念 生命周期 Spring Bean的生命周期有哪些? 实例 目录结构 文件内容 MyBeanPostProcess文件 PersonBean文件 spring-config.xml文件 Test2文件 实例运行结果 如果本篇博客对您有一定的帮助,大家记得留言点赞收藏哦。 我们了解一个对…

Android SVG认知误区?

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/128907538 本文出自【赵彦军的博客】 文章目录前言为什么svg 在编译期间,会自动生成多份图片?优化建议前言 为了更好的视觉效果,经常在项目中使用了 svg &…