写点什么

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

评论

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

iOS-打包上架构建版本一直不出现/正在处理/自动消失

雪奈椰子

浪潮信息发布源2.0基础大模型,千亿参数全面开源

财见

苹果系列数据恢复软件Disk Drill for Mac 中文激活版下载

iMac小白

AE插件:GifGun 2.0.12激活破解版 支持AE2023

iMac小白

软件测试/人工智能|使用 GraphWalker 实现自动化测试用例生成

霍格沃兹测试开发学社

macOS 14 Sonoma 14.1.1正式版离线安装包下载

iMac小白

PAM助力企业加强信息安全建设

尚思卓越

运维 网络安全 信息安全 特权账号

DBeaverUltimate旗舰版下载 数据库管理软件

iMac小白

软件测试/人工智能|利用 EvoSuite 自动生成高质量的 Java 单元测试用例

霍格沃兹测试开发学社

解锁 ElasticJob 云原生实践的难题

不在线第一只蜗牛

分布式 云原生 Elastis

OpenHarmony亮相MTSC 2023 | 质量&效率共进,赋能应用生态发展

OpenHarmony开发者

OpenHarmony

Native Instruments Kontakt 6 for Mac激活版下载

iMac小白

PAM为用户带来哪些收益

尚思卓越

网络安全 特权账号

inBuilder低代码平台新特性推荐-第十一期

inBuilder低代码平台

低代码 开发

鸿蒙开发已成新趋势

不在线第一只蜗牛

华为 鸿蒙 软件开发

软件测试/人工智能|基于录制的接口测试用例自动生成技术探究

霍格沃兹测试开发学社

HarmonyOS传感器开发指南

HarmonyOS开发者

HarmonyOS

浪潮信息赵帅:实现算力全流程绿色化,推动数据中心可持续发展

财见

谷歌趋势官网是什么?谷歌趋势有哪些功能?

九凌网络

VPS服务器搭建指南:快速、简单、高效的秘诀大揭秘

一只扑棱蛾子

VPS VPS服务器

融云 Global IM UIKit 正式上线,开发更自由,服务更稳定

融云 RongCloud

产品 开发 IM API Global IM UIkit

谷歌要如何优化引流?谷歌引流有什么优势?

九凌网络

解锁Jira本地部署的数据中心版高级功能,打造高效、智能、精细化的项目管理

龙智—DevSecOps解决方案

Jira

Web 3.0最热门趋势:基于NFT的DAO-NFT和DAO如何彻底改变 Web3.0

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

FFA 2023|字节跳动 7 项议题入选

字节跳动云原生计算

flink FFA 2023

anyRTC 融合音视频能力底座:助力企业数字化转型

anyRTC开发者

音视频 视频会议 融合会议 视频监控 电话会议

C#简化工作之实现网页爬虫获取数据

不在线第一只蜗牛

Java C# 开发 网络爬虫

DxO ViewPoint 4 直装激活版下载 支持M1 M2

iMac小白

在线教育如何基于小程序进行技术创新

Onegun

小程序 在线教育

1天开发一个教育类App!我是怎么办到的

FN0

小程序 App

「我在淘天做技术」迈步从头越-阿里妈妈广告智能决策技术的演进之路

阿里技术

广告 淘天 阿里妈妈 广告智能决策技术 自动出价

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