您的位置:首页 > 其它

内存空间问题

2011-01-03 19:45 176 查看
本文章转自:http://www.oldlinux.org/oldlinux/viewthread.php?tid=3451

上世纪八十年代初IBM公司刚推出IBM PC机时,所使用的8088 CPU 外部地址总线是20位的,共可寻址内存范围 0-1MB。

0 - 640KB (640BK)是实际所含RAM内存总容量;

640KB - 960KB (320KB)用于显示卡等外设卡上内存的寻址;

960KB - 1024KB ( 64KB)用于存放ROM BIOS程序。

当加电时,CPU会自动将执行指针设置成0xffff0,该地址正好位于ROM BIOS中。此处存放着一个跳转指令,开始执行BIOS程序。

随着PC技术的发展,采用了80X86 CPU,内存容量也不断增大,地址线也从20位扩展到32位(32机)。但为了与最早的PC机在系统软件一级起就兼容,上述保留地址范围仍然没有改动(只是在实际应用环境中ROM BIOS可以对这些地址范围实现动态映射等方式进行“移动”)。例如为了方便起见,目前的Linux系统中通常仍然跳开物理内存最前段的1MB内存而从第2MB开始加载内核。。。。。

2. 启动扇区

启动扇区有两种,一种是位于硬盘第1个扇区上的引导扇区,它是整个硬盘的主引导扇区。其中包含有分区表。另一种是各个分区的第1个扇区,软盘系统就象硬盘上的一个分区。它只引导启动本分区的操作系统。bootsect不是主引导扇区代码而是分区的引导代码。在编程时为了控制其大小正好为512字节,通常采用汇编语言的“定位”前导码来指定代码或数据位置,例如我们使用.org命令如下定义:

.org 511

db 0x55, 0xaa

这样就能保证这两个标志字节是扇区的最后两个字节。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: