QNX中庫的鏈結與資源管理

2021-05-22 11:13:48 字數 1342 閱讀 9572

一、鏈結

系統中會提供一些共同的庫,如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

linux程式與資源管理

程式與資源管理 1 關於man命令 man在查詢指令的用法的時候,到何處去查?其實就是在manpath中去查,而manpath在 etc man.conf中設定 ubuntu在 etc manpath.config中進行設定 當我們執行man的時候,會逐個查詢manpath 2 var log中的檔...

QNX系列 五 資源管理器(3)簡單的例子

資源管理器主要是解決多工不阻塞的問題,系統提供封裝好的函式給使用者使用。在系統中伺服器可以在不阻塞的條件下進行訊號的接收並且進行資料處理工作。這兩個歷程表示了大部分程式中的邏輯,比較重要的點總結如下 解決了阻塞問題之後,伺服器可以不斷的接受訊號並進行處理。include include includ...

Solaris的資源管理

注 以下文字轉貼自http blog.sina.com.cn u 45d51ebc010008tm 為了確保一些大型應用程式 如 oracle 執行良好 需要為其分配合理的系統資源,如 記憶體空間 訊號燈集 cpu時間等 這些系統資源的分配在以往的系統中通常通過可調的核心引數在 etc system...