极限首页 业界焦点 软件工程师之路 系统工程师之路 网络工程师之路 软件下载 技术社区
 bash编程学习笔记(一)
 RPM 打包技术与典型 SPEC
 Linux Kernel核心中文手册
 精通递归程序设计
 Linux Kernel核心中文手册
 Linux/Unix环境下的make命
 Linux Kernel核心中文手册
 bash编程学习笔记(二)
 Linux Kernel核心中文手册
 Linux操作系统内核编译详解
 bash编程学习笔记(一)
 RPM 打包技术与典型 SPEC
 Linux Kernel核心中文手册
 精通递归程序设计
 Linux Kernel核心中文手册
 Linux/Unix环境下的make命
 Linux Kernel核心中文手册
 bash编程学习笔记(二)
 Linux Kernel核心中文手册
 Linux操作系统内核编译详解

Shell 中文手册

Python 2.3 中文手册

Python 2.4 中文手册

Mysql 4.x 中文手册

PHP 4.x 中文手册

Apache 2.x 中文手册
更多手册

站内搜索:
当前位置:首页>>软件工程师之路>>编程进阶>>正文
Linux Kernel核心中文手册(10~13)(5)
时间:2005-11-08 作者:未知 来源:未知

 

看像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实现的

 

Network(网络)

 

网络代码放在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(模块)

 

参见kernel/module.c delete_module()


  共5页: 上一页 [1] [2] [3] [4] 5   
推荐】【 】【关闭


关于极限 | 站内地图 | 意见反馈 | 广告服务 | 数据服务 | 联系我们
本站所刊登的文章,技术资料,软件均整理于网络资源或本站原创,转载请务必联系原作者或本站。
Copyright ? 2001-2004 UPLinux.com All Rights Reserved.
本站唯一联系信箱:
京ICP备05010519