Linux内核启动流程
系统加电后 : bootloader启动,进行基本的硬件初始化,然后从RAM中解压kernel到flash中执行,启动内核;
调用start_kerne函数,处理任务如下:
设置内存边界(setup_arch),初始化内存界面(setup_arch->paging_int);
分析命令行语法(parse_options);
初始化陷阱,中断通道,和调度;
初始化设备(软中断,控制台);
校对延迟循环等 calibrate_delay;
start_kernel 最后调用rest_init()的作用:
开辟内核线程init (kernel_thread->init);
调用unlock_kernel(unlock_kernel);
建立内核运行的 cpu_idle循环(cpu_idle),如果没有调度就一直死循环;
初始化进程init,是内核的第一个进程。Init进程运行后系统内核就不直接控制程序的运行了,而是为进程提供系统调用和中断处理。