VxWorks操作系统简介
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
来自百度文库
任务状态及其跃迁
四种基本任务状态及状态迁徙
任务调度——优先级抢占式调度
任务调度策略: Wind内核采用基于优先级的抢占式 调度法作为它的缺省策略。 VxWorks共有从0到255共 256个优先级。当任务被创建时,系统根据给定值分配 优先级。用户也可通过调用taskPrioritySet()来改变优先 级。
通信机制——消息队列和管道
单处理器中任务间消息的传送采用消息队列 管道是一个虚拟的IO设备,是建立在消息队列上的,采用 标准的IO接口,能调用标准的I/O函数,进行管道打开、读 入和写入等操作。 消息队列和管道都会提供先入先出的缓冲(FIFO)以及同 步和互斥机制。 用于单个处理器中任务间的通讯,也可用于ISR与任务间的 通讯
高性能的实时操作系统核心 wind
最简内核
任务的管理与调度 8k 对外设不做假设
内核不处理外设
操作系统不假设板上是否有总线以及什么总线 不假设内存的大小及内存如何定位 不假设I/O及有多少I/O
板级支持包BSP管理外设
VxWorks:标准的单CPU版本 VxFusion:标准的多CPU版本
具有一个高性能的操作系统内核Wind(实时性好、可裁减) 友好的开发调试环境(Tornado是主机的集成开发环境) 较好的兼容性 支持多种开发和运行环境
VxWorks系统应用举例
航空航天、电信网络、工业控制、仪表仪器
VxWorks系统体系结构
板级支持包BSP(Board Support Package) 微内核wind I/O系统 文件系统 网络系统
通信机制——信号量
Vxworks信号量提供最快速的任务间通信机制,它主要用 于解决任务间的互斥和同步。针对不同类型的问题,有三 种信号量: 二进制信号量,使用最快、最广泛,主要用于同步和互 斥 互斥信号量,主要用于优先级继承、安全删除和回溯 计数器 Vxworks还提供POSIX信号量和多处理器上信号量的应用。
通信机制
Vxworks支持各种任务间的通信机制,提供多种多样 的任务间通信方式,主要有: 共享内存,主要是数据的共享; 信号量,用于基本的互斥和任务同步; 消息队列和管道,单CPU的消息传递; 二进制信号,用于异常处理; Socket和远程过程调用,用于网络间任务消息传 递。
通信机制——共享内存
VxWorks系统和网络协议的接口是靠套接字(Sockets)来 实现的
网络通信机制
NFS Tornado tgtsvr rlogin telnet rsh
Network Driver ftp
RPC
zbuf zbuf API API TCP IP
Sockets
UDP
Ethernet
Shared Memory
高 优 t4 先 级 低 t1 t2 t3 时 注: t1 t2 间 t2 t3 时间片
表示抢占, 表示任务完成。
任务调度——禁止抢占
Wind内核可通过调用taskLock()和taskUnlock()来使调 度器起作用和失效。当一个任务调用taskLock()使调度器 失效,任务运行时没有基于优先级的抢占发生。然而,如 果任务被阻塞或是悬置时,调度器从就绪队列中取出最高 优先级的任务运行。当设置抢占禁止的任务解除阻塞,再 次开始运行时,抢占又被禁止。 这种抢占禁止防止任务的切换,但对中断处理不起作用。
高 优 先 级 低 t1 时 注: 表示抢占 间 表示任务完成 t1 t2 t3 t2
任务调度——时间片轮转调度
基于优先级抢占调度可以扩充时间片轮转调度
轮转调度法分配给处于就绪态的每个同优先级的任务一个相同的执行 时间片。一个任务用完时间片之后,就进行任务切换,停止执行当前 运行的任务,将它放入队列尾部,并开始执行就绪队列中得下一个任 务。时间片的长度可以调用KernelTimeSlice()来指定。
VxWorks任务管理
从系统的角度看,任务是竞争系统资源的最小运行单元。 VxWorks任务管理主要包括:
任务状态及其跃迁 任务调度 任务结构 VxWorks实时内核Wind提供了基本的多任务环境,系统 内核根据某一调度策略让它们交替运行。 系统调度器使用任务控制块的数据结构(简记为TCB)来 管理任务调度功能。
I/O与文件系统
VxWorks 中,I/O系统分为字符I/O和块I/O,文件 系统是一种块I/O。I/O系统实现可分为几个层次:
底层的设备驱动、I/O系统、其他系统模块(包括文件系 统)、应用程序。
I/O系统使用标准的接口调用设备驱动程序相应 的函数。 文件系统是在I/O基础上实现的一个系统组件,针 对的是块I/O操作。
VxWorks系统简介
郭思 SX1401188
VxWorks系统简介
VxWorks应用背景 VxWorks系统体系结构 任务管理 通信机制 内存管理
VxWorks应用背景
VxWorks是美国Wind River System公司于1983年设计 开发的一种嵌入式实时操作系统(RTOS)。 特点:
内存管理模块
内存管理模块由内存分配和内存保护两个相互 独立的子模块 内存保护机制
基于MMU的内存保护机制 将内核与用户模式应用程序分离 将应用程序彼此分离 紧凑的内存分区管理器(memPartLib) 完整的内存分区管理器(memLib)
内存管理函数
内存碎片
编程尽量使用静态内存分配
任务间通信最简单的方法是采用共享存储区,也即相关的 各个任务分享属于它们的地址空间的同一内存区域。因为 所有的任务都存在于单一的线性地址空间,任务间共享数 据。全局变量、线性队列、环形队列、链表、指针都可被 运行在不同的上下文的代码所指向。 用户可以定义一些数据用于任务间的通讯: 编写一个库,提供该数据的共享存储; 所有任务访问这些共享数据时都使用库中的例程; 可以用信号量来保证共享数据的互斥访问
taskA taskB
通信机制——信号
任何任务和中断程序都能向特定的任务发出信号,收到信 号的任务立即挂起正在执行的线程,转而在下一时间调度 运行特定信号处理程序。
类似于硬件中断
网络通信机制
VxWorks提供了如下一些网络工具完成信息传送:
Sockets完成VxWorks系统和其他系统之间的任务消息传送; 远程过程调用(RPC)允许任务调用另一主机上的过程; 远程文件存储:采用NFS、RSH、FTP等方式远程存储主机文件 文件输出
网络系统
VxWorks的网络系统提供了对其它网络和 TCP/IP 网络系统的"透明"访问,包括与BSD 套接字兼容的编程接口,远程过程调用 (RPC),远程文件访问以及BOOTP 和 ARP 代理。 无论是松耦合的串行线路、标准的以太网连接 还是紧耦合的利用共享内存的背板总线,所有 的 VxWorks 网络机制都遵循标准的 Internet 协议
任务结构——任务控制块(TCB)
任务上下文切换
当前运行的任务的上下文被存入TCB 将要被执行的任务的上下文从它的TCB中取出,放入各个 Delayed Pended 寄存器中。
TCB TCB TCB Kernel Ready Executing TCB
Suspended
TCB
TCB
TCB
TCB
CPU
任务结构——任务控制块(TCB)
任务控制块用来描述一个任务,每一任务都与一 个TCB关联。
任务控制块里面包含了:当前状态、优先级、要等 待的事件或资源、任务程序码的起始地址、初始堆 栈指针
任务的“上下文”(context)。任务的上下文就 是当一个执行中的任务被停止时,所要保存的所 有信息。通常,上下文就是计算机当前的状态, 也即各个寄存器的内容。
动态内存分配会导致响应和执行时间不确定、内存碎片等问题
VxWorks没有清除碎片的功能
找不到一个合适的时间把正在运行的程序暂停下来清理内存
内存碎片对实时性影响
使得系统的可用空间减少 增加内存管理单元的计算负担
只能避免碎片
限制使用动态内存分配:
参考文献: 1.嵌入式VxWorks系统开发与应用,王学龙,人 民邮电出版社 2.给予VxWorks的嵌入式实时系统设计,王金刚, 清华大学出版社
BSP(Board Support Package)
BSP通常是指针对具体的硬件平台,用户所编 的启动代码和部分设备驱动程序的集合。 板级支持包对各种板子的硬件功能操作提 供了统一的软件接口,是保证VxWorks操作系 统可移植性的关键。它包括硬件初始化、中断 的产生和处理、硬件时钟和计时器管理、局域 和总线内存地址映射、内存分配等等。
Slip / PPP
内存管理
平坦模式(Flat Mode)
为什么不是段页式的管理? 页式管理要有程序-内存的映射, 严重影响实时性
VxWorks系统支持静态分配和 动态分配相合的内存分配
低端内存区和VxWorks区采用静态 分配,而保证VxWorks的实时性和 稳定性。
内存分配采用first-fit算法 当增加硬件内存时,需要修改 sysPhysMemTop( ) (或调整 LOCAL_MEM_SIZE)