关于嵌入式:vxWorks 如何处理两个优先级相同的任务?

关于嵌入式:vxWorks 如何处理两个优先级相同的任务?

How does vxWorks deal with two tasks at the same priority?

我们的 vxWorks 嵌入式系统中有两个任务(T1 和 T2)具有相同的优先级 (110)。
如果两个任务都准备好运行,常规的 vxWorks 调度程序如何处理这个问题?
哪个任务先执行?


首先运行的任务是由 VxWorks 调度程序任务实现的最先产生的任务。 VxWorks 默认使用基于优先级的调度。因此,在您的情况下,由于 T1 和 T2 具有相同的优先级,因此首先获得 CPU 的任何一个都将无限期地继续运行,直到它被显式阻塞(使用 taskSuspend 或 taskDelay),此时另一个 READY 任务将执行直到它被阻塞, 等等。这应该由信号量或互斥体(互斥体?)

控制

这个确切的问题阐明了基于优先级的调度的主要问题。我们如何确定让这些任务运行多长时间?他们具有相同的优先级这一事实使事情变得复杂。另一个问题是具有高优先级(数字越小表示优先级越高)的 VxWorks 任务会抢占您必须在代码中准备的应用程序。这些问题可以通过使用循环调度来解决。轮询调度带来的额外问题和解决方案都在这里描述。


VxWorks 有 256 个优先级(0 为最高,255 为最低)。在任何给定时间,最高优先级的任务都在 CPU 上运行。每个优先级在概念上都有一个队列,多个任务排队等待执行。

我们有 3 个优先级相同的任务 A、B、C。假设 A 正在执行。
当 A 阻塞(taskDelay、SemTake、msgQReceive)时,B 将开始执行。
当 A 解除阻塞时,它被放在队列的末尾。我们现在有 B、C、A。
当 B 阻塞时,C 接管,等等...

如果启用了循环调度(时间片),同样的概念也适用,但是当时间片结束时,任务会被放到队列的末尾。

请注意,被更高优先级任务抢占的任务不会影响队列的顺序。如果 A 正在运行并被抢占,它将在更高优先级的任务完成后继续执行。它不会被放在队列的末尾。


默认情况下,首先生成的那个将被执行,除非它放弃 CPU,否则另一个永远不会运行。

您可以显式启用循环,而不是时间片。


推荐阅读

    linux运行图形界命令?

    linux运行图形界命令?,系统,密码,地址,电脑,图形界面,地方,工具,界面,终端,

    linux怎样运行命令?

    linux怎样运行命令?,系统,工作,信息,基础,地址,命令,目录,工具,密码,一致,Lin

    linux编译完运行命令?

    linux编译完运行命令?,系统,代码,环境,工具,信息,命令,文件,程序,终端,编辑,

    linux命令程序运行?

    linux命令程序运行?,状态,系统,服务,情况,命令,进程,软件,数据,发行,时间,Lin

    linux运行脚本命令?

    linux运行脚本命令?,系统,代码,服务,文件,工具,平台,网站,脚本,命令,方法,Lin

    linux命令后加运行?

    linux命令后加运行?,状态,暂停,工具,单位,进程,环境,网络,系统,权威,第一,mv

    ssh运行linux命令?

    ssh运行linux命令?,地址,服务,系统,软件,工具,电脑,网络,密码,名称,命令,在li

    linux运行多个命令?

    linux运行多个命令?,环境,软件,系统,工作,服务,连续,命令,指令,分号,冲突,lin

    linux运行命令查看?

    linux运行命令查看?,系统,信息,状态,命令,名称,情况,地址,软件,进程,第一,lin

    linux命令优先级设置?

    linux命令优先级设置?,系统,时间,实时,策略,优先级,分时,管理,周期性,进程,

    linux调整优先级命令?

    linux调整优先级命令?,策略,系统,工作,时间,实时,信息,网络,优先级,命令,中

    linux中命令运行软件?

    linux中命令运行软件?,软件,系统,名称,工具,电脑,位置,环境,中心,在线,初级,

    脚本linux上运行命令?

    脚本linux上运行命令?,工具,代码,时间,密码,系统,环境,名字,位置,第三,下来,t

    linux运行命令的脚本?

    linux运行命令的脚本?,系统,服务,工具,脚本,意外,技术,分析,文件,方法,命令,s

    linux影藏运行命令?

    linux影藏运行命令?,档案,电脑,标准,设备,代码,工具,系统,查询系统,暂停,命

    linux运行脚本的命令?

    linux运行脚本的命令?,系统,工具,代码,服务,脚本,状态,密码,环境,位置,暂停,l

    嵌入式linux网络命令?

    嵌入式linux网络命令?,系统,基础,网络,设备,平台,培训,环境,服务,项目,嵌入

    linux命令行运行中断?

    linux命令行运行中断?,连续,工作,系统,信息,程序,命令,设备,工具,网络,情况,L

    vim运行linux命令?

    vim运行linux命令?,系统,工作,信息,地址,命令,标准,时间,情况,工具,基础,linu