本文以通俗易懂的語言介紹 Linux 內核。這一切都始於年輕的 Linus Torvalds 將自己的操作系統編程作為一種愛好。

他幫助其他程序員和計算機極客試驗他的代碼,以提高其質量和性能。經過幾個月的裝修, Linux 火火。

Linux 內核,由 Linus 設計, 操作系統的大腦內核最初包含數千行代碼,但最終在幾個版本中達到了數百萬行。作為開源軟件,任何人都可以在互聯網上隨時訪問它。

什麼是 Linux 內核?

簡而言之,Linux 內核在用戶應用程序和底層硬件之間架起了溝通的橋樑。通常有不同類型的內核。 Linux 內核是一個單片內核。所以基本上,操作系統的幾乎所有工作都是由內核自己處理的。

單片內核

在上圖中,我們可以看到單片內核管理應用程序和硬件之間的整個通信。 由於 Linux 內核是用 C 編程語言編寫的,因此 GCC(GNU Compiler Collection)是所有內核源代碼的默認編譯器。

linux內核在哪裡?

由於 Linux 內核是一段代碼,因此它必須存儲在文件系統中的某個位置,以便每次系統重新啟動時將其加載到內存中。

在 Debian/Ubuntu 系統上,Linux 內核位於 /boot 目錄中。 要訪問 Linux 內核,您需要知道當前的 Linux 內核版本。您可以使用基本的 uname -r 命令訪問 Linux 內核版本。

Linux 內核究竟做了什麼?

Linux 內核簡歷中不乏技能和工作職責。 它管理 Linux 系統的整體功能。 Linux 內核完成從調度進程到為應用程序提供資源的所有工作。

讓我們快速瀏覽一下 Linux 內核的一些基本機制。

1、Linux內核是內存管理器

Linux 內核管理內存。分配和釋放物理內存是內核工作的基本部分。用於存儲地址映射的頁表共有三個級別。頁是內存的基本單位,大小通常為 4096 字節。

大多數內核任務通過系統調用發生。例如,讓我們進行系統調用來獲取內存中的頁面大小。

#include<unistd.h>
#include<stdio.h>

int main(){

	// Performing a system call
	int size = getpagesize();

	// Printing the page size
	printf("%dn", size);
	return 1;
}

輸出:

4096

在上面的例子中 getpagesize() 預定義的系統調用。

內存管理單元負責分頁和交換虛擬內存中的頁面。分配給進程的虛擬內存是完全獨立的,並提供了一層針對惡意程序的保護。

Linux 命令如 htop 和 top 可用於監控每個正在運行的進程的內存相關信息。

top 命令的內存特定輸出

2.內核管理流程

系統上運行的所有程序都是進程。內核管理每個進程的創建、執行和刪除。系統調用如 fork() 什麼時候 exec() 多處理環境中的強大工具。

需要一個 CPU 來運行系統中的所有進程。 進程調度器 這是流程管理的一個組成部分。有多種可以實現的調度算法。

Linux 內核還有其他職責。 IPC(進程間通信)管道和信號量等機制由內核協調,用於進程之間的通信。

要快速查看所有正在運行的進程及其屬性,例如調度優先級和 CPU 利用率,請運行以下命令: htop 終端中的命令。

用於 Linux 內核進程的 Htophtop 命令的進程相關輸出。

有關 Linux 內核的更多信息,請參閱 David A. Rustling 的書。

安裝特定的 Linux 內核

這可能聽起來很可疑,但用戶可以用更新或舊版本替換內核。執行此任務的步驟過於復雜,無法在本文中介紹。因此,我們提供了在您的系統上安裝特定內核的簡單指南。

第一項工作是下載內核文件。 Linux內核文件可以從官網下載。下載完成後,需要解壓文件並進行配置。

文件的配置是通過 make 命令。通過運行 make menuconfig,您將看到一個窗口,您可以使用它為新內核選擇模塊和功能。這個巨大過程的捷徑是將當前配置文件複製到從運行內核中提取的目錄中。

cp /boot/config-$(uname -r) .config

筆記: 將正在運行的命令提升為 root 訪問權限。某些命令可能不適用於用戶級訪問。我們可以用 sudo -ssudo su 完成任務。

上面的命令基本上將存在於內核運行的引導目錄中的配置文件複製到一個名為的新配置文件: .config.

下一步是安裝用於編譯內核文件的特定工具和編譯器。 Debian/Ubuntu 用戶可以這樣做:

sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev

使用內核映像 make 該命令位於包含新內核文件的目錄中。編譯內核需要很長時間,因此無需按下緊急按鈕。

編譯後,我們需要安裝模塊和內核映像。這可以使用以下命令在一個命令中實現:

make install_modules && make install

第一個子命令安裝內核模塊,第二個子命令安裝完整的內核,在其中創建映像和其他重要文件 /boot 目錄。

最後一步是將當前內核版本切換到新安裝的內核版本。為此,請運行:

sudo update-initramfs -c -k <NEW_VERSION_NUMBER>

版本號應與新安裝的映像文件的名稱相似。其次是 update-grub 運行命令以完成您當前的內核版本。

已進行所有更改。要重新啟動系統,請運行 reboot 在終端。

結論是

Linux 內核是 Linux 操作系統的動力源。理解這個概念會讓你更接近於理解 Linux。我希望這篇文章很容易理解。如果您有任何問題或反饋,請在下面發表評論。

參考

Linux 內核 – David A. Gosling

Linux 內核——作者 Andries Brouwer