头文件编译源码-Linux内核源码架构解读及内核结构(图)

目录说明

Linux内核代码位于/usr/src/linux目录下,其结构分布如图1.3所示。 每个目录或子目录都可以看作一个模块,目录之间的连接表示“子目录或子模块”的关系。 下面是每个目录的简要说明。

Arch:该目录包含与架构相关的所有核心代码

其下的每个子目录代表了Linux支持的一个体系结构。 例如,X86是IntelCPU及其兼容架构的子目录。 Arch目录下的子目录包括:/arch/kernel、/arch/mm、/arch/include、/arch/boot、/arch/configs。 /arch/kernel目录包含了CPU相关的中断和SMP信息,/arch/boot包含了系统启动的信息以及make生成的启动镜像文件bzImage。

复制:目录下是GPL版权声明。

修改具有GPL版权的源代码而产生的程序,或者使用GPL工具形成的程序,有义务使用GPL进行发布,例如开源代码。

致谢名单:目录下是荣誉榜。 有关对 Linux 做出重大贡献的一些人的信息。

文档:目录中有一些文档。 在linux-3.0.4版本中该目录下有217个文件。 文件00-INDEX简要解释了该目录中的所有文件。 其他文件描述了linux操作系统的各个部分。 解释道。 IRQ.txt描述了系统中有哪些中断和中断枚举定义以及头文件的位置; 修改描述了当前系统版本对各个软件版本的要求,linux3.0.4要求make版本为3.8.0,grub版本为0.93。

Drivers:该目录包含系统中的所有设备驱动程序。

它进一步定义为几种类型的设备驱动程序,每种类型都有相应的子目录。 例如声卡的驱动对应drivers/sound; block下是块设备驱动程序,如ide(ide.c)。 如果您想查看所有可能包含文件系统的设备是如何初始化的,您可以查看 drivers/block/genhd.c 中的 device_setup()。 除了初始化硬盘之外,它还初始化,因为安装nfs文件系统时,需要其他网络:例如Lib放置核心库代码; Net,核心及网络相关代码; ipc,该目录包含核心进程间通信代码; fs,所有文件系统代码和各类文件操作代码,其每个子目录都支持一个文件系统,如fat、ext2等。

fs:该目录存放Linux支持的文件系统代码以及各类文件操作代码。 每个子目录都支持一个文件系统,包括我们常用的文件系统类型:Ext2、Ext3、Ext4、Proc、Fat和Nfs。 Ext3文件系统对应于/f​​s/ext3目录。

include:该目录包含了编译核心所需的大部分头文件,如include/linux子目录中的平台无关头文件、include/asm-i386子目录中的intelcpu相关头文件、include/scsi目录是scsi设备的头文件目录。

init:该目录包含核心初始化代码(不是系统的引导代码),有两个文件,main.c和Version.c。 这是研究内核如何工作的一个很好的起点。

Ipc:目录包含核心进程之间的通信代码。

Kernel:内核管理的核心代码。 该目录下的文件实现了大多数Linux系统的内核功能。 最重要的文件是sched.c; 同时,与处理器结构相关的代码放在 arch/*/kernel 目录下。

lib:该目录包含核心库代码,但与处理器结构相关的库代码放在arch/*/lib/目录下。

Maintenanceers:该目录存储了维护者列表,他们负责当前版本内核的各个部分。

Makefile:目录中的第一个Makefile。 用于组织内核的模块,记录模块之间的关系和依赖关系头文件编译源码,供编译时使用; 仔细阅读各个子目录下的Makefile文件,对于理清各个文件之间的关系和依赖关系非常有帮助。 帮助。

mm:该目录包含了所有与cpu架构无关的显存管理代码,如分页存储管理显存分配和释放等,与具体硬件架构相关的显存管理代码位于arch/*/ mm 目录头文件编译源码,例如 arch/i386/mm/Fault.c。

Net:核心网络部分代码在目录中,每个子目录对应网络的一个方面。

ReadMe:该文件提供了内核的各种编译方法; 生成文件的查看方式,如nmvmlinux|sort|less

Reporting-bugs:该目录包含一些关于报告bug的内容

Rules.make:目录下是各种Makefilemake使用的一些通用规则

Scripts:该目录包含配置核心等的脚本文件。

通常每个目录下都有一个.depend文件和一个Makefile。 这两个文件是编译时使用的辅助文件。 仔细阅读这两个文档对于理清各个文档之间的联系和依赖关系非常有帮助。 另外,有些目录下还有Readme文件,是对该目录下文件的一些说明,也有利于内核源码的理解。

更多Linux内核视频教程和文档在后台私信【内核】免费发放,自行获取。

内核学习网站:

Linux内核源码/显存调优/文件系统/进程管理/设备驱动/网络合约栈-学习视频教程-腾讯课堂

隐藏文件

.Config:Makeoldconfig 和 makedefconfig 会将生成的默认配置放在文件 .config 中。 执行Make后,会根据Makefile上下层的依赖关系来编译整个系统,并以.config作为编译各个模块的基础。

以下是linux0.11内核的简单目录结构:

建筑学

1、当问到Linux架构(即Linux系统是如何组成的)时,我们可以参考右图来回答:从广义上讲,Linux架构可以分为两部分:

2、Linux架构之所以分为用户空间和内核空间:

1)现代CPU一般实现不同的工作模式。 以ARM为例:ARM实现了7种工作模式。 不同模式下CPU可以执行的指令或访问的寄存器是不同的:

(2)以X86为例:X86实现了4种不同级别的权限,Ring0—Ring3; Ring0下可以执行特权指令,可以访问IO设备; Ring3有很多限制

2)因此,从CPU的角度来看,为了保护内核的安全,Linux将系统分为两部分;

3.用户空间和内核空间是程序执行的两种不同状态。 我们可以通过“系统调用”和“硬件中断”来完成从用户空间到内核空间的转移。

4、Linux内核结构(注意LInux架构和Linux内核结构的区别)

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 头文件编译源码-Linux内核源码架构解读及内核结构(图) https://www.wkzy.net/game/163103.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务