BIOS启动过程详解

2023-10-26

BIOS 

工作原理

 


最近几天在看《
UNIX

操作系统设计》突然想到计算机是如何启动的呢?那就得从
BIOS

说起,其实这个冬冬早已是
n

多人写过的了,今天就以自己的理解来写写,权当一个学习笔记。


一、        

 


预备知识:

 


很多人将
BIOS


CMOS

混为一谈,在开始介绍
BIOS

工作原理以前先来简单的了解以下
BIOS


CMOS


 


什么是
BIOS 


 


系统开机启动
 BIOS

,即微机的基本输入输出系统
(Basic Input-Output System)

,是集成在主板上的一个
ROM

芯片,其中保存有微机系统最重要的基本输入
/

输出程序、系统信息设置、开机上电自检程序和系统启动自举程序。


集成在
BIOS

上得程序主要有如下几个:


BIOS


中断例程:

 


BIOS

中断服务程序。它是微机系统软、硬件之间的一个可编程接口,用于程序软件功能与微机硬件实现的衍接。
 DOS/Windows

操作系统对软、硬盘、光驱与键盘、显示器等外围设备的管理即建立在系统
BIOS

的基础上。程序员也可以通过
 


INT 5


INT 13

等中断的访问直接调用
BIOS

中断例程。
 


BIOS


系统设置程序:

 

微机部件配置情况是放在一块可读写的
CMOS RAM

芯片中的,它保存着系统
CPU

、软硬盘驱动器、显示器、键盘等部件的信息。
 

关机后,系统通过一块后备电池向
CMOS

供电以保持其中的信息。如果
CMOS

中关于微机的配置信息不正确,会导致系统性能降低、零部件不能识别,并由此引发一系统的软硬件故障。在
BIOS ROM

芯片中装有一个程序称为

系统设置程序

,就是用来设置
CMOS RAM

中的参数的。这个程序一般在开机时按下一个或一组键即可进入(一般为
Delete

键),它提供了良好的界面供用户使用。这个设置
 CMOS

参数的过程,习惯上也称为
“BIOS

设置

。新购的微机或新增了部件的系统,都需进行
BIOS

设置。
 


POST


上电自检

 

微机接通电源后,系统将有一个对内部各个设备进行检查的过程,这是由一个通常称之为
POST(Power On Self Test,

上电自检
)

的程序来完成的。这也是
BIOS

的一个功能。完整的
POST

自检将包括
CPU


640K

基本内存、
1M

以上的扩展内存、
ROM

、主板、
 CMOS

存贮器、串并口、显示卡、软硬盘子系统及键盘测试。自检中若发现问题,系统将给出提示信息或鸣笛警告。
 


BIOS


系统启动自举程序

 

在完成
POST

自检后,
ROM BIOS

将按照系统
CMOS

设置中的启动顺序搜寻软硬盘驱动器及
CDROM

、网络服务器等有效的启动驱动器
 

,读入操作系统引导记录,然后将系统控制权交给引导记录,由引导记录完成系统的启动。
 

 

 


什么是
CMOS 


 


CMOS

(本意是指互补金属氧化物半导体
——

一种大规模应用于集成电路芯片制造的原料)是微机主板上的一块可读写的
RAM

芯片,用来保存当前系统的硬件配置和用户对某些参数的设定。
CMOS

可由主板的电池供电,即使系统掉电,信息也不会丢失。
 CMOS RAM

本身只是一块存储器,只有数据保存功能,而对
CMOS

中各项参数的设定要通过专门的程序。早期的
CMOS

设置程序驻留在软盘上的
(


IBM


PC/AT

机型
)

,使用很不方便。现在多数厂家将
CMOS

设置程序做到了
BIOS

芯片中,在开机时通过特定的按键
 

就可进入
CMOS

设置程序方便地对系统进行设置,因此
CMOS

设置又被叫做
BIOS

设置。
 

早期的
CMOS

是一块单独的芯片
MC146818A(DIP

封装
)

,共有
64

个字节存放系统信息
,


CMOS

