大家一起写操作系统-准备知识(1)--计算机的启动过程

来源:互联网 发布:总裁小说改编的网络剧 编辑:程序博客网 时间:2024/05/19 06:17

    对于一个没有安装任何软件的裸机,我们想要利用它,就要给它写一个操作系统来充分发挥它的性能。所以想要写操作系统,首先就要知道裸机上电后会做些什么,会执行哪些指令,从而知道我们的操作系统应该放在哪儿,应该如何写,所以先介绍计算机的启动过程。


    当计算机上电后,物理内存被设置成从地址0开始的连续区域。除了地址从0xA0000-0xFFFFF(640KB~~~1M共384KB,DOS中的经典640KB内存限制).和0xFFFE0000~~~0xFFFFFFFF(4GB处最后64KB)范围以外的所有内存都可用做系统内存。

    CPU会自动把CS寄存器设置为0xF000,其段基地址为0xFFFF0000,段界限为64KB.而ip寄存器被设为0xFFF0,因此此时CPU代码指针指向0xFFFFFFF0处,即4GB地址空间的最后64KB处。这段地址正好映射为ROM BIOS存放的位置.BIOS会在这里存放一条JMP指令,用来跳转到BIOS 64KB范围内的某一条指令开始执行。BIOS完成一系列硬件检测和初始化操作后,就会把BIOS代码和数据放到1M内存的末端,然后跳转到这个地方让CPU真正运行在实模式下(即只能访问最多1M地址空间且末开启段级和页级保护).最后BIOS就会从硬盘或其他块设备把操作系统引导程序512B加载到内存0x7c00处,并跳转到这个地方开始执行引导程序。这时的CS,DS等段寄存器被初始化0x0000,ip为0x7c00.所以写操作系统的第一步就是写一个小于512B的引导程序,并放到软盘或硬盘的引导扇区中。下一节讲会写一个模仿引导功能的引导程序,并说明其中要注意的事项。


原创粉丝点击