面试--操作系统--进程管理

时间:2022-01-27 18:29:29

1、概念:

管理CPU时间片,合理进行分配,协调并发的执行程序,进行资源管理,提高效率。

2、单道程序环境DOS

1)概念:内存中只存储一个程序,完全占有GPU
2)特征:
a、输入——>处理——>输出
b、顺序性:程序依次执行,处理中不能中断;若发现错误,则下一程序无法装入,计算机死机。
c、封闭性:占有全部资源,封闭其他进程对资源的占有。
d、可再现性:程序条件不变,结果不变。
3)结论:单道程序拥有所有资源,无法形成并发执行。

3、多道程序环境

1)概念:内存中存在多个进程,拥有部分资源,可以形成并发执行。
2)特征:
a)失去封闭性:每个进程占有部分资源
b)失去顺序性:多个进程宏观上依次执行,微观上走走停停,不是同时开始,也不是同时结束

4、进程管理的意义

单cpu—>进程并发—>资源争用—>cpu分时间片—>管理cpu时间片的程序—>进程管理

5、进程

1)一个程序在其数据上的活动的集合(正在运行的程序)
2)常见进程
explorer.exe 桌面程序
svchost.exe 动态链接库调用主宿程序,执行特定功能
进程名一点和其实现的功能有关。
p.s.杀毒最好先将其进程结束(正在执行的程序不能结束)
3)进程的组成
a、PCB:进程控制块(区分其他进程,是进行控制信息的集合,常驻内存,提高效率)
b、程序:体现功能,静态,是信息的集合,需要执行才有结果。
c、数据:操作对象
面试--操作系统--进程管理

6、进程状态

1)3态
等待(堵塞):缺少多种资源才能执行(比如,无cpu时间片等;大部分情况下,进程需要I/O时经常处于该状态)
就绪:万事俱备,只欠cpu时间片
运行:使用cpu运行进程
3态转换:
等待—>就绪:只欠cpu时间片
等待—>运行:分配cpu时间片
运行—>就绪:时间片已到
运行—>等待:需要i/o
2)5态
增加了新建和结束
5态转换增加:
新建—>就绪:只欠cpu时间片
运行—>结束:收尾处理,内存回收等

7、进程的通信

1)概念:进程之间信息资源的交互
2)进程的互斥:资源只能被一个进程所使用
进程1—>资源<—进程2,进程1和进程2互斥
3)进程的同步:多进程之间协调工作,节省时间,提高效率
进程1—>资源—>进程2,进程1和进程2同步
4)使用P.V.S信号量机制解决进程的互斥和同步
a、原语:是一个指令集合,由多个及其指令组成,具有原子性
原子性是指:要么执行,要么不执行,执行过程不中断;不可再分割
b、P操作:申请资源
格式:P(S)
意义:执行S=S-1,申请一个资源,并检查信号量的值
S=0当前无空闲资源;S<0当前无空闲资源,其值表示等待队列中的等待进程个数;S>0申请资源后的剩余资源个数
c、V操作:释放资源
格式:V(S)
意义:执行S=S+1,释放一个资源,并检查信号量的值
若S<0,则从等待队列中提取一个等待进程,分配1个资源,其值反映等待队列中等待进程的个数
d、S是一个信号量(整型变量,附带一个等待队列,表示资源的个数及等待进程的个数)
e、P.V.S信号量小结:
P.V.S信号量的产生是进程并发的结果;
P.V.S信号量中若S=0,则必须先执行V操作后,不会产生死锁;
申请资源执行P操作,释放资源执行V操作,不会产生死锁;
在互斥中,P.V是在一个进程中成对出现;
在同步中,P.V是在多个进程中成对出现。

8、死锁

1)概念:
多个进程彼此需要占用对方不愿释放的资源状态,此时进程数大于等于2
2)产生原因:
a、资源不足(cpu、内存)—>添加新资源可解决,but…
b、资源存在,但使用资源顺序不合理
3)产生条件:
a、互斥条件:资源分配明确,一个时刻只能分配给一个进程(不能破坏)
b、保持等待状态:一个进程已分配部分资源,在申请新资源时被拒绝,此时进程不能进行,但所拥有的资源不愿释放
c、不可剥夺条件:以占用资源除非该进程主动释放,否则不能强制占有
(解决办法:添加资源占用及进程执行的优先级,即可破坏)
d、环路等待条件:多进程形成环路等待链,当前进程占有下一进程需要申请的资源
(解决办法:合理调整进程执行顺序即可被破坏)
4)死锁的预防:
a、原则:破坏死锁产生的条件
b、方法:
互斥条件:不能被破坏;
保持等待条件:若执行前分配全部资源则形成“封闭性”;
不可剥夺条件:设置优先级,但系统延迟增大;
环路条件:一般解决办法,设置管理执行顺序。
5)死锁的解除:
a、剥夺资源:根据优先级高低,剥夺该进程资源;
b、强制撤销进程:强制释放,回收资源。

9、进程的调度

1)概念:
从若干处于就绪状态的进程中选取一个进程进行赋予cpu
2)调度的方式:
可剥夺:按照优先级的高低强制把cpu赋予高优先级的进程
不可剥夺:不管优先级高低都等待对方释放cpu,才能调度
3)调度的种类:
高级调度:作业—>进程(长调度,时间长)
中级调度:进程—>就绪进程(就绪调度)
低级调度:就绪进程—>运行进程(运行调度)
4)调度算法:
a、先来先服务(FCFS):按照进程变为就绪状态的先后次序分配CPU,适合长作业,无优先级,无实时性
b、时间片轮转:把CPU运行时间分为多个时间片,每个时间片轮转分配,提高并发
固定时间片/可变时间片(动态地根据进程执行时间来设计时间片长度)
c、优先级算法:根据优先级高低来分配cpu
静态优先级(进程执行前设置优先级,直至进程结束后才可改变)/动态优先级(根据进程动态地配置优先级大小)

10、例题分析

有如下进程:进程个数5,需要3种互斥资源R1、R2、R3,需要个数及已分配个数如下表,3种互斥资源总数为9、8、5。
(1)若进程执行顺序按P1->P2->P4->P5->P3,会产生什么结果?
(2)若进程执行顺序按P2->P4->P5->P1->P3,会产生什么结果?

面试--操作系统--进程管理

【解析】
(1)会发生死锁。
按照互斥资源总数以及已分配资源数可以得到此时还剩余3种资源:2、1、0。执行P1,还需5、3、1个资源,此时剩余资源不足,P1进入等待队列,其所占资源又不愿意释放,则后续进程都进入等待队列,形成环路等待,发生死锁。
(2)会全部执行。
先执行P2,P2进程还需1个R2资源,此时剩余资源充足,P2开始执行,执行完毕释放资源,后续资源均可顺序执行。

注意: 死锁经常是由于环路等待条件的出现。若要防止死锁,剩余未被分配资源的进程为1个时,可以防止死锁出现。
公式: n个进程,每个进程需要i个资源,则该资源初始化总数至少为(n-1)*i