背景
你好。
我试图了解文件系统(ext2 2/3等)、设备驱动程序和设备文件之间的关系。
我会列出我对每个学期的理解,然后再提出我的问题。
设备驱动程序
据我所知,设备驱动程序将是处理I/O和访问某个设备(鼠标、闪存等)的逻辑的内核端代码,它需要实现几个功能(如打开、读取等),并在注册设备时将它们分配给某些函数指针。
设备文件
设备文件通常位于/dev中,通过分配给该文件的主值和次要值作为设备驱动程序的接口。
文件系统
我想我还不完全理解这个概念,文件系统应该处理I/O和对存储在驱动器上的文件的一般访问,但是这听起来像一个设备驱动程序,所以希望在这里提供更多的信息。
场景
例如,如果我要将/dev/sdb1 (我的备份ssd )挂载到某个挂载点,比如/mnt/temp - /dev/sdb1将是设备文件,而文件系统类型将是ext4。现在,当我从cd到/mnt/temp并使用ls时,应该调用设备驱动程序实现的open方法。
我的要求/问题
open函数?谢谢你的帮助。
发布于 2021-04-09 15:20:43
这是一个很好的问题,但很有分量!:)
关于你的问题2,这是关于open是什么/做什么的一些信息。open是一个libc调用--它是POSIX系统必须实现的C函数。现在的每个发行版基本上都使用名为glibc (glibc实现)的libc发行版,但特别是在RAM或存储资源有限的嵌入式设备上,有时仍然会看到其他libc实现的使用人员。下面是是glibc open的手册。open的工作方式是尝试在给定的路径名下打开文件--它与文件系统对话。对于open来说,文件系统在底层存储层实现方式上的差异并不重要。那么,现在编写的问题2的措辞(“如何在我讨论的场景中调用适当的open函数?”)有点离题:每个文件系统只有一个open函数,而不是多个函数。
https://stackoverflow.com/questions/67006403
复制相似问题