真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何進(jìn)行Linux內(nèi)核架構(gòu)分析

這篇文章將為大家詳細(xì)講解有關(guān)如何進(jìn)行Linux 內(nèi)核架構(gòu)分析,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

創(chuàng)新互聯(lián)公司2013年成立,先為洪江管理區(qū)等服務(wù)建站,洪江管理區(qū)等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為洪江管理區(qū)企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

  1. 概述

通常地,Linux操作系統(tǒng)如下圖所示,由四大子系統(tǒng)組成:

如何進(jìn)行Linux 內(nèi)核架構(gòu)分析
  • 用戶應(yīng)用層: 特定Linux系統(tǒng)上使用的應(yīng)用程序集會(huì)有所不同,具體取決于計(jì)算機(jī)系統(tǒng)的用途,但典型示例包括文字處理應(yīng)用程序和Web瀏覽器,嵌入式Linux往往會(huì)進(jìn)行大量的裁剪,將不需要的應(yīng)用裁剪掉。

  • O/S 服務(wù)層: O/S服務(wù)通常被認(rèn)為是操作系統(tǒng)的一部分(窗口系統(tǒng),命令外殼等);此外,該子系統(tǒng)還包含內(nèi)核的編程接口(編譯器工具和庫(kù)d)

  • Linux內(nèi)核層:這是本文關(guān)注的主要子系統(tǒng),內(nèi)核抽象并調(diào)控對(duì)硬件資源(包括CPU)的訪問(wèn)。

  • 硬件控制層:該子系統(tǒng)由Linux安裝中的所有可能的物理設(shè)備組成;例如,CPU,內(nèi)存硬件,硬盤和網(wǎng)絡(luò)硬件都是該子系統(tǒng)的成員

2.內(nèi)核架構(gòu)

2.1 內(nèi)核之作用

  • Linux內(nèi)核為用戶進(jìn)程提供了虛擬機(jī)接口。 進(jìn)程編程無(wú)需知道計(jì)算機(jī)上安裝了什么物理硬件,Linux內(nèi)核將所有硬件抽象為一致的虛擬接口。

  • 此外,Linux以對(duì)用戶進(jìn)程透明的方式支持多任務(wù):每個(gè)進(jìn)程都可以像它是計(jì)算機(jī)上唯一的進(jìn)程一樣工作,并且專用于占用主內(nèi)存和其他硬件資源。內(nèi)核實(shí)際上同時(shí)運(yùn)行多個(gè)進(jìn)程,并負(fù)責(zé)中介對(duì)硬件資源的訪問(wèn),以便在維護(hù)進(jìn)程間安全性的同時(shí),每個(gè)進(jìn)程都具有公平的訪問(wèn)權(quán)限。

2.2 內(nèi)核之結(jié)構(gòu)

如何進(jìn)行Linux 內(nèi)核架構(gòu)分析

內(nèi)核主要由以下五大組成部分:

  • 進(jìn)程調(diào)度器(SCHED)負(fù)責(zé)控制對(duì)CPU的進(jìn)程訪問(wèn)。調(diào)度程序執(zhí)行一項(xiàng)調(diào)度策略,以確保進(jìn)程可以公平地訪問(wèn)CPU,同時(shí)確保內(nèi)核按時(shí)執(zhí)行必要的硬件操作。

  • 內(nèi)存管理器(MM)允許多個(gè)進(jìn)程安全地共享機(jī)器的主內(nèi)存系統(tǒng)。此外,內(nèi)存管理器還支持虛擬內(nèi)存,該虛擬內(nèi)存允許Linux支持使用的內(nèi)存量超過(guò)系統(tǒng)可用內(nèi)存的進(jìn)程。使用文件系統(tǒng)將未使用的內(nèi)存換出到持久性存儲(chǔ),然后在需要時(shí)交換回來(lái)。

  • 虛擬文件系統(tǒng)(VFS)通過(guò)為所有設(shè)備提供通用文件接口來(lái)抽象化各種硬件設(shè)備的詳細(xì)信息。此外,VFS支持幾種與其他操作系統(tǒng)兼容的文件系統(tǒng)格式。

  • 網(wǎng)絡(luò)接口(NET)提供對(duì)幾種網(wǎng)絡(luò)標(biāo)準(zhǔn)和各種網(wǎng)絡(luò)硬件的訪問(wèn)。

  • 進(jìn)程間通信(IPC)子系統(tǒng)實(shí)現(xiàn)在單個(gè)Linux系統(tǒng)上進(jìn)行進(jìn)程間通信的多種機(jī)制。

