【发布时间】:2013-02-04 16:01:15
【问题描述】:
作为一个课程外的项目,我目前正在开发一个内核,以试图更好地理解实际操作系统的所有方面。到目前为止,我已经完成了一个平面物理内存模型的设置,它支持分页和基本中断(接下来可能是键盘和触控板/鼠标)。我认为向前迈出的一步是实现一个文件系统,我对 ext2 很感兴趣。我环顾四周,即使在 SO 上,但没有任何明确的答案可以回答我的问题:
- 是否可以编写驱动程序来访问 C 中的 ext2 文件系统,还是我需要降低?
- 如果我打算从 USB 设备访问文件系统,我假设我需要首先运行 USB 设备驱动程序。对此的任何帮助将不胜感激。
- 我知道用于检测文件系统的代码已经在 MINIX 和其他内核上可用,但我真正想知道的是,如果我想构建一个自定义但简单的文件系统,我该怎么做?我也在考虑这种可能性。
如果问题和细节听起来有点无知,我深表歉意,但我仍在学习过程中。
谢谢:)
【问题讨论】:
-
所有这一切都在你可以在答案框中输入的几百个字符中......仅在 Linux 内核中的
ext2驱动程序就超过了 8000 行代码...... -
你写,你开发内核?您创建一个完整的操作系统还是只创建一个内核?
-
我不太明白你在说什么,twalberg。我理解它的复杂性,这就是为什么我什至要求编写和检测更简单的文件系统的指南。 Albertus,现在我试图不区分操作系统和内核。我可以肯定地说,“用户空间”一无所有。我不是在寻找明确的代码,而是在寻找整个过程的抽象启动。
-
我的意思是,您对这种论坛提出了很多要求。但是为了更准确地回答您的问题 - 1)是的 - 请参阅 Linux 内核的实现,它是用 C 语言编写的,2)是的 - 再次,Linux(或任何其他开源操作系统内核)有 USB 驱动程序,但这比@987654322 还要大@,以及 3) 查看其他实现以了解它是如何完成的。
-
^非常感谢。我最初的想法是从头开始构建所有东西,到目前为止,我已经管理了自定义系统调用,以适应打印到屏幕和扫描的调整。我希望得到我自己的 open()、close()、read() 和 write() 变体,但考虑到我的时间框架,这似乎有点过头了。
标签: c operating-system filesystems kernel ext2