系统初始化过程

         当我们执行shell或者是其它应用程序的时候,必须要装载到内核中执行。内核要谁来引导呢,当然是GRUB或者是LILO之类的引导程序。那这些引导程序又是谁引导的呢?总不会是没有理由而来,当然是大名鼎鼎的BIOS了。按这个思维下来,你就会脱口而出,那BOIS是谁引导的呢?BOIS的引导又是谁引导的呢?。。。。。。

         很好,就这么一直问下去,看起来好像是个无限的循环,但是总会有到底的时候。这个底就是硬件,硬件是这个循环的源头。硬件的一些固定机制使这个循环有了结束的可能,但是不要问硬件是谁引导的。

          开始,所有的cpu都要进行初始化。随后cpu根据intel的抢夺标志算法,动态的选择一个主cpu来启动系统并执行剩下的工作。其它cpu作为辅cpu,随后有内核激活它们。这样在随后一段时间就只有一个cpu在其作用了。

          然后,cpu会从一个固定地址(0xfffffff0)取得指令并执行。该指令是一个跳转指令,跳到BIOS的首部。BIOS内置在主板中,主要负责控制系统的启动。BIOS使用内置的规则来选择启动设备(一般是硬盘)。从这设备读取其第一个扇区MBR(主引导记录)的信息。并在MBR中检测引导扇区的位置。找到后,BIOS将其装入内存(这里我们认为是GRUB)。

          接着,GRUB在磁盘上找到内核,将其装载到内存,并跳转到内核。内核自解压内核镜像,接下来开始启动系统,生成第一个用户进程------init。

          最后,int进程产生各种守护进程并最终产生getty进程,getty进程产生login进程,到现在就可以登陆系统了。

你可能感兴趣的:(工作,算法,shell,login,磁盘)