Linux module(Linux 模組)
Linux作業系統的核心(kernel)是完全由C語言編寫而成。,符合POSIX標準,以GNU通用公共許可證釋出。
我們可以說Linux的kernel就是Linux, 可見kernel對於作業系統的重要性。
Linux module是什麼?
Linux module 就是能夠在執行的時候加入到Linux kernel, 並且可以從Linux kernel中去除的程式。 即 Binary code that is inserted and unloaded out of the static kernel image at run time。
Linux module 的好處(benefit)是什麼呢?
首先, 我們知道Linux kernel 本身是一個monolithic kernel(單核心)。 當我們的電腦is booted(被引導), 這個static binary(靜態二進位制的)的 就開始執行。 Linux kernel具有很多的functionality, 但是為了使得我們的Linux作業系統更加的靈活(flexible), 動態(dynamic),
當我們想要動態的向kernel中新增更多的functionalities, so that you donot have to recompile the entire kernel from scrach
and reboot。 所以Linux 作業系統引入了模組機制。 這樣, 當我們plug in a new device 的時候, you donnot have to rewrite the entire operating system from scrach。 Just add the new functionality to recognize your device。 我們所做的就是寫一個module, 當我們使用這個device的時候 , 我們只需要將我們寫的識別module插入到kernel中。 當我們不使用這個device的時候, uninstall the module from the kernel。
Linux module 是如何工作的?
當我們想要計算機加入一個新的device, 我們希望我們的kernel具有一個新的functionality 去和這個device 交流。 此時我們需要寫一個module, 從而處理這個加入的device。
kernel是唯一能夠和硬體交流的東西, 所以我們編譯(compile)我們的module, 然後將其加入到kernel中去。 加入module到kernel用到的指令是:
insmod.
使用指令insmod, 在module內部呼叫了函式init_modules, 於是將這個module插入到kernel中了(上圖未畫出新的的device(硬體))(上述kernel中的register——capability 表示module的完成的功能, 對該如何處理新的device的相關資訊)。
於是我們就可以通過kernel(利用編寫的module)想加入的新的device實現讀寫操作了。
當我們結束的時候, 我們可以使用指令rmmode 指令將這個module從kernel中刪除:
相關文章
- Linux module 程式設計Linux程式設計
- Python模組(module)Python
- NodeJS require a global module/package in linuxNodeJSUIPackageLinux
- Linux核心模組Linux
- Linux:Python報錯:No module named MySQLdbLinuxPythonMySql
- Linux下增加Apache的rewrite Module(轉)LinuxApache
- 前端模組化之ES Module前端
- js module bundle 模組捆綁JS
- Linux核心模組學習Linux
- Linux核心模組編譯Linux編譯
- webpack 模組熱更新 Hot Module ReplacementWeb
- ES6 module模組 import exportImportExport
- Java 9 的模組(Module)系統Java
- Linux無法登入,顯示module is unknownLinux
- 深入學習 Linux 核心模組Linux
- linux下python 模組呼叫LinuxPython
- Laravel-Module 模組開發一:評論模組實現Laravel
- [ES6深度解析]15:模組 Module
- Nginx的ngx_http_fastcgi_module模組NginxHTTPAST
- 如何實現 node module 模組匯入
- JavaScript 模組化程式設計 - Module PatternJavaScript程式設計
- Nginx安裝nginx-rtmp-module模組Nginx
- Linux下新增php的zip模組LinuxPHP
- 【linux】驅動-2-核心模組Linux
- 初識Linux核心-DIY核心模組Linux
- linux核心模組開發基礎Linux
- linux核心動態載入模組Linux
- nginx學習-ngx_http_rewrite_module模組NginxHTTP
- Linux作業系統網路模組Linux作業系統
- Linux下PAM模組學習總結Linux
- linux下php 加裝mssql模組薦LinuxPHPSQL
- Linux系統模組載入命令 - modprobeLinux
- Linux核心模組程式設計指南(轉)Linux程式設計
- Python的包(package)和模組(module)介紹PythonPackage
- ES Module,commonjs和Typescript模組系統JSTypeScript
- 前端學習 node 快速入門 系列 —— 模組(module)前端
- 從module的簡單實現到模組化
- 使用 nuxi build-module 命令構建 Nuxt 模組UXUI