(1)进程的概念
(2)进程的特征
其中,动态性是进程最基本的特性
进程状态 | 描述 |
---|---|
创建状态 | 分配进程标识符并申请PCB—-分配资源—-初始化PCB—-插入就绪队列 |
就绪状态 | 已分配到除CPU外的所有必要资源 |
执行状态 | 单CPU中同一时刻只能有一个进程在执行 |
阻塞状态 | 等待某一事件(通常是等待输入输出完成,比如等待打印机空闲) |
终止状态 | 操作系统善后处理—-PCB清零并返还系统 |
挂起操作 | 为了系统和用户观察分析进程。 |
在操作系统中,挂起原语(Suspend)和激活原语(Activate)与挂起状态(Suspended State)的关系是管理进程生命周期的一部分。
挂起原语(Suspend): 挂起原语是操作系统中用于将进程从运行状态或就绪状态转换到挂起状态的一个系统调用或操作。当一个进程被挂起时,它通常会释放所占用的资源,并且其状态会被设置为挂起状态。挂起状态意味着进程不会被操作系统调度执行,直到它被激活或者被终止。
激活原语(Activate): 激活原语与挂起原语相反,它用于将处于挂起状态的进程恢复到就绪状态。当进程被激活时,它的状态会被设置为就绪,这意味着它可以被操作系统调度执行,只要它满足执行条件(如没有更高的优先级进程正在执行)。
挂起状态(Suspended State): 挂起状态是进程可以进入的一种状态,当进程被挂起原语操作时,它就会进入这种状态。在挂起状态下,进程不会消耗CPU资源,也不会执行任何操作,直到它被激活。挂起状态通常用于暂停进程以便进行维护、调试或等待某些事件(如等待I/O操作完成)。
总结来说,挂起原语和激活原语是操作系统用来控制进程状态转换的工具,而挂起状态则是进程在这些转换中可能经历的一种状态。通过这些操作,操作系统能够灵活地管理进程,以满足用户和系统的需求。
(1)进程控制块(PCB)
(2)程序段
(3)数据段
(1)进程的创建
①父子进程
②引起进程创建的事件
③进程创建过程
(2)进程的终止
引起进程终止的事件:
(3)进程的阻塞和唤醒
进程间的低级通信方式为PV操作,后面会细讲,这里先详细介绍一下高级通信方式
(1)共享存储
(2)消息传递系统
分类:
通信方式 | 描述 |
---|---|
直接通信方式 | 使用OS提供的发送原语直接将消息发送给目标进程 |
间接通信方式 | 通过共享中间实体(邮箱),需要发送和接收原语 |
(3)管道通信系统
(1)线程的基本概念
(2)线程与进程的比较
(3)线程的状态与转换
(4)线程的实现方式
①用户级线程
②内核级线程
③组合方式
(5)多线程模型
模型 | 描述 |
---|---|
多对一模型 | 一个进程的多个用户级线程映射到一个内核级线程上。一个线程访问内核时阻塞则整个进程都被阻塞;任何时候只有一个线程能够访问内核 |
一对一模型 | 每个用户级线程都有一个内核级线程与之对应。一个线程被阻塞后,允许另一个线程运行,但开销较大 |
多对多模型 | 用户级线程与内核级线程之间存在多对多的映射关系。开销不大且并发性较高 |
性能指标 | 描述 |
---|---|
CPU利用率 | CPU在单位时间内用于处理作业的比率 |
系统吞吐量 | 单位时间内CPU完成作业的数量 |
周转时间 | 作业完成时间 - 作业提交时间 |
平均周转时间 | n个作业的周转时间平均值 |
带权周转时间 | 作业周转时间/作业运行时间 |
平均带权周转时间 | n个带权周转时间的平均值 |
等待时间 | 进程处于等待处理机的时间 |
响应时间 | 用户提交请求到系统首次产生响应所需要的时间 |
(1)调度时机
不能进行进程调度与切换的情况
情况 | 描述 |
---|---|
处理中断时 | 中断处理复杂很难同时进行进程切换 |
进程在操作系统内核临界区中 | 2012年真题指出进程在临界区时可以调度 |
其它需要完全屏蔽中断的原子操作中 | 加锁、解锁、中断现场保护、恢复 |
(2)进程调度方式
(3)闲逛进程
(1)先来先服务(FCFS)调度算法
(2)短作业优先(SJF)调度算法
(3)优先级调度算法
调度相关特性 | 描述 |
---|---|
是否可以抢占 | 剥夺式、非剥夺式 |
优先级是否改变 | 静态优先级、动态优先级 |
进程优先级设置原则 | 系统进程>用户进程;交互式进程>非交互式进程;I/O型进程>计算型进程(2013) |
(4)高响应比优先调度算法
(5)时间片轮转调度算法
(6)多级反馈队列调度算法(2019、2020)
(1)基本概念
(2)上下文切换流程
(3)区分
操作系统概念 | 解释 |
---|---|
模式切换 | 用户态和内核态之间的切换 |
调度 | 决定资源分配给哪一个进程(一般现有资源调度后有进程切换) |
上下文切换 | CPU从一个进程切换到另一个进程,保存当前进程的状态,并恢复另一个进程的状态的过程 |
(1)基本概念
概念 | 解释 |
---|---|
临界资源 | 一次只允许一个进程使用的共享资源(打印机、共享变量、共享缓冲区、公用队列) |
临界区 | 每个进程中访问临界资源的代码段 |
临界资源访问过程 | 进入区–>临界区–>退出区–>剩余区 |
(2)直接相互制约(同步)
(3)间接相互制约(互斥)
互斥机制应遵循的规则:
规则 | 描述 |
---|---|
空闲让进 | 临界区空闲时,允许进程进入 |
忙则等待 | 已有进程进入临界区时,其他进程必须等待 |
有限等待 | 请求进入临界区的进程应在有限时间内进入 |
让权等待 | 当进程不能进入临界区时,应立即释放处理器(不是必须遵守的规则) |
(1)软件实现
(2)硬件实现
中断屏蔽方法: 进程在执行临界区代码时,通过关中断防止其它进程进入临界区
(1)特点
(2)分类
信号量类型 | 描述 |
---|---|
整型信号量 | wait(S): while(S<=0); S=S-1(这里可能卡在while语句一直循环占用处理器,故不遵循让权等待) |
记录型信号量 | 增加一个进程链表指针list,用于链接所有等待该信号量的进程。在wait操作后,进程会添加到链表中等待,实现了让权等待。(2018) |
(3)应用
同步/互斥类型 | 描述 |
---|---|
进程同步 | 使用信号量实现,确保X在Y之前执行。初值S为资源数量。 |
S=0; X;V;P;Y | |
进程互斥 | 使用信号量实现,确保同一时刻只有一个进程能够进入临界区。 |
S=1; P1(P;临界区;V);P2(P;临界区;V) | |
实现前驱关系 |
(1)组成
(2)特点
(3)条件变量
两个或两个以上进程因竞争资源而相互等待,若无外力作用这些进程都无法向前推进(2019)
(1)系统资源的竞争
(2)进程推进顺序非法
问题描述 | 描述 |
---|---|
竞争可消耗资源 | 信号量引起死锁 |
进程推进顺序不当 | 1. 请求和释放资源的顺序不当(A申请B占有的资源,B申请A占有的资源)2. 信号量使用不当(A等待B发消息,B等待A发消息) |
死锁条件 | 描述 |
---|---|
互斥条件 | 进程对资源只能互斥访问(一段时间内只能有一个进程访问) |
不可抢占条件 | 进程所获得的资源在未使用完毕前不可被其他进程剥夺。 |
请求和保持条件 | 进程保持了至少一个资源的同时请求其他资源。 |
循环等待条件 | 形成循环等待链,每个进程已获得的资源同时被下一个进程所请求。 |
(1)预防死锁
死锁条件 | 破坏策略 |
---|---|
破坏互斥条件 | 将临界资源改为可共享资源(SPOOLing技术) |
破坏不可抢占 | 进程提出资源请求不能得到满足时释放自己已保持的全部资源 |
破坏请求和保持 | 进程在开始之前,必须一次性申请所需全部资源进程运行过程中逐步释放自己用过的资源再请求新资源 |
破坏循环等待 | 对系统所有资源线性排序,进程必须按顺序请求资源 |
(2)避免死锁
原理
银行家算法
不安全状态与死锁
(3)检测死锁
(4)解除死锁
方法 | 描述 |
---|---|
资源剥夺法 | 抢占某些死锁进程的资源分配给其它死锁进程(2019) |
撤销进程法 | 撤销部分或全部死锁进程并剥夺这些进程的资源 |
进程回退法 | 让进程逐个回退到足以回避死锁的地步 |