当前位置: 技术问答>linux和unix
请问一个问题
来源: 互联网 发布时间:2016-10-03
本文导语: 在《UNIX环境高级编程》中的3.10文件共享一节中说, v节点包含了文件类型和对此文件进行各种操作的函数的指针。请问这个对此文件进行各种操作的函数的指针应该怎样理解?能否讲述一下v节点的结构,谢谢! ...
在《UNIX环境高级编程》中的3.10文件共享一节中说,
v节点包含了文件类型和对此文件进行各种操作的函数的指针。请问这个对此文件进行各种操作的函数的指针应该怎样理解?能否讲述一下v节点的结构,谢谢!
v节点包含了文件类型和对此文件进行各种操作的函数的指针。请问这个对此文件进行各种操作的函数的指针应该怎样理解?能否讲述一下v节点的结构,谢谢!
|
V节点中的对此文件进行各种操作的函数指针是指open(),read(),write(),close(),ioctl()......等函数的入口地址。
写过驱动程序的都知道,Linux的设备驱动程序对于所有设备基本上都要实现这些函数。然后将函数指针放到一个结构中。
系统在打开这个文件/设备时,就会把这些函数指针放到v节点中。
写过驱动程序的都知道,Linux的设备驱动程序对于所有设备基本上都要实现这些函数。然后将函数指针放到一个结构中。
系统在打开这个文件/设备时,就会把这些函数指针放到v节点中。
|
应该说每个文件描述符都对应一个v节点。v节点是在每次open的时候创建的。
|
哦,我前面讲错了。一个文件对应一个v节点。我搞成文件表了。那么V节点应该是在创建文件的时候产生的。
|
参考
http://blog.csdn.net/feiyinzilgd/archive/2010/05/19/5609157.aspx
最终都落实到i节点上去了
http://blog.csdn.net/feiyinzilgd/archive/2010/05/19/5609157.aspx
最终都落实到i节点上去了
|
是的。内核中是存在这些函数指针的。所有的驱动程序都要定义这些函数指针。
当创建一个文件时,系统根据创建文件的类型,找到相应的驱动程序。然后把驱动程序中定义的这些函数指针放到V节点中。
当创建一个文件时,系统根据创建文件的类型,找到相应的驱动程序。然后把驱动程序中定义的这些函数指针放到V节点中。
|
打开一个文件的时候,有2个类型要素,
1是文件所在文件系统的文件系统类型,如ext3, ext4
2是文件本身的类型,如普通文件,管道文件,
根据1和2,选择相应的v节点操作函数.
1是文件所在文件系统的文件系统类型,如ext3, ext4
2是文件本身的类型,如普通文件,管道文件,
根据1和2,选择相应的v节点操作函数.
|
查了下Linux下的文件系统的实现。Linux由VFS(虚拟文件系统)直接管理i节点。同时又仔细看了《UNIX环境高级编程》的43页的说明,Sun称与文件系统类型无关的i节点部分为v节点。按照这个定义,Linux中由VFS管理的i节点与文件系统类型无关,所以也可以称为v节点。
不过,大家一般讨论都称为i节点。
不过,大家一般讨论都称为i节点。