linux內核源碼樹

linux內核源碼樹掃盲分析

sudo apt-get install tree
//下載tree
tree
//輸入指令(該指令可以檢查第三方工具包里的內容是否完整)

可以看到如圖的樹狀結構:

在這里插入圖片描述
linux內核源碼:
為什么內核大約1.3w個c文件,1100w行代碼?
linux是一個開源的,支持多架構多平臺代碼,可移植性非常高。但是linux內核編譯出來一般就若干M,因為支持多平臺,多架構,所以編譯之前要配置,配置成適合目標平臺來用。代碼編譯出來是給一個平臺一個架構來用的,很多代碼是不參與編譯的。

例如支持:
ARM架構:
比如以下平臺:
?????? ?海思 ,友善之臂 ,RK ,樹莓派, nanopi

X86架構

PowerPc架構
Mips架構
后兩個架構現在占得市場份額較小。

Linux內核源代碼目錄樹結構

arch(和架構相關):包含和硬件體系結構相關的代碼,每種平臺占一個相應的目錄。和32位PC相關的代碼存放在i386目錄下,其中比較重要的包括kernel(內核核心部分)、mm(內存管理)、math-emu(浮點單元仿真)、lib(硬件相關工具函數)、boot(引導程序)、pci(PCI總線)和power(CPU相關狀態)。

block:部分塊設備驅動程序。

crypto:常用加密和散列算法(如AES、SHA等),還有一些壓縮和CRC校驗算法。

Documentation:關于內核各部分的通用解釋和注釋。

drivers:設備驅動程序,每個不同的驅動占用一個子目錄。

fs:各種支持的文件系統,如ext、fat、ntfs等。

include:頭文件。其中,和系統相關的頭文件被放置在linux子目錄下。

init:內核初始化代碼(注意不是系統引導代碼)。

ipc:進程間通信的代碼。

kernel:內核的最核心部分,包括進程調度、定時器等,和平臺相關的一部分代碼放在arch/*/kernel目錄下。

lib:庫文件代碼。

mm:內存管理代碼,和平臺相關的一部分代碼放在arch/*/mm目錄下。

net:網絡相關代碼,實現了各種常見的網絡協議。

scripts:用于配置內核文件的腳本文件。

security:主要是一個SELinux的模塊。

sound:常用音頻設備的驅動程序等。

usr:實現了一個cpio。

在i386體系下,系統引導將從arch/i386/kernel/head.s開始執行,并進而轉移到init/main.c中的main()函數初始化內核。

參考博客:
https://www.cnblogs.com/senior-engineer/p/4929703.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272431.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272431.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272431.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

POJ 2676/2918 數獨(dfs)

思路&#xff1a;記錄每行每列每一個宮已經出現的數字就可以。數據比較弱 另外POJ 3074 3076 必須用剪枝策略。但實現較麻煩&#xff0c;還是以后學了DLX再來做吧 //Accepted 160K 0MS #include<cstdio> #include<iostream> #include<algorithm> #include&l…

負載均衡很難?看完這篇全懂了

來自&#xff1a;金鐘路上小碼工鏈接&#xff1a;https://www.cnblogs.com/danbing/p/7459224.html一、什么是負載均衡&#xff1f;互聯網早期&#xff0c;業務流量比較小并且業務邏輯比較簡單&#xff0c;單臺服務器便可以滿足基本的需求&#xff1b;但隨著互聯網的發展&#…

配置樹莓派linux的內核和編譯并將鏡像拷貝至樹莓派

驅動代碼的編寫需要一個提前編譯好的內核&#xff0c;編譯內核就必須配置&#xff0c;配置的最終目標會生成.config文件&#xff0c;該文件指導makefile去把有用的東西組織成內核。 如何生成.config文件&#xff1a; 第一種方式&#xff1a; 廠家配linux內核源碼&#xff0c;比…

h5 與原生 app 交互的原理

作者&#xff1a;senntyousegmentfault.com/a/1190000016759517現在移動端 web 應用&#xff0c;很多時候都需要與原生 app 進行交互、溝通&#xff08;運行在 webview中&#xff09;&#xff0c;比如微信的 jssdk&#xff0c;通過 window.wx 對象調用一些原生 app 的功能。所以…

(原)直方圖的相似性度量

轉載請注明出處&#xff1a; http://www.cnblogs.com/darkknightzh/p/5147982.html 對于兩直方圖 $S\left\{ {{s}_{1}},\cdots {{s}_{n}} \right\}$ 及 $M\left\{ {{m}_{1}},\cdots {{m}_{n}} \right\}$&#xff0c;n為直方圖維數&#xff08;如255&#xff09;&#xff0c;這兩…

【ROS問題】rqt_plot運行報錯

本人Linux版本&#xff1a;Ubuntu 18.04 LTS ROS版本&#xff1a;Melodic 方案一&#xff1a; 你看那個報錯&#xff0c;全是Matplotlib的報錯&#xff0c;是這個東西版本不夠高&#xff0c;重新安裝就好啦。 python -m pip install -U pip python -m pip install -U matp…

BCP使用筆記整理

