自定义内核:实现文件系统

时间:2013-02-19 20:14:46

标签: c operating-system filesystems kernel ext2

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

  1. 是否可以编写驱动程序来访问C中的ext2文件系统,还是需要降低?
  2. 如果我计划从USB设备访问文件系统,我假设我需要首先运行USB设备驱动程序。任何有关这方面的帮助将不胜感激。
  3. 我知道用于检测文件系统的代码已经可以在MINIX和其他内核上使用了,但我真正想知道的是,如果我想构建一个自定义虽然简单的文件系统,我该怎么办呢?我也在考虑这种可能性。
  4. 如果问题和细节听起来有点无知,我仍然道歉,但我还在学习过程中。

    谢谢:)

1 个答案:

答案 0 :(得分:1)

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

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

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

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

  4. 请一步一步地完成。你写了一个基本的IRQ处理,计划是写一个键盘/鼠标驱动程序 - 编写键盘驱动程序!不要梦想加载和执行文件(Rom不是在一天内构建的)。

    您必须阅读文档,例如英特尔手册或其他“书籍”。一个非常受欢迎的论坛是osdev.org - 看一下wiki。正如twalberg所说,这是一个非常庞大的模块 - 专注于操作系统的主要部分。

    我知道,这不是你问题的答案 - 但重要的是不要走错方向,梦想有一个奇特的用户界面或类似的东西;)

    osdev.org forum
    osdev.org wiki
    Intel manuals

    你可以在这里找到我书架上的其他几本书(Tanenbaum,Silberschatz和Peter Galvin - 很棒的书!):

    Books