QNX操作系统简述

QNX Neutrino实时操作系统的原理

  QNX Neutrino RTOS的主要目标是以一种健壮的、可扩展的形式提供开放系统POSIX API,适用于广泛的系统——从微小的、资源受限的嵌入式系统到高端分布式计算环境。该操作系统支持多个处理器架构,如x86和ARM。对于关键的应用程序,健壮的架构也是基础,因此操作系统灵活和完整地使用MMU硬件。

微内核架构

  流行语常常时而流行时而过时。供应商常常将时下流行的术语应用到他们的产品上,不管这些术语是否真正适合。
  微内核这个词已经很流行了。尽管许多新的操作系统被称为“微内核”(甚至是“纳米内核”),但如果没有一个明确的定义,这个术语可能没有多大意义。

  让我们来定义一下这个术语。微内核操作系统的结构是一个微型内核。微内核本身没有文件系统和操作系统的许多其他服务;这些服务是由可自由配置的。

  设计一个微内核操作系统的真正目标不是简单地“使它变小”。微内核操作系统体现了操作系统功能方法的根本性变化。模块化是关键,规模只是一个副作用。冠以一个内核为“微内核”的原因如果仅仅因为它恰好很小,那么就忽略了“微内核”要点。

  由于微内核提供的IPC服务被用来“粘合”操作系统本身,这些服务的性能和灵活性决定了最终操作系统的性能。除了IPC服务外,在提供的服务和实时性能方面,微内核与实时执行程序大致相当。
在这里插入图片描述

  QNX中微子实时操作系统由一个小型微内核组成,它管理着一组协作的进程。
如下图所示,这个结构看起来更像一个团队,而不是一个层级,因为几个级别相同的“玩家”通过协调内核相互作用。

在这里插入图片描述

  QNX中微子就像一种“软件总线”,让你可以动态地插入/退出操作系统模块。

真正的内核

  内核是任何操作系统的核心。在某些系统中,“内核”包含如此之多的功能,以致于它实际上就是整个操作系统!
但我们的微内核是真正的内核。首先,就像实时执行的核心一样,它非常小。其次,它只致力于一些基本服务:

•通过POSIX线程创建原语的线程服务
•通过POSIX信号原语提供信号服务
•消息传递服务——微内核处理整个系统中所有线程之间的所有消息路由。
•通过POSIX线程同步原语的同步服务。
•调度服务——微内核使用各种POSIX实时调度策略来调度线程的执行。
定时器服务——微内核提供了丰富的POSIX定时器服务集。
•进程管理服务——微内核和进程管理器共同组成一个

  与线程不同,微内核本身从不被调度执行。处理器仅在显式内核调用、异常或响应硬件中断时执行微内核中的代码

系统进程

  除了强制性的微内核/进程管理器模块(procnto)提供的服务外,所有的操作系统服务都是通过标准进程处理的。一个配置丰富的系统可以包括以下内容:

•文件系统经理
•字符设备管理器
•本机网络管理器
•TCP / IP

系统进程vs用户编写的进程

  系统进程本质上与任何用户编写的程序没有区别——它们使用任何(适当特权的)用户进程可用的相同的公共API和内核服务。

  正是这种架构赋予了QNX Neutrino RTOS无与伦比的扩展性。
由于大多数操作系统服务都是由标准的系统进程提供的,因此增加操作系统的服务非常简单:只需编写新的程序来提供新的操作系统服务

  事实上,操作系统和应用程序之间的界限可能会变得非常模糊。系统服务和应用程序之间的唯一真正区别是 操作系统服务为客户端管理资源。

设备驱动

  设备驱动程序允许操作系统和应用程序以通用的方式使用底层硬件(例如,磁盘驱动器、网络接口)。

  虽然大多数操作系统需要设备驱动程序与操作系统本身紧密绑定,但QNX Neutrino的设备驱动程序可以像标准进程一样启动和停止。

  添加设备驱动程序不会影响os驱动程序的任何其他部分,可以像其他应用程序一样开发和调试。

进程间通信

  在典型的实时多任务环境中,当多个线程并发运行时,操作系统必须提供允许它们彼此通信的机制。

  进程间通信(IPC)是将应用程序设计为一组协作的进程的关键,在这些进程中,每个进程处理整体中定义良好的一部分。
  该操作系统提供了一组简单但功能强大的IPC功能,极大地简化了由协作进程组成的应用程序的开发工作。

消息传递

  QNX Neutrino是第一个使用消息传递作为IPC基本手段的商业操作系统。操作系统的强大、简单和优雅在很大程度上归功于在整个系统中完全集成了消息传递方法。

  在QNX中微子中,消息是从一个进程传递到另一个进程的一组字节。
操作系统对消息的内容没有特别的意义——消息中的数据对消息的发送者和接收者都有意义,但对其他人没有意义。

消息传递不仅允许进程相互传递数据,还提供了同步多个进程执行的方法。在发送、接收和回复消息时,进程会经历各种“状态更改”,这些“状态更改”会影响进程何时运行以及运行多长时间。知道它们的状态和优先级,微内核可以尽可能高效地调度所有进程,以最大限度地利用它们CPU资源。因此,这个单一的、一致的方法——消息传递——在整个系统中不断地运行。

实时和其他关键任务应用程序通常需要一种可靠的IPC形式,因为组成此类应用程序的流程是如此紧密相关。由QNX中微子的信息传递设计强加的纪律有助于给应用程序带来秩序和更高的可靠性。

Guess you like

Origin blog.csdn.net/weixin_42314225/article/details/119745575