《linux内核》PPT课件

上传人:痛*** 文档编号:244727086 上传时间:2024-10-05 格式:PPT 页数:28 大小:338.50KB
返回 下载 相关 举报
《linux内核》PPT课件_第1页
第1页 / 共28页
《linux内核》PPT课件_第2页
第2页 / 共28页
《linux内核》PPT课件_第3页
第3页 / 共28页
点击查看更多>>
资源描述
,Click to edit Master title style,Click to edit Master text styles,Click to edit Master title style,Click to edit Master text styles,第,15,章 解析,Linux,内核,内核是操作系统的核心,通常说的,Linux,是指,Linux,操作系统的内核,是一组系统管理软件的集合。,Linux,内核是目前最流行的开源操作系统之一,由于其代码的高度开放性,越来越多的人参与到,Linux,内核的研究和开发中。,Linux,内核的功能也在不断提高,性能在不断改进。操作系统内核是软件开发领域比较深的技术点,需要结合软硬件知识才能深入理解。本章由浅入深讲解,Linux,内核,带领读者进入嵌入式开发比较深入的领域,主要内容如下:,如何获取,Linux,内核代码,Linux,内核功能解析,Linux,内核代码布局,Linux,内核镜像结构,15.1,基本知识,Linux,内核是,Linux,操作系统不可缺少的组成部分,但是内核本身不是操作系统。许多,Linux,操作系统发行商如,RedHat,、,Debian,等都采用,Linux,内核,然后加入用户需要的工具软件和程序库,最终构成一个完整的操作系统。嵌入式,Linux,系统是运行在嵌入式硬件系统上的,Linux,操作系统,每个嵌入式,Linux,系统都包括了必要的工具软件和程序库。,15.1.1,什么是,Linux,内核,内核是操作系统的核心部分,为应用程序提供安全访问硬件资源的功能。直接操作计算机硬件是很复杂的,内核通过硬件抽象的方法屏蔽了硬件的复杂性和多样性。通过硬件抽象的方法,内核向应用程序提供了统一和简洁的接口,应用程序设计复杂程度降低。实际上,内核可以被看做是一个系统资源管理器,内核管理计算机系统中所有的软件和硬件资源。,应用程序可以直接运行在计算机硬件上而无需内核的支持,从这个角度看,内核不是必要的。在早期的计算机系统中,由于系统资源的局限,通常采用直接在硬件上运行应用程序的办法。运行应用程序需要一些辅助程序,如程序加载器、调试器等。随着计算机性能的不断提高,硬件和软件源都变得复杂,需要一个统一管理的程序,操作系统的概念也逐渐建立起来。,15.1.2 Linux,内核版本,Linux,内核版本号采用两个“,.”,分割的三个数字来标示,形式为“,X.Y.Z”,。其中,,X,是主要版本号,,Y,是次要版本号,,Z,代表补丁版本号。奇数代表不稳定的版本;偶数代表稳定的版本。“稳定”和“不稳定”是相对的,如,Linux,内核,1.1.0,相对于,1.0.0,来说是“不稳定”版本,但是与,1.1.1,对比是“稳定”版本。在,Linux,内核开发过程中,“不稳定”版本通常是在原有版本基础上增加了新的功能或者新的特性。,15.1.3,如何获取,Linux,内核代码,在,PC,上,一般的,Linux,发行版都提供了内核代码。嵌入式系统没有固定的发行版,需要用户自己获取内核代码。,Linux,内核代码的官方站点是,http:/,www.kernel.org,,该站点提供了,2.4,和,2.6,所有版本的代码和补丁,用户可以打开该地址找到和自己所在物理位置就进的站点,下载自己需要的内核版本代码。高版本,Linux,内核代码文件比较大,对于国内的用户推荐使用,ftp,方式下载,或者使用断点续传工具下载,具体情况可根据读者自身的网络情况选择。,下载,Linux,内核代码后,会得到一个类似“,linux-2.6.xx.tar.gz”,或者“,linux-2.6.xx-tar.bz2”,形式的压缩文件,“,xx”,代表版本号。在,Linux,系统上,通常把这个文件存放在,/,usr/src,目录下,便于以后使用。,15.1.4,编译内核,学习,Linux,内核最好的开始是编译一次,Linux,内核代码,通过配置,Linux,内核可以对内核代码有一个初步的了解。本节介绍一下在,PC,机上如何编译生成,2.6,版本的内核目标文件,在本书第,20,章移植,Linux,部分会讲解如何交叉编译用于,ARM,体系结构的,Linux,内核。,与,2.4,版本相比,,2.6,版本内核代码编译相对较容易。内核编译主要分成配置和编译两部分,其中配置是关键,许多问题都是出在配置环节。,Linux,内核编译配置提供多种方式:,make,config,:,make,menuconfig,:,make,xconfig,:,make,oldconfig,:,15.2 Linux,内核的子系统,内核是操作系统的核心。,Linux,内核提供很多基本功能,如虚拟内存、多任务、共享库、需求加载、共享写时拷贝(,Copy-On-Write,)以及网络功能等。增加各种不同功能导致内核代码不断增加。,Linux,内核把不同功能分成不同的子系统的方法,通过一种整体的结构把各种功能集合在一起,提高了工作效率。同时还提供动态加载模块的方式,为动态修改内核功能提供了灵活性。,15.2.1,系统调用接口,15.2.1,系统调用接口,系统调用是,Linux,内核提供的,用户空间无法直接使用系统调用。在用户进程使用系统调用必须跨越应用程序和内核的界限。,Linux,内核向用户提供了统一的系统调用接口,但是在不同处理器上系统调用的方法各不相同。,Linux,内核提供了大量的系统调用,本书从系统调用的基本原理出发讲解,Linux,系统调用的方法。,15.2.2,进程管理子系统,当一个用户进程被加载后,会进入就绪态,被加入到就绪态队列,,CPU,时间被轮转到就绪态队列后,切换到进程的代码,进程被执行,当进程的时间片到了以后被换出。如果进程发生,I/O,操作也会提前被换出,并且存放到等待队列,当,I/O,请求返回后,进程又被放入就绪队列。,Linux,系统对进程队列的管理设计了若干不同的方法,主要的目的是提高进程调度的稳定性。,15.2.3,内存管理子系统,内存是计算机的重要资源,也是内核的的重要部分。使用虚拟内存技术的计算机,内存管理的硬件按照分页方式管理内存。分页方式是把计算机系统的物理内存按照相同大小等分,每个内存分片称作内存页,通常内存页大小是,4KB,。,Linux,内核的内存管理子系统管理虚拟内存与物理内存之间的映射关系,以及系统可用内存空间。,内存管理要管理的不仅是,4KB,缓冲区。,Linux,提供了对,4KB,缓冲区的抽象,例如,slab,分配器。这种内存管理模式使用,4KB,缓冲区为基数,然后从中分配结构,并跟踪内存页使用情况,比如哪些内存页是满的,哪些页面没有完全使用,哪些页面为空。这样就允许该模式根据系统需要来动态调整内存使用。,15.2.4,虚拟文件系统,虚拟文件系统,即,VFS,(,Virtual File System,)是,Linux,内核中的一个软件抽象层。它通过一些数据结构及其方法向实际的文件系统如,ext2,,,vfat,等提供接口机制。通过使用同一套文件,I/O,系统调用即可对,Linux,中的任意文件进行操作而无需考虑其所在的具体文件系统格式;更进一步,文件操作可以在不同文件系统之间进行。,15.2.4,虚拟文件系统,15.2.5,网络堆栈,第九章介绍了,Linux,系统下如何编写网络应用程序,使用,socket,通过,TCP/IP,协议与其他机器通信,和前面介绍的内核子系统相似,,socket,相关的函数也是通过内核的子系统完成的,担当这部分任务的是内核的网络子系统,一些资料里也把这部分代码称为“网络堆栈”。,Linux,内核提供了优秀的网络处理能力和功能,这与网络堆栈代码的设计思想是分不开的,,Linux,的网络堆栈部分沿袭了传统的层次结构,网络数据从用户进程到达实际的网络设备需要四个层次。,15.2.5,网络堆栈,15.2.6,设备驱动,Linux,内核对设备按照主设备号和从设备号的方法访问,主设备号描述控制设备的驱动程序,从设备号区分同一个驱动程序的不同设备。也就是说,主设备号和设备驱动程序对应,代表某一类型的设备,从设备号和具体设备对应,代表同一类的设备编号。如使用,IDE,接口的两个硬盘,主设备号都相同,但是从设备号不同。,Linux,提供了,mknod,命令创建设备驱动程序的描述文件,后面设备驱动相关章节具体讲解。,Linux,内核这种主从设备号的分类方法可以很好的管理设备。,15.2.7,依赖体系结构的代码,Linux,内核支持众多体系结构,内核把与设备无关的代码放在,arch,目录,对应的头文件放在,include/,asm,-,目录下。这样的划分代码结构清晰,同时提高了代码的复用率。在,arch,目录里,每个子目录对应一种体系结构,存放这种体系结构对应的代码,如果代码较多会单独建立一个目录,例如,arch/arm,目录下,有一个,kernel,目录,存放的是,kernel,目录中在,arm,体系结构上特有的函数或者实现方法;在,arch/i386,目录存放了,Intel X86,体系结构的代码,不仅有,kernel,目录,而且还有多个目录,例如,mm,目录包含了,x86,体系上内存管理的实现方法,,math-emu,包含了,x86,体系上浮点数模拟的实现等。读者在阅读内核代码的时候可以从一个体系结构代码入手,对不同体系结构移植代码的主要工作是,arch,里面的代码。,15.3 Linux,内核代码的工程结构,随着,Linux,内核功能的不断增加,内核代码也在飞速增长,目前,2.6,版本的内核代码早已达到数百万行。如此庞大的代码量,不仅给学习带来困难,对代码的维护也是一个不小的挑战,幸好,Linux,内核开发人员早就考虑到了这一点,使得,Linux,内核代码组织有序,本节重点讲述,Linux,内核代码的结构。,15.3.1,源代码目录布局,15.1.3,节讲述了如何获取到,Linux,内核代码,通常会存放在,/,usr/src,目录下,如果是,2.6,版本的内核解压后会得到例如,linux-2.6.xx,类型的目录,这个目录下存放的就是,Linux,内核代码。进入内核代码目录,查看文件列表,会看到许多的目录和文件,如果读者的系统有,tree,这个命令或者脚本,可以查看到,Linux,内核代码的文件数,那会是一个很庞大的结构。好在,Linux,内核代码的工程组织是很好的,对于不同版本的内核,在工程组织上是基本一致的,有的仅是功能上的差别。,15.3.2,几个重要的,Linux,内核文件,当用户编译一个,Linux,内核代码后,会生成几个文件:,vmlinuz,,,initrd.img,,以及,System.map,,如果读者配置过,grub,引导管理器程序,会在,/boot,目录下看到这几个文件。,1,vmlinuz,文件,2,initrd,文件,3,System.map,文件,15.4,内核编译系统,Linux,内核代码的复杂,需要一个强大的工程管理系统,幸好,GNU,提供了,Makefile,机制,此外,内核的开发者们还提供了,KBuild,机制。通过,Makefile,和,KBuild,的结合,可以出色的管理,Linux,内核代码。,Linux,内核的编译系统和代码结构是紧密联系的,了解内核编译系统对分析内核代码和编译内核都有帮助作用。,15.4.1,内核编译系统基本架构,Linux,内核编译系统有,5,种类型的文件。,文件类型,作用,Makefile,顶层,Makefile,文件,.,config,内核配置文件,arch/$(ARCH)/,Makefile,机器体系,Makefile,文件,scripts/,Makefile,.*,所有内核,Makefiles,共用规则,kbuild,Makefiles,其它,Makefile,文件,15.4.2,内核顶层,Makefile,分析,编译内核代码的时候,顶层,Makefile,文件在开始编译子目录下的代码之前,设置编
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!