回顾一下电脑启动的过程

首先回顾一下电脑启动的过程:

1.通电
2.读取ROM里面里面的BIOS(在1M内存的顶部),用来检测硬件
3.BIOS根据指定的顺序,寻找第一个扇区(主引导程序),加载内存地址0x7c00
4.主引导记录把操作权限交给操作系统

众所周知,电脑启动时,主引导程序(Master boot record,MBR)会从硬盘到内存地址0x7c00处。为什么不是其他地址,为什么偏偏存入这个比32k小1024字节的地方,它有什么特殊?许多书籍或博客都是一笔 带过说Intel规定的。

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

当时搭配操作系统的86_DOS,这个操作系统需要的最少内存是32k,那么内存地址就是0x0000~0x7FFF.

由于操作系统是中断驱动,所以需要存储各种中断处理程序的位置,因此8088用0x 000~0x03FF存储,所以只剩下0x400~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)
+--------------------- (...)
posted @ 2024-05-29 17:50  飞雪飘鸿  阅读(21)  评论(0编辑  收藏  举报
https://damo.alibaba.com/ https://tianchi.aliyun.com/course?spm=5176.21206777.J_3941670930.5.87dc17c9BZNvLL