嵌入式 Linux開發Kernel移植(一)——kernel內核簡介

分類:IT技術 時間:2016-10-08

嵌入式 linux開發Kernel移植(一)——kernel內核簡介

一、Linux Kernel

1、linux kernel簡介

    Linux kernel是芬蘭黑客 Linus Torvalds 1991年在英特爾x86架構上用C語言開發的自由免費的符合POSIX標準的類Unix操作系統。

    Linux kernel是一個一體化內核monolithic kernel)系統提供硬件抽象層、磁盤及文件系統控制、多任務等功能的系統軟件不是一套完整的操作系統。

wKioL1dx0GvDDdJeAAJsGnSyccI159.png

        內核空間與用戶空間是程序執行的兩種不同的狀態,通過系統調用和硬件中斷能夠完成從用戶控件到內核空間的轉移。

2linux kernel架構

wKiom1dx0QqR6iPkAAORvn7YUAs387.png

系統調用接口SCI:

        SCI層為用戶空間空間提供了一套標準的系統調用函數來訪問linux內核,搭起了用戶空間到內核空間的橋梁。

進程調度管理PM:

    進程管理的重點是創建進程(fork, exec), 停止進程(kill, exit), 並控制它們之間的通信(signal或者POSIX機制). 進程管理還包括控制活動進程如何共享CPU,即進程調度。

內存管理MM:

    內存管理的主要作用是控制多個進程安全地共享內存區域

網絡協議棧:

    內核協議棧為linux提供了豐富的網絡協議實現。

Virtual File system:

        VFS隱藏各種文件系統的具體細節,為文件操作提供個統一的接口。

設備驅動:

    設備驅動模塊是linux kernel的一部分,是內核中的硬件設備管理模塊。

 

二、linux發行版本

    Linux的發行版本是一些組織或廠家,將Linux kernel與外圍實用程序(Utilities)軟件和文檔包裝起來,並提供一些系統安裝界面和系統配置、設定與管理工具就構成了一種發行版本distributionLinux的發行版本實質就是Linux kernel再加上外圍的實用程序組成軟件包。相對於Linux kernel版本,發行版本的版本號隨發布者的不同而不同,與Linux系統內核的版本號是相對獨立的。因此把SUSERedHatubuntuSlackware等直接說成是Linux是不確切的,它們是Linux的發行版本。根據 GPL準則,linux發行版本雖然都源自一個內核,並且都有自己各自的貢獻,但都沒有自己的版權Linux的各個發行版本(distribution),都是使用Linus主導開發並發布的同一個Linux內核,因此在內核層不存在什麽兼容性問題。每個版本都不一樣的感覺,只是在發行版本的最外層才有所體現,而絕不是Linux本身特別是內核不統一或是不兼容。

    目前最流行的幾個正式版本有:SUSE、RedHat、Fedora、 Debian、Ubuntu、CentOS、Gentoo,Mint等等用戶可根據自己的經驗和喜好選用合適的Linux發行版。

三、Kernel的模塊化

Linux kernel是一個代碼量巨大、功能極其復雜的工程項目,因此各功能模塊需要模塊化設計,以實現功能模塊內部各部分之間的高內聚、功能模塊之間的低耦合。

Linux kernel的模塊化設計使得對kernel的各功能模塊的裁剪變得簡單靈活,既可以在kernel編譯前進行配置,也可以在kernel運行時將編譯好的功能模塊動態加載到kernel空間中鏈接運行。

kernel模塊是Linux kernel向外部提供的一個接口,全稱為動態可加載內核模塊Loadable Kernel ModuleLKM),簡稱為內核模塊。Linux kernel在編譯前可以根據需要靈活裁剪配置模塊,也可以將kernel功能模塊編譯,在kernel運行時動態加載鏈接到kernel空間中運行。

本文出自 “生命不息,奮鬥不止” 博客,轉載請與作者聯系!


Tags: 英特爾 系統軟件 管理工具 嵌入式 linux

文章來源:


ads
ads

相關文章
ads

相關文章

ad