從依賴性的角度分析:

  • 進(jìn)程調(diào)度程序子系統(tǒng)使用內(nèi)存管理器為恢復(fù)特定進(jìn)程的特定進(jìn)程調(diào)整硬件內(nèi)存映射。

  • 進(jìn)程間通信子系統(tǒng)依賴于內(nèi)存管理器來(lái)支持共享內(nèi)存通信機(jī)制。此機(jī)制允許兩個(gè)進(jìn)程除了訪問(wèn)其通常的私有內(nèi)存之外,還訪問(wèn)公共內(nèi)存的區(qū)域。

  • 虛擬文件系統(tǒng)使用網(wǎng)絡(luò)接口來(lái)支持網(wǎng)絡(luò)文件系統(tǒng)(NFS),并且還使用內(nèi)存管理器來(lái)提供ramdisk設(shè)備。

  • 內(nèi)存管理器使用虛擬文件系統(tǒng)來(lái)支持交換;這是內(nèi)存管理器依賴進(jìn)程調(diào)度程序的唯一原因。當(dāng)某個(gè)進(jìn)程訪問(wèn)當(dāng)前已換出的內(nèi)存時(shí),內(nèi)存管理器會(huì)向文件系統(tǒng)發(fā)出請(qǐng)求,從持久性存儲(chǔ)中獲取內(nèi)存,并掛起該進(jìn)程。

2.3 內(nèi)核之重要數(shù)據(jù)結(jié)構(gòu)

  • 任務(wù)鏈表(Task List):流程調(diào)度程序?yàn)槊總€(gè)活動(dòng)的流程維護(hù)一個(gè)數(shù)據(jù)塊。這些數(shù)據(jù)塊存儲(chǔ)在稱為任務(wù)列表的鏈接列表中。進(jìn)程調(diào)度程序始終維護(hù)一個(gè)指示當(dāng)前活動(dòng)進(jìn)程的當(dāng)前指針。

  • 內(nèi)存映射(memry map):內(nèi)存管理器基于每個(gè)進(jìn)程存儲(chǔ)虛擬地址到物理地址的映射,還存儲(chǔ)有關(guān)如何獲取和替換特定頁(yè)面的其他信息。此信息存儲(chǔ)在內(nèi)存映射數(shù)據(jù)結(jié)構(gòu)中,該結(jié)構(gòu)存儲(chǔ)在流程調(diào)度程序的任務(wù)列表中。

  • 索引節(jié)點(diǎn)(I-node):虛擬文件系統(tǒng)使用索引節(jié)點(diǎn)(索引節(jié)點(diǎn))表示邏輯文件系統(tǒng)上的文件。索引節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)文件塊號(hào)到物理設(shè)備地址的映射。如果兩個(gè)進(jìn)程打開(kāi)了相同的文件,則可以在多個(gè)進(jìn)程之間共享I節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)。共享是通過(guò)兩個(gè)任務(wù)數(shù)據(jù)塊指向相同的i節(jié)點(diǎn)來(lái)完成的。

  • 數(shù)據(jù)連接(Data Connection)所有數(shù)據(jù)結(jié)構(gòu)都植根于流程調(diào)度程序的任務(wù)列表。系統(tǒng)上的每個(gè)進(jìn)程都有一個(gè)數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)包含一個(gè)指向其內(nèi)存映射信息的指針,以及指向代表所有打開(kāi)文件的i節(jié)點(diǎn)的指針。最后,任務(wù)數(shù)據(jù)結(jié)構(gòu)還包含指向數(shù)據(jù)結(jié)構(gòu)的指針,該數(shù)據(jù)結(jié)構(gòu)表示與每個(gè)任務(wù)關(guān)聯(lián)的所有打開(kāi)的網(wǎng)絡(luò)連接。

