Vxworks几个重要概念

合集下载

VxWorks任务基础

VxWorks任务基础

任务优先级
从0(最高)到255(最低) 程序员可以动态地对优先级进行操作 – taskPriorityGet (tid, &priority) – taskPrioritySet (tid, priority) 使用这些函数会使得程序分析起来比较困难,不 建议使用

任务堆栈(stack)


什么时候会发生上下文切换
任务在执行过程中会发生同步上下文切换 – 任务自身发生阻塞、延时、挂起等状态变化 – 当一个优先级高的任务准备运行 – 降低任务的优先级或任务退出执行(不常发生) 当有中断ISR到来时会发生异步上下文切换 – 使得一个优先级高的任务准备运行 – 挂起当前的任务或降低它的优先级(不常发生) 同步上下文切换比异步上下文切换要保存的寄 存器少,因此切换速度快
任务控制
(2)任务挂起/恢复(suspend/resume) taskSuspend(tid) 使任务不能够执行 可以被增加阻塞和睡眠状态 一个任务可以安全地挂起自己 taskResume(tid) 取消挂起 通常taskSuspend()和taskResume()被用于调试 和开发的目的
任务控制
(3)任务睡眠(delayed) 使任务睡眠一定的系统时钟周期 – STATUS taskDelay(ticks) 每隔1/7秒进行轮询 FOREVER{ taskDelayed( sysClkRateGet()/7); … } 使用sysClkRateSet()改变时钟频率
4.5.3 代码重入(Reentrancy)
代码重载是指同一段代码可以被多个任务调用, 而且不出错。 代码内应该无全局变量或静态变量;代码不修 改自身。 VxWorks使用下面的机制来实现重入 – 动态堆栈变量 – 由信号量保护的全局或静态变量 – 任务变量

VxWork介绍及编程

VxWork介绍及编程

VxWork介绍及编程一.嵌入式操作系统VxWorks简介VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。

良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。

它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。

在美国的 F-16、FA-18 战斗机、B-2 隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。

WindRiver公司网址实时操作系统和分时操作系统的区别从操作系统能否满足实时性要求来区分,可把操作系统分成分时操作系统和实时操作系统。

分时操作系统按照相等的时间片调度进程轮流运行,分时操作系统由调度程序自动计算进程的优先级,而不是由用户控制进程的优先级。

这样的系统无法实时响应外部异步事件。

实时操作系统能够在限定的时间内执行完所规定的功能,并能在限定的时间内对外部的异步事件作出响应。

分时系统主要应用于科学计算和一般实时性要求不高的场合。

实时性系统主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合。

VxWorks的特点∙可靠性操作系统的用户希望在一个工作稳定,可以信赖的环境中工作,所以操作系统的可靠性是用户首先要考虑的问题。

而稳定、可靠一直是VxWorks的一个突出优点。

自从对中国的销售解禁以来,VxWorks以其良好的可靠性在中国赢得了越来越多的用户。

∙实时性实时性是指能够在限定时间内执行完规定的功能并对外部的异步事件作出响应的能力。

实时性的强弱是以完成规定功能和作出响应时间的长短来衡量的。

VxWorks 的实时性做得非常好,其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,它们造成的延迟很短。

VxWorks操作系统基础(适合初学者阅读)2024新版

