.
├── include // global include files directory
├── kernel // kernel code files directory
├── Makefile // project script
├── docs.sh // generate document script
├── .gitignore
├── .gdbinit
├── README.md
└── user // user code files directory
make run
使用<C-a> x
退出操作系统
make gdb
然后,新建一个终端,运行gdb
:
#example
riscv64-linux-gnu-gdb
退出gdb
同时也会退出qemu
make docs
生成文档依赖以下工具
sudo apt install doxygen
sudo apt install cmake graphviz
sudo apt install texlive-latex-base texlive-fonts-recommended texlive-fonts-extra texlive-latex-extra
sudo apt install latex-cjk-all
暂时参考xv6
内核空间分配设计:
不同之处
KERNELBASE
:内核代码的起始地址是0x80200000
。openSBI
空间分配图如下:
除了trampoline
和trapframe
的内容较为固定以外,其余内容每个用户进程私有。
物理内存采用懒分配机制。
标志位 | 命名 | 含义 |
---|---|---|
8 | C |
写时复制标志位。该标志位为1时,PTE 所对应的物理页表对该用户进程可读不可写,写时需要复制该物理页表 |
9 | F |
最终所有者标志位。该标志位为1时,PTE 所对应的物理页表为该用户进程拥有,该用户进程对该物理页表有释放权 |