NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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:592652

评论

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

全面进化!Apache Doris 1.2.0 Release 版本正式发布|版本通告

SelectDB

数据库 大数据 开源 数据分析 Doris

FL Studio2023新版本功能爆料将引入4款全新插件!创作力UP!

茶色酒

FL Studio

模块七-王者荣耀商城异地多活架构设计

Geek_b35d92

商城 构架 王者荣耀

API安全中的数据隐私保护步骤

穿过生命散发芬芳

API安全 12月月更

ReactDOM.render在react源码中执行之后发生了什么?

flyzz177

React

模块一:课程作业

peter

#架构实战营

超详细FL Studio水果2023新版更新功能讲解!80项更新与改进!

茶色酒

FL Studio FL Studio 21 FL Studio21

十大开源测试工具和框架

FunTester

架构实战营-模块一作业

落叶挂云霄

从观察者模式到Java事件处理机制(上)

老农小江

设计模式 java 编程 事件机制

React源码分析3-render阶段(穿插scheduler和reconciler)

goClient1992

React

React源码分析2-深入理解fiber

goClient1992

React

设计原则 — 多用组合,少用继承

Lemoon Can

面向对象设计原则 设计原则

从观察者模式到Java事件处理机制(下)

老农小江

设计模式 java 编程 事件机制

群晖DS218+做maven私服(nexus3)

程序员欣宸

maven 12月月更 群晖

React源码解读之React Fiber

flyzz177

React

FL Studio21正式版本发布更新附送85款主题下载

茶色酒

FL Studio 21 FL Studio21

王者荣耀商城异地多活设计

π

MySQL执行计划之explain详解

@下一站

程序 MySQL优化 dba 11月日更 11月月更

架构实战模块一:架构图

小飞同学

#架构实战营

架构实战营模块一作业

周烨

2022-12-07:删除重复的电子邮箱。删除重复数据后,id=3的数据被删除。请问sql语句如何写? DROP TABLE IF EXISTS `person`; CREATE TABLE `per

福大大架构师每日一题

数据库 福大大

Verilog 设计方法

智趣匠

流程 Verilog 设计方法

设计原则 — 基于接口而非实现编程

Lemoon Can

面向对象设计原则 设计原则

架构实战营-模块1-作业

zealot0317

架构实战营(第10期)模块一作业

Geek_e5f2e5

从汽车之家效能平台建设看汽车行业研发数字化之路

之家技术

数字化 汽车 构架 效能度量 效能

微信业务架构图 & 学生管理系统

chinandy

架构设计

模块一作业提交

Geek_7d539e

ChatGPT中文版杀疯了,已登录AI模型市场

felix

React源码分析1-jsx转换及React.createElement

goClient1992

React

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