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
最优秀的特点:可靠性和实时性 领域:通信、军事、航空、航天
F-16、FA-18 战斗机、B-2 隐形轰炸机、爱国者导弹、火星 探测器
目前销售解禁
占有率排名第一 两套系统
VxWorks操作系统 Workbench开发环境
旧版:Tornado开发环境 Workbench版基于eclipse
链接以后是浮动的,只在装载时才与绝对物理地址 相对应
静态
VxWorks成品阶段是采用静态链接的
15
成品时的IMAGE
ROM-based image
BSP初始化时把image完
ROM-resident image
BSP初始化时把image中 的 data段 复制 到 RAM中, code在ROM中运行
VxWorks_rom
ROM 自动RAM 运行的VxWorks映像,不需要BootRom辅 助
VxWorks_romResident
ROM启动ROM运行的VxWorks映像,不需要BootRom辅 助
包含引导代码,在重启时清空RAM,引导代码只将data段拷 贝到RAM 中的RAM_LOW_ADRS处
图形显示、文件系统以及一些设备驱动均可被裁减
22
RTOS内核组成:任务的管理与调度、任务的同步与 通信、动态内存的管理、软时钟的管理、I/O管理
23
实时性
系统本身的开销很小 进程调度、进程间通信、中断处理等系统公用
程序精练而有效,造成的延迟很短 采用优先级抢占(Preemptive Priority
要全部拷贝到ram中,并必须要进行解压缩的工作。而这 些工作基本上都是在bootInit.c中进行的。
10
VxWorks类型映像
系统的主映像,是系统最终要运行的映像

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基础
板支持包(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)PPT课件

第三章vxWorks操作系统基本概念(1)PPT课件

2020/8/20
11
VxWorks操作系统
Memory Management
Device Support
Scheduling & System Clock
Facilities
Synchronization & Intertask Communication
File Systems
Mutual Exclusion
✓ WindSh
交互访问
✓ CrossWind
源代码级调试器
✓ Browser
显示系统信息
✓ Project Facility 配置操作系统或应用的工程管理
✓ WindView
多任务应用软件示波器
✓ Simulator 主机端VxWorks模拟器
用Tcl自定义的工具: ✓ 增加新功能 ✓ 定制用户接口 ✓ 目标驻留工具
WTX = Wind River Tool eXchange
WDB = Wind DeBug
2020/8/20
15
Tornado和VxWorks目录描述
2020/8/20
16
Tornado和VxWorks目录描述(继续)
2020/8/20
17
Tornado
3.1 Tornado和VxWorks简介
Tornado和VxWorks描述 Tornado和VxWorks相互关系 Tornado和VxWorks目录描述
2020/8/20
4
Tornado是什么?
Tornado是开发实时嵌入式应用的集成开发环境. Tornado的主要组件: VxWorks实时操作系统运行库(RTOS) VxWorks开发工具(辅助测试和调试和计时) 网络协议栈支持

VxWorks之认识(转)

VxWorks之认识(转)

VxWorks之认识(转)Tornado是WindRiver公司开发的用于嵌入式开发的一组产品,它包括32位实时操作系统VxWorks,集成开发环境(IDE,包括编译器等)。

下面是我阅读完VxWorks相关文档后的一些个人认识。

一.VxWorks操作系统VxWorks时实时多任务的嵌入式操作系统,它主要包括任务调度、I/O功能、文件系统、中断管理、内存管理、网络功能、内存管理、BSP(系统启动模块)等。

它的多任务的实现是由中断驱动的,即在每个系统时钟中断中,实现任务的调度。

VxWorks中的任务有优先级的概念。

与其它嵌入式操作系统相比,它有如下优点:1.任务之间的切换快,任务间通信手段多样;2.中断响应的延时短;3.内存管理安全:VxWorks把内存分成很多区域,包括内核区、用户区,并且采用虚拟内存管理的方法,这样大大提高了系统的安全性,并且增加了堆栈溢出的判断;4. I/O功能丰富,硬件驱动全面;5.文件系统强大;6.网络功能全面;7.对任务的实时监控;8. BSP(启动模块)的支持;9.多CPU的支持;10.系统各模块是单独的库,可以根据需要加载。

下面就详细讲述各部分内容。

1.多任务功能:VxWorks的任务有优先级的概念,其任务调度也是基于优先级考虑的,是抢占式的,VxWorks的任务有256个等级,0—255,数目越小表示优先级越高。

高优先级的任务可以打断低优先级的任务而抢先执行,只有在高优先级的任务执行完后,低优先级的任务才可以执行。

其调度算法有两种:完全抢占式的和循环分配式的。

完全抢占式的是除了高优先级任务可以打断低优先级任务外,在相同优先级的任务之间,不可以相互打断,并且同优先级任务不是同时执行的,只有等该任务执行完后,与其相同优先级的任务才可以执行;循环分配式除了具有抢占功能之外,相同优先级的任务是可以同时执行的,即系统时间片是在它们之间平均分配的,这样,相同优先级的任务可以同时执行。

VxWorks 5.5 学习笔记

VxWorks 5.5 学习笔记

VxWorks 5.5开发指南学习笔记第一章VxWorks概述1.绪论VxWorks是一种嵌入式的实时操作系统,所谓嵌入式操作系统就是我们自己设计开发一块可以实现某种功能的板子,一般的功能板上都有一个cpu,嵌入式实施操作系统就是运行于这个cpu之上,使我们能够在板子上作相应得软件开发实现板子功能。

VxWorks支持32位的CPU,包括Intel公司的x86、Motorola公司的68k 和PowerPC、MIPS、ARM、Intel公司的i960、Hitachi公司的SH。

我们设计的这块板子通常没有软件的自开发能力,所以我们需要一台通用机来辅助开发,这台通用机可以是PC或工作站,我们称辅助我们软件开发的通用机为宿主机(Host),用户自己开发的板子为目标机(Target)。

宿主机上要有一个集成开发环境(IDE)来辅助我们的软件开发,这套集成开发环境可以运行在Windows95/NT 或 UNIX下,包括交叉编译器(Cross Compiler)和交叉调试器(Cross Debugger),所谓交叉编译器就是在宿主机上编译生成可以在目标机上运行的代码IMAGE,交叉调试器就是通过宿主机和目标机之间的某种耦合方式实现前后台调试。

我们称宿主机上的这套集成开发环境为Tornado,编译生成的目标机上的可执行代码IMAGE为VxWorks。

在系统安装的时候,集成调试环境和VxWorks的原材料(一些obj文件)都安装到宿主机上,编译生成的在目标机上运行的IMAGE内包含操作系统。

下面我们分别来介绍这两部分内容。

1.1IMAGE of VxWorks1.IMAGE的结构IMAGE可以分为三个层次四个部分,最底层是BSP,中间层是VxWorks其中包含WindKernel 和components两部分,最高层是应用实现层app。

1)BSPBSP是系统用来管理外设的部分,由两部分组成:初始化、驱动程序。

