KERNEL_FOR_LINUX-2.6.32(内核)资料.ppt

  1. 1、本文档共87页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * 什么是虚拟文件系统(Virtual File Systems): 虚拟文件系统(VFS)是由Sun microsystems公司在定义网络文件系统(NFS)时创造的。它是一种用于网络环境的分布式文件系统, 是允许和操作系统使用不同的文件系统实现的接口。虚拟文件系统(VFS)是物理文件系统与服务之间的一个接口层,它对Linux的每个文件系统的所有细节 进行抽象,使得不同的文件系统在Linux核心以及系统中运行的其他进程看来,都是相同的。严格说来,VFS并不是一种实际的文件系统。它只存在于内存中,不存在于任何外存空间。VFS在系统启动时建立,在系统关闭时消亡。 * * * * * * * * * * * * * * * oprofile是Linux平台上的一个功能强大的性能分析工具,支持两种采样(sampling)方式:基于事件的采样(eventbased)和基于时间的采样(timebased)。 基于事件的采样是oProfile只记录特定事件(比如L2 cache miss)的发生次数,当达到用户设定的定值时oProfile就记录一下(采一个样)。这种方式需要CPU内部有性能计数器(performace counter)。基于时间的采样是oProfile借助OS时钟中断的机制,每个时钟中断oProfile都会记录一次(采一次样),引入此种采样方式的目的在于提 供对没有性能计数器的CPU的支持,其精度相对于基于事件的采样要低。因为要借助OS时钟中断的支持,对禁用中断的代码oProfile不能对其进行分析。 oprofile在Linux上分两部分: 1,内核模块(oprofile.ko), 负责访问性能计数器或者注册基于时间采样的函数(使用register_timer_hook注册之,使时钟中断处理程序最后执行profile_tick时可以访问之),并采样置于内核的缓冲区内。 2,用户空间的守护进程(oprofiled) 后台运行,负责从内核空间收集数据,写入文件。 * 其实include这个目录很能够体现出内核的那些分别罗列,清晰陈列的思想。 * 1,calibrate_delay()这个函数用来处理自刷新延迟这个特殊动作。什么是所谓的自刷新延迟功能,就是用来计算CPU在一秒钟内执行了多少次一个极短循环,计算出来的值经过处理后得到BogoMIPS值,Bogo是Bogus(伪)的意思,MIPS是 millions of instructions per second(百万条指令每秒)的缩写。这样我们就知道了其实这个函数是linux内核中一个cpu性能测试函数。由于内核对这个数值的要求不高,所以内 核使用了一个十分简单而有效的算法用于得到这个值。这个值虽然不准确,但也足以令我们心动。如果你想了解自己机器的BogoMIPS,你可以察看 /proc/cpuinfo文件中的最后一行。 2,initramfs VS. noinitramfs,预示着你的根文件系统是否具有内存缓冲特性,也就是说是否支持把cache当作文件系统进行装载,这样可以实现一个最小fs,用以在极端的设备上运行起最小linux。当然,这种ramdisk仅支持CPIO包封装的initrd。 参考:/uid-488742-id-2113871.html 《initramfs概述 》 3,do_mounts.c ? 主要是负责挂载根文件系统; do_mounts_initrd.c ? 负责调用挂载和处理(ramdisk类型的)的 initrd; do_mounts_md.c ? 处理和 RAID阵列有关的场景; do_mounts_rd.c ? 具体实现如何挂载(ramdisk类型的)的initrd; * 接下来的图中,我试图将start_kernel函数中的那些顺序改变一种方式进行描述,目的是能够让大家更加清晰的对OS这种级别的初始化,有一个结合理论联系实际代码上的完整认识。按照如下形式展开: * 1,smp_setup_processor_id()函数在MINI2440上实现为一个空函数,原因在于MINI2440是古老的ARM9架构的单核U而已,根本就没有多核的性能,何来多核设定管理呢。 2,asmlinkage,该宏定义在:../arch/x86/include/asm/linkage.h中,目的在于:告诉编译器不要使用寄存器来编译;但由于ARM体系下根本就没有这种概念,所以该宏定义在此无效。 3,cgroup是近代linux kernel出现的.它为进程和其后续的子进程提供了一种性能控制机制。详细参考:/techdoc/net/2008/12/23/1054425.shtml 4,在整个start_kernel函

文档评论(0)

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

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

1亿VIP精品文档

相关文档