Summary Introduction 封面 前言 操作系统简介 应具备的背景知识和学习环境 了解计算机硬件架构 一般计算机硬件架构 RISC-V硬件架构 了解操作系统 操作系统的历史 操作系统的定义与目标 操作系统的接口 操作系统的抽象 操作系统的特征 “麻雀”操作系统--ucore ucore简介 小结 启动操作系统 实验一:显示字符的toy bootloader 背景:Intel 80386加电后启动过程 背景:设备管理:理解设备访问机制 背景:内存管理:理解保护模式和分段机制 实现:实模式到保护模式的切换 实现:设置栈内存空间 实现:显示字符串 实验二:读ELF格式文件的baby bootloader 背景:访问硬盘数据控制 背景:理解ELF文件格式 背景:操作系统执行代码的组成 实现:bootloader加载并运行ucore 实现:可输出字符串的ucore 小结 参考资料 ucore操作系统开始控制计算机 实验三:能显示函数调用关系的ucore 背景:栈结构和处理过程 实现:分析内核函数调用关系 实验四:可管理中断并处理中断方式I/O的ucore 背景:理解CPU对外设中断的硬件支持 实现:初始化中断控制器 实现:初始化中断门描述符表 实现:外设的相关中断初始化 实现:中断处理过程 实验五:可在内核态和用户态之间进行切换的ucore 背景:分段机制的特权限制 背景:80386的任务切换 实现:内核态切换到用户态 实现:用户态切换到内核态 操作系统基本原理:管理计算机硬件 小结 物理内存管理 实验1: 建立分页管理机制 背景: 计算机物理内存分布和大小 实现: 物理内存探测 原理: 分页内存管理 背景: X86的分页硬件支持 实现: 实现分页内存管理 原理: 页内存分配算法 实验2: 实现任意大小内存分配 实现: slab算法的简化设计实现 实验3: 支持虚存管理功能 原理: 虚拟内存管理 proj7/8/9/9.1/9.2概述 proj7:支持缺页异常和VMA结构 实现: vma_struct数据结构和相关操作 实现: 缺页异常处理 proj8:支持页换入换出 原理: 页面置换算法 实现: 页面置换机制实现 proj9.1:实现共享内存 proj9.2:实现写时复制 进程管理与调度 实验1: 创建并执行内核线程 原理: 进程的属性与特征解析 实现: 设计进程控制块 实现: 创建并执行内核线程 实验2: 创建并执行用户进程 原理: 用户进程的特征 创建用户进程 基于时间事件的等待与唤醒 进程退出和等待进程 系统调用实现 实验3: 基于内核线程实现全局内存页替换机制 等待队列设计与实现 内存页置换机制的执行过程 实验4: 创建并执行用户线程 原理: 线程的属性与特征分析 实现: 创建并执行用户线程 进程运行状态转变过程 实验5: 进程调度 原理: 进程调度 实现: 进程调度 小结 附录 附录A--ucore历史 附录B--构成ucore lab的小项目列表 附录C--ucore开发者列表 附录D--ucore实验中的工具 附录E--MOOC OS相关信息 附录F--版权信息