2

作为一个课程外的项目,我目前正在开发一个内核,以试图更好地理解实际操作系统的所有方面。到目前为止,我已经完成了一个平面物理内存模型的设置,它支持分页和基本中断(接下来可能是键盘和触控板/鼠标)。我认为向前迈出的一步是实现一个文件系统,我对 ext2 很感兴趣。我环顾四周,即使在 SO 上,但没有任何明确的答案可以回答我的问题:

  1. 是否可以编写驱动程序来访问 C 中的 ext2 文件系统,还是我需要降低?
  2. 如果我打算从 USB 设备访问文件系统,我假设我需要首先运行 USB 设备驱动程序。对此的任何帮助将不胜感激。
  3. 我知道用于检测文件系统的代码已经在 MINIX 和其他内核上可用,但我真正想知道的是,如果我想构建一个自定义的虽然简单的文件系统,我该怎么做?我也在考虑这种可能性。

如果问题和细节听起来有点无知,我深表歉意,但我仍在学习过程中。

谢谢 :)

4

1 回答 1

1

我会尝试给你一些提示/提示 - 一个明确的答案并不那么简单:

  1. 用 C 编写的 ext2 文件系统只是 C。C 只是一种编程语言——你可以使用 C++、普通汇编或其他一些语言(一些操作系统使用 D)——但不是“托管”语言等。但它是重要的是您对这种语言有坚如磐石的理解。在我看来,程序集是必须的(看看操作系统中的调度程序 -> 普通程序集)

  2. 您真的要编写 USB 驱动程序吗?它“不仅仅是”一个简单的 USB 驱动程序(抽象层)。为什么是 USB 驱动程序而不是软盘或 CD 驱动程序(相信我 - 32 位保护模式下的软盘驱动程序并不难)?

  3. 请专注于您的项目。当然 Linux(早期版本)和 Minix 有示例代码,但要注意设计结构(Monolithic/Microkernel 或混合内核)——不要混合使用,编写自己的代码。

请一步一个脚印。您编写了一个基本的 IRQ 处理程序,并且计划编写键盘/鼠标驱动程序 - 编写键盘驱动程序!不要梦想加载和执行文件(Rom 不是一天建成的)。

You have to read documentations, for example the Intel manuals or other "books". A very popular forum is osdev.org - take a look at the wiki. As twalberg said, it's a very huge module - stay focused on the main parts of your operating system.

I know, this is not the answer to your question - but it's important not to go in the wrong direction and dream of a fancy UI or something like this ;)

osdev.org forum
osdev.org wiki
Intel manuals

And a few other books in my book shelf can you find here (Tanenbaum, Silberschatz with Peter Galvin - great books!):

Books

于 2013-02-19T21:48:47.940 回答