2022年软件设计师考试重点难点 .pdf
《2022年软件设计师考试重点难点 .pdf》由会员分享,可在线阅读,更多相关《2022年软件设计师考试重点难点 .pdf(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件设计师考试重点难点:死锁、流水线、关键路径、系统可靠性计算、多媒体、操作系统、数据库。软件设计师重点难点死锁死锁(Deadlock)是指多个进程在运行的过程中因争夺资源 而造成的一种僵局。当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。在软件设计师 的考试当中,这个知识点的考查是以选择题的形式出现的,考点主要有:死锁的必要条件、解决死锁的方法,最难高难度会考到“银行家算法”。本文将介绍死锁的相关知识,但不会具体讲解“银行家算法”,该算法将在本系列的下一篇文章中详细说明。1、死锁发生的必要条件死锁的发生必须具备四个必要条件,这四个条件相互联系、缺一不可。(1)互斥条件:指进程
2、对所分配到的资源进行排他性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其他进程请求该资源,则请求者只能等待,直至占有该资源的进程用完并释放。(2)请求和保持条件:指进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又已被其他进程占有,此时请求进程阻塞,但又对自己已获得的其他资源保持不放。(3)不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。(4)环路等待条件:指在发生死锁时,必然存在一个进程-资源的环形链,即进程集合 P0,P1,P2,Pn 中的 P0 正在等待一个 P1占用的资源,P1正在等待 P2 占用的资源,,Pn 正在等待已被
3、 P0占用的资源。2、解决死锁的策略解决死锁的策略通常有三种:死锁预防、死锁避免以及死锁解除。前两种方法是“事前措施”,而死锁解除是“事后解决方案”。(1)死锁预防:“解铃还需系铃人”,随便破坏导致死锁这任意一个必要条件就可以预防死锁。例如,要求用户申请资源时一起申请所需要的全部资源,这就破坏了保持和等待条件;将资源分层,得到上一层资源后,才能够申请下一层资源,它破坏了环路等待条件。预防通常会降低系统的效率。(2)死锁避免:避免是指进程在每次申请资源时判断这些操作是否安全,典型算法是“银行家算法”(本系列文章的下一篇将详细讲解该问题)。但这种算法会增加系统的开销。名师资料总结-精品资料欢迎下载
4、-名师精心整理-第 1 页,共 20 页 -(3)死锁解除:该方法的思路很简单,通过死锁检测判断系统是否处于死锁状态,若死锁,则由系统强制剥夺部分进程的资源,将资源强行分配给别的进程。3、判断系统是否可能进入死锁状态从上面的死锁解决方案来看,无论哪一种方式都不可避免的要增加系统的负担。而同时一个系统是否有可进入死锁状态受系统资源数量,需要使用该资源的进程数量等因素影响。若系统本不可能引起死锁,而我们采用了死锁解决方案,是很不合理的。所以,考试中常考到这样的题型:给出系统的资源数,以及需要使用该资源的进程数量等参数,让考生判断系统有无可能产生死锁。下面我们以例题的方式来说明如何解决这类问题。例题
5、 1:系统有 3 个进程:A、B、C。这 3 个进程都需要5 个系统资源。如果系统有多少个资源,则不可能发生死锁。解答:在分析这个问题时,我们可以取一些简单的数据代入试题进行验证、分析,以得到相应的规律。如:(1)当系统 资源数量为 9 时,若给 A 与 B 分别分配了 4 个资源,C 分配了 1 个资源,则系统中的每个进程都存在资源不足的情况,而都不放手自己拥有的资源。不能正常运行完毕,发生死锁。(2)当系统资源数量为12 时,若给 A、B、C 各分配 4 个资源,则死锁。(3)当系统资源数量为13 时,无论如何分配,总有至少1 个进程能得到5 个资源,得到 5 个资源的进程可以正常运行完毕
6、,而后将自己占用的资源分配给其它进程,所以这样能使所有进程运行完毕。从上面的尝试,我们可以总结出一个规律:先给所有进程分配他们所需要的资源数减1 个资源,然后系统如果能再剩余1 个资源,则系统不会发生死锁。这样解答本题变得非常容易。(5-1)*3+1=13。例题 2:一台计算机有 10 台磁带机被 m 个进程竞争,每个进程最多需要三台磁带机,那么 m至多为时,系统没有死锁的危险。A3B4 C5D6解答首先从 m=6 开始考察,首先每个进程分配1 台,剩下的 4 台只能分配给4 个进程,还有2 个进程没有分配,如果已经分配了2 台的 4 个进程需要 3 台的话,则系统就会死锁。同样,如果m=5,
7、也会发生这种情况。当m=4 时,每个进程可以分得2 台,还有 2 个进程可分得3 台,则可正常运行,运行完毕后可释放资源,从而不会死锁。在解这道题时有些学员提出“如果按照答案m=4,则这 4 个进程都是需要 3 台磁带机的话,共需要12 台磁带机,这样还不会死锁?”。这种想法是错误的,因为并不是同时把所有进程都分配给足够的资源才能完成这些进程,可以是一个进程先执行完,释放完资源再执行另一个进程。例如:4 个进程中,每个进程分配2 台磁带机,用去了8 台。剩下 2 台,仍然可以满足两个进程,直到他们完成,释放他们暂用的磁带机。软件设计师重点难点流水线名师资料总结-精品资料欢迎下载-名师精心整理-
8、第 2 页,共 20 页 -流水线这个知识点在软件设计师 考试中是个重点也是个难点,考查的频率比较高。之所以说流水线是个难点,有两方面的原因:一方面是需要理解流水线的理论,了解其工作原理,计算方式;另一方面是在软考当中,对于流水线的相关计算,标准 并不是完全统一的,这一点在后面我们将详细介绍。流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。指令流水线是将指令执行分成几个子过程,每一个子过程对应一个工位,我们称为流水级或流水节拍,这个工位在计算机里就是可以重
9、叠工作的功能部件,称为流水部件。如图 1 所示,IF,ID,EX,WD 分别是流水线的流水部件。流水线要求所有的流水级部件必须在相同的时间内完成各自的子过程。在流水线中,指令流动一步便是一个机器周期,机器周期的长度必须由最慢的流水级部件处理子过程所需的时间来决定。那么我们为什么要提出流水线这个概念,以及流水线是如何提高系统吞吐量的呢?下面我们来看几个图,概念自然就清楚了。图 2 是一个非流水线结构系统执行指令时空图。我们从图 2 中可以看到,任意一个系统时间都有大量的设备处于空闲状态,如第一个时间段有ID,EX,WB空闲,则第二个时间段有IF,EX,WB 空闲。我们再来看采用了流水线结构的时空
10、图3。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 20 页 -显然,采用流水线可以大大提升系统资源 的利用率,以及整个系统的吞吐量。流水线的操作周期取决于基本操作中最慢的那个。例如:一个3 段流水线,各段的执行时间分别为 t,2t,t。则最慢的一段为2t,所以流水线操作周期为2t。流水线的执行时间公式为:第 1 条指令的执行时间+(指令条数-1)*流水线操作周期例题 1若每一条指令都可以分解为取指、分析和执行三步。己知取指时间t 取指 4t,分析时间 t分析3t,执行时间 t执行5t。如果按串行方式执行完100 条指令需要(1)t。如果按照流水方式执行,执行完100 条指令需
11、要(2)t。供选择的答案(1)A.1190 B.1195 C.1200 D.1205(2)A.504 B.507 C.508 D.510 试题分析本题考查的是计算机系统指令流水线方面的基础知识。根据题意可以看到,在此流水线中按串行方式执行完 100 条指令要用 1200t。采用流水方式执行,执行的总时间的关键取决于最长的执行时间,所以执行完100 条的时间为:4t 3 t 5t(1001)*5 t=507 t。试题答案C B 例题 2现采用 4 级流水线结构分别完成一条指令的取指、指令译码和取数、运算,以及送回运算结果4个基本操作,每步操作时间依次为60 ns,100 ns,50 ns 和 7
12、0 ns。该流水线的操作周期应为A ns。若有一小段程序需要用20 条基本指令完成(这些指令完全适合于流水线上执行),则得到第一条指令结果需B ns,完成该段程序需C ns。在流水线结构的计算机中,频繁执行D 指令时会严重影响机器的效率。当有中断请求发生时,采用不精确断点法,则将E 。供选择的答案A:50 70 100 280 B:100 200 280 400 C:1400 2000 2300 2600 D:条件转移无条件转移算术运算访问 存储 器E:仅影响中断反应时间,不影响程序的正确执行名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 20 页 -不仅影响中断反应时间,还影响
13、程序的正确执行不影响中断反应时间,但影响程序的正确执行不影响中断反应时间,也不影响程序的正确执行试题分析本题主要考查对流水线技术的掌握。对于 CPU 来说,流水线技术实际上是一种以增加硬件换取性能的方式:把一条指令分解成多条更小的指令,由不同的处理单元来处理,在理想的满负荷运行状态下,执行一条指令的时间虽然没有减少,但是由于多个处理单元同时工作,在同一时间上可以执行不同指令的不同部分,从而使得总体的执行时间大大减少。流水线的操作周期取决于基本操作中最慢的那个。这里最慢的是100 ns,所以操作周期是 100 ns。在流水线中,其实每一条指令的执行时间并没有减少,而第一条指令的执行并没有体现流水
14、线的优势,它在 4 个操作周期后才能执行完成,这以后每个操作周期都能完成一条指令的执行。影响流水线效率的重要因素有条件转移指令和中断,因为它们打断了流水线,使得流水线不得不重新装载。不精确断点法实现简单,但是要等到流水线内的指令完成之后再响应中断。试题答案A B C D E希赛 IT 教育专家提示:上面的两个例题,都是软考当中出现过的真题。我们可以看出,两个题在计算流水线时间方面,标准并不是统一的。在例题 1 中:4t 3t 5t(1001)*5t=507 t。而在例题 2 中:100ns+100ns+100ns+100ns+(201)*100ns=2300ns 这两种计算方法,都是在套用公式
15、:“第 1 条指令的执行时间+(指令条数-1)*流水线操作周期”,而对于“第 1 条指令的执行时间”的理解并不相同。在例题1 中,第 1 条指令的执行时间是将指令执行时的几个阶段所需时间相加得到,而在例题 2 中,认为每一个阶段所需时间都是流水线的周期时间。其中前者是流水线的理论计算方法,而后者是我们在设计硬件流水线时,常用的方式。两种计算方法,从理论上来讲,都是正确的,但考试时,只有一个是正确答案。那么我们应该怎么做呢?由于每次考试中,无论认可的是哪种计算方式,都只会把这种计算方式的正确答案放入选项中,而不会将两个正确答案都放入,所以我们在用一种方式不能得到正确选项时,应采用另一种方式进行计
16、算,来得到正确答案。软件设计师重点难点关键路径关键路径这个知识点在软件设计师 考试中,是一个难点。说到关键路径这个概念,大家应该多少有些印象,可能都知道它是“最长路径”而不是“最短路径”,但说到它为什么是最长路径,提出这个概念的用意何在,它有什么应用,在计算机中关键路径是如何求的等问题却没有几个人能真正搞清楚,甚至书上给出了完整的例子,都有很多人看不懂。下面我先会简单的说明基本概念,然后以一个例子,结合平时希赛教育 学员的疑问,对这个知识点进行名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 20 页 -详细的分析。在 AOV 网络中,如果边上的权表示完成该活动所需的时间,则称这样
17、的AOV为 AOE网络。例如,图 1 表示一个具有10 个活动的某个工程的AOE网络。图中有 7 个顶点,分别表示事件17,其中 1表示工程开始状态,7 表示工程结束状态,边上的权表示完成该活动所需的时间。下面我们来理解一下关键路径的思想,图1 虽节点不多,但是为了让问题变得更为简单、直观,我们画另一个 AOE网络,如图 2 所示。从图 2 中我们可以看出,关键路路径实际上是从源点到目的地的最长路径。为什么是最长路径呢?因为图中的某些事件是可以并发执行的。如图2 所示,当到达 V1 后,可以同时往V2,V3,V4 三个方向走,而 V2,V3,V4都有到 Vk 的路径,且长度都为1,并且 Vk是
18、终点,则关键路径是V1-V2-Vk。因为这条路径最长,只要这条路径到目的地Vk 时其他的都已经到达Vk。而在这条关键路径上的活动a2,a5 称为关键活动。为了找出给定的AOE网络的关键活动,从而找出关键路径,先定义几个重要的量:Ve(j)、Vl(j):顶点 j 事件最早、最迟发生时间。e(i)、l(i):活动 i 最早、最迟开始时间。从源点 V1到某顶点 Vj 的最长路径长度称为事件Vj 的最早发生时间,记为Ve(j)。Ve(j)也是以Vj为起点的出边 所表示的活动ai 的最早开始时间e(i)。在不推迟整个工程完成的前提下,一个事件Vj允许的最迟发生时间记为Vl(j)。显然,l(i)=Vl(j
19、)-(ai所需时间),其中 j 为 ai 活动的终点。满足条件l(i)=e(i)的活动为关键活动。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 20 页 -求顶点 Vj 的 Ve(j)和 Vl(j)可按以下两步来做。(1)由源点开始向汇点递推。其中,E1是网络中以 Vj 为终点的入边集合。(2)由汇点开始向源点递推。其中,E2是网络中以Vj为起点的出边集合。对于前面的两个概念很多人不能理解:从源点开始到汇点递推以后,我们已经得到了关键路径的长度,按理把这些点记录下来,就得到了关键路径,为什么在此时,还要从汇点到源点进行递推,来求关键路径,这样岂不多此一举?其实不是这样的,一个A
20、OE网络中可能有多条关键路径,若我们只正推过去,只能求得一条关键路径,而不能找出所有的关键路径。要求一个 AOE的关键路径,一般需要根据以上变量列出一张表格,逐个检查。例如,求图1 所示的求 AOE 关键路径的过程如表1 所示。因此,图 1 的关键活动为 a1,a2,a4,a8和 a9,其对应的关键路径有两条,分别为(V1,V2,V5,V7)和(V1,V4,V5,V7),长度都是 10。名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 20 页 -其实从学员的疑问可以看出,最关键的问题就在于此表如何填写。首先值得我们注意的一点是,对于顶点的 V1,V2 等事件,有最早,最迟发生时间
21、;对于边a1,a2,a3,等活动,有最早,最迟开始时间。Ve(j)表示的是顶点j 的最早发生时间,Vl(j)表示的是顶点j 的最迟发生时间,e(i)表示的是活动i的最早开始时间,l(i)表示的是活动 i 的最迟开始时间。总的来说填这个表有以下四个步骤。由源点开始递推计算出表1-1 中的 Ve(j)列;由 Ve(7)=10,回算 Vl(j)列;Vl(j)列算出后用公式l(i)=Vl(j)-(ai 所需要的时间);由 l(i)=e(i)找出关键活动,求出关键路径。下面来填写表格,首先我们来填最早发生时间和最早开始时间。因为由源点 V1 到顶点 V2 的最长路径长度是3(到 V2 只有一条路径,长度
22、为 3,这个很好判断),所以 V2 的最早发生时间是3,从 V2 出发的活动有a4,a5,所以 a4,a5 的最早开始时间也是3。又比如,到顶点 V4 的最长路径长度是6,所以 V4 的最早发生时间是6,从 V4 出发的活动有 a8,a8 的最早开始时间也是6,其余的依次类推。最迟发生时间和最迟开始时间要先求出关键路径的长度后,再进行逆推。通过上面求最早发生时间,我们可以求得关键路径长度为10。现在可以开始逆推了。首先由于关键路径长度为10,所以 V7 的最迟发生时间是10,再看 V6,V6 到 V7 有 a10,长度为 4,所以 V6 的最迟发生时间是10-4=6,同样 V5 到 V7 有
23、a9,长度为 3,所以 V5 的最迟发生时间是 10-3=7,依次类推,此项值对应表1 中的 Vl(j)。接下来求最迟开始时间。V7 的最迟开始时间为10,a9,a10都指向 V7,a9=3,a10=4,所以 a9 的最迟开始时间为10-3=7,a10的最迟开始时间为10-4=6。V6 的最迟开始时间为6,a7 指向 V6,a7=3,所以 a7的最迟开始时间为 6-3=3。此项值对应表1 中的 l(i)。上面的这个实例是一个难度较高的例子,在我们的实际考试中,难度并没有这么高。下面看一个考试真题。例题:某工程计划如下图所示,各个作业所需的天数如下表所示,设该工程从第 0 天开工,则该工程的最短
24、工期是(1)天,作业 J 最迟应在第(2)天开工。供选择的答案:(1)A.17 B.18 C.19 D.20 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 20 页 -(2)A.11 B.13 C.14 D.16 试题分析这是一个带权的AOE网。与 AOV网不同之处在于,AOE网所关心完成该工程至少需要多少时间,哪些活动是影响整个工程进度的关键。由于 AOE网中的某些活动能够并行地进行,所以完成整个工程所需要的时间是从开始顶点到结束顶点的最长路径的长度,称为关键路径。本题的关键路径有两条:(1)S254D;(2)S25D,路径的长度均为20。作业 J 最迟要在什么时候开工?由于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年软件设计师考试重点难点 2022 软件 设计师 考试 重点难点
限制150内