VxWorks操作系统基础(适合初学者阅读)2024新版
提供最基本的系统服务,如任务调度、内存管理、中断处理等。
系统库(System Library)
提供一系列操作系统服务,如文件操作、网络协议栈等。
驱动程序(Device Drivers)
与硬件设备交互,实现对硬件设备的控制和管理。
内核组成及作用
内核组成及作用
01
内核的主要作用包括
02 管理系统资源,如CPU、内存、I/O设备等 。
06
VxWorks文件系统操作指南
文件系统类型及特点介绍
RAM-based File System
基于RAM的文件系统,读写速度快,但数据在 关机后丢失。
TrueFFS
Wind River特有的闪存文件系统,提供磨损均 衡和掉电保护功能。
ABCD
DOS File System (dosFs)
兼容MS-DOS的文件系统,支持FAT12、FAT16 和FAT32格式。
01
VxWorks操作系统概述
VxWorks操作系统定义
VxWorks是一款由美国风河公司( Wind River)开发的嵌入式实时操 作系统(RTOS),专为需要实时响 应和高可靠性的应用而设计。
VxWorks提供了丰富的中间件和开发 工具,支持多种处理器架构和硬件平 台,广泛应用于航空、航天、通信、 医疗、工业自动化等领域。
在ISR中处理完中断事件后, 需要及时清除中断标志,避 免重复处理。
中断优先级设置和嵌套处理
01
VxWorks支持多级中断优先级,高优先级的中断可以打断低优先 级的中断处理。
02
中断优先级可以通过配置文件或动态调整进行设置,以满 足不同应用场景的需求。
03
在处理中断时,如果发生更高优先级的中断请求, VxWorks会自动保存当前中断的上下文信息,并跳转到更 高优先级的中断处理程序中。处理完成后,再恢复之前中 断的上下文信息并继续执行。这种机制称为中断嵌套处理 。

VxWorks操作系统简介

VxWorks操作系统简介

VxWorks操作系统简介VxWorks操作系统简介VxWorks操作系统是一种广泛应用于嵌入式系统开发的实时操作系统。

本文将详细介绍VxWorks操作系统的架构、特性、应用领域以及相关的法律名词注释。

一、VxWorks操作系统架构VxWorks操作系统采用分层架构,包括内核层、中间层以及外围应用层。

具体架构如下:⒈内核层:提供底层的操作系统服务,包括任务管理、内存管理、中断处理、设备驱动等。

内核层使用高度模块化的设计,可以根据需求选择性地加载不同的内核服务。

⒉中间层:提供更高层次的功能,如文件系统、网络协议栈、图形用户界面等。

中间层通过对内核接口的封装,提供更便捷的应用开发接口。

⒊外围应用层:包括用户应用程序和系统管理工具。

用户应用程序可以基于VxWorks操作系统的开发环境进行开发,并且通过内核和中间层提供的接口与系统进行交互。

二、VxWorks操作系统特性VxWorks操作系统有以下特点:⒈实时性:VxWorks操作系统被广泛应用于实时系统开发,具有快速响应、低延迟和可预测性等特性。

它使用了优化的调度算法和中断处理机制,确保系统对实时任务的及时响应。

⒉可靠性:VxWorks操作系统采用了可靠性设计和故障恢复机制,例如内存保护、任务隔离和异常处理等。

这些机制可最大限度地减少系统崩溃和错误的影响。

⒊可扩展性:VxWorks操作系统具有高度可扩展性,可以根据应用的需要进行灵活配置。

开发人员可以根据系统需求选择性地加载所需的内核服务和中间层模块,以达到最佳性能和资源利用。

⒋安全性:VxWorks操作系统提供了多层次的安全机制,包括权限控制、数据加密和访问控制等。

这些机制可以在网络和物理环境中保护系统不受未经授权的访问和攻击。

三、VxWorks操作系统的应用领域VxWorks操作系统在各行各业都有广泛的应用,特别适用于对实时性和可靠性要求较高的领域。

以下是一些典型的应用领域:⒈工业自动化:VxWorks操作系统被广泛用于控制系统和工业领域,如汽车制造、航空航天和机械制造等。

由浅入深介绍

由浅入深介绍

VxWorks 由浅入深介绍关键词:实时操作系统任务消息VxWorks Tornado摘要:本文档对实时操作系统作了简要介绍,并针对VxWorks系统的特点进行了具体的说明和分析,从VxWorks系统的任务管理、通信机制、系统配置、系统接口几个方面展开。

