Skip to content

2025年 408 操作系统 第 28 题

操作系统2025年选择题2分

题目

关于虚拟文件系统,下列说法正确的是( )。

错因

A

被"虚拟"二字带跑了,把它和"虚拟内存"挂钩。VFS 的"虚拟"是指抽象层——它对上提供"虚拟"的统一文件操作接口,对下不实际存数据,只把请求转发给真正的文件系统(ext4、NTFS、FAT 等)。和虚拟内存不是同一个概念,更不是"运行在虚拟内存里"。

B

把"统一抽象层"误等于"加速层"。VFS 实际上多了一层函数指针调用(read()vfs_read() → 具体 FS 的 read),从性能角度看是轻微开销而不是加速。文件系统的访问速度由具体实现(缓存、布局、磁盘特性)决定,VFS 对此中性。"加快访问速度"完全错位。

D

把"VFS 抽象本地与远程"反着记了。VFS 的存在意义之一就是让 NFS、SMB/CIFS、9p 等网络文件系统也能像本地文件系统一样被 open/read/write 访问——挂载到 /mnt/nfs 之后,应用根本感知不到背后是网络还是本地。说 VFS "只能访问本地"恰好搞反了它的核心功能。

总解析

VFS 是什么:Linux 内核中文件操作的抽象层,位于系统调用接口与具体文件系统之间。

做了什么

  1. 向上:定义统一的 vfs_read / vfs_write / vfs_open 等接口,所有文件系统都得实现这一套
  2. 向下:把每种具体 FS 注册成一组 file_operationsinode_operations 函数指针表
  3. 系统调用 read() 进来时,VFS 根据文件描述符找到对应的 inode/dentry,再调用其背后的具体文件系统实现

核心受益方

角色VFS 给的好处
应用程序一次代码,通用所有 FS(不区分 ext4/NTFS/NFS)
OS 内核可同时挂载多种 FS 共存于同一目录树(/ 是 ext4,/data 是 xfs,/mnt/nfs 是 NFS 都行)
文件系统开发者只需实现 VFS 规定的接口,就能被内核接纳

逐项判定

选项论断对错关键理由
A运行在虚拟内存的文件系统"虚拟"指的是抽象层,与虚拟内存无关
B加快文件系统访问速度抽象层只增轻微开销,加速由具体 FS / 缓存决定
C定义了访问不同 FS 的统一接口这是 VFS 的本质定义
D不能访问网络文件系统NFS/SMB 都靠 VFS 接入,正是 VFS 的核心用途

最终答案是 C

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题