进程与线程相关概念
进程:系统中正在运行的一个应用程序。
线程:进程之内独立执行的一个单元。
操作系统的调度单元是线程。一个程序至少有一个进程,一个进程至少有一个线程。
进程状态转换图
进程调度算法
1.先来先服务调度算法
2.优先数调度算法:对于优先数相同的采用先来先服务调度算法
3.时间片轮转调度算法:时间片长度=系统对响应时间的要求/就绪队列中允许的最大进程数
4.多级反馈队列调度算法
同步与互斥
信号量:S大于等于0表示可供并发进程使用的资源实体数;S小于0则|S|表示正在等待使用资源实体的进程数。
原语:不可被中断的过程。
P操作:
begin
S = S - 1;
if(S < 0) then W(S);//将当期进程置为等待信号量S状态,放入等待队列。
end
V操作:
begin
S = S + 1;
if(S <= 0) then R(S);//释放一个等待信号量S的进程,将其放入就绪队列。
同步与互斥的区别:
互斥指同一资源在同一时间内只允许一个访问者对其进行访问,访问时无序的。
同步指在互斥的基础上,实现访问者对资源的有序访问。
P操作的同步一定要在互斥前进行。
进程间通信方式
1.共享存储器系统
2.消息传递机制(直接通信和间接通信)
3.管道
死锁
产生死锁的根本原因
1.竞争资源不足
2.进程推进顺序非法
发生死锁以下4个条件一定会同时成立:
1.互斥条件
2.占有且等待
3.不剥夺条件
4.循环等待条件
预防死锁
1.静态分配策略:一次性申请所有所需资源,破坏占有且等待条件,资源利用率低。
2.层次分配策略,破坏循环等待条件(按照层次申请资源,不可能出现拥有A资源在等B资源,拥有B资源在等A资源的情况)
避免死锁
安全状态:如果操作系统能够保证所有的进程能在有限的时间内得到需要的全部资源,则称系统处于安全状态,否则说系统是不安全的,不安全状态意味即将发生死锁。
银行家算法
1.一个进程所需最大资源数不超过银行家现有的资源数可以接纳该进程。
2.进程总的资源申请量不能超过最大资源数
3.如果现有资源满足不了申请进程的最大所需资源数银行家必须推迟分配资源。
4.进程获取到所有资源后要在有限的时间内归还。
银行家算法保证任一时刻至少有一个进程能够获得所有所需资源而执行结束。
检测死锁
死锁定理:当且仅当进程-资源分配图是不可完全简化的。
注意:进程-资源分配图有环不一定存在死锁。
解除死锁
1.结束所有进程并重启操作系统。
2.结束涉及死锁的所有进程。
3.逐个结束涉及死锁的进程,回收资源直到死锁解除为止。
4.抢夺资源。(要防止进程“饿死”及考虑代价问题)