🏷️ 知识点:文件链接

共 2 道相关题目

2021 年第 30 题 操作系统 选择题

若目录 dir 下有文件 file1,则为删除该文件内核不必完成的工作是( )。

文件链接

A. 删除 file1 的快捷方式 B. 释放 file1 的文件控制块 C. 释放 file1 占用的磁盘空间 D. 删除目录 dir 中与 file1 对应的目录项

[tag_link]

正确答案:A

当你删除某个目录 dir 下的文件 file1 时,操作系统内核必须完成以下几项操作:首先,内核会在目录 dir 中找到 file1 对应的目录项,并将其删除。目录项是文件名与其 inode(文件控制块)之间的映射。然后,内核检查这个 inode 是否还有其他硬链接引用。如果 file1 是最后一个链接,那么系统会释放掉该 inode,以及文件占用的磁盘数据块。也就是说,释放文件控制块(inode)和释放磁盘空间,都是删除文件过程中内核必须做的事情。但如果有其他“快捷方式”指向 file1,比如 软链接(symbolic link),这些快捷方式本身是独立的文件。删除原文件不会影响这些快捷方式,它们会变成“悬挂链接”(指向一个不存在的文件)。因此,内核在删除文件时不需要去删除这些快捷方式。所以,[tag_link]正确答案是:A. 删除 file1 的快捷方式 —— 这是内核不必完成的工作。


2017 年第 31 题 操作系统 选择题

若文件 f1 的硬链接为 f2,两个进程分别打开 f1 和 f2,获得对应的文件描述符为 fd1 和 fd2,则下列叙述中,正确的是( )。

Ⅰ. f1 和 f2 的读写指针位置保持相同

Ⅱ. f1 和 f2 共享同一个内存索引结点

Ⅲ. fd1 和 fd2 分别指向各自的用户打开文件表中的一项

inode 文件链接

A. 仅Ⅲ B. 仅Ⅱ、Ⅲ C. 仅Ⅰ、Ⅱ D. Ⅰ、Ⅱ和Ⅲ

[tag_link]

正确答案:B

背景知识:

  • 硬链接:f1 和 f2 是同一个 inode 的两个目录项(即它们指向同一个文件的 inode),共享 相同的索引节点(inode) 和数据块。
  • 打开文件的过程:每个进程在打开文件时会创建:
  • 一个对应的 用户级打开文件表项(即 fd 指向它)
  • 用户打开文件表项再指向 系统级打开文件表项(Open File Table)
  • 系统级表项包含文件的读写偏移量(读写指针)和对 inode 的引用分析选项:Ⅰ. f1 和 f2 的读写指针位置保持相同❌ 错误。虽然 f1 和 f2 是同一个文件(硬链接),但两个进程分别打开它们时,会在系统级打开文件表中生成两个不同的表项,每个表项维护独立的文件偏移量(读写指针),所以互不影响。Ⅱ. f1 和 f2 共享同一个内存索引结点✅ 正确。硬链接的本质就是多个目录项共享同一个 inode。即使路径不同(f1 和 f2),它们最终指向的是同一个 inode。Ⅲ. fd1 和 fd2 分别指向各自的用户打开文件表中的一项✅ 正确。每个进程维护自己的文件描述符表(用户级文件表),fd1fd2 分别是两个不同进程打开文件得到的描述符,它们自然是指向各自进程的用户打开文件表项。Ⅱ 和 Ⅲ 正确,因此,正确答案为 B。