首页 百科知识 文件系统信息

文件系统信息

时间:2024-10-09 百科知识 版权反馈
【摘要】:task_struct结构保存了进程与文件系统相关的信息。pwd从Unix命令pwd中派生出来,用来显示当前工作目录。files_struct包含进程当前正在使用的所有文件的信息。这种对界面的抽象非常有用,允许Linux系统支持各种各样的文件类型。Linux进程启动的时候,会有3个文件描述符已经打开,它们是标准输入、标准输出和标准错误,通常都是从父进程中继承来的。所有的文件访问都要使用系统调用,它们使用或者返回文件描述符。

2.2.7 文件系统信息

task_struct结构保存了进程与文件系统相关的信息。进程可以自由地打开或关闭文件。其中*fs指针指向进程的可执行映像所在的文件系统;*files指针指向进程打开的文件。

图2-2表明系统中的每个进程有2个数据结构描述文件系统相关的信息。

fs_struct包含指向两个VFS inode的指针。每个VFS inode惟一地标记文件中的一个目录或者文件,同时还对底层文件系统提供统一的接口。这两个指针,一个指向进程的根目录,另一个指向其当前或者pwd目录。pwd从Unix命令pwd中派生出来,用来显示当前工作目录。当多个进程引用时count域的值将增加。这就是为什么不能删除进程当前目录,或者其子目录的原因。umask是创建新文件时使用的缺省模式,可以用系统调用改变。

files_struct包含进程当前正在使用的所有文件的信息。进程从标准输入(standard input)读并且写到标准输出(standard output)。任何错误消息应该输出到标准错误(standard error)。不论是文件,还是设备,进程都把它们当做文件看待。每个文件有它自己的描述符(descriptor),files_struct中包含可以指向256个文件数据结构的指针,每个可以描述进程打开的一个文件。f_mode描述文件是以什么模式被创建的:只读、读写或者只写。f_pos记录下一个读或写操作的位置。f_inode指向描述该文件的VFS i节点,而f_ops是一个指向例程地址向量的指针,每一个例程实现希望在文件上做的一个操作,例如,一个写数据的例程。这种对界面的抽象非常有用,允许Linux系统支持各种各样的文件类型。

每打开一个文件,就用files_struct中一个空闲的文件指针来指向新file结构。Linux进程启动的时候,会有3个文件描述符已经打开,它们是标准输入、标准输出和标准错误,通常都是从父进程中继承来的。所有的文件访问都要使用系统调用,它们使用或者返回文件描述符。文件描述符是到进程的fd向量的索引,所以标准输入、标准输出和标准错误的文件描述符是0、1和2。文件的每次访问都要使用文件数据结构的文件操作例程和VFS i节点。

img7

图2.2 task_struct中与文件系统有关的数据结构

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