搜索
您的当前位置:首页正文

ucore操作系统学习引导---lab1

来源:知库网

ucore总体架构了解

    │  Makefile
    │  
    ├─boot
    │      asm.h
    │      bootasm.S
    │      bootmain.c
    │      
    ├─kern
    │  ├─debug
    │  │      assert.h
    │  │      kdebug.c
    │  │      kdebug.h
    │  │      kmonitor.c
    │  │      kmonitor.h
    │  │      panic.c
    │  │      stab.h
    │  │      
    │  ├─driver
    │  │      clock.c
    │  │      clock.h
    │  │      console.c
    │  │      console.h
    │  │      intr.c
    │  │      intr.h
    │  │      kbdreg.h
    │  │      picirq.c
    │  │      picirq.h
    │  │      
    │  ├─init
    │  │      init.c
    │  │      
    │  ├─libs
    │  │      readline.c
    │  │      stdio.c
    │  │      
    │  ├─mm
    │  │      memlayout.h
    │  │      mmu.h
    │  │      pmm.c
    │  │      pmm.h
    │  │      
    │  └─trap
    │          trap.c
    │          trap.h
    │          trapentry.S
    │          vectors.S
    │          
    ├─libs
    │      defs.h
    │      elf.h
    │      error.h
    │      printfmt.c
    │      stdarg.h
    │      stdio.h
    │      string.c
    │      string.h
    │      x86.h
    │      
    └─tools
            function.mk
            gdbinit
            grade.sh
            kernel.ld
            lab1init
            moninit
            sign.c
            vector.c

综合上面的文件目录,我们先从总体上进行了解:

  • 错误的观念

    • 认为生成img只需要将代码转换成二进制。
    • 在该目录下,tools文件sign.c等文件并没有写入img文件,而是操作辅助img文件的生成
  • 疑问解答

    • make完后,执行make debug是如何导致操作系统运行的?

      • Makefile文件$(V)$(TERMINAL) -e "cgdb -q -x tools/gdbinit",转到tools/gdbinit
      • gdbinit内容显示file obj/bootblock.o,可见是gdb运行了bootblock.o,然后剩余的工作交给了bootblock.o去做。
    • 如此,bootblock.o将要完成什么工作呢?

      • 谈到bootblock.o完成什么工作,首先要了解他是如何生成的,以及其具体的代码。
      • 可以看到bootblock.o是由bootasm.S和bootmain.c文件组合而成,功能也就是bootasm.S和bootmain.c的组合功能。


        bootblock.o生成示意图
Top