Linux作業系統sysctl機制的思想與實現

2021-09-21 03:01:19 字數 863 閱讀 9069

續《linux的netlink機制》:其實只要同時提供實現乙個核心netlink的核心模組和乙個定製使用者策略的使用者空間netlink程式,你就可以完全控制linux核心了,這裡核心的netlink就是機制,而使用者的netlink就是策略,正好一套,這樣的機制是在太棒了,把自己的機制和策略用netlink隨意往linux裡面插,linux竟然成了乙個舞台了,實際情況就是這樣的。

linux中不乏使用者空間與核心空間的通訊的機制,比如netlink,procfs,sysctl,/dev下的裝置驅動,當然還有更xx的系統呼叫。其實這些都是機制和策略的結合,核心實現的是機制,而使用者實現的是策略,在**表現上,一般都是一套**,也就是一套程式,使用者空間的策略控制程式和核心空間的機制**邏輯,核心空間傻傻的為使用者服務,它只知道來命令就做事而根本不管是什麼命令以及這個命令達到了什麼效果,這就是linux,機制和策略分離,很好很強大。前面分析了netlink,其實正如《linux的netlink機制》說的,netlink必須提供一套程式才會發揮作用,乙個機制乙個策略,那麼sysctl當然也是這樣的,在linux中有sysctl機制,它可以控制和改變核心中的變數,然後各個模組可以根據這些變數的值來採取不同的行為,這些變數就好像開關一樣負責核心中一些重要機制的開關和微調。 

在核心中sysctl機制的實現十分簡單,和linux核心的大多數機制一樣,採用先註冊後使用的方式,只要你register了乙個sysctl的實體,那麼在使用者空間你就可以控制你註冊的實體變數了,然後在核心中你就可以用這些變數,根據這些變數的不同值來採取不同的動作,核心中的sysctl實現根本不涉及任何使用者策略方面的東西,僅僅是註冊,具體如何使用,那純粹是使用者設計該sysctl實體時要考慮的事情。下面就是乙個例子: 

static struct ctl_table zhaoya_test = { 

Linux作業系統sysctl機制的思想與實現

續 linux的netlink機制 其實只要同時提供實現乙個核心netlink的核心模組和乙個定製使用者策略的使用者空間netlink程式,你就可以完全控制linux核心了,這裡核心的netlink就是機制,而使用者的netlink就是策略,正好一套,這樣的機制是在太棒了,把自己的機制和策略用net...

Linux作業系統sysctl機制的思想與實現

續 linux的netlink機制 其實只要同時提供實現乙個核心netlink的核心模組和乙個定製使用者策略的使用者空間netlink程式,你就可以完全控制linux核心了,這裡核心的netlink就是機制,而使用者的netlink就是策略,正好一套,這樣的機制是在太棒了,把自己的機制和策略用net...

Linux系統中sysctl命令

sysctl n e w variable value sysctl n e p default etc sysctl.conf sysctl n e a常用引數的意義 w 昨時改變某個指定引數的值,如 sysctl w net.ipv4.ip forward 1 a 顯示所有的系統引數 p 從指定...