美文网首页
为什么主要引导内存地址是ox7coI?

为什么主要引导内存地址是ox7coI?

作者: Ly_Never | 来源:发表于2019-07-26 22:27 被阅读0次

《计算机原理》一书讲到:启动时,主引导记录会存入内存地址0x7C00

这个奇怪的地址是如何来的呢?

简单说,计算机启动是这样一个过程:

1.通电
2.读取ROM里面的BIOS,用来检查硬件
3.硬件检查通过
4.BIOS根据指定的顺序,检查引导设备的第一个扇区(即主引导记录),加载在内存地址 0x7C00
5.主引导记录把操作权交给操作系统

所以,主引导记录就是引导"操作系统"进入内存的一段小程序,大小不超过1个扇区(512字节)

0x7C00这个地址来自Intel的第一代个人电脑芯片8088,以后的CPU为了保持兼容,一直使用这个地址.

IBM PC 5150

这台电脑搭配的操作系统是86-DOS。这个操作系统需要的内存最少是32KB。我们知道,内存地址从0x0000开始编号,32KB的内存就是0x0000~0x7FFF。

8088芯片本身需要占用0x0000~0x03FF,用来保存各种中断处理程序的储存位置。(主引导记录本身就是中断信号INT 19h的处理程序。)所以,内存只剩下0x0400~0x7FFF可以使用。

为了把尽量多的连续内存留给操作系统,主引导记录就被放到了内存地址的尾部。

由于一个扇区是512字节,主引导记录本身也会产生数据,需要另外留出512字节保存。所以,它的预留位置就变成了:

0x7FFF - 512 - 512 + 1 = 0x7C00

0x7C00就是这样来的。

计算机启动后,32KB内存的使用情况如下:

+--------------------- 0x0
| Interrupts vectors
+--------------------- 0x400
| BIOS data area
+--------------------- 0x5??
| OS load area
+--------------------- 0x7C00
| Boot sector
+--------------------- 0x7E00
| Boot data/stack
+--------------------- 0x7FFF
| (not used)
+--------------------- (...)

相关文章

  • 为什么主要引导内存地址是ox7coI?

    《计算机原理》一书讲到:启动时,主引导记录会存入内存地址0x7C00 这个奇怪的地址是如何来的呢? 简单说,计算机...

  • App设计之引导页

    今天来谈谈引导页,主要是 app 启动后展现的引导页,也有人称为前置引导页。今天从是什么、为什么、怎么做来谈论引导...

  • 聊聊Java中的 " == "、equals

    关于 “ == ” “ == ”操作符主要比较的是操作符两端对象的内存地址。如果两个对象的内存地址是一致的,那么就...

  • 为什么内存地址是以字节为单位?

    为什么C语言中内存地址0x0001和内存地址0x0002之间差的是一个byte,而不是一个bit? 通过内存的物理...

  • D048+3组小莹子+《你就是孩子最好的玩具》

    今日阅读到本书的第70页,主要介绍为什么要进行情感引导、建立情感纽带以及情感引导的步骤。 据统计,父母每天和孩子谈...

  • No.005-提示引导设计小结

    一. 什么是提示引导 提示引导在产品中使用范围非常广泛,其主要目的是为提示和引导用户,以达到特定的目的。提示引导的...

  • Netty学习--引导

    Bootstrap 类 引导类的层次结构注:为什么引导类是Cloneable 的?只会创建引导类实例的EventL...

  • Object、Enum

    toString方法,返回:类名@内存地址toString equals方法,==,比较的是内存地址this是一个...

  • 安卓内核剖析1

    linux启动过程 开机,确保cpu最后被复位,完成复位后,开始从固定内存地址执行第一套指令,既引导程序(Boot...

  • 变量笔记

    #变量及数据类型 一.变量 (1)为什么使用变量 内存地址不好记,使...

网友评论

      本文标题:为什么主要引导内存地址是ox7coI?

      本文链接:https://www.haomeiwen.com/subject/sgpohctx.html