所谓初始化是指从系统上电复位开始直到wind kernel和usrRoot根任务启动的这段时间系统的执行过程。

实时VxWorks

实时VxWorks

Vxworks 操作系统内核
VxWorks 内核(wind)的基本功能可以分为几类: 任务管理; 事件和异步信号服务; 信号量服务; 消息队列服务; 内存管理; 中断服务程序; 时钟管理和定时器服务; 出错处理。
任务概念
任务是代码运行的一个映象,从系统的角 度看,任务是竞争系统资源的最小运行单元。 任务可以使用或等待CPU、I/O设备及内存空 间等系统资源,并独立于其它任务,与它们 一起并发运行(宏观上如此),VxWorks内 核使任务能快速共享系统的绝大部分资源, 同时有独立的上下文来控制个别线程的执行。
Vxworks特点
可裁减性 用户在使用操作系统时,并不是操作系统中的每 一个部件都要用到。例如图形显示、文件系统以及 一些设备驱动在某些嵌入系统中往往并不使用。 VxWorks 由一个体积很小的内核及一些可以根据 需要进行定制的系统模块组成。VxWorks 内核最小 为 8kB,即便加上其它必要模块,所占用的空间也 很小,且不失其实时、多任务的系统特征。由于它 的高度灵活性,用户可以很容易地对这一操作系统 进行定制或作适当开发,来满足自己的实际应用需 要。
即任务运行时,不允许别的任务抢先。完成一个任务后才能完成下 一个
实时进程调度算法(二)
Rate Monatomic/Pacing算法
此算法是基于静态优先级调度协议的方法。此算法给系统中每个任务设置一 个静态的优先级。这个优先级的设定是在计算任务的周期性和任务需要满足 的deadline的时间的长短的基础上完成的。周期越短,deadline越紧迫,优 先级越高。
Deadline Driven算法
Deadline Driven算法提供动态的优先级。因为此算法根据任务满足deadline 的紧迫性来修改任务的优先级,以保证最紧迫的任务能够及时完成。

VxWorks介绍及编程

VxWorks介绍及编程

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Vxworks简介

Vxworks简介

Vxworks简介VxWorks 是美国Wind River System 公司(以下简称风河公司,即WRS 公司)推出的一个实时操作系统。

