VxWorks下周期任务调度和任务周期选择

合集下载

实时操作系统VxWorks的内核任务调度研究

实时操作系统VxWorks的内核任务调度研究

实时操作系统VxWorks的内核任务调度研究1、引言VxWorks操作系统是WindRiver公司开发的一种高性能的嵌入式实时操作系统。

它带有一个功能强大的集成开发系统环境Tornado。

VxWorks具有软件生成代码小、实时性强及响应速度快等特点,特别适合于具有实时和多任务要求的系统。

VxWorks自20世纪80年代问世以来,以其高性能、高可靠性、高实时性等特点成为实时操作系统中最具特色的系统。

自1996年登陆中国,短短几年就已成为国防、工业自动化、网络通信、航空航天、医疗仪器、状态监控以及消费电子产品等嵌入式实时领域的首选操作系统。

由于嵌入式实时操作系统在内核方面具有自身的特点,本文着重对实时内核中任务调度进行了详细分析。

2、任务调度概述2.1 调度的概念构成应用软件系统的程序集合中,独立的、相互作用的程序单元,在其执行时称之为任务。

单个CPU 中,多任务机制制造了一个多个任务同时执行的假象。

其实系统只是根据一个多任务调度算法,将内核插入到这些任务中执行。

实时系统VxWorks的一个任务可有多种状态,但最基本的状态有以下四种:1) 就绪态(Ready):任务只等待系统分配CUP资源。

2) 挂起态(Pend):任务需等待某些不可利用的资源而被阻塞。

3) 休眠态(Sleep):如果系统不需要某一个任务工作,则这个任务处于休眠状态。

4) 延迟态(Delay):任务被延迟时所处的状态。

当系统函数对某一个任务进行操作时,任务从一种状态跃迁到另一种状态。

处于任一状态的任务都可被删除。

VxWorks的任务跃迁如图1所示。

任务由系统内核调度运行一段固定长度的时间,称为时间片。

调度是指为任务分配资源和时间,使系统满足特定的性能要求。

调度算法的目的是在正常情况下,尽可能满足所有任务的时限:在峰值负载条件下,保证强实时任务满足时限。

因为时限是区分实时系统和非实时系统的关键因素,因此调度算法是实时系统的基本问题。

实时操作系统所具有的运行性能,如吞吐量的大小、周转时间的长短、相应的及时性和可预测性等在很大程度上都取决于实时调度。

Vxworks几个重要概念

Vxworks几个重要概念

1. VxWorks 任务任务:在执行时每个程序都被称之为任务。

VxWorks操作系统中,任务可以直接地或者以共享方式访问大多数系统资源,为了维护各自的线程,每个任务必须保持有足够的上下文环境。

(1) 任务状态:就绪(READY):该状态时任务仅等待CPU的状态,不等待其他任何资源。

阻塞(PEND):任务由于一些资源不可用而被阻塞时的状态。

睡眠(DELAY):出于睡眠的任务状态。

挂起(SUSPEND):该状态时任务不执行,主要用于调试用。

挂起仅仅约束任务的执行,并不约束状态的转换,因此pended-suspended状态时任务可以解锁,delayed-suspended状态时任务可以唤醒。

DELAY+S:既处于睡眠又处于挂起的任务状态。

PEND+S:既处于阻塞又处于挂起的任务状态。

PEND+T:带有超时值处于阻塞的任务状态。

PEND+S+T:带有超时值处于阻塞,同时又处于挂起的任务状态。

state+I:任务处于state且带有一个继承优先级。

------------------------------------------------------------------------| ready | ——> | pended | semTake () / msgQReceive () || ready | ——> | delayed | taskDelay () || ready | ——> | suspended | taskSuspend () || pended | ——> | ready | semGive () / msgQSend () || pended | ——> | suspended | taskSuspend () || delayed | ——> | ready | expired delay || delayed | ——> | suspended | taskSuspend () || suspended | ——> | ready | taskResume () / taskActivate () || suspended | ——> | pended | taskResume () || suspended | ——> | delayed | taskResume() |------------------------------------------------------------------------(2) Wind任务调度在Wind内核中,默认算法是基于优先级的抢占式调度算法,也可以使用轮转调度算法。

一种基于Vxworks的多任务调度算法

一种基于Vxworks的多任务调度算法

