linux內(nèi)核探索

定義

對(duì)待知識(shí)領(lǐng)域饲宛,我們總喜歡去下一個(gè)定義嗜价。操作系統(tǒng)是我們每天工作都要使用的東西,由于現(xiàn)代商業(yè)操作系統(tǒng)的復(fù)雜性和沒有統(tǒng)一的標(biāo)準(zhǔn)久锥,若對(duì)一個(gè)操作系統(tǒng)下定義并不能精確的描述操作系統(tǒng)所屬領(lǐng)域。根據(jù)經(jīng)驗(yàn)我們可以認(rèn)為操作系統(tǒng)就是在整個(gè)應(yīng)用系統(tǒng)中負(fù)責(zé)最基本功能和系統(tǒng)管理的那部分絮重。包括內(nèi)核歹苦、設(shè)備驅(qū)動(dòng)程序、啟動(dòng)引導(dǎo)程序殴瘦、命令行Shell或者GUI界面蚪腋、基本文件管理工具和系統(tǒng)工具。

嚴(yán)格的來講linux只是操作系統(tǒng)內(nèi)核本身屉凯,廣義上的linux則常用來指基于linux內(nèi)二的完整的操作系統(tǒng),它包括GUI組件和其它許多工具晓勇。

內(nèi)核到底是什么

GUI其實(shí)只是操作系統(tǒng)的表象哩簿,內(nèi)核才是操作系統(tǒng)內(nèi)在的核心。系統(tǒng)的其它部分必須依靠?jī)?nèi)核所提供的服務(wù)节榜,像管理硬件設(shè)備、分配系統(tǒng)資源等稼稿,內(nèi)核有時(shí)候被稱為管理者或者操作系統(tǒng)核心。

通常一個(gè)內(nèi)核由負(fù)責(zé)響應(yīng)中斷的中斷服務(wù)程序敞恋,負(fù)責(zé)進(jìn)程調(diào)度的CPU調(diào)度程序谋右,負(fù)責(zé)管理進(jìn)程地址空間的內(nèi)存管理程序以及網(wǎng)絡(luò)、進(jìn)程間通信等系統(tǒng)服務(wù)共同組成的改执。

內(nèi)核態(tài)和用戶態(tài)

內(nèi)核在有安全機(jī)制的操作系統(tǒng)中不同于普通程序,一般處于系統(tǒng)態(tài)(內(nèi)核態(tài))衬横,擁有受保護(hù)的內(nèi)存空間和訪問硬件設(shè)備的所有權(quán)限终蒂。這種系統(tǒng)狀態(tài)和被保護(hù)起來的內(nèi)存空間,統(tǒng)稱為內(nèi)核空間拇泣。

與內(nèi)核空間相對(duì)的,用戶所執(zhí)行的應(yīng)用程序在用戶空間執(zhí)行构眯。用戶態(tài)的應(yīng)用程序只能訪問允許它們使用的系統(tǒng)資源早龟,并且只使用某些特定的系統(tǒng)功能猫缭,不能直接訪問硬件,也不能訪問內(nèi)核劃分給其它應(yīng)用程序的內(nèi)存空間芝加。

內(nèi)核與應(yīng)用程序

應(yīng)用程序通過系統(tǒng)調(diào)用來和內(nèi)核通信射窒,當(dāng)一個(gè)應(yīng)用程序發(fā)起系統(tǒng)調(diào)用時(shí),內(nèi)核便代其執(zhí)行脉顿。在這種情況下應(yīng)用程序通過系統(tǒng)調(diào)用在內(nèi)核空間運(yùn)行,而內(nèi)核被稱為運(yùn)行在進(jìn)程上下文中来吩。應(yīng)用程序通過系統(tǒng)調(diào)用進(jìn)入內(nèi)核空間時(shí)應(yīng)用完成其工作的基本方式。

單內(nèi)核和微內(nèi)核

操作系統(tǒng)內(nèi)核可分為兩大陣營(yíng):?jiǎn)蝺?nèi)核和微內(nèi)核戚长。

單內(nèi)核

單內(nèi)核是一種較為簡(jiǎn)單的設(shè)計(jì)怠苔,通常以單個(gè)靜態(tài)二進(jìn)制文件存儲(chǔ)在磁盤中,整體上作為一個(gè)單獨(dú)的大過程柑司,所有的內(nèi)核服務(wù)都在這樣的一個(gè)大內(nèi)核地址空間上運(yùn)行帜羊。內(nèi)核服務(wù)都處于內(nèi)核態(tài),并身處同一內(nèi)核地址空間讼育,之間可以幾乎無(wú)性能損耗的相互通信。

單內(nèi)核具有簡(jiǎn)單和高性能等特點(diǎn)饥瓷。

微內(nèi)核

微內(nèi)核根據(jù)功能被分割成多個(gè)獨(dú)立的過程痹籍,每個(gè)過程都叫做一個(gè)服務(wù)器。所有的服務(wù)器都運(yùn)行在各自的地址空間上(大部分處于用戶空間)蹲缠,只有強(qiáng)烈請(qǐng)求特權(quán)服務(wù)的服務(wù)器才運(yùn)行在特權(quán)模式下。

微內(nèi)核服務(wù)器之間不能直接調(diào)用函數(shù)通信娜谊,而是通過消息傳遞通信斤讥。系統(tǒng)采用進(jìn)程間通信(IPC)機(jī)制,服務(wù)之間各自獨(dú)立派草,通過IPC互換消息铛楣,有效的避免了服務(wù)之間的失敗傳染。

