linux操作系統(tǒng)架構(gòu)

操作系統(tǒng)架構(gòu)

參考鏈接

內(nèi)核倔撞、shell、文件系統(tǒng)和應(yīng)用程序谜诫。內(nèi)核漾峡、shell和文件系統(tǒng)一起形成了基本的操作系統(tǒng)結(jié)構(gòu),它們使得用戶可以運(yùn)行程序喻旷、管理文件并使用系統(tǒng)生逸。

linux 內(nèi)核

內(nèi)核是操作系統(tǒng)的核心,具有很多最基本功能且预,它負(fù)責(zé)管理系統(tǒng)的進(jìn)程槽袄、內(nèi)存、設(shè)備驅(qū)動(dòng)程序锋谐、文件和網(wǎng)絡(luò)系統(tǒng)遍尺,決定著系統(tǒng)的性能和穩(wěn)定性。

Linux 內(nèi)核由如下幾部分組成:內(nèi)存管理涮拗、進(jìn)程管理乾戏、設(shè)備驅(qū)動(dòng)程序、文件系統(tǒng)和網(wǎng)絡(luò)管理等三热。如圖:


系統(tǒng)調(diào)用接口:SCI 層提供了某些機(jī)制執(zhí)行從用戶空間到內(nèi)核的函數(shù)調(diào)用鼓择。這個(gè)接口依賴于體系結(jié)構(gòu),甚至在相同的處理器家族內(nèi)也是如此。SCI 實(shí)際上是一個(gè)非常有用的函數(shù)調(diào)用多路復(fù)用和多路分解服務(wù)。在 ./linux/kernel 中您可以找到 SCI 的實(shí)現(xiàn)链瓦,并在 ./linux/arch 中找到依賴于體系結(jié)構(gòu)的部分簿训。

內(nèi)存管理

對(duì)任何一臺(tái)計(jì)算機(jī)而言,其內(nèi)存以及其它資源都是有限的。為了讓有限的物理內(nèi)存滿足應(yīng)用程序?qū)?nèi)存的大需求量,Linux 采用了稱為“虛擬內(nèi)存”的內(nèi)存管理方式。Linux 將內(nèi)存劃分為容易處理的“內(nèi)存頁”(對(duì)于大部分體系結(jié)構(gòu)來說都是 4KB)懊蒸。Linux 包括了管理可用內(nèi)存的方式,以及物理和虛擬映射所使用的硬件機(jī)制悯搔。

不過內(nèi)存管理要管理的可不止 4KB 緩沖區(qū)骑丸。Linux 提供了對(duì) 4KB 緩沖區(qū)的抽象,例如 slab 分配器妒貌。這種內(nèi)存管理模式使用 4KB 緩沖區(qū)為基數(shù)通危,然后從中分配結(jié)構(gòu),并跟蹤內(nèi)存頁使用情況灌曙,比如哪些內(nèi)存頁是滿的菊碟,哪些頁面沒有完全使用,哪些頁面為空在刺。這樣就允許該模式根據(jù)系統(tǒng)需要來動(dòng)態(tài)調(diào)整內(nèi)存使用逆害。

為了支持多個(gè)用戶使用內(nèi)存头镊,有時(shí)會(huì)出現(xiàn)可用內(nèi)存被消耗光的情況。由于這個(gè)原因魄幕,頁面可以移出內(nèi)存并放入磁盤中相艇。這個(gè)過程稱為交換,因?yàn)轫撁鏁?huì)被從內(nèi)存交換到硬盤上纯陨。內(nèi)存管理的源代碼可以在 ./linux/mm 中找到坛芽。

進(jìn)程管理

進(jìn)程實(shí)際是某特定應(yīng)用程序的一個(gè)運(yùn)行實(shí)體。在 Linux 系統(tǒng)中翼抠,能夠同時(shí)運(yùn)行多個(gè)進(jìn)程咙轩,Linux 通過在短的時(shí)間間隔內(nèi)輪流運(yùn)行這些進(jìn)程而實(shí)現(xiàn)“多任務(wù)”。這一短的時(shí)間間隔稱為“時(shí)間片”阴颖,讓進(jìn)程輪流運(yùn)行的方法稱為“進(jìn)程調(diào)度” 活喊,完成調(diào)度的程序稱為調(diào)度程序。

進(jìn)程調(diào)度控制進(jìn)程對(duì)CPU的訪問膘盖。當(dāng)需要選擇下一個(gè)進(jìn)程運(yùn)行時(shí)胧弛,由調(diào)度程序選擇最值得運(yùn)行的進(jìn)程尤误∠琅希可運(yùn)行進(jìn)程實(shí)際上是僅等待CPU資源的進(jìn)程,如果某個(gè)進(jìn)程在等待其它資源损晤,則該進(jìn)程是不可運(yùn)行進(jìn)程软棺。Linux使用了比較簡(jiǎn)單的基于優(yōu)先級(jí)的進(jìn)程調(diào)度算法選擇新的進(jìn)程。