1. 3
程序运行仿真图
由于本系统软件的任务调度频繁, 产生的大量调度数 据无法在虚拟环境中全部存储, 因此调度显示图分为两个 部分, 图中横轴为时间轴 , 纵轴为任务集。图 5 为时间片
轮转调度的三个任务的调度示意图, 可以看出三个周期任 务顺利地实现了时间片轮转调度, 几乎不存在切换时间; 图 6 为高优先级任务抢占调度的示意图, 从图 6 可以看出, 各任务在进行抢占资源时的切换时间也是几乎不存在的。 与 RM 算法不同 , 任务之间的调度与各任务的执行时间、 截止时间等参数并无关系, 即使在这些参数未知且不稳定 的条件下, 本系统所用的算法也可以实现高实时性的任务 调度。而且在 经过 3 个 小 时的 连 续试 验 中, 系统 工 作 正常。
原则: 采用时间片轮转调度的周期任务的优先级最低 , 保 证高优先级任务随时可以抢占临界资源开始运行; 任务在系统中的重要性越大 , 优先级就要越高, 保 证重要的任务可以优先抢占临界资源及时开始运行。 按照各任务在系统中的权重, 制定各自的优先级如表 1 所示:
表 1 任务优先级表
图1
SPDA 工作模式图
图 5 时间片轮调度示意图
图 6 高优先级任务抢占示意图
2
结论
本文描述了机载 SPDA 系统软件的设计与应用 , 着重 分析了在 V xw orks 操作系统中基于系统权重的任务调度 算法的实现与仿真。该算法顺利地实现了任务之间的实 时调度 , 由于采用的信号量通信机制来激活/ 阻塞任务, 上 下文切换时间在微秒级, 具有良好的实时性 , 并在 3 个小 时的连续试验中运行正常。对于 S PDA 系统的升级开发, 针对新的功能, 更多任务的调度 , 有待下一步进行研究。
摘要: 针对机载二次配电系统( the Second Pow er Dist ribution A ssociation, 缩写为 SPDA) 的任务调度 , 提出了一 种选择时间片轮转与静态权重优先级抢占混合的调度算法 , 并进行了算法仿真 。 关键词 : V xw orks; 实时; 信号量; 优先级 ; 调度 中图分类号: T P316 文献标识码: A 文章编号: 1673 1131( 2011) 02 0043 03

关于VxWorks系统的任务调度机制浅析

关于VxWorks系统的任务调度机制浅析

关于VxWorks系统的任务调度机制浅析作者:杨坤来源:《信息技术时代·下旬刊》2018年第02期摘要:本文首先简要分析了VxWorks系统的任务调度策略及算法,对优先级倒置出现的原因展开深入探讨,给出了具体的解决方案,最后探讨了静态表方式的具体实现方法,望能为此领域研究有所借鉴。

关键词:VxWorks系统;任务;调度机制针对嵌入式系统而言,其除了要满足应用的基本功能需求之外,还应,安祖应用所提出的各种实时性要求。

所以,嵌入式系统借助各种实用、先进的算法与策略,始终为系统行为的整体可预测性提供切实保障,也就是无论系统处于何种状态、运行至哪一时刻,任务调度程序均能为各任务提供合理、高效的资源分配,满足各任务的实时性要求。

对于VxWorks系统来讲,其所提供的调度算法多以非周期性任务为对象,且为提供用于对周期性任务进行管理与调度的具体機制,且在传统的优先级抢占调度当中,同样存在比较突出的优先级倒置等问题,此些问题对系统的可预测性与实时性造成了严重影响,因而会使系统的整体性能降低。

本文就VxWorks系统的具体任务调度机制作一探讨。

1.任务调度的基本依据在整个VxWorks系统架构当中,各处于独立状态的程序,都可以称作一个任务,未能使Wind内核在管理、调度任务上变得更加方便,各任务均有自己专属的上下文,包含堆栈、时间片定时器、程序计数器等。

针对调度程序而言,其基本功能即为在全部就绪的任务当中,选择运行价值最高的任务,将其投入到运行当中;通常情况下,多根据任务上下文当中的Counter、Priority选项来作为选择依据,其中,针对Priority来讲,其乃是整个任务体系中的静态优先级,而对于Counter而言,其则为任务剩余的具体时间片,其直接决定着一个任务运行状态的好坏。

2.任务调度的具体策略2.1以静态优先级为基础的抢占调度(1)优先级倒置。

在所有静态优先级抢占方式当中,调度程序能够为高优先级的任务先执行提供切实保障。

Vxworks基础

Vxworks基础
板支持包(BSP)
为各种目标板的硬件功能提供了统一的软件接口 它们包括: 硬件初始化 中断处理和产生 硬件时钟和定时器管理 内存映射和分配 BSP还包括boot Rom和其它启动机制 sysLib和sysALib库是VxWorks可移植的核心
Vxworks操作系统将一切与硬件有关的功能模块都放在BSP库中。该BSP库是硬件与软件的接口,处理硬件的初始化、中断处理与产生、硬件时钟与定时管理、局部和总线内存空间的映射、内存大小定义,等等。能够自行启动目标机、初始化目标机、能够与host通信以下载Vxworks核、把控制权交给Vxworks核来调用用户应用程序等功能。
Tornado 系统结构
POSIX Library
Real-Time Embedded Application
Host
VxSim
Debug Agent
Tornado Plug-ins
Target
Target Server
Launcher
Core OS
BSP