配置数据表。
386

以后的微机一般将
 MC146818A

芯片集成到其它的
IC

芯片中
(


82C
206


PQFP

封装
)

,最新的一些
586

主板上更是将
CMOS

与系统实时时钟和后备电池集成到一块叫做
DALLDA DS1287

的芯片中。随着微机的发展、可设置参数的增多,现在的
CMOS RAM

一般都有
128

字节及至
256

字节的容量。为保持兼容性,各
BIOS

厂商都将自己的
BIOS

中关于
CMOS RAM

的前
64

字节内容的设置统一与
MC146818A


CMOS RAM

格式一致,而在扩展出来的部分加入自己的特殊设置,所以不同厂家的
BIOS

芯片一般不能互换,即使是能互换的,互换后也要对
 CMOS

信息重新设置以确保系统正常运行。


 


二、工作原理介绍

 


 


下面从计算机加电开始,看
BIOS

是如何一步一步工作的:


 


1、             

 


加电

 


计算机电源开始工作,当电源的输入电压稳定以后,主板的
timer

被触发,它产生一个复位脉冲送给
80X86cpu


cpu

开始工作,当
cpu

收到该复位脉冲后,其硬件逻辑就会置
CS

寄存器为
FFFFH


IP

寄存器为
0000H

,也就是说,会自动地到
FFFF:0000H

去取第一条指令,(在对内存编址的时候,高地址部分总是编给一些

ROM

,在这些
ROM

里是预先写好的程序或数据,地址
 FFFF


0000h

其实就是在
ROM

里。以前不懂这个规则的时候着实被搞糊涂了,不明白
FFFF


0000h

里的跳转指令是哪里来的,其实就是写死在
ROM

里的了,就这么简单。)
这个地方只有一条
JMP

指令,告诉处理器到什么地方读取
BIOS ROM


 


2


POST

 

POST

其实是一系列的执行不同初始化和计算机硬件检测的函数或例程。
BIOS

以对主板硬件的一系列检测开始,包括检测:
cpu

,数学协处理器、时钟
IC


DMA

控制器和中断请求(
IRQ

)控制器,检测的顺序根据主板的不同而不同。


然后,
BIOS

会在地址
C000:000h 


 C780:000h

之间检测视频
 ROM

是否存在,如果视频
BIOS

存在,则对视频
ROM

中的内容求校验和进行检测,如果检测成功,则
BIOS

将控制权转交给视频
BIOS

让其初始化当完成时再将控制权交回给
BIOS

。此时你将会在屏幕上看到显卡信息,例如显卡制造商的
logo

,显卡的描述信息,以及显卡
BIOS

信息等。


然后
BIOS


2K

的增量扫描
C800:000h 


DF800:000h

直接的地址,以检测计算机中可能装的其他
ROM

,比如网卡、
SCSI

适配器等,如果找到一个设备的
ROM

,则对该设备的
ROM

中的内容做校验和,如果检测通过则将控制权转交给设备
BIOS

让其对设备进行初始化,初始化结束后
BIOS

再收回控制权,如果校验和检测失败,将再屏幕上显示:“
XXX ROM Error

”,其中
XXX

是检测到该
ROM

的地址的断地址。


然后,
BIOS

开始检测地址为
0000:0472h

的内存,该处存放这一个标识系统是通过冷启动启动还是通过热启动启动的标志,如果为
1234h

则代表热启动(该数值是一
little endian

的格式存储的,因此在内存中的应为
3412

),
BIOS

将直接跳过剩余的
POST

例程。如果是冷启动,
BIOS

将继续执行剩余的
POST

例程,在此过程中,
BIOS

将一个
16

进制的编码写到端口
80h

(不同的计算机端口号会不同),这个
16

进制编码指示在何时检测什么。


 


3


、引导操作系统

 


POST

结束之后,
BIOS

会寻找一个操作系统。通常,
BIOS

会试图在软驱中寻找
DOS

系统的引导盘,如果找不到,它会试图在
C

盘寻找操作系统。如果软驱中有引导盘,
BIOS


