Linux内核分析(一)

        最近有空闲的时间,打算阅读下Linux的源码,并记录下自己的成长过程。计划的学习方式,下载kernel 0.11代码,并网上找下相关视频进行学习,学习Linux最初的设计思路;调试4.19的内核代码,对实际的工程代码的关键部分进行解读。

        分两步学习的原因,因为最新的Linux代码已经非常的庞大了,如果直接从几万行代码开始看起,工作量很大,并且只能看到全貌,很难看清楚整体,而Linux代码是从最初的0.11演进而来,虽然变化巨大,但是总体的设计思路变化不大,通过阅读kernel 0.11对整体设计思路理解以后,具体涉及到各领域再分析实际的工程代码。因为我最近是做性能相关的,会先阅读调度器相关代码,其他部分看情况再进行阅读和调试。

        首先,我们看下kernel 0.11的代码结构:

.
├── boot
│   ├── bootsect.s
│   ├── head.s
│   └── setup.s
├── cscope.files
├── fs
│   ├── bitmap.c
│   ├── block_dev.c
│   ├── buffer.c
│   ├── char_dev.c
│   ├── exec.c
│   ├── fcntl.c
│   ├── file_dev.c
│   ├── file_table.c
│   ├── inode.c
│   ├── ioctl.c
│   ├── Makefile
│   ├── namei.c
│   ├── open.c
│   ├── pipe.c
│   ├── read_write.c
│   ├── stat.c
│   ├── super.c
│   └── truncate.c
├── include
│   ├── a.out.h
│   ├── asm
│   │   ├── io.h
│   │   ├── memory.h
│   │   ├── segment.h
│   │   └── system.h
│   ├── const.h
│   ├── ctype.h
│   ├── errno.h
│   ├── fcntl.h
│   ├── linux
│   │   ├── config.h
│   │   ├── fdreg.h
│   │   ├── fs.h
│   │   ├── hdreg.h
│   │   ├── head.h
│   │   ├── kernel.h
│   │   ├── mm.h
│   │   ├── sched.h
│   │   ├── sched.h.cur1
│   │   ├── sched.h.old
│   │   ├── sys.h
│   │   └── tty.h
│   ├── signal.h
│   ├── stdarg.h
│   ├── stddef.h
│   ├── string.h
│   ├── sys
│   │   ├── stat.h
│   │   ├── times.h
│   │   ├── types.h
│   │   ├── utsname.h
│   │   └── wait.h
│   ├── termios.h
│   ├── time.h
│   ├── unistd.h
│   └── utime.h
├── init
│   └── main.c
├── kernel
│   ├── asm.s
│   ├── blk_drv
│   │   ├── blk.h
│   │   ├── floppy.c
│   │   ├── hd.c
│   │   ├── ll_rw_blk.c
│   │   ├── Makefile
│   │   └── ramdisk.c
│   ├── chr_drv
│   │   ├── console.c
│   │   ├── keyboard.S
│   │   ├── Makefile
│   │   ├── rs_io.s
│   │   ├── serial.c
│   │   ├── tty_io.c
│   │   └── tty_ioctl.c
│   ├── exit.c
│   ├── fork.c
│   ├── Makefile
│   ├── math
│   │   ├── Makefile
│   │   └── math_emulate.c
│   ├── mktime.c
│   ├── panic.c
│   ├── printk.c
│   ├── sched.c
│   ├── signal.c
│   ├── sys.c
│   ├── system_call.s
│   ├── traps.c
│   └── vsprintf.c
├── lib
│   ├── close.c
│   ├── ctype.c
│   ├── dup.c
│   ├── errno.c
│   ├── execve.c
│   ├── _exit.c
│   ├── Makefile
│   ├── malloc.c
│   ├── open.c
│   ├── setsid.c
│   ├── string.c
│   ├── wait.c
│   └── write.c
├── Makefile
├── mm
│   ├── Makefile
│   ├── memory.c
│   └── page.s
├── README.md
├── tools
│   └── build.c
└── tree.txt

14 directories, 105 files

Linux内核的体系结构可以简单用下面几个层次进行描述

 

 后面我们从分成几个部分进行分析:

  • 内核引导程序
  • 进程管理
  • 内存管理
  • 文件系统
  • 内核驱动开发
  • 调度器分析
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值