更新時(shí)間:2020-12-16 17:40:40 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1687次
Linux實(shí)際上是一種開源電腦操作系統(tǒng)內(nèi)核。一個(gè)計(jì)算機(jī)系統(tǒng)是一個(gè)硬件和軟件的共生體,它們互相依賴,不可分割,而計(jì)算機(jī)的硬件在沒有軟件來操作和控制的情況下是無法工作的,完成這個(gè)控制工作的軟件就稱為操作系統(tǒng),在Linux的術(shù)語中被稱為“內(nèi)核”,也可以稱為“核心”。根據(jù)內(nèi)核的核心功能,分為5個(gè)Linux 內(nèi)核子系統(tǒng),分別為:系統(tǒng)調(diào)用、進(jìn)程管理、內(nèi)存管理、文件系統(tǒng)、網(wǎng)絡(luò)管理,如下圖示:
1. 系統(tǒng)調(diào)用(System Call Interface)
系統(tǒng)調(diào)用接口。進(jìn)程調(diào)度子系統(tǒng)通過系統(tǒng)調(diào)用接口,將需要提供給用戶空間的接口開放出去,同時(shí)屏蔽掉不需要用戶空間程序關(guān)心的細(xì)節(jié)。
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)的部分。
2. 進(jìn)程管理(Process Management)
用戶空間有那么多進(jìn)程,如何讓他們有條不紊地進(jìn)行著正是進(jìn)程管理所要做的事。每個(gè)進(jìn)程都要使用到 CPU 資源(如 CPU ,內(nèi)存),但 CPU 資源畢竟有限,不可能讓某個(gè)進(jìn)程一進(jìn)獨(dú)占著資源。
因此,進(jìn)程管理就充當(dāng)著管理員的角色,它調(diào)度著所有的進(jìn)程,當(dāng)需要選擇下一進(jìn)程運(yùn)行時(shí),會(huì)由調(diào)度算法來選擇最需要運(yùn)行的進(jìn)程。如果某個(gè)進(jìn)程在等待其它硬件資源,則它就會(huì)被掛起。
因此,通過一系列的調(diào)度算法,內(nèi)核盡可能地公平地讓各個(gè)進(jìn)程使用到 CPU 資源。
3. 內(nèi)存管理(Memory Management)
內(nèi)存管理主要提供對(duì)內(nèi)存資源的訪問控制,以便讓各個(gè)進(jìn)程可以安全地共享機(jī)器的內(nèi)存資源。它提供了物理內(nèi)存與虛擬內(nèi)存的一種映射關(guān)系,因而不同的進(jìn)程可以使用相同的虛擬內(nèi)存,而這些相同的虛擬內(nèi)存,可以映射到不同的物理內(nèi)存上。這個(gè)映射關(guān)系主要由 MMU 來完成。
另外,內(nèi)存管理會(huì)提供虛擬內(nèi)存的機(jī)制,該機(jī)制可以讓進(jìn)程使用多于系統(tǒng)可用的內(nèi)存,不用的內(nèi)存會(huì)通過文件系統(tǒng)保存在外部非易失存儲(chǔ)器中,需要使用的時(shí)候,再取回到內(nèi)存中。
為了支持多個(gè)用戶使用內(nèi)存,有時(shí)會(huì)出現(xiàn)可用內(nèi)存被消耗光的情況。由于這個(gè)原因,頁面可以移出內(nèi)存并放入磁盤中。這個(gè)過程稱為交換,因?yàn)轫撁鏁?huì)被從內(nèi)存交換到硬盤上。內(nèi)存管理的源代碼可以在 ./linux/mm 中找到。
4. 虛擬文件系統(tǒng)(Virtual File System)
內(nèi)核隱藏了不同功能的外部設(shè)備,例如硬盤、輸入輸出設(shè)備、顯示設(shè)備等等的具體細(xì)節(jié),將它們抽象為可以通過統(tǒng)一的文件操作接口(open、close、read、write等)來訪問,也就是我們所熟知的「一切皆文件」。
隨著計(jì)算機(jī)技術(shù)的發(fā)展,歷史上出現(xiàn)了多種文件系統(tǒng),比如:FAT、FAT32、NTFS、EXT2、EXT3 等等。為了兼容這些文件系統(tǒng),內(nèi)核將它們抽象為統(tǒng)一的表現(xiàn)形式,這就是虛擬文件系統(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)程序模塊。
5. 網(wǎng)絡(luò)管理(Network Stack)
網(wǎng)絡(luò)子系統(tǒng)在 Linux 內(nèi)核中主要負(fù)責(zé)管理各種網(wǎng)絡(luò)設(shè)備,并實(shí)現(xiàn)各種網(wǎng)絡(luò)協(xié)議棧,最終實(shí)現(xiàn)通過網(wǎng)絡(luò)連接其它系統(tǒng)的功能。
網(wǎng)絡(luò)接口提供了對(duì)各種網(wǎng)絡(luò)標(biāo)準(zhǔn)協(xié)議的存取和各種網(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é)議,網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序負(fù)責(zé)與硬件設(shè)備進(jìn)行通信,每一種可能的硬件設(shè)備都有相應(yīng)的設(shè)備驅(qū)動(dòng)程序。
以上就是對(duì) Linux 內(nèi)核子系統(tǒng)的簡(jiǎn)單介紹,Linux內(nèi)核結(jié)構(gòu)各個(gè)模塊的功能都與此息息相關(guān)。我們只有通過不斷的實(shí)踐,真正弄懂Linux系統(tǒng)的運(yùn)行原理和結(jié)構(gòu),才能學(xué)有所成。在本站的Linux教程中,有著對(duì)Linux系統(tǒng)的全面講解,想要學(xué)好Linux的小伙伴不要錯(cuò)過!
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743