應用程序和內核模塊的區別

1.應用程序是從頭到尾執行單個任務;模塊卻只是預先註冊自己以便服務於將來的某個請求,
  其中,函數init_module(模塊的入口)的任務是爲以後調用模塊函數預先做準備,函數cleanup_module(模塊的第二入口)是在模塊卸載時調用。
2.應用程序可以調用它未定義的函數,因爲在連接過程能夠解析外部引用從而使用適當的函數庫;
  模塊僅僅被連接到內核,因此它僅能調用有內核導出的函數(如printk),而沒有任何可連接的庫。
3.應用程序開發過程中的段錯誤是無害的,並且總是可以使用調試器跟蹤到源代碼中的問題所在;
  內核模塊的一個錯誤即使不對整個系統是致命的,也至少會對當前進程造成致命錯誤。
4.應用程序運行於用戶空間,處理器禁止其對硬件的直接訪問以及對內存的未授權訪問;
  內核模塊運行於內核空間,可以進行所有操作。
5.應用程序一般不必擔心發生其他情況而改變它的運行環境;
  內核模塊編程則必須考慮併發問題的處理。

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