第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.1BIOS启动过程48
2.3.2bootloader启动过程48
2.3.3操作系统启动过程57
2.4实验报告要求66
辅助材料A关于A20 Gate66
辅助材料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.4Page 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.6Stride Scheduling154
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 runmatrix大致的显示输出171第9章实验8: 文件系统173
9.1实验目的173
9.2实验内容173
9.2.1练习173
9.2.2项目组成173
9.3文件系统的设计与实现176
9.3.1ucore文件系统总体介绍176
9.3.2通用文件系统访问接口179
9.3.3Simple FS文件系统179
9.3.4文件系统抽象层——VFS183
9.3.5设备层文件I/O层185
9.3.6实验执行流程概述189
9.3.7文件操作实现190
9.4实验报告要求193