




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌⼊式操作系统选型分析早期的嵌⼊式系统很多都不⽤操作系统,它们都是为了实现某些特定功能,使⽤⼀个简单的循环控制对外界的控制请求进⾏处理,不具备现代操作系统的基本特征(如进程管理、存储管理、设备管理、⽹络通讯等)。但随着控制系统越来越复杂,应⽤范围越来越⼴泛的时候,缺少操作系统就造成了很⼤的限制。C语⾔的出现促进了操作系统的发展。20世纪80年代以来,出现了各种各样的商业⽤嵌⼊式操作系统。如QNX,VxWorks,RT-Linux以及WindowsCE等。使得在嵌⼊式系统设计时有了很⼤的选择余地,但选择的操作系统是否恰当对整个系统的开发有着挚为关键的影响。总的来说,嵌⼊式操作系统的选择可以遵从⼀下⼏条主要原则:ll实时性。嵌⼊式操作系统的实时性主要与系统的结构、任务调度策略、中断处理⼿段以及内存管理⽅法有关。系统定制能⼒。⼯业控制产品不同于民⽤PC的WinTel(微软Windows+Intel处理器)结构,后者⽐较简单,前者需求则是千差万别的,因此硬件系统也都不⼀样,所以对系统的定制能⼒有较⾼的要求。l可移植性。当进⾏嵌⼊式软件开发时,可移植性是要重点考虑的问题。良好的软件移植性应该⽐较好,可以在不同平台、不同系统上运⾏,跟操作系统⽆关。l可利⽤资源。产品开发不同于学术课题研究,它以快速、低成本、⾼质量的推出适合⽤户需求的产品为⽬的。集中精⼒研发出产品的特⾊,其他功能尽量由操作系统附加或采⽤第三⽅产品,因此操作系统的可利⽤资源对于选型是⼀个重要参考条件。如果有⼤量的资源可以利⽤,⽆疑会极⼤的缩短开发周期降低成本。l⽹络能⼒。现在的⼯业控制系统对联⽹的要求越来越多,即使⽬前的产品不需要具有联⽹的能⼒,也应该为以后的升级留下余地。图形界⾯开发能⼒。友好的图形界⾯对多数控制系统来说都是必不可少的,相应的开发⼯具是否功能强、使⽤简单对开发的影响很l⼤。ll中⽂内核⽀持。毕竟,作为国内的⼯业控制系统,如果不⽀持中⽂,怎么能不说是⼀个缺憾?已有的条件。在满⾜可靠应⽤的条件下,降低开发成本是每个控制系统开发考虑最多的因素之⼀。能根据⾃⼰的实际情况,合理的利⽤已有的条件,将会对降低成本有很⼤的作⽤,也会缩⼩产品的上市时间。下⾯就四种常见的嵌⼊式操作系统对实时性、⽹络能⼒、图形界⾯开发以及开放性等⽅⾯进⾏分析⽐较,并结合课题的实际情况,阐述了选择QNX作为本课题的嵌⼊式系统设计平台的理由。[10,11,12,24],如图2.1所⽰,它们分别是内核模块、对象存储/⽂件系统模块、⽹络与通讯模块、GWES模WindowsCE可分为四个主要模块块(图形、窗⼝、事件⼦系统)。此外还有三个重要的组成部分:驱动程序、设备管理器、OAL(OEM适配层,OEMAdaptationLayer)。图2.1WindowsCE体系结构图WindowsCE内核模块是coredll.dll表⽰,最⼩为200KB。它是WindowsCE操作系统的核⼼,并为应⽤程序提供基本服务:进程管理、多任务多线程管理、内存和资源管理、中断处理、异常处理等。WindowsCE的RAM存储内存空间⼜被称为“对象存储(ObjectStore)”。⼀般包括三种类型的数据:WindowsCE⽂件系统(包括数据⽂件和程序)、系统注册表和WindowsCE数据库(⼀种结构化存储⽅法,PocketPC内置程序多使⽤它)。WindowsCE提供了⽐桌⾯系统更丰富的通讯⽀持。GWES模块即图形、窗⼝、事件⼦系统,是⽤户、应⽤程序、操作系统之间的图形⽤户界⾯。⽽且WindowsCE⽀持在没有图形界⾯的设备上使⽤诸如窗⼝、消息机制和电源管理的特性。WindowsCE内核⽀持按优先级抢占的⽅式调度多任务。WindowsCE最多⽀持32个进程,系统启动时⾄少创建4个进程:nk.exe(内核)、filesys.exe(⽂件系统)、gwes.exe(GUI⽀持)、device.exe(加载维护系统设备驱动程序)。⼤多数平台还有exeplorer.exe(外壳)等服务进程,⽤户实际可以使⽤的进程也只有20多个。进程有⾃⼰受保护的32MB虚拟地址空间,但没有优先级。WindowsCE⽀持的优先级是线程的优先级。线程是操作系统调度和运⾏的基本单位。线程由进程创建,是进程的⼀个实体,总是⾪属于进程,并共享进程的地址空间。线程总数只受物理内存的限制。WindowsCE实现抢占式、基于优先级的线程调度,线程之间由8个优先级来竞争CPU时间⽚。线程间的“同步”由“等待函数”和“等待对象”实现:将等待对象作为参数传递给等待函数,等待函数直到满⾜条件才返回;如果不满⾜条件,那么调⽤线程⼀直处于等待状态。WindowsCE⽀持的“等待对象”包括:临界区域对象、事件对象和互斥体对象。四种操作系统都采⽤同样的传统中断模式。⽤户往某⼀中断源挂接特定中断后,实时操作系统创建⼀条ISR(中断服务例程)。所有的ISR地址保存在中断向量表中,并被硬件直接调⽤。ISR先执⾏⼀些保护现场的操作,然后调⽤⽤户定义的中断响应函数。
WindowsCE采⽤的是基于优先级的可嵌套中断机制。WindowsCE的中断处理分为两部分:ISR和IST(中断服务线程)。ISR是核⼼代码部分,IST是⽤户代码部分。WindowsCE可以将中断请求(ISR)映射为硬件中断,并且实现相应的ISR和IST。WindowsCE的中断机制是:当ISR被触发时,ISR只负责启动IST,⼀旦IST启动后,ISR⽴即就返回,以便响应新的中断。IST负责处理实际的中断处理。ISR运⾏在特殊的上下⽂中。IST是⼀个普通的应⽤程序线程,具有它⾃⼰的上下⽂和堆栈。WindowsCE实现了“分页虚拟内存管理系统”。实现虚拟内存机制需要设备中的CPU具有MMU(MemoryManagerUnit)。WindowsCE使⽤CPU的MMU来实时地将虚拟地址转换为物理地址。WindowsCE为全部应⽤程序实现的虚拟地址空间为2GB,为每个应⽤程序实现的虚拟地址空间为32MB。虚拟页⾯可以处于三种状态:空闲、保留、提交(占⽤)。空闲页(free)是可以被保留或提交的可⽤页。保留页(reserved)是逻辑页已分配但没有分配物理存储的页。提交/占⽤页(committed)是物理存储已分配的页。WindowsCE提供了丰富的通讯⽀持,主要有:串⾏通讯(⽀持PPP/SLIP协议实现的串⾏直接连接和拨号连接),TCP/IP、FTP、HTTP协议和Winsock1.1的⼀个⼦集合,红外通讯协议IrDA、IrSock和IrComm,通过⽹络驱动程序接⼝规范(NDIS)⽀持局域⽹,⽀持远程访问RAS、USB连接、蓝⽛连接和⽆线局域⽹连接等,⽀持SSPI(“安全⽀持提供者接⼝”)、CAPI(密码API)、TAPI(电话API)等。WindowsCE程序开发语⾔主要是eVB和eVC。程序开发⼯具重要由微软提供,主要产品有eMbeddedVisualTools和WindowsCEPlatformBuilder。此外,也可使⽤Java语⾔开发WindowsCE程序,相关⼯具由SUN公司提供,包括PC端的Java运⾏环境J2SDKforwindows和PersonalJava的仿真器PJEE(PersonalJavaEmulationEnvironment)。这⾥所谓的开放性主要指的是与POSIX标准的符合程度。POSIX表⽰可移植操作系统接⼝(PortableOperatingSystemInterface)。IEEE最初开发POSIX标准,是为了提⾼UNIX环境下应⽤程序的可移植性。然⽽,POSIX并不局限于UNIX。许多其它的操作系统,例如MicrosoftWindowsNT,都⽀持POSIX标准,尤其是IEEEStd.1003.1-1990(1995年修订)或POSIX.1,POSIX.1提供了源代码级别的C语⾔应⽤编程接⼝(API)给操作系统的服务程序,例如读写⽂件。POSIX.1已经被国际标准化组织(InternationalStandardsOrganization,ISO)所接受,被命名为ISO/IEC9945-1:1990标准。WindowsCE是直接从NT发展过来的,继承了1000多个Win32API函数。Win32是WidowsNT和Windows95的编程接⼝。Win32对于Windows就像POSIX对于Unix⼀样。RT-Linux从本质上讲是对通⽤操作系统的Linux的实时改造的变种[1,6,13,14,28,57]。Linux作为⼀种通⽤操作系统,虽然由于其开放性近来在嵌⼊式设计中有了较⼴的应⽤,但由于其注重的是系统的平均性能,在很多⽅⾯使得Linux不适合实时应⽤。主要的⼏点包括:分时调度策略,较低的时钟分辨率,内核的⾮抢占式机制,过多的禁⽌中断操作,以及虚拟内存机制。这些对于通⽤操作系统来说⾮常出⾊的设计在实时系统中都变得不合时宜。然⽽,RT-Linux把Linux作为新的实时内核调度下的最低优先级任务执⾏。其本⾝的实现只需要⼀个实时内核。设计中的巧妙之处是通过截获底层中断改造了Linux,取得CPU控制权执⾏实时任务。这样,只需对Linux进⾏较⼩的改动就可以实现实时功能,且能够使⽤Linux下提供的丰富开发⼯具和⼰有功能,如⽹络功能,图形接⼝等。更重要的是,RT-Linux还继承了Linux具备的开放性、标准化、技术⽀持丰富、便宜等特性。并且,Linux内核升级与RT-Linux升级保持了彼此独⽴,使得整个系统更容易维护。RT-Linux实现了⼀个⼩的实时核⼼,仅⽀持底层任务创建、中断服务例程的装⼊、底层任务通信队列、中断服务例程(ISR)和Linux进程。原来的⾮实时Linux内核作为⼀个可抢占的任务运⾏于这个⼩内核之上,所有的任务都在内核地址空间运⾏。它不同于微内核和⼤型内核,是双内核体系结构。与其他RTOS相⽐,RT-Linux进程间通信不够灵活。其实时任务之间,及实时任务与其他Linux任务之间的通信⽅式只有⼀种:RT-FIFO。RT-FIFO缓冲区分配在内核地址空间。对RT-FIFO的读写操作均为原⼦操作,不能够阻塞。图2.2和图2.3分别⽰出了纯Linux体系结构和RT-Linux体系结构。图2.2纯Linux体系结构图图2.3RT-Linux体系结构图RT-Linux在操作系统之下实现了⼀个简单的实时内核,Linux本⾝作为⼀个可抢占的任务在核内运⾏,其优先级最低,随时会被⾼优先级的实时任务抢占。RT-Linux是开放源码的操作系统。其开放性给⽤户带来了很⼤便利。在任务调度⽅⾯,⽤户可以⾃⾏编写调度程序,可实现为可加载的核⼼模块。⽬前在实时Linux上实现的调度算法有:抢占式优先级调度,最早期限优先调度(EDF)。RT-Linux允许的实时任务优先级范围从1(最⾼)到RT_LOWEST_PRIORITY。同样由于源码开放性,优先级数⽬也可以由⽤户在编译核⼼时,指定相应的RT_LOWEST_PRIORITY值确定,这有给了⽤户很多⾃由。
对于RT-Linux,中断处理⽅式有着更重要的意义。那就是同时要保证作为实时系统⼀个任务的原有Linux内核仍正常运⾏。为此,RT-Linux在Linux内核与中断控制器硬件之间,加⼊了⼀层仿真软件。所有的硬件中断都被送往这层仿真软件先做处理。在Linux源码中,所有出现的cli,sti,iret指令,都被相应的仿真宏定义取代,这些宏是S_CLI,S_STI,S_IRET。当Linux执⾏禁⽌中断指令时,仿真软件中的⼀个变量被重置。⽆论何时,当中断发⽣时,仿真软件都会检查此变量。如果变量被置位(Linux允许中断),则Linux中断处理函数被⽴即调⽤。如果变量没有被置位(Linux禁⽌中断),则中断处理函数不被调⽤。但是,此变量中相应的某个⽐特会被置位,以记录下有中断等待处理。当Linux重新使能中断后,所有等待处理中断的处理函数会依次执⾏。这种仿真中断的技术称为软中断。这样的结构下,Linux失去了对中断的直接控制,因此它不会影响那些不通过仿真软件的实时中断,保证了RT-Linux的实时性。Linux使⽤由Intel80x86系列处理器提供的页⾯机制,为每⼀任务提供互相独⽴的内存空间,并有内存保护。在实时系统中,这样做带来的直接问题是任务切换时间过长。因此,后来的RT-Linux设计采⽤的⽅法是在同⼀个地址空间运⾏所有的实时任务。并且,使⽤的是内核地址空间。之所以使⽤内核地址空间,是为了把由内存保护级别变化所引起的额外开销消除。并且,Linux提供动态装载内核模块(ladablekernelmodules)功能也可以⽤在实时系统中。⽅法是把实时任务作为可装载内核模块创建,运⾏,及删除。RT-Linux使⽤内核地址空间运⾏的⽅案,与不使⽤内存保护的VxWorks⼀样,同样存在地址越界引起的危险。任何错误的实时任务都可能破坏整个系统。Linux系统的⼀个主要特点是他的⽹络功能⾮常强⼤。RT-Linux由于具有双内核,可以很好的利⽤linux的⽹络功能。嵌⼊式Linux的图形⽤户界⾯有很多选择,⽐如MicroWidows、紧缩的XWidow、tinyX等,国内做的⽐较出⾊的是miniGUI。miniGUI最初是为了满⾜⼀个⼯业控制系统(计算机数控系统)⽽设计和开发的,该系统就是采⽤RT-Linux作为实时操作系统。由于可以利⽤Linux⾃由开放的丰富资源,相应的开发⼯具也很丰富。RTLinux是⼀个严格遵守POSIX1003.13技术规范的硬实时操作系统,运⾏在Linux或者BSDUnix之上。RTLinux坚持分离实时和⾮实时代码,操作系统和应⽤软件中的关键实时组件将给予绝对的优先权,以避免⾮实时组件影响实时组件的响应时间。实时内核为需要微秒级中断延迟的软件提供了⼀个熟悉的POSIX线程和精确调度。VxWorks在体系结构上属⼦“客户机/服务器”结构。也有另⼀种观点认为它是统⼀模型结构[15,16,17,24,28,57]。与QNX相⽐,VxWorks的“客户机/服务器”概念要模糊⼀些。VxWorks运⾏系统的核⼼是“wind”微内核。wind微内核⽀持全部的实时功能,包括多任务,任务调度,任务间同步/通信和内存管理四项主要功能。核⼼以外的其它功能都作为任务运⾏。⽐如⽂件系统,调试任务,TCP/IP协议模块等。VxWorks缺少必要的存储保护机制。最⾼优先级的任务和⽤户定义的任务在同⼀个地址空间运⾏。这样做的好处是VxWorks任务切换时的时间⾮常短。缺点也是明显的,增加了系统的不稳定性。不过,VxWorks也提供了替代⽅案,另⼀个可选模块(VxVMI)为系统任务提供了保护。VxWorks另⼀缺点是多CPU协同⼯作能⼒差。不同CPU上运⾏的任务间通信只能通过消息队列(messagequeue),并且这类消息队列必须在CPU之间有共享内存时才可⽤。⽀持共享内存的模块(VxMP)还必须另外购买。当然,Socket机制可⽤于类似的应⽤中(VxWorks的⽹络功能很强)。但是,在可靠的连路上使⽤TCP/IP协议给系统增加了许多延时和额外处理开销。图2.4VxWorks系统结构图VxWorks中,所有的任务运⾏在同⼀内存空间,彼此间缺少保护。为⽤户提供的优先级数⽬256,能够满⾜较为复杂的实时应⽤需求。系统所能够创建的任务数⽬与VxWorks⽆关,只受制于内存⼤⼩。在任务调度⽅⾯,⽀持抢占式优先级调度策略。并且,可以选择使⽤Round-Robin调度。VxWorks提供了完善的机制解决抢占式调度带来的优先级逆转(PriorityInvert)问题。可嵌套、分优先级的中断⽅式。所有中断响应在特殊的中断上下⽂中执⾏,与任务上下⽂⽆关。所有中断使⽤同⼀中断栈。中断栈的⼤⼩必须考虑到所有的中断嵌套情况。中断与任务间的通信有多种⽅式:共享内存,环形缓冲区,信号量,消息队列,管道。VxWorks缺少内存保护机制,导致了系统的不稳定性。
VxWorks的⽹络系统基本上是移植了BSD4.4Unix的TCP/IP协议族,仅在实时性上进⾏了较⼤的修改,如⽤Semaphores代替原TCP/IP实现中的InterruptLock和修改Socket代码中⽆Timeout的部分。这使得⽹络应⽤层的开发和移植都⾮常⽅便。VxWorks⽀持⼯业标准TCP/IP协议族,具体包括:lllllIP、IGMP、CIDR、TCP、UDP、ARP、RARP、RIPV1/V2StandardBerkeleySocketsZ-bufs、NFS、RPCPPP、BOOTP、DNS、DHCP、TFTP、FTPRLOGIN、TELNET、RSHVxWorks还⽀持可选的Windnet产品,包括SNMP、OSPF、STREAMS等。但是VxWorks的⽹络功能还有⼀定的缺陷,⽐如⽬前版本的PPP协议还有⼀定的局限性,最多只能⽀持16路链路。VxWorks的优势在于多任务和实时性,做图形界⾯不是很出⾊。⽬前VxWorks上的GUI主要有三种选择:windML、ZINC和Tilcon。WindML即WindMediaLibrary(媒体库),是WindRiver的专业图形化环境,它主要是为了满⾜较简单的单功能设备的图像要求⽤来提供基本的图形、视频和声频技术以及提供⼀个设计标准设备驱动程序框架。WindMLAPI库提供了⼀个统⼀的图形硬件接⼝以及处理输⼊设备和输⼊设备事件的能⼒。WindML包括两个组件:软件开发包(SDK)和驱动程序开发包(DDK)。SDK组件⽤来开发应⽤程序,它提供了⼀个全⾯的API集,包括图形、输⼊处理、多媒体、字体和内存管理。DDK组件是⽤来实现驱动程序的,它提供了⼀个完整的驱动程序参考集,包括硬件配置和API集,以使得开发者能够迅速的引导和使⽤⾃⼰的驱动程序。Zinc是⼀个⾯向对象和平台独⽴的GUI(图形化⽤户界⾯)设计框架。WindRiver提供两个不同版本的Zinc,分别是运⾏于桌⾯系统(⽐如windows和UNIX系统)的版本和运⾏于嵌⼊式系统(⽐如Vxworks和pSOS)的版本。Tilcon是⼀个实时操作系统图形开发⼯具。同步⽀持最新版本的Tornado/VxWorks以及WindML多媒体库。适⽤与VxWorks实时环境下构建虚拟仪表,实时控制,分布式控制等⾼级图形应⽤。Tilcon本⾝已经集成⼤量成熟控件,⽤户再⽆需调⽤低级的图形函数去画线填充,可以象Windows下VB可视化编程⼀样⽤拖动控件的⽅式构造⾃⼰的图形应⽤。Tilcon开发的图形界⾯同时⽀持本地和分布式显⽰。图形界⾯开发完成后就可以⾃动的显⽰在本地或通过TCP/IP⽹络显⽰到其他⽹络平台上。⽀持OPC,XML,SOAP等标准⼯业协议。VxWorks⽀持POSIX1003.1b的规定和1003.1中有关基本系统调⽤的规定,其中包括进程初始化、⽂件和⽬录、I/O初始化、语⾔服务、⽬录管理。⽽且VxWorks还⽀持POSIX1003.1b的实时扩展,包括异步I/O、计数型信号量、消息队列、信号、内存管理和调度控制等。ONX在体系结构上⾮常先进⾼效,采⽤的是“客户机/服务器”结构,具备微内核和许多可选服务器进程。微内核只实现实时操作系统应该具备的基本功能即:任务调度,进程间通信,中断处理,⽹络接⼝[18,19,20,21,22,24,25,26,27,28]。其它的功能都以协作进程(CooperativeProcesses)的⽅式实现,这些协作进程就是服务器进程,它们向客户进程(如⽤户应⽤进程)提供服务。在QNX中,服务器进程的例⼦很多,象⽂件管理器,进程管理器,⽹络管理器,图形界⾯管理器等等。微内核运⾏在优先级0,服务器进程和设备驱动程序运⾏在优先级1或2。应⽤进程运⾏在优先级3。QNX的优先级保护机制使得整个系统的稳定性⽐VxWorks有提⾼。QNX是基于消息传递(MessagePassing)的操作系统。消息传递是QNX的基本进程间通信机制(IPC)。其消息传递服务基于客户机/服务器模型:客户进程向服务进程发送消息,服务进程也⽤消息响应。许多QNX系统调⽤都是基于这样的机制。⽐如,如果⽤户进程想打开某个⽂件,这个系统调⽤就被转换为⼀条消息,发送给⽂件管理器。⽂件管理器收到消息,打开⽂件后,将⽂件句柄通过消息返回给调⽤者。由于QNX的微内核结构中集成了消息机制和⽹络功能,因此,QNX的分布计算能⼒很强,适合于分布式应⽤。QNX的⽹络管理器对⽤户进程屏蔽了⽹络的存在,使得不同CPU上的⽤户进程间通信时仍能采⽤消息机制,消息使⽤⽅式与本地⽤户进程间通信完全⼀致。图2.5QNX微内核结构图2.6QNX系统结沟QNX使⽤进程/线程模型。QNX脱胎于UNIX操作系统,所以它具备进程(Process)的概念。在QNX中,每个进程都享有独⽴的虚拟存储空间,使系统更加稳定。⽽在VxWorks中,需要另外的模块才能提供类似的功能。
QNX是多进程系统。其进程可以创建线程(Thread)。QNX的线程与POSIX定义的线程概念还是有所区别的。在QNX中,线程与⽗进程享受同样的数据段和代码段,但是,有些操作系统对象,如时钟,⽂件句柄等,却不能共享。并且,在⽗进程被杀死后,派⽣的线程仍可以继续运⾏。QNX提供的优先级数⽬64个,系统能够创建的进程数为4095个,每个进程能够创建32767个线程。任务调度⽅⾯,提供四种调度策略:基于优先级的FIFO调度(SCHED_FIFO),基于优先级的Round-Robin调度(SCHED_RR),Sporadic调度(SCHED_SPORADIC)以及其他调度策略(SCHED_OTHER)。其中SCHED_OTHER的调度策略和FIFO相同,但将来会改变,所以不推荐使⽤。QNX采⽤的也是嵌套,分优先级的中断⽅式。中断ISR在挂接它们的进程的上下⽂中执⾏。每个ISR具有它⾃⼰的堆栈。QNX中断与进程通信的⽅式有信号(Signals)和脉冲(Pulses)。QNX的内存保护机制相当完善。每⼀个进程都在独⽴的虚拟空间运⾏,具有独⽴的数据段和代码段。虚拟内存由Intel处理器的分页功能提供。为了避兔内存碎⽚问题,QNX使⽤固定⼤⼩内存分段。QNX提供的内存保护提⾼了系统稳定性,对于系统调试阶段也很有帮助。QNX有QNX机器之间专⽤⽹络,QNX机器⾃⾝之间通信使⽤的协议,将多台QNX物理机联成⼀体,在各物理机之间共享各种资源,使各物理机联结成为⼀台逻辑机。对于需要分布式并⾏计算的应⽤系统⽽⾔,QNX系统的这种特点⽆疑提供了极⼤的⽅便。对于处理量⽽分布式系统不能满⾜需求的应⽤系统⽽⾔,QNX更提供对称多处理器的⽅式的系统供⽤户选择。由于QNX微核及消息传递结构,通过QNX处理由许多具体计算机(节点)组成的⽹络系统就像⼀台单⼀的计算机。节点之间是平等的,每个节点都是⽹络根⽬录下的⼀个⼦⽬录,每个节点都可以把其它节点当作⼀个图表来操作,不需要专门的远程操作命令。⽹络允许任何进程使⽤⽹络中任何计算机的任何资源。⽆盘节点能由⽹络⾃举,使⽤⽹络中处于任何地⽅的任何资源。对于⼀些关键性的应⽤,QNX可以通过利⽤分布式⽹络信息实现热备份。QNX⽹络具有透明的分布处理能⼒,容错⽹络功能,均衡负荷功能,可扩充的结构。⽹络节点之间多重冗余连结保证了某⼀局部⽹络发⽣故障时系统能正常⼯作。QNX节点也能通过约定的⽹络协议(TCP/IP,SL/IP,RPC,NFS,FTP,Telnet,DOSLAN协议等)与⾮QNX系统通讯。QNX是少数⽀持图形⽤户界⾯的实时操作系统之⼀。不同于⼀些实时操作系统,QNX对图形⽤户界⾯的⽀持不是通过⽤户可以使⽤的C/C++图形函数库的⽅式提供给⽤户⾃⼰编写图形界⾯,⽽是“⽴即”提供的。图形⽤户界⾯以⼀组运⾏模块的⽅式,⽤户只要运⾏这些模块,就“⽴即”获得了图形⽤户界⾯,本⾝不需编写⼀条程序。具体优势将会在下⽂讨论。QNX的PhotonmicroGUI窗⼝系统,参照在QNX微内核体系中为实现嵌⼊式系统的POSIXOS环境所成功采⽤的⽅法,遵循类似的原则建⽴起了具有⾃⼰独特风格的窗⼝体系,即Photon微内核机制。Photon微内核本⾝是⼀个⼩进程(有45KB代码)。概括说来,Photon为建⽴GUI提供了⼀种新⽅法――使⽤微内核和⼀组共同操作的进程来实现图形⽤户界⾯。其特有的能⼒有:lll⽀持低内存要求,允许Photon为那些因内存容量的限制只能⽀持⼀个图形库的环境提供⾼级的窗⼝功能。提供了⾮常灵活的、⽤户可以扩展的体系结构,这种体系结构允许开发者按照⾃⼰的需要扩充GUI。由于能够实现跨平台的灵活连接,事实上⼈们可以从任何被连接的桌⾯环境中调⽤任何平台中的Photon窗⼝应⽤。PhAB(PhotonApplicationBuilder)是QNX下的⼀个可视化图形界⾯程序开发⼯具,包括丰富的易于定制的⽤户控件和语⾔编辑器。利⽤PhAB开发应⽤程序的⼀般过程如图2.7:图2.7PhAB应⽤程序开发过程图QNX也是⼀个遵循POSIX1003.1标准及POSIX实时标准的实时操作系统。但在系统实现上与UNIX不同,因此,QNX虽然在外观上很像UNIX,但并不属于类UNIX操作系统。VxWorks程序可以移植到QNX,为QNX的开发带来了很⼤的⽅便。作为对上⾯的详细分析的⼀个总结,做了⼀个简单的⽐较表格,见表2.1:表2.1四种实时操作系统⽐较表WindowsCERT-LinuxVxWorksQNX体系结构不严格的客户机/服务器coredll.dll内核双内核微内核,客户机/服务器可定制性有有有强调度算抢占式、基于优先级的线程抢占式优先级调FIFO,Roud-抢占式优先级调度,最早期限优先调度(EDF)法调度度,Round-Robinrobin,Adaptive,Sporadic最⼤任32个进程每个进程的线程4095个进程,每个进程可以有32767个线程――受内存⼤⼩的限制务数数受内存的限制优先级数641~RT_LOWEST_PRIORITY,可编程控制25664中断处基于优先级的可嵌套中断机可嵌套、分优先级的中断⽅式软中断可嵌套、分优先级的中断⽅式理制内存管理在同⼀个地址空间运⾏所有的实时任务,使⽤的是内核地址空间。存在地址越界危险。分页虚拟内存管理缺少内存保护机制具有独⽴的虚拟空间⽹络能⼒有,且有⾃⼰特有的⽹络⽂件系统有有有GUI开eVB、eVC和J2SDK、windML、ZINC和Tilcon有很多选择,⽐如国内的miniGUIPhoton微内核机制,PhAB发PJEE开放性Win32POSIXPOSIXPOSIX选择QNX作为项⽬的嵌⼊式开发平台主要基于以下⼏条理由:1)实时性。QNX提供⽤户可控制的、优先级驱动、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023-2024学年人教版(2015)小学信息技术四年级下册修饰表格有方法(教学设计)
- 个人简历与竞聘报告-1
- 3 古诗三首 寒食 教学设计-2023-2024学年语文六年级下册统编版
- Module 9 Experience(教学设计)-2023-2024学年外研版(三起)英语五年级下册
- 毕业论文核心研究成果汇报
- 2024-2025学年高中语文 第六课 语言的艺术 4 第四节 入乡问俗-语言和文化教学设计 新人教版选修《语言文字应用》
- 《角》(教学设计)-2024-2025学年沪教版数学四年级上册
- 2024-2025学年七年级历史下册 第二单元 辽宋夏金元时期:民族关系发展和社会变化 第10课 蒙古族的兴起与元朝的建立教学设计 新人教版
- 18古诗三首《江南春》教学设计-2024-2025学年语文六年级上册统编版
- 三年级英语下册 Module 7 Unit 1 We fly kites in spring教学设计 外研版(三起)
- 《可可西里》电影赏析
- 有限空间专项安全检查表
- 《入河排污口监管办法》解读课件
- 部编人教版小学四年级下册道德与法治一课一练(含答案全一册)
- 光疗法的课件
- 【双柱式汽车举升机设计(论文)8500字】
- 专题03平行线的性质与判定压轴题真题分类(原卷版)2022-2023学年七年级数学下册重难点题型分类高分必刷题(人教版)
- 非遗系列之木偶戏主题班会课件
- 2024年全国硕士研究生入学统一考试数学(一)真题及解析完整版
- 国开(甘肃)2024年《安全系统工程》形考作业1-4答案
- 生物特征识别技术中的安全和隐私
评论
0/150
提交评论