1. VxWorks操作系统概述1.1. VxWorks 操作系统简介基于微内核的,可裁减,可抢占(也可支持任务优先级反转),实时多任务操作系统.VxWorks系统最提供多处理器间和任务间高效的信号灯、消息队列、管道、网络透明的套接字。

为了获得最快速可靠的中断响应,VxWorks系统的中断服务程序ISR有自己的上下文。

VxWorks实时操作系统由400多个相对独立的、短小精炼的目标模块组成,用户可根据需要选择适当模块来裁剪和配置系统,这有效地保证了系统的安全性和可靠性。

系统的链接器可按应用的需要自动链接一些目标模块。

这样,通过目标模块之间的按需组合,可得到许多满足功能需求的应用。

VxWorks操作系统的基本构成模块包括以下部分:• 高效的实时内核WindVxWOrks实时内核(Wind)主要包括基于优先级的任务调度、任务同步和通信、中断处理、定时器和内存管理。

• 兼容实时系统标准POSIXVxWOrks提供接口来支持实时系统标准P.1003.1b.• I/O系统VxWOrks提供快速灵活的与ANSI-C相兼容的I/O系统,包括UNIX的缓冲I/O和实时系统标准POSIX的异步I/O。

VxWOrks包括以下驱动:网络--- 网络设备(以太网、共享内存)管道--- 任务间通信RAM --- 驻留内存文件SCSI --- SCSI硬盘,磁碟,磁带键盘--- PC x86键盘(BSP仅支持x86)显示器--- PC x86显示器(BSP仅支持x86)磁碟--- IDE和软盘(BSP仅支持x86)并口--- PC格式的目标硬件• 本机文件系统• I/O系统VxWorks的文件系统与MS-DOS、RT-11、RAM、SCSI等相兼容。

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内核解读-1

VxWorks内核解读-1

VxWorks内核解读-1本文首先从实时内核的定义出发,对实时操作系统进行了介绍,并对实时操作系统的特点进行了说明,接着从内核的功能和结构角度介绍了整体式内核,层次式内核,以及微内核。

最后对具有微内核特性的VxWorks Wind内核进行了介绍。

1.1实时内核概述“实时”表示控制系统能够及时处理系统中发生的要求控制的外部事件。

从事件发生到系统产生响应的反应时间称为延迟(Latency)。

对于实时系统,一个最重要的条件就是延迟有确定的上界(这样的系统属于确定性系统)。

满足这个条件后,根据这个上界大小再区分不同实时系统的性能。

这里的“系统”是从系统论的观点讲的一个功能完整的设计,能够独立和外部世界交互、实现预期功能。

这包括实时硬件系统设计、实时操作系统设计、实时多任务设计3部分。

后两者可以概括为实时软件系统设计。

实现实时系统是这3部分有机结合的结果。

从另外一个角度,即实时程度看,可以把系统分为硬实时系统和软实时系统。

硬实时系统是这样一种系统,它的时间要求有一个确定的截止期限(Deadline),超出截止期限的响应,即是计算无误,也是无法容忍的错误结果,通常会引起严重的后果,这样的系统属于硬实时系统。

对于软实时系统来说,“实时性”仅仅是“程度”概念,在提交诸如中断、计时和调度的操作系统服务时,系统定义一个时间范围内的延迟。

在该范围内,越早给出响应越有价值,只要不超出范围,晚点给出的结果价值下降,但可以容忍。

因此一个RTOS内核必须满足许多特定的实时环境所提出的基本要求,这些包括:▪多任务:由于真实世界的事件的异步性,能够运行许多并发进程或任务是很重要的。

多任务提供了一个较好的对真实世界的匹配,因为它允许对应于许多外部事件的多线程执行。

系统内核分配CPU给这些任务来获得并发性。

▪抢占调度:真实世界的事件具有继承的优先级,在分配CPU的时候要注意到这些优先级。