Ethernet
Serial Line
板支持包(BSP)
VxWorks的特点--高度伸缩性的环境
Stand-alone kernel up to full featured OS
0
100
200
300
400
500
Maximum Equipped
File System
Networking
O.S.
m
Memory Requirements (Kbytes)
VxWorks (1)
Vxworks提供了一套丰富的任务间通信机制,包括: ●内存共享(Shared memory):简单的数据共享方法 ●信号量(Semaphore):用于基本的互斥及同步 ●消息队列(Message queues)和管道(pipe): 用于同一CPU上任务间消息的传递 ●套接口(Socket)和远程程序调用(RPC): 用于网络上任务间的通信 ●信号(Signal):用于异常处理 此外,Vxworks提供了三种共享内存的对象(shared-memory objects) 来实现运行在不同CPU上的任务间的高速同步和通信。 ●共享信号量(shared semaphores):有二进制,记数型两种 ●共享消息队列(shared message queues) ●共享内存分区(shared-memory partitions):有系统类型和用户类型

Vxworks实时性

Vxworks实时性

Vxworks 实时性分析
1)任务调度(优先级抢占以及时间片乱转)
基于动态优先级以及时间片轮转的调度算法,可抢占式的内核
Vxworks共支持256个不同优先级的task,可以保证高优先的任务快速执行
没有内核态和用户态之分,所以task的上下文切换的时间以及系统开销会小很多。

a)内核高优先级抢占低优先级
b)同一优先级的,采用时间片轮转(时间片大小相等)
2)中断处理
Vxworks 以内核线程的形式实现中断处理程序的下半部,这在Linux中也已实现
3)地址映射机制:
a)Vxworks 没有诸如Linux的内存分配等函数(这些函数会引起休眠)所以实时性会有所保障。

b)Vxworks内核和用户可以互相调用函数,所以响应迅速,而Linux则是通过系统调用由用户空间进入内核空间。

4)强实时操作系统的函数调用与服务的执行时间应具有可确定性。

vxworks任务调度

vxworks任务调度

时间片轮转调度我们来看一个具体的例子,在这个程序中,用户启动了三个优先级相同的任务,并通过对kernelTimeSlice(TIMESLICE)的调用启动了时间片轮转调度。

例1:时间片轮转调度/* includes */#include "vxWorks.h"#include "taskLib.h"#include "kernelLib.h"#include "sysLib.h"/* function prototypes */void taskOne(void);void taskTwo(void);void taskThree(void);/* globals */#define ITER1 100#define ITER2 10#define PRIORITY 101#define TIMESLICE sysClkRateGet()#define LONG_TIME 0xFFFFFFLvoid sched(void) /* function to create the three tasks */ {int taskIdOne, taskIdTwo, taskIdThree;if (kernelTimeSlice(TIMESLICE) == OK)/* turn round-robin on */printf("\n\n\n\n\t\t\tTIMESLICE = %d seconds\n\n\n", TIMESLICE / 60);/* spawn the three tasks */if ((taskIdOne = taskSpawn("task1", PRIORITY, 0x100, 20000, (FUNCPTR)taskOne,0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) == ERROR)printf("taskSpawn taskOne failed\n");if ((taskIdTwo = taskSpawn("task2", PRIORITY, 0x100, 20000, (FUNCPTR)taskTwo,0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) == ERROR)printf("taskSpawn taskTwo failed\n");if ((taskIdThree = taskSpawn("task3", PRIORITY, 0x100, 20000, (FUNCPTR)taskThree, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) == ERROR)printf("taskSpawn taskThree failed\n");}void taskOne(void){unsigned int i, j;for (i = 0; i < ITER1; i++){for (j = 0; j < ITER2; j++)printf("task1\n");/* log messages */for (j = 0; j < LONG_TIME; j++);/* allow time for context switch */ }}void taskTwo(void){unsigned int i, j;for (i = 0; i < ITER1; i++){for (j = 0; j < ITER2; j++)printf("task2\n");/* log messages */for (j = 0; j < LONG_TIME; j++);/* allow time for context switch */ }}void taskThree(void){unsigned int i, j;for (i = 0; i < ITER1; i++){for (j = 0; j < ITER2; j++)printf("task3\n");/* log messages */for (j = 0; j < LONG_TIME; j++);/* allow time for context switch */}}程序运行输出:一会儿输出一些“task1”,一会儿输出一些“task2”,再一会儿输出一些“task3”。

vxworks命令教程2024新版

