QNX是一个类unix实时操作系统,遵循POSIX 1003.1标准以及POSIX实时标准,主要针对嵌入式系统市场。它最初是在1980年代早期由加拿大公司量子软件系统(Quantum Software Systems)开发的,后来更名为QNX软件系统(QNX Software Systems),被广泛应用于包括汽车,机器人,医疗设备,铁路,重型机械,工业控制,航空军事等领域。
QNX的内核是一个可移植的内核,这使得QNX可以很好的支持多种CPU架构,例如x86,ARM等。
QNX是一个微内核操作系统,它的内核非常小,只包含了线程服务,信号服务,消息传递,同步服务,调度服务,定时器服务,进程管理服务等最基本的服务,其他的功能都是以进程的形式运行在用户空间,这些进程包括文件系统,网络协议栈,驱动程序等。
QNX微内核架构
大部分操作系统都划分为两个部分:内核和用户空间。内核是操作系统的核心,它负责管理系统的硬件资源,提供基本的服务。用户空间是用户程序运行的空间。用户空间的程序通过系统调用的方式调用内核提供的服务,例如创建进程,创建线程,创建文件,读写文件等。
图1-1显示了一个常规的只有包含内核的操作系统架构,常见在一些资源受限的例如单片机嵌入式系统中。整个系统没有提供内存保护,当应用程序或驱动等某个地方出现问题时,会导致整个系统崩溃。
图1-1 传统的操作系统架构
图1-2显示了一个linux操作系统的架构模型。linux操作系统的内核是一个单体内核,它包含了所有的服务,例如设备驱动,内存管理,文件系统,网络协议栈等。
图1-2 linux操作系统架构
图1-3显示了一个QNX操作系统的架构模型。清晰的显示了微内核与用户空间的关系。微内核只提供了最基本的服务,在用户空间,包括设备驱动都是已进程的方式运行,可以实现动态加载、卸载、更新、升级等。当某个进程出现问题时,不会影响其他进程,从而提高了系统的可靠性。
图1-3 QNX操作系统架构
目标
本教程主要通过使用QEMU来模拟一个X86_64硬件架构虚拟机,在此虚拟机上部署QNX系统,通过亲自动手操作学习QNX系统相关知识以此加深对QNX系统的理解…