体系结构
QNX具有实时系统的基本特征
- 多任务
- 基于优先级的抢占式调度
- 快速的上下文切换
QNX是通过如下两个基本原理实现它独特的高效性、模块化和简易性
- 微内核(microkernel architecture)
- 基于消息的进程间通信(message-based interprocess communication)
QNX的微内核概述
qnx有一个非常高效的微内核,它负责管理一组同时工作的进程。
QNX微内核是个真正的微内核。首先,它非常小;其次,它的两个重要的任务是:
- 消息传递:处理操作系统所有进程间的消息传递
- 任务调度:当进程的状态改变或者中断发生时进行调度
QNX的系统进程包括
- ProcessManager(Proc)——进程管理器
- FilesystemManager(Fsys)——文件系统管理器
- DeviceManager(Dev)——设备管理器
- NetworkManager(Net)——网络管理器
除此之外,用户自定义进程(如inetdftp„)、设备驱动(如串、并口)等等。
QNX的微内核体系
QNX微内核的“软总线”体系结构(像硬件一样可“热插拔”)
QNX微内核负责如下任务
- 进程间通信(IPC)——微内核监督消息的路由(传递);同时还管理另外两种形式的IPC:代理(proxy)和信号(signal)
- 低级网络通信(low-level network communication)——微内核负责不同节点间消息的分发
- 进程调度(process scheduling)——微内核调度器决定接下去哪一个进程将会执行
- 一级中断处理(first-level interrupt handling)——所有的硬件中断和故障都将在第一时间路由到微内核然后传递到适当的驱动或系统管理器。
进程间通信IPC
QNX支持三种基本的IPC消息、代理和信号。
- 消息(Message)——QNX最基本的IPC,提供进程间同步通信,发送者和接收者有应答
- 代理(proxy)——消息的一种特殊形式,非常适合事件通知,发送者不用和接收者进行交互
- 信号(signal)——IPC的一种传统形式,通常用于支持异步IPC。
1.基于消息(Messages)的IPC
发送者必须得到接收者的应答,否则进程将被阻塞。也就是说,这种通信是同步通信。
函数原型
- Send()——发送消息
- Receive()——接收消息
- Reply()——给发消息者回消息(应答)
2.基于代理(proxies)的IPC
代理(proxy)是一种非阻塞性的消息机制,特别适合进行事件通知,发送进程不需要和接收进程进行交互。
使用代理的一些情况