- 在阅读linux 0.11内核源码时,linux/init/main.c中
// 下面过程通过在堆栈中设置的参数,利用中断返回指令启动任务0执行。
164 move_to_user_mode(); // 移到用户模式下执行。(include/asm/system.h,第1行)
165 if (!fork()) { /* we count on this going ok */
166 init(); // 在新建的子进程(任务1即init进程)中执行。
167 }
fork()的执行穿越了那些程序?竟然返回两种结果!刨根问底的加以理解对入门者有一定的难度。
下面我将试着穿越一次,贯穿内核多个模块,加深内核理解。
首先列出穿越的程序文件: