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