首页 | Linux 基础 | 资讯动态 | Linux 应用 | Linux 服务器 | Linux 开发 | Linux 安全 | 专题 | 联盟论坛
  当前位置:主页>Linux 开发>linux 内核>文章内容
Linux内核源代码学习概述
来源:http://www.unix5.com 作者:linuxfans 发布时间:2008-04-28  
目录中可以找到 IP(版本 4)代码。

scripts/:这个目录中包含的脚本可用于内核的构建,但并不将任何代码加入到内核本身之中。例如,各种配置工具可以将它们的文件放在这里。

security/:在这里可以找到不同 Linux 安全模型的代码,比如 NSA Security-Enhanced Linux 以及套接字和网络安全钩子函数(hooks),以及其他安全选项。

sound/:这里放置的是声卡驱动程序和其他与声音相关的代码。

usr/:此目录中的代码用于构建包含 root 文件系统映像的 cpio-格式 的归档文件,用于早期用户空间。

所有这些汇集在哪里?

init/main.c 文件是整个 Linux 内核的中央联结点。每种体系结构都会执行一些底层设置函数,然后执行名为 start_kernel 的函数(在 init/main.c 中可以找到这个函数)。

代码的执行顺序大致如下:


Architecture-specific set-up code (in arch//*)
 |
 v
The function start_kernel() (in init/main.c)
 |
 v
The function init() (in init/main.c)
 |
 v
The user level "init" program

关于执行顺序的更多细节

更详细地讲,发生的事情是:

  • 执行体系结构相关的设置代码:
    • 如果需要,解压缩并移动内核代码本身
    • 初始化硬件
      • 这可能包括底层内存管理的设置
    • 将控制权转交给函数 start_kernel()

  • start_kernel() 去执行以下事情(以及其他事情):
    • 打印内核版本和命令行
    • 启动控制台输出
    • 启用中断
    • 校准延迟循环
    • 调用 rest_init(),这个函数会:
      • 启动一个内核线程来运行 init() 函数
      • 进入空闲循环
  • init():
    • 启动其他处理器(在 SMP 机器上)
    • 启动设备子系统
    • 挂载 root 文件系统
    • 释放不使用的内核内存
    • 运行 /sbin/init(或者 /etc/init,或者...)

此时,用户级 init 程序正在运行;它将完成启动网络设备并在控制台上运行 getty (登录程序)等任务。

加入自己的 printk,并观察那个子系统的 printk 相对于自己的 printk 何时出现,就可以指出那个子系统是在 start_kernel() 中还是在 init() 中初始化的。例如,如果想要知道 ALSA 声音系统何时被初始化,那么将 printk 加入到 start_kernel()init() 的起始处,然后找到“Advanced Linux Sound Architecture [...]” 相对于您的 printk 在何处打印出来。


共2页: 上一页 [1] 2 下一页
 
如果您对本文有任何疑问或者建议,请到论坛讨论区发表您的意见: >> 论坛入口
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
  热点文章
·使用 Linux 系统调用的内核命令
·Linux 2.6.11内核文件IO系统调用
·Linux操作系统的源代码目录树结
·Linux用户态与内核态的交互讲解
·Linux内核对I/O端口的管理实现(
·深入分析 Linux操作系统的内核链
·Linux内核可装载模块对设备驱动
·概述Linux系统的驱动框架及驱动
·详解Linux 2.6内核新文件系统变
·Linux系统可卸载内核模块完全指
·FreeBSD手册讲解(一)--配置FreeB
·编译Linux操作系统的内核讲解
  相关文章
·Linux下的中文显示和支持常见问
·如何利用异常表处理Linux内核态
·Linux操作系统核心的汉字显示机
·Linux操作系统“警惕”内核汉化
·简析Linux与FreeBSD的syscall
·如何在Linux内核中的实现SYN Coo
·Linux系统内核漏洞分析
·深入学习LINUX内核之七(图文讲解
·深入学习LINUX内核之六(图文讲解
·深入学习LINUX内核之五(图文讲解
·深入学习LINUX内核之四(图文讲解
·深入学习LINUX内核之三(图文讲解

本站信息源至:互联网络,均为学习,交流所用,如有版权问题,请联系我们.
站长QQ:397422079 E_mail:riechelr_hl@unix5.com
转载本站内容请注明原作者名.谢谢!