mit-6.828 boot/mian.c 源码阅读
- boot/mian.c
-
boot.S & main.c存在磁盘第一个扇区
-
第二个扇区开始保存kernel
-
内核需为ELF格式
-
Boot up steps:
- CPU启动后,加载BIOS进入内存并执行它
- BIOS初始化设备、一系列中断准备、读取第一个扇区的boot device到内存并跳到该处
- 从boot.S开始控制,它建立保护模式+1个stack,以便C代码可以跑,然后调用bootmain()函数
- bootmain()函数读取内核并跳到内核
-
segment 和 sector的关系:一个segment包含多个sector
-
readsect(void *dst, uint32_t offset)
-
readseg(uchar *pa, uint count, uint offset)
它的功能从注释上来理解是,把距离内核起始地址offset个偏移量存储单元作为起始,将它和它之后的count字节的数据读出送入以pa为起始地址的内存物理地址处。