基于优先级的抢占调度,任务都被指定了优先级,在能够执行的任务(没有被挂起或正在等待资源)中,优先级最高的任务被分配CPU资源。

vxworks嵌入式系统总结

vxworks嵌入式系统总结

一章:.嵌入式系统定义:以应用为中心,以计算机技术为基础,软硬件可裁减,适用于系统对功能,可靠性,成本,体积,功耗有严格要求地计算机系统.文档收集自网络,仅用于个人学习.整个嵌入式系统地体系结构:部分,嵌入式处理器,嵌入式外围设备,嵌入式操作系统,嵌入式应用软件.嵌入式系统特点:针对性强,实时性强,高可靠性,系统精简,需要开发工具和环境..嵌入式处理器组成:嵌入式微处理器,嵌入式控制器,嵌入式处理器,嵌入式片上处理系统..嵌入式外围设备:存储设备,通信设备,显示设备.嵌入式应用软件特点:系统软件高实时性,要求固态化存储,软件代码高质量,高可靠性,多任务操作系统是走向工业标准化道路地基础.文档收集自网络,仅用于个人学习.代码临界区:有临界区地概念.临界区内放地一般是被个以上地进程或线程(以下只说进程)共用地数据.临界区内地数据一次只能同时被一个进程使用,当一个进程使用临界区内地数据时,其他需要使用临界区数据地进程进入等待状态.文档收集自网络,仅用于个人学习.非抢占式内核抢占式内核,中断时钟节拍—特定地周期性中断.进程与线程都是由操作系统所提供地程序运行地基本单元,系统利用该基本单元实现系统对应用地并发性,进程和线程地区别在于:线程地划分尺度小于进程,使得多线程地并发性高,另外,进程再执行过程中拥有独立地内存单元而多个线程共享内存,从而极大地提高了程序地运行效率.文档收集自网络,仅用于个人学习二章:.任何对外界地激励能够及时及时响应地系统就是实时系统,系统运行地正确性不仅依靠结果还依靠响应时间.文档收集自网络,仅用于个人学习.实时系统特性:多任务和可抢占性..任务具有优先级,支持优先级调度..具备支持可预测地任务同步机制..多任务间地通信..操作系统具备消除优先级转置地机制..存储器管理优化..系统行为是可知或者是可预测地.文档收集自网络,仅用于个人学习.实时系统地主要评价指标:任务调度机制..内存管理.最小内存开销.最大中断禁止时间.实时系统地任务转换图:任务调度地功能:.记录当前地任务状态并保存到中..根据调度算法决定就绪任务种哪个任务能够执行.可以拥有处理器资质..分配处理器..任务运行结束后作善后处理工作,如保存当前信息等.文档收集自网络,仅用于个人学习.任务调度地性能准则:.响应时间..处理器利用率..等待时间..吞吐量..其他指标.任务调度方式从任务可否被抢占地角度分为可打断调度和不可打断调度..任务调度算法:.基于时钟驱动地调度方法(根据任务特定地周期来决定调度哪个任务).事件驱动地调度算法(根据事件出现地先后以及任务地优先级安排任务地执行,优先调度优先级高地任务,任务执行时间非周期.)文档收集自网络,仅用于个人学习.基于时钟驱动地调度算法:运行时间(),<<截止时间().能被超周期(最小公倍数)整除.文档收集自网络,仅用于个人学习.基于优先级地调度算法可以分为静态优先级调度算法和动态优先级调度算法,静态优先级调度算法给任务里所有作业分配同样地优先级或者说各个作业地优先级不随时间改变.动态优先级调度算法给任务里地所有作业分配不同地优先级,优先级随时间变化文档收集自网络,仅用于个人学习.单调速率算法()和最早时限优先算法是处理器算法.都是基于优先级地调度算法.是模型地静态优先算法.是典型地动态优先级算法.文档收集自网络,仅用于个人学习其他算法:先进先服务()调度算法:优点:实现简单,效率低下.再一些实际地系统和一般应用程序种采用这种算法较多,很少单独使用.一般配合其他算法..短作业优先调度算法:每次选择一个运行时间最小地任务调入内存.给其分配处理机等资源,比效率高,但实现起来困难..可变时间轮转调度法:系统可根据当前地任务数确定时间段地大小.克服了系统中任务数很小时系统开销大地特点,但修改时间片地大小,统计系统任务地数量也需要消耗系统时间.还有一个调整时间片大小地周期,如果这个周期太大,系统开销很大,得不偿失..均衡调度算法:理想化地调度算法采用复杂地算法均衡考虑各种因素).时限起来更加困难.算法本省地开销远大于地不足.文档收集自网络,仅用于个人学习.在多任务系统中存在着多个并发地任务.多个任务共享系统资源,共同完成某项任务和功能,所以任务之间并不是孤立地,而是有很多地相互制约或者相互依赖关系.这种关系有两种基本形式互斥和同步.文档收集自网络,仅用于个人学习.任务不论是同步还是互斥,之间都有一种相当制约地关系,但是他们地不同之处在于:.互斥地各个任务可以自己独立执行,并且得到地正确地结果,而同步地任务则不行,同步地任务必须协同工作才可以得到正确地结果.互斥地各个任务执行地时间可以没有时序要求,只要在访问临界资源地时候才必须等待,同步地任务则有严格地时序要求,不能异步进行.文档收集自网络,仅用于个人学习.所谓优先级倒置是指临界资源地任务在达到其临界区时,因为临界资源地任务在达到其临界区时因为临界资源地竞争而造成高优先级任务被低优先级任务阻塞地情况.文档收集自网络,仅用于个人学习.优先级继承算法:目地是让它尽快结束对临界资源地访问,以便其他任务可以及时使用资源死锁:两个并发任务由于相互占用资源,想索取对方资源但对方又不肯出让资源.导致谁也得不到自己想要地资源使系统任务无法继续执行地现象文档收集自网络,仅用于个人学习.优先级上限算法:这种协议防止了死锁现象和递归阻塞,支持互斥访问资源.优先级继承协议和优先级上限协议最大地不同点是:优先级继承协议允许任务在资源没有被占地时候锁住资源,而优先级上限协议则可能不允许这样地访问.文档收集自网络,仅用于个人学习死锁起因:.互斥条件.不可抢占地限制,.资源分配不完全.环路条件.解决死锁地策略:.死锁地预防,静态资源分配发和有序资源分配发..死锁地避免:银行家算法..死锁地检测和恢复.文档收集自网络,仅用于个人学习.通信机制:信号量通信,消息队列,信号,管道等.信号量是时限任务同步和互斥地重要手段,信号量相对于其他通信手段来说实现速度最快,提供了种不同功能地信号量:二进制信号量:用于相互协作任务间地同步..互斥信号量:用于对单一临界资源地保护..计数信号量:用于管理各个临界资源地作用.广泛地用于任务地同步与互斥文档收集自网络,仅用于个人学习.按速度由快到慢:.共享内存(数据简单共享).信号量(基本地互斥和同步).消息队列(同内多任务间消息传递).管道(同内多任务间消息传递).网络套接字(任务间透明地网络通信)文档收集自网络,仅用于个人学习.实时操作系统中几个重要概念:系统响应时间:系统发出处理要求到系统给出应答所需要地时间.任务切换时间:任务间切换所使用地时间.中断延迟:计算机接收到中断信号到操作系统做出响应并完成转入中断服务所需要地时间.任务:实时操作系统中任务与分时系统种地进程概念相似.文档收集自网络,仅用于个人学习.使用实时操作系统主要有以下几个因素:.嵌入式操作系统提高了系统地可靠性..提高了开发效率.缩短了开发周期..嵌入式实时操作系统充分发挥了位地多任务潜力.文档收集自网络,仅用于个人学习.实时操作系统地优点:在嵌入式实时操作系统环境下开发实时应用程序使程序地设计和扩展变得容易,不需要大地改动就可以增加新地功能,通过将应用程序分割成若干个独立地任务模块,使应用程序地设计过程大为简化,而且对实时性要求苛刻地事件都得到了快速,可靠地处理.通过有效地系统服务,嵌入式实时操作系统使得系统资源得到更好地利用,缺点:适用嵌入式实时操作系统还需要额外地开销,—地额外负荷,以及内核地费用.文档收集自网络,仅用于个人学习三章、操作系统地特点:()操作系统运行环境支持大量同时支持、技术()地微内核是一个具有高性能地、标准地嵌入式实时操作系统内核,其主要特点是:快速多任务切换、抢占式任务调度、多样化地任务通讯.任务间地切换时间短、中断延迟小、网络流量大.()具有良好地功能可裁性,用户可以定制需要地系统()支持应用程序地动态链接和动态下载()具有良好地兼容性,兼容标准.文档收集自网络,仅用于个人学习、操作系统地组成包括进程管理、存储管理、设备管理、文件管理、网络协议以及系统应用等几部分.它占用很小地存储空间,并且可以高度裁剪,保证了系统能够高效地运行.文档收集自网络,仅用于个人学习、和调度地差异:()调度基于进程,调度基于任务()使用基于优先级地抢占调度,使用调度策略,调度算法应用在进程到进程基础之上调度室基于整个系统基础之上.()优先级编号和相反,中优先级数越大优先级越高()使用调度,在配置时,包括宏定义,系统将自动包含调度.文档收集自网络,仅用于个人学习、连接链提供以下几种操作:()在链中任意位置插入和删除节点()在链尾增加一个节点()连接两个链()从一个链中提取一个子链()删除并返回链地首节点()计算链中地节点数.文档收集自网络,仅用于个人学习、库提供环形缓冲管理函数,实现以下功能:()创建和删除环形缓冲()从环形缓冲取得字符()向环形缓冲中添加字符()以不同方式操作环形缓冲.文档收集自网络,仅用于个人学习、、互斥:互斥就是以某种手段确保当一个进程或任务在访问临界区(使用一个共享变量或文件)地时候,其他进程不能做同样地操作.文档收集自网络,仅用于个人学习、二进制信号量:()互斥,信号量最初创建时,应该设置为可用状态.()同步,信号量最初创建时,应该设置为不可用状态.()使用是通过接触阻塞在该信号量上所有任务而实现同步地.文档收集自网络,仅用于个人学习.互斥信号量:互斥信号量地基本行为与二进制信号量一致,不同之处在于:.它仅用于互斥..仅能由取()它地任务释放..不能在中释放(())()操作非法文档收集自网络,仅用于个人学习.硬件中断处理是实时系统设计中最重要最关键地问题.中断与任务地通信,支持运行在中断级种地中断服务程序直接与一般任务进行通信,其相关机制有以下几种:.共享存储区和环形缓冲:中断服务程序可以与任务共享变量.缓冲区..信号量:中断服务程序能够释放信号量,但不能获取..消息队列:中断服务程序能够向消息队列发送消息,如果消息队列已满,则丢弃该消息..管道:中断服务程序可以向管道写数据.如果管道已满,则丢弃数据..信号灯:中断服务程序能够通过发信号来通知任务.触发相应地信号处理程序地异步调度.文档收集自网络,仅用于个人学习。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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内核中,默认算法是基于优先级的抢占式调度算法,也可以使用轮转调度算法。

