- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
qnx介绍(新)
QNX是一个实时的、嵌入式的、微内核的、基于优先级的、消息传递的、抢占式多任务、多用户、具有容错能力的分布式网络操作系统。多年来,QNX实时系统以其高度可靠的实时性获得了业界的广泛认可,成为X86平台上最好的嵌入式实时操作系统之一。
QNX实时操作诞生于1951,最初名为QUNIX(Quich UNIX),后来由于版权问题,更名为QNX。多年来一直推陈出新,目前己推出6.6版。QNX的体系结构是真正的微内核体系结构,QNX有一个非常小的微内核(约为12K),其核心仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理,进程在独立的地址空间运行它遵循POSIX.1 和POSIX.2 部分遵循POSIX.1b
图3.5 QNX的体系结构
基于消息的进程间通信
进程间通信是微内核各个模块得以协调工作的关键,不仅如此,当多个用户线程同时运行时,特别是在实时多任务环境下,操作系统必须提供线程间通讯的机制。进程间通讯(IPC)也是设计合作进程的应用软件的关键。系统为程序员提供一个简单而且强大的IPC功能,可以大大简化程序开发的工作量。QNX是同类嵌入式系统中首先采用消息传递技术作为IPC基本方式的商业嵌入式操作系统。该系统的强大功能和结构简单性要归功于整个系统整合了消息传递机制。
在QNX里,一个消息是在进程间传递的小小数据包。系统并没有定义消息的内容,也没有赋予其任何特殊的含义,只是让消息的发送者和接收者能理解消息内数据的含义。消息传递不仅允许进程间相互传递数据,而且为多进程同步提供了方法。当发送、接收和应答消息的事件发生时,进程本身的状态也发生了变化,这些状态变化影响着进程的运行,主要是运行状态。一旦内核知道进程的状态和优先级,就可以根据这些状态对所有的进程进行高效的调度,以使CPU的资源得到高效的利用。
实时程序和任务需要很高的可靠性和实时性,所以应用程序的设计采用了进程和线程模型。应用程序由一些进程组成,这些进程需要一种可靠的进程间通讯方式。Neutrino的消息传递方式可以帮助提高应用程序的可靠性。QNX微内核提供的消息传递的实现方式是阻塞方式的send()、Receive()和Reply():
(l)一个进程向其他进程发送消息,需要启动一个send(),此进程将被阻塞,直到目标进程使用Receive()接受信息,处理消息,并使用Reply()发送一个反馈信息,此进程才被唤醒。
(2)如果一个进程执行一个Receive(),而此时没有接收到需要的消息,此进程将被阻塞,直到其他进程执行一个相关的send()才被唤醒。
(3)因为这些基本操作(或原语)不经排队直接在进程间拷贝数据,消息传送的性能接近底层硬件的内存带宽。
(4)在QNX中所有的系统服务都建立在消息传送基本操作的基础上。
在QNX中,进程可以要求这些请求消息以优先级的次序递送(而不是以提交时间为次序),高优先级进程将阻塞低低优先级的进程。这种消息驱动的优先级机制巧妙的避免了优先级逆转(优先级逆转指的是这样一种情形,低优先级的进程拥有高优先级所需要的资源从而阻塞了高优先级的进程的执行)。例如,一个进程正在使用某项临界资源,这时有一个更高优先级的进程也要使用这个资源,因为是临界资源,所以高优先级的进程被堵塞,遇到这种情况系统会自动将占用临界资源的低优先级进程的优先级提高到适当级别,使其与被堵塞的高优先级的进程优先级别相近或相等,这样原先低优先级的进程可以很快的执行完,然后释放临界资源,消除低优先级的进程对高优先级进程的堵塞。
消息传输支持多块消息,这样一个在进程间传递的消息不需要占用一块单一的连续的内存空间。实际上是,发送和接收进程可以指定一个MX表用来指示发送和接收的消息驻留在内存中的位置,这样就允许发送消息的头部和数据分别位于不同的块中,这些消息块的首尾地址被记录在MX中,这样来生成一个连续的消息,提高了消息传递的灵活性和实时性。
文档评论(0)