知识大全 Linux Kernel核心中文手册 (13)

Posted

篇首语:有上不去的天,没过不去的关。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Linux Kernel核心中文手册 (13)相关的知识,希望对你有一定的参考价值。

Linux Kernel核心中文手册 (13)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  The Linux Kernel Sources ( Linux 核心源程序)     本章描述了你应该在 Linux 核心源程序的什么地方开始查看特定的核心功能     本书不依赖 C 语言的知识或要求你有 Linux 核心源程序才能理解 Linux 核心如何工作 而是说 练习查看核心源程序能够对于 Linux 操作系统有一个深入地理解 本章给出核心源程序的概览 它们如何组织 你应该从哪里开始查找特定的代码     Where to Get The Linux Kernel Sources (从哪里得到 Linux 核心源程序)     所有的主要的 Linux 分发( Craforks Debian Slackware RedHat 等等)中间都有核心源程序 通常 L 安装在你的 Linux 系统上的 Linux 核心都是用这些源程序建立的 实际上这些源程序显得有些过时 所以你可能希望得到附录 C 提到的 web 站点得到最新的源程序 它们放在 ftp://ftp cs helsinki fi 和其它所有的镜像的 web 站点 Helsinki 的 web 站点最新 但是其它站点例如 MIT 和 Sunsite 也不会太落后     如果你无法访问 web 还有许多 CDROM 厂家用非常合理的费用提供世界主要 web 站点的块找 一些甚至提供预订服务 按季或月进行更新 你的本地的 Linux 用户组也是一个源程序的好的来源     Linux 核心源程序有一个非常简单的编号系统 任何偶数的核心(例如 )都是一个稳定的发行的核心 而任何奇数的核心(例如 )都是一个开发中的核心 本书基于稳定的 源代码 开发版的核心具有所有的最新特点和所有最新的设备的支持 但是它们可能不稳定 可能不是你所要的 但是让 Linux 社团测试最新核心是很重要的 这样可以让整个社团都进行测试 记住 即使你测试非生产用核心 最好也要备份你的系统     对于核心源程序的改动作为 patch 文件分发 工具 patch 可以对于一系列源文件应用一系列修改 例如 如果你有 的源程序树 而你希望转移到 你可以取到 的 patch 文件 并把这些 patch (编辑)应用到源程序树上     $ cd /usr/src/linux    $ patch p < patch-2.0.30    这样可以不用拷贝整个源程序树,特别对于慢速的串行连接。.WiNgWit.一个核心补丁(正式和非正式的)的好来源是     How The Kernel Sources Are Arranged (核心源程序如何组织)     在源程序树的最上层你会看到一些目录:    arch arch 子目录包括所有和体系结构相关的核心代码。它还有更深的子目录,每一个代表一种支持的体系结构,例如 i386 和 alpha 。     Include include 子目录包括编译核心所需要的大部分 include 文件。它也有更深的子目录,每一个支持的体系结构一个。 Include/asm 是这个体系结构所需要的真实的 include 目录的软链接,例如 include/asm-i386 。为了改变体系结构,你需要编辑核心的 makefile ,重新运行 Linux 的核心配置程序     Init 这个目录包含核心的初始化代码,这时研究核心如何工作的一个非常好的起点。     Mm 这个目录包括所有的内存管理代码。和体系结构相关的内存管理代码位于 arch/*/mm/ ,例如 arch/i386/mm/fault.c     Drivers 系统所有的设备驱动程序在这个目录。它们被划分成设备驱动程序类,例如 block 。     Ipc 这个目录包含核心的进程间通讯的代码     Modules 这只是一个用来存放建立好的模块的目录     Fs 所有的文件系统代码。被划分成子目录,每一个支持的文件系统一个,例如 vfat 和 ext2     Kernel 主要的核心代码。同样,和体系相关的核心代码放在 arch/*/kernel     Net 核心的网络代码     Lib 这个目录放置核心的库代码。和体系结构相关的库代码在 arch/*/lib/     Scripts 这个目录包含脚本(例如 awk 和 tk 脚本),用于配置核心     Where to Start Looking (从哪里开始看)     看像 Linux 核心这么巨大复杂的程序相当困难。它就像一个巨大的线球,显示不出终点。看核心的一部分代码通常会引到查看其它几个相关的文件,不就你就会忘记你看了什么。下一节给你一个提示,对于一个给定的主题,最好看源程序树的那个地方。     System Startup and Initialization (系统启动和初始化)     在一个 Intel 系统上,当 loadlin.exe 或 LILO 把核心加载到内存并把控制权交给它的时候,核心开始启动。这一部分看 arch/i386/kernel/head.S 。 head.S 执行一些和体系结构相关的设置工作并跳到 init/main.c 中的 main() 例程。     Memory Management (内存管理)     代码大多在 mm 但是和体系结构相关的代码在 arch/*/mm 。 Page fault 处理代码在 mm/memory.c 中,内存映射和页缓存代码在 mm/filemap.c 中。 Buffer cache 在 mm/buffer.c 中实现,交换缓存在 mm/swap_state.c 和 mm/swapfile.c 中。     Kernel    大部分相对通用的代码在 kernel ,和体系结构相关的代码在 arch/*/kernel 。调度程序在 kernel/sched.c , fork 代码在 kernel/fork.c 。 bottom half 处理代码在 include/linux/interrupt.h 。 task_struct 数据结构可以在 include/linux/sched.h 中找到     PCI    PCI 伪驱动程序在 drivers/pci/pci.c ,系统范围的定义在 include/linux/pci.h 。每一种体系结构都有一些特殊的 PCI BIOS 代码, Alpha AXP 的位于 arch/alpha/kernel/bios32.c     Interprocess Communication    全部在 ipc 目录。所有系统 V IPC 对象都包括 ipc_perm 数据结构,可以在 include/linux/ipc.h 中找到。系统 V 消息在 ipc/msg.c 中实现,共享内存在 ipc/shm.c 中,信号灯在 ipc/sem.c 。管道在 ipc/pipe.c 中实现。     Interrupt Handling    核心的中断处理代码几乎都是和微处理器(通常也和平台)相关。 Intel 中断处理代码在 arch/i386/kernel/irq.c 它的定义在 incude/asm-i386/irq.h 。     Device Drivers (设备驱动程序)     Linux 核心源代码的大部分代码行在它的设备驱动程序中。 Linux 所有的设备驱动程序源代码都在 drivers 中,但是它们被进一步分类:     /block 块设备驱动程序比如 ide ( ide.c )。如果你希望查看所有可能包含文件系统的设备是如何初始化的,你可以看 drivers/block/genhd.c 中的 device_setup() 。它不仅初始化硬盘,也初始化网络,因为你安装 nfs 文件系统的时候需要网络。块设备包括基于 IDE 和 SCSI 设备。     /char 这里可以查看基于字符的设备比如 tty ,串行口等。     /cdrom Linux 所有的 CDROM 代码。在这里可以找到特殊的 CDROM 设备(比如 Soundblaster CDROM )。注意 ide CD 驱动程序是 drivers/block 中的 ide-cd.c ,而 SCSI CD 驱动程序在 drivers/scsi/scsi.c 中     /pci PCI 伪驱动程序。这是一个观察 PCI 子系统如何被映射和初始化的好地方。 Alpha AXP PCI 整理代码也值得在 arch/alpha/kernel/bios32.c 中查看     /scsi 在这里不但可以找到所有的 Linux 支持的 scsi 设备的驱动程序,也可以找到所有的 SCSI 代码     /net 在这里可以找到网络设备驱动程序比如 DEC Chip 21040 PCI 以太网驱动程序在 tulip.c 中     /sound 所有的声卡驱动程序的位置     File Systems (文件系统)     EXT2 文件系统的源程序都在 fs/ext2/ 子目录,数据结构的定义在 include/linux/ext2_fs.h,ext2_fs_i.h 和 ext2_fs_sb.h 中。虚拟文件系统的数据结构在 include/linux/fs.h 中描述,代码是 fs/* 。 Buffer cache 和 update 核心守护进程都是用 fs/buffer.c 实现的     Neork (网络)     网络代码放在 net 子目录,大部分的 include 文件在 include/net 。 BSD socket 代码在 net/socket.c , Ipv4 INET socket 代码在 net/ipv4/af_inet.c 中。通用协议的支持代码(包括 sk_buff 处理例程)在 net/core 中, TCP/IP 网络代码在 net/ipv4 。网络设备驱动程序在 drivers/net     Modules (模块)     核心模块代码部分在核心,部分在 modules 包中。核心代码全部在 kernel/modules.c ,数据结果和核心守护进程 kerneld 的消息则分别在 include/linux/module.h 和 include/linux/kerneld.h 中。你可能也希望在 include/linux/elf.h 中查看一个 ELF 目标文件的结构    cha138/Article/program/Oracle/201311/17961