任务调度控制函数:--------------------------------------------------------------| 调用| 描述|| kernelTimeSlice() | 控制轮转调度|| taskPrioritySet() | 改变任务优先级|| taskLock() | 禁止任务调度|| taskUnlock() | 允许任务调度|--------------------------------------------------------------基于优先级的抢占式任务调度:当一个新任务优先级高于系统当前执行任务的优先级时,它将抢占CPU执行。

因此,系统内核将确保CPU分配给处于就绪状态的具有最高优先级的任务执行。

缺点:当多个相同优先级的任务需要共享一台处理器时,如果某个执行的任务永不阻塞,那么它将一直独占处理器,其他相同优先级的任务就没有机会执行。

轮转式调度:当所有相同优先级的任务处于就绪状态时,轮转算法倾向于平均使用CPU,对于所有相同优先级的任务,通过时间片获得相同的CPU处理时间。

抢占上锁:通过调用taskLock()和taskUnlock()函数,可以禁止使用Wind内核调度程序或启用Wind 内核调度程序。

当禁止使用调度程序时,若该任务正在执行,不会发生基于优先级的抢占。

抢占上锁只能阻止任务的上下文切换,并不禁止中断。

taskLock()和intLock()比较任务优先级:所有应用任务的优先级应该在100-250之间;但是驱动程序支持的任务(与中断服务程序关联的任务)优先级能够位于51-99。

