01.16 一文了解Linux內核

什麼是操作系統OS



操作系統(簡稱為OS)是一種軟件平臺,可創建一個環境,用戶可以在該環境中在計算設備上運行不同的應用程序。 操作系統充當軟件程序和系統硬件組件之間的橋樑。 它被移動設備,標籤,臺式機,Web服務器,視頻遊戲機等不同的設備所利用。市場上有各種操作系統可用,例如Windows,Linux,Unix和Mac OSX。


操作系統的的組成



  • Bootloader:它負責設備的啟動過程。
  • Shell:Shell是一種編程語言,它可以控制其他文件,進程以及所有其他程序。
  • Kernel:它是操作系統的主要組件,管理內存,CPU和其他相關組件。
  • Desktop Environment:這是用戶通常與之交互的環境。
  • Graphical server(圖形服務器):它是操作系統的子系統,用於在屏幕上顯示圖形
  • Applications: 這些是執行不同用戶任務(例如word,excel等)的程序集。
  • Daemons : 後臺服務提供商。


什麼是內核kernel



內核是操作系統的關鍵組件。 它藉助進程間通信和系統調用,在硬件級別上充當應用程序和數據處理之間的橋樑。


每當將操作系統加載到內存中時,首先,將加載內核並將其保留在那裡,直到操作系統關閉。 內核負責處理低級任務,例如任務管理,內存管理,風險管理等。


內核的任務


  • 用於應用程序執行的流程管理。
  • 內存和I / O(輸入/輸出)管理。
  • 系統調用控制(內核的核心行為)。
  • 藉助設備驅動程序進行設備管理。
  • 內核空間,用戶空間是什麼?


內核空間



內核處於提升的系統狀態,其中包括受保護的內存空間以及對設備硬件的完全訪問權限。 此係統狀態和內存空間統稱為內核空間。 在內核空間內,對硬件和系統服務的核心訪問進行管理,並作為服務提供給系統的其餘部分。



用戶空間



用戶空間或用戶域是在操作系統內核環境之外運行的代碼,用戶空間定義為操作系統用來與內核連接的各種應用程序或程序或庫。


用戶的應用程序是在用戶空間中執行的,它們可以通過內核系統調用訪問計算機可用資源的一部分。 通過使用內核提供的核心服務,可以創建用戶級別的應用程序,例如遊戲或辦公軟件。


內核的操作



內核是任何操作系統的心臟,因為它控制系統中的所有其他程序。 當設備啟動時,內核會經歷一個初始化的過程,例如檢查內存。 它負責內存分配部分,並創建了一個運行應用程序的環境,而沒有任何干擾。


內核充當服務提供者,因此程序可以請求內核完成多項任務,例如請求使用磁盤,網卡或其他硬件,並且內核為CPU設置中斷以啟用多任務處理。 它不讓錯誤的程序進入其他程序的操作功能,從而保護了計算環境。 它通過不允許存儲空間來阻止未經授權的程序進入入口,並限制它們消耗的CPU時間。


內核的分類



通常有三類內核:


  • Monolithic kernel: 它包含許多設備驅動程序,可在設備的硬件和軟件之間創建通信接口。


它是操作系統廣泛使用的內核。 在單片架構中,內核由可以動態加載和卸載的各種模塊組成。 這種體系結構將擴展OS的功能,並允許輕鬆擴展內核。


使用單片式體系結構,內核的維護變得容易,因為當需要修復特定模塊中的錯誤時,它允許相關模塊進行加載和卸載。 因此,它消除了繁瑣的工作,即降低並重新編譯整個內核以進行很小的更改。 在單片內核中,卸載不再使用的模塊更加容易。


  • Micro kernel: 它只能執行基本功能。


微內核已經發展成為單片內核的替代產品,以解決單片內核無法做到的內核代碼不斷增長的問題。 這種體系結構允許某些基本服務(例如協議棧,設備驅動程序管理,文件系統等)在用戶空間中運行。 這樣可以以最少的代碼增強OS的功能,提高安全性並確保穩定性。


