12 1虛擬檔案系統 VFS 的角色

2021-04-13 07:57:33 字數 2173 閱讀 2186

系統呼叫名稱

描述mount()

,umount()

,umount2()掛載/

解除安裝檔案系統

sysfs()

獲得檔案系統的資訊

statfs()

,fstatfs()

,statfs64()

,fstatfs64()

,ustat()

獲得檔案系統的統計資訊

chroot()

,pivot_root()

更改根目錄

chdir()

,fchdir()

,getcwd()

對當前目錄的操作

mkdir()

,rmdir()

建立和刪除目錄

getdents()

,getdents64()

,readdir()

,link()

,ulink()

,rename()

,lookup_dcookie()

對目錄項的操作

readlink()

,symlink()

對符號鏈結的操作

chown( ) fchown( ) lchown( ) chown16( )

fchown16( ) lchown16( )

修改檔案所有者

chmod( ) fchmod( ) utime( )

修改檔案屬性

stat( ) fstat( ) lstat( ) access( ) oldstat( ) oldfstat( ) oldlstat( ) stat64( ) lstat64( ) fstat64( )

讀取檔案狀態

open( ) close( ) creat( ) umask( )

開啟,關閉和建立檔案

dup( ) dup2( ) fcntl( ) fcntl64( )

對檔案描述符的操作

select( ) poll( )

在一組檔案描述符上等待事件

truncate( ) ftruncate( ) truncate64( )

ftruncate64( )

改變檔案的大小

lseek( ) _llseek( )

改變檔案指標

read( ) write( ) readv( ) writev( ) sendfile( ) sendfile64( ) readahead( )

執行檔案讀寫操作

io_setup( ) io_submit( ) io_getevents( ) io_cancel( ) io_destroy( ) 非同步

i/o操作

pread64( ) pwrite64( )

重定位檔案指標位置並進行讀寫

mmap( ) mmap2( ) munmap( ) madvise( ) mincore( )

remap_file_pages( )

處理檔案記憶體對映操作

fdatasync( ) fsync( ) sync( ) msync( )

檔案資料同步

flock( )

操作檔案鎖

setxattr( ) lsetxattr( ) fsetxattr( ) getxattr( ) lgetxattr( ) fgetxattr( ) listxattr( ) llistxattr( ) flistxattr( ) removexattr( ) lremovexattr( ) fremovexattr( )

操作檔案擴充套件屬性

表12-1.

由vfs

處理的系統呼叫

我們在前面已經提過,

vfs位於應用程式和具體的檔案系統之間。然而,在某些情況下,乙個對檔案的操作可以直接由

vfs完成,而不需要呼叫下層的處理程式。例如,當程序關閉乙個檔案的時候,往往不會對實際儲存在磁碟上的檔案進行操作,

vfs只是簡單地釋放記憶體中的相應檔案物件即可。還有,當

lseek()

系統呼叫修改了乙個檔案指標(檔案指標程序和檔案互動時候使用的乙個屬性)以後,

vfs只需要修改記憶體中的檔案物件中的相應資訊,而不需要實際訪問物理磁碟檔案,所以也就不需要進行一次系統呼叫。從這個意義上來說,

vfs可以看作是乙個「通用」檔案系統,只有在必要的時候才會依賴於下層特定的檔案系統。

虛擬檔案系統VFS

現代作業系統必須同時支援多個檔案系統,作業系統如何將多個檔案系統整合成乙個目錄結構?使用者如何在訪問檔案系統空間時可以無縫地在檔案系統型別之間移動呢?絕大多數作業系統包括unix都使用物件導向技術來簡化 組織和模組化實現過程,使用這些方法允許不同檔案系統型別可通過同樣結構來實現,這也包括了網路檔案系...

VFS虛擬檔案系統

虛擬檔案系統是具體檔案系統之上的乙個抽象層,它可以使得客戶程式以統一的方式接入不同型別的具體檔案型別。vfs是核心和具體檔案系統之間的乙個介面,只要通過實現這個介面,核心就可以新增對某乙個檔案系統型別的支援。有時vfs指的是通過使用軟體來作為乙個管理容器,提供和具體的檔案系統一樣的功能,通常是乙個或...

linux虛擬檔案系統vfs

linux可以掛載不同的檔案系統 ext2,fat,ntfs 用同一的樣式呈現給使用者,讀寫操作用起來都一樣,這是怎樣做到的呢?linux核心在各種不同的檔案系統格式上做了乙個抽象層,使得檔案 目錄 讀寫訪問等概念成為抽象層的概念,因此各種檔案系統看起來用起來都一樣,這個抽象層稱為虛擬檔案系統 vf...