相关参考

知识大全 Linux Kernel核心中文手册 (12)

LinuxKernel核心中文手册(12)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Mod

知识大全 从linux kernel coding style看php代码规范

  linux内核的编码是一种极端情况  需要清晰明朗以供全世界的开发者学习修改对代码的质量要求较高  相信linus大神在长期接触各种各式代码后脾气会变得更暴躁就比如前段时间在某论坛痛斥C++  节

知识大全 核心( Kernel )编译与 Lilo 多重开机

核心(Kernel)编译与Lilo多重开机  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  运作的

知识大全 Linux简明系统维护手册(1)

Linux简明系统维护手册(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  摘要    本文

知识大全 Linux简明系统维护手册(3)

Linux简明系统维护手册(3)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  )配置samba

知识大全 Red Hat Linux 7.1使用手册(上)

RedHatLinux7.1使用手册(上)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  摘要:

知识大全 Red Hat Linux 7.1 完全使用手册

RedHatLinux7.1完全使用手册  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  作者徐锋

知识大全 编译核心的原因

  在您初安装好FreeBSD之后所使用的是一般性核心(kernel)我们称它为GENERICkernelGENERICkernel只会包含安装时所需的驱动程序许多非安装时必需的外围接口与针对程序与外

知识大全 MySQL中文参考手册-- 输入查询

MySQL中文参考手册--输入查询  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  确保你连接上了

知识大全 MySQL中文参考手册---MySQL 文件系统

MySQL中文参考手册---MySQL文件系统  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这