在三年的教学中, 第二门比较花精力的就是"操作系统"这门课. 作为计算机科学专业的四大基础课程之一,
讲授操作系统的课程和专门教材可以说得上洋洋大观了. 那么, 也就觉得自己的提炼更加有价值.
这是因为绝大多数相关课程和教材可以说是专注于雕刻一个个的珍珠 - 一般都能做到对操作系统相关技术有细致的探讨(可作为技术手册方便查阅), 但是,
总觉得缺乏将珍珠串成美丽的项链(手链?呵呵)的那个绳串.
第一章 理解操作系统还得从运行程序谈起
- 现代计算机和程序
- 操作系统的核心概念就是管理计算机的资源支持程序的运行
- 从操作系统发展史来理解操作系统应满足的要求
- 操作系统的核心任务可概括为两个映射
- 程序逻辑空间(文件空间)到内存空间的映射
- 程序逻辑空间(文件空间)到磁盘空间的映射
- 多道进程并发运行带来的问题
- CPU切换
- 相互协作的多道程序执行次序问题 - 数据不一致性和死锁的风险
- 大程序小内存的问题
第二章 进程和线程 - 其实就是管理程序运行的数据结构
- 进程和线程
- 进程和线程的区别和联系
- 程序运行和进程间的关系
第三章 CPU调度算法 - 切换CPU以支持多道程序的并发运行
- 调度算法, 其实也就是排序问题
- 那些排序的策略和标准
- 排序的算法举例
- FCFS (First Come First Serve)
- Optimal
- RTFS (Remaining Time First Serve)
- ...
- 如何评估算法的优劣
第四章 同步 - 应对多道进程并发运行带来的数据不一致性问题
- 数据不一致性
- 同步的机制其实就是实现锁而已
- 软件方法
- 硬件方法
- 操作系统常用的方法 - 信号量
- 用户代码级别的方法 - 管程
第五章 阻止死锁 - 应对多道进程并发运行带来的死锁问题
- 死锁的四个必要条件
- 阻止死锁的思路 - 打破必要条件
- "掩耳盗铃" - 鸵鸟
- "君子不立危墙"
- 保证天下没有危墙 - Prevention
- 每次进入墙下都先检测下 - Avoidance/Banker's Algorithm
- "与狼共舞" (?)
第六章 内存空间管理 - 解决"大程序小内存"的基本概念和技术
- 内存空间也就是编码的一串地址单元
- 将一条条的程序指令写进线性空间 - 空间分配和地址翻译
- 几种早期的内存管理
- 覆盖方法 - Overlay
- 分区方法 - 固定分区和可变分区
- 可变分区中的放置算法 - Placement Algorithms
- 还是有限制 - 分区大小限制了程序的大小
第七章 虚拟内存 - 解决"大程序小内存"的现代技术
- 虚拟内存的目的 - 运行任意大小的程序
- 以分页为基础的请求调页方法
- 以分区为基础的请求分段方法
- 二者的混合
第八章 磁盘空间是怎样的 - 为理解文件管理做准备
- 磁盘的架构
- 磁盘空间就是也就是编码的一串扇区集合 (Sector)
- 访问数据需要的参数
- 如何让操作系统知晓磁盘的空间
- 机制可以看做是小型的计算机系统 - 电子部件里面也有芯片解释指令并执行
- 驱动程序可以看做是专用的操作系统 - 就是接受用户的请求, 然后定位数据、传输数据
- 光盘也类似
第九章 文件系统 - 实现管理文件的数据结构和相关操作而已
- 文件到磁盘空间的映射
- 中间嵌入了磁盘块的概念
- 为什么? - 适应内存的分页管理
- 甚至磁盘块的管理和分配也跟内存管理类似
- 如何保持文件中数据的结构?
- 文件系统的层次结构
- 目录也是文件
第十章 文件存取的效率和安全 - 磁盘头读写算法和RAID技术
- 磁盘访问也要讲究效率 - 读写算法
- 安全存储没什么高招, 管用的还是冗余备份 - RAID
- 网络时代的大规模存储
- 其他存储介质
第十一章 关注安全 - 不得不考虑的问题
第十二章 操作系统的发展
新的资源, 新的操作系统 - 从小到大, 从一到多
- 嵌入式操作系统
- 手机操作系统
- 超级计算机的操作系统
- 分布式操作系统
https://blog.sciencenet.cn/blog-112715-648505.html
上一篇:
一得集[II]:《计算机和计算:基于Code::Block的C编程实训》