Contents Menu Expand Light mode Dark mode Auto light/dark mode
uCore-Tutorial-Guide-2022S 0.1 文档
uCore-Tutorial-Guide-2022S 0.1 文档

Part1 - Just do it!

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

实验五:用户进程管理#

  • 实验环境配置
    • classroom配置
  • 实验目的
  • 练习
    • 练习0:填写已有实验
    • 练习1: 加载应用程序并执行(需要编码)
    • 练习2: 父进程复制自己的内存空间给子进程(需要编码)
    • 练习3: 阅读分析源代码,理解进程执行 fork/exec/wait/exit 的实现,以及系统调用的实现(不需要编码)
    • 扩展练习 Challenge :实现 Copy on Write (COW)机制
  • 项目组成
  • 实验内容
  • 实验执行流程概述
  • 创建用户进程
    • 1. 应用程序的组成和编译
    • 2. 用户进程的虚拟地址空间
    • 3. 创建并执行用户进程
  • 进程退出和等待进程
  • 系统调用实现
    • 1. 初始化系统调用对应的中断描述符
    • 2. 建立系统调用的用户库准备
    • 3. 与用户进程相关的系统调用
    • 4. 系统调用的执行过程
  • 用户进程管理
  • 实验报告要求
  • 附录 A:【原理】用户进程的特征
    • 从内核线程到用户进程
    • 让用户进程正常运行的用户环境
    • 用户态进程的执行过程分析
    • 用户进程的运行状态分析
Next
实验环境配置
Previous
附录B:【原理】进程的属性与特征解析
Copyright © 2022, CL
Made with Sphinx and @pradyunsg's Furo