QNX中库的链接与资源管理

一、链接

  系统中会提供一些共同的库,如printf()、malloc()、write()等。
  静态链接(Statically link)是说程序与特定的库文件在链接时链在一起,这时我们不能改变这种链接状态,除非我们重新链接。静态链接的程序通常以.a结尾,如libc.a。
  动态链接(Dynamically link)是说程序中包含了所需要链接库的加载信息,并在运行时加载并链接这些库文件。动态链接的程序通常以.so结尾,如libc.so。

 

二、资源管理器
  资源管理器(Resource managers)通常提供了各种设备的接口。它与其他系统中的设备驱动(Device Driver)很像,但是与驱动不同的是它与核心之间没有任何隐藏的接口,实际上和普通的用户端程序没什么区别。
  以下是实现资源管理器的好处:
  ・能够支持基于POSIX API的客户端
  ・能够减少接口的种类
  ・能够支持命令行的访问
  通常有以下两种资源管理器:
  ・设备资源管理器(Device resource managers):会在文件系统中注册为一个单独的文件,通常代表一个单独的设备,通常有资源管理库来处理多数面向POSIX设备的接口。如一个串口设备注册为/dev/ser1,当执行ls -l /dev时,设备资源管理器不需要相应此类事件,这使得用户可以更专心于如果处理设备的各种细节。
  ・文件资源管理起(Filesystem reource managers):通常注册为一个加载点(mount point),其目录下的所有都由此管理器管理。如tar能够提供tar文件的资源管理,其中可以执行cd和ls命令。
  一旦一个资源管理器注册一个路径前缀后,当程序试图对这个路径调用open()、read()、write()等时就会接收到从IPC发送来的消息。

1、程序构造
  初始化接口
  向进程管理器注册路径
  循环
    接收消息
    switch on 消息类型
      CASE io_open:
        处理
        END CASE
      CASE io_read:
        处理
        END CASE
      CASE io_write:
        处理
        END CASE
    end switch
  end循环
2、资源管理器的共同库
  有些时候资源管理器不希望处理一些时间,这时共同库可以提供一个默认处理如①返回ENOSYS,表示不支持这个功能②提供一些默认的处理。如
  ・open()、dup()、close()
  ・Multiple thread handling
  ・Dispatch functions
  ・Combine messages
  ・Second-level default message handling

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值