vxworks命令教程2024新版
文件操作命令
文件创建、打开和关闭
创建文件
使用`creat()`函数创建新文件,需要指定文件名和访 问模式。
打开文件
使用`open()`函数打开已存在的文件,同样需要指定 文件名和访问模式。
关闭文件
使用`close()`函数关闭已打开的文件,释放相关资源 。
文件读写操作
01
读取文件
写入文件
02
03
telnet
远程终端服务命令,用于建立TCP连接 并远程登录到目标主机。
ftp
文件传输协议(FTP)命令,用于在网 络上传输文件。
tftpபைடு நூலகம்
简单文件传输协议(TFTP)命令,用 于在网络上进行简单的文件传输。
网络诊断和调试
netstat
网络统计命令,用于显示网络 连接、路由表、接口状态等网
络相关信息。
在嵌入式系统开发中,命令行接口(CLI )是一个不可或缺的工具。通过CLI,开 发者可以与系统进行交互,执行命令,查 看系统状态,调试问题等。
本教程旨在帮助开发者熟悉并掌握 VxWorks的命令行接口,以便更有效地 进行嵌入式系统开发和调试。
教程范围
基本命令介绍
涵盖VxWorks中常用的基本命令, 如任务管理、内存管理、时间管理
ndp
邻居发现协议(NDP)命令,用于 IPv6网络中的邻居发现和管理。
route
用于设置和查看路由表,实现网络数 据包的正确转发。
dhcpc
动态主机配置协议客户端(DHCP Client)命令,用于从DHCP服务器 获取网络配置信息。
数据传输和接收
ping
用于测试网络连接可达性,发送ICMP 回显请求并接收回显应答。

VxWorks操作系统简介

VxWorks操作系统简介

VxWorks操作系统简介VxWorks操作系统简介1.VxWorks操作系统概述VxWorks是一种实时操作系统(RTOS),由美国风险通信公司(Wind River Systems)开发和销售。

它广泛应用于嵌入式系统、网络设备和航空航天等领域,以其高度可靠性、实时性和可定制性而闻名。

2.VxWorks操作系统的特点与优势2.1 实时性能:VxWorks具有优秀的实时性能,能够以微秒级的精确度响应任务,并能够满足各种实时应用的需求。

2.2 可定制性:VxWorks提供了丰富的可定制选项,开发人员可以根据具体需求选择合适的开发环境、编程语言和硬件平台。

2.3 可靠性:VxWorks采用可靠性架构,能够有效地处理系统错误和异常,提供稳定性能与高可靠性。

2.4 安全性:VxWorks支持多层次的安全机制,包括访问控制、数据加密和安全认证等,保护系统免受恶意攻击。

3.VxWorks操作系统的体系结构3.1 内核:VxWorks内核提供了操作系统的核心功能,包括任务调度、内存管理、中断处理等。

它是操作系统与硬件之间的核心接口。

3.2 文件系统:VxWorks支持多种文件系统,包括RAM文件系统、ROM文件系统和网络文件系统等。

这些文件系统可用于数据存储、配置文件管理和软件更新等方面。

3.3 设备驱动程序:VxWorks提供了丰富的设备驱动程序,用于管理和控制外设设备,如串口通信、网络接口和硬盘等。

3.4 网络协议栈:VxWorks内置了多种网络协议栈,包括TCP/IP协议栈和UDP协议栈等,以实现设备间的网络通信。

4.VxWorks操作系统的开发工具4.1 Tornado集成开发环境:Tornado是VxWorks的主要开发工具,提供了图形化界面和一系列的编译、调试和部署工具,简化了开发过程。

4.2 GNU工具链:VxWorks还支持GNU工具链,包括GCC编译器、GDB调试器和Make构建工具等,为开发人员提供更灵活的开发环境。

基于VxWorks的星务管理系统软件多任务实时性调度设计

基于VxWorks的星务管理系统软件多任务实时性调度设计
英 文 引 用 格 式 :Z h a o J i a n k u n, Z h a n g D a s o n g , Hu A l l a n, e t a 1 . D e s i g n o f s a t e l l i t e ma n a g e m e n t s y s t e m s o f t w a r e o f m u l t i t a s k r e a l t i m e
s c h e d u l i n g b a s e d o n V x Wo r k s [ J ] . A p p l i c a t i o n o f E l e c t r o n i c T e c h n i q u e , 2 0 1 7, 4 3 ( 1 2 ) : 1中 文 引 用 格 式 :赵 建 坤 , 张 大松 , 胡爱 兰 , 等 .基 于 V x Wo r k s的 星 务 管 理 系 统 软 件 多 任 务 实 时 性 调 度 设 计 [ J ] . 电子 技术 应 用

2 0 1 7, 4 3 ( 1 2 ) : 1 1 6 — 1 l 9 .
Ab s t r a c t :I n t h e p r o c e s s o f t h e d e s i g n a n d d e v e l o p me n t o f s t a r ma n a g e me n t s y s t e m s o f t wa r e ,i n o r d e r t o s a t i s f y t h e r e q u i r e me n t s o f
h i g h r e a l — t i me p e f r o r ma n c e ,h i g h s e c u i r t y a n d h i g h r e l i a b i l i t y ,t h i s p a p e r p r o p o s e s a r e a l -t i me o p e r a t i n g s y s t e m Vx Wo r k s o p e r a t i n g s y s t e m a s t h e c o r e o f t h e s a t e l l i t e s e r v i c e s y s t e m.Vx Wo r k s o p e r a t i n g s y s t e m e mp l o y s t h e mu l t i -t a s k s c h e d u l i n g me c h a n i s m ,t o m— b i n e d wi t h t h e me t h o d o f c a l c u l a t i o n b a s e d o n t h e r o u n d r o b i n s c h e d u l i n g , mo r e o v e r ,d e v e l o p i n g t h e a r c h i t e c t u r e o f s t a r ma n a g e — me n t s y s t e m .T h e r e s u l t s ma n i f e s t s t h a t i n t h e p r e mi s e o f f u l f i l l i n g t h e s a t e l l i t e o n~b o a r d s y s t e m s o f t wa r e d e s i g n r e q u i r e me n t s .t h e r e a l —t i me p e r f o r ma n c e i s i mp r o v e d.

