内核分析-Read.PPT

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
内核分析-Read

Linux内核分析入门 西安交通大学 李思 2004年8月26日 主要内容 有关Linux内核的基础知识 实模式与保护模式 用户空间与内核空间 Linux内核源代码导读 工具与策略 内核源码目录结构 实例分析 Linux启动代码分析 Linux进程调度代码分析 Linux设备驱动程序设计概述 1. Linux内核的发展 内核源代码的行数 2. 有关Linux内核的基础知识 实模式 BIOS 、Dos都工作在实模式下 实模式的缺点: 寻址空间只有1M 不能实现虚拟存储器,不能实现进程的隔离 保护模式 Linux初始化完成后工作在保护模式 保护模式的优点: 寻址空间可达4G,虚存,进程相互隔离 寻址方式: 以32位段寄存器的值(段号+)作为索引查描述符表(段表),找到对应的描述符(基址、长度等) 检查32位的偏移量是否超过段长度 检查权限是否正确 物理地址 = 基址 + 偏移量 两种模式的比较 用户空间与内核空间 用户空间:一般应用程序所访问到的范围。它的特权级别低,不能直接访问底层的资源,且每个进程的用户地址空间是相互独立的。用户空间的进程是可以被内核进程所中断的。 内核空间:内核与内核模块所访问到的范围。它的特权级别最高,可以直接访问底层资源。内核地址空间只有1个。一般情况下,内核进程不能被任何用户进程所打断。 常用的用户空间与内核空间通信方式 通过设备文件 使用/proc文件系统 使用netlink套接字通信 通过系统调用传递数据 用户与内核的接口 LKM LKM = Loadable Kernel Module, 可加载的内核模块。当不发生歧义时,简称为内核模块,或者模块。 LKM工作在内核空间下,一般看作是内核的一部分 LKM是一种可加载/卸载的内核功能块 LKM可以直接使用内核中的全局变量、调用内核中导出的其它函数 LKM与静态编译到内核中的功能模块,在地位上是完全平等的 驱动程序一般使用LKM来实现 一般开发者的原则: 尽量多写模块,少改内核 Linux内核源代码概览 读核工具 Source Insight 只有Windows版 在Linux下可以用wine来运行 Source Navigator 类似于前者,但有Linux版本 LXR引擎:Linux Cross Reference 根据内核源代码创建HTML页面 可以随意搜索标号的定义及其引用 http://lxr.linux.no 读核策略 版本选择:可先读低版本,再读高版本 纵向与横向 纵向:按执行顺序阅读 横向:按功能模块来阅读 精读与泛读 全局泛读,局部精读 对于一些一时无法理解的部分,如果不是研究的重点,则要果断跳过,但切不可贪多求快! 参考资料的合理使用 应该积极利用各种参考资料 不要过分迷信参考资料 要注意内核版本的区别! Linux内核各部分关系 Linux源代码目录结构 Documentation 存放比较重要的Linux开发文档,遇到问题时,最好先在此处寻找相关的文档 这些文档多数是使用OpenDoc,根据源代码中的注释来产生的,类似于javadoc 现在有人正在编写一本规模更宏大的开放源码内核文档书,请参阅以下网址: 一个比较值得阅读的文档 kernel-docs.txt (有关Linux文档的文档) arch 本目录下的每个子目录都是一个可以运行Linux的硬件体系 每个子目录下都包含了kernel, lib, mm, boot 和其它目录,这些内容都是与具体硬件设备有关的。它们是建立在设备无关代码的“桩”之上的。 lib目录下包含了高度优化的通用工具例程,例如内存拷贝函数、校验和计算函数等等,它们是学习高效率编程的典范。 2.4内核所支持的硬件体系包括: alpha, arm, i386, ia64, m68k, mips, mips64 ppc, s390, sh, sparc, sparc64 drivers 用于实现设备、总线、平台的驱动程序 它是Linux内核源代码中最大的部分(100M) 设备: cdrom, ide, isdn, parport, pcmcia, pnp, sound, telephony, video 总线:fc4, i2c, nubus, pci, sbus, tc, usb 平台:acorn, macintosh, s390, sgi drivers/char:字符设备,例如n_tty.c实现了tty drivers/block:块设备,例如floppy.c是软盘的驱动程序 drivers/net:网络设备,包括各种网卡的驱动程序等。 fs 包括: 虚拟文件系统(VFS)框架 各个实际文件系统的子目录 Vfs相关文件: exec.c, binfmt_*.c :可执行程序的加载 devices.c,

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档