kernel结构

来源:互联网 发布:曹鹏编程之邦 编辑:程序博客网 时间:2024/05/21 10:44
/Documentation 文档资料

/arch 体系结构相关代码
/drivers linux支持的外围设备的驱动程序
/fs linux支持的所有文件系统在fs目录下都有一个对应的子目录
/include linux源程序树中大部分.h文件
  /linux 内核和用户应用程序请求特定内核服务时所用的常量 数据结构在头文件中定义,这里就是头文件
  /net 供与网络子系统有关的头文件使用
  /scs 与SCSI控制器和 SCSI设备有关的头文件使用
  /video 与显卡和帧显示缓存有关的头文件使用
/init 引导程序,main.c包含了大部分协调内核初始化的代码
/ipc 实现了System V的进程间通信(IPC)
/kernel 实现平台独立的基本功能
  /sched.c 进程调度
  /fock.c 创建进程
  /exit.c 撤销进程
/lib
  /inflate.c 能够在系统启动时展开经过压缩的内核
  /*其他文件实现一个标准C库的有用子集
/mm 体系结构无关的内存管理代码,为每个平台实现最底层结构的是源于,他的体系结构特有的内存管理程序是 存储在/arch/platform/mm
/net 包含了linux应用的网络协议代码,例如:AppleTalk ,TCP/IP ,IPX等
/scripts 包含了用来配置内核的脚本

1、系统启动与初始化
  通过loadlin.exe或者LILO将核心载入内存并将控制传递给他。程序位于/arch/Kernel/head.s完成处理器相关操作并转跳到init/main.c中的main()
2、内存管理
  处理器结构相关部分放在arch/*/mm中,页面出错处理代码位于mm下的/memory.c文件中,内存映射与页面cache代码位于filemap.c中,buffer cache 在mm/buffer.c中,swap cache位于/mm/swap_state.c和/mm/swapfile.c中
3、核心
  处理器相关代码放在arch/*/Kernel中,调度器位于/kernel/sched.c中,底层部分处理代码位于/include/linux/interrupt.h,task_struct的描述在/linux/sched.h中可以找到
4、PCI
  PCI伪设备驱动在/drivers/pci/pci.c中,系统通用定义放在/include/linux/pci.h中,每个处理器结构具有特殊的PCI BIOS代码,位于/arch/*/kernel/bois32.c中(有变化)
5、进程间通信
  所有代码在ipc中,System V IPC对象都包含一个ipc-perm结构,在/include/linux/ipc.h中,System V消息在/ipc/msg.c中实现,共享内存在ipc/shm.c中,信号灯位于/ipc/sem.h,管道在/ipc/pipe.c
6、中断处理
  中断处理代码位于/arch/*/kernel/irq.c 定义位于/include/asm-*/irq.h中
7、设备驱动
  /block 块设备驱动包括ID(在ide.c中)驱动。初始化过程/drivers/block/genhd.c中的device_setup().当安装一个nfs系统时不但要初始化硬盘,还需要初始化网络,块设备包括IDE和SCSI设备。
  /char包含字符设备的驱动
  /cdrom 包含所有linux CDROM代码.IDE接口的CD驱动位于/drivers/block/ide-cd.c中,SCSI CD驱动位于drivers/scsi/scsi.c中。
  /pci 包含了pci伪设备驱动的源代码。可以找到PCI子系统映射与初始化的代码
  /scsi 所有SCSI代码,及linux支持的SCSI设备驱动
  /net 包含网络驱动源代码
  /sound 所有声卡驱动源代码
8、文件系统
  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中实现
9、网络
  代码位于/net目录中,大多数包含文件位于/include/net中。BSD套接口代码位于/net/socket.c中,IPV4的INET套接口代码位于/net/ipv4/af_inet.c中,通用协议支撑代码(包括sk_buff处理过程)位于net/core中,TCP/IP网络代码位于/net/ipv4中,网络设备驱动代码位于/drivers/net中/
10、模块
  核心模块代码位于/modules包中,核心代码位于/kernel/modules.c,数据结构与核心后台进程kerneld消息位于/include/linux/module.h和/include/linux/kerneld.h中。必要时需查询/include/linux/elf.h中的ELF模块。

原创粉丝点击