本课程阐述操作系统的核心概念和原理。通过对现代操作系统设计与实现的讨论,我们将探讨进程与线程、同步与死锁、分段与分页、输入与输出、安全与可靠、文件与存储等操作系统的核心概念。本课程将集中精力对一些难点进行深入的探讨,包括锁的进化、锁的实现、同步机制的逻辑演变、内存管理、多核环境下的同步与调度等;同时对历史上重要的操作系统设计,如微内核、宏内核、Exokernel、虚拟化等结构进行剖析,使学生了解并掌握计算机操作系统的设计与实现的基本方法。为帮助学生理解操作系统,本课程将伴随一组操作系统设计实验。学生将被要求完成 4~6 个难度逐次提高的操作系统大作业,以增加学生对操作系统核心知识的把握。
电子版书籍下载地址:https://ipads.se.sjtu.edu.cn/mospi/
课程目录
1 操作系统介绍
1.1 操作系统的定义
1.2 为什么学习操作系统
1.3 操作系统面临的挑战
1.4 案例:Apple操作系统技术演进
1.5 ChCore简介
2 硬件基础
2.1 为什么选择ARM
2.2 AArch64体系结构
2.3 操作系统启动过程
2.4 中断与异常的概念
2.5 中断与异常的产生
2.6 Linux的中断处理理念
2.7 中断与异常的处理
2.8 系统调用
3 操作系统结构
3.1 操作系统结构与宏内核
3.2 微内核架构
3.3 外核架构与库OS
3.4 多内核架构与小结
4 内存管理
4.1 虚拟地址和物理地址
4.2 基于分页的虚拟内存
4.3 虚拟内存功能
4.4 物理内存分配与管理
4.5 案例分析:ChCore的内存管理机制
5 进程与线程
5.1 进程的基本概念
5.2 进程的基本操作接口
5.3 线程的基本概念
5.4 线程本地存储和上下文切换
5.5 纤程
6 操作系统调度
6.1 进程/线程调度
6.2 经典调度
6.3 优先级调度
6.4 公平共享调度
7 进程间通信
7.1 进程间通信背景和基础
7.2 共享内存
7.3 消息传递
7.4 消息传递的问题与解决方法
7.5 Unix管道
7.6 Unix的消息队列
7.7 轻量级远程方法调用LRPC
7.8 ChCore进程间通信
8 同步原语
8.1 临界区问题
8.2 互斥锁的软件与硬件实现
8.3 读写锁
8.4 Read Copy Update
8.5 死锁
8.6 优先级反转
8.7 性能可扩展性
8.8 缓存一致性
8.9 MCS锁
8.10 非一致内存访问
8.11 内存模型
9 文件系统
9.1 基于inode的文件系统
9.2 基于inode文件系统的基本操作
9.3 基于Table的文件系统
9.4 虚拟文件系统(VFS)
9.5 文件系统高级功能
9.6 崩溃一致性
9.7 日志
9.8 写时复制
9.9 日志文件系统
9.10 新型文件系统:闪存
9.11 新型文件系统:瓦式磁盘
9.12 新型文件系统:非易失内存
10 设备管理
10.1 设备概述
10.2 系统与设备的交互方式
10.3 中断管理
10.4 设备驱动
10.5 驱动模型
10.6 设备树
10.7 Linux上下部
11 系统虚拟化与轻量级虚拟化
11.1 系统虚拟化的优势
11.2 什么是系统虚拟化
11.3 如何实现系统虚拟化
11.4 基于软件的CPU虚拟化方法
11.5 硬件虚拟化
11.6 虚拟机与虚拟处理器
11.7 QEMU与KVM
11.8 内存虚拟化
11.9 IO虚拟化
11.10 中断虚拟化
11.11 轻量级虚拟化-综述
11.12 第一次尝试:chroot
11.13 Linux容器
11.14 案例:Serverless平台
11.15 性能隔离
12 网络协议栈与系统
12.1 Linux网络收包概述
12.2 Linux网络包管理
12.3 Linux协议栈总结
12.4 DPDK
12.5 ChCore微内核网络
12.6 不同架构网络对比
13 操作系统安全
13.1 操作系统的安全服务
13.2 访问控制
13.3 SELinux
13.4 操作系统内部安全
13.5 案例:IOS的系统安全
13.6 侧信道与隐秘信道
13.7 侧信道攻击与防御
13.8 案例:Meltdown与KPTI
13.9 不可信操作系统与Enclave
13.10 保护Enclave的方法
13.11 Intel SGX
13.12 其他平台的Enclave与小结
14 操作系统调试
14.1 调试器的基本原理
14.2 操作系统的调试器支持
14.3 性能调试1
14.4 性能调试2
14.5 测试的基本原则和方法
14.6 Linux安全漏洞修复流程
15 操作系统前沿
15.1 操作系统研究
15.2 异构操作系统
15.3 新的应用接口
15.4 多核同步原语
15.5 持久性内存
15.6 智能网卡
15.7 系统安全隔离
15.8 操作系统新型测试方法
15.9 形式化证明