Linux 是一個源碼開放的操作系統,無論是普通用戶還是企業用戶都可以編寫自己的內核代碼,再加上對標準內核的裁剪從而制作出適合自己的操作系統。目前有很多中低端用戶使用的網絡設備的操作系統是從標準 Linux 改進而來的,這也說明了有越來越多的人正在加入到 Linux 內核開發團體中。
一個或多個內核模塊的實現并不能滿足一般 Linux 系統軟件的需要,因為內核的局限性太大,如不能在終端上打印,不能做大延時的處理等等。當我們需要做這些的時候,就需要將在內核態采集到的數據傳送到用戶態的一個或多個進程中進行處理。這樣,內核態與用戶空間進程通信的方法就顯得尤為重要。在 Linux 的內核發行版本中沒有對該類通信方法的詳細介紹,也沒有其他文章對此進行總結,所以本文將列舉幾種內核態與用戶態進程通信的方法并詳細分析它們的實現和適用環境。
Linux 是一個源碼開放的操作系統,無論是普通用戶還是企業用戶都可以編寫自己的內核代碼,再加上對標準內核的裁剪從而制作出適合自己的操作系統。目前有很多中低端用戶使用的網絡設備的操作系統是從標準 Linux 改進而來的,這也說明了有越來越多的人正在加入到 Linux 內核開發團體中。
一個或多個內核模塊的實現并不能滿足一般 Linux 系統軟件的需要,因為內核的局限性太大,如不能在終端上打印,不能做大延時的處理等等。當我們需要做這些的時候,就需要將在內核態采集到的數據傳送到用戶態的一個或多個進程中進行處理。這樣,內核態與用戶空間進程通信的方法就顯得尤為重要。在 Linux 的內核發行版本中沒有對該類通信方法的詳細介紹,也沒有其他文章對此進行總結,所以本文將列舉幾種內核態與用戶態進程通信的方法并詳細分析它們的實現和適用環境。
source code 2