在csdn记录OS的开发学习笔记
先问几个问题:
(1)OS启动顺序?BIOS功能?MBR功能?loader功能?
(2)如何将硬盘加载到内存?
解答第一个:
OS的启动顺序大致为BIOS -> MBR ->loader
BIOS是固化在内存ROM中的,BIOS主要工作是检查内存,显卡等外设信息,建立中断向量表等数据结构,最后将MBR加载到内存0x7c00处,并将指令指针指向0x7c00,完成BIOS的使命 。
MBR位于磁盘0扇区(LBA方式磁盘寻址), 共512字节 , 最后两个字节存放的数据是0x55和0xaa,作为确定是MBR的依据。
BIOS的代码是主板在出厂时就已在ROM中固化好的,不需要我们去写。
MBR的功能主要是执行引导程序,加载loader,建立分区表;我们把重点放在loader加载的实现上。
loader的功能主要是
(1)建立内核所需的各种数据结构,如GDT,页表
(2)加载内核,将指令指针跳转到内核代码的入口地址
解答第二个
解答如何将内存加载到硬盘,需要了解硬盘的寻址方式,端口,端口加载顺序,加载到内存何处。
一、扇区的寻址方式:
扇区有两种寻址方式,一种是CHS(柱面-磁头-扇区),一种是LBA(逻辑块编址),因为LBA是将扇区从0开始编址,逐渐递增,更容易表达。所以我们采用LBA方式进行寻址,