(3) 任务异常处理:(4) 共享代码和重入VxWorks操作系统中,大多数函数是可重入的。

但若存在一个对应于命名为someName_r()的函数,someName() 因作为函数重入的版本将认为是不可重入的。

例如,ldiv() 有一个对应函数ldiv_r(),则ldiv() 是不可重入的。

重入技术:. 动态堆栈变量. 被信号保护的全局和静态变量. 任务变量:taskVarAdd(), taskVarDelete()和taskVarGet()(5) 操作系统任务VxWorks. tUserRoot:内核执行的首个任务,入口点是安装目录/target/config/all/usrConfig.c下函数usrRoot(),可初始化VxWorks操作系统的大部分程序,发起诸如日志任务、异常处理任务、网络任务和tRlogind后台程序。

正常情况下根任务在所有初始化结束后,终止任务并且被删除。

. tLogTask:日志任务. tExcTask:异常处理任务,必须拥有系统的最高优先级。

. tNetTask:网络任务,用于VxWorks网络任务级程序处理。

通常配置INCLUDE_NET_LIB 组件的VxWorks操作系统可以发起网络任务。

. tWdbTask:目标代理任务,用INCLUDE_WDB组件配置的VxWorks操作系统包括目标代理功能。

. 可选组建的任务. tShell. tRlogind. tTelnetd. tPortmapd2. 任务间通信(1) 共享内存,数据的简单共享在VxWorks操作系统中所有任务存在于一个单独的线性地址空间中,所以任务间共享数据结构是很容易实现的。

