核心模組相比於應用程式

2021-10-12 17:16:56 字數 735 閱讀 3946

在我們深入之前, 有必要強調一下核心模組和應用程式之間的各種不同.

不同於大部分的小的和中型的應用程式從頭至尾處理乙個單個任務, 每個核心模組只註冊自己以便來服務將來的請求, 並且它的初始化函式立刻終止. 換句話說, 模組初始化函式的任務是為以後呼叫模組的函式做準備; 好像是模組說, " 我在這裡, 這是我能做的."模組的退出函式( 例子裡是 hello_exit )就在模組被解除安裝時呼叫. 它好像告訴核心, "我不再在那裡了, 不要要求我做任何事了."這種程式設計的方法類似於事件驅動的程式設計, 但是雖然不是所有的應用程式都是事件驅動的, 每個核心模組都是. 另外乙個主要的不同, 在事件驅動的應用程式和核心**之間, 是退出函式: 乙個終止的應用程式可以在釋放資源方面懶惰, 或者完全不做清理工作, 但是模組的退出函式必須小心恢復每個由初始化函式建立的東西, 否則會保留一些東西直到系統重啟.

偶然地, 解除安裝模組的能力是你將最欣賞的模組化的其中乙個特色, 因為它有助於減少開發時間; 你可測試你的新驅動的連續的版本, 而不用每次經歷漫長的關機/重啟週期.

作為乙個程式設計師, 你知道乙個應用程式可以呼叫它沒有定義的函式: 連線階段使用合適的函式庫解決了外部引用. printf 是乙個這種可呼叫的函式並且在 libc 裡面定義. 乙個模組, 在另一方面, 只連線到核心, 它能夠呼叫的唯一的函式是核心輸出的那些; 沒有庫來連線.在 hello.c 中使用的 printk 函式, 例如, 是在核心中定義的 printf 版本並且輸出給模組. 它表現類似於原始的函式, 只有幾個小的不同, 首要的乙個是缺乏浮點的支援.

核心模組相比於應用程式

不同於大部分的小的和中型的應用程式從頭至尾處理乙個單個任務,每個核心模組只註冊自己以便來服務將來的請求,並且它的初始化函式立刻終止.換句話說,模組初始化函式的任務是為以後呼叫模組的函式做準備 好像是模組說,我在這裡,這是我能做的.模組的退出函式 例子裡是 hello exit 就在模組被解除安裝時呼...

核心模組和應用程式的對比

應用程式是從頭到尾執行單個任務 模組卻只是預先呼叫初始化函式註冊自己,然後等待以後被呼叫,最後使用exit函式解除安裝自己,從而退出核心。模組僅僅被鏈結到核心,所以它能呼叫的函式僅僅是由核心到處的那些函式。printk就是乙個核心中功能相當於printf的函式,但是printk缺乏對浮點數的支援。使...

驅動程式設計學習 核心模組與應用程式區別

核心模組相比於應用程式 每個核心模組只註冊自己以便來服務將來的請求,並且它的初始化函式立刻終止.換句話說,模組初始化函式的任務是為以後呼叫模組的函式做準備 好像是模組說,我在這裡,這是我能做的.模組的退出函式 例子裡是hello exit 就在模組被解除安裝時呼叫.它好像告訴核心,我不再在那裡了,不...