1. 程式人生 > >Linux基礎(四)——內核

Linux基礎(四)——內核

自己的 計算 osi 標準 1.5 基本 空間 分發 管道

Linux內核簡介

Linux內核(kernel)是芬蘭赫爾辛基大學的學生Linus Torvalds於1991年創建的。隨著程序員從其他自由軟件項目中調整源代碼以擴展內核的功能,它很快獲得了廣泛的應用。由於Linux內核越來越受歡迎,GNU自己的內核GNU Hurd不可用且不完整,而且Berkeley Software Distribution (BSD) OS仍然受到法律問題的阻礙。因此,在開發者社區的幫助下,Linux kernel 0.01於1991年9月17日發布。

Linux內核是一個自由的、開源的、獨立的、類unix的操作系統內核,它是一個用C語言寫成,符合POSIX標準的類Unix操作系統。是整個操作系統的最底層,它負責整個硬件的驅動,以及提供各種系統所需的核心功能,包括防火墻機制、是否支持LVM或Quota文件系統等等。

Linux內核結構

內核內部結構是十分復雜的,下圖簡單描述內核各個模塊之間的映射:
技術分享圖片

Linux內核作用

**硬件設備管理**
    計算機完成真正工作是硬件,如CPU、硬盤、顯示適配器、聲卡、網卡等等。內核作用就是控制這些硬件如何工作。幾乎每個系統操作最終都映射到一個物理設備上,而設備控制操作都由特定的設備相關的代碼來進行,這些代碼被稱為設備驅動,內核中必須嵌入每個外設的驅動,以使其完成計算機發起的工作。

    **內存管理**
    內存是計算機的主要資源之一, 而內存處理策略對系統性能至關重要。 內核為每一個進程都在有限的可用資源上建立了一個虛擬地址空間. 內核的不同部分與內存管理子系統通過一套函數調用交互, 從簡單的 malloc/free 對到更多更復雜的功能。

**進程管理**
    內核負責創建和銷毀進程, 並處理它們與外部世界的聯系(輸入和輸出);
    內核處理不同進程間通訊(通過信號, 管道, 或者進程間通訊原語)對整個系統功能來說是基本的;
    內核進程管理調度器, 控制進程如何共享 CPU;
    內核的進程管理實現了多個進程在一個單個或者幾個 CPU 之上的抽象。

    **文件系統管理**
    Linux的核心思想:一切皆文件。內核在非結構化的硬件之上建立了結構化的文件系統。
    虛擬文件系統VFS(也成虛擬文件交換)作為內核子系統,為用戶空間程序提供了文件和文件系統相關的統一接口。通過VFS,應用程序可以使用相同接口完成不同介質上不同文件系統的數據讀寫操作。VFS之所以能夠銜接各種各樣的文件系統,是因為它定義了所有文件系統都支持的、基本的、概念上的接口和數據結構。實際文件系統也將自身的操作在形式上與VFS定義保持一致,而每個文件系統的細節則由各自實現。

    **網絡管理**
    Linux網絡是由操作系統進行管理的,進入系統的報文是異步事件,報文在某一個進程接手之前必須被收集, 識別, 分發.。內核負責在程序和網絡接口之間遞送數據報文, 並且根據程序的網絡活動來控制程序的執行。此外,內核擔負路由和地址解析責任。

Linux基礎(四)——內核