logo资料库

清华大学ucore实验指导.pdf

第1页 / 共356页
第2页 / 共356页
第3页 / 共356页
第4页 / 共356页
第5页 / 共356页
第6页 / 共356页
第7页 / 共356页
第8页 / 共356页
资料共356页,剩余部分请下载后查看
Introduction
Lab 0
实验目的
准备知识
了解OS实验
设置实验环境
了解编程开发调试的基本工具
基于硬件模拟器实现源码级调试
了解处理器硬件
了解ucore编程方法和通用数据结构
附录A.ucore实验中的常用工具
附录B.ucore实验参考资料
Lab 1
实验目的
实验内容
练习
项目组成
从机器启动到操作系统运行的过程
BIOS启动过程
bootloader启动过程
操作系统启动过程
实验报告要求
附录A“关于A20 Gate”
附录B“第一条执行指令”
Lab 2 物理内存管理
实验目的
实验内容
练习
项目组成
物理内存管理
实验执行流程概述
探测系统物理内存布局
以页为单位管理物理内存
物理内存页分配算法实现
实现分页机制
实验报告要求
附录A. 探测物理内存分布和大小的方法
附录B. 实现物理内存探测
附录C. 链接地址/虚地址/物理地址/加载地址以及edata/end/text的含义
附录D. 自映射机制
Lab 3
实验目的
实验内容
练习
项目组成
虚拟内存管理
基本原理概述
实验执行流程概述
关键数据结构和相关函数分析
Page Fault异常处理
页面置换机制的实现
页替换算法
页面置换机制实验报告要求
实验报告要求
Lab 4
实验目的
实验内容
练习
项目组成
内核线程管理
实验执行流程概述
设计关键数据结构 -- 进程控制块
创建并执行内核线程
实验报告要求
附录A:实验四的参考输出
附录B:【原理】进程的属性与特征解析
Lab 5
实验目的
实验内容
练习
项目组成
用户进程管理
实验执行流程概述
创建用户进程
进程退出和等待进程
系统调用实现
实验报告要求
附录 A:【原理】用户进程的特征
Lab 6
实验目的
实验内容
练习
项目组成
调度框架和调度算法设计与实现
实验执行流程概述
进程状态
进程调度实现
调度框架和调度算法
Stride Scheduling
实验报告要求
Lab 7
实验目的
实验内容
练习
项目组成
同步互斥机制的设计与实现
实验执行流程概述
同步互斥机制的底层支撑
信号量
管程和条件变量
实验报告要求
附录
Lab 8
实验目的
实验内容
练习
项目组成
文件系统设计与实现
ucore 文件系统总体介绍
通用文件系统访问接口
文件系统抽象层 - VFS
Simple FS 文件系统
设备层文件 IO 层
关键数据结构
stdout设备文件
stdin 设备文件
实验执行流程概述
文件操作实现
打开文件
读文件
实验报告要求
Table of Contents 1.1 Introduction Lab 0 Lab 0 实验目的 准备知识 了解OS实验 设置实验环境 2.1 2.1.1 2.1.2 2.1.2.1 2.1.2.2 2.1.2.2.1 2.1.2.2.2 2.1.2.2.3 开发OS实验的简单步骤 通过虚拟机使用Linux实验环境(推荐:最容易的实验环境安装方法) 安装使用Linux实验环境(适合希望自己安装Linux系统的同学) 2.1.2.2.4 实验中可能使用的软件 了解编程开发调试的基本工具 gcc的基本用法 编译简单的 C 程序 AT&T汇编基本语法 GCC基本内联汇编 GCC扩展内联汇编 make和Makefile gdb使用 进一步的相关内容 基于硬件模拟器实现源码级调试 安装硬件模拟器QEMU Linux运行环境 Linux环境下的源码级安装过程 获得并应用修改 配置、编译和安装 使用硬件模拟器QEMU 运行参数 2.1.2.3 2.1.2.3.1 2.1.2.3.1.1 2.1.2.3.1.2 2.1.2.3.1.3 2.1.2.3.1.4 2.1.2.3.2 2.1.2.3.3 2.1.2.3.4 2.1.2.4 2.1.2.4.1 2.1.2.4.1.1 2.1.2.4.1.2 2.1.2.4.1.2.1 2.1.2.4.1.2.2 2.1.2.4.2 2.1.2.4.2.1 1
常用调试命令 [基于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 扩展练习 项目组成 2.1.2.4.2.2 2.1.2.4.3 2.1.2.4.4 2.1.2.4.4.1 2.1.2.4.4.2 2.1.2.4.4.3 2.1.2.4.4.4 2.1.2.4.4.5 2.1.2.4.4.6 2.1.2.5 2.1.2.5.1 2.1.2.5.2 2.1.2.5.3 2.1.2.6 2.1.2.6.1 2.1.2.6.2 2.1.2.6.2.1 2.1.3 2.1.4 3.1 3.1.1 3.1.2 3.1.2.1 3.1.2.1.1 3.1.2.1.2 3.1.2.1.3 3.1.2.1.4 3.1.2.1.5 3.1.2.1.6 3.1.2.1.7 3.1.2.2 2
从机器启动到操作系统运行的过程 BIOS启动过程 bootloader启动过程 保护模式和分段机制 地址空间 硬盘访问概述 ELF文件格式概述 操作系统启动过程 函数堆栈 中断与异常 lab1中对中断的处理实现 实验报告要求 附录A“关于A20 Gate” 附录B“第一条执行指令” Lab 2 Lab 2 物理内存管理 实验目的 实验内容 练习 项目组成 物理内存管理 实验执行流程概述 探测系统物理内存布局 以页为单位管理物理内存 物理内存页分配算法实现 实现分页机制 段页式管理基本概念 建立段页式管理中需要考虑的关键问题 系统执行中地址映射的四个阶段 建立虚拟页和物理页帧的地址映射关系 实验报告要求 附录A. 探测物理内存分布和大小的方法 3.1.3 3.1.3.1 3.1.3.2 3.1.3.2.1 3.1.3.2.2 3.1.3.2.3 3.1.3.2.4 3.1.3.3 3.1.3.3.1 3.1.3.3.2 3.1.3.3.3 3.1.4 3.1.5 3.1.6 4.1 4.1.1 4.1.2 4.1.2.1 4.1.2.2 4.1.3 4.1.3.1 4.1.3.2 4.1.3.3 4.1.3.4 4.1.3.5 4.1.3.5.1 4.1.3.5.2 4.1.3.5.3 4.1.3.5.4 4.1.4 4.1.5 3
附录B. 实现物理内存探测 附录C. 链接地址/虚地址/物理地址/加载地址以及edata/end/text的含义 附录D. 自映射机制 4.1.6 4.1.7 4.1.8 Lab 3 Lab 3 实验目的 实验内容 练习 项目组成 虚拟内存管理 基本原理概述 实验执行流程概述 关键数据结构和相关函数分析 Page Fault异常处理 页面置换机制的实现 页替换算法 页面置换机制实验报告要求 实验报告要求 Lab 4 Lab 4 实验目的 实验内容 练习 项目组成 内核线程管理 实验执行流程概述 设计关键数据结构 -- 进程控制块 创建并执行内核线程 创建第0个内核线程idleproc 创建第1个内核线程initproc 5.1 5.1.1 5.1.2 5.1.2.1 5.1.2.2 5.1.3 5.1.3.1 5.1.3.2 5.1.3.3 5.1.4 5.1.5 5.1.5.1 5.1.5.2 5.1.6 6.1 6.1.1 6.1.2 6.1.2.1 6.1.2.2 6.1.3 6.1.3.1 6.1.3.2 6.1.3.3 6.1.3.3.1 6.1.3.3.2 4
调度并执行内核线程initproc 实验报告要求 附录A:实验四的参考输出 附录B:【原理】进程的属性与特征解析 Lab 5 Lab 5 实验目的 实验内容 练习 项目组成 用户进程管理 实验执行流程概述 创建用户进程 进程退出和等待进程 系统调用实现 实验报告要求 附录 A:【原理】用户进程的特征 Lab 6 Lab 6 实验目的 实验内容 练习 项目组成 调度框架和调度算法设计与实现 实验执行流程概述 进程状态 进程调度实现 内核抢占点 进程切换过程 调度框架和调度算法 6.1.3.3.3 6.1.4 6.1.5 6.1.6 7.1 7.1.1 7.1.2 7.1.2.1 7.1.2.2 7.1.3 7.1.3.1 7.1.3.2 7.1.3.3 7.1.3.4 7.1.4 7.1.5 8.1 8.1.1 8.1.2 8.1.2.1 8.1.2.2 8.1.3 8.1.3.1 8.1.3.2 8.1.3.3 8.1.3.3.1 8.1.3.3.2 8.1.3.4 5
设计思路 数据结构 调度点的相关关键函数 RR 调度算法实现 Stride Scheduling 基本思路 使用优先队列实现 Stride Scheduling 实验报告要求 Lab 7 Lab 7 实验目的 实验内容 练习 项目组成 同步互斥机制的设计与实现 实验执行流程概述 同步互斥机制的底层支撑 计时器 屏蔽与使能中断 等待队列 信号量 管程和条件变量 实验报告要求 附录 Lab 8 Lab 8 实验目的 实验内容 练习 项目组成 8.1.3.4.1 8.1.3.4.2 8.1.3.4.3 8.1.3.4.4 8.1.3.5 8.1.3.5.1 8.1.3.5.2 8.1.4 9.1 9.1.1 9.1.2 9.1.2.1 9.1.2.2 9.1.3 9.1.3.1 9.1.3.2 9.1.3.2.1 9.1.3.2.2 9.1.3.2.3 9.1.3.3 9.1.3.4 9.1.4 9.1.5 10.1 10.1.1 10.1.2 10.1.2.1 10.1.2.2 6
文件系统设计与实现 ucore 文件系统总体介绍 通用文件系统访问接口 文件系统抽象层 - VFS file & dir接口 inode 接口 Simple FS 文件系统 文件系统的布局 索引节点 设备层文件 IO 层 关键数据结构 stdout设备文件 stdin 设备文件 实验执行流程概述 文件操作实现 打开文件 读文件 实验报告要求 10.1.3 10.1.3.1 10.1.3.2 10.1.3.3 10.1.3.3.1 10.1.3.3.2 10.1.3.4 10.1.3.4.1 10.1.3.4.2 10.1.4 10.1.4.1 10.1.4.2 10.1.4.3 10.1.5 10.1.6 10.1.6.1 10.1.6.2 10.1.7 7
Introduction uCore OS实验指导书和源码网址 (2017) ucore实验指导书 ucore labs 1-8 源码和参考答案 os tutorial lab 实验总体流程 1. 在学堂在线查看OS相关原理和labX的视频; 2. 在实验指导书 on gitbook上阅读实验指导书,并参考其内容完成练习和实验报告; 3. 在实验环境中完成实验并提交实验到git server(清华学生需要在学校内部的git server 上,其他同学可提交在其他git server上); 4. 如实验中碰到问题,在在线OS课程问题集查找是否已经有解答; 5. 如没有解答,可在piazza在线OS课程问答和交流区提问,每天(一周七日)都有助教或老 师在piazza在线答疑。(QQ群 181873534主要用于OS课程一般性交流); 6. 可进一步在学堂在线或在线的操作系统课程练习题完成实验相关的练习题; 四种学习目标和对应手段 1. 掌握OS基本概念:看在线课程,能理解OS原理与概念;看在线实验指导书并分析源码, 能理解labcodes_answer的labs运行结果 2. 掌握OS设计实现:在1的基础上,能够通过编程完成labcodes的8个lab实验中的基本练习 和实验报告 3. 掌握OS核心功能:在2的基础上,能够通过编程完成labcodes的8个lab实验中的 challenge练习 4. 掌握OS科学研究:在3的基础上,能够通过阅读论文、设计、编程、实验评价等过程来 完成课程设计(大实验) 【注意】 筑基内功--请提前学习计算机原理、C语言、数据结构课程 工欲善其事,必先利其器--请掌握七种武器 实验常用工具列表 学至于行之而止矣--请在实验中体会操作系统的精髓 打通任督二脉--lab1和lab2比较困难,有些同学由于畏难而止步与此,很可惜。通过lab1 和lab2后,对计算机原理中的中断、段页表机制、特权级等的理解会更深入,等会有等同 于打通了任督二脉,后面的实验将一片坦途。 8
分享到:
收藏