这可能听起来很无聊,特别是当我(正如你猜测的那样)尝试编写操作系统时。目前我一直试图建立一个文件系统。
我想要的是一个与Linux Ubuntu类似的文件系统,它是EXT4(至少是我的)。我想尝试也可以用C语言写。
我有什么想法可以解决这个问题吗?和/或你可能找到的任何可能对我有帮助的教程(我尝试过没有运气的搜索):L
提前致谢!
杰米。
答案 0 :(得分:4)
非常聪明且经验丰富的人已经广泛研究过这个问题,这些错误会影响用户的数据。计算层中的错误(例如内核崩溃)与存储层中的错误之间的区别在于,默默地吃掉用户的数据非常糟糕 - 比在电子表格中提供错误答案更糟糕(excel在保留磁盘上的数据时(或频繁地自动保存可以轻松减轻这种情况),或者间歇性地进行sigfaulting。
首先研究更简单的设计,比如旧操作系统书籍[1]中的minix文件系统(Linus Torvalds在二十年前开始使用的那个)。
像其他人所说的那样,没有日志,扩展区或ACL的ext2是比ext4更好的起点。它的源代码在Linux内核和e2fsprogs用户空间工具包[2]中。格式记录良好。
至于教程,请考虑谁制作这些内容以及他们为此花费精力完成此任务的原因。教程通常由平台上的利益相关者制作,以引入新人使用该平台进行开发,利用网络效应来发展平台,并从更大的生态系统中已经建立的参与者中获利。
您是否看到了增加实施自己的不兼容错误[3]文件系统的人数的商业模式?只有你出售软件工程学位。因此,Microsoft仅编写有关如何使用 NTFS的教程,而不是如何实现它。 Sun和ZFS,Red Hat和Google的EXT2 / 3/4,SGI和XFS,IBM和JFS,Oracle和BTRFS等等相同。
如果你想要教育而不是培训,你需要阅读书籍并研究他们在制作中使用的智能人物代码,而不是寻找教程。
答案 1 :(得分:0)
尝试查看现有的实现,例如Linux中的实现。