写点什么

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

评论

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

CocoaPods的使用问题

刿刀

CocoaPods

昇腾AI新技能,还能预防猪生病?

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜

WebUI自动化测试框架搭建之需求整理、详细设计和框架设计

Python 自动化测试 unittest 测试框架 selenium

2023年中国人工智能产业趋势报告

易观分析

人工智能 科技 ChatGPT

设备在线/离线状态的缓存方案——实践类

阿里云AIoT

缓存 物联网 存储 数据格式 测试技术

14 条策略助力企业构建更安全的软件供应链

墨菲安全

SBOM 软件供应链安全

2个月内如何在千人团队落地压测平台?

老张

项目管理 性能测试 全链路压测 压测平台

一文看懂倚天云实例|科普漫画

云布道师

倚天实例

IoT场景中查看设备当前运行状况实现方案——实践类

阿里云AIoT

物联网 存储

全球律师事务所 Ogletree Deakins 借助 F5 云服务快速实现远程办公

F5 Inc

云计算 远程办公 云服务 律师

灵眸大赏第一天议程公布|超30+企业,共话“2023年增长”趋势

Morketing

活动 营销

理论+实战,详解Sharding Sphere-jdbc

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 3 月 PK 榜

SpEL表达式注入漏洞分析、检查与防御

安全 分析

爱立信钱包平台 (Ericsson Wallet Platform) 与 F5 合作推动金融包容性和赋权

F5 Inc

架构 安全 金融 移动支付

火山引擎DataLeap:揭秘字节跳动数据血缘架构演进之路

字节跳动数据平台

云服务 数据血缘 企业号 2 月 PK 榜

Asian Paints 利用 F5 Silverline Web Application Firewall 实现转型

F5 Inc

数字化转型 托管 云端

[C语言]支持IPv6的地址查询的函数getaddrinfo()——实践类

阿里云AIoT

人工智能 网络协议 C语言

技术分享| 如何使用Prometheus实现系统监控报警邮件通知

anyRTC开发者

Linux 运维 Prometheus 服务器 系统监控报警邮件通知

助力企业数字化转型!涛思数据与永洪科技完成战略合作签约

TDengine

tdengine 时序数据库 企业数字化

构建隐私计算三大生态,百度点石为政务数据要素市场护航

百度安全

隐私计算 百度安全

IoT平台业务通信Topic设计最佳实践(共享场景为例)——实践类

阿里云AIoT

物联网 网络性能优化

NFT艺术品铸造竞拍商城dapp系统开发合约定制

开发微hkkf5566

灰度直方图及直方图均衡化

timerring

图像处理 数字图像处理

hometown-h5-template 一个开箱即用的前端H5解决方案 🎉

HoMeTown

架构 Vue 前端 vite ts

堡垒机厂家电话多少?在哪里?怎么样?

行云管家

网络安全 堡垒机 自动化运维

软件测试/测试开发 | Frida 实现 Hook 功能的强大能力

测试人

软件测试 自动化测试 测试开发

我直接就是一个下载推特GIF动图的大动作!巨简单!

frank

twitter

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