为什么主引导记录的内存地址是0x7C00?
来源:互联网 发布:手机模拟吉他软件 编辑:程序博客网 时间:2024/05/17 01:55
简单说,计算机启动是这样一个过程。
1、通电
2、读取ROM里面的BIOS,用来检查硬件
3、硬件检查通过
4、BIOS根据指定的顺序,检查引导设备的第一个扇区(即主引导记录),加载在内存地址 0x7C00
5、主引导记录把操作权交给操作系统
所以,主引导记录就是引导”操作系统”进入内存的一段小程序,大小不超过1个扇区(512字节)。0x7C00这个地址来自Intel的第一代个人电脑芯片8088,以后的CPU为了保持兼容,一直使用这个地址。
1981年8月,IBM公司最早的个人电脑IBM PC 5150上市,就用了这个芯片。当时,搭配的操作系统是86-DOS。这个操作系统需要的内存最少是32KB。我们知道,内存地址从0x0000开始编号,32KB的内存就是0x0000~0x7FFF。
8088芯片本身需要占用0x0000~0x03FF,用来保存各种中断处理程序的储存位置。(主引导记录本身就是中断信号INT 19h的处理程序。)所以,内存只剩下0x0400~0x7FFF可以使用。
为了把尽量多的连续内存留给操作系统,主引导记录就被放到了内存地址的尾部。由于一个扇区是512字节,主引导记录本身也会产生数据,需要另外留出512字节保存。所以,它的预留位置就变成了:
0x7FFF - 512 - 512 + 1 = 0x7C00
+--------------------- 0x0 | Interrupts vectors +--------------------- 0x400 | BIOS data area +--------------------- 0x5?? | OS load area +--------------------- 0x7C00 | Boot sector +--------------------- 0x7E00 | Boot data/stack +--------------------- 0x7FFF | (not used) +--------------------- (...)
转自:http://www.ruanyifeng.com/blog/2015/09/0x7c00.html
0 0
- 为什么主引导记录的内存地址是0x7C00?
- 为什么主引导记录的内存地址是0x7C00?
- 为什么主引导记录的内存地址是0x7C00?
- 为什么主引导记录的内存地址是0x7C00?
- 为什么主引导记录的内存地址是0x7C00?
- 为什么主引导记录的内存地址是0x7C00?
- 为什么主引导记录的内存地址是0x7C00?
- 为什么主引导记录的内存地址是0x7C00?
- 0x7c00引导地址详解
- 为什么bios将mbr装载到0x7c00地址,0x7c00怎么来的?
- 为什么bios将mbr装载到0x7c00地址,0x7c00怎么来的?
- 为什么bios将mbr装载到0x7c00地址,0x7c00怎么来的?(翻译)
- 为什么bios将mbr装载到0x7c00地址,0x7c00怎么来的?
- BIOS加载MBR到内存地址0x7C00的由来
- BIOS加载MBR到内存地址0x7C00的由来
- 为什么GRUB起始地址为0x7c00.
- 为什么BIOS将MBR读入0x7C00地址处(x86平台下)
- 为什么BIOS将MBR读入0x7C00地址处(x86平台下)
- Hibernate的注解开发之数据的三种关系介绍,表结构多对多
- 【IMWeb训练营作业】Todo-list
- 2017.4.19卡片
- log4j知识相关(一)
- LightOJ-1079-Just another Robbery (概率dp)
- 为什么主引导记录的内存地址是0x7C00?
- [bzoj4828][HNOI2017]大佬
- C++远航之封装篇——类外定义和::
- java基础总结02-java基础语法1
- php基础知识学习(一)
- java递归的简单实现方式
- 二叉搜索树第k大个节点
- java对象结构
- 动态规划—09移动路线