内核学习入门
来源:互联网 发布:win读取mac硬盘软件 编辑:程序博客网 时间:2024/05/01 21:10
内核源码的目录结构
内核源码的顶层是/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脚本)。
帮助源码阅读的重要提示
系统启动与初始化
在基于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对象都包含一个ipc_perm结构,它在include/linux/ipc.h中描叙。 系统V消息在ipc/msg.c中实现,共享内存在ipc/shm.c而信号灯位于ipc/sem.c中。管道在ipc/pipe.c中实现。中断处理
核心的中断处理代码总是与微处理器结构相关。Intel系统的中断处理代码位于arch/i386/kernel/irq.c中, 其定义位于include/asm-i386/irq.h中。设备驱动
Linux核心源码的大多数都是设备驱动。所有Linux的设备驱动源码都放在drivers目录中并分成以下几类:- /block
- 块设备驱动包括IDE(在ide.c中)驱动。如果你想寻找这些可包含文件系统的设备的初始化过程 则应该在drivers/block/genhd.c中的device_setup()。当安装一个nfs文件系统时不但要初始化 硬盘还需初始化网络。块设备包括IDE与SCSI设备。
- /char
- 此目录包含字符设备的驱动,如ttys,串行口以及鼠标。
- /cdrom
- 包含所有Linux CDROM代码。在这里可以找到某些特殊的CDROM设备(如Soundblaster CDROM)。 IDE接口的CD驱动位于drivers/block/ide-cd.c中而SCSI CD驱动位于drivers/scsi/scsi.c中。
- /pci
- 它包含了PCI伪设备驱动源码。这里可以找到关于PCI子系统映射与初始化的代码。另外位于 arch/alpha/kernel/bios32.c中的Alpha AXP PCI补丁代码也值得一读。
- /scsi
- 这里可以找到所有的SCSI代码以及Linux支持的SCSI 设备的设备驱动。
- /net
- 包含网络驱动源码,如tulip.c中的DECChip 21040 PCI以太网驱动。
- /sound
- 所有的声卡驱动源码。
文件系统
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中实现。网络
网络代码位于net目录而大多数包含文件位于include/net中。BSD套接口代码位于net/socket.c中。IPV4的 INET套接口代码位于net/ipv4/af_inet.c中。通用协议支撑代码(包括sk_buff处理过程)位于net/core中, 同时TCP/IP网络代码位于net/ipv4中。网络设备驱动位于drivers/net中。模块
核心模块代码部分位于核心中部分位于modules包中。核心代码位于kernel/modules.c且其数据结构与核心 后台进程kerneld消息位于include/linux/module.h和include/linux/kerneld.h目录中。同时必要时需查阅 include/linux/elf.h中的ELF文件格式。0
上一篇:生成修改记录
下一篇:MTK 10A 新特性学习
相关热门文章
- linux 常见服务端口
- xmanager 2.0 for linux配置
- 【ROOTFS搭建】busybox的httpd...
- openwrt中luci学习笔记
- 什么是shell
- linux dhcp peizhi roc
- 关于Unix文件的软链接
- 求教这个命令什么意思,我是新...
- sed -e "/grep/d" 是什么意思...
- 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
0 0
- Linux内核入门学习
- 内核学习入门
- Windows内核驱动开发入门学习资料
- Windows内核驱动开发入门学习资料
- Windows内核驱动开发入门学习资料
- Windows内核驱动开发入门学习资料
- Windows内核驱动开发入门学习资料
- Windows内核驱动开发入门学习资料
- Windows内核驱动开发入门学习资料
- Windows内核驱动开发入门学习资料
- 内核入门
- 内核入门
- 内核入门
- Linux 内核入门学习笔记(一) AT&T汇编基础
- Windows内核驱动开发入门学习资料 + 内核数据类型和函数
- 内核学习
- 内核学习
- 内核学习
- MTK TAB页面的实现
- MTK 09B 新特性学习
- 遍历文件,寻找错误信息
- Android学习网站,资料推荐,学习经验共享
- 生成修改记录
- 内核学习入门
- MTK 10A 新特性学习
- div在各种情况下的居中
- 记住:你应该努力去追求幸福
- 电池电量显示 MTK 09B
- Ubuntu下Android应用程序开发环境搭建
- Android应用开发记录
- 对指定目录下的文件进行筛选,并重命名拷贝到另一个目录
- Android Emulator
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
慈母憨儿
父慈子孝
慈航道人
金洲慈航股吧
金洲慈航
慈菇
楚慈番外新增番外
孝慈仁皇后
严慈相济意思
孝慈高皇后
何念慈
慈母之心综
瑞慈体检报告手机查询
慈母之心格格党
黄忆慈蹲下有胸卖杨梅
父慈子孝八个番外
慈星股份
林天龙入苏念慈组
家政妇
韩漫家政妇
巨胸家政妇
云家政
中家家政
家政app
家政杭州网
西安家政
家政上门
临沂家政
菲佣家政
天津家政网
树人家政
正规的家政
家政在线
苏州家政
东莞家政
合肥家政网
扬州家政
家政中心
应聘家政
常州家政
南京家政