1

扇区
0

磁头
0

柱面的内容(引导记录)载入内存
0000


7C
00h

开始的地方。如果软盘中没有
DOS

引导盘,则
BIOS

搜索硬盘寻找硬盘的第一个扇区,然后把主引导记录(
MBR

)载入内存
0000


7C
00h

开始的地方。
一旦引导记录加载完毕,
BIOS
就交出系统的执行控制权,跳转到引导程序的头部执行。下面就是硬盘的
MBR
代码流程,其中的引导扇区是指硬盘相应分区的第一个扇区,是和操作系统有关的操作系统的引导是由它来完成的,而
MBR
(硬盘的第一个扇区)并不负责,
MBR
和操作系统无关他的任务是把控制权转交给操作系统的引导程序
 


程序流程:
 


将程序代码由
0000:7C00H
移动到
0000:0600H
(注,
BIOS

MBR
放在
0000:7C00H
处)
 


搜索可引导分区,即
80H
标志
 

成功:
goto 3 

失败:跳入
ROM BASIC 

无效分区表:
goto 5 


读引导扇区
 (

注:用于操作系统的引导,将它读到
0000

7C
00H)

失败:
goto 5 

成功:
goto 4 


验证引导扇区最后是否为
55AAH 

失败:
goto 5 

成功:
goto 6 


打印错误进入无穷循环
 


跳到
0:7C00H
进行下一步启动工作
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BIOS启动过程详解 的相关文章

