VxWorks操作系统基础

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1实时操作系统概述31.1实时操作系统31.2基本概念32VxWorks的系统综述42.1VxWorks42.2Tornado63VxWorks操作系统基础73.1VxWorks的任务73.1.1多任务73.1.2任务的状态迁移83.1.3Wind内核的任务调度93.1.4任务控制93.1.5任务扩展性123.1.6任务错误状态:errno133.1.7任务异常处理143.1.8共享代码和代码重入143.1.9VxWorks的系统任务173.2任务间通信183.2.1共享数据结构183.2.2互斥183.2.3信号量Semaphores193.2.3.1二值信号量203.2.3.2互斥信号量223.2.3.3计数信号量233.2.3.4信号量的特殊参数243.2.4消息队列243.2.5管道263.2.6跨网络的任务间通信263.2.7信号263.3中断服务代码273.3.1应用代码与中断连接273.3.2中断堆栈283.3.3ISRs的一些特殊限制283.3.4中断级别的异常283.3.5保持高中断级别293.3.6对高中断级别的ISRs的一些附加限制293.3.7中断与任务间的通信293.4看门狗计时器WatchdogTimers294VxWorks中的函数库:304.1TaskLib:304.2ErrnoLib:304.3SigLib:314.4LstLib:314.5MemLib:32注:本文档主要是对VxWorks内核的一个简单介绍;由于word经常把一句话的第一个字母变成大写,所以文中函数名的第一个字母的大小写可能不对。1实时操作系统概述1.1实时操作系统在计算的早期开发的操作系统的最原始的结构形式是一个统一的实体(monolithic)。在这样的系统中,提供的不同功能的模块,如处理器管理、内存管理、输入输出等,通常是独立的。他们在执行过程中并不考虑其他正在使用中的模块,各个模块都以相同的时间粒度运行,即严格按时间片分时方式运行。由于现代实时环境需要许多不同的功能,以及在这样的环境中存在的并发活动所引起的异步性和非确定性,操作系统变得更加复杂。所以早期操作系统的统一结构的组织已经被更加精确的内部结构所淘汰。层次结构的起点----内核操作系统的最好的内部结构模型是一个层次性的结构,最低层是内核。这些层次可以看成为一个倒置的金字塔,每一层都建立在较低层的功能之上。内核仅包含一个操作系统执行的最重要的低层功能。正象一个统一结构的操作系统,内核提供了在高层软件与下层硬件之间的抽象层。然而,内核仅提供了构造操作系统其他部分所需的最小操作集。对一个实时内核的要求。一个实时操作系统内核需满足许多特定的实时环境所提出的基本要求,这些包括:多任务:由于真实世界的事件的异步性,能够运行许多并发进程或任务是很重要的。多任务提供了一个较好的对真实世界的匹配,因为它允许对应于许多外部事件的多线程执行。系统内核分配CPU给这些任务来获得并发性。抢占调度:真实世界的事件具有继承的优先级,在分配CPU的时候要注意到这些优先级。基于优先级的抢占调度,任务都被指定了优先级,在能够执行的任务(没有被挂起或正在等待资源)中,优先级最高的任务被分配CPU资源。换句话说,当一个高优先级的任务变为可执行态,它会立即抢占当前正在运行的较低优先级的任务。快速灵活的任务间的通信与同步:在一个实时系统中,可能有许多任务作为一个应用的一部分执行。系统必须提供这些任务间的快速且功能强大的通信机制。内核也要提供为了有效地共享不可抢占的资源或临界区所需的同步、互斥机制。方便的任务与中断之间的通信:尽管真实世界的事件通常作为中断方式到来,但为了提供有效的排队、优先化和减少中断延时,我们通常希望在任务级处理相应的工作。所以需要杂任务级和中断级之间存在通信。性能边界:一个实时内核必须提供最坏情况的性能优化,而非针对吞吐量的性能优化。我们更期望一个系统能够始终以50微妙执行一个函数,而不期望系统平均以10微妙执行该函数,但偶尔会以75微妙执行它。特殊考虑:由于对实时内核的要求的增加,必须考虑对内核支持不断增加的复杂功能的要求。这包括多进程处理,Ada和对更新的、功能更强的处理器结构如RISC的支持。拥有其它名字的内核许多商用化的内核支持的功能远强于上面所列的要求。在这方面,他们不是真正的内核,而更象一个小的统一结构的操作系统。因为他们包含简单的内存分配、时钟管理、甚至一些输入输出系统调用的功能。1.2基本概念任务(TASK):任务是由计算机所执行的一项活动,它包括一个程序和于这个程序有关的数据、程序状态及计算机资源等。进程(PROCESS):在UNIX操作系统里,任务被称作进程。任务和进程都可以作为调度单位被内核调度执行,但在一些既有任务又有进程的系统里任务和进程是有区别的,主要表现在:任务可以直接对内层进行寻址,而进程不能,进程只能从其父进程里继承一些特定的属性,而任务却能和父任务在几乎相同的环境下运行。任务的状态:包括运行、就绪、挂起、休眠等在内的任务所处的状态。任务的调度:负责控制各个任务在各个任务状态之间的转换。任务的控制块(TCB):任务控制块用来描述一个任务,每一个任务都与一个TCB相关联。TCB包括了任务的当前状态、优先级、要等待的事件或资源、任务程序码的起始地址、初始堆栈指针等信息。此外,TCB还被用来存放任务的“上下文”(CONTEXT)。任务的同步:对单个任务而言,同步就是使它能在指定的时间执行,对两个或两个以上的任务,同步是任务间需要协调执行的情况。消息:消息机制使用一个被各有关进程共享的消息队列,进程之间经由这个消息队列发送和接收消息,并用来协调(同步)对共享资源的使用的方法。管道(PIPE):是一个类似文件的结构,它用于同步读/写操作,使用系统调用PIPE可以产生一个管道并返回两个文件指针,一个用于读管道,一个用于写管道。中断(Interrupt)和中断处理程序(InterruptServiceRoutine):中断一般是指硬件中断,它用于通知操作系统特定外部事件的发生,中断响应速度对于实时系统是至关重要的。可以使用intConnect()函数把特定的ISR与某一中断联系起来。信号(SIGNAL):它用来通知一个任务特定事情的发生,并立即调用相应的信号处理函数进行处理,它异步的改变任务的控制流程。信号与中断类似,每个信号通常需要和特定的信号处理程序绑定起来(调用sigaction()或signal())。信号通常用于错误或异常处理,用于通知一些硬件中断错误,如:总线错误、非法指令、浮点异常、被零除等。它也可以用于进程间通讯。信号量(semaphore):很多方面类似一个全局变量,不同的是,对信号量的操作(Creat、Delete、Take、Give)都是特定的原子操作,是不可中断的。信号量主要用于进程间的同步和对共享资源的互斥访问。2VxWorks的系统综述2.1VxWorksVxWorks是美国WindRiverSystem公司(以下简称风河公司,即WRS公司)推出的一个实时操作系统。Tornado是WRS公司推出的一套实时操作系统开发环境,类似MicrosoftVisualC,但是提供了更丰富的调试、防真环境和工具。VxWorks操作系统有以下部件组成:l内核(wind):n多任务调度(采用基于优先级抢占方式,同时支持同优先级任务间的分时间片调度)n任务间的同步n进程间通信机制n中断处理n定时器和内存管理机制lI/O系统VxWorks提供了一个快速灵活的与ANSIC兼容的I/O系统,包括UNIX标准的BasicI/O(creat(),remove(),open(),close(),read(),write(),andioctl().),BufferI/O(fopen(),fclose(),fread(),fwrite(),getc(),putc())以及POSIX标准的异步I/O。VxWorks包括以下驱动程序:网络驱动、管道驱动、RAM盘驱动、SCSI驱动、键盘驱动、显示驱动、磁盘驱动、并口驱动等l文件系统支持四种文件系统:dosFs,rt11Fs,rawFs和tapeFs支持在一个单独的VxWorks系统上同时并存几个不同的文件系统。l板级支持包BSP(BoardSupportPackage)板级支持包向VxWorks操作系统提供了对各种板子的硬件功能操作的统一的软件接口,它是保证VxWorks操作系统可移植性的关键,它包括硬件初始化、中断的产生和处理、硬件时钟和计时器管理、局域和总线内存地址映射、内存分配等等。每个板级支持包括一个ROM启动(BootROM)或其它启动机制。l网络支持:它提供了对其它VxWorks系统和TCP/IP网络系统的透明访问,包括与BSD套接字兼容的编程接口,远程过程调用(RPC),SNMP(可选项),远程文件访问(包括客户端和服务端的NFS机制以及使用RSH,FTP或TFTP的非NFS机制)以及BOOTP和代理ARP、DHCP、DNS、OSPF、RIP。无论是松耦合的串行线路、标准的以太网连接还是紧耦合的利用共享内存的背板总线,所有的VxWorks网络机制都遵循标准的Internet协议。l系列网络产品:nWindNetSNMPnWindNetSTREAMSnWindNet第三方产品,包括OSI、SS7、ATM、FrameRelay、CORBA、ISDN、X.25、nCMIP/GDMO、分布式网络管理等。这些产品扩展了VxWorks的网络特性,并增强了嵌入式处理器的网络特性l虚拟内存(VxVMI)与共享内存(VxMP)nVxVMI为带有MMU的目标板提供了虚拟内存机制。nVxMP提供了共享信号量,消息队列和在不同处理器之间的共享内存区域。l目标代理(TargetAgent)目标代理遵循WBD(WindDebug)协议,允许目标机与主机上的Tornado开发工具相连。在目标代理的缺省设置中,目标代理是以VxWorks的一个任务tWdbTask的形式运行的。Tornado目标服务器(TargetServer)向目标代理发送调试请求。调试请求通常决定目标代理对系统中其它任务的控制和处理。缺省状态下,目标服务器与目标代理通过网络进行通信,但是用户也可以改变通信方式。l实用库VxWorks提供了一个实用例程的扩展集,包括中断处理、看门狗定时器、消息登录、内存分配、字符扫描、线缓冲和环缓冲管理、链表管理和ANSIC标准。l基于目标机的工具在Tornado开发系统中,开发工具是驻留在主机上的。但是也可以根据需要将基于目标机的Shell和装载卸载模块加入VxWorks。总之,VxWorks的系统结构是一个相当小的微内核的层次结构。内核仅提供多任务环境、进程间通信和同步功能。这些功能模块足够支持VxWorks在较高层次所提供的丰富的性能的要求。VxWorks与各部件关系如图所示:图:VxWorks层次组织结构2.2TornadoTornado组成:lTornado一整套交叉开发工具lVxWorks实时操作系统l连接目标机与宿主机的通信选项Tornado所提供的工具:lWindConfig::建立适合用户特性的VxWorks操作系统。lLoader:具有动态连接的装载器。lCrossWind:源程序(C或C++以及汇编程序等)的调试工具。CrossWind结合了图形方式和命令行方式的最大特点。最普通的调试方式,例如断点设置和程序执行控制可以通过便捷的点击方式实现。同样,程序显示框和数据侦察窗也提供了一个直接的可视窗口来观察应用程序中最关键的一部分。lBrowser:可观察系统对象(任务、消息队列、信号量等)和存储器使用情况;Browser汇总了应用进程,内存消耗和一个目标内存的映射。通过Browser,可观察信号量、消息队列、内存分配、看门狗计时器、堆栈使用情况、目标CPU使用率、对象模块结构和符号表以及每个任务的详细信息。lWindSh:提供从宿主机到目标机之间的一个命令shell,它可以解释执行内层目标中的几乎所有C语言

1 / 26
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功