【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

评论

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

移动应用遗留系统重构(9)- 路由篇,移动开发者大会

android 程序员 移动开发

移动开发程序员怎么优雅迈过30K+这道坎?成功入职字节跳动

android 程序员 移动开发

真的强!借助阿里技术博主分享的Android面试笔记,我拿到了字节跳动的offer

android 程序员 移动开发

程序员35岁之后该怎样规划自己的职业?,Android开发手册

android 程序员 移动开发

重置云服务器系统

坚果

云服务器 11月日更

【设计模式】第十二篇 - 桥接模式 - 露娜的召唤师技能

Brave

设计模式 桥接模式 11月日更

种草Dribbble:从未见过如此Q弹的Switcher,腾讯架构师深入讲解Android开发

android 程序员 移动开发

移动开发的罗曼蒂克消亡史,android系统开发书籍

android 程序员 移动开发

移动端视频开发通过什么方式实现直播?十分钟带你快速了解

android 程序员 移动开发

Groovy中的元组

FunTester

测试开发 元组 Groovy FunTester tuple

看完此文,你对Gradle的理解又升级了!,万字总结

android 程序员 移动开发

程序员别只顾着敲代码了,老板们不喜欢聘请40岁程序员真相原来是

android 程序员 移动开发

SAP云平台里Global Account和Sub Account的关系

Jerry Wang

Cloud SAP CloudFoundry 11月日更

使用Eclipse开发Java应用并部署到SAP云平台SCP上去

Jerry Wang

Cloud SAP 11月日更 sap开发

Redis 高可用篇:图解 Redis 哨兵集群原理

码哥字节

redis redis sentinel NoSQL 数据库 11月日更

看我一波,Android获取进程名函数,代码优化到极致的操作

android 程序员 移动开发

移动应用遗留系统重构(7)- 解耦重构演示篇(一),android开发环境的搭建视频

android 程序员 移动开发

移动应用遗留系统重构(9)- 路由篇(1),kotlin版权

android 程序员 移动开发

程序员30岁+又怎么了呢?找准定位,kotlin可选参数

android 程序员 移动开发

程序员中年了40岁,公司里熬到中层年薪30w+,最新高频Android面试题目分享

android 程序员 移动开发

值得收藏的 Eureka 控制台详解

悟空聊架构

Eureka 源码解析 注册中心 悟空聊架构 11月日更

知乎热榜第一破10w阅读-Android不行了?2021程序员的风口又要来了,你还不抓紧机会

android 程序员 移动开发

知乎3000多人关注!27w+阅读开发者进阶难题,2021安卓开发社招面试解答之性能优化

android 程序员 移动开发

破解 Kotlin 协程(1) - 入门篇,35岁以后的Android程序员出路在哪里

android 程序员 移动开发

移动开发的罗曼蒂克消亡史 _ InfoQ,网易云的朋友给我这份339页的Android面经

android 程序员 移动开发

程序员为什么越老贬值的越厉害?,面试官6个灵魂拷问

android 程序员 移动开发

程序员你所害怕的中年危机,恰恰是人生的转机!,kotlin高阶函数源码讲解

android 程序员 移动开发

《Linux一学就会》第一章第二节:学习环境搭建

侠盗安全

Linux linux运维 云计算架构师 linux电子书

【高并发】明明中断了线程,却为何不起作用呢?

冰河

并发编程 多线程 高并发 异步编程 Java Concurrency

真的已经讲烂了!想彻底掌握-binder-机制,必须先搞懂这几个关键类

android 程序员 移动开发

【Flutter 专题】17 图解 ListView 下拉刷新与上拉加载 (二)【NotificationListener】

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 11月日更

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