Skip to content

Latest commit

 

History

History
39 lines (35 loc) · 2.77 KB

2014-05-12-vfs-system-interfaces.md

File metadata and controls

39 lines (35 loc) · 2.77 KB
layout title category description tags
post
VFS相关的系统调用
虚拟文件系统
VFS相关的系统调用...
系统调用 VFS

VFS提供了诸多的接口以便可以简单的调用,这些系统调用涉及文件系统、普通文件、目录文件以及符号链接文件。另外还有少数几个由VFS处理的其他系统调用例如ioperm()ioctl()、*pipe()*等。

系统调用名 说明
mount() umonut() umount2() 安装/卸载文件系统
sysfs() 获取文件系统信息
statfs() fstatfs() statfs64() fstatfs64() 获取文件系统统计信息
ustat() chroot() pivot_root() 更改根目录
chdir() fchdir() getcwd() 对当前目录进行操作
mkdir() rmdir() 创建和删除目录操作
get_dents() getdents64() readdir() link() unlink() 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() truncated64() ftruncate64() 更改文件长度
lseek() _llseek() 更改文件指针
read() write() readv() writev() sendfile() sendfile64) readahead() 进行文件I/O操作
io_setup() io_submit() io_getevents() io_cancel() io_destroy() 异步I/O
pread64() pwrite64() 搜索并访问文件
nmap() nmap2() munmap() madvise() mincore() remap_file_pages() 处理文件内存映射
fdatasync() fsync() sync() msync() 同步文件处理
flock() 处理文件锁
setxattr() lsetxattr() fsetxattr() getxattr() lgetxattr() fgetxattr() listxattr() llistxattr() flistxattr() removexattr() lremovexattr() fremovexattr() 处理文件扩展属性

虽然VFS是应用程序和具体文件系统之间的一层,不过,在某些情况下,一个文件操作可能由VFS本身去执行,无需调用低层函数。

例如,当某个进程关闭一个打开的文件时,并不需要涉及磁盘上的相应文件,因此VFS只需释放对应的文件对象。

同样,当系统调用*lseek()*修改一个文件指针,而这个文件指针是打开文件与进程交互所涉及的一个属性时,VFS就只需修改对应的文件对象,而不必访问磁盘上的文件,因此,无需调用具体文件系统的函数,所以可以把VFS看成『通用』文件系统,它在必要时才需要依赖某种具体的文件系统。