我们知道操作系统需要一个c文件才能执行。但是当我们启动内核时,首先它被解压缩,但是为了解压缩,使用了c函数。直到现在系统中没有操作系统。那么这个c代码是如何执行的?
答案 0 :(得分:1)
引导加载程序负责解压缩并加载内核,然后将控制转移到未压缩和加载的内核。内核不像标准C可执行文件那样执行。因此,不要求OS是执行C代码所必需的。作为一个例子,有很多嵌入式系统没有操作系统,但执行了C代码。此外,引导加载程序也是用C语言编写的。执行的唯一要求是代码加载到内存中并将控制权转移给它。
答案 1 :(得分:0)
关于Bootmgr和Vmlinux的维基百科文章(以及initrd)应该略过过程的工作原理。
基本上,当BIOS从磁盘的MBR加载引导加载程序(GRUB)时,GRUB会将一个小的ramdisk(initrd)加载到内存中,该内存已经是一个非常轻松的操作系统,能够处理最基本的进程需要:启动真正的操作系统。
答案 2 :(得分:0)
您无需运行操作系统来运行C代码。
让我澄清一下。
当一个程序由GCC编译时,它生成一个Object代码,它作为汇编程序的输入,将该Object代码转换为可由机器直接执行的二进制代码。
但是如果GCC直接生成二进制代码,则不需要任何汇编程序或任何操作系统。因此二进制可以通过硬件指令直接执行。