2.4 代码(XV6架构篇)

XV6的源代码位于kernel/子目录中,源代码按照模块化的概念划分为多个文件,图2.2列出了这些文件,模块间的接口都被定义在了def.hkernel/defs.h)。

文件 描述
bio.c 文件系统的磁盘块缓存
console.c 连接到用户的键盘和屏幕
entry.S 首次启动指令
exec.c exec()系统调用
file.c 文件描述符支持
fs.c 文件系统
kalloc.c 物理页面分配器
kernelvec.S 处理来自内核的陷入指令以及计时器中断
log.c 文件系统日志记录以及崩溃修复
main.c 在启动过程中控制其他模块初始化
pipe.c 管道
plic.c RISC-V中断控制器
printf.c 格式化输出到控制台
proc.c 进程和调度
sleeplock.c Locks that yield the CPU
spinlock.c Locks that don’t yield the CPU.
start.c 早期机器模式启动代码
string.c 字符串和字节数组库
swtch.c 线程切换
syscall.c Dispatch system calls to handling function.
sysfile.c 文件相关的系统调用
sysproc.c 进程相关的系统调用
trampoline.S 用于在用户和内核之间切换的汇编代码
trap.c 对陷入指令和中断进行处理并返回的C代码
uart.c 串口控制台设备驱动程序
virtio_disk.c 磁盘设备驱动程序
vm.c 管理页表和地址空间

图2.2:XV6内核源文件