[转]QNX简介介绍-QNX开发的优劣特点比较

141 篇文章 22 订阅
114 篇文章 20 订阅

如果你认为本系列文章对你有所帮助,请大家有钱的捧个钱场,点击此处赞助,赞助额0.1元起步,多少随意

声明:本文只用于个人学习交流,若不慎造成侵权,请及时联系我,立即予以改正

锋影

email:174176320@qq.com

 

系统简介

QNX是一个分布式、可扩展、遵从POSIX规范的类Unix硬实时操作系统。
QNX为微内核的架构,微内核只提供进程调度、进程间通信、底层网络通信和中断处理四种服务。驱动程序、协议栈、文件系统、应用程序等都在微内核之外内存受保护的安全的用户空间内运行,组件之间能避免相互影响,在遇到故障时也能重启。

QNX Neutrino通过两个基本的原则,达到了独一无二的有效性、模块化和简洁性:

  • 微内核架构
  • 基于消息的进程间通信

QNX是一个分布式、嵌入式、可规模扩展的实时操作系统。它遵循POSIX.1 (程序接口)和POSIX.2 (Shell和工具)、部分遵循POSIX.1b(实时扩展)。它最早开发于1980年,到现在已相当成熟。QNX是一个微内核实时操作系统,其核心仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理,其进程在独立的地址空间运行。所有其它OS服务,都实现为协作的用户进程,因此QNX核心非常小巧 (QNX4.x大约为12Kb)而且运行速度极快。

优缺点

  1、遵循POSIX标准,主要使用方式与编程接口与Linux相近,易学习。

  2、QNX是一个微内核的系统,你可以任意裁减,定制适合自己的最小化方案。

  3、QNX不区分驱动、系统服务和用户运用,可以自由实现。

  4、使用群体很小,没有很好的社区支持。出了问题能够提供帮组的人不多。

 

微内核架构

在微内核OS中,内核精简,只实现OS最基本的核心部分并提供相应的服务,基于这些服务可以扩展完整的OS功能。设计一个微内核OS的目标是模块化,而并非最小化。
微内核提供的IPC服务用于将操作系统本身“粘合”在一起,这些服务的性能和灵活性决定了系统最终的性能。可以使用IPC服务和其他附加的服务来扩展内核的功能。 用户编写的进程既可以作为应用程序,也可以作为底层OS功能来支持行业特定的应用程序。 操作系统本身变得“开放”并且易于扩展。 此外,用户编写的OS扩展也不会影响核心OS的基本可靠性。

QNX内存保护

对许多依照POSIX1.003.1标准实现的实时执行程序来说,它们的运行时环境通常是单进程、多线程的模型,线程之间没法做到内存保护,而这样的环境只是POSIX假设的多进程模型的一个子集,它不支持fork()函数。相比之下,QNX Neutrino利用MMU,在受保护的环境中实现了POSIX的线程模型。
一个真正的微内核会提供完整的内存保护,这个不仅适用于用户程序,也适用于OS组件,比如驱动程序、文件系统等。

针对内存保护,有以下几种情况:

  • 不提供内存保护:所有程序位于同一个地址空间,应用程序可以访问所有空间,效率较高,但是程序指针错误可能造成内核崩溃,典型的比如Nuttx平板模式。

     

    平板模式

  • 单内核OS提供部分内存保护:用户层和系统层进行了隔离,内核和各种驱动、协议栈在同一个地址空间,应用程序在单独空间。内核模块处于一个保护空间,效率较高,应用程序无法访问,系统的稳定性也得到提高。由于内核模块处于保护空间,调试会比较困难。比如Linux系统。

     

    单内核模式

  • 微内核OS提供完整的内存保护:内核处于一个被保护的地址空间,驱动程序、网络协议及应用程序等处于程序空间中。

     

    微内核模式

QNX Neutrino微内核