VxWorks操作系统简介

VxWorks操作系统简介
任务间通信最简单的方法是采用共享存储区,也即相关的 各个任务分享属于它们的地址空间的同一内存区域。因为 所有的任务都存在于单一的线性地址空间,任务间共享数 据。全局变量、线性队列、环形队列、链表、指针都可被 运行在不同的上下文的代码所指向。 用户可以定义一些数据用于任务间的通讯: 编写一个库,提供该数据的共享存储; 所有任务访问这些共享数据时都使用库中的例程; 可以用信号量来保证共享数据的互斥访问
通信机制——消息队列和管道



单处理器中任务间消息的传送采用消息队列 管道是一个虚拟的IO设备,是建立在消息队列上的,采用 标准的IO接口,能调用标准的I/O函数,进行管道打开、读 入和写入等操作。 消息队列和管道都会提供先入先出的缓冲(FIFO)以及同 步和互斥机制。 用于单个处理器中任务间的通讯,也可用于ISR与任务间的 通讯
Slip / PPP
内存管理

平坦模式(Flat Mode)


为什么不是段页式的管理? 页式管理要有程序-内存的映射, 严重影响实时性

VxWorks系统支持静态分配和 动态分配相合的内存分配

低端内存区和VxWorks区采用静态 分配,而保证VxWorks的实时性和 稳定性。

内存分配采用first-fit算法 当增加硬件内存时,需要修改 sysPhysMemTop( ) (或调整 LOCAL_MEM_SIZE)
任务结构——任务控制块(TCB)

任务控制块用来描述一个任务,每一任务都与一 个TCB关联。

任务控制块里面包含了:当前状态、优先级、要等 待的事件或资源、任务程序码的起始地址、初始堆 栈指针

任务的“上下文”(context)。任务的上下文就 是当一个执行中的任务被停止时,所要保存的所 有信息。通常,上下文就是计算机当前的状态, 也即各个寄存器的内容。

Vx Works操作系统环境下一种周期任务管理方法

Vx Works操作系统环境下一种周期任务管理方法

航 空 计 算 技 术 第 33 卷 第 1 期
地面支持软件包括与操作系统集成的开发平台 (开 发环境工具集) 以及相关的基本支持软件 (包括目标 机驻留的支持软件部分) 。通用计算机系统软件将 为通用计算机系统提供开发 、运行和维护支持 。
在图中 ,应用软件和周期 BIT 会用到周期任务 。

33 卷 第 1 2003 年 3 月

