Linux內(nèi)核大牛告訴你,這才是Linux內(nèi)核
Linux內(nèi)核是Linux系統(tǒng)的核心,對(duì)于Linux內(nèi)核,可能計(jì)算機(jī)專業(yè)的朋友更為熟悉。如果你不玩Linux系統(tǒng),了解Linux內(nèi)核的必要性也就沒(méi)那么大了。為了增進(jìn)大家對(duì)Linux內(nèi)核的認(rèn)識(shí),本文將對(duì)Linux內(nèi)核進(jìn)行詳細(xì)闡述。如果你對(duì)Linux內(nèi)核具有興趣,不妨繼續(xù)往下閱讀哦。
Linux是一種開(kāi)源電腦操作系統(tǒng)內(nèi)核。它是一個(gè)用C語(yǔ)言寫成,符合POSIX標(biāo)準(zhǔn)的類Unix操作系統(tǒng)。
Linux最早是由芬蘭 Linus Torvalds為嘗試在英特爾x86架構(gòu)上提供自由的類Unix操作系統(tǒng)而開(kāi)發(fā)的。該計(jì)劃開(kāi)始于1991年,在計(jì)劃的早期有一些 Minix 黑客提供了協(xié)助,而如今全球無(wú)數(shù)程序員正在為該計(jì)劃無(wú)償提供幫助。
操作系統(tǒng)是一個(gè)用來(lái)和硬件打交道并為用戶程序提供一個(gè)有限服務(wù)集的低級(jí)支撐軟件。一個(gè)計(jì)算機(jī)系統(tǒng)是一個(gè)硬件和軟件的共生體,它們互相依賴,不可分割。計(jì)算機(jī)的硬件,含有外圍設(shè)備、處理器、內(nèi)存、硬盤和其他的電子設(shè)備組成計(jì)算機(jī)的發(fā)動(dòng)機(jī)。但是沒(méi)有軟件來(lái)操作和控制它,自身是不能工作的。完成這個(gè)控制工作的軟件就稱為操作系統(tǒng),在Linux的術(shù)語(yǔ)中被稱為“內(nèi)核”,也可以稱為“核心”。Linux內(nèi)核的主要模塊(或組件)分以下幾個(gè)部分:存儲(chǔ)管理、CPU和進(jìn)程管理、文件系統(tǒng)、設(shè)備管理和驅(qū)動(dòng)、網(wǎng)絡(luò)通信,以及系統(tǒng)的初始化(引導(dǎo))、系統(tǒng)調(diào)用等。
Linux 內(nèi)核實(shí)現(xiàn)了很多重要的體系結(jié)構(gòu)屬性。在或高或低的層次上,內(nèi)核被劃分為多個(gè)子系統(tǒng)。Linux 也可以看作是一個(gè)整體,因?yàn)樗鼤?huì)將所有這些基本服務(wù)都集成到內(nèi)核中。這與微內(nèi)核的體系結(jié)構(gòu)不同,后者會(huì)提供一些基本的服務(wù),例如通信、I/O、內(nèi)存和進(jìn)程管理,更具體的服務(wù)都是插入到微內(nèi)核層中的。
隨著時(shí)間的流逝,Linux 內(nèi)核在內(nèi)存和 CPU 使用方面具有較高的效率,并且非常穩(wěn)定。但是對(duì)于 Linux 來(lái)說(shuō),最為有趣的是在這種大小和復(fù)雜性的前提下,依然具有良好的可移植性。Linux 編譯后可在大量處理器和具有不同體系結(jié)構(gòu)約束和需求的平臺(tái)上運(yùn)行。一個(gè)例子是 Linux 可以在一個(gè)具有內(nèi)存管理單元(MMU)的處理器上運(yùn)行,也可以在那些不提供MMU的處理器上運(yùn)行。Linux 內(nèi)核的uClinux移植提供了對(duì)非 MMU 的支持。
因?yàn)長(zhǎng)inux內(nèi)核是單片的,所以它比其他類型的內(nèi)核占用空間最大,復(fù)雜度也最高。這是一個(gè)設(shè)計(jì)特性,在Linux早期引起了相當(dāng)多的爭(zhēng)論,并且仍然帶有一些與單內(nèi)核固有的相同的設(shè)計(jì)缺陷。
為了解決這些缺陷,Linux內(nèi)核開(kāi)發(fā)人員所做的一件事就是使內(nèi)核模塊可以在運(yùn)行時(shí)加載和卸載,這意味著您可以動(dòng)態(tài)地添加或刪除內(nèi)核的特性。這不僅可以向內(nèi)核添加硬件功能,還可以包括運(yùn)行服務(wù)器進(jìn)程的模塊,比如低級(jí)別虛擬化,但也可以替換整個(gè)內(nèi)核,而不需要在某些情況下重啟計(jì)算機(jī)。
想象一下,如果您可以升級(jí)到Windows服務(wù)包,而不需要重新啟動(dòng)……
如果Windows已經(jīng)安裝了所有可用的驅(qū)動(dòng)程序,而您只需要打開(kāi)所需的驅(qū)動(dòng)程序怎么辦?這本質(zhì)上就是內(nèi)核模塊為L(zhǎng)inux所做的。內(nèi)核模塊,也稱為可加載內(nèi)核模塊(LKM),對(duì)于保持內(nèi)核在不消耗所有可用內(nèi)存的情況下與所有硬件一起工作是必不可少的。
模塊通常向基本內(nèi)核添加設(shè)備、文件系統(tǒng)和系統(tǒng)調(diào)用等功能。lkm的文件擴(kuò)展名是.ko,通常存儲(chǔ)在/lib/modules目錄中。由于模塊的特性,您可以通過(guò)在啟動(dòng)時(shí)使用menuconfig命令將模塊設(shè)置為load或not load,或者通過(guò)編輯/boot/config文件,或者使用modprobe命令動(dòng)態(tài)地加載和卸載模塊,輕松定制內(nèi)核。
第三方和封閉源碼模塊在一些發(fā)行版中是可用的,比如Ubuntu,默認(rèn)情況下可能無(wú)法安裝,因?yàn)檫@些模塊的源代碼是不可用的。該軟件的開(kāi)發(fā)人員(即nVidia、ATI等)不提供源代碼,而是構(gòu)建自己的模塊并編譯所需的.ko文件以便分發(fā)。雖然這些模塊像beer一樣是免費(fèi)的,但它們不像speech那樣是免費(fèi)的,因此不包括在一些發(fā)行版中,因?yàn)榫S護(hù)人員認(rèn)為它通過(guò)提供非免費(fèi)軟件“污染”了內(nèi)核。
內(nèi)核并不神奇,但對(duì)于任何正常運(yùn)行的計(jì)算機(jī)來(lái)說(shuō),它都是必不可少的。Linux內(nèi)核不同于OS X和Windows,因?yàn)樗瑑?nèi)核級(jí)別的驅(qū)動(dòng)程序,并使許多東西“開(kāi)箱即用”。希望您能對(duì)軟件和硬件如何協(xié)同工作以及啟動(dòng)計(jì)算機(jī)所需的文件有更多的了解。
以上便是此次小編帶來(lái)的Linux內(nèi)核相關(guān)內(nèi)容,通過(guò)本文,希望大家對(duì)Linux內(nèi)核具備一定的認(rèn)知。如果你喜歡本文,不妨持續(xù)關(guān)注我們網(wǎng)站哦,小編將于后期帶來(lái)更多精彩內(nèi)容。最后,十分感謝大家的閱讀,have a nice day!