1 / 28
文档名称:

linux内核.ppt

格式:ppt   大小:803KB   页数:28页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

linux内核.ppt

上传人:核辐射 2022/5/20 文件大小:803 KB

下载得到文件列表

linux内核.ppt

文档介绍

文档介绍:linux内核
系统调用接口
系统调用接口
系统调用是Linux内核提供的,用户空间无法直接使用系统调用。在用户进程使用系统调用必须跨越应用程序和内核的界限。Linux内核向用户提供了统任务的是内核的网络子系统,一些资料里也把这部分代码称为“网络堆栈”。
Linux内核提供了优秀的网络处理能力和功能,这与网络堆栈代码的设计思想是分不开的,Linux的网络堆栈部分沿袭了传统的层次结构,网络数据从用户进程到达实际的网络设备需要四个层次。
网络堆栈
设备驱动
Linux内核对设备按照主设备号和从设备号的方法访问,主设备号描述控制设备的驱动程序,从设备号区分同一个驱动程序的不同设备。也就是说,主设备号和设备驱动程序对应,代表某一类型的设备,从设备号和具体设备对应,代表同一类的设备编号。如使用IDE接口的两个硬盘,主设备号都相同,但是从设备号不同。Linux提供了mknod命令创建设备驱动程序的描述文件,后面设备驱动相关章节具体讲解。Linux内核这种主从设备号的分类方法可以很好的管理设备。
依赖体系结构的代码
Linux内核支持众多体系结构,内核把与设备无关的代码放在arch目录,对应的头文件放在include/asm-<体系名称>目录下。这样的划分代码结构清晰,同时提高了代码的复用率。在arch目录里,每个子目录对应一种体系结构,存放这种体系结构对应的代码,如果代码较多会单独建立一个目录,例如arch/arm目录下,有一个kernel目录,存放的是kernel目录中在arm体系结构上特有的函数或者实现方法;在arch/i386目录存放了Intel X86体系结构的代码,不仅有kernel目录,而且还有多个目录,例如mm目录包含了x86体系上内存管理的实现方法,math-emu包含了x86体系上浮点数模拟的实现等。读者在阅读内核代码的时候可以从一个体系结构代码入手,对不同体系结构移植代码的主要工作是arch里面的代码。
Linux内核代码的工程结构
随着Linux内核功能的不断增加,内核代码也在飞速增长,。如此庞大的代码量,不仅给学习带来困难,对代码的维护也是一个不小的挑战,幸好Linux内核开发人员早就考虑到了这一点,使得Linux内核代码组织有序,本节重点讲述Linux内核代码的结构。
源代码目录布局
,通常会存放在/usr/src目录下,’linux-’类型的目录,这个目录下存放的就是Linux内核代码。进入内核代码目录,查看文件列表,会看到许多的目录和文件,如果读者的系统有tree这个命令或者脚本,可以查看到Linux内核代码的文件数,那会是一个很庞大的结构。好在Linux内核代码的工程组织是很好的,对于不同版本的内核,在工程组织上是基本一致的,有的仅是功能上的差别。
几个重要的Linux内核文件
当用户编译一个Linux内核代码后,会生成几个文件:vmlinuz,,,如果读者配置过grub引导管理器程序,会在/boot目录下看到这几个文件。
1.vmlinuz文件
2.initrd文件
3.
内核编译系统
Linux内核代码的复杂,需要一个强大的工程管理系统,幸好GNU提供了Makefile机制,此外,内核的开发者们还提供了KBuild机制。通过Makefile和KBuild的结合,可以出色的管理Linux内核代码。Linux内核的编译系统和代码结构是紧密联系的,了解内核编译系统对分析内核代码和编译内核都有帮助作用。
内核编译系统基本架构
Linux内核编译系统有5种类型的文件。
文件类型
作用
Makefile
顶层Makefile文件
.config
内核配置文件
arch/$(ARCH)/Makefile
机器体系Makefile文件
scripts/Makefile.*
所有内核Makefiles共用规则
kbuild Makefiles
其它Makefile文件
内核顶层Makefile分析
编译内核代码的时候,顶层Makefile文件在开始编译子目录下的代码之前,设置编译环境和需要用到的变量。顶层Makefile文件包含通用部分,arch/$(ARCH) /Makefile包含该体系架构所需的设置。因此arch/$(ARCH)/Makefile会设置一些变量和少量的目