实验内容
1.PC Bootstrap
了解x86汇编语言
使用QEMU模拟器模拟x86的环境
了解PC的物理地址空间
相关知识
(简单记录)
PC的物理地址空间
BIOS占据着0x000F0000~0x00100000的地址空间,PC启动后,就会执行BIOS的指令,一些初始化操作完成后,就会从某个合适的地方加载操作系统。
gdb环境下可以看到PC启动后运行BIOS的第一条指令
[f000:fff0] 0xffff0: ljmp $0xf000,$0xe05b
gdb执行si命令(exercise2 内容)后,跟踪到了BIOS执行的几条指令
(gdb) si
[f000:e05b] 0xfe05b: cmpl $0x0,%cs:0x6ac8
0x0000e05b in ?? ()
(gdb) si
[f000:e062] 0xfe062: jne 0xfd2e1
0x0000e062 in ?? ()
(gdb) si
[f000:e066] 0xfe066: xor %dx,%dx
0x0000e066 in ?? ()
(gdb) si
[f000:e068] 0xfe068: mov %dx,%ss
0x0000e068 in ?? ()
(gdb) si
[f000:e06a] 0xfe06a: mov $0x7000,%esp
0x0000e06a in ?? ()
(gdb) si
[f000:e070] 0xfe070: mov $0xf34c2,%edx
0x0000e070 in ?? ()
(gdb) si
[f000:e076] 0xfe076: jmp 0xfd15c
0x0000e076 in ?? ()
(gdb) si
[f000:d15c] 0xfd15c: mov %eax,%ecx
0x0000d15c in ?? ()
(gdb) si
[f000:d15f] 0xfd15f: cli
0x0000d15f in ?? ()
(gdb) si
[f000:d160] 0xfd160: cld
0x0000d160 in ?? ()
(gdb) si
[f000:d161] 0xfd161: mov $0x8f,%eax
0x0000d161 in ?? ()
结论
从这一part的内容可以得知BIOS的作用是控制,初始化,检测各种底层设备。它最重要的功能是把操作系统从磁盘中导入内存。当BIOS确定了,操作系统位于磁 盘中,那么它就会把这个磁盘的第一个扇区,通常把它叫做启动区(boot sector)先加载到内存中,这个启动区中包括一个非常重要的程序--boot loader,它会负责完成整个操作系统从磁盘导入内存的工作,以及一些其他的非常重要的配置工作。最后操作系统才会开始运行。