mit-6.828 boot/mian.c 源码阅读

- boot/mian.c

  • boot.S & main.c存在磁盘第一个扇区

  • 第二个扇区开始保存kernel

  • 内核需为ELF格式

  • Boot up steps:

    1. CPU启动后,加载BIOS进入内存并执行它
    2. BIOS初始化设备、一系列中断准备、读取第一个扇区的boot device到内存并跳到该处
    3. 从boot.S开始控制,它建立保护模式+1个stack,以便C代码可以跑,然后调用bootmain()函数
    4. bootmain()函数读取内核并跳到内核
  • segment 和 sector的关系:一个segment包含多个sector

  • readsect(void *dst, uint32_t offset)

  • readseg(uchar *pa, uint count, uint offset)

    它的功能从注释上来理解是,把距离内核起始地址offset个偏移量存储单元作为起始,将它和它之后的count字节的数据读出送入以pa为起始地址的内存物理地址处。

posted @ 2020-07-31 13:31  Cindy's  阅读(277)  评论(0编辑  收藏  举报