通過多任務(wù)機(jī)制尤勋,每個(gè)進(jìn)程可認(rèn)為只有自己獨(dú)占計(jì)算機(jī)喘落,從而簡(jiǎn)化程序的編寫。每個(gè)進(jìn)程有自己?jiǎn)为?dú)的地址空間最冰,并且只能由這一進(jìn)程訪問瘦棋,這樣,操作系統(tǒng)避免了進(jìn)程之間的互相干擾以及“壞”程序?qū)ο到y(tǒng)可能造成的危害暖哨。 為了完成某特定任務(wù)赌朋,有時(shí)需要綜合兩個(gè)程序的功能,例如一個(gè)程序輸出文本篇裁,而另一個(gè)程序?qū)ξ谋具M(jìn)行排序沛慢。為此,操作系統(tǒng)還提供進(jìn)程間的通訊機(jī)制來幫助完成這樣的任務(wù)达布。Linux 中常見的進(jìn)程間通訊機(jī)制有信號(hào)团甲、管道、共享內(nèi)存黍聂、信號(hào)量和套接字等躺苦。

內(nèi)核通過 SCI 提供了一個(gè)應(yīng)用程序編程接口(API)來創(chuàng)建一個(gè)新進(jìn)程(fork身腻、exec 或 Portable Operating System Interface [POSⅨ] 函數(shù)),停止進(jìn)程(kill匹厘、exit)霸株,并在它們之間進(jìn)行通信和同步(signal 或者 POSⅨ 機(jī)制)。

文件系統(tǒng)

和 DOS 等操作系統(tǒng)不同集乔,Linux 操作系統(tǒng)中單獨(dú)的文件系統(tǒng)并不是由驅(qū)動(dòng)器號(hào)或驅(qū)動(dòng)器名稱(如 A: 或 C: 等)來標(biāo)識(shí)的去件。相反,和 UNIX 操作系統(tǒng)一樣扰路,Linux 操作系統(tǒng)將獨(dú)立的文件系統(tǒng)組合成了一個(gè)層次化的樹形結(jié)構(gòu)尤溜,并且由一個(gè)單獨(dú)的實(shí)體代表這一文件系統(tǒng)。Linux 將新的文件系統(tǒng)通過一個(gè)稱為“掛裝”或“掛上”的操作將其掛裝到某個(gè)目錄上汗唱,從而讓不同的文件系統(tǒng)結(jié)合成為一個(gè)整體宫莱。Linux 操作系統(tǒng)的一個(gè)重要特點(diǎn)是它支持許多不同類型的文件系統(tǒng)。Linux 中最普遍使用的文件系統(tǒng)是 Ext2哩罪,它也是 Linux 土生土長(zhǎng)的文件系統(tǒng)授霸。但 Linux 也能夠支持 FAT、VFAT际插、FAT32碘耳、MINIX 等不同類型的文件系統(tǒng),從而可以方便地和其它操作系統(tǒng)交換數(shù)據(jù)框弛。由于 Linux 支持許多不同的文件系統(tǒng)辛辨,并且將它們組織成了一個(gè)統(tǒng)一的虛擬文件系統(tǒng).

虛擬文件系統(tǒng)(VirtualFileSystem,VFS):隱藏了各種硬件的具體細(xì)節(jié),把文件系統(tǒng)操作和不同文件系統(tǒng)的具體實(shí)現(xiàn)細(xì)節(jié)分離了開來瑟枫,為所有的設(shè)備提供了統(tǒng)一的接口斗搞,VFS提供了多達(dá)數(shù)十種不同的文件系統(tǒng)。虛擬文件系統(tǒng)可以分為邏輯文件系統(tǒng)和設(shè)備驅(qū)動(dòng)程序慷妙。邏輯文件系統(tǒng)指Linux所支持的文件系統(tǒng)僻焚,如ext2,fat等,設(shè)備驅(qū)動(dòng)程序指為每一種硬件控制器所編寫的設(shè)備驅(qū)動(dòng)程序模塊膝擂。

虛擬文件系統(tǒng)(VFS)是 Linux 內(nèi)核中非常有用的一個(gè)方面虑啤,因?yàn)樗鼮槲募到y(tǒng)提供了一個(gè)通用的接口抽象。VFS 在 SCI 和內(nèi)核所支持的文件系統(tǒng)之間提供了一個(gè)交換層猿挚。即VFS 在用戶和文件系統(tǒng)之間提供了一個(gè)交換層咐旧。

設(shè)備驅(qū)動(dòng)程序