IPC機(jī)制的開銷遠(yuǎn)高于函數(shù)調(diào)用蛉艾,而且在運(yùn)行時(shí)還會(huì)牽扯到內(nèi)核空間和用戶空間上下文切換衷敌,所以消息傳遞需要一些開銷拓瞪。所以在內(nèi)核的實(shí)際實(shí)現(xiàn)上大部分微內(nèi)核的操作系統(tǒng)也會(huì)讓大部分的服務(wù)放置與內(nèi)核中,這樣就可以直接調(diào)用函數(shù)面氓,消除消息傳遞的開銷蛆橡。

示例

windows NT和Mach(Mac OS X)都是典型的微內(nèi)核,不過在實(shí)際實(shí)現(xiàn)上呻拌,其所有服務(wù)都運(yùn)行在內(nèi)核空間睦焕。

linux是一個(gè)單內(nèi)核,不過linux汲取了微內(nèi)核的精華垃喊,并擁有模塊化設(shè)計(jì)、搶占式內(nèi)核初家、支持內(nèi)核線程以及動(dòng)態(tài)裝載內(nèi)核模塊等特性乌助。

linux內(nèi)核和UNIX內(nèi)核

linux內(nèi)核在設(shè)計(jì)時(shí)充分參考了已有的很多UNIX的內(nèi)核實(shí)現(xiàn),并且有一些創(chuàng)新方案炕泳。linux內(nèi)核和傳統(tǒng)的UNIX系統(tǒng)之間存在一些顯著的差異:

  • linux支持動(dòng)態(tài)加載內(nèi)核模塊
  • linux支持對(duì)稱多處理(SMP)機(jī)制
  • linux內(nèi)核可以搶占
  • linux內(nèi)核并不區(qū)分線程和一般進(jìn)程上祈,對(duì)于linux來說所有的進(jìn)程都一樣浙芙,只不過是其中的一些共享資源而已。
  • linux提供具有設(shè)備類的面向?qū)ο蟮脑O(shè)備模型嗡呼、熱插拔事件,以及用戶空間的設(shè)備文件系統(tǒng)sysfs
  • linux自由的態(tài)度南窗,以及樂于接受改變的心態(tài):任何改變都必須能通過簡(jiǎn)潔的設(shè)計(jì)及正確可靠的實(shí)現(xiàn)來解決現(xiàn)實(shí)中確實(shí)存在的問題郎楼。

引用

本文的寫作和學(xué)習(xí)中參考了以下資料
1.《Linux Kenel Development ~ Thrid Edition 》

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末呜袁,一起剝皮案震驚了整個(gè)濱河市简珠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌膘融,老刑警劉巖祭玉,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異屯耸,居然都是意外死亡蹭劈,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門多矮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哈打,“玉大人,你說我怎么就攤上這事料仗。” “怎么了格粪?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵氛改,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我疆导,道長(zhǎng)葛躏,這世上最難降的妖魔是什么悠菜? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任败富,我火速辦了婚禮,結(jié)果婚禮上篙顺,老公的妹妹穿的比我還像新娘充择。我一直安慰自己,他們只是感情好椎麦,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布观挎。 她就那樣靜靜地躺著,像睡著了一般造成。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上晒屎,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天缓升,我揣著相機(jī)與錄音,去河邊找鬼骇吭。 笑死歧寺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的成福。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蕴潦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起潭苞,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤此疹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蝗碎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蹦骑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年慈省,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片眠菇。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡边败,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捎废,到底是詐尸還是另有隱情笑窜,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布登疗,位于F島的核電站排截,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏谜叹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一荷腊、第九天 我趴在偏房一處隱蔽的房頂上張望艳悔。 院中可真熱鬧,春花似錦女仰、人聲如沸猜年。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)乔外。三九已至,卻和暖如春一罩,著一層夾襖步出監(jiān)牢的瞬間杨幼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留差购,地道東北人四瘫。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像欲逃,于是被迫代替她去往敵國(guó)和親找蜜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • Android跨進(jìn)程通信IPC整體內(nèi)容如下 1稳析、Android跨進(jìn)程通信IPC之1——Linux基礎(chǔ)2洗做、Andro...
    隔壁老李頭閱讀 15,504評(píng)論 19 113
  • 操作系統(tǒng)概論 操作系統(tǒng)的概念 操作系統(tǒng)是指控制和管理計(jì)算機(jī)的軟硬件資源,并合理的組織調(diào)度計(jì)算機(jī)的工作和資源的分配彰居,...
    野狗子嗷嗷嗷閱讀 11,891評(píng)論 3 34
  • 首先來一張圖說明GNU/Linux的基本的體系結(jié)構(gòu): 用戶模式和內(nèi)核模式 執(zhí)行進(jìn)程的模式有兩種:用戶模式和內(nèi)核模式...
    Joe_HUST閱讀 2,089評(píng)論 0 2
  • 1. "wangeditor": ">=3.0.0" package.json dependencies添加這個(gè)...
    大山的那邊閱讀 765評(píng)論 2 2
  • 昨天下午是班主任素質(zhì)課堂提升時(shí)間诚纸,做了多年的活動(dòng)不死不活地存在著,如雞肋一般不想吞下也不敢舍棄裕菠。不管有無(wú)效果咬清,大家...
    杏壇戀人閱讀 165評(píng)論 0 1