计算机上电复位,BIOS自检,然后加载MBR到内存0x7c00,跳转到MBR中执行,MBR引导程序查看各分区表项的情况,找到活动分区,将内核加载器装载到内存中,然后将控制权转交给内核加载器,内核加载器执行操作系统引导程序,进入内核。
bootloader中通过BIOS的中断0x15获取物理内存容量,注册内核的段描述符,初始化全局描述符表。
打开A20,加载全局描述符表,将cr0的pe位置1,准备进入保护模式。
jump清空流水线,进入保护模式。
进入保护模式后,创建页目录表和页表,第1023个页目录项和第1023个页表项指向自身页目录表的物理地址,用于内核定位,修改页目录表和页表。第768个页目录项映射到第0个页目录项,实现用户进程的时候会将内核的高端页目录项复制到用户的页目录项中,以实现用户能够实现操作系统的系统调用。
将硬盘上的内核读入内存中,将esp指针指向主线程的内核栈,执行主线程的函数内容。
主线程函数就是程序的入口,执行主函数前会先初始化相应的中断设置,初始化中断描述符表;内存管理,比如对内存池的分配;初始化一些键盘寄存器等;初始化系统调用等。
网友评论