项目组成与执行流
项目组成
lab2
├── Makefile
├── 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
│ ├── init
│ │ ├── entry.S
│ │ └── init.c
│ ├── libs
│ │ └── stdio.c
│ ├── mm
│ │ ├── best_fit_pmm.c
│ │ ├── best_fit_pmm.h
│ │ ├── default_pmm.c
│ │ ├── default_pmm.h
│ │ ├── memlayout.h
│ │ ├── mmu.h
│ │ ├── pmm.c
│ │ └── pmm.h
│ ├── sync
│ │ └── sync.h
│ └── trap
│ ├── trap.c
│ ├── trap.h
│ └── trapentry.S
├── lab2.md
├── libs
│ ├── atomic.h
│ ├── defs.h
│ ├── error.h
│ ├── list.h
│ ├── printfmt.c
│ ├── readline.c
│ ├── riscv.h
│ ├── sbi.c
│ ├── sbi.h
│ ├── stdarg.h
│ ├── stdio.h
│ ├── string.c
│ └── string.h
└── tools
├── boot.ld
├── function.mk
├── gdbinit
├── grade.sh
├── kernel.ld
├── kernel_nopage.ld
├── sign.c
└── vector.c
10 directories, 51 files
链表
libs/list.h
:定义了通用双向链表结构以及相关的查找、插入等基本操作,这是建立基于链表方法的物理内存管理(以及其他内核功能)的基础。其他有类似双向链表需求的内核功能模块可直接使用 list.h 中定义的函数。
物理内存管理器
kern/mm/pmm.c(h)
物理内存管理器结构的实现,定义了内存管理相关函数。
默认的页面分配算法
kern/mm/default_pmm.c(h)
上一节已经介绍完毕,具体的内存管理函数的实现,还包括实现的检查。
Best Fit 页面分配算法
kern/mm/best_fit_pmm.c(h)
这就是需要自己实现啦~疯狂暗示:依葫芦画瓢!甚至是画葫芦。
执行流
结合前面所述自行理解、总结。
最后更新于
这有帮助吗?