以下完全为个人总结——若发现问题请下方评论,定回
进程管理
- 操作系统最基本的两个特性 - 并发性及共享性
- PCB(进程控制块)- 进程存在的唯一标志
- 进程是进程实体的运行过程,使系统进行资源分配和调度的一个独立单位;
进程是操作系统资源分配和独立运行的基本单位;
任何进程都是在操作系统的内核的支持下运行的,是与内核紧密相关的
特性:动态性(最基本特征)、并发性、独立性、异步性、结构性 - 进程实体组成:程序段、数据段、PCB;
- 进程状态:运行状态、就绪状态、阻塞状态(等待状态)、创建状态、结束状态
- 进程状态的转换中
运行状态->阻塞状态 是一个主动的过程
阻塞状态->就绪状态 是一个被动的过程需要其他程序的协助 -
原语 一般把进程控制用的程序段称为原语
特点: 执行期间不允许中断,是一个不可分割的基本单位 - 进程创建
分配唯一进程标识号,申请空白PCB失败则创建失败
分配资源,失败则阻塞,等待状态并非创建失败
初始化PCB
入队,进入就绪队列; - 进程终止
根据进程标识符,检索PCB,读进程状态
若处于执行态,中止进程,将处理机资源分给其他进程
若有子进程也全部终止
将拥有的全部的资源归还父进程或操作系统
将该PCB从所在队列删除 - 进程阻塞/唤醒
调用阻塞原语(Block)
找到进程标识号对应的PCB
若运行,保护现场,转换状态为阻塞,停止运行
PCB插入等待队列
调用唤醒原语(Wakeup)
找到对应PCB
移出等待队列,职位就绪状态
PCB插入就绪队列 - 进程切换
指的是 处理机从一个进程上的运行转到另一个进程上运行,环境发生了实质性变化。
保存处理机上下文,PC及各寄存器
更新PCB,移动到相应队列
更新为另一程序PCB,内存管理及数据结构
回复处理机上下文
进程的切换与处理机的切换不同
处理机模式,可能同一进程的中断恢复后只需回复现场即可,无需改变当前进程环境信息,而进程切换就绪改变了; - PCB
常驻内存,任意时刻可存取,进程结束后删除
进程实体的一部分,是进程存在的唯一标志
PCB 包含的信息:
进程描述信息:
PID(进程标识符) - 唯一标识进程
UID(用户标识符) - 进程归属用户,为共享和保护服务
进程控制和管理信息
进程当前状态 - 处理机调度分配依据
进程优先级
资源分配清单
处理机相关信息 - PCB组织方式 - 链接/索引
- 进程高级通信方式(P/V操作是低级通信方式)
1)共享存储
低级 - 基于数据结构的共享
高级 - 基于存储区的共享
2)消息传递
进程间数据以格式化消息为单位
通过发送消息/接收消息两个原语
直接通信 - 直接发送到对方的消息缓冲队列中;
简接通信 - 消息发送到中间实体(信箱)
3)管道通信
管道:连接读/写进程实现他们之间通信的一个共享文件
管道机制:互斥、同步、确定对方存在
半双工通信,每次管道中写满后,才可读 - 线程
线程是被系统独立调度和分派的基本单位
轻量级进程,一个基本的CPU执行单元,程序执行流的最小单元
不拥有系统资源,只有运行时所必须的资源,同一进程下的各线程共享进程资源
线程独立调度的基本单位,进程是拥有资源的基本单位 - 内核线程 - 内核支持的线程,线程管理的工作由内核完成
- 用户级线程 - 线程管理由应用程序完成(对操作系统透明)
- 多线程模型(用户级线程->内核线程 对应关系)
1)多对一模型
优点:效率高
缺点:当一个线程使用内核级线程被阻塞,全部阻塞
2)一对一模型
优点:并发能力较强
缺点:开销大、影响程序性能
3)多对多模型
特点:前两种方法的折中,集两个方法之优; - 处理机调度
1)作业调度(高级调度)
使其获得竞争处理机的权利
2)内存调度(中级调度)
提高内存利用率和系统吞吐量
3)进程调度(低级调度)(和切换程序为操作系统内核程序)
按照某种最基本方法策略,最基本调度
频度很高 几十毫秒一次 - 作业调度为进程活动做准备,进程调度使进程活动起来,中级调度将不能运行的进程挂起
- 不能进行调度及切换的情况
处理中断过程
进程在操作系统内核程序临界区中
其他需要完全屏蔽中断的原子操作过程
进程调度方式
1)非剥夺调度方式
简单、系统开销小,适合大多数批处理系统,不适合分时系统实时系统;
2)剥夺调度方式(抢占方式)
提高系统吞吐率和响应效率 - CPU利用率
- 系统吞吐量 单位时间内CPU完成的作业的数量
- 周转时间 作业完成时间 - 作业提交时间
平均周转时间 =(作业1周转时间+作业2周转时间+...)/n;
带权周转时间 = 作业周转时间/作业实际运行时间; - 等待时间 进程处于等待处理机状态时间的总和;
处理机调度算法影响的只有作业在就绪队列中等待的时间; - 响应时间 从用户提交请求到系统首次产生响应所用的时间;
- 调度算法
1)FCFS(first come first solve)
特点:简单、效率低,对长作业有利,对短作业不利(相对SJF和高响应比来说),有利于CPU繁忙,不利于I/O繁忙;
2)SJF(shortest job first)
对长作业不利,容易产生饥饿现象,平均等待时间、平均周转时间最少;
3)优先级调度(优先权调度,适合实时操作系统)
非剥夺式优先级/剥夺式优先级
静态优先级 - 进程创建时定好的,运行期间不变
动态优先级 - 进程运行中,动态调整优先级
4)高响应比优先调度(主要用于作业调度,适用分时系统)
响应比 Rp=(等待时间+要求服务时间)/要求服务时间;
有利于短作业
前两种算法的兼顾,克服了饥饿状态,兼顾了长作业;
5)时间片轮转调度(适用分时系统)
就绪进程按照先来先服务排好序
时间片长短决定于 系统响应时间、就绪队列中的进程数目,系统的处理能力
6)多级反馈队列(适用分时系统)
时间片与优先级的综合,动态调整优先级及时间片大小
优势:
终端型用户:短作业优先
短批处理作业用户:周转时间短
长批处理用户:不会发生饥饿
Here comes the big case:
- 进程同步
- 临界资源 - 一次只允许一个进程使用的资源为临界资源;
- 同步(直接制约关系)
- 互斥(简介制约关系)
- 为禁止两个进程同时进入临界区,同步机制应遵循以下准则
空闲让进
忙则等待
有限等待
让权等待
同步问题单写了
- 死锁问题
- 死锁产生必要条件 -互斥条件 - 不剥夺条件 - 请求和保持条件 - 循环等待条件
- 三种死锁处理策略
死锁预防
破坏互斥条件 / 破坏不剥夺条件 / 破坏请求和保持条件(预先静态分配) / 破坏循环等待(顺序资源分配)条件
死锁避免
系统安全状态(找到安全序列) / 银行家算法
死锁检测
资源分配图 / 死锁定理(简化资源分配图) / 死锁解除(资源剥夺、撤销进程、进程回退)