正如我们所知,OS需要一个c文件来执行。但是,当我们启动一个内核时,首先它被解压缩,但是用于解压一个c函数。直到现在系统中没有操作系统。那么这个c代码是如何执行的?内核启动程序
Q
内核启动程序
-1
A
回答
0
关于Bootmgr和Vmlinux(以及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语言编写。执行的唯一要求是将代码加载到内存中,并将控制权转交给它。
相关问题
- 1. 从我的启动引导程序启动Linux内核
- 2. 如何在程序内部的OpenCL中启动多个内核?
- 3. CUDA内核不启动
- 4. ARM S3C6410内核启动
- 5. 系统启动后直接从linux内核运行程序
- 6. ipython:在应用程序中启动内核和kernelmanager
- 7. 如何从Windows内核模式启动用户模式程序
- 8. Linux内核启动在Uncompressing Linux中停止...好吧,启动内核
- 9. 无法在Docker Toolbox内启动内核
- 10. HTTP.SYS内核模式驱动程序
- 11. 内核驱动程序签名
- 12. Windows 7内核驱动程序签名
- 13. 内核驱动程序I2C开发
- 14. Linux I2C内核驱动程序
- 15. 什么是Windows内核驱动程序?
- 16. 程序如何通信 - 微内核单片内核exo内核
- 17. Linux内核如何知道在启动时加载哪些驱动程序?
- 18. 启动时内核模块在Linux内核中的状态
- 19. 内核启动失败内核参数的原因
- 20. Angstrom内核 - 卡在“正在启动内核...”
- 21. Ipython内核重启
- 22. Linux内核中的nr_cpus启动参数
- 23. 用超时启动CUDA内核
- 24. 如何编译和启动Android内核
- 25. 以内核模式启动服务(Vista)
- 26. 定时Linux内核启动时优化
- 27. 在启动时调试Linux内核
- 28. 内核启动错误 - symfony netbeans
- 29. 了解此CUDA内核启动参数
- 30. 如何在Jupyter中启动IPython内核?
您正在寻找的术语是'bootstrapping'... – ChristopheD 2012-08-10 11:53:41