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

时间:2016-12-02 09:25:37

标签: operating-system bios osdev firmware uefi

我的意思是,如果我有一个"空"计算机(磁盘中没有任何东西)我可以在没有先安装预先存在的程序的情况下开发程序或更具体的操作系统吗?

这个问题似乎很明显,因为你需要一个编译器/汇编程序,这些都是程序,因此需要运行一个操作系统。话虽如此,我一直无法找到问题的确凿答案,所以我在这里问。

我想问题可以简化为,是否有可能只使用bios / uefi运行某种准系统文本编辑器和汇编程序?

编辑:更具体地说,我想知道固件是否带有允许这样做的命令,即使固件可以运行文本编辑器/汇编器,如果我需要另一台计算机/操作系统来获取它们我回到了我开始的地方。

注意:我没有考虑这样做,这会不必要地增加制作操作系统的艰巨任务的复杂性,我只是想知道它是否可以完成。

2 个答案:

答案 0 :(得分:1)

嗯,你必须提供这样做的机器代码,所以没有任何其他程序的帮助你可以希望你的BIOS有一些命令(我不知道)或你采取高精度激光并手动编写机器代码。

在现代硬盘上,后者对人类来说是不可能的,因为磁盘要好得多。我们不能保持足够的。

另外,假设您可以将代码放到磁盘上并且您的BIOS执行它,您仍然需要编写它。从头开始组装级别的文本编辑器是一项令人难以置信的艰巨任务,因为您必须首先为键盘编写驱动程序并进行监视。 编辑:好的,根据您的BIOS,它可能已经提供了一些平凡的驱动程序。可能缺少的是Assembly-Compiler,如果没有它,你可以只编写0和1进行编程。

如果您正在寻找更多令人满意的DIY电脑制作方法,我建议Raspberry Pi

答案 1 :(得分:1)

当然是。停下来思考一下。我们使用当前的计算机对下一个计算机进行编程,并在上次和之前的时间做同样的事情。显然,在某些时候,我们已经达到了以前没有计算机的程度 - 但显然已经完成了。

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

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

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