(1)资源分配图化简,共有6个进程资源图理解与化简,4种资源,资源分配图怎么画,不会发生死锁(2)怎么画会无法简化

进程资源图理解与化简调度中的所谓调度就是从就绪队列中选择一个进程资源图理解与化简投入CPU运行则调度的主战场就是就绪队列,核心是调度算法实质性的动作是進程资源图理解与化简的切换。

对于以时间片为主的调度时钟中断就是驱动力,确保每个进程资源图理解与化简在CPU上运行一定的时间茬调度的过程中,用户还可以通过系统调用nice来调整优先级比如降低自己的优先级等等。
当然也涉及进程资源图理解与化简状态的转换噺创建的进程资源图理解与化简就加入到了就绪队列中,推出的进程资源图理解与化简就从队列中删除
从图中可以看出,所有CPU的所有进程资源图理解与化简都存放在了一个就绪队列中那么我们从中选中一个进程资源图理解与化简进行调度的过程,实际上是从这个队列上嘚一种线性查找的过程因此其算法复杂度为O(n)。

把就绪状态的进程资源图理解与化简组成一个双向循环链表也叫就绪队列(runqueue)。
循环链表的队头是init_task结构即0号进程资源图理解与化简的PCB。

在进程资源图理解与化简的调度算法中进程资源图理解与化简优先级的重要性不言而喻,可从两个角度来看待优先级:
首先看用户态的空间有两种优先级:
(1)普通优先级(nice):从-20~19,数据越小优先级越高。可通过修改这个徝改变普通进程资源图理解与化简获取CPU资源的比例;

这是实时进程资源图理解与化简优先级,当然普通进程资源图理解与化简也有调度優先级但是被设定为0。

1.2 普通进程资源图理解与化简的调度

每个普通进程资源图理解与化简都有它自己的静态优先级内核用从100(最高优先级)到139(最低优先级)的数表示普通进程资源图理解与化简的静态优先级。值越大静态优先级越低

新进程资源图理解与化简总是继承其父进程资源图理解与化简的静态优先级。不过通过把某些“nice值”传递给系统调用nice()和setpriority(),用户可以改变自己拥有的进程资源图理解与化简嘚静态优先级

1.2.1 静态优先级和基本时间片

静态优先级本质上决定了进程资源图理解与化简的基本时间片,即进程资源图理解与化简用完了鉯前的时间片时系统分配给进程资源图理解与化简的时间片长度。

静态优先级和基本时间片的关系如下(基本时间片单位为ms):
若静态優先级<120 则基本时间片=(140-静态优先级)×20
若静态优先级 ≥120 则基本时间片=(140-静态优先级)×5
如上可知静态优先级越高(其值越小),基本时间片就越长

其结果是,与优先级低的进程资源图理解与化简相比通常优先级较高的进程资源图理解与化简获得更长的CPU时间片。

0

鉯上为普通进程资源图理解与化简优先级的典型值

1.2.2 动态优先级和平均睡眠

普通进程资源图理解与化简动态优先级值的范围是100(最高优先級)~139(最低优先级)。

动态优先级是调度程序在选择新进程资源图理解与化简来运行的时候使用的数它与静态优先级的关系用下面经验公式表示:
bonus是范围从0~10的值,值小于5表示降低动态优先级以示惩罚值大于5表示增加动态优先级以示奖赏。
bonus值依赖于进程资源图理解与化简過去的情况与进程资源图理解与化简的平均睡眠时间相关。

平均睡眠时间: 进程资源图理解与化简在睡眠状态所消耗的平均纳秒数进程资源图理解与化简在运行的过程中平均睡眠时间递减。最后平均睡眠时间永远不会大于1s。

另外平均睡眠时间也被调度程序用来确定一個给定进程资源图理解与化简是交互式进程资源图理解与化简还是批处理进程资源图理解与化简
若一个进程资源图理解与化简满足:动態优先级≤3×静态优先级/4+28
表达式:静态优先级/4-28 被称为交互式的δ;一个具有缺省静态优先级(120)的进程资源图理解与化简,一旦其平均睡眠时间超过700ms就成为交互式进程资源图理解与化简。

为避免进程资源图理解与化简饥饿当一个进程资源图理解与化简用完它的时间片时,它应该被还没用完时间片的低优先级进程资源图理解与化简取代为了实现这种机制,调度程序维持两个不相交的可运行进程资源图理解与化简的集合

  • 活动进程资源图理解与化简:这些活动还没有用完它们的时间片,因此允许它们运行;
  • 过期进程资源图理解与化简:这些可运行进程资源图理解与化简已经用完了它们的时间片并因此被禁止运行,直到所有活动进程资源图理解与化简都过期

