gpt4 book ai didi

c - 如何在旧台式计算机上构建小型操作系统?

转载 作者:太空狗 更新时间:2023-10-29 16:14:42 25 4
gpt4 key购买 nike

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

5年前关闭。



Improve this question




这可能是徒劳的,因为我知道编写操作系统非常复杂(尤其是自己)。

  • 我不期望构建下一个 linux 或 windows。
  • 我知道这会很糟糕,而且有问题,而且行不通,但这很好。

  • 我想用汇编、C 和(某些)C++ 自己编写所有内容。

    这是一个 future 的项目,因为我目前忙于其他一些事情,没有时间立即,但我想我现在会问它,所以也许我可以得到很多答案,而且它可以建立并成为这种方法的有用资源(我所看到的其他一切都涉及构建 minix、使用现有的引导加载程序、在虚拟 bootstrap 中构建它等)。

    我想用显示器、键盘和鼠标设置我的旧台式机之一,然后开始在空白硬盘上工作。

    我想学习如何编写自己的引导加载程序(我已经找到了很多关于此的资源,但为了完整起见,请仍然添加一些好的)、我自己的 USB 驱动程序(如果有必要)、CD 驱动程序(如果有必要) ) 等。一切,从头开始。
  • 怎么把代码放到电脑上?用软盘做最好吗?大多数计算机都可以通过 USB 内存棒完成吗?
  • 我需要什么驱动程序,你能推荐任何构建这些驱动程序的引用吗?
  • 在启动顺序之后——然后呢?我如何进入保护模式等
  • 如何在没有操作系统帮助的情况下管理内存?我只使用我想要的任何地址吗?不需要初始化?
  • 毫无疑问,我会遇到什么让我感到困惑的事情?
  • 我怎样才能使它成为命令行操作系统和图形操作系统?
  • 图形操作系统建立在什么之上?比如,我将如何做一些类似的事情,一个命令行,一个字体,顶部有一张图片?
  • 我在哪里可以阅读有关设置多任务环境的信息? (即,有两个类似图形的命令行并排运行)。
  • 我将如何设置一种窗口系统?设置简单的多任务处理后,如何在屏幕上显示图形?

  • 相信我,我明白这是一个非常复杂的项目,我可能永远不会完成它或在它上面写任何有用的东西。

    还有很多我没有提到的部分,如果你想到任何,也可以随意添加。

    请为每个答案添加一个“主题”——例如,USB 驱动程序,然后可能是资源列表、需要注意的事项等。

    另外,请不要建议构建另一个 O/S 或预先存在的代码。我知道我会阅读很多预先存在的代码(例如 linux 内核、示例资源、现有驱动程序等),但最终我想自己编写所有代码。我知道我应该建立其他东西,如果我改变主意并走那条路,我可以阅读关于 SO 的许多其他问题。但这就是从头开始做整件事。

    有关如何使其图形化的任何建议?不同的视频模式以及如何使用它们等?

    最佳答案

    先说第一件事。阅读,阅读,阅读,阅读,阅读。在您希望实现自己的操作系统之前,您需要对操作系统的工作方式有一个深入的了解。

    拿一本 Andrew Tanenbaum 关于操作系统的书。这是我们在大学操作系统课上使用的:

    Modern Operating Systems PDF

    Modern Operating Systems on Amazon

    尽管封面很荒谬,但读起来很棒,尤其是对于教科书而言。 Tanenbaum 确实是该领域的专家,他对操作系统如何在引擎盖下工作的解释清晰易懂。这本书主要是理论,但我相信他也有一本书讨论了更多的实现。不过,我从来没有读过它,所以我不能评论它。

    这应该可以帮助您专注于进程管理、内存管理、文件系统以及您的操作系统内核需要做的所有其他事情,以使其进入可启动状态。从那时起,它基本上是为您需要支持的硬件编写设备驱动程序的问题,并提供 C 库函数的实现来使内核调用诸如打开文件和设备、读取和写入、在进程之间传递消息等.

    阅读 x86 程序集(假设您正在为 x86 机器设计它)。这应该可以回答您关于在处理器操作模式之间切换的许多问题。

    如果您有任何电子知识,那么开始为具有丰富文档的嵌入式设备编写操作系统可能会更容易,因为它通常比 x86 PC 更简单。我也一直想编写自己的操作系统,我从为 This Development Board 编写微内核嵌入式操作系统开始。来自 Digilent。它可以运行 Xilinx 的软核 MicroBlaze 处理器,该处理器具有非常详尽的文档。它还有一些 RAM、闪存数据存储、LED、开关、按钮、VGA 输出等。有很多东西可以用来编写简单的驱动程序。

    嵌入式设备的好处之一还在于您可以避免长时间编写 VGA 驱动程序。就我而言,Digilent 开发板有一个板载 UART,因此我可以有效地使用串行输出作为我的控制台来启动整个过程并以最小的麻烦启动到命令行。

    只要确保你选择的目标都有一个现成的和经过良好测试的编译器。你做不是 想同时编写操作系统和编译器。

    关于c - 如何在旧台式计算机上构建小型操作系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1224617/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com