408每年必考:组成原理_数据的表示与运算

教育   2024-11-03 19:13   北京  


以下内容出自《研知识-计算机组成原理精深解读》59页2.4浮点数的表示和运算


1、考点解读


进程管理的考点如图所示,内容包括进程与线程、处理机调度、进程同步、死锁四部分内容。从历年联考真题命题规律及考试大纲的要求来看,进程与线程内容中重点查进程和线程的基本概念、进程和线程的区别与联系、进程状态转换、进程的控制和进程通信等;处理机调度重点考查调度的基本概念、调度的切换时机及切换过程、典型的调度算法的理解及应用。进程同步重点考查进程同步互斥基本概念和信号量基本概念的理解、经典同步问题的实际应用及计算。死锁重点考查死锁的基本概念、死锁产生的必要条件、处理死锁的策略以及死锁的预防和避免。


本章是在联考中分值占比比较高的一章,综合应用题出现的频率高,其中PV原语操作、经典同步问题及死锁问题是本章综合应用题的考点。


进程管理考点导图:


 

10年本章联考考点统计表



2、死锁避免


死锁避免算法也属于事先预防方法,此方法不是通过事先采取某种限制措施来破坏死锁的必要条件,而是系统在动态分配资源的过程中,首先计算此次资源分配的安全性,防止系统进入一种不安全状态,来避免发生死锁。相对于预防死锁来说,此方法限制条件较弱,系统性能较好。


安全状态


所谓安全状态,是在某一时刻,系统能够按某种顺序(或序列,如P1P2,…,Pn)来为每个进程分配其所需的资源,直至每个进程都能获得最大资源的需求,保证所有进程都顺序完成。此时称 P1P2,…, Pn为安全序列。如果系统中不存在一个安全序列,则称系统处于不安全状态。


如下表所示,假设有三个进程分别是P1P2P3;他们共享一类资源,资源总数为10个,进程P1P2P3最大需求资源数分别为1074,进程P1P2P3已经分配资源数分别为322;尚有3个资源没有分配。问在T0时刻是否安全。


T0时刻资源分配表



T0时刻是安全的,因为存在一个安全序列P3P2P1,只要系统按照此顺序分配资源,即不会出见死锁。首先把3个可用资源拿出2个给P3P3执行完后,释放所有资源,目前可用资源变为5个,然后再把个资源全部分配给P2,使得P2顺利完成,并释放全部资源,可用资源变为7个,最后在将7个资源分配给1,使P1顺利完成,并释放资源,因此T0时刻是安全的。


注意:并不是所有处于不安全状态的系统就一定会发生死锁,但是只要系统处于安全状态就不会发生死锁。


3、银行家算法


狄克斯特拉( Dijkstra)的银行家算法是最具有代表性的死锁避免算法。该算法的基本思想:按照银行家制定的规则给进程分配资源,如果某一进程是首次申请资源时,首先要查看该进程所需的最资源需求数,如果系统可用资源可以满足它的最大需求量,则按当前的申请量为其分配资源,否则就推迟分配。如果某一进程是在执行中继续申请资源时,先检查该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。


①银行家算法定义的数据结构描述。为实现银行家算法,需要定义若干个数据结构,主要包括:可利用资源向量 Available、最大需求矩阵 Max、分配矩阵 Allocation、需求矩阵 Need。假定系统中有n个进程( Pl,P2,, Pn)m类资源(R1,R2,……, Rm),银行家算法定义的数据结构


具体描述如下:


可利用资源向量 Available:为一个含有m个元素的数组,每一个元素代表一类可用的资源数目。如果 Available[i]=K表示第i类资源的现有空闲数量为K,该数组的初始值为系统中所配置的该类资源的数目,其数值随着该类资源的分配和回收而动态改变。


最大需求矩阵 Max:为一个n×m矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求,如果 Max[i][j]=K表示第i个进程对第j类资源的最大需求数为K


分配矩阵 Allocation:为一个n×m矩阵,定义了系统中每一类资源当前已分配给每一进程的资源数。如果AlloCation[i][j]=K,则表示进程i当前已分得j类资源的数目为K


需求矩阵 Need:为一个n×m矩阵,定义了每个进程尚需分配的各类资源数。如果 Need[i][j]=K,则表示进程i还需要j类资源的数目为K


注意:上述三个矩阵间存在下述关系为:


Need[i][ j]= Max[i][j]– Allocation[i][j]


②银行家算法实现过程描述。设 Request;是进程 Pr的请求向量,如果Request;[j]=K,表示进程 Pi需要j类资源数为K个。当P;发出资源请求后,系统按下述步骤进行检查:


A.如果 ,便转向步骤②;否则认为出错,因为它所需要的资源数已超过它所需要的最大值。


B.如果 便转向步骤③;否则,表示尚无足够资源,P₁须转入等待。


C.系统试探着把资源预分配给进程Pⱼ,并修改下面数据结构中的数值:


Available[j]– Available[j]Requesti[j];

Allocation[i][j]= Allocation[i][j]+ Requesti[j];