一、BCP 簡介大容量復制程序實用工具 (bcp) 可以在 Microsoft SQL Server 實例和用戶指定格式的數據文件間大容量復制數據。 使用 bcp 實用工具可以將大量新行導入 SQL Server 表&#xff0c;或將表數據導出到數據文件。 除非與 queryout 選項一起使用&#xff0c;否則使用該實…

怎樣基于谷歌地圖的Server緩存公布Image Service服務

怎樣基于谷歌地圖的Server緩存公布Image Service服務第一步&#xff1a;下載地圖數據下載安裝水經注萬能地圖下載器&#xff0c;啟動時僅僅選擇電子.谷歌&#xff08;這里能夠依據自己的須要選擇&#xff09;。例如以下圖所看到的。找到成都后框選下載成都區域&#xff0c;例如…

ROS文件系統介紹

預備工作 本教程中我們將會用到ros-tutorials程序包&#xff0c;請先安裝&#xff1a; sudo apt-get install ros-<distro>-ros-tutorials快速了解文件系統概念 Packages: 軟件包&#xff0c;是ROS應用程序代碼的組織單元&#xff0c;每個軟件包都可以包含程序庫、可執…

接軟件開發項目,你需要知道這些!

作為一個程序員&#xff0c;跟客戶交流是最困難的事情了&#xff0c;所以在上路之前&#xff0c;復習一下這兩年遇到的奇怪的客戶言論&#xff0c;以便以后更好地跟客戶交流。1、不就是做個網站&#xff08;或者別的&#xff09;么&#xff1f;為什么這么貴&#xff1f;一定耐心…

整理的一些比較基礎的面試知識點

1、面向對象的三大特性或其具體體現在哪 2、頁面間傳值方式 3、session cookie原理及區別 4、hasstable&#xff0c;dictionary&#xff0c;List &#xff0c;collection 5、類和抽象類&#xff0c;類和接口&#xff0c;接口和抽象類區別及適合場景 6、Get和Post比較優缺點或區…

五種類型的程序員,你屬于哪一種?

在我的編程生涯中,我碰到過很多奇奇怪怪的對手和同盟。我把這些編碼戰士們分成五類&#xff0c;有些人是你隊伍中的好伙伴&#xff0c;有些人則是搗蛋者&#xff0c;讓你的每一個計劃都完不成。不管怎么說&#xff0c;他們在軟件開發的諸神殿上都占有一席之地。如果你的團隊中沒…

創建ROS程序包

一個catkin程序包由什么組成? 一個程序包要想稱為catkin程序包必須符合以下要求&#xff1a; 該程序包必須包含catkin compliant package.xml文件這個package.xml文件提供有關程序包的元信息。 程序包必須包含一個catkin 版本的CMakeLists.txt文件&#xff0c;而Catkin meta…

一些有用的js插件

getfuelux.com 一系列插件合集 Ion.RangeSlider 超級牛的范圍選擇控件 Ion.CheckRadio Ion.Tabs Ion.Calendar Ion.ImageSlider Ion.Zoom www.ngwidgets.com Advanced UI Widgets for AngularJS http://www.jq22.com/ jQuery 插件庫 http://jvectormap.com/ 地圖插件 X-…

C# FTP操作類庫

class FTP_Class{string ftpServerIP;string ftpUserID;string ftpPassword;FtpWebRequest reqFTP; #region 連接/// <summary>/// 連接FtpWebRequest/// </summary>/// <param name"path"></param>private void Connect(String path)/…

安裝并配置ROS環境

參考該網址內容&#xff1a;http://wiki.ros.org/cn/ROS/Tutorials/InstallingandConfiguringROSEnvironment

Cropper – 簡單的 jQuery 圖片裁剪插件

Cropper 是一個簡單的 jQuery 圖像裁剪插件。它支持選項&#xff0c;方法&#xff0c;事件&#xff0c;觸摸&#xff08;移動&#xff09;&#xff0c;縮放&#xff0c;旋轉。輸出的裁剪數據基于原始圖像大小&#xff0c;這樣你就可以用它們來直接裁剪圖像。 如果你嘗試裁剪跨域…

C# JSON格式數據用法

JSON簡介JSON(全稱為JavaScript ObjectNotation) 是一種輕量級的數據交換格式。它是基于JavaScript語法標準的一個子集。JSON采用完全獨立于語言的文本格式&#xff0c;可以很容易在各種網絡、平臺和程序之間傳輸。JSON的語法很簡單&#xff0c;易于人閱讀和編寫&#xff0c;同…

Ros命令及功能

運行小烏龜代碼&#xff1a; roscore rosrun turtlesim turtlesim_node rosrun turtlesim turtle_teleop_key一些命令及作用 ros 加tap //查看電腦中以ros開頭的命令 rqt_graph //將系統內的主要資源以可視化的形式展現出來 rosnode list //列出系統節點 命令 --help //查看命…

數據庫——環境初建改端口和密碼(轉)

一、修改APACHE的監聽端口 2、在界面中選apache&#xff0c;彈出隱藏菜單選項&#xff0c;打開配置文件httpd.conf; 2、找到Listen 80 和 ServerName localhost:80; 3、將80改成801&#xff08;當然自己也可以設定別的不使用的端口&#xff0c;例如8000等&#xff09;; 4、保存…