linux kernel 启动流程简单分析
来源:互联网 发布:调节手机光线软件 编辑:程序博客网 时间:2024/05/30 05:25
Ping + http://mooc.study.163.com/course/USTC-1000029000
Linux 内核启动的时候,总是从start_kernel()这个函数作为入口。start_kernel完成了对各种资源的初始化。随后,调用了rest_init(),完成对init进程的启动。
我们用gdb跟踪linux kernel 内核启动可以看到。
1. 我们把断点置于start_kernel()的入口,当程序运行停止在该函数处时, 根据其堆栈情况,我们可以看到i386_start_kernel()调用了start_kernel().
2. 随后我们将断点置于rest_init()的开始。当程序运行到该断点的时候。我们跟踪进入该函数。可以看到这个函数实现了对init process的启动。
kernel_thread(kernel_init, NULL, CLONE_FS);
kernel_thread() 调用do_fork() fork出一个新的进程。kernel_init()中完成了对init process的调用。kernel_init()中会依次启动sbin/init, etc/init,bin/init, bin/sh这些进程。kernel_init的进程编号的是#1.
3. 在rest_init()中还会启动#2 进程。kthreadd
4. 在rest_init()的最后还会启动一个idle task.这个task就是一个while(1)的死循环。它可以由cpu的中断来打破这个循环。
0 0
- linux kernel 启动流程简单分析
- linux kernel启动流程
- linux kernel 启动分析
- linux uboot,kernel启动流程
- ARM linux kernel启动流程
- Android启动流程 -- linux kernel
- Linux kernel启动流程简介
- Linux kernel启动流程第一阶段
- kernel的启动流程分析(未完)
- Linux启动流程分析
- linux启动流程分析
- linux启动流程分析
- [Linux] 启动流程分析
- linux启动流程分析
- linux启动流程分析
- linux 启动流程分析
- Linux启动流程分析
- Android arm linux kernel启动流程
- Ubuntu下安装配置JDK
- Android开发笔记:SQLite导入导出数据
- php nginx安装
- Hdoj 5154 Harry and Magical Computer 【拓扑】
- 安装 Windows SDK for Windows 7 时遇到的一个问题及解决办法
- linux kernel 启动流程简单分析
- 字符,字节和编码
- 数值与NSNumber互转
- Linux常用命令大全
- maven 建mvc 参考网站
- spring data jpa specification的封装
- Hdoj 2152 Fruit 【母函数】
- C++设计一个真正不能被继承的类
- 初识GihHub,创建仓库,使用GitHub for Windows 同步本地代码文件,创建分支