在用户空间中编写文件系统驱动程序比在内核空间中编写更容易吗?

Jac*_*ack 9 linux filesystems kernel ntfs

我将使用Linux NTFS驱动程序作为示例.

Linux内核NTFS驱动程序在内核中只有非常有限的写入支持,并且在5年后仍然被认为是实验性的.

同一个开发团队创建了ntfsmount用户空间驱动程序,它具有几乎完美的写入支持.

同样,由不同团队编写的NTFS-3G项目也具有几乎完美的写入支持.

为什么内核驱动器需要更长时间?开发难度更大吗?

说已经存在一个像样的用户空间应用程序并不是内核驱动程序不被强制的原因.

注意:请勿将其迁移到superuser.com.从编程的角度来看,我想要一个编程重复的答案,而不是一个实际的用途答案.如果问题不适合SO,请告诉我为什么我可以这样编辑它.

goe*_*son 5

我不知道NTFS linux驱动程序开发的内部故事,但我可以想象一些会使用户空间开发比内核空间开发更快的事情:

  • 更简单的API - 用户域库(例如内存管理)提供的更高级别的抽象肯定会简化开发
  • 更容易调试 - 调试用户空间进程比调试内核更容易
  • 进程隔离 - 这是我要说的一件事,它负责在用户空间中加快开发速度.在最糟糕的情况下,您的用户空间文件系统驱动程序会导致损坏的文件系统和驱动程序进程死亡,而在内核空间中,它可能会导致完整的系统崩溃.这导致更快的调试周期,这导致错误处理更快更快的整体开发.