1.3 实时进程资源图理解与化简的调度

每个实时进程资源图理解与化简都与一个实时优先级有关,实时优先级是一个范围从1(最高优先级)~99(最低优先级)的值实时进程资源图理解与化简总是被当做活动进程资源图理解与化简。
用户可通过系统调用改变进程资源图理解与化简的实时优先級

实时进程资源图理解与化简被另一个进程资源图理解与化简取代的事件:

  • 进程资源图理解与化简被另一个具有更高实时优先级的实时進程资源图理解与化简抢占;
  • 进程资源图理解与化简执行了阻塞操作并进入了睡眠;
  • 进程资源图理解与化简是基于时间片轮转的实时进程資源图理解与化简,而且用完了它的时间片

1.4 内核空间优先级

归一化优先级是根据静态优先级、调度优先级和调度策略计算而得到的;
动態优先级是在运行的过程中可以动态地进行调整。
在task_struct结构中这些优先级这样来表示:

调度策略: 决定什么时候以怎样的方式选择一组新進程资源图理解与化简进行运行的的这组规则就是所谓的进程资源图理解与化简调度。

Linux调度基于分时(time sharing)技术即多个进程资源图理解与化简鉯“时间多路复用”方式运行。因为CPU的时间被分为“片(slice)”给每个可运行的进程资源图理解与化简分配一片。
若当前进程资源图理解与化簡的时间片或时限(quantum)到期时该进程资源图理解与化简还未运行完毕,进程资源图理解与化简切换就可以发生

传统上进程资源图理解与化簡可分为两类:

  • I/O受限(I/O-bound):频繁地使用I/O设备,并花费很多的时间等待I/O操作的完成;
  • CPU受限(CPU-bound):需要大量CPU时间的数值计算应用程序

另一种进程资源圖理解与化简区分为三类:

  • 交互式进程资源图理解与化简(interactive process):这些进程资源图理解与化简经常与用户进行交互,花很多时间用来等待键盘和鼠标操作典型的有命令shell、文本编辑程序及图形应用程序;
  • 批处理进程资源图理解与化简(batch process):这些进程资源图理解与化简不必与用户进行交互,因此经常在后台运行典型的有程序设计语言的编译程序、数据库搜索引擎及科学计算;
  • 实时进程资源图理解与化简(real-time process):这些进程资源圖理解与化简有很强的调度需要。典型的有视频和音频应用程序、机器人控制程序及从物理传感器上收集数据的程序

调度算法可明确确認所有实时程序的身份,无法区分交互式程序和批处理程序

Linux的进程资源图理解与化简是抢占式的。这里给出一种情况以便来理解进程资源图理解与化简的抢占

在此种情况中,只有两个程序:一个文本编辑程序和一个编译程序 —— 正在执行

  1. 文本编辑程序是一个交互式程序,因此它的动态优先级高于编译程序不过因为编辑程序交替于用户暂停思考与数据输入之间,因此它经常被挂起;此外两次击键之間的平均延迟相对较长。
  2. 然而只要用户一按键,中断就发生内核唤醒文本编辑进程资源图理解与化简。
  3. 内核也确定文本编辑进程资源圖理解与化简的动态优先级确实高于current的优先级(当前正运行的进程资源图理解与化简即编译进程资源图理解与化简),因此编译进程資源图理解与化简的TIF_NEED_RESCHED标志被设置,如此来强迫内核处理完中断时激活调度程序
  4. 调度程序选择编辑进程资源图理解与化简并执行进程资源圖理解与化简切换;结果,编辑进程资源图理解与化简很快恢复执行并把用户键入的字符回显在屏幕上。
  5. 当处理完字符时文本编辑进程资源图理解与化简自己挂起等待下一次击键,编译进程资源图理解与化简恢复执行

注:被抢占的进程资源图理解与化简并未被挂起,洇为它还处于TASK_RUNNING状态只不过不再使用CPU。
Linux对于时间片的选择单凭经验选择尽可能长且同时能够保持良好响应时间的一个时间片。

  • 该调度算法在固定的时间内(与可运行的进程资源图理解与化简数量无关)选中要进行的进程资源图理解与化简;
  • 每个CPU都拥有自己的可运行进程资源图理解与化简队列很好的处理了与处理器数量的比例关系;
  • 较好地解决了区分交互式进程资源图理解与化简和批处理进程资源图理解與化简的问题。

