第二章 进程管理
该文采用 “问题-答案” 的方式来辅助知识点的巩固,在了解知识点的基础上,进一步加深理解,有助于对卷子做题,特别是简答题部分,
注:very very importance的考点会 ➕ 🌟
🌟1、程序顺序执行与程序并发执行
-
程序顺序执行:
- 顺序性
- 封闭性:程序结果只和他本身有关
- 可再现性
-
程序并发执行
- 间断性
- 失去封闭性:并发进程共享变量,其执行结果与速度有关
- 不可再现性
🌟2、进程特征
- 动态性(程序最本质的特征)
- 并发性
- 独立性
- 异步性
🌟3、进程的组成(通常由原语控制)
- 程序段
- 数据段(可以为其他进程共享)
-
PCB (进程存在的唯一标志)(长驻内存)
- 进程标识符:识别每个进程UID、父进程ID、用户ID
- 进程调度信息
- 进程控制信息
- 处理机状态信息
🌟4、进程创建
- 分时:用户登陆
- 批处理:作业调度
- 系统:提供服务
过程:申请空闲PCB->为新进程分配内存等资源->PCB进行初始化->将新进程插入到就绪队列
🌟5、临界区和临界资源
- 解释:当A处于临界区时可以被B进程中断,只是B进程进入不了临界区
- 临界资源:一次只允许一个进程使用(如打印姐)
- 临界区:访问临界资源(进入区)等那段代码(退出去)
🌟6、同步机制遵循原则
- 空闲让进(以便有效利用资源)
- 忙则等待(保证互斥使用临界资源)
- 有限等待(以免“死等”)
- 让权等待(以免“忙等”)
🌟7、整形信号量(wait和sagnal是进程间的一种低级通信原语)
wait(s){
while(s <= 0);
s--;
}
signal(s){
s++;
}
🌟8、记录形信号量
wait(semaphore *s){
s->value--;
if(s->save < 0)
block(s->list);
}
sagnal(semaphore *s){
s->value++;
if(s->save <= 0)
wakeup(s->list);
}
🌟9、哲学家进餐问题->解决拌饭
- 至多允许四个哲学家同时进餐
- 仅当两边筷子都可以同时使用,才允许它进餐(最容易理解)
- 规定奇数拿左边,偶数拿右边,再拿左边
🌟10、管程
- 定义:利用共享数据结构抽象表示系统中共享资源
-
特点:
- 管程内部局部变量只能被局部于管程内部的方法调用
- 任何进程只能通过管程提供进程入口进程管程
- 最多只允许一个进程在管程中执行
-
条件变量:区别信号量,条件变量不含值
- x.wait():挂到与x相对应的等待队列
- x.signal():若无等待进程,则不起作用
11、进程通信类型
- 消息格式(四部分):发送进程名、接收进程名、消息长度、消息征文
-
组成部分:
- 共享存储器系统(共享存储区)
-
管道通信(文件)
- 半双工
- 读写进程都会被阻塞
-
消息传递系统
-
直接通信:send(
,
)、receive(
,
) - 间接通信:(信箱)
-
直接通信:send(
- 消息传递系统
-
客户机-服务器系统
- 套接字
- 远程过程调用
- 远程方法调用
12、消息缓冲队列通信机制
- 消息缓冲队列首指针:mq
- 消息缓冲队列的互斥信号量:mutex
- 消息缓冲队列资源信号量:sm
🌟13、进程和线程目的:
- 进程目的:使程序正确地并发执行,以提高资源利用率和系统吞吐量
- 线程目的:减少并发执行的开销,提高程序执行的并发程度
🌟🌟14、进程和程序的异同:
- 主旨:进程和程序是紧密相关而又完全不同的概念
- 同:进程和程序都包含程序段、数据段
-
异:
- 进程还拥有数据结构PCCB
- 动态性:进程是动态的,创建而产生,调度而执行,撤销而消亡,有生命期;程序是静态的,只是一组指令的有序结合,永久放在某个介质上
- 并发性:进程实体可以在多个内存中并发执行(引入进程的目的);而程序不行,程序执行具有不可再现性
- 独立性:进程是独立运行、独立分配资源、独立接受调度;而程序不具有PCB,不可能在多道环境下独立运行
🌟15、PCB的作用是什么?为什么读PCB是进程存在的唯一标志?
- PCB的作用:PCB是操作系统用来描述和管理进程的数据结构,其作用是使一个在多道程序环境下,不能独立运行的程序,变成一个能独立运行的基本单位,即与其他进程并发的进程
-
为什么?
- 创建进程时,分配PCB
- 进程调度时,根据PCB状态和优先级选择新进程,保存老进程现场信息到PCB,用其恢复现场
- 执行中,访问文件、通信、同步都要用到PCB
- 结束:系统回收PCB
16、消息缓冲队列通信机制功能
- 构成消息
- 发送消息
- 接收消息
- 同步与互斥
17、直接和间接通信比较
- 发送和接受原语(前者有)
-
通信链路
- 直接:有且只有一条,只需要对方标识符即可
- 间接:可以有多条,共享信箱
-
提供对方标识符
- 直接:显式
- 间接:通过信箱
-
实时性
- 直接:只有实时通信
- 间接:即有实时,也有非实时通信
🌟🌟18、进程和线程进程比较
-
调度性:
- 进程:传统OS中,拥有资源,独立调度和分派的基本单位
- 线程:引入线程OS中,线程调度和分派的基本单位
-
并发性
- 引入线程OS,不仅进程间可以并发执行,一个进程内的多个线程间也可以并发执行,相比传统的OS有更好的并发性
-
拥有资源
- 进程:两个OS中都是拥有资源的基本单位
- 线程:除了一点在运行中必不可少的资源外,本身基本不拥有系统资源
-
独立性
- 进程:独立申请资源、独立的运行
- 线程:共享地址空间和资源、独立性较低
-
开销
- 进程:创建、撤销,系统为之分配回收资源,开销更大
- 线程:由于共享,同步和通信也变得更加容易
-
支持处理机系统
- 传统进程:单处理机
- 引入线程:多个线程分配多个处理机
🌟19、处理机调度(用图片比较生动形象🐶)
🌟🌟20、调度算法
🌟20、实时调度
🌟🌟22、死锁的定义
- 一个进程集合中的每个进程都在等待只能由该集合中的其他进程才能引发的事件=》该组进程进入死锁状态
🌟23、产生死锁的原因
- 竞争系统资源(系统资源不足)
- 进程推进顺序非法
🌟🌟24、产生死锁的条件
- 互斥条件
- 请求与保持
- 不剥夺条件
- 环路等待条件(必要条件)
🌟25、处理死锁的方法
-
预防死锁:
- 破坏请求与保持:所有的进程必须一次申请所需要的全部资源
- 破坏不剥夺:保持某些资源的进程,提交新请求得不到满足时,必须释放它的全部资源
-
破坏环路等待:系统中的资源按类型赋予不同序号,并规定所有资源必须严格按照资源递增顺序申请资源
- 优点:资源利用率,系统吞吐量🔝
-
缺点:
- 限制新设备增加
- 进程使用资源顺序不合,造成资源的浪费
🌟26、避免死锁
🌟27、死锁的检测与解除
🌟28、死锁的预防与死锁的避免有什么区别?
- 死锁的预防是系统预先确定一些资源分配策略,进程按照规定申请资源,系统按预先规定的策略进行分配,从而避免了死锁的发生
- 死锁的鼻尖则是在进程提出资源申请时候,系统测试资源的分配,仅当确保系统安全时,才把资源分配给进行,使系统一直处于安全状态,从而避免死锁
🌟29、引起进程调度的因素有哪些?
- 正在执行的进程正常或异常终止
-
正在执行进程由于某些原因阻塞
- 提出I/O请求后被阻塞
- 调用wait操作时因为资源不足而阻塞
- 因其他原因执行block原语而阻塞
- 在引入时间片的系统中,时间片用完
- 抢占调度方式中:高优先权进程进入就绪队列
30、为什么说多级反馈调度算法能较好的满足各方面用户需要
- 终端型用户,他们提交通常为交互型作业,较小,系统只需要能在第一个对列规定的时间内完成,他们都很满意
-
短批处理作业用户
- 与终端型作业相同,那么可以获得与其一样的事件
- 较长的作业,第二第三队列也可以执行完成
-
长批处理作业用户:
- 它们将作业依次放在1,2,… ,n队列中运行,按轮转方式运行,故不必担心作业长期得不到处理,且每下降一个队列,时间片增加,进一步缩短长作业wait时间
31、解除死锁,选择撤销进程or抢占进程,考虑什么?
- 优先权
- 进程执行时间
- 估计剩余时间
- 进程类型(批处理or交互型)
- 需要撤销的进程数
🌟32、进程与线程的定义
- 进程:是具有独立功能的程序在某个数据集合上的一次执行过程
- 线程:是进程内的一个执行实体或执行单位(是由线程创建)
33、抢占式和非抢占式哪种系统开销大?
-
抢占式
- 可抢占式调度严格保证任何时刻,让具有更高优先权的进程占有处理机运行,因此增加了处理机带哦度的时机,引起为退出处理机进程保留现场,为占有处理机的进程恢复现场,时空开销大
34、Linux系统中,进程调度采用的技术是___
- 动态优先级
🌟35、用户态->系统态的唯一途径
- 系统调用
🌟36、迷惑性很强的题目:9个生产者,6个消费者,共享8个容量的缓冲区=》使用的互斥信号量s的初始值
- 1个
37、操作系统中的作业管理是:
- 宏观的高级管理
38、作业调度程序的工作:
- 分配和释放外部作业
39、进程两大类
- 系统进程
- 用户进程
40、当一个进程完成了特定的任务后,系统回收这个进程所占有的____和取消进程的_____就撤销了该进程
- 工作区
- PCB
🌟🌟🌟41、pv操作的格式(大框架)
semaphore mutex=1,empty=5,full=0;
main(){
cobegin
PA();
PB();
PC();
coend
}
PA(){
while(1){ //存在,看是否有多次调用需要
***
}
}
PB(){
while(1){
***
}
}
🌟42、协调进程之间一般通过____进行间接通信
- 信箱
43、内核级线程和用户级线程有何异同?
-
1.同
-
2.异
44、证明题
🌟45、多进程的并发系统中,肯定不会因竞争___而产生死锁
- CPU
🌟46、一个理想的作业调度算法是____又能使进入系统的作业_____
- 提高系统效率
- 及时得到计算结果/周转时间短
🌟47、中断装置的主要职能
- 检查是否有中断事件发生
- 若有中断事件发生,保存好被中断的进程的断点及现场信息,以便在适当的时候能进行恢复
- 启动操作系统的中断处理程序
48、一个分时兼批处理的os应该怎么样调度和管理作业
- 优先接纳终端作业,仅当终端作业数小于操作系统游允许同时工作的作业数时,可以调度批处理作业
- 允许终端作业和批处理作业混合同时执行
- 终端作业与批处理作业分成两个就绪进程队列
- 有终端型作业时,优先让其按“时间片轮转”先运行,没有终端作业再按确定的让批处理就绪进程执行
🌟49、进程的同步与互斥
- 同步:并发进程之间存在互相制约和相互依赖的关系
- 互斥:若干进程共享一资源时,任何时刻只允许一个进程使用
50、什么事可再入程序?有什么特点?
- 是什么:能被多个用户同时调用的程序
-
特点:
- 程序为纯代码(用户不可修改)
- 调用者提供工作区(用户可使用该工作区)
51、驱动调度是什么?目的?
- 是什么:对若干等待使用磁盘的进程,系统采用一定的调度决定等待访问者的执行顺序
- 目的:降低若干等待访问者执行输入输出操作的时间
🌟52、判断题:信号量是一个初值非负的整型变量,可以在其上做加1和减1操作
- ❌ 减1时要检查是否>0
53、设计一个进程调度,满足:1)短进程优先 2)I/O进程优先
🌟54、当I/O繁忙型作业与CPU计算型作业判断优先级
- I/O繁忙型作业优先级高,因为它没办法长时间保存所处理的数据
🌟55、如何处理进程的优先级
- 时间片用完 降低
- 完成I/O 提升
- 处于就绪等待队列 不变
- 目的:为了改善交互系统的响应时间,并均衡于各作业的公平性
56、父进程创建子进程是否等价于主进程调用子程序
- 这是完全不同的两个概念
- 父进程创建子进程,需要创建进程控制块,有关信息填入PCB,进程标志设为就绪态
- 主程序调用子程序,主程序暂停在调用点,子程序开始执行,直到子程序在执行完毕后返回,主程序开始执行
57、什么事前驱图?为什么要引入前驱图?
- 前驱图是有向无环图,记DAG,用于描述进程之间执行的前后关系
- 原因:可以形象的表示进程之间的先后关系和顺序,可以更好的描述程序的顺序和并发执行情况。
🌟🌟58、作业调度中两执行的步骤
- 接纳多少作业(取决于多道程序)
- 接纳那些作业(取决于采用的调度算法)
🌟59、为什么要引入高响应比优先调度算法,有何优点?
- FCFS只考虑等待时间而忽略了作业的运行时间
- SJF只考虑作业运行时间而忽略了作业的等待时间
- 高响应比优先调度算法二者都考虑,照顾短作业又不会使得长作业等待时间过长,改善了处理机的性能
-
优点:
- 等待时间相同,运行时间短优先,降低平均周转时间,提高系统吞吐量
- 要求服务时间相同,等待时间长优先,公平原则
- 随等待时间增加,优先权上升,长作业不会长期得不到响应
🌟60、时间片轮转算法中,如何确定时间片的大小
- 系统对响应时间的要求
- 就绪队列中进程的数目
- 系统的处理能力
🌟61、程序的并发性为什么会失去封闭性和可再现性
- 多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序改变,故使程序失去封闭性
- 程序在执行的过程中,受到其他程序的影响,也将导致失去可再现性,即得到的结果不同
62、挂起的进程=》静止态:1)静止就绪 2)静止阻塞
=〉激活:1)活动就绪 2)活动阻塞
🌟63、引入进程(为什么?)
- 是为了实现多个程序并发执行
版权声明:本文为qq_45151059原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。