Summary Introduction Lab 0 Lab 0 实验目的 准备知识 了解OS实验 设置实验环境 开发OS实验的简单步骤 通过虚拟机使用Linux实验环境(推荐:最容易的实验环境安装方法) 安装使用Linux实验环境(适合希望自己安装Linux系统的同学) 实验中可能使用的软件 了解编程开发调试的基本工具 gcc的基本用法 编译简单的 C 程序 AT&T汇编基本语法 GCC基本内联汇编 GCC扩展内联汇编 make和Makefile gdb使用 进一步的相关内容 基于硬件模拟器实现源码级调试 安装硬件模拟器QEMU Linux运行环境 Linux环境下的源码级安装过程 获得并应用修改 配置、编译和安装 使用硬件模拟器QEMU 运行参数 常用调试命令 [基于qemu内建模式调试ucore] 结合gdb和qemu源码级调试ucore 编译可调试的目标文件 ucore 代码编译 使用远程调试 使用gdb配置文件 加载调试目标 设定调试目标架构 了解处理器硬件 Intel 80386运行模式 Intel 80386内存架构 Intel 80386寄存器 了解ucore编程方法和通用数据结构 面向对象编程方法 通用数据结构双向循环链表 双向循环链表 附录A.ucore实验中的常用工具 附录B.ucore实验参考资料 Lab 1 Lab 1 实验目的 实验内容 练习 练习1 练习2 练习3 练习4 练习5 练习6 扩展练习 项目组成 从机器启动到操作系统运行的过程 BIOS启动过程 bootloader启动过程 保护模式和分段机制 地址空间 硬盘访问概述 ELF文件格式概述 操作系统启动过程 函数堆栈 中断与异常 lab1中对中断的处理实现 实验报告要求 附录A“关于A20 Gate” 附录B“第一条执行指令” Lab 2 Lab 2 物理内存管理 实验目的 实验内容 练习 项目组成 物理内存管理 实验执行流程概述 探测系统物理内存布局 以页为单位管理物理内存 物理内存页分配算法实现 实现分页机制 段页式管理基本概念 建立段页式管理中需要考虑的关键问题 系统执行中地址映射的四个阶段 建立虚拟页和物理页帧的地址映射关系 实验报告要求 附录A. 探测物理内存分布和大小的方法 附录B. 实现物理内存探测 附录C. 链接地址/虚地址/物理地址/加载地址以及edata/end/text的含义 附录D. 自映射机制 Lab 3 Lab 3 实验目的 实验内容 练习 项目组成 虚拟内存管理 基本原理概述 实验执行流程概述 关键数据结构和相关函数分析 Page Fault异常处理 页面置换机制的实现 页替换算法 页面置换机制 实验报告要求 Lab 4 Lab 4 实验目的 实验内容 练习 项目组成 内核线程管理 实验执行流程概述 设计关键数据结构 -- 进程控制块 创建并执行内核线程 创建第0个内核线程idleproc 创建第1个内核线程initproc 调度并执行内核线程initproc 实验报告要求 附录A:实验四的参考输出 附录B:【原理】进程的属性与特征解析 Lab 5 Lab 5 实验目的 实验内容 练习 项目组成 用户进程管理 实验执行流程概述 创建用户进程 进程退出和等待进程 系统调用实现 实验报告要求 附录 A:【原理】用户进程的特征 Lab 6 Lab 6 实验目的 实验内容 练习 项目组成 调度框架和调度算法设计与实现 实验执行流程概述 进程状态 进程调度实现 内核抢占点 进程切换过程 调度框架和调度算法 设计思路 数据结构 调度点的相关关键函数 RR 调度算法实现 Stride Scheduling 基本思路 使用优先队列实现 Stride Scheduling 实验报告要求 Lab 7 Lab 7 实验目的 实验内容 练习 项目组成 同步互斥机制的设计与实现 实验执行流程概述 同步互斥机制的底层支撑 计时器 屏蔽与使能中断 等待队列 信号量 管程和条件变量 实验报告要求 附录 Lab 8 Lab 8 实验目的 实验内容 练习 项目组成 文件系统设计与实现 ucore 文件系统总体介绍 通用文件系统访问接口 文件系统抽象层 - VFS file & dir接口 inode 接口 Simple FS 文件系统 文件系统的布局 索引节点 设备层文件 IO 层 关键数据结构 stdout设备文件 stdin 设备文件 实验执行流程概述 文件操作实现 打开文件 读文件 实验报告要求