VxWorks中RTP如何实现调度策略-成都快上网建站

VxWorks中RTP如何实现调度策略

这篇文章给大家分享的是有关VxWorks中RTP如何实现调度策略的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

成都创新互联是一家专业从事网站制作、成都网站设计、网页设计的品牌网络公司。如今是成都地区具影响力的网站设计公司,作为专业的成都网站建设公司,成都创新互联依托强大的技术实力、以及多年的网站运营经验,为您提供专业的成都网站建设、营销型网站建设及网站设计开发服务!

VxWorks有了RTP之后,系统又是如何调度的呢?其实非常非常简单:RTP不参与调度VxWorks还是使用之前的调度策略,即所有Task基于优先级抢占,以及默认关闭的时间片轮转。这确保在任何给定的时刻,系统中准备运行的最高优先级Task都将执行,而不管该Task是在内核中还是在任何进程中。相比之下,非实时系统主要使用分时调度策略,以及动态调整进程优先级,以确保没有进程会长期无法使用CPU,并且没有进程独占CPU。VxWorks的时间片轮转也是一种分时策略,但它不会干扰优先级的抢占,因此它具有确定性,保证了实时性。

如果你不打算使用pthread,现在就可以跳到文末点赞了

----------分割线---------

不过,为了更好的支持POSIX标准,VxWorks在RTP里引入了POSIX的Thread调度策略。事实上,要想在RTP里使用POSIX的Thread必须要包含这种调度策略:INCLUDE_POSIX_PTHREAD_SCHEDULER

VxWorks中RTP如何实现调度策略

从名字上就可以看出来,这种策略只对RTP里的Thread有效。而Kernel里的Task和Thread,以及RTP里的Task,用的都是VxWorks的传统策略

VxWorks中RTP如何实现调度策略

  • Thread的调度策略不能动态切换到SCHED_SPORADIC,但是可以从SCHED_SPORADIC动态切换到其它策略

  • 如果已经使能了时间片轮转策略,再使用kernelTimeSlice()改变时间片大小的时候,不会影响到之前使用SCHED_RR策略创建的Thread的时间片。

  • 使用pthread_setschedprio()降低Thread的优先级后,该Thread会排到同优先级队列的部;而使用taskPrioritySet()降低Task的优先级后,该Task会排到同优先级队列的

感谢各位的阅读!关于“VxWorks中RTP如何实现调度策略”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!


网页标题:VxWorks中RTP如何实现调度策略
浏览地址:http://kswjz.com/article/jejsss.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流