QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

Linux 内核源码结构(1)

  • 2020-04-04
  • 本文字数:1085 字

    阅读完需:约 4 分钟

Linux内核源码结构(1)

在上一期中,我们介绍了 Linux 内核发展的历史,也介绍了与其相关的 Unix 和 GNU 的相关知识。从这一期开始,我们将介绍 Linux 内核的源码结构。我们将先根据 Linux 源码的目录结构进行分析,到本文章发布前,Linux 4.19 的最新版本为 Linux 4.19.94,我们将依据 openEuler 开源社区源码并参考 Linux 4.19.94 版内核源码进行分析。

一、Linux 内核源码的目录结构分析

下图列出了截至文章发表前 openEuler 开源社区 kernel 目录下的目录结构[5]:





其中各个文件夹中源代码的功能如下表所示[1] [3]:


目录/文件名源码功能简介
/Documentation说明文档,对每个目录的具体作用进行说明。
/arch不同CPU架构下的核心代码。其中的每一个子目录都代表Linux支持的CPU架构。
/block块设备通用函数。
/certs与证书相关。
/crypto常见的加密算法的C语言实现代码,譬如crc32、md5、sha1等。
/drivers内核中所有设备的驱动程序,其中的每一个子目录对应一种设备驱动。
/include内核编译通用的头文件。
/init内核初始化的核心代码。
/ipc内核中进程间的通信代码。
/kernel内核的核心代码,此目录下实现了大多数Linux系统的内核函数。与处理器架构相关的内核代码在/kernel/$ARCH/kernel。
/lib内核共用的函数库,与处理器架构相关的库在/kernel/$ARCH/lib。
/mm内存管理代码,譬如页式存储管理内存的分配和释放等。与具体处理器架构相关的内存管理代码位于/arch/$ARCH/mm目录下。
/net网络通信相关代码。
/samples示例代码。
/scripts用于内核配置的脚本文件,用于实现内核配置的图形界面。
/security安全性相关的代码。
/sound与音频有关的代码,包括与音频有关的驱动程序[2]。
/toolsLinux中的常用工具。
/usr该目录中的代码为内核尚未完全启动时执行用户空间代码提供了支持。
/virt此文件夹包含了虚拟化代码,它允许用户一次运行多个操作系统。
COPYING许可和授权信息。
CREDITS贡献者列表。
Kbuild内核设定脚本,可以对内核中的变量进行设定。
Kconfig配置哪些文件编译,那些文件不用编译[4]。
Makefile该文件将编译参数、编译所需的文件和必要的信息传给编译器。

二、结语

本期我们根据 openEuler 的目录参考 Linux 目录结构简要介绍了 openEuler kernel 中各个子目录的功能,下一期我们将结合 Linux 内核的 Kernel Map 介绍 Linux 内核的基本功能和抽象层级 。


参考文献


[1]https://www.cnblogs.com/CaesarTao/p/10600462.html


[2]http://blog.chinaunix.net/uid-30374564-id-5571674.html


[3]https://blog.csdn.net/wangyachao0803/article/details/81380882


[4]https://blog.csdn.net/jianwen_hi/article/details/53398141


[5]https://gitee.com/openeuler/kernel


2020-04-04 16:592843

评论

发布
暂无评论
发现更多内容

利用Vim和Github Copilot打造一款强大IDE!

Jackpop

HowTo:Pipy 如何统计关键指标

Flomesh

Service Mesh 服务网格

9 月 Jina AI 中文社区面对面

Jina AI

人工智能 开源 工程师

开源免费!又一款代码文档生成工具!

Jackpop

从零开始 - 50行代码实现一个Vuex状态管理器

茶无味的一天

JavaScript Vue vuex

docker与gosu

程序员欣宸

Docker 9月月更 gosu

【云原生 | 从零开始学Kubernetes】十、k8sPod节点亲和性和反亲和性

泡泡

Docker 云计算 云原生 k8s 9月月更

Python 入门与基础《刷题篇》(1)

吉师职业混子

9月月更

8万Star!这个开源项目有点强!

Jackpop

赞美,还是责备?全盘否定孩子的一切是“虐待”!

图灵教育

育儿 教育 脑科学

跟着卷卷龙一起学Camera--内存池浅析03

卷卷龙

ISP 9月月更

Python 入门与基础《刷题篇》(2)

吉师职业混子

9月月更

从零开始 - 40行代码实现一个简单Promise函数

茶无味的一天

JavaScript Promise

大数据ELK(五):Elasticsearch中的核心概念

Lansonli

ELK 9月月更

从 DFS 到回溯法,再看 N 皇后问题

掘金安东尼

前端 9月月更

2021年中国机器学习平台软件及服务市场规模近100亿

易观分析

机器学习

python学习之21天(1)

吉师职业混子

9月月更

极客时间—架构实战营—第九期—模块一作业

阿梁

【数据结构与算法】8道链表面试真题超详剖析,带你领略算法思想【附思路、动图、源码】

Dream-Y.ocean

链表 数据结构与算法 9月月更

视频直播+小程序,打破物理空间的电商卖货时代!

Speedoooo

小程序 小程序生态 直播带货 电商营销 小程序容器

小程序化:系统集成行业降本增效的破局思考

Speedoooo

小程序 数字化转型 小程序容器 生态平台

<T>和<?>区别

六月的雨在InfoQ

泛型 Java泛型 9月月更 <T> <?>

赞美,还是责备?全盘否定孩子的一切是“虐待”!

图灵社区

育儿 教育 脑科学

易周金融分析 | 银行融资青睐可转债;苏州市手机银行应用活跃人数规模发布

易观分析

金融 银行

关于加密数据的模糊查询

知识浅谈

9月月更 加密数据

云效DevOps--效能无极限

六月的雨在InfoQ

云效 Codeup 云效流水线 Flow 9月月更 Thoughts

作业

兜里贼缺钱

【编程实践】手把手带你利用Python简单实现斐波那契数列

迷彩

斐波那契 9月月更 数列

Javaweb之会话技术

楠羽

技术 笔记 9月月更

极客时间架构训练营模块一作业

李晨

架构

2021年中国知识图谱软件及服务市场规模超100亿,竞争格局不稳定

易观分析

知识图谱

Linux内核源码结构(1)_软件工程_华为云开发者联盟_InfoQ精选文章