2012-08-10 77 views
-1

正如我们所知,OS需要一个c文件来执行。但是,当我们启动一个内核时,首先它被解压缩,但是用于解压一个c函数。直到现在系统中没有操作系统。那么这个c代码是如何执行的?内核启动程序

+0

您正在寻找的术语是'bootstrapping'... – ChristopheD 2012-08-10 11:53:41

回答

0

关于BootmgrVmlinux(以及initrd)的维基百科文章应该略述该过程的工作原理。

基本上,当BIOS从磁盘的MBR加载引导加载程序(GRUB)时,GRUB会将一个小的ramdisk(initrd)加载到已经是非常轻量级操作系统的内存中,该系统能够处理最基本的进程它需要:启动真正的操作系统。

+0

但是在启动过程中如何在没有任何操作系统的情况下执行C文件? – user1590145 2012-08-10 12:32:45

0

您不需要操作系统来运行C代码。

让我澄清。

当一个程序由GCC编写时,它生成一个对象代码,它充当汇编器的输入,它将该对象代码转换为可由机器直接执行的二进制代码。

但是,如果GCC直接生成二进制代码,他们不需要任何汇编程序或任何操作系统。因此二进制可以通过指令直接执行硬件指令。

1

引导加载程序负责解压缩并加载内核,然后将控制转移到未压缩和加载的内核。内核不像标准C可执行文件那样执行。因此,不需要OS执行C代码。作为一个例子,有很多嵌入式系统没有OS,但是C代码被执行。此外,引导加载程序也用C语言编写。执行的唯一要求是将代码加载到内存中,并将控制权转交给它。