当我们听到操作系统一词时,想到的第一件事就是台式机和笔记本电脑中使用的软件程序,例如Microsoft Windows,Linux,Ubuntu等,以及用于智能手机的Android。 实际上,大多数数字电子设备都运行某种由微控制器程序开发的操作系统。 微控制器的发展为众多嵌入式系统应用铺平了道路,它们在我们的日常生活中起着至关重要的作用。
我们最近听说的一种这样的系统是实时操作系统,或简称为“RTOS”。 RTOS是一种用于实时应用程序的操作系统,这意味着在指定的时间限制内处理数据的应用程序。 QNX和VxWorks是两种不同的实时操作系统,主要用于工业和学术环境。 本文的目的是对两者进行公正的比较。
什么是QNX?
QNX是最初为嵌入式系统开发的商业实时操作系统,最初由Quantum Software Systems在1980年代初期开发。 这家加拿大公司后来更名为QNX Software Systems,并最终被Research in Motion(RIM)收购,用作其BlackBerry 10 OS和后来流行的BlackBerry Playbook的基础。 在Playbook中使用的操作系统版本是QNX Neutrino,它是建立在真正的微内核架构上的。 QNX是第一个商业上成功的基于微内核的操作系统。 QNX基本上是一个基于Unix的操作系统,基于真正的微内核设计和模块化体系结构,其中操作系统的元素作为任务运行,称为资源管理器,这将使开发人员可以关闭他们认为不是的任何功能。 在特定系统中不再需要。 QNX的最好之处在于它基于基于消息的进程间通信。
什么是VxWorks?
VxWorks是一个实时操作系统,专门为具有嵌入式系统的实时应用程序而设计,用于分布式计算。 这是由Wind River Systems开发的专有实时操作系统,Wind River Systems是一家位于加利福尼亚的公司,专门开发用于智能连接系统的嵌入式软件。 VxWorks是行业领先的RTOS,已经构建嵌入式系统和设备已有三十多年了。 它是具有广泛的进程间通信和同步功能的整体内核。 VxWorks的每种构建都是独特的,因为其体系结构使整个操作系统都在内核空间中工作,这意味着所有内核服务和用户服务都位于同一地址空间中,这使得操作系统的执行速度更快。 它通过系统调用提供调试功能,性能监视,内存管理,CPU调度和其他操作系统功能。
QNX和VxWorks的区别
1. QNX和VxWorks的基础
两者都是非常独特的实时操作系统,专门用于具有嵌入式系统的实时应用程序,每个系统都负载着具有不同功能的不同组件。两种系统都广泛用于大型工业和学术环境,并且已经运行了数十年。 QNX是由加拿大的Quantum Software Systems在1980年代初开发的商业RTOS,后来于RIM在2010年被收购。VxWorks是由总部位于加利福尼亚的Wind River Systems开发的专有软件,Wind River Systems是专门构建嵌入式软件的行业领导者用于智能连接的产品和系统。
2. QNX和VxWorks的体系结构
两种操作系统都将实时内核用于处理数据的关键任务应用程序,这意味着系统要经受实时约束,以保证在预定义的时间约束内做出响应,也称为“最后期限”。主要区别在于体系结构–虽然QNX基于消息传递体系结构,但VxWorks适合于共享内存体系结构。消息传递是内核设计的基础,内核设计允许系统将信息从一个任务传递到另一任务或系统中的其他多个任务。共享内存体系结构是指具有自己的专用地址空间的系统,用于物理分布式内存。
3. QNX和VxWorks的核心
两种实时操作系统之间的主要区别之一是QNX是基于微内核的OS,而VxWorks是单片内核。微内核就像一个小型操作系统,利用系统调用来管理诸如地址空间管理,线程管理和进程间通信之类的基本服务。它指的是需要有限的原语集和最小的软件依赖性来实现OS的系统。另一方面,单片内核在受保护的内核空间中管理所有基本服务和用户定义的服务,包括进程间通信。作为单片内核,VxWorks是独立的。
4. 调度
每个线程或进程在QNX中都有其自己的优先级。 在QNX下,所有进程都在优先级驱动的抢占基础上运行,这意味着优先级最高的进程将首先访问CPU,并且优先级的范围为0到31。调度是实时进行的,每个线程都继承其父级的优先级。 默认。 当两个线程共享相同的优先级时,QNX使用其他调度方法,例如FIFO,循环调度和零星调度。 另一方面,VxWorks仅使用两种调度算法,即基于优先级的抢占式调度和循环调度。 它们共同为用户提供了更大程度的控制权,以进行有效的调度。
总结
两者都是基于内核的实时操作系统,适用于需要在预定义的时间限制(即期限)内处理和完成任务的实时应用程序。 两者的业务都超过25年,并且专门从事嵌入式产品和系统的开发,但这就是所有相似之处的终结。 QNX是一个基于微内核的实时操作系统,它非常有趣,这要归功于其基于消息传递的体系结构,该体系结构非常适合制作可靠的分布式系统。 VxWorks是基于共享内存架构的单片内核,使其非常适合大型工业环境,例如汽车系统,航空电子设备,消费类电子产品等。