概述文档翻译实验记录概述 课程介绍 文档翻译 book-riscv-rev1 第一章 操作系统接口 1.1 进程和内存1.2 I/O和文件描述符1.3 管道1.4 文件系统1.5 真实世界1.6 练习 第二章 操作系统架构 2.1 抽象系统资源2.2 用户态,核心态,以及系统调用2.3 内核组织2.4 代码:XV6架构篇2.5 进程概述2.6 代码:启动XV6和第一个进程2.7 真实世界2.8 练习 第三章 页表 3.1 页式硬件3.2 内核地址空间3.3 代码:创建一个地址空间3.4 物理内存分配3.5 代码:物理内存分配3.6 进程地址空间3.7 代码:sbrk3.8 代码:exec3.9 真实世界3.10 练习 第四章 陷阱指令和系统调用 4.1 RISC-V陷入机制4.2 从用户空间陷入4.3 代码:调用系统调用4.4 系统调用参数4.5 从内核空间陷入4.6 页面错误异常4.7 真实世界4.8 练习 第五章 中断和设备驱动 5.1 代码:控制台输入5.2 代码:控制台输出5.3 驱动中的并发5.4 定时器中断5.5 真实世界5.6 练习 第六章 锁 6.1 竞态条件6.2 代码:Locks6.3 代码:使用锁6.4 死锁和锁排序6.5 锁和中断处理函数6.6 指令和内存访问排序6.7 睡眠锁6.8 真实世界6.9 练习 第七章 调度 7.1 多路复用7.2 代码:上下文切换7.3 代码:调度7.4 代码:mycpu和myproc7.5 sleep与wakeup7.6 代码:sleep和wakeup7.7 代码:Pipes7.8 代码:wait, exit和kill7.9 真实世界7.10 练习 第八章 文件系统 8.1 概述8.2 Buffer cache层8.3 代码:Buffer cache8.4 日志层8.5 日志设计8.6 代码:日志8.7 代码:块分配器8.8 索引结点层8.9 代码:Inodes8.10 代码: Inode包含内容8.11 代码:目录层8.12 代码:路径名8.13 文件描述符层8.14 代码:系统调用8.15 真实世界8.16 练习 Introduction使用GNU DebuggerC Pointers, gdbCalling ConventionJournaling the Linux ext2fs Filesystem 实验记录 版本控制实验内容 Lab1: Xv6 and Unix utilitiesLab2: System callsLab3: Page tablesLab4: TrapsLab5: Xv6 lazy page allocationLab6: Copy-on-Write Fork for xv6Lab7: MultithreadingLab8: LocksLab9: File systemLab10: MmapLab11: Network 实验解析 Lab1: UtilLab2: SyscallLab4: TrapsLab5: Xv6 lazy page allocationLab6: Copy-on-Write Fork for xv6Lab7: MultithreadingLab8: LocksLab9: File systemLab10: Mmap