Linux內(nèi)核的構(gòu)成

文章出處 : http://www.wowotech.net/linux_kenrel/11.html (感謝wowo科技)

  1. 簡(jiǎn)述
    Linux內(nèi)核簡(jiǎn)稱kernel是整個(gè)操作系統(tǒng)的最底層,它負(fù)責(zé)整個(gè)硬件的驅(qū)動(dòng)吉执,以及提供各種系統(tǒng)所需的核心功能的圆,包括防火墻機(jī)制站超、是否支持LVM或Quota等文件系統(tǒng)等等布蔗,如果內(nèi)核不認(rèn)識(shí)某個(gè)最新的硬件棱烂,那么硬件也就無(wú)法被驅(qū)動(dòng)境输,你也就無(wú)法使用該硬件 仪或。
  2. 組成
    一個(gè)完整的Linux內(nèi)核一般由5部分組成幼东,它們分別是進(jìn)程管理臂容、內(nèi)存管理、進(jìn)程間通信根蟹、虛擬文件系統(tǒng)和網(wǎng)絡(luò)接口 脓杉。


    Linux內(nèi)核整體架構(gòu).png
  1. Process Scheduler,也稱作進(jìn)程管理简逮、進(jìn)程調(diào)度球散。負(fù)責(zé)管理CPU資源,以便讓各個(gè)進(jìn)程可以以盡量公平的方式訪問(wèn)CPU散庶。
    進(jìn)程調(diào)度是Linux內(nèi)核中最重要的子系統(tǒng)蕉堰,它主要提供對(duì)CPU的訪問(wèn)控制。因?yàn)樵谟?jì)算機(jī)中悲龟,CPU資源是有限的屋讶,而眾多的應(yīng)用程序都要使用CPU資源,所以需要“進(jìn)程調(diào)度子系統(tǒng)”對(duì)CPU進(jìn)行調(diào)度管理须教。
    進(jìn)程調(diào)度子系統(tǒng)包括4個(gè)子模塊(見(jiàn)下圖)皿渗,它們的功能如下:


    進(jìn)程調(diào)度.gif

    1.1) Scheduling Policy,實(shí)現(xiàn)進(jìn)程調(diào)度的策略轻腺,它決定哪個(gè)(或哪幾個(gè))進(jìn)程將擁有CPU羹奉。
    1.2) Architecture-specific Schedulers,體系結(jié)構(gòu)相關(guān)的部分约计,用于將對(duì)不同CPU的控制,抽象為統(tǒng)一的接口迁筛。這些控制主要在suspend和resume進(jìn)程時(shí)使用煤蚌,牽涉到CPU的寄存器訪問(wèn)耕挨、匯編指令操作等。
    1.3) Architecture-independent Scheduler尉桩,體系結(jié)構(gòu)無(wú)關(guān)的部分筒占。它會(huì)和“Scheduling Policy模塊”溝通,決定接下來(lái)要執(zhí)行哪個(gè)進(jìn)程蜘犁,然后通過(guò)“Architecture-specific Schedulers模塊”resume指定的進(jìn)程翰苫。
    1.4) System Call Interface,系統(tǒng)調(diào)用接口这橙。進(jìn)程調(diào)度子系統(tǒng)通過(guò)系統(tǒng)調(diào)用接口奏窑,將需要提供給用戶空間的接口開(kāi)放出去,同時(shí)屏蔽掉不需要用戶空間程序關(guān)心的細(xì)節(jié)屈扎。

  2. Memory Manager埃唯,內(nèi)存管理。負(fù)責(zé)管理Memory(內(nèi)存)資源鹰晨,以便讓各個(gè)進(jìn)程可以安全地共享機(jī)器的內(nèi)存資源墨叛。另外,內(nèi)存管理會(huì)提供虛擬內(nèi)存的機(jī)制模蜡,該機(jī)制可以讓進(jìn)程使用多于系統(tǒng)可用Memory的內(nèi)存漠趁,暫時(shí)不用的內(nèi)存會(huì)通過(guò)文件系統(tǒng)保存在外部非易失存儲(chǔ)器中,需要使用的時(shí)候忍疾,再取回到內(nèi)存中闯传。
    內(nèi)存管理主要提供對(duì)內(nèi)存資源的訪問(wèn)控制。Linux系統(tǒng)會(huì)在硬件物理內(nèi)存和進(jìn)程所使用的內(nèi)存(稱作虛擬內(nèi)存)之間建立一種映射關(guān)系膝昆,這種映射是以進(jìn)程為單位丸边,因而不同的進(jìn)程可以使用相同的虛擬內(nèi)存,而這些相同的虛擬內(nèi)存荚孵,可以映射到不同的物理內(nèi)存上妹窖。
    內(nèi)存管理子系統(tǒng)包括3個(gè)子模塊(見(jiàn)下圖),它們的功能如下:


    內(nèi)存管理.gif

    2.1) Architecture Specific Managers收叶,體系結(jié)構(gòu)相關(guān)部分骄呼。提供用于訪問(wèn)硬件Memory的虛擬接口。
    2.2) Architecture Independent Manager判没,體系結(jié)構(gòu)無(wú)關(guān)部分蜓萄。提供所有的內(nèi)存管理機(jī)制,包括:以進(jìn)程為單位的memory mapping澄峰;虛擬內(nèi)存的Swapping嫉沽。
    2.3) System Call Interface,系統(tǒng)調(diào)用接口俏竞。通過(guò)該接口绸硕,向用戶空間程序應(yīng)用程序提供內(nèi)存的分配堂竟、釋放,文件的map等功能玻佩。

  3. VFS(Virtual File System)出嘹,虛擬文件系統(tǒng)。Linux內(nèi)核將不同功能的外部設(shè)備咬崔,例如Disk設(shè)備(硬盤税稼、磁盤、NAND Flash垮斯、Nor Flash等)郎仆、輸入輸出設(shè)備、顯示設(shè)備等等甚脉,抽象為可以通過(guò)統(tǒng)一的文件操作接口(open丸升、close、read牺氨、write等)來(lái)訪問(wèn)狡耻。這就是Linux系統(tǒng)“一切皆是文件”的體現(xiàn) 。
    文件系統(tǒng)的實(shí)質(zhì)猴凹,就是“存儲(chǔ)和組織數(shù)據(jù)的方法”夷狰,文件系統(tǒng)的表現(xiàn)形式,就是“從某個(gè)設(shè)備中讀取數(shù)據(jù)和向某個(gè)設(shè)備寫(xiě)入數(shù)據(jù)”郊霎。常見(jiàn)文件系統(tǒng)的類型 :FAT沼头、FAT32、NTFS书劝、EXT2进倍、EXT3,EXT4 购对。而為了兼容猾昆,操作系統(tǒng)或者內(nèi)核,要以相同的表現(xiàn)形式骡苞,同時(shí)支持多種類型的文件系統(tǒng)垂蜗,這就延伸出了虛擬文件系統(tǒng)(VFS)的概念。VFS的功能就是管理各種各樣的文件系統(tǒng)解幽,屏蔽它們的差異贴见,以統(tǒng)一的方式,為用戶程序提供訪問(wèn)文件的接口躲株。
    我們可以從磁盤片部、硬盤、NAND Flash等設(shè)備中讀取或?qū)懭霐?shù)據(jù)霜定,因而最初的文件系統(tǒng)都是構(gòu)建在這些設(shè)備之上的档悠。這個(gè)概念也可以推廣到其它的硬件設(shè)備捆探,例如內(nèi)存、顯示器(LCD)站粟、鍵盤、串口等等曾雕。我們對(duì)硬件設(shè)備的訪問(wèn)控制奴烙,也可以歸納為讀取或者寫(xiě)入數(shù)據(jù),因而可以用統(tǒng)一的文件操作接口訪問(wèn)剖张。Linux內(nèi)核就是這樣做的切诀,除了傳統(tǒng)的磁盤文件系統(tǒng)之外,它還抽象出了設(shè)備文件系統(tǒng)搔弄、內(nèi)存文件系統(tǒng)等等幅虑。這些邏輯,都是由VFS子系統(tǒng)實(shí)現(xiàn)顾犹。
    VFS子系統(tǒng)包括6個(gè)子模塊(見(jiàn)下圖)倒庵,它們的功能如下:


    虛擬文件系統(tǒng).gif

    3.1) Device Drivers,設(shè)備驅(qū)動(dòng)炫刷,用于控制所有的外部設(shè)備及控制器擎宝。由于存在大量不能相互兼容的硬件設(shè)備(特別是嵌入式產(chǎn)品),所以也有非常多的設(shè)備驅(qū)動(dòng)浑玛。因此绍申,Linux內(nèi)核中將近一半的Source Code都是設(shè)備驅(qū)動(dòng),大多數(shù)的Linux底層工程師(特別是國(guó)內(nèi)的企業(yè))都是在編寫(xiě)或者維護(hù)設(shè)備驅(qū)動(dòng)顾彰,而無(wú)暇估計(jì)其它內(nèi)容(它們恰恰是Linux內(nèi)核的精髓所在)极阅。
    3.2) Device Independent Interface, 該模塊定義了描述硬件設(shè)備的統(tǒng)一方式(統(tǒng)一設(shè)備模型)涨享,所有的設(shè)備驅(qū)動(dòng)都遵守這個(gè)定義筋搏,可以降低開(kāi)發(fā)的難度。同時(shí)可以用一致的形勢(shì)向上提供接口灰伟。
    3.3) Logical Systems拆又,每一種文件系統(tǒng),都會(huì)對(duì)應(yīng)一個(gè)Logical System(邏輯文件系統(tǒng))栏账,它會(huì)實(shí)現(xiàn)具體的文件系統(tǒng)邏輯帖族。
    3.4) System Independent Interface,該模塊負(fù)責(zé)以統(tǒng)一的接口(快設(shè)備和字符設(shè)備)表示硬件設(shè)備和邏輯文件系統(tǒng)挡爵,這樣上層軟件就不再關(guān)心具體的硬件形態(tài)了竖般。
    3.5) System Call Interface,系統(tǒng)調(diào)用接口茶鹃,向用戶空間提供訪問(wèn)文件系統(tǒng)和硬件設(shè)備的統(tǒng)一的接口涣雕。

  4. Network艰亮,網(wǎng)絡(luò)子系統(tǒng)。負(fù)責(zé)管理系統(tǒng)的網(wǎng)絡(luò)設(shè)備挣郭,并實(shí)現(xiàn)多種多樣的網(wǎng)絡(luò)標(biāo)準(zhǔn)迄埃。
    網(wǎng)絡(luò)子系統(tǒng)在Linux內(nèi)核中主要負(fù)責(zé)管理各種網(wǎng)絡(luò)設(shè)備,并實(shí)現(xiàn)各種網(wǎng)絡(luò)協(xié)議棧兑障,最終實(shí)現(xiàn)通過(guò)網(wǎng)絡(luò)連接其它系統(tǒng)的功能侄非。在Linux內(nèi)核中,網(wǎng)絡(luò)子系統(tǒng)幾乎是自成體系流译,它包括5個(gè)子模塊(見(jiàn)下圖)逞怨,它們的功能如下:


    網(wǎng)絡(luò)系統(tǒng).gif

    4.1) Network Device Drivers,網(wǎng)絡(luò)設(shè)備的驅(qū)動(dòng)福澡,和VFS子系統(tǒng)中的設(shè)備驅(qū)動(dòng)是一樣的叠赦。
    4.2) Device Independent Interface,和VFS子系統(tǒng)中的是一樣的革砸。
    4.3) Network Protocols除秀,實(shí)現(xiàn)各種網(wǎng)絡(luò)傳輸協(xié)議,例如IP, TCP, UDP等等业岁。
    4.4) Protocol Independent Interface鳞仙,屏蔽不同的硬件設(shè)備和網(wǎng)絡(luò)協(xié)議,以相同的格式提供接口(socket)笔时。
    4.5) System Call interface棍好,系統(tǒng)調(diào)用接口,向用戶空間提供訪問(wèn)網(wǎng)絡(luò)設(shè)備的統(tǒng)一的接口允耿。

  5. IPC(Inter-Process Communication)借笙,進(jìn)程間通信。IPC不管理任何的硬件较锡,它主要負(fù)責(zé)Linux系統(tǒng)中進(jìn)程之間的通信业稼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蚂蕴,隨后出現(xiàn)的幾起案子低散,更是在濱河造成了極大的恐慌,老刑警劉巖骡楼,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件熔号,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡鸟整,警方通過(guò)查閱死者的電腦和手機(jī)引镊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人弟头,你說(shuō)我怎么就攤上這事吩抓。” “怎么了赴恨?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵疹娶,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我伦连,道長(zhǎng)蚓胸,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任除师,我火速辦了婚禮,結(jié)果婚禮上扔枫,老公的妹妹穿的比我還像新娘汛聚。我一直安慰自己,他們只是感情好短荐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布倚舀。 她就那樣靜靜地躺著,像睡著了一般忍宋。 火紅的嫁衣襯著肌膚如雪痕貌。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,718評(píng)論 1 305
  • 那天糠排,我揣著相機(jī)與錄音舵稠,去河邊找鬼。 笑死入宦,一個(gè)胖子當(dāng)著我的面吹牛哺徊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播乾闰,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼落追,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了涯肩?” 一聲冷哼從身側(cè)響起轿钠,我...
    開(kāi)封第一講書(shū)人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎病苗,沒(méi)想到半個(gè)月后疗垛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铅乡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年继谚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡花履,死狀恐怖芽世,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情诡壁,我是刑警寧澤济瓢,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站妹卿,受9級(jí)特大地震影響旺矾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜夺克,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一箕宙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧铺纽,春花似錦柬帕、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至其馏,卻和暖如春凤跑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背叛复。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工仔引, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人褐奥。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓肤寝,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親抖僵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鲤看,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 首先來(lái)一張圖說(shuō)明GNU/Linux的基本的體系結(jié)構(gòu): 用戶模式和內(nèi)核模式 執(zhí)行進(jìn)程的模式有兩種:用戶模式和內(nèi)核模式...
    Joe_HUST閱讀 2,101評(píng)論 0 2
  • Linux系統(tǒng)一般有4個(gè)主要部分: 內(nèi)核、shell耍群、文件系統(tǒng)和應(yīng)用程序义桂。內(nèi)核、shell和文件系統(tǒng)一起形成了基本...
    偷風(fēng)箏的人_閱讀 3,257評(píng)論 1 17
  • 轉(zhuǎn)眼秋天已經(jīng)到來(lái)蹈垢,我春天回來(lái)的慷吊,那時(shí)還是萬(wàn)物復(fù)蘇,草長(zhǎng)鶯飛曹抬,桃花掩面溉瓶,扶柳依依。空氣里彌漫著新芽抽綠與泥土覺(jué)醒的芳...
    楓之云閱讀 854評(píng)論 6 7
  • 原來(lái)用scrollview實(shí)現(xiàn)過(guò)無(wú)限輪播堰酿,每張輪播圖是UIImageView 疾宏,有頁(yè)碼,有標(biāo)題触创, 用scrollV...
    ac986bb0e59a閱讀 643評(píng)論 0 5
  • 人一生中的黃金時(shí)代是哪個(gè)階段呢坎藐?如果把人的一生分為幼年、青年哼绑、成年岩馍、老年。你認(rèn)為的黃金時(shí)代是哪個(gè)呢抖韩?著名的文藝大師...
    虛度時(shí)光讀吧閱讀 368評(píng)論 0 0