Kernel 内核引导过程

Kernel 内核引导过程,kernel,Kernel,正如我们所知,一个操作系统需要一个c文件来执行。但是当我们引导内核时,首先它被解压,但解压时使用c函数。直到现在,系统中还没有操作系统。那么这个c代码是如何执行的呢 维基百科关于和(以及)的文章应该略述一下这个过程是如何工作的 基本上,当BIOS从磁盘的MBR加载引导加载程序(GRUB)时,GRUB会将一个小的ramdisk(initrd)加载到内存中,该内存已经是一个非常轻的操作系统,能够处理启动真正的操作系统所需的最基本的过程。不需要操作系统来运行C代码 让我澄清一下 当GCC编写一个程序时

正如我们所知,一个操作系统需要一个c文件来执行。但是当我们引导内核时,首先它被解压,但解压时使用c函数。直到现在,系统中还没有操作系统。那么这个c代码是如何执行的呢

维基百科关于和(以及)的文章应该略述一下这个过程是如何工作的


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

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

让我澄清一下

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


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

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

您要寻找的术语是“引导”…但是在引导过程中,如何在没有任何操作系统的情况下执行C文件?