Tornado 是WRS 公司推出的一套实时操作系统开发环境,类似MicrosoftVisual C,但是提供了更丰富的调试、仿真环境和工具外文名VxWorks 开发时间1983年公司Wind River System(风河公司)产地美国产品类型实时操作系统开发环境Tornado1、简介VxWorks 操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。

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

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

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

2、组成VxWorks操作系统有以下部件组成:内核多任务调度(采用基于优先级抢占方式,同时支持同优先级任务间的分时间片调度)任务间的同步进程间通信机制中断处理定时器和内存管理机制I/O 系统VxWorks 提供了一个快速灵活的与ANSI C 兼容的I/O 系统,包括UNIX 标准的Basic I/O (creat(),remove(),open(),close(),read(),write(),and ioctl().),Buffer I/O (fopen(),fclose(),fread(),fwrite(),getc(),putc()) 以及POSIX 标准的异步I/O。

VxWorks 包括以下驱动程序:网络驱动、管道驱动、RAM盘驱动、SCSI驱动、键盘驱动、显示驱动、磁盘驱动、并口驱动等。

VxWorks简介

VxWorks简介

Vxworks的介绍发表时间:2005-12-19 发布人:administrator 阅读次数:1087一.嵌入式操作系统VxWorks简介VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

vxworks

vxworks

Vxworks操作系统(概要)一嵌入式操作系统概述(5 Min)1.嵌入式操作系统的形成●无操作系统的嵌入程序阶段这一阶段的嵌入式系统是以可编程控制器的形式、以单芯片为核心的系统,同时具有与一些监测、伺服、指示设备相配合的功能。

这种系统大部分应用于一些专业性极强的工业控制系统中,一般没有明显的被称为操作系统(RTOS)的支持,而是通过汇编语言编程对系统进行直接控制,运行结束后清除内存。

这一阶段系统的主要特点是系统结构和功能都相对单一,针对性强,但无操作系统支持,几乎没有用户接口。

●简单监控式的专用操作系统阶段这一阶段的嵌入式系统主要以嵌入式处理器为基础、以简单监控式操作系统为核心。

系统的特点是处理器种类繁多,通用性比较弱;系统开销小,效率高;系统一般配备系统仿真器,具有一定的兼容性和扩展性;操作系统的用户界面不够友好,其主要用来控制系统负载以及监控应用程序运行。

●通用的嵌入式操作系统阶段以通用型嵌入式实时操作系统(RTOS)为标志的嵌入式系统。

如VxWorks、pSOS、OS-9、Windows CE就是这一阶段的典型代表。

这一阶段系统的特点是能运行在各种不同类型强大的微处理器上;具有强大的通用型操作系统的功能,如具备了文件和目录管理、多任务、设备支持、网络支持、图形窗口以及用户界面等功能;具有大量的丰富的应用程序接口(API)和嵌入式应用软件丰富。

2.嵌入式操作系统特点概述●可移植性●可裁减性●可靠性●实时性●体积小、占用资源少3.现有的嵌入式操作系统简介●对几种主流操作系统进行简要介绍✧Windows Embedded族◆Windows Embedded操作系统产品家族由2种操作系统组成:WinCE、WinXP Embedded◆总体来看,Windows CE .NET是一个可定制的实时操作系统,能够用来快速构建下一代的智能、小巧的互联设备。

WindowsCE .NET可以运行在多种中央处理器(CPU)上,适用于各种设备类型:移动手持设备、瘦客户机、IP电话以及自动化工业控制设备。

VxWorks操作系统概述

VxWorks操作系统概述

VxWorks操作系统概述(1) 无忧电子开发网VxWorks操作系统概述(1)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简介

