-
文件描述符(File Descriptor):
- 文件描述符是一个非负整数,用于在程序中引用打开的文件、套接字或其他I/O资源。
- 每当一个进程打开一个文件、创建一个套接字或进行其他类似的操作时,内核都会为该进程分配一个新的文件描述符。
- 文件描述符是进程级的,不同的进程可以有各自的文件描述符表,互不影响。
-
文件描述符表(File Descriptor Table):
- 每个进程都有一个文件描述符表,它是一个数组结构,数组的每个元素都指向一个文件表项。
- 文件描述符作为数组的索引,使得进程能够快速找到对应的文件表项。
-
文件表项(File Table Entry):
- 文件表项包含了关于打开文件的信息,比如文件状态标志(如只读、只写、追加等)、当前文件偏移量(即下一次读写操作的位置)等。
- 文件表项还包含一个指向inode的指针,这个指针用于定位文件在文件系统中的实际位置。
- 同一个文件可以被多个进程打开,但每个进程都有自己的文件表项,这样可以保证每个进程对文件的操作(如偏移量)互不影响。
-
inode(索引节点):
- inode是文件系统的核心概念之一,它包含了关于文件本身的信息,如文件大小、时间戳(创建时间、修改时间、访问时间等)、文件类型(普通文件、目录、符号链接等)等。
- inode还包含了磁盘上文件数据的位置信息,比如数据块的位置。
- 对于不同的文件系统,inode的结构可能会有所不同,但基本原理是相似的。
通过文件描述符、文件描述符表、文件表项和inode这一系列的结构和指针,Linux系统能够高效地管理进程对文件的访问和操作。这种设计既保证了文件操作的灵活性,又确保了多进程环境下文件访问的安全性。
标签:文件,表项,描述符,File,进程,inode From: https://www.cnblogs.com/kcloveworld/p/17989014