操作系统复习
先把书读后,再把书读薄,再把书读没。
操作系统复习
操作系统是在应用和硬件之间的异层软件,对上层软件提供硬件抽象,对底层硬件进行管理。
一、程序
顺序执行:顺序性,封闭性(占全机资源)、可再现性
并发执行:间断性,失去封闭性,不可再现性
二、进程
特征:
结构特征:进程 = 程序 + 数据 + PCB
动态性:能创建和撤销,有生命周期
独立性:独立分配资源,独立运行,独立调度
并发性:
异步性:不可预知的速度推进
PCB
作用:使进程能够与其他进程并发执行
信息:
1. 进程标识符
2. 处理机状态:寄存器
3. 进程调度信息:进程状态,优先级,阻塞事件,进程调度算法所需信息。
4. 进程控制信息:程序地址、进程同步和通信信息,资源清单,下一个PCB链接指针
组织方式:
1. 链式
2. 线性
3. 索引:
三种状态
- 就绪
- 执行
- 阻塞
创建
事件
- 用户登陆
- 作业调度
- 提供服务:打印服务
- 应用请求
过程
- 申请空白PCB,从空闲队列索取一个不用的
- 为新进程分配资源,内存、文件、CPU等
- 初始化PCB
- 插入就绪队列
终止
事件
- 正常结束
- 异常结束
- 外界干预
过程
- 找到该进程PCB,读取状态,可能是阻塞、就绪、执行
- 如果是运行态,终止执行,
- 如果有子孙进程,终止执行
- 将全部资源回收父进程或系统
- 将PCB回收,挂到空闲队列
阻塞
事件
- 向系统请求共享资源失败
- 等待某种操作完成
- 等待新任务到达
- 等待新数据的到达
过程
- 阻塞原语 block 阻塞自己
- PCB 状态改为阻塞
- 进入该事件的阻塞队列
- 调度程序重新调度
唤醒
过程
- 从阻塞队列移除
- 将PCB状态改为就绪
- 进入就绪队列
挂起和激活
挂起:
- 活动就绪->静止就绪
- 活动阻塞->静止阻塞
- 执行->重新调度
三、进程同步
并发执行的进程之间按照一定的顺序共享系统资源,使程序的执行具有可再现性
制约关系
- 互斥:资源共享,需要cpu调度
- 合作:进程合作,不用cpu调度,你先我后,你放我取
临界资源
需要互斥访问的,不可抢占的资源:打印机、文件、信号量等
同步机制遵循的规则
- 空间让进
- 忙则等待
- 有限等待
- 让权等待
四、处理机调度
调度算法
高级调度:作业调度(外存的后备队列->内存)
中级调度:内存调度(外存静止就绪态进程->内存就绪队列)
低级调度:进程调度(内存中就绪队列的一个进程->CPU)
作业调度
- 先来先服务
非抢占、有利于长作业、不利于短作业 - 短作业优先
抢占(时间片),有利于短作业,有效降低作业平均等待时间,提高系统的吞吐量, 不利于长作业,必须预知作业的运行时间,未考虑作业的紧急程度 - 高优先权优先算法
抢占:出现了高优先权作业,让出处理机
非抢占:一旦执行就完成
确定优先权:- 系统进程 > 用户进程
- 资源要求少优先权高
- 用户要求
- 高响应比优先
非抢占:作业完成,进行响应比的比较
可以转化成短作业优先,先来先服务。
对于长作业,等待时间长,总会得到处理机。
进程调度
- 时间片轮转
- 多级反馈队列
- 设置多个就绪队列,
- 每个队列先来先服务
- 按队列优先级调度,第一队列空闲才调度第二队列
实时调度算法
- 最早截止时间优先
- 最低松弛度优先
五、死锁
资源
- 可重用性资源:永久性资源
- 可消耗性资源:临界性资源
- 可抢占性资源:CPU、主存
- 不可抢占性资源:打印机,磁带机
原因
- 竞争资源
- 进程推进顺序不当
四个必要条件
- 互斥
- 请求和保持条件
- 不可抢占
- 循环等待
处理死锁的方法
- 预防:破坏必要条件
- 破坏请求和保持条件:使用AND型信号量
- 破坏不可抢占:不运行,就主动释放
- 破坏环路等待:进程编号,智能小号进程申请大号进程资源。
- 避免:资源分配过程,防止进入
- 银行家算法
- 检测:资源分配图
- 解除:剥夺资源、撤销进程。
六、内存管理:连续分配
多级存储器结构
- CPU寄存器
- 主存:cache、主存、磁盘缓存
- 辅存;磁盘
程序的装入和链接
.c .o .exe 装入 执行
装入
绝对装入:装入内存,程序的逻辑地址即物理地址。
可重定位装入方式:逻辑地址到物理地址的变换,在装入时一次性完成,在内存中无法改变。
动态运行时装入:重定位寄存器。
链接
- 静态链接
- 装入时动态链接
- 运行时动态链接
连续分配方式
- 单一连续分配
原理:把所有用户区分配给一个作业 - 固定分区分配
原理:用户划分成若干个大小相等或不相等的分区。
缺点:产生大量内碎片。 - 动态分区分配
原理:事先不分配,作业来了,是多大分配多大。 - 可重定位分配
操作系统复习
http://blog.mornw.com/2022/03/02/学习/os/