可启动程序 我是一个前端开发人员,希望能进入其他语言,如java或C++。我有一个计划的想法,只是在寻找一些问题的答案。我想做的是构建一个程序并直接引导到该程序。例如,我有一台旧电脑,我把硬盘擦干净。所以他们现在什么都没有。甚至连操作系统都没有。我想建立一个程序,我可以安装到硬盘驱动器,将引导直接进入程序一旦启动。这算是操作系统吗
你必须有一个操作系统,因此你的程序就是操作系统(或者你必须使用另一个并为此编写程序)。在C++中当然是可能的,但是在java中编写java操作系统是不可能的。首先,Java是正确的。在Java中,如果没有大量的工具构建,就不可能做到这一点。Java根本不适合这个任务 <>你可以用C++或C来做。你正在寻找的搜索词是操作系统开发。从技术上讲,这可能不会被视为开发操作系统,因为它不会运行其他程序,但有关如何通过启动过程并建立最小环境的信息将最容易在操作系统开发类别中找到。一些合理的起始资源可在以下位置找到可启动程序 我是一个前端开发人员,希望能进入其他语言,如java或C++。我有一个计划的想法,只是在寻找一些问题的答案。我想做的是构建一个程序并直接引导到该程序。例如,我有一台旧电脑,我把硬盘擦干净。所以他们现在什么都没有。甚至连操作系统都没有。我想建立一个程序,我可以安装到硬盘驱动器,将引导直接进入程序一旦启动。这算是操作系统吗,java,c++,bootloader,Java,C++,Bootloader,你必须有一个操作系统,因此你的程序就是操作系统(或者你必须使用另一个并为此编写程序)。在C++中当然是可能的,但是在java中编写java操作系统是不可能的。首先,Java是正确的。在Java中,如果没有大量的工具构建,就不可能做到这一点。Java根本不适合这个任务 你可以用C++或C来做。你正在寻找的搜索词是操作系统开发。从技术上讲,这可能不会被视为开发操作系统,因为它不会运行其他程序,但有关如何通过启动过程并建立最小环境的信息将最容易在操作系统开发类别中找到。一些合理的起始资源可在以下位置找
或者,您可以使用现有的小型开源操作系统,并在启动序列完成后修改它的功能。如果您的程序打算做的不仅仅是在文本模式下使用键盘和屏幕,还需要设备驱动程序。因此,根据项目的不同,更改现有操作系统可能是最简单的方法,因为您不需要为任何要使用的设备编写自己的设备驱动程序。不,您不需要。除非你想花很多年的时间,为你的图形卡、硬盘控制器、usb控制器、dma控制器和所有其他计算机硬件编写驱动程序
您需要的是一个最小的操作系统,它只包括内核和一个运行时库,并且在启动时启动您的程序而不启动其他程序。最低限度的Linux,如LinuxfromScratch或bsd,将是一个很好的起点。除非您想写一些东西(例如)或说一个。你可能有资格成为一名教师。您的申请可能符合申请资格。在我看来,在现代环境中,这完全取决于它为托管应用程序提供了多少功能。我不确定在现代计算机中,这样的东西是否会被视为一个操作系统(例如,没有先发制人的任务调度或GUI)(我不想以任何方式论证这一点)。首先,你需要决定你的程序需要什么。我的意思是应该在
保护模式下运行
,或者你的例程很小,所以在进入保护模式(即真实模式
)之前运行就足够了。
在这里你可以做三件事
这在java中是不可能的。因为jvm不会为您准备好。
现在实际上:有很多微型操作系统可用,使用其中一个,并根据需要进行修改。用于获取可用内容的完整列表。没有环境,Java无法运行。如果你想在没有操作系统的机器上运行你的程序,Java是一个错误的选择。 C++程序可以在没有OS的情况下运行,但在C++中编写可引导程序是很困难的。
如果你想编写你自己的可引导程序,你应该使用汇编进行引导和加载功能,并具备一些低级别使用硬件的知识。在没有运行环境的情况下,这个程序如何运行?编写一个引导加载程序并引导你的程序,显然你不能运行Java,因为它在JVM上运行,但你可以使用c的子集(无图书馆)。您必须编写自己的库。如果您将程序设计为在实模式下运行,您可以使用bios函数进行简单的输入/输出。看看这个。另一方面,您可以始终使用裸机操作系统。@OldProgrammer:一次一条指令?说真的,这并不罕见。您的洗碗机可能就是这样工作的。@mAlters-我意识到我不认为OP想从sratch编写引导加载程序。这是我的观点。很好的图表,它从哪里来?@MikeG it's avilale:这里有引导过程的详细描述。注意:这有点特定于x86。ARM不是这样工作的。例如,没有BIOS,也没有“真实模式”。