内核是操作系统的核心,在有些操作系统中,内核包含了很多功能,导致内核像是个完整的操作系统。而QNX的微内核是一个真正的内核,它非常小,并且只提供基本的服务:

  • 通过POSIX线程创建原语提供的线程服务;
  • 通过POSIX信号原语提供的信号服务;
  • 消息传递服务,微内核处理整个系统中所有线程之间的消息路由;
  • 通过POSIX线程同步原语提供的同步服务;
  • 调度服务,微内核使用各种POSIX实时调度策略来调度线程执行;
  • 定时器服务,微内核提供了丰富的POSIX定时器服务集;
  • 进程管理服务,微内核与进程管理器一起组成一个叫procnto的单元,进程管理器部分负责管理进程、内存,还有路径名空间。
    与线程不同,微内核本身不会被调度执行。处理器只在微内核中执行系统调用、异常、硬件中断响应等。

QNX Neutrino操作系统的微内核,管理一组协作的进程,如下图所示,这种结构不是一种层级的组织,更像是一个团队,因为不同的进程可以通过内核来协调交互。QNX Neutrino充当一个“软件总线”的角色,可以在需要的时候动态的插入和移除系统模块。

 

QNX Neutrino架构

进程及进程间通信

除了procnto单元提供的服务外,所有的系统服务都是通过标准的进程来处理的。一个配置丰富的QNX系统应该包括以下功能:

  • 文件系统管理器
  • 字符设备管理器
  • 图形用户界面
  • 本地网络管理器
  • TCP/IP

系统进程 vs 用户进程

系统进程与任何用户编写的进程本质上是不可区分的,它们使用相同的公共API和内核服务。正是这种架构也让QNX具备了无与伦比的可扩展性。由于大多数的操作系统服务由标准的系统进程提供,因此增强操作系统本身变得非常简单:只需编写新的程序来提供新的操作系统服务。实际上,操作系统和应用程序之间的界限可能会变得非常模糊,系统服务和应用程序之间唯一真正的区别是操作系统服务为客户管理资源。

假如你需要写一个数据库的服务器,这样一个进程怎么分类?
正如文件系统接受请求(通过消息)来打开文件和读写数据一样,数据库服务器也需要接受请求,尽管数据库服务器的请求可能更复杂,但是两者非常相似,需要提供API(由消息实现)给客户端进行资源访问。此外,它们都是独立的进程,可以由终端用户来编写,并且根据需要来进行启动和停止。
数据库服务器可能在某个任务中充当系统进程,而在另外的任务中充当应用户进程,但是这都不重要,重要的是QNX操作系统可以在不修改操作系统本身的标准组件的情况下,允许用户实现这样的进程,对于嵌入式开发人员来说,提供了很大的灵活性。

设备驱动程序允许操作系统和应用程序以通用的方式去访问低层的硬件(例如磁盘设备驱动器、网络接口)。虽然大多数的OS要求设备驱动程序与OS本身紧密绑定,但是QNX Neutrino的驱动程序能被当成一个标准的进程被启动和停止。因此,添加设备驱动程序不会影响OS的其他部分,可以像应用程序一样开发和调试驱动。

进程间通信

IPC(Interprocess Communication)进程间通信,是将应用程序设计成一组进程的关键,确保每个进程处理整体中的某一部分。QNX是第一个将消息传递作为IPC基本手段的商业操作系统,操作系统的强大、简单和优雅,在很大程度上归功于消息传递在整个系统中的完整集成。
在QNX Neutrino中,消息是从一个进程传递给另一个进程的字节包,消息的内容只对发送者和接收者有意义。
消息传递不仅允许进程相互传递数据,而且还提供了一种同步多个进程执行的方法。当进程发送、接收、回复消息时,它们会经历各种“状态变化”,这些“状态变化”,会影响它们的执行时间和时间长度。了解它们的优先级和状态,微内核可以尽可能有效的调度所有进程,最大限度来利用CPU资源。消息传递在整个系统中不断的起作用。
实时或关键任务,通常需要一套可靠的IPC机制,因为组成这些任务的进程之间关联很紧密。QNX Neutrino的消息传递设计所强加的规则,给应用程序带来了秩序和可靠性。

 

 

