02LINUX内核源程序文件组织和内核结构.pptVIP

02LINUX内核源程序文件组织和内核结构.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
LINUX内核源程序文件组织和内核结构 武汉大学计算机学院 郑鹏 Email:pzheng51@163.com 内核源程序文件的组织 Linux内核源程序通常都安装在/usr/src/linux下,而且它有一个非常简单的编号约定:任何偶数的内核(第二个数为偶数)都是一个稳定地发行的内核,而任何奇数的内核都是一个开发中的内核。 由于Linux 内核是一种单内核模式的系统,因此,内核中所有的程序几乎都有紧密的联系,它们之间的依赖和调用关系非常密切。 当我们使用tar 命令将linux-0.11.tar.gz 解开时,内核源代码文件被放到了linux 目录中。其中的目录结构为: Linux 内核源代码的目录结构 Linux 内核源代码目录结构 1.内核主目录linux linux 目录是源代码的主目录,其中除了包括所有的14 个子目录以外,还含有唯一的一个makefile 文件。 makefile文件是编译辅助工具make 的参数配置文件。 make 工具软件的主要用途是通过识别哪些文件已被修改过,从而自动地决定在一个含有多个源程序文件的程序系统中哪些文件需要被重新编译。 linux 目录下的这个makefile 文件还嵌套地调用了所有子目录中包含的makefile 文件,这样,当linux 目录(包括子目录)下的任何文件被修改过时,make 都会对其进行重新编译。因此为了编译整个内核所有的源代码文件,只要在linux 目录下运行一次make 软件即可。 2.引导启动程序目录boot boot 目录中含有3 个汇编语言文件,是内核源代码文件中最先被编译的程序。这3 个程序完成的主要功能是当计算机加电时引导内核启动,将内核代码加载到内存中,并做一些进入32 位保护运行方式前的系统初始化工作。其中bootsect.s 和setup.s 程序需要使用as86 软件来编译,使用的是as86 的汇编语言格式(与微软的类似),而head.s 需要用GNU as 来编译,使用的是ATT 格式的汇编语言。 bootsect.s 程序是磁盘引导块程序,编译后会驻留在磁盘的第一个扇区中(引导扇区,0 磁道(柱面),0 磁头,第1 个扇区)。在PC 机加电ROM BIOS 自检后,将被BIOS 加载到内存0x7C00 处进行执行。 setup.s 程序主要用于读取机器的硬件配置参数,并把内核模块system 移动到适当的内存位置处。 head.s 程序会被编译连接在system 模块的最前部分,主要进行硬件设备的探测设置和内存管理页面的初始设置工作。 3.文件系统目录fs(1) 是实现文件系统程序的目录,共包含17 个C 语言程序。这些程序之间的主要引用关系见下图所示。图中每个方框代表一个文件,从上到下基本按引用关系放置。其中各文件名均略去了后缀.c,虚框中的程序文件不属于文件系统,带箭头的线条表示引用关系,粗线条表示有相互引用关系。 3.文件系统目录fs(2) fs 目录中各程序中函数之间的引用关系 3.文件系统目录fs(3) 由图可以看出,该目录中的程序可以划分成四个部分: 高速缓冲区管理 低层文件操作 文件数据访问 文件高层函数。 对于文件系统,可以将它看成是内存高速缓冲区的扩展部分。所有对文件系统中数据的访问,都需要首先读取到高速缓冲区中。本目录中的程序主要用来管理高速缓冲区中缓冲块的使用分配和块设备上的文件系统。管理高速缓冲区的程序是buffer.c,而其它程序则主要都是用于文件系统管理。 3.文件系统目录fs(4) 在file_table.c 文件中,目前仅定义了一个文件句柄(描述符)结构数组。 ioctl.c 文件将引用kernel/chr_dev/tty.c 中的函数,实现字符设备的io 控制功能。 exec.c 程序主要包含一个执行程序函数do_execve(),它是所有exec()函数簇中的主要函数。 fcntl.c 程序用于实现文件i/o 控制的系统调用函数。 read_write.c 程序用于实现文件读/写和定位三个系统调用函数。 stat.c 程序中实现了两个获取文件状态的系统调用函数。 open.c 程序主要包含实现修改文件属性和创建与关闭文件的系统调用函数。 3.文件系统目录fs(5) char_dev.c 主要包含字符设备读写函数rw_char()。 pipe.c 程序中包含管道读写函数和创建管道的系统调用。 file_dev.c 程序中包含基于i 节点和描述符结构的文件读写函数。 namei.c 程序主要包括文件系统中目录名和文件名的操作函数和系统调用函数。 block_dev.c 程序包含块数据读和写函数。 inode.c 程序中包含针对文件系统i 节点操作的函数。 truncate.c 程序用于在删除文件

文档评论(0)

飞扬的岁月 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档