作为一个web前端工程师,我准备写写linux insides的笔记,看着一些操作系统的东西,总是想起那些年翻看osdev wiki的日子,三十天没能自制的操作系统,还有半途而废的halfdogOS╯﹏╰ 开始正文。 计算机上电,cpu初始化程序指针到rom的里oxfffffffo的位置。 进入实模式,一个古老的从8086兼容下来的模式,寄存器只有16位,总线只有20位,结果就是地址空间只有1m,为了让16位寄存器只能表示64k的寄存器寻址1mb空间,先人们发明了分段这种东西。 两个寄存器,一个表示分段起始地址,一个表示偏移,这样就相当于32位寄存器能寻4g地址,可惜实模式地址空间只有1mb 好吧,oxfffffffo包含跳转到bios的指令,依然在rom里,bios就干了硬件自检等一大票事,然后找到可引导硬件。 比如,硬盘的第一个512字节扇区,这个扇区要按规矩设定,比如最后是oxaa55啥的。 Bios会把比如这个区域的代码载入ram地址ox7coo跳转,当然实模式下,其他地址各做什么用途都规定好了,bios该初始化啥数据该放哪应该也放哪了,然后 程序运行到ox7coo,bootloader这种东西,就可以从这里开始了 下回分解,哈哈,好歹我也rolling my own bootloader过,然而好像不怎么懂linux insides下一章在说啥⊙▽⊙ 干杯!
时间: 2024-10-27 02:21:32