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