VxWork BSP 和启动过程开发BSP 主要的两点:系统image 的生成,image 的种类,image 的download 下载过程,系统的启动顺序和过程,调试环境的配置及远端调试的方式和方法,相应BSP 设置文件的修改(网络,串口..),BSP 各文件的组成和作用.要对系统底层驱动清楚,也就是对CPU 及相关的硬件有所了解.主要是32微处理器(上电启动过程, download image 的方式方法,读写ROM,地址空间分配,MMU,寄存器,中断定义,..).参照硬件资料,多读一些源码会有所帮助.Tornado 2 开发调试环境协议框图 主机开发(Host Development System) 目标机(Target System)Tornado 工具WTX 协议通信<==========> Editor Project S h e l lDebug g e r B r o w s erWindviTargetServer|Target Agent VxWor ks Target Simulat or WDB 协议通信 <==========> Application VxWorks OS VxWorks Target (WDB )Agentew两个主要两个协议WTX协议(Wind River Tool eXchange): 用于开发机内部Tornado工具与Target Server之间通信.WDB协议(Wind DeBug): 用于主机Target Server与目标机之间的通信.一.基本概念BSP定义:Provides VxWorks with primary interface to hardware environment.作用:在通电后,初始化硬件.支持VxWorks和硬件驱动通信.使hardware-dependent 和hardware-independent在VxWorks系统中很好的结合.主要BSP主要文件目录的组成及主要文件的作用:目录target/config/All:这个目录下的文件是所有BSP文件共享的,不是特别需要不要更改里面的任何文件. configAll.h:缺省定义了所有VxWorks的设置.如果不用缺省的设置,可在BSP目录下的config.h文件中用#define或#undef方式来更改设置.bootInit.c:在romInit.s后,完成Boot ROM的第二步初始化.程序从romInit.s中的romInit()跳到这个文件中的romStart().来执行必要的解压和ROM image的放置.bootConfig.c:完成Boot ROM image的初始化和控制.usrConfig.c: VxWorks image的初始化代码.目录target/config/comps/src:涉及系统核心的components,主要由target/config/All中usrConfig.c中函数调用目录target/config/bspname:包含系统或硬件相关的BSP文件.Makefile一些命令行控制images的生成,参见BSP设置部分及生成下载READMEBSP发布纪录,版本,总的文档config.h包括所有涉及CPU主板的设置及定义(includes,definations),参见BSP设置文件及生成下载configNet.h网络驱动的主要设置文件,主要对END驱动设置.romInit.s汇编语言文件,是VxWorks Boot ROM和ROM based image的入口,参见系统启动部分sysALib.s汇编语言文件,程序员可以把自己的汇编函数放在这个文件里,在上层调用.VxWorks image的入口点_sysInit在这个文件里,是在RAM中执行的第一个函数.sysLib.c包含一些系统相关的函数例程,提供了一个board-level的接口,VxWorks和应用程序可以以system-indepent的方式生成.这个文件还能包含目录target/config/comps/src的驱动. sysScsi.c可选文件用于Scsi设备设置和初始化.sysSerial.c可选文件用于所有的串口设置和初始化.bootrom.hexASIC文件包含VxWorks Boot ROM代码VxWorks运行在目标机上,完整的,连结后的VxWorks二进制文件.VxWorks.sym完全的,连结后带有符号表的VxWorks二进制文件VxWorks.st完全的,连结后,standalone,带有符号表的VxWorks二进制文件BSP用"make"来编译连接生成(Created),而不是用Tornado的工具.BSP和应用程序都可以在"make"或"tornade"上开发(developed)BSP被设置包括以下驱动:中断控制interrupt controller,计时器timer(sys/aux),串口UART(serial),显示屏LCD,键盘Keyboard(opt),触摸屏touch-screen(opt).前面三个是BSP的主要部分.BSP默认的download VxWorks RAM image方式是从ethernet.串口电缆需要用来和开发板(COM1)通信,通过协议WDB.VxWorks Image的种类:Loadable images.ROM-based images---compressed/uncompressed.ROM-Resident images.ROM-resident image 对一些系统内存RAM资源较少的情况下,为了节省资源,只拷贝image 中的数据部分(data segment)到内存RAM,留下程序部分(text segment)在ROM中执行。

VxWorks操作系统简介.ppt

VxWorks操作系统简介.ppt
用户可以定义一些数据用于任务间的通讯: 编写一个库,提供该数据的共享存储; 所有任务访问这些共享数据时都使用库中的例程; 可以用信号量来保证共享数据的互斥访问
通信机制——信号量
Vxworks信号量提供最快速的任务间通信机制,它主要用 于解决任务间的互斥和同步。针对不同类型的问题,有三 种信号量: 二进制信号量,使用最快、最广泛,主要用于同步和互 斥 互斥信号量,主要用于优先级继承、安全删除和回溯 计数器
VxWorks系统简介
郭思 SX1401188
VxWorks系统简介
VxWorks应用背景 VxWorks系统体系结构 任务管理 通信机制 内存管理
VxWorks应用背景
VxWorks是美国Wind River System公司于1983年设计 开发的一种嵌入式实时操作系统(RTOS)。
BSP(Board Support Package)
BSP通常是指针对具体的硬件平台,用户所编 的启动代码和部分设备驱动程序的集合。 板级支持包对各种板子的硬件功能操作提 供了统一的软件接口,是保证VxWorks操作系 统可移植性的关键。它包括硬件初始化、中断 的产生和处理、硬件时钟和计时器管理、局域 和总线内存地址映射、内存分配等等。
Vxworks支持各种任务间的通信机制,提供多种多样 的任务间通信方式,主要有:
共享内存,主要是数据的共享; 信号量,用于基本的互斥和任务同步; 消息队列和管道,单CPU的消息传递; 二进制信号,用于异常处理; Socket和远程过程调用,用于网络间任务消息传
递。
通信机制——共享内存
任务间通信最简单的方法是采用共享存储区,也即相关的 各个任务分享属于它们的地址空间的同一内存区域。因为 所有的任务都存在于单一的线性地址空间,任务间共享数 据。全局变量、线性队列、环形队列、链表、指针都可被 运行在不同的上下文的代码所指向。

