前言
说到操作系统,先来列举一些 UNIX 和 类Unix 操作系统
分类 | 操作系统 |
UNIX System V家族 | A/UX、AIX、HP-UX、IRIX、LynxOS、SCO OpenServer、Tru64、Xenix、Solaris、OS/2 |
BSD UNIX-386BSD家族 | BSD/OS、FreeBSD、NetBSD、NEXTSTEP、Mac OS X、iOS、OpenBSD、SUN OS、 OpenSolaris |
UNIX-Like | GNU、Linux、Android、Debian、Ubuntu、Red Hat、Linux Mint、Minix、QNX、GNU/Linux、GNU/Hurd、Debian GNU/Hurd、GNU/kFreeBSD、StartOS |
其他 | DOS、MS-DOS、Windows、React OS |
什么是QNX?
QNX是一种商用的分布式、嵌入式、可规模扩展、遵从POSⅨ规范的类Unix实时操作系统。
QNX是微内核架构,其核心仅提供4种服务,分别为:进程调度、进程间通信、底层网络通信和中断处理。驱动程序、协议栈、文件系统、应用程序等都在微内核之外内存受保护的安全的用户空间内运行,组件之间能避免相互影响,在遇到故障时也能重启。
下图为QNX系统架构图:
什么是QNX内存保护?
对许多依照POSIX1.003.1标准实现的实时执行程序来说,它们的运行时环境通常是单进程、多线程的模型,线程之间没法做到内存保护,而这样的环境只是POSIX假设的多进程模型的一个子集,它不支持fork()函数。相比之下QNX Neutrino利用MMU,在受保护的环境中实现了POSIX的线程模型。
针对内存保护,有以下几种情况:
1. 不提供内存保护:所有程序位于同一个地址空间,应用程序可以访问所有空间,效率较高,但是程序指针错误可能造成内核崩溃,典型的比如Nuttx平板模式。
2. 单内核OS提供部分内存保护:用户层和系统层进行了隔离,内核和各种驱动、协议栈在同一个地址空间,应用程序在单独空间。内核模块处于一个保护空间,效率较高,应用程序无法访问,系统的稳定性也得到提高。由于内核模块处于保护空间,调试会比较困难。比如Linux系统。
3. 微内核OS提供完整的内存保护:内核处于一个被保护的地址空间,驱动程序、网络协议及应用程序等处于程序空间中。
QNX的微内核提供哪些服务?
- 通过POSIX线程创建原语提供的线程服务;
- 通过POSIX信号原语提供的信号服务;
- 消息传递服务,微内核处理整个系统中所有线程之间的消息路由;
- 通过POSIX线程同步原语提供的同步服务;
- 调度服务,微内核使用各种POSIX实时调度策略来调度线程执行;
- 定时器服务,微内核提供了丰富的POSIX定时器服务集;
- 进程管理服务,微内核与进程管理器一起组成一个叫procnto的单元,进程管理器部分负责管理进程、内存,还有路径名空间。与线程不同,微内核本身不会被调度执行。处理器只在微内核中执行系统调用、异常、硬件中断响应等。
- QNX Neutrino操作系统的微内核,管理一组协作的进程,如下图所示,这种结构不是一种层级的组织,更像是一个团队,因为不同的进程可以通过内核来协调交互。QNX Neutrino充当一个“软件总线”的角色,可以在需要的时候动态的插入和移除系统模块。
QNX系统的优点
- 华丽的图形界面。
- 速度极快,其他操作系统没有办法和它相比。
- 系统非常安全:QNX上没有计算机病毒,这是和Linux一样的,所以QNX RTP不存在被病毒破坏资料的危险,只有在微软Windows系统中才会有被病毒感染的噩梦。另外,QNX的用户管理相当出色,它绝对不会让一个没有输入正确密码的人闯入计算机系统中。
- QNX有一个最好的网页浏览器:QNX里的网页浏览器叫做“Voyager”,浏览网页的速度快得象火箭。和Voyager相比,微软的IE和网景公司的NC浏览器简直就是一辆破旧的老爷车。但是这个Voyager浏览器目前还有些BUG,QSSL公司的软件工程师正在改进它。
- QNX的最大不同:QNX完全不像Windows,那是一件好事情。它是免费的操作系统,可以在网上下载安装使用。它的使用和操作也十分的容易。