目錄 Introduction 1.1 封面 1.2 前言 1.3 操作系统简介 1.4 应具备的背景知识和学习环境 1.4.1 了解计算机硬件架构 1.4.2 计算机硬件架构 1.4.2.1 CPU 1.4.2.2 内存 1.4.2.3 外设 1.4.2.4 了解操作系统 1.4.3 操作系统的历史 1.4.3.1 操作系统的定义与目标 1.4.3.2 操作系统的接口 1.4.3.3 操作系统的抽象 1.4.3.4 操作系统的特征 1.4.3.5 “麻雀”操作系统--ucore ucore简介 小结 1.4.4 1.4.4.1 1.4.5 启动操作系统 1.5 实验一:显示字符的toy bootloader 1.6 背景:Intel 80386加电后启动过程 1.6.1 背景:设备管理:理解设备访问机制 1.6.2 背景:内存管理:理解保护模式和分段机制 1.6.3 实现:实模式到保护模式的切换 1.6.4 实现:设置栈内存空间 1.6.5 实现:显示字符串 1.6.6 实验二:读ELF格式文件的baby bootloader 1.7 背景:访问硬盘数据控制 1.7.1 背景:理解ELF文件格式 1.7.2 1 背景:操作系统执行代码的组成 1.7.3 实现:bootloader加载并运行ucore 1.7.4 实现:可输出字符串的ucore 1.7.5 小结 1.8 参考资料 1.9 ucore操作系统开始控制计算机 实验三:能显示函数调用关系的ucore 1.10 1.10.1 背景:栈结构和处理过程 1.10.1.1 实现:分析内核函数调用关系 1.10.1.2 实验四:可管理中断并处理中断方式I/O的ucore 1.10.2 背景:理解CPU对外设中断的硬件支持 1.10.2.1 实现:初始化中断控制器 1.10.2.2 实现:初始化中断门描述符表 1.10.2.3 实现:外设的相关中断初始化 1.10.2.4 实现:中断处理过程 1.10.2.5 实验五:可在内核态和用户态之间进行切换的ucore 1.10.3 背景:分段机制的特权限制 1.10.3.1 背景:80386的任务切换 1.10.3.2 实现:内核态切换到用户态 1.10.3.3 实现:用户态切换到内核态 1.10.3.4 操作系统基本原理:管理计算机硬件 1.10.4 小结 1.10.5 物理内存管理 实验1: 建立分页管理机制 1.11 1.11.1 背景: 计算机物理内存分布和大小 1.11.1.1 实现: 物理内存探测 1.11.1.2 原理: 分页内存管理 1.11.1.3 背景: X86的分页硬件支持 1.11.1.4 实现: 实现分页内存管理 1.11.1.5 原理: 页内存分配算法 1.11.1.6 实验2: 实现任意大小内存分配 实现: slab算法的简化设计实现 实验3: 支持虚存管理功能 原理: 虚拟内存管理 1.11.2 1.11.2.1 1.11.3 1.11.3.1 2 proj7/8/9/9.1/9.2概述 1.11.3.2 proj7:支持缺页异常和VMA结构 1.11.3.3 实现: vma_struct数据结构和相关操作 1.11.3.4 实现: 缺页异常处理 1.11.3.5 proj8:支持页换入换出 1.11.3.6 原理: 页面置换算法 1.11.3.7 实现: 页面置换机制实现 1.11.3.8 proj9.1:实现共享内存 1.11.3.9 proj9.2:实现写时复制 1.11.3.10 进程管理与调度 实验1: 创建并执行内核线程 1.12 1.12.1 原理: 进程的属性与特征解析 1.12.1.1 实现: 设计进程控制块 1.12.1.2 实现: 创建并执行内核线程 1.12.1.3 实验2: 创建并执行用户进程 1.12.2 原理: 用户进程的特征 1.12.2.1 创建用户进程 1.12.2.2 基于时间事件的等待与唤醒 1.12.2.3 进程退出和等待进程 1.12.2.4 系统调用实现 1.12.2.5 实验3: 基于内核线程实现全局内存页替换机制 1.12.3 等待队列设计与实现 1.12.3.1 内存页置换机制的执行过程 1.12.3.2 实验4: 创建并执行用户线程 1.12.4 原理: 线程的属性与特征分析 1.12.4.1 实现: 创建并执行用户线程 1.12.4.2 进程运行状态转变过程 1.12.4.3 实验5: 进程调度 1.12.5 原理: 进程调度 1.12.5.1 实现: 进程调度 1.12.5.2 小结 附录 1.12.6 1.13 附录A--ucore历史 1.13.1 3 附录B--构成ucore lab的小项目列表 1.13.2 附录C--ucore开发者列表 1.13.3 附录D--ucore实验中的工具 1.13.4 附录E--MOOC OS相关信息 1.13.5 附录F--版权信息 1.13.6 4 Introduction 操作系统简单实现与基本原理 尝试 对于在校的学生和已经参加工作的工程师而言,能否以较小的时间和精力比较全面地了解操 作系统呢?陆游老夫子说过“纸上得来终觉浅,绝知此事要躬行”,也许在了解基本的操作系统 概念和原理基础上,通过实际动手来一步一步分析、设计和实现一个微型化的操作系统,会 发现操作系统原来如此,概念原理和实际实现之间有紧密的联系和巨大的差异。 早期的UNIX操作系统和MIT教授 Frans Kaashoek 博士等基于UNIX v6设计的xv6操作系统给 了我们启发:对一个计算机专业的本科生而言,设计实现一个操作系统有挑战但是可行!本 书想进行这样的教学尝试,以分析,设计并实现一个微型但全面的“麻雀”操作系统—ucore为 基本目标,采用简化的计算机硬件为基础,以以操作系统的基本概念和核心原理为实践指 导,逐步解析操作系统各种知识点和对应的实验,做到有“理”可循和有“码”可查,最终让读者 了解和掌握操作系统的原理、设计与实现。 陈渝 向勇 清华大学计算机系 2017年春 5
操作系统简单实现与基本原理(simple_os_book)
系统运维 >
操作系统 >
其他 >
文档预览
289 页
5 下载
1310 浏览
0 评论
0 收藏
3.0分
温馨提示:当前文档最多只能预览 20 页,若文档总页数超出了 20 页,请下载原文档以浏览全部内容。
本文档由 进击的皇虫 于 2018-09-11 20:47:06上传分享