是否可以在没有预先存在的操作系统的情况下开发操作系统?

Is it possible to develop an operating system without a pre-existing one?

我的意思是,如果我有一台 "empty" 台计算机(磁盘中没有任何内容),我可以开发一个程序或更具体地说是一个操作系统而不先安装一个预先存在的操作系统吗?

这个问题似乎是一个明显的否定,因为您需要一个 compiler/assembler,这些是程序,因此需要一个操作系统才能 运行。话虽这么说,我一直无法找到问题的最终答案,所以我在这里问。

我想这个问题可以简化为,是否可以 运行 某种准系统的文本编辑器和汇编器,只需要 bios/uefi?

编辑:更具体地说,我想知道固件是否带有允许这样做的命令,即使固件可以 运行 a text-editor/assembler 如果我需要另一个 computer/OS 来获得它们我马上回到开始的地方。

注意:我没有考虑这样做,这会不必要地增加制作 OS 已经很困难的任务的复杂性,我是只是想知道是否可以完成。

好吧,你必须提供机器代码才能这样做,所以在没有任何其他程序帮助的情况下,你可以希望你的 bios 有一些命令(我不知道)或者你采取高精密激光手写机器码

在现代硬盘上,后者对人类来说是不可能的,因为磁盘太精细了。我们快撑不住了。

此外,假设您可以将代码写入磁盘并且您的 bios 执行它,您仍然需要编写它。从头开始编写汇编级文本编辑器是一项令人难以置信的艰巨任务,因为您必须先为您的键盘和显示器编写驱动程序。 编辑: 好的,根据您的 BIOS,它可能已经提供了一些普通的驱动程序。可能缺少的是 Assembly-Compiler,没有它你只能写 0 和 1 来编程。

如果您正在寻找更令人满意的 DIY 电脑制作,我会推荐 Raspberry Pi

当然是。停下来想一想。我们使用当前的计算机对下一个计算机进行编程,并且上次和之前的时间都做了同样的事情。显然,在某个时候,我们到达了一个没有以前的计算机的地步 - 但显然它是制造出来的。

沿着历史小道走向一些最早的机器向我们展示了计算机在前面板上带有切换开关。有些将用于输入地址,而另一些可用于设置该地址处的字节值。使用它来编写引导加载程序,然后您可以从某种外部媒体中提取启动指令,而不是通过费力的手动输入。

也就是说 - 您实际上 不需要 需要操作系统才能 运行 程序。操作系统仅提供使程序员的生活更轻松的设施和例程 - 如硬件访问和内存管理,但这是实际需要而不是理论上的需要。实用,因为没有它,常用例程将需要包含在每个程序中,每个程序都需要了解并包含代码以应对不同的硬件配置 - OS 抽象了这些并使您免于拥有知道谁制作了您的视频卡、声卡等等

这里似乎是进入历史计算这个兔子洞的合理入口:https://en.wikipedia.org/wiki/Front_panel