BIOS(控制权交接第一棒)

编程入门 行业动态 更新时间:2024-10-11 09:26:09

计算机系统的控制权(CPU的使用权)交接的第一棒是BIOS!接下来,我们简单学习一下BIOS相关知识。

在计算机接电后按下开机键,首先运行的软件是基本输入输出系统(Basic Input Output System,BIOS

于是就产生了非常经典的3个问题?

  1. BIOS是由谁加载的?
  2. BIOS被加载到哪里呢?
  3. 它的cs:ip是由谁更改滴?

为了更好的理解上面的3个问题,先简单了解一些实模式下的1MB内存布局。

实模式下的1MB内存布局

Intel 8086 有 20 条地址线,故其可以访问 1MB 的内存空间,即 20 次方=1048576 = 1MB。

地址范围用十六进制来表示,是 0x00000 到 0xFFFFF。这1MB的内存空间对其进行划分,如下表所示:

实模式下的内存布局

从低地址看,地址0~0x9FFFF (空间范围为640KB)处是 DRAM (Dynamic Random Access Memory ),即动态随机访问内存(动态的含义是需要不断刷新),我们所装的物理内存就是DRAM,如 DDR,DDR2等,也就是插在主板上的内存条

看顶部的 0xF0000~0xFFFFF ,这 64KB 的内存是 ROM 。这里面存的就是 BIOS 的代码。 BIOS 的主要工作是检测、初始化硬件(硬件自己供了一些初始化的功能调用, BIOS 直接调用就可以完成初始化硬件的工作)。


【补充pro】

电脑安装了 4GB 内存,电脑中只显示 3.8GB 左右??

【说明】

上述问题可转化成在CPU眼中,我们插在主板上的物理内存不是它眼里“全部的内存”。

在计算机中,并不是只有咱们插在主板上的内存条需要通过地址总线访问,还有一些外设同样是需要通过地址总线来访问的,这类设备还很多呢。若把全部的地址总线都指向物理内存,那其他设备该如何访问呢?

因此,只好在地址总线上提前预留出来一些地址空间给这些外设用,这片连续的地址给显存,这片连续的地址给硬盘控制器等。留够了以后,地址总线上其余的可用地址再指向 DRAM,也就是指插在主板上的内存条。如下图所示。


✳✳✳回到最初的3个问题上~

  1. BIOS是由谁加载的?

BIOS是由硬件加载的。这个硬件相当于只读存储器(Read-Only Memory,ROM),只读存储器内容是不可擦除。BIOS被写入此ROM。由于ROM是内存,内存就会被访问,此ROM 被映射在低端1MB 内存的顶部,即地址0xF0000~0xFFFFF 处。因此只要访问此处的地址便是访问了 BIOS ,这个映射是由硬件完成的。

  1. BIOS被加载到哪里呢?

由上面的说明可知,BIOS被加载到0xF0000~0xFFFFF 处。BIOS 本身是个程序,程序要执行,就要有个入口地址才行,此入口地址便是0xFFFF0。

  1. 它的cs:ip是由谁更改滴?

在开机的 瞬间,也就是接电的一瞬间, CPU cs: ip 寄存器被强制初始化为 0xF000 : 0xFFF0。由于开机的时候处于实模式,在实模式下的段基址要乘以 16 ,也就是左移 4 位,于是 0xF000 : 0xFFF0的等效地址将是0xFFFF0 。0xFFFF0 地址便是 BIOS 的入口地址。

参考资料

  • 《操作系统真象还原》

更多推荐

BIOS(控制权交接第一棒)

本文发布于:2023-10-23 14:19:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1521068.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:控制权   BIOS

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!