【问题标题】:Is it possible to develop an operating system without a pre-existing one?是否可以在没有预先存在的操作系统的情况下开发操作系统?
【发布时间】:2017-04-17 03:46:33
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 取决于硬件。在具有 ROM Basic 的原始 IBM-PC 中,如果没有可启动媒体,它会将您带入带有基本编辑器的 Basic。从理论上讲,您可以通过插入内存然后跳转到该代码来编写操作系统的启动代码。
  • 考虑一下... 显然,在过去的某个时候,确实有人必须这样做。但是,新硬件平台的操作系统通常是在现有平台上创建的,并针对新平台进行交叉编译。

标签: operating-system bios osdev firmware uefi


【解决方案1】:

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

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

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

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

【讨论】:

  • 我知道这在历史上是可能的。我想知道今天是否可以。即使我可以在没有操作系统的情况下运行程序,包括制作像文本编辑器/汇编器(十六进制编辑器?)这样的新操作系统的程序,如果这些程序没有与固件一起打包,这一点也是没有意义的。如果我需要在另一台计算机上制作或下载这些程序,我会回到我开始的地方。我想知道如果给一个新制造的现代计算机空硬盘,固件随附的东西是否足以让整个过程继续进行。
  • 我不知道有任何现代系统可以实现这一点。我怀疑 Michael Petch 的评论提到了促进这一点的最新示例之一,如果不是 的话。
【解决方案2】:

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

在现代硬盘上,后者对人类来说是不可能的,因为磁盘非常精细。我们不能保持足够的静止。

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

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

【讨论】:

  • 其实固件是否提供允许编程的命令正是我想知道的。也许我应该编辑我的问题。关于我的问题,树莓派的情况会有什么不同。 pi中的固件不是比bios更有限吗?我希望如果它不能在 bios 中完成,它不应该在 pi 中完成,我错了吗?
  • 嗯,我猜这取决于固件?我提到了 Raspberry Pi,因为它是我能想到的最接近 DIY 计算机制作的产品。我想,这比用激光照射硬盘要好。我对 BIOS 固件了解得不够详细,抱歉。
猜你喜欢
  • 2018-03-22
  • 1970-01-01
  • 2010-10-26
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
  • 2011-10-26
  • 2011-09-12
相关资源
最近更新 更多