3.各子系統(tǒng)架構(gòu)分析

3.1 進(jìn)程調(diào)度器架構(gòu)

進(jìn)程調(diào)度器是Linux內(nèi)核中最重要的子系統(tǒng)。其目的是控制對(duì)計(jì)算機(jī)CPU的訪問(wèn)。這不僅包括用戶進(jìn)程的訪問(wèn),還包括其他內(nèi)核子系統(tǒng)的訪問(wèn)。

如何進(jìn)行Linux 內(nèi)核架構(gòu)分析

由上圖可知,進(jìn)程調(diào)度器可分為四大模塊:

  • 調(diào)度策略模塊負(fù)責(zé)判斷哪個(gè)進(jìn)程可以訪問(wèn)CPU;設(shè)計(jì)該策略是為了使進(jìn)程可以公平地訪問(wèn)CPU。

  • 體系結(jié)構(gòu)相關(guān)模塊特定于體系結(jié)構(gòu)的模塊設(shè)計(jì)有一個(gè)公共接口,用于抽象任何特定計(jì)算機(jī)體系結(jié)構(gòu)的詳細(xì)信息。這些模塊負(fù)責(zé)與CPU通信以掛起和恢復(fù)進(jìn)程。這些操作涉及知道每個(gè)進(jìn)程需要保留哪些寄存器和狀態(tài)信息,并執(zhí)行匯編代碼以執(zhí)行掛起或恢復(fù)操作。

  • 體系結(jié)構(gòu)無(wú)關(guān)模塊與體系結(jié)構(gòu)無(wú)關(guān)的模塊與策略模塊進(jìn)行通信,以確定下一步將執(zhí)行哪個(gè)進(jìn)程,然后調(diào)用特定于體系結(jié)構(gòu)的模塊以恢復(fù)適當(dāng)?shù)倪M(jìn)程。此外,此模塊調(diào)用內(nèi)存管理器以確保為恢復(fù)的過(guò)程正確還原了內(nèi)存硬件

  • 系統(tǒng)調(diào)用接口模塊允許用戶進(jìn)程僅訪問(wèn)內(nèi)核顯式導(dǎo)出的那些資源。這將用戶進(jìn)程對(duì)內(nèi)核的依賴性限制為一個(gè)定義良好的接口,盡管其他內(nèi)核模塊的實(shí)現(xiàn)發(fā)生了變化,該接口很少更改

進(jìn)程調(diào)度器維護(hù)一個(gè)數(shù)據(jù)結(jié)構(gòu),即任務(wù)列表,每個(gè)活動(dòng)進(jìn)程具有一個(gè)條目。此數(shù)據(jù)結(jié)構(gòu)包含足夠的信息來(lái)暫停和恢復(fù)過(guò)程,但還包含其他記帳和狀態(tài)信息。該數(shù)據(jù)結(jié)構(gòu)可在整個(gè)內(nèi)核層公開(kāi)使用。