它通過使系統的其餘部分正常運行而不會造成任何中斷,從而限制了對受影響區域的損壞。 在微內核體系結構中,所有基本OS服務都可以通過進程間通信(IPC)提供給程序。 微內核允許設備驅動程序和硬件之間的直接交互。


  • Hybrid kernel: 它結合了單片內核和微內核的各個方面。


混合內核可以決定要在用戶模式和主管模式下運行什麼。 通常,在混合內核環境中,設備驅動程序,文件系統I / O之類的內容將在用戶模式下運行,而服務器調用和IPC則保持在管理者模式下。 它提供了兩個世界的最佳體驗。


Linux操作系統



Linux是Linus Torvalds在1991年開發的開源平臺。 它在各種設備中用作操作系統,例如在計算機,服務器,移動設備,大型機和其他嵌入式設備中。 由於它是開源軟件,因此用戶可以根據需要自定義此操作系統。 它支持幾乎所有主要的計算機平臺,例如ARM,x86,SPARK等。Linux的最常見用法是用於Server,但也用於臺式機,電子書閱讀器,智能手機等。


Linux內核



內核是任何基於Linux的操作系統的核心組件。 它代表了臺式機和服務器的Linux發行版的核心方面。 它具有整體架構,並且操作系統完全在內核空間中運行。 整體內核不僅包圍中央處理器,IPC和內存,而且具有系統服務器調用,設備驅動程序和文件系統管理。 Linux內核充當設備軟件和硬件之間的一層。


內核可以是單片,微內核或混合內核(例如OS X和Windows 7)。 Linux內核是類似於UNIX系統的單片計算機操作系統內核。 Linux操作系統系列(通常稱為Linux發行版)基於此內核。與微內核不同,單塊內核不僅包含中央處理單元,內存和IPC,還具有設備驅動程序,系統服務器調用和文件系統管理。他們最擅長與硬件通信並同時執行多項任務。由於這個原因,此處的過程反應速度很快。


但是,很少的挫折是所需的巨大安裝和內存佔用空間以及安全性不足,因為一切都以管理員模式運行。相反,隨著用戶服務和內核的分離,微內核對應用程序調用的反應可能會很慢。因此,與整體內核相比,它們的尺寸更小。微內核很容易擴展,但是編寫微內核需要更多代碼。 Linux內核是用C和Assembly編程語言編寫的。


內核源碼結構



在Linux系統中查看內核源碼,如圖所示


一文了解Linux內核


  • arch 特定體系結構的代碼
  • block 塊設備I/O層
  • crypo 加密API
  • Documentation 內核源碼文檔
  • drivers 設備驅動程序
  • firmware 使用某些驅動程序而需要的設備固件
  • fs VFS和各種文件系統
  • include 內核頭文件
  • init 內核引導和初始化
  • ipc 進程間通信代碼
  • kernel 像調度程序這樣的核心子系統
  • lib 同樣內核函數
  • mm 內存管理子系統和VM
  • net 網絡子系統
  • samples 示例,示範代碼
  • scripts 編譯內核所用的腳本
  • security Linux 安全模塊
  • sound 語音子系統
  • usr 早期用戶空間代碼(所謂的initramfs)
  • tools 在Linux開發中有用的工具
  • virt 虛擬化基礎結構



Linux內核與硬件的關係



內核可以通過所謂的中斷來管理系統的硬件。 當硬件要與系統接口時,會發出一箇中斷,中斷處理器,從而對內核執行相同的操作。 為了提供同步,內核可以禁用中斷,無論是單箇中斷還是全部中斷。 但是,在Linux中,中斷處理程序不是在進程上下文中運行,而是在不與任何進程相關聯的中斷上下文中運行,這種特殊的中斷上下文僅是為了讓中斷處理程序快速響應單箇中斷然後最終退出而存在 。


是什麼使Linux內核與其他經典Unix內核不同?



Linux內核和經典 Unix內核之間存在顯著差異,如下所示:


  • Linux支持內核模塊的動態加載
  • Linux內核是搶佔式的
  • Linux具有對稱的多處理器支持
  • Linux具有開放軟件特性,因此是免費的
  • Linux忽略了內核開發人員稱為“設計不良”的某些標準Unix功能
  • Linux提供了帶有設備類,可熱插拔事件和用戶空間設備文件系統的面向對象的設備模型
  • Linux內核無法區分線程和正常進程


