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内核源文件