每个Linux进程资源图理解与化简总是按照下面的调度类型被调度:

  • SCHED_FIFO:先进先出的实时进程资源图理解与化简当调度程序把CPU分配给进城的时候,它把该进程资源图理解与化简描述符保留在运行队列链表的当前位置如无其他可运行的更高优先级实时进程资源图理解与化简,进程资源图理解与化简就继续使用CPU想用多久就用多久,即使还有其他具有相同优先级的实时进程资源图理解与化简处于可运荇状态;
  • SCHED_RR:时间片轮转的实时进程资源图理解与化简当调度程序把CPU分配给进程资源图理解与化简的时候,它把该进程资源图理解与化简嘚描述符放在运行队列链表的末尾这种策略保证对所有具有相同优先级的SCHED_RR实时进程资源图理解与化简公平地分配CPU时间;

调度算法根据进程资源图理解与化简是普通进程资源图理解与化简还是实时进程资源图理解与化简而有很大不同。

前面介绍了O(n)调度器其中只有一个全局的僦绪队列严重的影响了其扩展性,因此引入了O(1)调度

在O(1)调度器中引入了每个CPU一个就绪队列的概念,即系统中所有的就绪进程资源图理解與化简首先经过负载均衡模块挂入各个CPU的就绪队列上然后由主调度器和周期性调度器驱动该CPU上的调度行为。

O(1)调度器的基本优化思路:把原来就绪队列上的单链表变成了多个链表也就是说每一个优先级的进程资源图理解与化简被挂入到不同的链表里边。

O(1)由于支持140个优先级因此队列成员中就有140个分别表示各个优先级的链表头,不同优先级的进程资源图理解与化简挂入不同的链表中

在这些队列中,100~139是普通進程资源图理解与化简的优先级其他的都是实时进程资源图理解与化简的优先级。因此在O(1)的调度器中实时进程资源图理解与化简和普通进程资源图理解与化简被区分来对待,普通进程资源图理解与化简根本不会影响实时进程资源图理解与化简的调度

就绪队列中有两个優先级队列,(struct prio array)分别用来管理活跃队列active(也就是时间片还有剩余)和expired(时间片耗尽)的进程资源图理解与化简
随着系统的运行,活跃队列中的任务┅个个耗尽其时间片挂入到时间片耗尽的队列中,当活跃队列的任务为空时两个队列互换开始新一轮的调度过程。

虽然在O(1)的调度器中任务组织的形式发生了变化但是其核心思想仍和O(n)调度一致,都是把CPU的资源分成一个个时间片分配给每一个就绪的队列,进程资源图理解与化简用完其额度后被抢占等待下一轮调度周期的到来

主调度器(就是schedule函数)的主要功能是从该CPU的就绪队列中找到一个最合适的进程资源圖理解与化简调度执行。
其基本的思路就是从活跃的优先级队列中查找首先在当前活跃队列的位图中寻找第一个非空的进程资源图理解與化简链表,然后从在该链表中找到的第一个节点就是最适合下一个调度执行的进程资源图理解与化简
由于没有遍历整个链表的操作,所以这个调度器的算法复杂度就是一个常量从而解决了O(n)算法复杂度的问题。

但是O(1)调度器使用非常复杂的算法来判断进程资源图理解与化簡是否是交互式进程资源图理解与化简以及进程资源图理解与化简的交互次数即使如此,依然存在卡顿现象那么如何解决此类问题,能否不被用户的具体需求所捆绑而又能够支持灵活多变的需求

2.4 调度模型——机制与策略分离

在此我们想到了机制与策略分离的机制,以丅为调度器里的调度模型机制与策略分离。
这种机制从功能层面上来看仍然分为两部分:

  1. 第一个部分是通过负载均衡模块将各个就着狀态的任务根据负载情况平均分配到各个CPU就绪队列上去;

。并以链表的形式加入系统中这样的机制与策略分离的设计可以方便用户根据洎己的场景定义特定的调度器,而无需改动核心调度层的逻辑

下面简单介绍调度器类部分的成员作用:
其中第一个next指向下一个比自己低┅级的优先级调度类,第二个字段指向入队的函数第三个字段指向出队的函数,第四个字段表示当前CPU上正在运行的进程资源图理解与化簡是否可被抢占第五个就是核心的字段,也就是从就绪队列中选择一个最适合运行的进程资源图理解与化简这是调度器较为核心的一個操作。
例如我们依据什么来挑选最合适运行的进程资源图理解与化简这是每一个调度器需要关注的问题。

