.第一次读内核,整整上学时的考试前.胡里胡涂的就过去了,没甚收获.这次我发誓要彻底读一次. 面对近50 m 的源码,困惑是难免的所以我决定先从大面上把握,再在某一些具体的点上切入.这样一来linux 的启动过程便十分重要,因此我先用dmesg命令察看一下linux启动时打出的消息.(我想源文件应在/usr/src/linux/init/main.c中) 内核的启动最后是到 start_kernel ( in /init/main.c )也就是说启动的过程是从 head.S ( arch/i386/boot/ ) 一直运行到 main.c(start_kernel) .它的作用是完成开机后的设置与内核的初始化,然后,系统究竟入一个无限的循环中等待用户的输入,调用fork来产生子进程.从而达到交互式操作系统的设计要求. 第一部分 : 内核初始化以及启动. .启动系统.当PC机加电开始启动时,80X86的处理器(CPU)在实模式下自检,开始执行物理地址0xFFFF0即ROM-BIOS的起始地址处的代码。PC机的BIOS进行系统自检,初始化中断向量表到物理地址0x0。然后把引导设备的第一个扇区加载到地址0x7C00,执行此处的指令。到这里与linux无关,x86系列的硬件设置如此.
|