### 回答1: QNX和Linux是两种不同的操作系统。它们的区别在于: 1. QNX是实时操作系统,而Linux则不是。实时操作系统可以保证任务在规定的时间内完成,而非实时操作系统则不能保证。 2. QNX是商业操作系统,而Linux则是开源操作系统。商业操作系统需要购买授权才能使用,而开源操作系统则可以免费使用。 3. QNX的内核非常小,只有几百KB,而Linux的内核则非常大,有数百MB。这意味着QNX可以在非常小的设备上运行,而Linux则需要更多的资源。 4. QNX的安全性非常高,被广泛用于安全要求较高的领域,如航空、汽车等。而Linux的安全性则相对较低。 5. QNX开发语言主要是C和C++,而Linux则支持多种编程语言。 总的来说,QNX和Linux都有各自的优点和适用场景,需要根据具体需求来选择使用哪种操作系统。 ### 回答2: QNX和Linux是两种不同的操作系统,虽然它们都是开源的,但是它们在很多方面有着不同的特点和应用场景。 首先,QNX是一个实时操作系统,它专注于提供高度可靠和低延迟的实时响应性能。它可以处理完全预测的任务,如机器人技术和实时嵌入式系统。相比之下,Linux则是一个通用操作系统,可用于桌面计算机、服务器和移动设备等各种应用场景。 其次,QNX采用微内核架构,使得它更加灵活、可靠和安全。它的核心只包含实现最基本功能的代码,其他服务和功能则由它们自己的进程运行。这种结构有助于减少系统故障和安全漏洞,而且它可以更容易地进行模块化开发。Linux则采用单内核结构,这意味着所有的服务和功能都在同一个内核中运行。 再者,在工业控制领域,QNX非常重要。它是汽车和工业领域所需的实时性和可靠性的标准选择。相比之下,Linux虽然也在一些工业应用领域得到了应用,但是还没有达到QNX的水平。而Linux在服务业和云计算领域上则表现出色。 最后,QNX的商业模式不同于Linux。QNX是一个专有操作系统,需要收取商业使用费用。而Linux则是一个开源项目,可以根据自己的需要对源代码进行修改和分发。 总体来说,QNX和Linux都有自己的应用特点,所以没有优劣之分。其选择还是要根据具体的应用场景和需求来决定。 ### 回答3: QNX和Linux是两个不同的操作系统。QNX是由QNX公司开发的嵌入式实时操作系统,而Linux是由Linus Torvalds开发的自由及开源的类UNIX操作系统。这两个操作系统有以下几点不同: 1. 安全性:QNX非常注重安全性,因为QNX被广泛应用于汽车、医疗设备、航空航天等应用。因此,QNX的安全性比Linux更高。 2.实时性:在实时性方面,QNX比Linux表现更好,因为它被设计为实时操作系统,可以保证对事件的快速响应和同时处理多个任务。 3.可靠性:由于QNX适用于对系统性能有严格要求的应用程序,因此在可靠性方面表现更好。 4. 应用范围:QNX主要用于嵌入式系统,特别是实时应用程序,而Linux不仅可以用于桌面和服务器系统,也可以用于嵌入式系统。 5. 开发方式:QNX是一个专有系统,需要付费许可证才能使用和开发。而Linux是一个开源系统,任何人都可以使用和开发,并且成千上万的开发人员以及来自于全球的其它社区正在不断的为其增加新的功能。 总结:QNX和Linux都是非常成熟和可靠的操作系统,它们的不同之处在于其设计方向、特性和专业领域。QNX注重实时响应、可靠性和安全性,Linux侧重于通用性和开源性。尽管它们有很多不同之处,但它们都在不断发展,并为用户提供更多的选择和功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值