分析linux内核(一)

 源码分析导航http://lxr.linux.no/

 

1.系统的启动和初始化
      在基于Intel 的系统上,当loadlin.exe 或 LILO 把内核装入到内存并把控制权传递给内核时,内核开始启动。关于这一部分,看arch/i386/kernel/head.S ,head.S 进行特定结构的设置,然后跳转到init/main.c 的main()例程。
2.内存管理
      内存管理的代码主要在/mm,但特定结构的代码在arch/*/mm。缺页中断处理的代码在mm/memory.c ,而内存映射和页高速缓存器的代码在mm/filemap.c。缓冲器高速缓存是在mm/buffer.c 中实现,而交换高速缓存是在mm/swap_state.c 和 mm/swapfile.c 中实现。
3.内核
      内核中,特定结构的代码在arch/*/kernel,调度程序在kernel/sched.c,fork 的代码在kernel/fork.c,task_struct 数据结构在 include/linux/sched.h 中。
4.PCI
      PCI 伪驱动程序在 drivers/pci/pci.c ,其定义在include/linux/pci.h。每一种结构都有一些特定的 PCI BIOS 代码,Intel 的在arch/alpha/kernel/bios32.c。
5.进程间通信
      所有System V IPC 对象权限都包含在 ipc_perm 数据结构中, 这可以在\include/linux/ipc.h 中找到System V 消息是在 ipc/msg.c 中实现, 共享内存在 ipc/shm.c中,信号量在ipc/sem.c 中,管道在 ipc/pipe.c 中实现。
6.中断处理
      内核的中断处理代码是几乎所有的微处理器所特有的。中断处理代码在arch/i386/kernel/irq.c 中,其定义在 include/asm-i386/irq.h 中。
7.设备驱动程序
      Linux 内核源代码的很多行是设备驱动程序。Linux 设备驱动程序的所有源代码都保存在/driver,根据类型可进一步划分为:/block块设备驱动程序如ide(在ide.c)。如果想看包含文件系统的所有设备是如何被初始化的,应当看drivers/block/genhd.c 中的device_setup(),device_setup()不仅初始化了硬盘,当一个网络安装nfs 文件系统时,它也初始化网络。块设备包含了基于IDE 和SCSI的设备。/char是看字符设备(如tty,串口及鼠标等)驱动程序的地方。/cdrom Linux 的所有CDROM 代码都在这里,如在这儿可以找到Soundblaster CDROM 的驱动程序。注意ide CD 的驱动程序是 ide-cd.c,放在drivers/block;SCSI CD 的驱动程序是scsi.c,放在drivers/scsi。/pci这是PCI 伪驱动程序的源代码,在这里可以看到PCI 子系统是如何被映射和初始化的。/scsi  在这里可以找到所有的SCSI 代码及Linux 所支持的scsi 设备的所有设备驱动程序。/net  在这里可以找到网络设备驱动程序,如DECChip 21040 PCI 以太网驱动程序在tulip.c中。/sound  这是所有声卡驱动程序的所在地。
8.文件系统
      EXT2 文件系统的源代码全部在fs/ext2/ 目录下, 而其数据结构的定义在include/linux/ ext2_fs.h,ext2_fs_i.h 及ext2_fs_sb.h 中。虚拟文件系统的数据结构在include/linux/fs.h 中描述,而代码是在fs/*中。缓冲区高速缓存与更新内核的守护进程的实现是在fs/buffer.c 中。
9.网络
      网络代码保存在/net 中,大部分的include 文件在include/net 下,BSD 套节口代码在net/socket.c 中,IP 第4 版本的套节口代码在net/ipv4/af_inet.c。一般的协议支持代码
(包括sk_buff 处理例程)在net/core 下,TCP/IP 联网代码在net/ipv4 下,网络设备驱动程序在/drivers/net 下。
10.模块
      内核模块的代码部分在内核中,部分在模块包中,前者全部在kernel/modules.c 中,而数据结构和内核守护进程kerneld 的信息分别在include/linux/module.h 和include/linux/kerneld.h 中。如果想看ELF 目标文件的结构,它位于include/linux/elf.h中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值