如前所述,進(jìn)程調(diào)度程序?qū)⒄{(diào)用內(nèi)存管理器子系統(tǒng)。因此,進(jìn)程調(diào)度程序子系統(tǒng)依賴于內(nèi)存管理器子系統(tǒng)。此外,所有其他內(nèi)核子系統(tǒng)都依賴進(jìn)程調(diào)度程序來(lái)掛起和恢復(fù)進(jìn)程,同時(shí)等待硬件請(qǐng)求完成。這些依賴關(guān)系通過(guò)函數(shù)調(diào)用和對(duì)共享任務(wù)列表數(shù)據(jù)結(jié)構(gòu)的訪問(wèn)來(lái)表示。所有內(nèi)核子系統(tǒng)都讀取和寫入代表當(dāng)前任務(wù)的數(shù)據(jù)結(jié)構(gòu),從而導(dǎo)致整個(gè)系統(tǒng)中的雙向數(shù)據(jù)流。

除了內(nèi)核層中的數(shù)據(jù)和控制流之外,O / S服務(wù)層還為用戶進(jìn)程提供了一個(gè)接口,用于注冊(cè)計(jì)時(shí)器通知。這對(duì)應(yīng)于[Garlan 1994]中描述的隱式執(zhí)行體系結(jié)構(gòu)樣式。這導(dǎo)致控制從調(diào)度程序流向用戶進(jìn)程?;謴?fù)休眠過(guò)程的通常情況在正常情況下不視為控制流程,因?yàn)橛脩暨M(jìn)程無(wú)法檢測(cè)到此操作。最后,調(diào)度程序與CPU通信以掛起和恢復(fù)進(jìn)程。這導(dǎo)致數(shù)據(jù)流和控制流。CPU負(fù)責(zé)中斷當(dāng)前正在執(zhí)行的進(jìn)程,并允許內(nèi)核調(diào)度另一個(gè)進(jìn)程。

3.2 內(nèi)存管理器架構(gòu)

內(nèi)存管理器子系統(tǒng)負(fù)責(zé)控制對(duì)硬件內(nèi)存資源的進(jìn)程訪問(wèn)。這是通過(guò)硬件內(nèi)存管理系統(tǒng)完成的,該系統(tǒng)提供了進(jìn)程內(nèi)存引用與機(jī)器物理內(nèi)存之間的映射。內(nèi)存管理器子系統(tǒng)在每個(gè)進(jìn)程的基礎(chǔ)上維護(hù)此映射,以便兩個(gè)進(jìn)程可以訪問(wèn)相同的虛擬內(nèi)存地址并實(shí)際使用不同的物理內(nèi)存位置。此外,內(nèi)存管理器子系統(tǒng)還支持交換。它將未使用的內(nèi)存頁(yè)面移至持久性存儲(chǔ),以使計(jì)算機(jī)支持的虛擬內(nèi)存多于物理內(nèi)存。

3.2.1 模塊結(jié)構(gòu)分析

如何進(jìn)行Linux 內(nèi)核架構(gòu)分析

內(nèi)存管理器主要由以下三個(gè)模塊組成:

  • 體系結(jié)構(gòu)相關(guān)模塊為內(nèi)存管理硬件提供了虛擬接口

  • 體系結(jié)構(gòu)無(wú)關(guān)模塊執(zhí)行所有的每個(gè)進(jìn)程映射和虛擬內(nèi)存交換。此模塊負(fù)責(zé)確定在出現(xiàn)頁(yè)面錯(cuò)誤時(shí)將收回哪些內(nèi)存頁(yè)面-由于沒(méi)有預(yù)期將需要更改此策略,因此沒(méi)有單獨(dú)的策略模塊。

  • 系統(tǒng)調(diào)用接口模塊提供對(duì)用戶進(jìn)程的受限訪問(wèn)。該接口允許用戶進(jìn)程分配和釋放存儲(chǔ),還可以執(zhí)行內(nèi)存映射文件I / O。

3.2.2 從數(shù)據(jù)表征的角度分析:

內(nèi)存管理器存儲(chǔ)物理地址到虛擬地址的每個(gè)進(jìn)程的映射。該映射作為參考存儲(chǔ)在流程調(diào)度程序的任務(wù)列表數(shù)據(jù)結(jié)構(gòu)中。除了此映射之外,數(shù)據(jù)塊中的其他詳細(xì)信息還告訴內(nèi)存管理器如何獲取和存儲(chǔ)頁(yè)面。例如,可執(zhí)行代碼可以將可執(zhí)行映像用作后備存儲(chǔ),但是必須將動(dòng)態(tài)分配的數(shù)據(jù)備份到系統(tǒng)頁(yè)面文件中。最后,內(nèi)存管理器在此數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)權(quán)限和記帳信息,以確保系統(tǒng)安全。

