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消息的具體實現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章