乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       幽州淺水 2019-10-21

      簡(jiǎn)述

      1. 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. 組成

      3. 一個(gè)完整的Linux內(nèi)核一般由5部分組成,它們分別是進(jìn)程管理、內(nèi)存管理、進(jìn)程間通信、虛擬文件系統(tǒng)和網(wǎng)絡(luò)接口 。

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

      1. Linux內(nèi)核整體架構(gòu).png

      2. Process Scheduler,也稱作進(jìn)程管理、進(jìn)程調(diào)度。負(fù)責(zé)管理CPU資源,以便讓各個(gè)進(jìn)程可以以盡量公平的方式訪問(wèn)CPU。

      3. 進(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)度管理。

      4. 進(jìn)程調(diào)度子系統(tǒng)包括4個(gè)子模塊(見(jiàn)下圖),它們的功能如下:

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

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

      2. 1.1) Scheduling Policy,實(shí)現(xiàn)進(jìn)程調(diào)度的策略,它決定哪個(gè)(或哪幾個(gè))進(jìn)程將擁有CPU。

      3. 1.2) Architecture-specific Schedulers,體系結(jié)構(gòu)相關(guān)的部分,用于將對(duì)不同CPU的控制,抽象為統(tǒng)一的接口。這些控制主要在suspend和resume進(jìn)程時(shí)使用,牽涉到CPU的寄存器訪問(wèn)、匯編指令操作等。

      4. 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)程。

      5. 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é)。

      6. 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)存中。

      7. 內(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)存上。

      8. 內(nèi)存管理子系統(tǒng)包括3個(gè)子模塊(見(jiàn)下圖),它們的功能如下:

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

      1. 內(nèi)存管理.gif

      2. 2.1) Architecture Specific Managers,體系結(jié)構(gòu)相關(guān)部分。提供用于訪問(wèn)硬件Memory的虛擬接口。

      3. 2.2) Architecture Independent Manager,體系結(jié)構(gòu)無(wú)關(guān)部分。提供所有的內(nèi)存管理機(jī)制,包括:以進(jìn)程為單位的memory mapping;虛擬內(nèi)存的Swapping。

      4. 2.3) System Call Interface,系統(tǒng)調(diào)用接口。通過(guò)該接口,向用戶空間程序應(yīng)用程序提供內(nèi)存的分配、釋放,文件的map等功能。

      5. VFS(Virtual File System),虛擬文件系統(tǒng)。Linux內(nèi)核將不同功能的外部設(shè)備,例如Disk設(shè)備(硬盤(pán)、磁盤(pán)、NAND Flash、Nor Flash等)、輸入輸出設(shè)備、顯示設(shè)備等等,抽象為可以通過(guò)統(tǒng)一的文件操作接口(open、close、read、write等)來(lái)訪問(wèn)。這就是Linux系統(tǒng)“一切皆是文件”的體現(xiàn) 。

      6. 文件系統(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)文件的接口。

      7. 我們可以從磁盤(pán)、硬盤(pán)、NAND Flash等設(shè)備中讀取或?qū)懭霐?shù)據(jù),因而最初的文件系統(tǒng)都是構(gòu)建在這些設(shè)備之上的。這個(gè)概念也可以推廣到其它的硬件設(shè)備,例如內(nèi)存、顯示器(LCD)、鍵盤(pán)、串口等等。我們對(duì)硬件設(shè)備的訪問(wèn)控制,也可以歸納為讀取或者寫(xiě)入數(shù)據(jù),因而可以用統(tǒng)一的文件操作接口訪問(wèn)。Linux內(nèi)核就是這樣做的,除了傳統(tǒng)的磁盤(pán)文件系統(tǒng)之外,它還抽象出了設(shè)備文件系統(tǒng)、內(nèi)存文件系統(tǒng)等等。這些邏輯,都是由VFS子系統(tǒng)實(shí)現(xiàn)。

      8. VFS子系統(tǒng)包括6個(gè)子模塊(見(jiàn)下圖),它們的功能如下:

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

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

      2. 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. 3.2) Device Independent Interface, 該模塊定義了描述硬件設(shè)備的統(tǒng)一方式(統(tǒng)一設(shè)備模型),所有的設(shè)備驅(qū)動(dòng)都遵守這個(gè)定義,可以降低開(kāi)發(fā)的難度。同時(shí)可以用一致的形勢(shì)向上提供接口。

      4. 3.3) Logical Systems,每一種文件系統(tǒng),都會(huì)對(duì)應(yīng)一個(gè)Logical System(邏輯文件系統(tǒng)),它會(huì)實(shí)現(xiàn)具體的文件系統(tǒng)邏輯。

      5. 3.4) System Independent Interface,該模塊負(fù)責(zé)以統(tǒng)一的接口(快設(shè)備和字符設(shè)備)表示硬件設(shè)備和邏輯文件系統(tǒng),這樣上層軟件就不再關(guān)心具體的硬件形態(tài)了。

      6. 3.5) System Call Interface,系統(tǒng)調(diào)用接口,向用戶空間提供訪問(wèn)文件系統(tǒng)和硬件設(shè)備的統(tǒng)一的接口。

      7. Network,網(wǎng)絡(luò)子系統(tǒng)。負(fù)責(zé)管理系統(tǒng)的網(wǎng)絡(luò)設(shè)備,并實(shí)現(xiàn)多種多樣的網(wǎng)絡(luò)標(biāo)準(zhǔn)。

      8. 網(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)下圖),它們的功能如下:

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

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

      2. 4.1) Network Device Drivers,網(wǎng)絡(luò)設(shè)備的驅(qū)動(dòng),和VFS子系統(tǒng)中的設(shè)備驅(qū)動(dòng)是一樣的。

      3. 4.2) Device Independent Interface,和VFS子系統(tǒng)中的是一樣的。

      4. 4.3) Network Protocols,實(shí)現(xiàn)各種網(wǎng)絡(luò)傳輸協(xié)議,例如IP, TCP, UDP等等。

      5. 4.4) Protocol Independent Interface,屏蔽不同的硬件設(shè)備和網(wǎng)絡(luò)協(xié)議,以相同的格式提供接口(socket)。

      6. 4.5) System Call interface,系統(tǒng)調(diào)用接口,向用戶空間提供訪問(wèn)網(wǎng)絡(luò)設(shè)備的統(tǒng)一的接口。

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

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多