Linux內核架構



內核僅僅是資源管理器。 被管理的資源可以是進程,內存或硬件設備。 它管理和仲裁多個競爭用戶之間對資源的訪問。 Linux內核存在於用戶空間下方的內核空間中,該空間是執行用戶應用程序的位置。 為了使用戶空間與內核空間進行通信,已合併了一個GNU C庫,該庫為系統調用接口提供了一個論壇,以連接到內核空間並允許轉換回用戶空間。


Linux內核可以分為三個主要級別:


系統調用界面:這是最高層,並承擔諸如讀取和寫入之類的基本操作。


內核代碼:它位於系統調用接口下方,這是Linux支持的所有處理器體系結構的共同點,有時也定義為與體系結構無關的內核代碼。


依賴於體系結構的代碼:它在獨立於體系結構的代碼下,形成通常稱為板級支持程序包(BSP)的程序-該程序包包含一個稱為引導加載程序的小程序,它將操作系統和設備驅動程序放入內存。


Linux內核的體系結構主要包括:系統調用接口,進程管理,虛擬文件系統,內存管理,體系結構和設備驅動程序,這些稱為Linux內核的主要子系統。


  • 系統調用界面(System call interface)


簡單來說,系統調用就是用戶程序和硬件設備之間的橋樑。用戶程序在需要的時候,通過系統調用來使用硬件設備。系統調用是一種編程過程,用於承擔從用戶空間到內核的函數調用,其中程序從操作系統內核請求服務。 該接口可能取決於體系結構。它包括各種硬件服務,例如與硬件設備連接以及在內核的各個組成部分之間創建通信接口。 系統調用在操作系統和進程之間創建有效的接口。


  • 進程管理 (Process management)


執行進程,內核負責創建和刪除不同的進程,並監視它們與外部世界的連接。例如輸入和輸出。 它通過信號,進程間通信原語或管道來處理不同方法之間的通信。 除了所有這些之外,它還有一個調度程序,用於控制共享CPU的進程。


  • 內存管理(Memory management)


內存是操作系統的重要組成部分,內存在所謂的頁面中進行管理以提高效率。Linux包括管理可用內存的方法以及用於物理和虛擬映射的硬件機制,還提供交換空間。內存管理不僅僅管理4KB緩衝區,還遠遠不止於此。 Linux還提供了4kb緩衝區以外的抽象(稱為slab分配器)。 Slab分配器使用4kb緩衝區作為基礎,然後通過監視諸如頁面已滿,為空和部分使用之類的內容從內部分配結構。 這使方案可以動態增長,並可以支持系統的更重要需求。


  • 虛擬文件系統(Virtual file system)


虛擬文件系統(VFS)是內核的重要組成部分,它為文件系統提供了標準的接口抽象。 它提供了系統調用接口和內核支持的文件系統之間的切換層。 VFS在內核支持的文件系統和SCI(系統調用接口)之間創建一個交換層。除了上述內容之外,Linux還支持各種類型的文件系統,這些文件系統需要以不同的方式組織數據以物理格式存儲。 例如,可以使用常用的FAT文件系統,Linux標準ext3文件系統或其他幾種格式來格式化磁盤。


大數據開發高薪必備資源(免費獲取) /


Oracle高級技術總監多年精心創作一套完整課程體系【大數據學習必看】,全面助力大數據開發零基礎+入門+提升+項目=高薪!




如何學習大數據開發?


一文了解Linux內核


「大數據零基礎入門」


一文了解Linux內核


「大數據架構系統組件」


一文了解Linux內核


「大數據全套系統工具安裝包」


Java必備工具


一文了解Linux內核


大數據必備工具


一文了解Linux內核


「大數據行業必備知資訊」


一文了解Linux內核


「大數據精品實戰案例」


一文了解Linux內核


「大數據就業指導方案」


一文了解Linux內核

最後說一下的,也就是以上教程的獲取方式!

領取方法:

還是那個萬年不變的老規矩

1.評論文章,沒字數限制,一個字都行!

3.私信小編:“大數據開發教程”即可!

謝謝大家,祝大家學習愉快!(拿到教程後一定要好好學習,多練習哦!)


分享到:


相關文章: