操作系统¶
这里整理操作系统如何管理硬件、分配资源,并为应用程序提供抽象、隔离和保护。
思维导图¶
---
markmap:
height: 560
initialExpandLevel: 2
autoFit: true
colorFreezeLevel: 2
maxWidth: 280
spacingHorizontal: 80
spacingVertical: 12
nodeMinHeight: 24
paddingX: 10
---
# 操作系统
## [进程与设备管理](/software-design/02-operating-systems/#overview-and-processes)
- 进程与线程、状态转换、调度
- 同步、互斥、信号量与死锁
- I/O 控制与设备管理
## [内存管理](/software-design/02-operating-systems/#memory-management)
- 存储层次与局部性
- 分区、分页、分段与地址转换
- 虚拟内存与页面置换
## [文件系统](/software-design/02-operating-systems/#file-management)
- 目录、路径与文件组织
- 文件分配、索引与空闲空间管理
- 磁盘访问与调度
主题索引¶
以下是逐步整理的主题范围,具体知识点笔记随学习补充。
| 主题 | 要理解的问题 |
|---|---|
| 操作系统与内核 | 用户态与内核态为什么分开?系统调用、中断和异常怎样影响执行流程? |
| 进程与线程 | 程序、进程和线程有什么区别?各自持有和共享哪些资源? |
| CPU 调度 | 多个可运行任务怎样分配 CPU?响应时间、吞吐量与公平性怎样权衡? |
| 同步与互斥 | 竞态条件怎样产生?锁、信号量与条件变量解决什么问题? |
| 死锁 | 什么条件下会发生死锁?预防、避免和检测分别怎样处理? |
| 内存管理 | 地址空间、分页、虚拟内存、页表与页面置换如何配合? |
| 文件系统 | 文件、目录、元数据和磁盘块如何关联?怎样维护一致性? |
| I/O 与设备 | 中断、DMA、缓冲与缓存怎样影响数据传输? |
| 进程间通信 | 管道、共享内存、套接字等机制怎样交换数据? |
专题笔记¶
- 软件设计:操作系统章节:按概述、进程、存储、设备和文件管理复习。
- 进程同步与互斥:信号量、PV 操作和生产者—消费者:前驱图、同步与互斥信号量、初值计算,以及两级生产流水线例题。
- 死锁资源计算:最少资源数与最小需求量:公式推导、13 个资源与最小需求量为 4 的两道例题,以及“可能死锁”和“保证不死锁”的区别。
-
位示图:磁盘空闲空间管理与字号计算:块号、字号和位号的换算,位图大小计算,以及文件分配与回收。
-
索引文件结构与容量计算:直接与间接索引、最大文件长度和逐层查找。
- 分页存储与地址转换:逻辑页号、页内偏移、物理地址与共享页。
入门材料与实践联系¶
- 《计算机科学速成课》:第 18–20 集介绍操作系统、存储层次和文件系统。
- Android AOSP 笔记:结合平台实现理解进程、系统服务和资源管理。
- Binder 笔记:联系 Android 的进程间通信机制。
具体笔记怎样整理¶
每个主题先说明问题和机制,再画出状态变化或执行顺序,最后用程序、系统工具或平台源码验证。把通用原理和某个操作系统的具体实现注明清楚。
当前软件设计师复习的知识导图和例题统一放在软件设计:操作系统。本目录保留学科学习入口,Android 的平台细节通过链接关联;后续完整课程可以另建课程目录。