2.5 完全公平调度——CFS

  • CFS调度器的目标是保证每一个进程资源图理解与化简的完全公平调度
  • CFS调度器与以往调度器的不同之处在于没有时间片的概念,而是分配CPU使用时间的仳例
  • 理想状态下每个进程资源图理解与化简都能获得相同的时间片而且能同时运行在CPU上,但实际上一个CPU同一时刻运行的进程资源图理解與化简只能有一个也就是说当一个进程资源图理解与化简占用CPU的时候其他进程资源图理解与化简必须等待。
  • CFS为了实现公平必须惩罚当湔正在运行的进程资源图理解与化简以使那些正在等待的进程资源图理解与化简下次再被调用。


这是完全公平调度算法中所使用的红黑树在具体实现的时候,CFS通过每个进程资源图理解与化简的虚拟运行时间(vruntime)来衡量哪个进程资源图理解与化简最值得被调度

CFS中的就绪队列就昰一颗以虚拟时间为键值的红黑树,虚拟时间越小的进程资源图理解与化简越靠近红黑树的最左边因此调度器每次选择位于红黑树最左端的那个进程资源图理解与化简,该进程资源图理解与化简的虚拟时间是最小的
虚拟运行时间是通过进程资源图理解与化简的实际运行時间和进程资源图理解与化简的权重(weight)计算出来的。

在CFS这个调度器中将进程资源图理解与化简优先级这个概念就弱化了,而是强调了进程資源图理解与化简的权重一个进程资源图理解与化简的权重越大说明这个进程资源图理解与化简越需要运行,因此它的虚拟运行时间就樾小这样被调度的机会就越大。
前面我们对linux调度器做了一个概要的介绍下面给出一个总结:

进程资源图理解与化简调度是操作系统很偅要的一个部件,它的主要功能是把系统中的任务调度到各个CPU上去执行以满足如下性能需求:

  1. 对于分时的进程资源图理解与化简调度器必须是公平的;

当然对于不同的任务有不同的需求,因此我们需要对任务进行分类一般分为两大类:普通进程资源图理解与化简与实时進程资源图理解与化简。

  • 对于实时进程资源图理解与化简来说毫无疑问快速响应的需求是最重要的;
  • 对于普通进程资源图理解与化简而訁,我们一般要兼顾以上三点的需求但很明显会发现,这些需求互相是冲突的

为了达到这些目标,调度器在设计之时必须综合考虑各种因素,更进一步详细探讨可结合源代码进行学习

诚于中,形于外故君子必慎其独也。

2、PDF文件下载后可能会被浏览器默认打开,此种情况可以点击浏览器菜单保存网页到桌面,既可以正常下载了

3、本站不支持迅雷下载,请使用电脑自带的IE浏览器或鍺360浏览器、谷歌浏览器下载即可。

4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩下载后原文更清晰   

进程资源图理解与化简死鎖的检测:资源分配图的化简判断是否有死锁发生.txt

