第1章 实验0:操作系统实验准备 1
1.1实验目的 1
1.2准备知识 1
1.2.1了解OS实验 1
1.2.2设置实验环境 2
1.2.3了解编程开发调试的基本工具 14
1.2.4基于硬件模拟器实现源码级调试 23
1.2.5了解处理器硬件 31
1.2.6了解ucore编程方法和通用数据结构 34
第2章 实验1:系统软件启动过程 41
2.1实验目的 41
2.2实验内容 41
2.2.1练习 41
2.2.2项目组成 45
2.3从机器启动到操作系统运行的过程 48
2.3.1 BIOS启动过程 48
2.3.2 bootloader启动过程 48
2.3.3操作系统启动过程 57
2.4实验报告要求 66
辅助材料A 关于A20 Gate 66
辅助材料B 启动后第一条执行的指令 68
第3章 实验2:物理内存管理 70
3.1实验目的 70
3.2实验内容 70
3.2.1练习 70
3.2.2项目组成 71
3.3物理内存管理概述 73
3.3.1实验执行流程概述 73
3.3.2探测系统物理内存布局 75
3.3.3以页为单位管理物理内存 75
3.3.4物理内存页分配算法实现 78
3.3.5实现分页机制 81
3.3.6自映射机制 88
3.4实验报告要求 90
辅助材料A 探测物理内存分布和大小的方法 90
辅助材料B 实现物理内存探测 91
辅助材料C 链接地址、虚拟地址、物理地址、加载地址以及edata/end/text的含义 92
第4章 实验3:虚拟内存管理 96
4.1实验目的 96
4.2实验内容 96
4.2.1练习 96
4.2.2项目组成 97
4.3虚拟内存管理概述 98
4.3.1基本原理概述 98
4.3.2实验执行流程概述 99
4.3.3关键数据结构和相关函数分析 100
4.4 Page Fault异常处理 102
4.5页面置换机制的实现 104
4.5.1页替换算法 104
4.5.2页面置换机制 105
4.6实验报告要求 108
辅助材料A:正确输出的参考 109
第5章 实验4:内核线程管理 111
5.1实验目的 111
5.2实验内容 111
5.2.1练习 111
5.2.2项目组成 112
5.3内核线程管理 114
5.3.1实验执行流程概述 114
5.3.2设计关键数据结构——进程控制块 115
5.3.3创建并执行内核线程 117
5.4实验报告要求 122
辅助材料A 实验4的参考输出 123
辅助材料B “原理”进程的属性与特征解析 124
第6章 实验5:用户进程管理 127
6.1实验目的 127
6.2实验内容 127
6.2.1练习 127
6.2.2项目组成 128
6.3用户进程管理 130
6.3.1实验执行流程概述 130
6.3.2创建用户进程 131
6.3.3进程退出和等待进程 136
6.3.4系统调用实现 137
6.4实验报告要求 141
辅助材料A“原理”用户进程的特征 141
第7章 实验6:调度器 145
7.1实验目的 145
7.2实验内容 145
7.2.1练习 145
7.2.2项目组成 146
7.3调度框架和调度算法设计与实现 147
7.3.1实验执行流程概述 147
7.3.2计时器的原理和实现 147
7.3.3进程状态 148
7.3.4进程调度实现 149
7.3.5调度框架和调度算法 150
7.3.6 Stride Scheduling 154
7.4实验报告要求 158
辅助材料A 执行priority大致的显示输出 158
第8章 实验7:同步互斥 160
8.1实验目的 160
8.2实验内容 160
8.2.1练习 160
8.2.2项目组成 161
8.3同步互斥的设计与实现 162
8.3.1实验执行流程概述 162
8.3.2同步互斥的底层支撑 163
8.3.3信号量 165
8.3.4管程和条件变量 167
8.4实验报告要求 171
辅助材料A 执行make run-matrix大致的显示输出 171
第9章 实验8:文件系统 173
9.1实验目的 173
9.2实验内容 173
9.2.1练习 173
9.2.2项目组成 173
9.3文件系统的设计与实现 176
9.3.1 ucore文件系统总体介绍 176
9.3.2通用文件系统访问接口 179
9.3.3 Simple FS文件系统 179
9.3.4文件系统抽象层——VFS 183
9.3.5设备层文件I/O层 185
9.3.6实验执行流程概述 189
9.3.7文件操作实现 190
9.4实验报告要求 193