并发性、共享性、虚拟性、异步性
系统调用(不是命令解释器或GUI)
通过执行陷入指令(Trap)实现,不是外部中断或时钟中断
| 宏内核 | 微内核 | |
|---|---|---|
| 通信方式 | 直接函数调用 | 进程间通信(IPC) |
| 文件系统 | 内核态 | 用户态(不在微内核内) |
| 优点 | 效率高 | 可靠性高、易扩展 |
进程 = 程序的动态执行过程,程序 = 静态指令集合
PCB(进程控制块)+ 程序段 + 数据段
PCB不包含:程序代码本身
创建 → 就绪 → 运行 → 阻塞 → 终止
运行→阻塞:I/O请求(不是时间片用完!时间片用完→就绪)
进程 = 资源分配基本单位
线程 = CPU调度基本单位
| 模型 | 特点 |
|---|---|
| 多对一 | 多用户线程→1内核线程,无法并行 |
| 一对一 | 并发度最高,开销最大 |
对操作系统内核透明(内核不知道用户线程存在)
| 级别 | 别称 | 功能 |
|---|---|---|
| 高级调度 | 作业调度 | 决定哪些作业进入内存 |
| 中级调度 | 内存调度 | 挂起/换入换出 |
| 低级调度 | 进程调度 | 决定CPU分配给谁 |
| 算法 | 特点 | 缺点 |
|---|---|---|
| FCFS | 先来先服务 | 短作业可能等很久 |
| SJF | 短作业优先 | 长作业饥饿 |
| RR | 时间片轮转 | 时间片太小→上下文切换开销大 |
| 优先级 | 按优先级 | 低优先级饥饿→用动态优先级/老化 |
| MLFQ | 多级反馈队列 | CPU密集型逐步降级 |
非抢占:进程获得CPU后一直运行到结束或主动放弃
空闲让进、忙则等待、有限等待、让权等待
"优先等待"不是原则!
S>0:表示可用资源数
S<0:|S| = 等待进程数
P操作(wait):S=S-1,若S<0则阻塞
V操作(signal):S=S+1,若S≤0则唤醒
生产者-消费者:empty + full + mutex(三个信号量)
读者-写者(读者优先):mutex + wmutex + readcount
一次只允许一个进程进入;条件变量用wait/signal
signal不会立即让等待进程获得CPU(错!)
共享存储、消息传递、管道通信
无名管道:只能用于父子亲缘关系进程
①互斥 ②请求和保持 ③不可抢占 ④循环等待
| 策略 | 方法 | 特点 |
|---|---|---|
| 预防 | 破坏必要条件 | 资源利用率低 |
| 避免 | 银行家算法 | 判断安全状态 |
| 检测 | 资源分配图法+死锁定理 | 事后处理 |
| 解除 | 撤销进程/剥夺资源 | 代价大 |
步骤:①算Need = Max - Allocation;②找安全序列;③试分配→检查安全状态
资源分配图有环 + 每资源单实例 = 充分必要条件(有环⇔死锁)
资源分配图有环 + 多实例 = 必要条件(有环不一定死锁,无环一定不死锁)
逻辑地址→物理地址的过程叫重定位
| 分页 | 分段 | |
|---|---|---|
| 划分依据 | 物理(固定大小) | 逻辑(可变大小) |
| 地址空间 | 一维 | 二维 |
| 碎片 | 内部碎片 | 外部碎片 |
| 优点 | 管理简单 | 便于共享和模块化 |
页表:每个进程一个,记录页号→物理块号映射
TLB(快表):高速缓存,加速地址转换
页表项至少包含:物理块号 + 状态位(存在位)
页号 = 逻辑地址 / 页面大小
页内偏移 = 逻辑地址 % 页面大小
物理地址 = 块号 × 页面大小 + 页内偏移
页号 ≥ 页表长度 → 越界中断
理论基础:程序的局部性原理
三大特征:多次性、对换性、虚拟性(驻留性不是!)
| 算法 | 特点 | Belady异常 |
|---|---|---|
| OPT | 理论最优,无法实现 | 无 |
| FIFO | 先进先出 | 有! |
| LRU | 最近最久未使用 | 无 |
| Clock | 访问位+循环扫描,近似LRU | 无 |
根本原因:分配给进程的物理块不足
解决方案:工作集模型
FIFO算法特有:物理块增加,缺页次数反而增加
①程序直接控制 ②中断驱动 ③DMA ④通道
不需CPU干预:DMA和通道
将独占设备→共享设备;"井"是磁盘上的区域
通过逻辑设备表(LUT)实现逻辑→物理设备映射
硬件 → 中断处理程序 → 设备驱动程序 → 设备独立性软件 → 用户层I/O软件
| 算法 | 策略 | 特点 |
|---|---|---|
| FCFS | 按请求顺序 | 公平但效率低 |
| SSTF | 最短寻道优先 | 可能饥饿 |
| SCAN | 电梯算法,来回扫 | 两端请求等待长 |
| C-SCAN | 单向扫描,返回不服务 | 更均匀 |
| LOOK | SCAN改进,到最远请求即折返 | 不需到物理端点 |
| 方式 | 优点 | 缺点 |
|---|---|---|
| 连续分配 | 随机访问快 | 外部碎片,不便扩展 |
| 链式分配 | 无外部碎片 | 不支持高效随机访问 |
| 索引分配 | 随机访问+无碎片 | 索引块开销 |
文件名(文件名在目录项中,不在inode中!)
直接10项+一级1项+二级1项+三级1项,块4KB,块号4B → 最大约4TB