car*_*995 10 c machine-code linux-kernel
我只是想知道,我们可以在没有操作系统的机器上执行程序吗?
此外,我听说Linux内核是用C语言编写的,内核是在启动过程中运行的,所以我只是想知道计算机如何在没有编译的情况下理解该语言?
fut*_*te7 10
简而言之,是的.
Linux仍然是一个机器代码中的软件程序,它运行在裸机上.虽然您可以在没有操作系统的情况下执行软件程序,但您的程序需要实现所有用于与计算机中各种硬件进行通信的代码 - 例如将数据输出到显示器,解释键盘输入/鼠标/网卡等(一些非常低级的东西是由计算机组件中的固件实现的,但其余的程序必须实现).这使得编写完全没有操作系统的内容非常耗时且困难.
mat*_*mes 10
来自维基百科:
首次打开计算机电源时,它在ROM或RAM中没有操作系统.计算机必须首先执行存储在ROM中的小程序以及访问非易失性设备所需的最少数据,操作系统程序和数据从该非易失性设备加载到RAM中.启动此加载到RAM序列的小程序称为引导加载程序,引导程序或引导加载程序.这个小型引导加载程序的唯一工作是加载其他数据和程序,然后从RAM执行.
计算机可以理解Linux内核,因为它已经被编译并存储(通常)在磁盘上.引导加载程序为计算机提供了足够的功能,可以将预编译的内核加载到内存中.
您不需要加载整个操作系统来在计算机上运行程序,您可以编写一个引导程序来启动您编译的程序.您将无法访问任何使程序员生活更轻松的操作系统调用.
linux内核可能用C语言编写.它仍然被编译为机器码.这是在启动期间执行的机器代码
您还可以编写在引导期间运行的软件.这样您就可以制作自己的自定义操作系统,或者制作自己的自定义软件,无需操作系统即可直接运行.请注意,操作系统为您提供了许多功能,您必须自己制作.诸如驱动程序支持,磁盘IO例程,网络堆栈,多任务处理和内存管理之类的事情,您必须自己完成.
最后:如果他们不得不重启机器以运行您的软件,我认为人们不会那么喜欢它.因此,我会选择编写一个操作系统...它可以让您和用户更轻松.