- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
进程调度是计算机的灵魂。在实时系统里,要使重要紧急的进程一经唤醒就被优先调度运行,系统就必须有基于进程优先级的实时调度策略。 优先级继承算法 优先级反转 是指当一个高优先级任务访问共享资源时,该资源已被一个低优先级任务占有,而这个低优先级任务在访问共享资源时又可能被其它中优先级的任务抢占,造成高优先级任务被许多较低优先级任务阻塞,高优先级任务在低优先级任务之后运行,实时性得不到保证。 优先级继承算法 优先级反转——例 系统内低优先级的任务C占用着高优先级任务A要使用的资源时,任务A只好等待任务C执行完毕,并释放该资源后才能被调度执行。这时,如果有中优先级任务B进入就绪,剥夺了任务C的CPU使用权,使得系统只有先让B运行完毕,且任务C重新运行结束并释放资源后,任务A才能运行。这样,任务A和B的优先级发生了颠倒。在这种情况下,高优先级的任务的优先级实际上已经降到了低优先级的水平,从而发生优先级反转现象,中优先级的任务抢占低优先级的任务,时间可能不确定,因此称为无界优先级反转。 优先级继承算法——基本思想 当低优先级任务占用资源,而高优先级任务也要访问此资源的时,让低优先级任务把优先级提高到与高优先级同样的级别。 这样原来的低优先级任务就可能获得更多的资源( 如CPU 时间,内存等) ,以便尽快完成任务,释放所占用资源。 优先级继承算法——例 任务A是高优先级的,任务C是低优先级的。任务C首先获得共享资源R,而任务A也请求该资源,优先级继承协议要求任务C以任务A的优先级执行临界区,这样,任务C在执行临界区时,其优先级比它本身的优先级高,这时,中优先级的任务B不能抢占任务C了,当任务C退出临界区时,又恢复到原来的优先级,使任务A仍为最高优先级的任务,这样,任务A便不会被中优先级的任务无限期阻塞了。 优先级继承算法——说明 在优先级继承协议中,任务T进入临界区而阻塞了更高优先级的任务,则任务T将继承被阻塞任务的优先级,直到任务T退出临界区。 优先级继承协议是动态的,一个不相关的较高优先级任务仍可进行任务抢占,这是基于优先级可抢占调度模式的本性,并且任务优先级在反转期间,被提升优先级的任务的优先级可以继续被提升,即优先级继承具有传递性。 在优先级继承协议中,任务的阻塞时问是有界的,但可能出现阻塞链,从而会加长阻塞时间,甚至造成死锁。 优先级天花板算法 优先级继承协议具有死锁和阻塞链问题,而天花板优先级(CeilingPriority)协议可以解决这些问题。 优先级天花板 是指控制访问临界资源的信号量的优先级天花板(简单的说,就是某个临界资源的优先级天花板),信号量的优先级天花板是所有使用该信号量的任务中具有最高优先级的任务的优先级。在任意时刻,一个运行系统的当前优先级天花板(priority ceiling)是此时所有正在使用的资源中具有最高优先级的优先级天花板。 例如,系统中有3个资源正在使用,资源R1的优先级天花板为4,资源R2的优先级天花板为6,资源R3的优先级天花板为9,则系统当前的优先级天花板为9。 优先级天花板算法 在优先级天花板协议下,一个请求任务只可以被一个任务阻塞,不会发生传递阻塞(即产生阻塞链),也不会发生死锁。 当一个任务T请求资源R时,其访问控制协议规则如下表所示: 协议规则号 描述 1 如果资源R在使用,任务T不能获得所申请的资源R,则任务T被阻塞。 2 如果资源R空闲且任务T的优先级比当前优先级天花板的高,即任务T的优先级高于所有当前被其他任务所获取的资源的优先级天花板,则资源R分配给任务T;当任务T的优先级低于当前优先级天花板时,即使请求的资源R空闲时,任务T仍会被阻塞,即优先级天花板阻塞。 3 如果当前天花板属于任务T当前保持的资源之一,则空闲资源R分配给任务T;反之,任务T被阻塞。 4 任务T将按被分配的优先级执行,除非该任务在临界区执行过程中阻塞了其他高优先级的任务。如果任务T阻塞了高优先级的任务,则任务T将继承被它阻塞的具有最高优先级任务的优先级,并且按此优先级继续执行,直到它释放每个优先级天花板高于或等于任务T的优先级的资源,然后,恢复到原来的优先级。 结论 在动态优先级调度算法中,会根据任务的资源需求来动态的分配任务的优先级,虽然在任务创立是赋予了优先级,但是任务的优先级可以用内核提供的调用进行改动。动态改变任务的优先级使得嵌入式应用更加适应于外部事件的灵活性,建立真正的实时响应系统。但是,在使用这种功能时,要避免滥用,以免导致优先级反转、死锁,甚至系统崩溃。
文档评论(0)