Linux 核心--15.Linux内核资源

超级青春纪念册

超级青春纪念册

2016-01-29 19:42

Linux 核心--15.Linux内核资源,Linux 核心--15.Linux内核资源
  第十四章 Linux核心资源

本章主要描叙寻找某个特殊核心函数时用到的Linux核心资源。 

本书并不要求读者具有C编程语言的能力或者拥有Linux核心源代码来理解Linux核心工作原理。但是如果 对核心源代码进行阅读将加深对Linux操作系统的理解。本章提供了一个核心源代码的综述。 


从哪里得到Linux核心源码
所有主要Linux分发版本(如Craftworks,Debian,Slackware,Redhat)都包含了源码在内。通常安装在 你的Linux系统核心就是从这些源码中构造出来的。由于一些显然的因素,这些源码都或多或少有点过期。 你可以在www-appendix一章中的那些WEB站点中得到最新的版本。这些站点包括ftp://ftp.cs.helsinki.fi 以及所有其他镜象站点中。helsinki的这个WEB站点上的Linux源码显然是最新的但是MIT和Sunsite中的也 不会差太远。 
如果你无法访问这些WEB站点,有许多CD ROM厂商以非常合理的价格提供了这些WEB站点的镜象光盘。有些 厂商还提供每季度甚至每个月更新的订购服务。另外你所在的本地Linux用户组也是一个很好的资源。 

Linux核心代码的版本编号很简单。任何偶数编号的核心(如2.0.30)都是稳定的发行版而记数编号的核心 (如2.1.42)都是正在开发的核心。本书基于稳定的2.0.30版本。开发版的核心具有所有最新的特征并支持 最新的设备。尽管它们不是你所希望的那样稳定,但是对于Linux用户团体来说试用新核心是非常重要的。 因为他们将完成这些评测工作。当试用非发行版本核心时备份系统总是有好处的。 

核心的修改以patch文件来分发。而patch实用程序被用来对一些核心源码进行编辑。例如如果现在你已经 有了2.0.39的核心代码但是你想升级到2.0.30,那么你在取得2.0.30补丁文件后可以实用以下命令来修改 现存核心: 


$ cd /usr/src/linux
$ patch -p1 < patch-2.0.30

一个收集核心补丁的站点是http://www.linuxhq.com。 


核心源码的组织
核心源码的顶层是/usr/src/linux目录,在此目录下你可以看到大量子目录: 

arch 
这个子目录包含了所有体系结构相关的核心代码。它还包含每种支持的体系结构的子目录,如i386。 
include 
这个目录包括了用来重构核心的大多数include文件。对于每种支持的体系结构分别有一个子目录。 此目录中的asm子目录中是对应某种处理器的符号连接,如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脚本)。 

从哪里入手
阅读象Linux核心代码这样的复杂程序令人望而生畏。它象一个越滚越大的雪球。阅读核心某个部分经常要 用到好几个其他的相关文件,不久你将会忘记你原来在干什么。本小节将给出一些提示。 

系统启动与初始化
在基于intel的系统上,Linux可以通过loadlin.exe或者LILO将核心载入内存并将控制传递给它。这部分程序 位于arch/i386/kerneld/head.S。此文件完成一些处理器相关操作并跳转到init/main.c中的main()例程。 

内存管理
这部分代码主要位于mm目录中但其处理器结构相关部分被放在arch/*/mm中。页面出错处理代码位于mm下的 memory.c文件中而内存映射与页面cache代码位于filemap.c中。buffer cache则在mm/buffer.c中实现, swap cache位于mm/swap_state.c和mm/swapfile.c中。 

核心
大多数通用代码位于kernel目录下而处理器相关代码被放在arch/*/kernel中。调度器位于kernel/sched.c 而fork代码位于kernel/fork.c中。底层部分处理代码位于include/linux/interrupt.h中。task_struct的 描叙则在/linux/sched.h中可以找到。 

PCI
PCI伪设备驱动位于drivers/pci/pci.c且其系统通用定义放在include/linux/pci.h中。每个处理器结构 具有特殊的PCI BIOS代码,Alpha AXP的位于arch/alpha/kernel/bios32.c中。 

进程间通讯
所有这些代码都在ipc目录中。系统V IPC对象都包含一个ip
展开更多 50%)
分享

猜你喜欢

Linux 核心--15.Linux内核资源

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
Linux 核心--15.Linux内核资源

Linux 核心--12.Linux内核机制

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
Linux 核心--12.Linux内核机制

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Linux 核心--5.Linux进程

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
Linux 核心--5.Linux进程

linux内核驱动-内核初涉

服务器
linux内核驱动-内核初涉

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

linux内核的编译

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
linux内核的编译

Linux 内核的类型

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
Linux 内核的类型

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Photoshop教程:笔刷运用打造MM艺术照效果

Photoshop教程:笔刷运用打造MM艺术照效果

Linux 核心--4.内存管理

Linux 核心--4.内存管理
下拉加载更多内容 ↓