3.2.3 數(shù)據(jù)流,控制流和依賴關(guān)系

內(nèi)存管理器控制內(nèi)存硬件,并在發(fā)生頁(yè)面錯(cuò)誤時(shí)從硬件接收通知-這意味著內(nèi)存管理器模塊和內(nèi)存管理器硬件之間存在雙向數(shù)據(jù)和控制流。另外,內(nèi)存管理器使用文件系統(tǒng)來(lái)支持交換和內(nèi)存映射的I / O。此要求意味著內(nèi)存管理器需要對(duì)文件系統(tǒng)進(jìn)行過(guò)程調(diào)用以存儲(chǔ)和從持久性存儲(chǔ)中獲取內(nèi)存頁(yè)面。由于無(wú)法立即完成文件系統(tǒng)請(qǐng)求,因此內(nèi)存管理器需要暫停一個(gè)過(guò)程,直到將內(nèi)存換回為止。此要求導(dǎo)致內(nèi)存管理器對(duì)過(guò)程調(diào)度程序進(jìn)行過(guò)程調(diào)用。同樣,由于每個(gè)進(jìn)程的內(nèi)存映射都存儲(chǔ)在進(jìn)程調(diào)度程序的數(shù)據(jù)結(jié)構(gòu)中,因此在內(nèi)存管理器和進(jìn)程調(diào)度程序之間存在雙向數(shù)據(jù)流。用戶進(jìn)程可以在進(jìn)程地址空間內(nèi)設(shè)置新的內(nèi)存映射,并可以注冊(cè)自己以在新映射的區(qū)域內(nèi)通知頁(yè)面錯(cuò)誤。這引入了從內(nèi)存管理器到系統(tǒng)調(diào)用接口模塊再到用戶進(jìn)程的控制流。從傳統(tǒng)意義上講,沒(méi)有來(lái)自用戶進(jìn)程的數(shù)據(jù)流,但是用戶進(jìn)程可以使用系統(tǒng)調(diào)用接口模塊中的選擇系統(tǒng)調(diào)用從內(nèi)存管理器中檢索某些信息。

3.3 虛擬文件系統(tǒng)架構(gòu)

虛擬文件系統(tǒng)旨在提供存儲(chǔ)在硬件設(shè)備上的數(shù)據(jù)的一致視圖。計(jì)算機(jī)中幾乎所有的硬件設(shè)備都是使用通用設(shè)備驅(qū)動(dòng)程序接口表示的。虛擬文件系統(tǒng)進(jìn)一步發(fā)展,并允許系統(tǒng)管理員在任何物理設(shè)備上安裝一組邏輯文件系統(tǒng)中的任何一個(gè)。邏輯文件系統(tǒng)促進(jìn)與其他操作系統(tǒng)標(biāo)準(zhǔn)的兼容性,并允許開(kāi)發(fā)人員使用不同的策略來(lái)實(shí)現(xiàn)文件系統(tǒng)。虛擬文件系統(tǒng)抽象了物理設(shè)備和邏輯文件系統(tǒng)的詳細(xì)信息,并允許用戶進(jìn)程使用通用接口訪問(wèn)文件,而不必知道文件駐留在哪個(gè)物理或邏輯系統(tǒng)上。

除了傳統(tǒng)的文件系統(tǒng)目標(biāo)之外,虛擬文件系統(tǒng)還負(fù)責(zé)加載新的可執(zhí)行程序。該責(zé)任由邏輯文件系統(tǒng)模塊完成,這使Linux支持多種可執(zhí)行格式。

故簡(jiǎn)言之:

  • 抽象物理設(shè)備和邏輯文件系統(tǒng)的詳細(xì)信息,提供公共訪問(wèn)接口。

  • 提供通用的設(shè)備驅(qū)動(dòng)程序接口。

  • 加載新的可執(zhí)行程序。