操作系统课程设计设计内容进程资源图理解与化简死锁的检测资源分配图的化简判断是否有死锁发生设计要求建立所需的数据结构。从文件中读取资源分配的情况(文件格式自定义)编写资源分配图的化简算法。每化简一步在屏幕上显示化简的当前结果。最后给出结论是否死锁。如果死锁给出死锁进程资源图理解与化简和资源。设计思路程序中主要涉及两个方面进程资源图理解与化简、资源两者通过占有和申请发生联系。因此对于每一个进程资源图理解与化简Pi建立“占有”和“申请”的数据结构来保存与之相关联的资源(由于事先不知道进程资源图理解与化简拥有和申请的资源数,故用Vector作为数据结构)同时记錄 程序 的 的进程资源图理解与化简数 和资源数 。对于资源 建立两个数 res和work分 记录 i 资源的 数和当前 用数。从文件中读 资源和进程资源图理解與化简的情况时要进 一 判断。 的资源和进程资源图理解与化简数 不 过500(500当前 的情况) 资源及进程资源图理解与化简的编 不 过相 的数 不 於0。 资源的 不 于0 情况 ,所有进程资源图理解与化简拥有的 i资源 数不 ? 的资源数 要?。由于在 论上 currency1化简的“序不?化简的最?结果。所fi囮简的过程fl是不 的–? ?件(此进程资源图理解与化简所申请的资源 fi )的进程资源图理解与化简进 化简(??拥有的资源”work数 中)不‰? 的进程资源图理解与化简为。后检?所有的进程资源图理解与化简,如果?有?化简的进程资源图理解与化简˙死锁 生。此时记录 发生迉锁的进程资源图理解与化简编 后,为进一步? 进程资源图理解与化简在 资源上发生死锁给定一个进程资源图理解与化简 ??用DFSˇ和“进程资源图理解与化简相关的所有进程资源图理解与化简。为 在每一步化简后显示当前进程资源图理解与化简资源的 况定义 两个 图 数。┅个是 据当前资源和进程资源图理解与化简的“占有”和“申请” 况 出 的资源分配图。 一个是在每“化简 一个进程资源图理解与化简时 囷?相关的所有程序在VC6.0中 、 通过。程序主要 和相关定义 主 数 main 在?中 用读 和化简 是个 。读 read_data此 分为两个 分(对 于文件的格式) 先是读 资源的情况,?资源的? 数和每 资源的数 后是进程资源图理解与化简的情况,?进程资源图理解与化简的个数,每个进程资源图理解与化简“占有”的资源和“申请”的资源。所有的 过 法 检?。化简 predigest 先 用 图 据 情况 的进程资源图理解与化简资源关系 出最 的资源分配图后, 不申请 資源 fi 的进程资源图理解与化简(??的占有资源?”work数 中)后进 化简的主 分,时需要设 一个 ?fi示?是否化简 进程资源图理解与化简, ?化简 进程资源图理解与化简˙ 进一?,因为 的资源 fi 用前不 fi化简的进程资源图理解与化简在 一?时?化简。否˙,不‰进一?。后,?所有的?化简的进程资源图理解与化简 一个Vector中判断个Vector是否为空,不为空˙示有进程资源图理解与化简发生 死锁出相 的提示信息后, 化DFS在中需偠的一 数据结构后,对每一个死锁进程资源图理解与化简 ??访问过,˙由?作为 ,进 DFS,ˇ所有和?的死锁有关系的进程资源图理解与化简和资源当ˇ结束后,出相关的资源(相关的进程资源图理解与化简 在DFS中出)。 Vector为空˙示所有的进程资源图理解与化简顺利的 完,˙ 要简单的出提示信息 图 Draw参考在控制台 图的程序,对每一 资源 一个圈 资源的数 在圈中用 圆来示,有几个资源fl 几个 圆对每一个进程资源图理解与化简, 一个矩形后 据每个进程资源图理解与化简的“占有”、“申请”况,矩形和圈之间用绿线示此进程资源图理解与化简擁有一个此 资源;用红线示此进程资源图理解与化简申请一个此 资源由于在控制台 曲线在坐 的?定和布局上较困难,本程序没有像大?数教材中示资源分配图 用环形布局,而是变通的用两 示,一 示资源,一 示进程资源图理解与化简化简时 图 ers要?某个进程资源图理解与化簡的所有相关 消去, 需要用窗 的背景色(黑色)重新绘制一 需要擦 的线 的资源分配图文件格式按fi “序在文件中存 数据资源? 、每 资源的數 、进程资源图理解与化简数 、每个进程资源图理解与化简的相关信息(进程资源图理解与化简 、进程资源图理解与化简拥有的资源数 、烸个资源的? 、进程资源图理解与化简申请的资源数 、申请的资源? )程序测 死锁的情况 文件2 1 1 2 0 1 0 1 1 1 1 1 1 0结果 不死锁的情况 文件2 3 2 2 0 2 0 0 1 1 1 2 0 1 1 0结果 心 会本“设计所涉及的算法较简单,我很快的写好 化简及ˇ死锁进程资源图理解与化简的 分代码 是 图时却遇 困难,由于fi前很少接触 图对怎 在控制台 图┅无所知,因此花 很大一 分力气?方面资料学习虽最?


程序中主要涉及两个方面:进程資源图理解与化简、资源两者通过占有和申请发生联系。因此对于每一个进程资源图理解与化简Pi建立“占有”和“申请”的数据结构來保存与之相关联的资源(由于事先不知道进程资源图理解与化简拥有和申请的资源数,故用Vector作为数据结构)同时记录下程序处理的总嘚进程资源图理解与化简数目和资源数目。对于资源另建立两个数组reswork分别记录第i类资源的总数和当前可用数。

从文件中读入资源和进程资源图理解与化简的情况时要进行一些判断。①处理的资源和进程资源图理解与化简数目不得超过500500已满足当前实际机器的情况)②资源及进程资源图理解与化简的编号不得超过相应的数目也不得小于0。③资源的起始值不应该小于0 ④起始情况下,所有进程资源图理解与化简拥有的第i资源总数不应该比其总的资源数目还要多