Need[i][j] = Need[i][j]- Requesti[j]


D.系统执行安全性算法,检查此次资源分配后系统是否处于安全状态。若安全,则真正将资源分配给进程Pⱼ,完成本次分配;否则,将本次的试探预分配作废,恢复③的资源分配状态,并置进程P;为等待状态。


4、命题研究


进程管理是操作系统五大管理功能之一,其内容包括进程管理和处理机调度两大块的内容,是年年考试的重点,也是难点。


通过对考试大纲的解读和历年联考真题的统计与分析发现,本章的命题一般规律和特点有以下几方面:


(1) 从内容上看,考点主要以对进程概念和特征的理解、进程状态切换及其切换条件的理解、处理机调度概念的理解、经典调度算法的理解及应用、进程同步的概念理解及应用分析,死锁的概念、必要条件及处理策略的理解、银行家算法的理解及应用等为主。其中进程的概念、进程调度、信号量机制、进程同步和互斥,进程死锁是本章的重中之重,必须重点掌握,另外PV原语操作、同步问题、经典调度算法、死锁问题及银行家算法是综合应用题高频知识点。


(2) 从题型上看,除201020122018外,其余每年都有选择题和综合应用题。


(3)从题量和分值上看, 选择题一般在4~6道,综合题1道。除2010年、2012年之外,其余每年分值都在12分以上,平均占分12分。


(4)从试题难度上看,选择题需要理解概念的基础分析,属于中等难度,综合题应用题中,调度问题中等难度,经典同步问题有点难度。


总的来说,本章内容是本课程的重点,以历年联考看,本章综合应用题出现的概率在80%以上。因此,对于本章内容,考生除了要掌握基本的概念和基本的原理外,还要求考生能运用这些基本原理去分析和解决问题,其中PV原语操作、同步问题及死锁问题都有可能出综合应用题。


5、精讲视频——银行家算法



请通读并整理下图题干信息,再学习下一个视频,这样效率更佳。


 

6、真题与习题精编


1、产生死锁的主要原因是什么?


2、有哪些处理死锁的基本方法?静态分配资源的方法属于哪种处理死锁的方法?而银行家算法属于哪种死锁处理方法?


3、设系统中有三种类型的资源(A,B,C)和五个进程(P1,P2,P3,P4,P5),A的资源的数量为17.B的资源的数量为5,C的资源的数量为20,在T0时刻状态见下表。系统采用银行家算法实施死锁处理策略。【南京航空航天大学2014年】



T0时刻是否为安全状态? 若是请给出安全序列。


在T0时刻,若进程P2请求资源(0,3,4),是否能实施资源分配?为什么?


②的基础上,若进程P4请求资源(2,0,1),是否能实施资源分配? 为什么?


基础上,若进程P1请求资源(0,2,0),是否能实施资源分配?为什么?


7、答案精解


【考点】死锁产生的必要条件及死锁的处理策略和银行家算法的理解。


【参考答案】(1)产生死锁的原因可以归结为以下两点:一是竞争资源,当系统中供多个进程共享的资源打印机、公用队列等,其数目不足以满足诸进程的需要时,会引起诸进程对资源的竞争而产生死锁;二是进程间推进顺序非法,进程在运行过程中,请求和释放资源的过程不当,也会导致产生进程死锁。


(2)处理死锁的方法:预防死锁、避免死锁、检测死锁和解除死锁。


静态分配资源的方法要求进程在其运行之前一次性申请所需要的全部资源,在它申请的资源数未满足前不投人运行。一旦投人运行,这些资源就一直归它所有,也不再提出其他资源请求,这样做破坏了'请求与保持”条件,属于预防死锁的方法。


银行家算法是在某一时刻,系统能按照某种顺序来为每个进程分配所需要的资源,直至最大需求,使每个进程都可以顺利完成,则称此时的系统为安全状态,否则为不安全状态。这种处理死锁的方法属于避免死锁。


(3)先根据 Allocation数量和 Max数量计算各进程的 Need资源数见下表。



现在对T0时刻的状态进行安全分析如下。


由于 Available向量为(2,3,3),因此 Work向量初始化为(2,3,3)。因为存在安全序列(P4,P2,P3,P5,P1),见下表,所以T0时刻处于安全状态。

②T0时刻由于 Available向量为(2,3,3),而P2请求资源向量为(0,3,4),明显C资源的数量不足,所以不能实施资源分配。


③ 进程P4需求的资源数(2,0,1)小于当前系统可利用的资源数(2,3,3)。先尝试把P4申请的资源分配,这时可用资源变为(0,3,2)。系统当前的状态见下表。


由上表可知,当前系统中存在安全序列(P4,P2,P3,P1),系统处于安全态可以将资源分配给P4。


④分配给P4资源后当前系统的状态见下表



P1申请资源数(0,2,0)小于当前系统剩余资源(0,3,2),故试着把P1申请的资源分配给它,系统的状态见下表。




研芝士计算机考研
研芝士 | IT类工科上岸模型开创者
 最新文章