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.mzph.cn/news/272431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

负载均衡很难?看完这篇全懂了

来自:金钟路上小码工链接:https://www.cnblogs.com/danbing/p/7459224.html一、什么是负载均衡?互联网早期,业务流量比较小并且业务逻辑比较简单,单台服务器便可以满足基本的需求;但随着互联网的发展&#…

配置树莓派linux的内核和编译并将镜像拷贝至树莓派

驱动代码的编写需要一个提前编译好的内核,编译内核就必须配置,配置的最终目标会生成.config文件,该文件指导makefile去把有用的东西组织成内核。 如何生成.config文件: 第一种方式: 厂家配linux内核源码,比…

h5 与原生 app 交互的原理

作者:senntyousegmentfault.com/a/1190000016759517现在移动端 web 应用,很多时候都需要与原生 app 进行交互、沟通(运行在 webview中),比如微信的 jssdk,通过 window.wx 对象调用一些原生 app 的功能。所以…

【ROS问题】rqt_plot运行报错

本人Linux版本:Ubuntu 18.04 LTS ROS版本:Melodic 方案一: 你看那个报错,全是Matplotlib的报错,是这个东西版本不够高,重新安装就好啦。 python -m pip install -U pip python -m pip install -U matp…

BCP使用笔记整理

一、BCP 简介大容量复制程序实用工具 (bcp) 可以在 Microsoft SQL Server 实例和用户指定格式的数据文件间大容量复制数据。 使用 bcp 实用工具可以将大量新行导入 SQL Server 表,或将表数据导出到数据文件。 除非与 queryout 选项一起使用,否则使用该实…

怎样基于谷歌地图的Server缓存公布Image Service服务

怎样基于谷歌地图的Server缓存公布Image Service服务第一步:下载地图数据下载安装水经注万能地图下载器,启动时仅仅选择电子.谷歌(这里能够依据自己的须要选择)。例如以下图所看到的。找到成都后框选下载成都区域,例如…

整理的一些比较基础的面试知识点

1、面向对象的三大特性或其具体体现在哪 2、页面间传值方式 3、session cookie原理及区别 4、hasstable,dictionary,List ,collection 5、类和抽象类,类和接口,接口和抽象类区别及适合场景 6、Get和Post比较优缺点或区…

五种类型的程序员,你属于哪一种?

在我的编程生涯中,我碰到过很多奇奇怪怪的对手和同盟。我把这些编码战士们分成五类,有些人是你队伍中的好伙伴,有些人则是捣蛋者,让你的每一个计划都完不成。不管怎么说,他们在软件开发的诸神殿上都占有一席之地。如果你的团队中没…

一些有用的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、保存…

文件系统认知

什么是文件系统 常规认知是&#xff1a;linux根目录那些东西 百科&#xff1a;文件系统是操作系统用于明确存储设备组织文件的方法&#xff0c;操作系统中负责管理和存储文件信息的软件机构称为文件管理系统&#xff0c;简称文件系统。 以上说的方法&#xff1a;就是文件管理…

寒哥细谈之AutoLayout全解

看到群中好多朋友还停留在Frame布局的痛苦时代&#xff0c;以及有些开发者接手别人的就项目发现布局一团乱。而且没有启动图的时候并不是真正真正适配iPhone 6(S)、iPhone6(S) Plus等设备 。寒哥准备尽可能详细的讲一讲我所掌握的AutoLayout 。AutoLayout很难&#xff1f;我觉得…

最难学的5种编程语言排行

每个程序员都熟悉许多编程语言。许多编程语言都是高级的&#xff0c;它们的语法是人类可读的。然而&#xff0c;也有一些低级语言&#xff0c;对于一个人来说&#xff0c;读起来很困难&#xff0c;但是可以理解。然而&#xff0c;您是否遇到过一种既不可读又不可理解的编程语言…

[小北De编程手记] : Lesson 02 - Selenium For C# 之 核心对象

从这一篇开始&#xff0c;开始正式的介绍Selenium 以及相关的组件&#xff0c;本文的将讨论如下问题&#xff1a; Selenium基本的概念以及在企业化测试框架中的位置Selenium核心对象&#xff08;浏览器驱动&#xff09; Web DriverSelenium核心对象&#xff08;Dom元素&#xf…

Java中HashMap的entrySet()你会用了吗

Map中存放的元素均为键值对&#xff0c;故每一个键值对必然存在一个映射关系。 Map中采用Entry内部类来表示一个映射项&#xff0c;映射项包含Key和Value Map.Entry里面包含getKey()和getValue()方法 Set<Entry<T,V>> entrySet() 该方法返回值就是这个map中各个键…