航空
Aeronautical
计算技 Computer
术 Technique
Vol133 No11 Mar12003
文章编号 :1671 - 654X(2003) 01 - 0043 - 03
பைடு நூலகம்
VxWorks 操作系统环境下一种周期任务管理方法
PERIOD- TASK- TABLE- ENTRY- TYPE period-task-table
[ PTASKMAX] ; int period-task-count = 0 。
2. 3 三个例程
周期任务的调度接口用来实现用户的周期任务 的调度 ,包括三个用户可用的接口例程 :
a1int PtaskSpawn ( int task-period-count , char 3 name , int priority ,
b. 建立周期任务表 ,登记每个周期任务的周期 数 ,以此决定周期调度程序何时再次启动某周期任 务运行 。
c. 当周期任务一次运行任务结束 ,周期任务调 度管理将在周期任务表中记录其完成状态 ,并挂起 该任务 。
d. 在某任务周期数到达时 ,周期任务调度管理 将判明该任务是否超时 ,在未超时情况下 ,此任务将 解挂再次运行 ,否则将报告该任务超时 。
2003 年 3 月 张丙平 :WxWorks 操作系统环境下一种周期任务管理方法 45

vxworks中period使用方法

vxworks中period使用方法

vxworks中period使用方法### VxWorks中period使用方法详解VxWorks是一款高性能的实时操作系统,广泛应用于嵌入式系统开发中。

在实时系统中,周期性任务的执行对于系统功能的实现至关重要。

VxWorks提供了一种名为`period`的机制,用于创建和调度周期性任务。

本文将详细阐述如何在VxWorks中使用`period`功能。

#### 一、period机制概述`period`是VxWorks中用于创建周期性任务的API。

通过`period`,可以设定任务以固定的周期执行,确保了任务在时间上的精确性和可靠性。

这在处理如数据采集、信号处理、状态更新等周期性操作时尤为有效。

#### 二、使用步骤1.**定义周期任务**在使用`period`前,需要定义一个周期任务的函数原型。

这个函数需要满足以下条件:- 无参数- 无返回值- 函数体内是任务要执行的代码```cvoid myPeriodicTask(void) {// 任务代码}```2.**创建周期任务**使用`period`函数创建周期任务。

```cSTATUS period(int period, int ticks, FUNCPTR function, int phase, int arg);```- `period`:任务周期,以时钟滴答(ticks)为单位。

- `ticks`:每个周期的滴答数。

- `FUNCPTR function`:指向任务函数的指针。

- `phase`:任务启动的相位偏移,通常设为0。

- `arg`:传递给任务函数的参数,如果不需要可以设为0。

例如,创建一个每100个时钟滴答执行一次的任务:```cperiod(100, 100, (FUNCPTR)myPeriodicTask, 0, 0);```3.**启动周期任务**创建任务后,系统将自动启动它。

不需要额外的启动命令。

#### 三、注意事项- `period`创建的任务是抢占式的,这意味着它们可以打断其他低优先级的任务。

VxWorks下周期任务调度和任务周期选择

VxWorks下周期任务调度和任务周期选择

VxWorks 下周期任务调度和任务周期选择发布日期:2006-05-24 作者:张强 李鸥 来源:微计算机信息【摘要】:本文介绍了VxWorks 操作系统下任务调度的策略,分析了实际设计应用中,周期任务调度的需求。

介绍了一种在VxWorks 操作系统下优化周期任务周期的方法。

【关键字】 Vxworks 实时 周期任务 调度1 引言VxWorks 是WindRiver 公司开发的具有工业领导地位的高性能实时操作系统,它是一个运行在目标机上的高性能、可裁减的嵌入式实时操作系统。

其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中。

在VxWorks 下开发的许多实际应用中,尤其是计算机控制系统中,任务往往有最大的延迟或者说等待时间,它们被设计成周期任务。

为了提高应用系统的性能,要为周期任务选择合适的周期。

本文介绍在VxWorks 系统下选择任务周期的一种方法。

2 Vxworks 实时内核Wind 的任务调度Wind 内核默认采用基于优先级的抢占式调度(Priority-base preemptive scheduling )算法。

同时,还可以选用轮转(round-robin )调度算法。

不同优先级任务之间,采用基于优先级的抢占式调度算法。

系统中每个任务都有一个介于最高0到最低255之间的优先级。

任一时刻,内核把CPU 分配给处于就绪态的优先级最高的任务运行。

如果系统内核一旦发现一个优先级更高的任务转变为就绪态,内核就立刻保存当前任务的上下文,把当前任务状态转换为阻塞态,同时切换到这个高优先级任务的上下文执行。

等待高优先级任务执行完才执行低优先级的任务。

相同优先级的多个任务之间,采用时间片轮转调度算法。

轮转调度算法试图让优先级相同的、处于就绪态的任务公平的分享CPU ,系统让处于就绪态的优先级相同的一组任务依次轮流执行预先确定长度的时间片。

当一个任务到达时,它被排在轮转队列的后面,等待分配给自己的时间片的到来,如果在时间片内没有运行完,则再等待属于自己的时间片的到来,直到任务完成。

VxWorks下周期任务调度和任务周期选择

VxWorks下周期任务调度和任务周期选择

VxWorks下周期任务调度和任务周期选择
张强;李鸥
【期刊名称】《微计算机信息》
【年(卷),期】2006(022)002
【摘要】本文介绍了VxWorks操作系统下任务调度的策略,分析了实际设计应用中,周期任务调度的需求.介绍了一种在Vx-Works操作系统下优化周期任务周期的方法.
【总页数】3页(P69-71)
【作者】张强;李鸥
【作者单位】450002,郑州解放军信息工程大学信息工程学院;450002,郑州解放军信息工程大学信息工程学院
【正文语种】中文
【中图分类】TP316
【相关文献】
1.基于VxWorks的抢占式周期任务调度改进算法 [J], 唐甜;徐杰;张蕾
2.VxWorks操作系统环境下一种周期任务管理方法 [J], 张丙平
3.VxWorks下基于多任务调度的分析和研究 [J], 李慧;李涛;杨占华;万玮
4.VxWorks下周期任务调度和任务周期选择 [J], 张强;李鸥
5.基于异构多核平台低能耗周期任务调度算法 [J], 夏军; 袁帅; 杨逸
因版权原因,仅展示原文概要,查看原文内容请购买。

河北网络_vxworks任务管理

河北网络_vxworks任务管理

嵌入式操作系统
火龙果整理
错误信息
• 在VxWorks中有一个全局变量errno来存放 系统最近的错误状态值
• 每个任务TCB中都记录有一个全局errno副 本—errostatus ,属于任务上下文的一部分
• ISR也使用独立的errno,但是ISR没有 TCB,内核为ISR在中断栈中保存和恢复 errno
– – – – – DELAY+S——睡眠+挂起 PEND+S——阻塞+挂起状态 PEND+T——延时阻塞状态 PEND+T+S——延时阻塞+挂起状态 …+I——继承优先级状态,优先级暂时被提升
嵌入式操作系统
火龙果整理
任务的状态转换图
任务创建时,处于挂起状态
taskSuspend() taskResume()
嵌入式操作系统
火龙果整理
• errno的值由4个字节表示,2个高字节表示 产生错误的模块组件编码,2个低字节表示 错误编号
– 如0x110001,表示内存不足
• VxWorks提供errnoLib库用于获取和设置 任务和中断的错误状态值
嵌入式操作系统
火龙果整理
– #define SHELL_STACK_SIZE 10000
• VxWorks支持独立的中断栈,对所有的 ISR使用相同的中断栈
– 中断栈在系统启动时根据配置参数设置位 置、大小和填充。在configAll.h中有缺省定 义:
#define ISR_STACK_SIZE 1000
嵌入式操作系统
• !由于没有访问内存任何约束和保护,因
而对代码质量提出了更高的要求
• 当选用VxVMI时,每个任务各自的地址空 间需要进行虚拟地址到物理地址的转换
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VxWorks 下周期任务调度和任务周期选择发布日期:2006-05-24 作者:张强 李鸥 来源:微计算机信息【摘要】:本文介绍了VxWorks 操作系统下任务调度的策略,分析了实际设计应用中,周期任务调度的需求。

介绍了一种在VxWorks 操作系统下优化周期任务周期的方法。

【关键字】 Vxworks 实时 周期任务 调度1 引言VxWorks 是WindRiver 公司开发的具有工业领导地位的高性能实时操作系统,它是一个运行在目标机上的高性能、可裁减的嵌入式实时操作系统。

其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中。

在VxWorks 下开发的许多实际应用中,尤其是计算机控制系统中,任务往往有最大的延迟或者说等待时间,它们被设计成周期任务。

为了提高应用系统的性能,要为周期任务选择合适的周期。

本文介绍在VxWorks 系统下选择任务周期的一种方法。

2 Vxworks 实时内核Wind 的任务调度Wind 内核默认采用基于优先级的抢占式调度(Priority-base preemptive scheduling )算法。

同时,还可以选用轮转(round-robin )调度算法。

不同优先级任务之间,采用基于优先级的抢占式调度算法。

系统中每个任务都有一个介于最高0到最低255之间的优先级。

任一时刻,内核把CPU 分配给处于就绪态的优先级最高的任务运行。

如果系统内核一旦发现一个优先级更高的任务转变为就绪态,内核就立刻保存当前任务的上下文,把当前任务状态转换为阻塞态,同时切换到这个高优先级任务的上下文执行。

等待高优先级任务执行完才执行低优先级的任务。

相同优先级的多个任务之间,采用时间片轮转调度算法。

轮转调度算法试图让优先级相同的、处于就绪态的任务公平的分享CPU ,系统让处于就绪态的优先级相同的一组任务依次轮流执行预先确定长度的时间片。

当一个任务到达时,它被排在轮转队列的后面,等待分配给自己的时间片的到来,如果在时间片内没有运行完,则再等待属于自己的时间片的到来,直到任务完成。

为了任务控制的灵活性,Wind 内核还提供了动态优先级机制,任务的优先级在运行期间可动态地变化。

同时,为了防止优先级反转,还具有优先级继承机制,通过使用互斥信号量可以防止高优先级的任务被迫等待一段不确定时间,直到一个低优先级任务完成。

3 关于周期任务3.1 周期任务的概念实际应用中,尤其是计算机控制系统中,有些任务有最大的延迟或者说等待时间,必须每隔一定时间执行一次,例如必须每30ms对信号采样一次。

这种类型的任务称之为周期任务。

其特点如下:(1)周期执行。

每个周期内执行一次,本周期内运行完成后,任务将挂起,等待下一周期再运行;(2)周期任务在规定周期内,必须执行完毕。

若不能运行完,将产生周期任务超时,并导致系统不可预知的行为,这在实时系统中是不允许的,周期任务一但超时应有相应程序处理。

在VxWorks操作系统中周期任务是由定时器来实现的。

3.2 周期任务的调度和周期在实际应用中,周期任务的硬实时调度非常重要,调度算法也有多种。

优先级随速率单调的调度算法(Rate Monotonic Scheduling , RMS)是针对可抢占的周期性进程采用的经典静态算法。

对于一组抢占式的,独立的,且周期与其时限相同的周期任务,RMS被证明是在理想条件下最佳的固定优先级调度算法[4]。

对于RMS可调度的任务应该满足不等式,随着任务数的增加,调度上限值逐步降低,其极限值为ln2。

而最早截止时间优先调度算法(Earliest Deadline First,EDF)是流行的动态实时调度算法。

对任何可调度的进程集合EDF总是适用的,甚至CPU的利用率可达到100%。

周期任务一般都存在一个可接受的周期范围,在最大周期时仍能满足系统的需求。

例如:实时控制系统可能有多个控制进程,在保证系统性能的情况下,它们的抽样频率可以从一定的范围内选择。

选择周期遵循两个原则:(1)不能低于系统允许的最大的时间延迟。

(2)系统性能与任务周期成反比。

周期越短,性能越好。

[3]和[5]分别研究了在RMS和EDF调度算法下获得最佳任务周期的算法。

实时应用开发大致可分为两个步骤:(1)设计。

设计特定的计算模块,使之符合被控目标的需求,为了确保系统达到应有的性能,这些模块都被预先定义了周期上限;(2)实现。

此时在第一阶段定义好的模块被当作是实时周期任务来实现。

实际应用中,往往根据系统性能要求和任务性质,规定了周期任务的周期上限和优先级。

这些任务的可调度性由任务的周期,执行时间和调度算法来确定。

最终这些任务有可能是不可调度的,即使可以调度,系统的总体性能也不一定达到最优。

4 VxWorks下任务周期选择以上我们分析了周期任务调度的特点和重要性,以及VxWorks操作系统内核的调度机制,我们的目标是在满足系统性能需求和任务可调度性的情况下,在VxWorks系统下获得给定任务集的周期选择范围。

假定任务集{τ1,…,τn},它们的周期上界分别是{Tm1,…,Tmn},优先级分别为{P1,…,Pn},执行时间分别是{C1,…,Cn},不失一般性我们假定P1≥…≥Pn。

对于该组任务,根据VxWorks基于优先级的抢占式调度机制,给出{ T1,…,Tn }可选的周期范围。

我们假定各任务间相互独立,并忽略VxWorks系统任务对周期任务调度所产生的影响,例如为实现周期任务所设置的系统定时器。

另外忽略任务切换时间。

首先考虑任务优先级均不同的情况,参考[6],[3]中提出的测试任务可调度性的算法,在VxWorks基于优先级的抢占式调度机制下,低优先级的任务必须等待高优先级的任务执行完才能得到执行的情况。

在t时刻对于任务τk完成所需求的CPU累计时间可以表示为任务集的可调度条件:对于任意任务τk存在整数{n1,…,nk }满足i=1,…,k (I)从(III)得出的周期范围只影响{τ1,…,τk}的周期范围。

为了满足所有任务的可调度性,对不同的任务所得的周期范围应该取交集。

取交集时对于那些没有包含进来的任务周期范围不作改动。

最终获得一组任务周期的可选范围,然后就可以针对具体的实际应用,来选择确定任务的周期。

当任务集{τ1,…,τn}中有h个任务优先级高于任务τk,同时τk有m个相同优先级的任务时,假定该m个任务按照周期从小到大的顺序排列。

当没有其它任务优先级与τk相同时,m=1。

我们考虑最坏的情况,即任务τk在现同优先级任务中最后一个完成。

在t时刻对于任务τk完成所需求的CPU累计时间可以表示为跟据(II)分别计算出任务周期范围。

将N2所得出的周期范围分别与N3所得出的周期范围取交集得到最终的周期可选范围:: T1=12,4≤T2≤5,12≤T3≤29;:7≤T1≤12, 4.67≤T2≤5,14≤T3≤29:7.5≤T1≤12,3.75≤T2≤5,15≤T3≤29;:8≤T1≤12,3.2≤T2≤5,16≤T3≤29:6≤T1≤12, 3.6≤T2≤5,18≤T3≤29;:8.5≤T1≤12,3≤T2≤5,17≤T3≤29:6.3≤T1≤12, 3.17≤T2≤5,19≤T3≤29我们就可以跟据实际应用设计中的需求和不同任务的特性,在这些周期范围中选择一组,选择适当的任务周期以优化系统的性能。

5 结束语周期任务在嵌入式是适应用开发中应用非常广泛,本文在VxWorks的调度机制下,对周期任务的周期选择进行了讨论了,介绍了一种计算周期范围的方法。

任务周期的选择直接影响系统性能,通过计算任务周期范围,合理选择任务周期,能够改善应用系统的性能。

参考文献:[1]罗国庆 VxWorks与嵌入式软件开发机械工业出版社2003.9欢迎访问无忧电子开发网(技术文章在线阅读在线商城)[2] Jianjia Wu ,Jyh-Charn Liu, “On Schedulability Bounds of Static P riority Schedulers” IEEE[3] Danbing Seto1, John P. Lehoczky2, and Lui Sha “Task Period Selec tion and Schedulability in Real-Time Systems” IEEE[4] C.L. Liu, and J.W. Layland, “Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment,” Journal of the ACM, Vol. 2 0, No. 1, January 1973, pp. 46-61.[5] Seto, D., J. P. Lehoczky, L. Sha, and K. G. Shin, “On Task Sched ulability in Real-Time Control System,” in the Proceedings of 17th R eal-Time Systems Symposium,pp. 13-21, December, 1996.[6] Sha, L., Rajkumar, R. and Sathaye, S. S., “Generalized rate-mono tonic scheduling theory: A framework for developing real-time systems ,” Proceedings of the IEEE, Vol. 82, No. 1, January, 1994.。

相关文档
最新文档