【问题标题】:questions about writing an operating system [closed]关于编写操作系统的问题[关闭]
【发布时间】:2011-11-19 08:46:40
【问题描述】:

我有一些关于编写操作系统的非常具体的问题,希望能得到解答:

  1. 如果我使用 GRUB 作为引导加载程序,我需要编写多少汇编代码来加载最小的 C 内核?

  2. 我的内核将用 C 编写,它会加载一个我用 C++ 编写的命令行 shell,它不会进行任何 API 调用,只有标准库调用,我是否需要将整个 C++ 标准库重写为这样做?

  3. 我可以用 C++ 编写视频、键盘和软盘驱动程序吗?

  4. GCC 和 G++ 输出 16 位实模式代码吗?

  5. 我可以在 Windows 上使用 Mingw 编写这一切,还是必须在 Linux 上编写?

  6. 我是否需要处于实模式才能直接写入视频内存?

如果有人能回答我的问题,我将非常感激

【问题讨论】:

  • 哇!一个完整的操作系统?看起来我们在这里谈论的是几年的努力!
  • wiki.osdev.org/Main_Page 为您解答所有问题。
  • @Matt 我不同意这一点。 linux 发行版比启动和运行一个微不足道的内核所需的复杂几个数量级。就个人而言,查看 Linux 0.1 源代码会更有帮助(这也是很好的历史课)。
  • @AlokSave:作为一个大学项目,我们在 6 个月内实施了一个,在说出这样(令人沮丧的)笼统声明之前,人们应该考虑“如何大 i> 有问题的操作系统是?” :)

标签: c++ c assembly operating-system real-mode


【解决方案1】:

1:您应该只需要少量的程序集来处理引导过程并加载 C 代码。我认为不应该超过 20-30 行。

2-4:我还没有真正将 C++ 与 OS 开发一起使用,但我想我记得读过它需要更多的工作才能让它在某个地方运行。抱歉,我无法提供更多帮助。

5:你“可以”使用 MinGW 做到这一点,但根据我的经验,它通常会使事情复杂化。我永远无法真正让 Windows 环境正常工作,但我也毫不费力地放弃了。

编辑:这是一些示例程序集的链接。这就是我不得不使用的全部: http://www.jamesmolloy.co.uk/tutorial_html/2.-Genesis.html

如果您对这类东西完全感兴趣,该网站的其余部分也是一个很好的教程。

【讨论】:

  • 只需添加几件事。 4是一个简单的“不”。很少有编译器仍然可以生成 16 位代码。 6也是一个“不”。您可以从任何模式写入视频内存,只要它映射到您的虚拟内存。
  • 请注意,本教程的某些部分有一些细微的错误,因此请注意那里(例如,假设在第一次使用之前清除了任意内存)。虽然仍然是一个很好的教程 - 我真的应该在一段时间内写给作者关于这些问题的文章。但是任何遵循本教程并试图理解代码的人都应该注意到它们。
猜你喜欢
  • 2013-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-04
  • 1970-01-01
  • 2012-10-07
  • 2011-10-31
  • 2014-01-23
相关资源
最近更新 更多