重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍vxworks中SMP的Affinity怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联于2013年创立,先为宝鸡等服务建站,宝鸡等地企业,进行企业商务咨询服务。为宝鸡企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
CPU Affinity一般翻译为CPU的亲和力或亲和性,是多核OS里的一种技术,指的是可以将任务绑定到某个CPU上。在VxWorks的SMP里,默认每个任务都可以在每个CPU上执行,而指定Affinity后,就可以把某些任务固定下来,让其只在特定的CPU上执行。相关的函数是taskCpuAffinitySet()和taskCpuAffinityGet()
与cpuset_t相关的,还有几个宏。看名字应该就能猜出是啥意思,宏定义也是非常简单↘
如果不指定Affinity呢?新创建的任务会继承Parent任务的Affinity,看个例子
如果任务的Affinity指定到某个CPU了,而那个CPU一直忙于更高优先级的任务,一时半会儿还轮不到这个任务执行,怎么办?VxWorks的SMP还提供了一种特殊的功能:保留CPU。被保留的CPU,就只运行那些Affinity是这个CPU的任务。另外提供参数VX_SMP_CPU_EXPLICIT_RESERVE,用来排除那些不能被保留的CPU。
可以看到CPU2(0x1是CPU0、0x2是CPU1、0x4是CPU2…0x80是CPU7)被保留下来,而目前只有任务t1指定到它上边了。因此,不管t1的优先级高低,只要t1进入就绪队列,它就会在CPU2上执行了。
以上是“vxworks中SMP的Affinity怎么用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!