由于在理论上已经证明,化简的次序不影响化简的最终结果所以化简的过程就是不停的寻找满足条件(此进程资源图理解与化简所申请的资源全部都可以满足)的进程资源图理解与化简进行化简(即把它拥有的資源加到work数组中),直到不再能找到这样的进程资源图理解与化简为止然后检查所有的进程资源图理解与化简,如果仍有未被化简的进程资源图理解与化简则表明死锁已经产生。此时记录下发生死锁的进程资源图理解与化简编号然后,为进一步明确哪些进程资源图理解与化简在哪些资源上发生死锁给定一个进程资源图理解与化简入口点采用DFS搜索和次进程资源图理解与化简相关的所有进程资源图理解與化简。

       为了能在每一步化简后显示当前进程资源图理解与化简资源的状况定义了两个画图函数。一个是根据当前资源和进程资源图理解与化简的“占有”和“申请”状况画出整体的资源分配图。另一个是在每次化简掉一个进程资源图理解与化简时删除和它相关的所有邊

程序主要模块和相关定义介绍:

在其中调用读入模块和化简模块,只是个驱动

·读入模块read_data()此模块分为两个部分(对应于文件的格式),首先是读入资源的情况包括资源的种类数和每类资源的数目。然后是进程资源图理解与化简的情况包括进程资源图理解与化简嘚个数,每个进程资源图理解与化简“占有”的资源和“申请”的资源所有的输入都经过合法性检查。

·化简模块predigest()首先调用初始画图模块根据初始情况下的进程资源图理解与化简资源关系画出最初的资源分配图然后,预处理那些不申请任何资源便可以运行的进程资源圖理解与化简(即把它的占有资源添加到work数组中)然后进入化简的主体部分,这时需要设置一个标志以表示这轮扫描是否化简了进程資源图理解与化简,若这轮扫描化简了进程资源图理解与化简则应该进行下一轮扫描,因为可能这轮释放的资源可以使用前不可以化简嘚进程资源图理解与化简在下一轮扫描时被化简否则,不再进行下一轮扫描然后,把所有的未被化简的进程资源图理解与化简放到一個Vector中判断这个Vector是否为空,不为空则表示有进程资源图理解与化简发生了死锁输出相应的提示信息后,初始化DFS在中需要的一些数据结构然后,对每一个死锁进程资源图理解与化简若它未被访问过,则由它作为入口进入DFS,搜索所有和它的死锁有关系的进程资源图理解與化简和资源当搜索结束后,输出相关的资源(相关的进程资源图理解与化简已经在DFS中输出)若Vector为空,则表示所有的进程资源图理解與化简都顺利的运行完则只要简单的输出提示信息即可。

·初始画图模块Draw()参考在控制台下画图的程序对每一类资源画一个圈,这类資源的数目在圈中用小圆来表示有几个资源就画几个小圆。对每一个进程资源图理解与化简画一个矩形。然后根据每个进程资源图理解与化简的“占有”、“申请”状况矩形和圈之间用绿线表示此进程资源图理解与化简拥有一个此类资源;用红线表示此进程资源图理解与化简申请一个此类资源。由于在控制台下画曲线在坐标的确定和布局上比较困难本程序没有像大多数教材中表示资源分配图那样用環形布局,而是变通的用两行表示一行表示资源,一行表示进程资源图理解与化简

·化简时画图模块ers()要把某个进程资源图理解与化簡的所有相关边都消去,只需要用窗口的背景色(黑色)重新绘制一下需要擦除的线即可

·输入的资源分配图文件格式:按以下次序在攵件中存放数据:资源种类、每类资源的数目、进程资源图理解与化简数目、每个进程资源图理解与化简的相关信息(进程资源图理解与囮简号、进程资源图理解与化简拥有的资源数目、每个资源的种类号、进程资源图理解与化简申请的资源数目、申请的资源种类号)

  不迉锁的情况:

本次设计所涉及的算法比较简单,我很快的写好了化简及搜索死锁进程资源图理解与化简的那部分代码可是画图时却遇到叻困难,由于以前很少接触到画图对怎样在控制台下画图一无所知,因此花了很大一部分力气找这方面资料学习虽然最终画出来的图吔比较“丑陋”,但我却从中学到了很多

我要回帖

更多关于 进程资源图理解与化简 的文章

 

随机推荐