設(shè)備驅(qū)動(dòng)程序是 Linux 內(nèi)核的主要部分。和操作系統(tǒng)的其它部分類似绩蜻,設(shè)備驅(qū)動(dòng)程序運(yùn)行在高特權(quán)級(jí)的處理器環(huán)境中铣墨,從而可以直接對(duì)硬件進(jìn)行操作,但正因?yàn)槿绱税炀魏我粋€(gè)設(shè)備驅(qū)動(dòng)程序的錯(cuò)誤都可能導(dǎo)致操作系統(tǒng)的崩潰伊约。設(shè)備驅(qū)動(dòng)程序?qū)嶋H控制操作系統(tǒng)和硬件設(shè)備之間的交互姚淆。設(shè)備驅(qū)動(dòng)程序提供一組操作系統(tǒng)可理解的抽象接口完成和操作系統(tǒng)之間的交互,而與硬件相關(guān)的具體操作細(xì)節(jié)由設(shè)備驅(qū)動(dòng)程序完成屡律。一般而言腌逢,設(shè)備驅(qū)動(dòng)程序和設(shè)備
的控制芯片有關(guān),例如超埋,如果計(jì)算機(jī)硬盤是 SCSI 硬盤搏讶,則需要使用 SCSI 驅(qū)動(dòng)程序,而不是 IDE 驅(qū)動(dòng)程序霍殴。

網(wǎng)絡(luò)接口(NET)

提供了對(duì)各種網(wǎng)絡(luò)標(biāo)準(zhǔn)的存取和各種網(wǎng)絡(luò)硬件的支持媒惕。網(wǎng)絡(luò)接口可分為網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)驅(qū)動(dòng)程序。網(wǎng)絡(luò)協(xié)議部分負(fù)責(zé)實(shí)現(xiàn)每一種可能的網(wǎng)絡(luò)傳輸協(xié)議来庭。眾所周知妒蔚,TCP/IP 協(xié)議是 Internet 的標(biāo)準(zhǔn)協(xié)議,同時(shí)也是事實(shí)上的工業(yè)標(biāo)準(zhǔn)月弛。Linux 的網(wǎng)絡(luò)實(shí)現(xiàn)支持 BSD 套接字肴盏,支持全部的TCP/IP協(xié)議。Linux內(nèi)核的網(wǎng)絡(luò)部分由BSD套接字帽衙、網(wǎng)絡(luò)協(xié)議層和網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序組成菜皂。網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序負(fù)責(zé)與硬件設(shè)備通訊,每一種可能的硬件設(shè)備都有相應(yīng)的設(shè)備驅(qū)動(dòng)程序佛寿。

linux shell

shell是系統(tǒng)的用戶界面幌墓,提供了用戶與內(nèi)核進(jìn)行交互操作的一種接口。它接收用戶輸入的命令并把它送入內(nèi)核去執(zhí)行冀泻,是一個(gè)命令解釋器。另外蜡饵,shell編程語言具有普通編程語言的很多特點(diǎn)弹渔,用這種編程語言編寫的shell程序與其他應(yīng)用程序具有同樣的效果。

linux 文件系統(tǒng)

文件系統(tǒng)是文件存放在磁盤等存儲(chǔ)設(shè)備上的組織方法溯祸。Linux系統(tǒng)能支持多種目前流行的文件系統(tǒng)肢专,如EXT2、 EXT3焦辅、 FAT博杖、 FAT32、 VFAT和ISO9660筷登。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末剃根,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子前方,更是在濱河造成了極大的恐慌狈醉,老刑警劉巖廉油,帶你破解...
    沈念sama閱讀 221,888評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異苗傅,居然都是意外死亡抒线,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門渣慕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嘶炭,“玉大人,你說我怎么就攤上這事逊桦『滴铮” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵卫袒,是天一觀的道長(zhǎng)宵呛。 經(jīng)常有香客問我,道長(zhǎng)夕凝,這世上最難降的妖魔是什么宝穗? 我笑而不...
    開封第一講書人閱讀 59,726評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮码秉,結(jié)果婚禮上逮矛,老公的妹妹穿的比我還像新娘。我一直安慰自己转砖,他們只是感情好须鼎,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著府蔗,像睡著了一般晋控。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上姓赤,一...
    開封第一講書人閱讀 52,337評(píng)論 1 310
  • 那天赡译,我揣著相機(jī)與錄音,去河邊找鬼不铆。 笑死蝌焚,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的誓斥。 我是一名探鬼主播只洒,決...
    沈念sama閱讀 40,902評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼劳坑!你這毒婦竟也來了毕谴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎析珊,沒想到半個(gè)月后羡鸥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡忠寻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評(píng)論 3 340
  • 正文 我和宋清朗相戀三年惧浴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奕剃。...
    茶點(diǎn)故事閱讀 40,567評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡衷旅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出纵朋,到底是詐尸還是另有隱情柿顶,我是刑警寧澤,帶...
    沈念sama閱讀 36,242評(píng)論 5 350
  • 正文 年R本政府宣布操软,位于F島的核電站嘁锯,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏聂薪。R本人自食惡果不足惜家乘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望藏澳。 院中可真熱鬧仁锯,春花似錦、人聲如沸翔悠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蓄愁。三九已至双炕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涝登,已是汗流浹背雄家。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胀滚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,995評(píng)論 3 377
  • 正文 我出身青樓乱投,卻偏偏與公主長(zhǎng)得像咽笼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子戚炫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評(píng)論 2 359

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