歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 從文件I/O 查看Linux 的虛擬文件系統(圖)

從文件I/O 查看Linux 的虛擬文件系統(圖)

日期:2017/2/28 17:26:40   编辑:Linux教程

Linux 允許眾多不同的文件系統共存,並支持跨文件系統的文件操作,這是因為有虛擬文件系統的存在。虛擬文件系統,即VFS(Virtual File System)是 Linux 內核中的一個軟件抽象層。它通過一些數據結構及其方法向實際的文件系統如 ext2,vfat 提供接口機制。本文在簡要介紹 VFS 的相關數據結構後,以文件 I/O 為切入點深入 Linux 內核源代碼,追蹤了 sys_open 和 sys_read 兩個系統調用的代碼結構,並在追蹤的過程中理清了跨文件系統的文件操作的基本原理和“一切皆是文件”的口號得以實現的根本。

1 引言

Linux 中允許眾多不同的文件系統共存,如 ext2, ext3, vfat 等。通過使用同一套文件 I/O 系統調用即可對 Linux 中的任意文件進行操作而無需考慮其所在的具體文件系統格式;更進一步,對文件的操作可以跨文件系統而執行。如圖 1 所示,我們可以使用 cp 命令從 vfat 文件系統格式的硬盤拷貝數據到 ext3 文件系統格式的硬盤;而這樣的操作涉及到兩個不同的文件系統。


圖 1. 跨文件系統的文件操作

“一切皆是文件”是 Unix/Linux 的基本哲學之一。不僅普通的文件,目錄、字符設備、塊設備、套接字等在 Unix/Linux 中都是以文件被對待;它們雖然類型不同,但是對其提供的卻是同一套操作界面。

Copyright © Linux教程網 All Rights Reserved