2.4 代码(XV6架构篇)
XV6的源代码位于kernel/子目录中,源代码按照模块化的概念划分为多个文件,图2.2列出了这些文件,模块间的接口都被定义在了def.h(kernel/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内核源文件