Yar*_*den 5 filesystems device-driver linux-device-driver linux-kernel
你好。
我试图理解文件系统(ext2/3 等)、设备驱动程序和设备文件之间的关系。
我将阐述我对每个术语的理解,然后提出我的问题。
据我了解,设备驱动程序是处理I/O和访问某些设备(鼠标、闪存等)的逻辑的内核端代码,它需要实现几个功能(例如打开、读取、等)并在注册设备时将它们分配给一些函数指针。
设备文件通常位于其中,/dev通过分配给该文件的主要值和次要值用作设备驱动程序的接口。
我不认为我完全理解这个概念,文件系统应该处理 I/O 和对物理存储在驱动器上的文件的一般访问,但这听起来像一个设备驱动程序,所以 - 希望在这里提供更多信息
例如,如果我要将/dev/sdb1我的备份 SSD 挂载到某个挂载点,例如/mnt/temp,/dev/sdb1将是设备文件,文件系统类型将是 ext4。现在,当我cd使用/mnt/temp时ls,open应该调用设备驱动程序实现的方法。
open在我讨论的场景中如何调用适当的函数?感谢您的帮助。
这是一个好问题,但是很肉!:)
关于你的问题 2.,这里有一些关于什么open是/做什么的信息。open是一个 libc 调用 - 它是 POSIX 系统必须实现的 C 函数。现在基本上每个发行版都使用名为 glibc(GNU libc 实现)的 libc 版本,但特别是在 RAM 或存储资源有限的嵌入式设备上,有时您仍然会看到人们使用其他 libc 实现。这是glibc 的联机帮助页open。open通过尝试打开给定路径名的文件来工作 - 它与文件系统通信。对于open底层存储层来说,文件系统实现方式的差异并不重要。因此,现在写的问题 2 的措辞(“open在我讨论的场景中如何调用适当的函数?”)有点偏离基础:open每个文件系统只有一个函数,而不是实现多个函数。
| 归档时间: |
|
| 查看次数: |
1078 次 |
| 最近记录: |