这篇的内容是进程管理。
一、进程与线程
1.进程的概念与特征
1)概念
进程是资源分配的基本单位,线程是处理机调度与分配的基本单位。
对进程线程的理解还可参考:在引入线程的操作系统中,资源分配和调度的基本单位是什么?进程还是线程?为什么?_百度知道
2)特征
动态性、并发性、独立性、异步性、结构性
2.进程的状态和转换机制
1)进程的状态
系统资源可以大致分为处理机资源和其他资源。就绪态与阻塞态经常考。
2)进程的转换
3.进程的控制过程
1)进程创建
了解子线程、父线程,以及进程创建的过程。
2)进程的终止
即哪些情况进程终止,进程终止会造成什么变化。
3)进程阻塞与唤醒
4)进程切换
4. 进程的三块组成
可以打开自己电脑的任务管理器,结合任务管理器进行理解。
1)进程控制块PCB
2)程序段
举个例子:你可以用一个电脑登陆多个QQ账号,每个QQ账号的运行都是不同的进程。
3)数据段
补充:
5.进程的通信
三种。共享存储、消息传递、管道通信。其中管道通信只能支持半双工,也是共享存储的优化与发展。
更具体参考:进程间通讯的7种方式_zhaohong_bo的专栏-CSDN博客_进程间通信
6.线程与多线程
1)线程的基本概念
这段话都是精髓。
2)线程与进程的比较
3) 线程的属性
一些经常重复出现的话一般就是很重要的点,只要把经常出现的话弄清楚了,就会感觉没那么抽象了。
4)多线程模型
二、处理机调度
1.三级调度
1)调度的层次
从作业调度到进程调度,越来越抽象并接近用户层,离底层硬件越来越远。结合进程的几个状态进行理解,这里面的几个注意点是:资源、内存、处理机。
2)三级调度的关系
所以进程调度是在调度处理机的使用权。
2.进程调度的方式
3.进程调度的准则
调度算法应当尽可能去满足以上几个性能指标。
4.几种典型的调度算法
1)先来先服务算法(FCFS)
FCFS是不可剥夺算法,算法简单但效率低。关于CPU繁忙型与IO繁忙型课参考:如何理解操作系统先来先服务算法对CPU繁忙型进程有利,对io繁忙型进程不利? - 知乎
2)短作业优先算法(ShortJobFirst SJF)
饥饿是因为调度策略不周造成的,而饥饿是因为等待临界资源循环等待造成。课参考:死锁和饥饿的主要区别 - huyoo - 博客园
3)优先级调度算法
4)高响应比优先调度算法
5)时间片轮转调度算法
6) 多级反馈队列调度算法
三、进程同步
解决临界资源问题。
个人理解:系统资源包含处理机资源跟其他资源,而临界资源属于其他资源的一种,临界资源是其他资源中最需要引起关注的一个。
1.进程同步的基本概念
进程同步是为了协调进程间因临界资源问题带来的制约关系。
1)同步机制的准则
这四个原则蛮重要的,在制定进程同步算法时需要考虑到的。空闲让进、忙则等待、让权等待、有限等待。
2)临界资源
3)同步
4)互斥
同步和互斥是两种进程制约关系。此同步跟进程同步有点不大一样。
接下来三个是进程同步常见的三种方法,但是没讲事件,但是可参考:进程同步的四种方法_zxx901221的专栏-CSDN博客_进程同步的方式
2.实现临界区互斥的基本方法
1)软件实现方法
思路:应该是既要满足俩个进程同时请求临界资源时不会有问题,也要满足只有一个进程重复请求临界资源时不会有问题。下面只有算法4同时符合这两个要求。
算法一:单标志法
turn为0,P0进程才能运行;turn为1,P1进程才能运行。因为必须交替执行,不能一个重复执行,违反空闲让进。
算法2:双标志法先检查
flag[i]为false,说明进程i没有使用临界资源; flag[j]为false,说明进程j没有使用临界资源。当双方都想要临界资源的时候,会因为会出现同时进入临界区的情况,违反忙则等待。
算法3:双标志法后检查
flag[i]为false,说明进程i没有使用临界资源; flag[j]为false,说明进程j没有使用临界资源。当双方都想要临界资源的时候,会因为会出现同时进入不了临界区而一直等待的情况,造成饥饿现象而一直无限等下去,违反有限等待。
算法四:皮特森算法
将算法1与算法3结合,同时解决了交替执行和重复执行所遇到的问题,是一个完整符合要求的算法了。这个算法使用了三个标志,用两个标志应该是没办法解决问题。但是该方法无法实现让权等待。
2)硬件实现方法
略。硬件方法相对软件方法简单粗暴了许多,不用考虑同时请求的时候会出问题。
3.信号量
1)整型信号量
2)记录型信号量
记录型信号量引入了阻塞,可实现让权等待。临界区互斥软硬件方法均无法实现让权等待。
3)信号量实现同步
两个进程一个P,一个V
4)信号量实现互斥
在一个进程里先P后V。
4.管程
1)定义
像是引入了一个进程控制类。
2)条件变量
用条件变量设置阻塞条件。
5.常见进程同步问题
进程同步问题感觉挺难的,只能背套路,可参考:信号量同步互斥问题_十分残念的博客-CSDN博客_同步信号量
操作系统学习笔记:进程同步与通信_坤舆湖畔的万某某的博客-CSDN博客
四、死锁
1.死锁的概念
1)死锁定义
2)死锁产生原因
2.死锁的处理策略
3.死锁预防
4.死锁检测与接触
5.死锁避免
1)系统安全状态
这告诉我们什么样的资源分配申请序列是安全的。
2)银行家算法
就是告诉我们要怎样怎样得到安全序列。