ZYNQ QNX开发——Resource Manger知识点总结

文章是对官方文档Resource Manger部分的总结,写得不是很有条理,仅是自己对这部分学习认识的一个总结,希望对看到的人有所帮助。
QNX OS是微内核操作系统,其内核仅仅提供进程调度、进程通讯等服务。文件访问、设备驱动等服务都属于用户空间的任务,下图是QNX系统的架构图

除了内核外其它所有进程都属于用户空间,内核作为一个软件总线,将其它所有资源互相连接起来,这种结构看起来像一个团队而不是层次结构,几个相同等级的“player”通过内核相互协调完成任务。

总的来看,资源管理器就是一个在文件系统名称空间中注册了一个名称的进程。其它进程使用其路径来与资源管理器通信。

资源管理器通常用来向各种各样类型的设备提供接口,涉及到管理实际的硬件设备。在其它操作系统这个功能作用通常归为设备驱动。但在QNX系统中,资源管理器不像是设备驱动,它是从内核中剥离出来,看起来就像其它用户级程序一样。若我们需要针对自己的板卡驱动硬件,这个驱动程序的开发就是资源管理器的开发。

在QNX中,将应用程序叫做Client,我们写的资源管理器程序需要为Client提供服务,并响应Client的消息。当应用程序调用一个需要路径名解析的函数(也就是要操作硬件设备)的时候,例如open(),rename() 函数会给进程管理器和资源管理器同时发送消息,来获得文件描述。一旦文件描述获得,应用程序就可以使用文件描述通过资源管理器发送消息给连接到路径名的设备。

资源管理器由四层组成:

  • 线程池层(最顶层)
  • 调度层
  • 资源管理器层
  • I/O层(最底层)
  • (1)线程池层可以实现多线程处理任务,这个层可以独立于资源管理器层级结构之外。

    (2)调度层实现对消息的分类和派分,Client的消息种类有很多例如有I/O消息、select、pulse和其它自定义消息等。这些消息的处理函数是不同的,调度层根据消息类别调度其相对应的资源。如下图。

    (3)资源管理器层,管理着资源管理器的大部分细节,他的任务是:
    解析到来的消息
    调用相对应的handler来处理消息
    这一层处理的消息都是IO消息。
    (4)IO层,对到来的IO消息的具体实现。
    ---------------------
    作者:恰_同学少年
    来源:CSDN
    原文:https://blog.csdn.net/qq_34322603/article/details/78864444

    最新文章

    最新文章