网站大量收购独家精品文档,联系QQ:2885784924

计算机操作系统启发式教学研究.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机操作系统启发式教学研究.doc

  计算机操作系统启发式教学研究 计算机操作系统启发式教学研究   操作系统是计算机相关专业的一门核心专业课,而实时调度算法是操作系统课程中的一个重要内容,在多数的操作系统教科书中主要介绍了两种实时调度算法,即最早截止时间优先算法(Earliest Deadline First,EDF)和最低松弛度优先算法(Least Laxity First,LLF)。这两个算法看上去并不难理解,然而问题往往并不像看起来那样简单。事实上,在操作系统的教学中有一个很大的困难,即操作系统的教学不易落到实处,即原理容易讲,但要让学生体验这些原理却并不容易。操作系统课程中涉及大量算法,如进程调度算法、死锁避免算法、页面置换算法等。表面上这些算法看起来比较容易,但要让学生理解算法后面蕴含的深刻道理,并从这些算法中发现一些问题就绝非易事了。   对于这个困难,我们希望通过一些启发式的教学设计,引导学生从程序员、从算法设计者的角度去分析和思考算法中的一些问题,从而将抽象的原理转化为具体的问题和解决方案,加深对这些原理的理解。下面结合实时调度算法的例子来阐述对于启发式教学设计的思考。   1 实时调度算法的启发式教学设计   1.1调度算法问题定义   很多操作系统教科书中都介绍了两个重要的实时调度算法,一个是EDF,另一个是LLF。这两个实时调度算法的调度准则都很简单,课堂讲授时本文由.L.收集整理学生并不难理解。然而,这两个不同的调度算法在应用中的效果如何,教科书中并没有给出进一步的分析和讨论。事实上,这是一个很好的启发式教学的切入点,我们就从这里出发来设计问题。首先来看一看EDF算法和LLF算法的思想。   EDF算法是根据任务的开始截止时间来确定任务的优先级。截止时间愈早,其优先级愈高。该算法要求在系统中保持一个实时任务就绪队列,该队列按各任务截止时间的早晚排序;当然,具有最早截止时间的任务排在队列的最前面。调度程序在选择任务时,总是选择就绪队列中的第一个任务,为之分配处理机,使之投入运行。截止时间可以是开始截止时间,也可以是完成截止时间。一般来说,完成截止时间等于开始截止时间加上任务处理时间。   LLF算法是根据任务紧急(或松弛)的程度,来确定任务的优先级。任务的紧急程度越高,越优先执行。例如,一个任务在200ms时必须完成,而它本身所需的运行时间就有100ms,因此,该任务的紧急程度(松弛程度)为100ms。又如,另一任务在400ms时必须完成,它本身需要运行150ms,则其松弛程度为250ms。调度程序总是选择就绪队列中松弛度最小的任务执行。LLF算法主要采用抢占调度方式。   1.2发现问题   按照教科书的描述和给出的示例,在LLF算法中,当有新任务到达时,并不马上比较当前所有任务的松弛度(包括正在执行的任务),而是等到某个在等待的任务的松弛度降为零才进行切换,即选择这个松弛度已经降为零的任务运行。按照这个原则,我们在启发式教学设计中提出的第一个问题。   第一个问题:按照教科书给出的LLF算法调度原则,是否会存在不可调度的情况?   经过分析,很容易找出问题,如图1中给出的示例。   通过上面的示例可知,在某些情况下,当某个任务在执行过程中,若某个(或某些)正在等待的任务的松弛度减至0s,则可能会导致任务无法成功调度,而实际上系统能力是允许成功调度的。   1.3提出改进   针对前面提出的问题,可以引导学生对LLF算法的调度准则进行改进。通常比较容易想到的改进是,修正松弛度的计算和任务切换时机,即松弛度不需要随时计算,而在如下两种情况时进行计算:   1)当前任务正在执行时新任务到达,可能会引起抢占和任务切换,此时需要计算并比较松弛度;   2)当前任务完成时可能会引起新的任务调度和切换,此时计算松弛度。   进程在执行时松弛度会不断变化,但是不用进行跟踪计算和比较。   修正后,可以对学生提出第二个问题。   第二个问题:修正后的LLF算法,是否存在着不可调度的情况?   回答依然是存在问题,可以看一看图2中给出的另一个示例。   1.4证明猜想   若发现改进后的LLF算法还是存在问题,这时可以引导学生再作改进,并进行讨论。事实上,无论如何改进LLF的调度和切换时机,都无法解决问题。那么我们可以引导学生逐步转到EDF算法上来,即EDF算法也会存在类似问题吗?因此我们提出的第三个问题如下。   第三个问题:按照完成截至时间调度的EDF算法,是否存在不可调度的情况?   通过启发学生寻找反例会发现无法找到反例,这时学生也许会想到,EDF是一个最优的算法,即可以得出以下的猜想。   猜想:给定一系列的任务,只要这些任务是可调度的,即存在某种序列使得所有任务都在完成截至时间之前完成,则使用EDF算法一定能成功调度这些任务。   有了猜想

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档