3.3.1 模塊結(jié)構(gòu)分析

如何進(jìn)行Linux 內(nèi)核架構(gòu)分析

可分為四大模塊:

  • 公共驅(qū)動(dòng)抽象模塊 由于存在大量不兼容的硬件設(shè)備,因此存在大量的設(shè)備驅(qū)動(dòng)程序。Linux系統(tǒng)最常見(jiàn)的擴(kuò)展是添加了新的設(shè)備驅(qū)動(dòng)程序。設(shè)備獨(dú)立接口模塊提供了所有設(shè)備的一致視圖。

  • 邏輯文件系統(tǒng)模塊,每個(gè)支持的文件系統(tǒng)都有一個(gè)邏輯文件系統(tǒng)模塊。

  • 系統(tǒng)獨(dú)立接口層提供了硬件資源與硬件和邏輯文件系統(tǒng)無(wú)關(guān)的視圖。該模塊使用面向塊或面向字符的文件接口顯示所有資源。

  • 系統(tǒng)調(diào)用接口層為用戶進(jìn)程提供對(duì)文件系統(tǒng)的受控訪問(wèn)。虛擬文件系統(tǒng)僅將特定功能導(dǎo)出到用戶進(jìn)程。

3.4 網(wǎng)絡(luò)接口層架構(gòu)

網(wǎng)絡(luò)子系統(tǒng)允許Linux系統(tǒng)通過(guò)網(wǎng)絡(luò)連接到其他系統(tǒng)。支持許多可能的硬件設(shè)備,以及可以使用的許多網(wǎng)絡(luò)協(xié)議。網(wǎng)絡(luò)子系統(tǒng)抽象了這兩個(gè)實(shí)現(xiàn)細(xì)節(jié),因此用戶進(jìn)程和其他內(nèi)核子系統(tǒng)可以訪問(wèn)網(wǎng)絡(luò)而不必知道正在使用什么物理設(shè)備或協(xié)議。

3.4.1 模塊結(jié)構(gòu)組成

如何進(jìn)行Linux 內(nèi)核架構(gòu)分析

  • 網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序負(fù)責(zé)與硬件設(shè)備通信。每個(gè)可能的硬件設(shè)備都有一個(gè)設(shè)備驅(qū)動(dòng)程序模塊。

  • 設(shè)備無(wú)關(guān)的接口模塊提供了所有硬件設(shè)備的一致視圖,因此子系統(tǒng)中的更高級(jí)別不需要特定的使用硬件知識(shí)。

  • 網(wǎng)絡(luò)協(xié)議模塊負(fù)責(zé)實(shí)現(xiàn)每種可能的網(wǎng)絡(luò)傳輸協(xié)議。

  • 協(xié)議無(wú)關(guān)接口模塊提供獨(dú)立于硬件設(shè)備和網(wǎng)絡(luò)協(xié)議的接口。這是接口模塊,其他內(nèi)核子系統(tǒng)使用該接口模塊訪問(wèn)網(wǎng)絡(luò),而無(wú)需依賴特定的協(xié)議或硬件。

簡(jiǎn)言之,

  • 網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)實(shí)現(xiàn)底層硬件的控制

  • 設(shè)備獨(dú)立接口層為上層提供對(duì)底層設(shè)備驅(qū)動(dòng)層實(shí)現(xiàn)統(tǒng)一訪問(wèn)接口

  • 網(wǎng)絡(luò)協(xié)議層實(shí)現(xiàn)不同的網(wǎng)絡(luò)協(xié)議

  • 協(xié)議獨(dú)立接口層用以抽象隱藏不同硬件、不同網(wǎng)絡(luò)協(xié)議

關(guān)于如何進(jìn)行Linux 內(nèi)核架構(gòu)分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。


當(dāng)前文章:如何進(jìn)行Linux內(nèi)核架構(gòu)分析
文章路徑:http://weahome.cn/article/gophhp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部