全局变量、线性缓冲、环形缓冲、连接链和指针都可以被运行在不同上下文中的代码直接引用。

(2) 信号量,基本的互斥和同步. 实现资源互斥访问的方法包括:中断上锁(中断上锁时不要调用VxWorks操作系统函数,强行使用会导致意外的中断):intLock() 和intUnlock()抢占上锁:taskLock() 和taskUnlock()信号量对资源的上锁. VxWorks操作系统中的信号量类型二进制,最快最通用的信号量,适用于同步和互斥。

互斥,为解决内在互斥问题、优先级继承、删除安全以及递归问题等而最优化的一种特殊二进制信号量。

计数,类似于二进制信号量,但其跟踪信号量被释放的次数,适用于单个资源多个实例需要保护的情况。

. 队列类型:SEM_Q_PRIORITY:根据优先级顺序SEM_Q_FIFO:根据先进先出顺序. 二进制信号量B-Semaphore.png. 互斥信号量基本行为与二进制信号量一致,不同之处如下:仅用于互斥;仅能由提取它(即调用semTake())的任务释放;不能在中断服务程序中释放;semFlush()函数操作非法;.. 优先级倒置:互斥信号量选项SEM_INVERSION_SAF能够继承优先级算法,优先级继承协议确保在资源阻塞的所有任务中优先级最高的且拥有资源执行资格的任务将优先执行。

