计算机系统的“大管家”
从零理解这门课的内容体系与学习要点
八大模块构成操作系统的完整知识体系,本课程将逐一拆解
控制和管理整个计算机系统的硬件与软件资源,合理组织调度工作与资源分配,并为用户和其他软件提供方便的接口与环境的最基本系统软件。
并发是基础,共享是目的,虚拟是手段,异步是表现
多道程序宏观同时运行、微观交替执行。是 OS 最基本的特征,依赖多道程序设计技术。
系统资源可被多个并发进程共同使用。分互斥共享与同时访问两种方式。
通过某种技术把一个物理实体变为多个逻辑对应物。如虚拟处理器、虚拟内存、虚拟设备。
进程以不可预知的速度推进,走走停停。是并发与共享带来的必然结果。
从手工操作到分时系统,每次演进都推动 OS 从“提高效率”走向“增强交互”
操作系统通过特权级隔离保护内核,三种机制实现态的切换
▸ 运行应用程序,只能访问受限资源
▸ 不能执行特权指令(如 I/O、访管)
▸ 需要系统服务时通过系统调用陷入内核
▸ 运行 OS 内核,可访问全部硬件资源
▸ 可执行全部指令(含特权指令)
▸ 处理中断、异常后返回用户态
进程是程序在数据集合上的一次执行过程,是系统进行资源分配和调度的基本单位。
线程是进程内的执行单元——引入线程后,进程是资源分配单位,线程是调度单位
| 对比维度 | 进程 Process | 线程 Thread |
|---|---|---|
| 资源分配 | 资源分配的基本单位,拥有独立地址空间 | 不拥有资源,共享所属进程的资源 |
| 调度单位 | 传统系统中也是调度单位 | 独立调度的基本单位 |
| 切换开销 | 大——需切换地址空间、刷新缓存 | 小——同进程内仅切换寄存器/栈 |
| 通信方式 | 需 IPC(管道、消息、共享内存等) | 直接读写共享变量,但需同步 |
| 并发性 | 进程间并发 | 更高——进程内多线程并发 |
不同算法在公平性、吞吐量、响应时间间各有取舍
按到达顺序排队,非抢占。短作业被长作业拖累,公平但效率低。
选估计运行时间最短的。平均等待时间最优,但长作业可能饥饿。
每个进程轮流执行一个时间片。响应快,适合分时系统,开销受时间片大小影响。
按优先级调度,可抢占/非抢占。需防饥饿(可用动态优先级/老化)。
多个进程因竞争资源而造成互相等待,若无外力介入都无法推进。
① 互斥:资源一次只能被一个进程使用
② 请求与保持:持有资源又请求新资源
③ 不剥夺:资源不能被强行夺走
④ 循环等待:存在进程-资源的环形链
分配前先模拟,判断是否存在安全序列。只有安全才分配,否则让进程等待。
申请资源:S=S−1。若 S<0,进程阻塞等待,进入 S 对应的等待队列。
释放资源:S=S+1。若 S≤0,唤醒等待队列中的一个进程。
掌握这三个模型,PV 操作的绝大多数变体都能迎刃而解
生产者放入缓冲区,消费者取出。设 empty、full、mutex 三个信号量。
读读可共享,读写/写写互斥。需 readcount 计数 + 信号量协调首读者与写者。
五人围坐,每人需左右两根筷子。直接拿易死锁,需限制策略。
从连续到离散,从实存到虚存——一步步解决碎片与容量问题
单一连续 / 固定分区 / 动态分区
内存分等长页框,程序分页,页表映射
按逻辑意义分段,段表映射,便于共享保护
局部性原理让“部分装入”成为可能——缺页时用置换算法决定淘汰谁
淘汰最先进入的页。简单,但可能淘汰常用页,存在Belady 异常。
淘汰最久未访问的页。性能好,但需硬件支持(寄存器/栈)开销大。
LRU 的近似实现,用访问位循环扫描。实用首选,开销小。
管理各类 I/O 设备,完成用户 I/O 请求,屏蔽硬件差异,提升设备利用率。
目标:减少平均寻道时间。核心在于磁头移动路径的选择策略
按请求顺序服务,寻道距离大,性能最差但公平。
选距当前磁头最近的请求。平均寻道短,但远端可能饥饿。
单向移动到底再反向,像电梯。无饥饿,两端响应略慢。
单向到底后直接回返起点再同向扫,各位置响应更均匀。
负责文件的组织、存储、检索、共享与保护,是用户与外存之间的抽象层。
无结构流式 / 有结构记录式(顺序、索引、顺序索引)
单级 → 两级 → 树形目录,实现按名存取
连续分配 / 链接分配 / 索引分配——权衡顺序与随机访问
进程运行需要内存(内存管理),运行结果需要保存(文件系统),过程中需要 I/O(设备管理)——各模块并非孤岛,而是协同服务于“让程序高效运行”这一目标。
第一轮建框架(教材+视频)→ 第二轮攻重难点+刷真题 → 第三轮模拟+查漏补缺+背诵概念
PV 操作和页面置换算法一定要动笔,自己完整写出过程再对答案——这是最容易“一看就会一写就废”的部分
抠细节但更要懂原理:为什么引入进程?为什么需要虚拟内存?理解“为什么”比记住“是什么”更持久
结合《计算机组成原理》交叉印证(存储体系、中断、DMA),把零散知识点织成一张网
它连接软件与硬件,是理解整个计算机系统的枢纽。
学好它,你看到的不再是孤立的程序,而是一个协同运转的整体。