教学日历(教学大纲)(48学时)
大纲修定历史:
- v1
-
v2:2020年10月21日提交给系里的版本;
-
v3: 21 Oct 2020
-
v4: cooperate with 2021-spring labs
课程组织与基本目的
操作系统是计算机系统中负责管理各种软硬件资源的核心系统软件,掌握操作系统的基本原理及其设计实现技术是研究型大学计算机专业本科毕业生的基本要求。
本课程是计算机专业核心课,从计算机系统的视角进行内容组织与调整,以教学操作系统uCore/rCore和risc-v CPU为实验环境,讲授操作系统的概念、基本原理和实现技术,并介绍部分当前操作系统研究热点和论文,帮助学生了解和掌握大型复杂系统软件的分析方法和核心设计思路,并为学生充分利用操作系统功能进行应用软件研究和开发打下扎实的基础。
下面的每一讲是两个课时
教学内容
第一讲 操作系统概述
1. 课程概述与教学实验安排
2. 什么是操作系统
3. 操作系统的历史演变(结合硬件的隔离,特权级,中断,I/O)
4. 操作系统结构(包括了对进程,地址空间,文件等抽象的讲解)
5. Hello-World 操作系统
第二讲 中断、异常与系统调用
1. 基本概念与原理
2. 硬件架构支持
3. 中断处理机制
4. 系统调用/异常机制
5. Kernel-Mode 操作系统
第三讲 进程与调度
1. 多道程序与分时多任务
2. 进程切换与管理(switch/fork/exec/wait/exit)
3. 协作式调度与抢占式调度
4. 进程间通信与同步互斥
5. multi-process OS
第四讲 存储管理
1. 计算机体系结构和内存层次概述
2. 内存分配概述
3. 页式存储管理与多级页表
5. 虚拟内存
6. 文件系统概述
6. mem-isolation 操作系统
7. File-System 操作系统
第五讲 物理内存管理
1. 连续内存分配
2. 碎片整理
3. 伙伴系统 & * 其他(slab, region,etc)分配算法与实现
4. 页式与段式存储管理
5. 反置页表
6. 段页式存储管理
7. 自映射机制
第六讲 虚拟存储概念
1. 局部性原理
2. 覆盖和交换
3. 虚拟页式存储
4. 缺页异常
5. RISC-V的缺页异常
第七讲 虚拟存储:局部页面置换算法
1. 页面置换算法的概念
2. 最优/最近/最坏/先进先出/最近最久未使用 算法
3. 时钟置换算法和最不常用算法
4. Belady现象和局部置换算法比较
第八讲 虚拟存储:全局页面置换算法
1. 工作集置换算法
2. 缺页率置换算法
3. 抖动和负载控制
4. 面向缓存的页替换算法-FBR
5. * 面向缓存的页替换算法-LRU-K 2Q
6. * 面向缓存的页替换算法-LIRS
第九讲 进程、线程与协程
1. 进程、线程与协程
2. 进程、线程与协程管理的API
3. 三者的比较
第十讲 进程、线程与协程 的实现
1. 线程的实现
2. 协程的实现
3. Rust语言中的Future
4. Generator机制和async/await语言机制
5. Self-Referential Structs & Pin机制
6. Waker 和 Reactor 机制
第十一讲 单处理机调度
1. 处理机调度概念
2. 调度准则
3. 先来先服务、短进程优先和最高响应比优先调度算法
4. 时间片轮转、多级反馈队列、公平共享调度算法和Stride调度算法
5. 实时调度
6. 优先级反置
第十二讲 多处理机调度与实际操作系统调度机制
1. 对称多处理与多核架构
2. 多处理器调度概述
3. * O(1)调度
4. * CFS调度
5. * BFS调度算法
第十三讲 同步互斥
1. 同步互斥的背景
2. 现实生活中的同步问题
3. 临界区和禁用硬件中断同步方法
4. 基于软件的同步方法
5. 高级抽象的同步方法
第十四讲 信号量与管程
1. 信号量的基本概念
2. 信号量的设计与实现
3. 管程的设计与实现
4. 哲学家就餐问题
5. 读者-写者问题
6. * RCU
第十五讲 死锁和并发错误检测
1. 死锁概念
2. 死锁处理方法
3. 银行家算法
4. 死锁检测
5. 并发错误检测
第十六讲 进程通信
1. 进程通信概念
2. 信号
3. * Linux信号机制
4. 消息队列和共享内存
5. * dbus
6. * binder
第十七讲 文件系统扩展
1. VFS(共享,缓存)
2. Procfs/NFS
3. 文件系统动态分析
第十八讲 文件系统实例
1. 系统可靠性概述(李)
2. FAT文件系统
3. * EXT4文件系统 (日志文件系统)
4. * ZFS文件系统
5. * 数据库文件系统(李)
第十九讲 I/O
1. I/O特点
2. I/O结构
3. I/O数据传输
4. 磁盘调度(可以去掉)
5. * Linux I/O
6. * virtio子系统
第二十讲 分布式 I/O
1. 分布式系统概述
2. 分布式IO
3. RDMA (李)
4. * IO500
第二十一讲 * 虚拟化
1. 虚拟化概述
2. CPU虚拟化
3. 内存虚拟化
4. I/O虚拟化
第二十二讲 * 大实验汇报/专家报告
1. 请专家做OS技术报告(李老师DBOS)
期末考试
教学实验
实验0:操作系统实验环境和工具
- 实验目的:了解和熟悉操作系统实验的编译方法和流程、基于硬件模拟器的操作系统内核调试方法,复习Rust语言和RISC-V汇编语言。
- 实验内容:安装Linux操作系统、Rust编译工具和QEMU硬件模拟器,并熟悉这些系统和工具的使用方法。
实验1:hello-world OS
- 实验目的:了解:在裸机上的执行环境,让应用与硬件隔离,简化了应用访问硬件的难度和复杂性。
- 实验内容:直接与硬件交互的系统程序的编译运行、 输出字符的方法、调试系统程序的方法。
实验2:kernel-mode OS
- 实验目的:了解:操作系统利用硬件特权级机制,实现对操作系统自身的保护;应用在用户态通过系统调用得到内核态的内核服务;
操作系统批处理机制支持多个程序的自动加载和运行。
- 实验内容:特权级机制、应用程序实现、批处理机制、特权级切换。
实验3:multi-programming OS
- 实验目的:了解:操作系统通过协作机制/抢占机制支持程序主动/被动放弃处理器,提高系统效率。
- 实验内容:多道程序的放置与加载、任务切换、协作式调度、抢占式调度。
实验4:mem-isolation OS
- 实验目的:了解:操作系统通过动态内存分配机制、页表的虚实内存映射机制,加强内存安全,简化应用开发。
- 实验内容:动态内存分配、地址空间(Address Space)抽象、多级页表
实验5:multi-process OS
- 实验目的:了解:操作系统建立了进程创建、执行、切换和结束的动态管理过程。
- 实验内容:进程(Process)抽象、进程管理。
实验6:Inter-Process-Comm OS
- 实验目的:了解:操作系统通过进程间通信(Inter-Process-Comm)机制,让应用之间建立了有效的联系。
- 实验内容:进程间通信机制、管道(PIPE)机制。
实验7:File-System OS
- 实验目的:了解:操作系统通过文件系统完成对程序和数据的持久保存与灵活的访问。
- 实验内容:基于inode方式的文件系统的设计与实现。
实验8:r/u Core OS
- 实验目的:了解:为支持更丰富的应用需求,操作系统需要改进与完善;通过完成一个完整的OS kernel的设计与实现,形成面向操作系统的系统思维。
- 实验内容:操作系统各组成部分关联关系的完善、操作系统各组成部分的改进与优化、对应用的进一步服务与支持。