随机推荐

  • 11月编程语言排行出了!榜单有何新变化?

    11月TIOBE编程排行榜已更新 一起看看本月各大编程语言有何新进展 11月TIOBE编程排行榜前15名 TOP 10编程语言TIOBE指数走势 素材来自https www tiobe com tiobe index 如侵删 在本月TIOB
  • 数据库知识整理 - 数据库恢复技术(故障种类、数据转储、日志文件、恢复策略)

    主要内容 事务的基本概念 故障的种类 1 事务内部的故障 2 系统故障 3 介质故障 4 计算机病毒 数据库恢复技术 数据转储 登记日志文件 登记日志文件的作用以及原则 恢复策略 事务故障的恢复 系统故障的恢复 介质故障的恢复
  • 如何将CAD绘图软件的语言设置为中文状态下

    我们在进行使用CAD绘图软件来绘制图纸的时候 一般都需要建CAD编辑器进行设置一下在使用 那么 如何将CAD绘图软件的语言设置为中文状态下 具体要怎么来进行操作呢 那下面小编就来教教大家将CAD绘图软件设置为中文状态下的操作方法吧 希望对你
  • 关于struts2和javamail的配合使用

    这几天用到了javamail 开始写了个程序 建了个java项目 可以正常运行 但是后来加入到struts2项目中 就开始报错ClassNotFound之类的错误 解决方法是在myeclipse的安装目录下找到common文件夹 打开其中的
  • Arduino pro micro开发板的程序烧录问题

    Arduino pro micro是我大二的时候买的一个开发板 当时是玩Arduino开发板之后 尝试做一个小东西 但是买回来后 不知道程序怎么下载 多种尝试也没有成功 时隔多年 在家收拾东西翻出来后 再试了一下 发现我当时想多了 没好好地
  • IDEA教程之Activiti插件

    本文作者 Spring ZYL 文章来源 人生就是一个不断学习的过程 码农StayUp CSDN博客 SpringBoot全家桶 Java数据结构与算法分析 设计模式领域博主 版权声明 本文版权归作者所有 转载请注明出处 一 安装Activ
  • 《软件测试》第十四章 网站测试

    软件测试 第十四章 网站测试 14 0 前言 14 1 网页基础 14 2 黑盒测试 14 2 1 文本 14 2 2 超级链接 14 2 3 图片 14 2 4 表单 14 2 5 对象和其他各种简单的功能 14 3 灰盒测试 14 4
  • QQ和MSN 在线代码

    QQ在线聊天代码 a href img src images qq交谈 bmp alt qq交谈 width 68 height 29 border 0 a MSN在线聊天代码 a href target blank img src ima
  • Callable 和 Future

    Callable 和 Future 是 Java 并发编程中用于处理多线程任务的两个关键接口 它们通常与线程池一起使用 以实现异步任务执行和获取结果的功能 Callable Callable 是一个泛型接口 它定义了一个带有返回值的任务 与
  • 多线程爬虫的实现----threading库的使用

    1 作爬虫的时候为了提升抓取的速度 这个时候就需要开启多个线程同时抓取数据 今天就分享一下如何使用Python中的threading库实现多线程抓取数据 from shop import ShopSpider import threadin
  • 微服务框架相关 OpenFeign 源码

    目录 一 基础 二 初始化注册 三 FeignClient 自动配置 四 FeignClient 创建 五 网络请求的发出 六 负载均衡 SpringCloud Loadbalancer 一 基础 使用 OpenFeign 流程 项目中引入
  • 2如何识别操作系统_信创产业成为风口,如何“迁移”值得研究(二)

    在上一讲 信创产业成为风口 如何 迁移 值得研究 中 我们分析了什么是 信创 以及数据迁移在信创过程中的重要意义及其基本要求 本次文章中我们将继续分析 信创实践过程中数据迁移的难点及其解决之道 1难点1 迁移场景复杂 在信创实践过程中 随着
  • html搜索栏热搜效果,CSS3实战开发:百度新闻热搜词特效实战开发_html/css_WEB-ITnose...

    各位网友 今天这篇文章 我将手把手带领大家开发百度新闻首页的 新闻热搜词 特效 在这个特效中应用的知识点都很基础 如果你对这些还不清楚 可以关注我以前写的详细教程 今天讲这个案例 也是希望告诉大家 在开发一个特效的时候 请不要将问题复杂化
  • valn的基础配置

    vlan作业 1 交换机进行vlan配置 lsw1 lsw2 2 进行单臂路由的配置 3 DHCP配置 地址池的配置 端口启动
  • LR-ASPP论文

    论文地址 https arxiv org abs 1905 02244 摘要 我们提出了基于互补搜索技术的组合以及一个新颖的架构设计的下一代移动网络 MobileNetV3通过结合NetAdapt算法补充的硬件网络架构搜索 NAS 调整到移
  • 配置JAVA环境变量

    一 自行安装JDK 位置默认C盘 JDK全称是Java Development Kit 是整个Java的核心 包括了Java运行环境 Java工具和Java基础类库 JDK 是整个Java的核心 包括了Java运行环境 Java工具和Jav
  • 一文读懂 QUIC 协议:更快、更稳、更高效的网络通信

    作者 李龙彦 来源 infoQ 你是否也有这样的困扰 打开 APP 巨耗时 刷剧一直在缓冲 追热搜打不开页面 信号稍微差点就直接加载失败 如果有一个协议能让你的上网速度 在不需要任何修改的情况下就能提升 20 特别是网络差的环境下能够提升
  • 万得Wind量化与东方财富Choice量化接口使用

    接口需要付费 这里接口的付费和配置就不展开了 wind相对容易配置 直接用软件就可以点击并配置 东财请参考 Mac使用Python接入东方财富量化接口Choice 调试与获取数据 但有一点需要注意 wind使用量化接口的时候wind终端需要
  • 王炸功能ChatGPT 联网插件功能放开,视频文章一键变思维导图

    就在上周5月13日 Open AI 发文称 我们将在下周向所有ChatGPT Plus 用户开放联网功能和众多插件 这意味着什么 首先联网功能将使得ChatGPT不再局限于回答2021年9月之前的信息 能直接联网查询最新消息 而插件功能就可
  • BIOS启动过程详解

    BIOS 工作原理 最近几天在看 UNIX 操作系统设计 突然想到计算机是如何启动的呢 那就得从 BIOS 说起 其实这个冬冬早已是 n 多人写过的了 今天就以自己的理解来写写 权当一个学习笔记 一 预备知识 很多人将 BIOS 与 CMO