- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
关闭。这个问题需要更多focused .它目前不接受答案。
想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .
5年前关闭。
Improve this question
这可能是徒劳的,因为我知道编写操作系统非常复杂(尤其是自己)。
最佳答案
先说第一件事。阅读,阅读,阅读,阅读,阅读。在您希望实现自己的操作系统之前,您需要对操作系统的工作方式有一个深入的了解。
拿一本 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/
我是一名优秀的程序员,十分优秀!