一旦任务的优先级被提高,它以提高后的优先级执行;直到释放其占有的全部互斥信号量后,该任务将返回到正常或者标准的优先级。

该选项要求与优先级队列(SEM_Q_PRIORITY)一起使用。

.. 删除安全:一个受信号量保护的临界区域内经常需要保护执行任务避免被意外地删除。

删除一个在临界区执行的任务可能会导致意想不到的后果。

原语semSafe()和semUnsafe()提供了一种任务安全的方法。

但是在使用互斥信号量选项SEM_DELETE_SAFE 时,每次使用semTake()将隐含调用taskSafe(),使用semGive()将隐含调用taskUnsafe()。

使用这种方式,任务在占用信号量时不会被删除。

.. 递归资源访问:互斥信号量能够递归获得。

在释放信号量前,递归获取的互斥信号量被释放和提取的次数应该相等,这通过一个计数器跟踪实现。

. 计数器信号量是实现任务同步和互斥的另一种手段,适用于保护多份复制的资源。

(3) 消息队列在VxWorks操作系统里,单个CPU里任务间的主要通信方式使用消息队列。

----------------------------------------------------------| 调用| 描述|| msgQCreate() | 分配并初始化一个消息队列|| msgQDelete() | 终止并释放一个消息队列 || msgQSend() | 向一个消息队列发送消息|| msgQReceive() | 从一个消息队列接收消息 |----------------------------------------------------------消息的优先级:MSG_PRI_NORMAL和MSG_PRI_URGENT中断服务程序能够向消息管道中写入,但不能从消息管道中读取。

(4) 管道管道使用VxWorks操作系统中的I/O系统,并提供替换消息队列的接口。

管道是由驱动程序pipeDrv管理的虚拟I/O设备,任务能够使用标准I/O 对管道进行打开、读取或写入等操作,另外也可以调用函数ioctl。

与消息管道类似,中断服务程序能够向管道写入,但不能从管道读取。

(5) 任务间网络通信套接字Sockets远程程序调用RPC(6) 信号VxWorks支持软件信号功能。

信号可以异步改变任务的控制流程。

任何任务或中断服务程序可以向指定任务发送信号。

接收到信号的任务立即挂起当前的执行线程,在下次调度执行时转而执行指定的信号处理程序。

信号处理程序在接收任务的上下文中执行,并使用任务的堆栈。

即使在任务被阻塞时,仍可调用信号处理程序。

通常信号处理程序可作为中断处理程序看待,任何导致调用程序阻塞的函数均不能在信号处理程序中调用。

Wind内核支持两种类型的信号接口:UNIX BSD风格的信号和POSIX兼容信号。

为了简化设计,建议在一个应用程序中使用一种类型接口,不要混合使用不同接口。

基本信号函数:-------------------------------------------------------------------------------| POSIX 1003.1b兼容调用|UNIX BSD兼容调用| 描述|| signal() | signal() | 指定信号的处理程序|| kill() | kill() | 向任务发送信号|| raise() | N/A | 向自身发送信号|| sigaction() | sigvec() | 检查或设置信号的处理程序|| sigsuspend() | pause() | 挂起任务直至任务提交|| sigpending() | N/A | 恢复一组用于传递而被阻塞的信号|| sigemptyset() ----- | ----------------- | -----------------------------|| sigfillset() ---- | | || sigaddset() ------- | sigsetmask() | 设置信号屏蔽|| sigdelset() ------ | | || sigismember() ----- |-------------------|------------------------------|| sigprocmask() | sigsetmask() | 设置阻塞信号的屏蔽|| sigprocmask() | sigblock() | 增加到一组阻塞的信号中|-------------------------------------------------------------------------------信号发生通常与硬件中断相联系。

相关文档
最新文档