《vxWorks讲座》PPT课件

《vxWorks讲座》PPT课件
• 对于实时系统来说最重要的要求就是实时操作系统必须有满足在一个 事先定义好的时间限制中对外部或内部的事件进行响应和处理的能力
• 此外作为实时操作系统还需要有效的中断处理能力来处理异步事件和 高效的I/O能力来处理有严格时间限制的数据收发应用
实时系统分类
• 根据不同的分类方法可以分为几种。
– 方法一是分为周期性的和非周期性的(periodic和aperiodic) – 方法二是分为硬实时和软实时(hard real_time和soft
real_time) – 专用系统和开放系统 – 集中式系统和分布式系统
实时多任务操作系统与分时多任务操作系统
• 分时操作系统,软件的执行在时间上的要求,并不严格,时间上的错 误,一般不会造成灾难性的后果。
• 实时操作系统,主要任务是对事件进行实时的处理,虽然事件可能在 无法预知的时刻到达,但是软件上必须在事件发生时能够在严格的时 限内作出响应(系统响应时间),即使是在尖峰负荷下,也应如此, 系统时间响应的超时就意味着致命的失败。另外,实时操作系统的重 要特点是具有系统的可确定性,即系统能对运行情况的最好和最坏等 的情况能做出精确的估计。
• 虚拟内存
– 但必须给实时任务提供方法,以便将实时任务“锁”进内存,也 就是系统在管理虚拟内存时,不将“锁”住的内存块换出物理内 存。
嵌入式系统和实时系统
• 嵌入式系统经常被误解为就是实时性系统。其实,多数嵌 入式系统并不需要实时性
• Linux是嵌入式操作系统,并非实时操作系统。 • Vxwork、pSOS、Neculeus和Windowss CE 是嵌入式实时操
• VxWorks动态链接功能很容易实现代码共享。 • 共享代码必须是可重入的。 • VxWorks的I/O和驱动程序是可重入的。但是要求应用小心

7 VxWorks操作系统

7 VxWorks操作系统

任务名称. 任务优先级, 0-255. 任务的创建方式 任务堆栈的大小 任务入口 任务的参数
程序正确执行时会返回任务ID
任务 ID

通常在任务创建时由内核指定 该ID号在整个系统中是唯一的 任务退出后该ID号可以重用 ID号0表明任务自己
相关例程 taskIdSelf() taskIdListGet() taskIdVerify()
任务状态迁移
最高优先级任务正执行 就 绪 态 延 迟 态 悬 置 态
休 眠 态
taskInit()
VxWorks任务状态迁移函数(一)
• 就绪态 • 就绪态 • 就绪态
----> 悬臵态 ----> 延迟态 ----> 休眠态
semTake()/msgQReceive()
taskDelay()
taskSuspend()
航空航天等实时性强和可靠性高的领域。
实时系统的体系结构设计
• 实时系统的体系结构必须满足
1.高运算速度 2.高速的中断处理 3.高的I/O吞吐率 4.合理的处理器和I/O设备的拓扑连接 5.高速可靠的和有时间约束的通信 6.体系结构支持的出错处理 7.体系结构支持的调度 8.体系结构支持的操作系统 9.体系结构支持的实时语言特性。 10.系统的稳定性和容错也非常重要 11.还要考虑到实时的分布式应用。
• 所有的代码运行在同一地址空间。 • 任务能快速共享系统的绝大部分资源,
同时有自己独立的上下文 • 所有的任务都运行在特权模式下
VxWorks共享代码
• • • •
VxWorks提倡单个子程序或子程序库被多个不 同的任务调用。例如printf。一个被多个任务 调用的单个拷贝称为共享代码。 VxWorks动态链接功能很容易实现代码共享。 共享代码必须是可重入的。 VxWorks的I/O和驱动程序是可重入的。但是 要求应用小心设计。对于缓冲I/O,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() | 增加到一组阻塞的信号中|-------------------------------------------------------------------------------信号发生通常与硬件中断相联系。

相关文档
最新文档