VFS系统调用实现与文件锁定机制详解
1. VFS系统调用基础
在文件操作中,虚拟文件系统(VFS)的系统调用起着至关重要的作用。以一个简单的文件复制操作为例,用户通过shell命令将MS - DOS文件 /floppy/TEST 复制到Ext2文件 /tmp/test ,使用的外部程序 cp 执行的代码如下:
inf = open("/floppy/TEST", O_RDONLY, 0);
outf = open("/tmp/test", O_WRONLY | O_CREAT | O_TRUNC, 0600);
do {
len = read(inf, buf, 4096);
write(outf, buf, len);
} while (len);
close(outf);
close(inf);
实际的 cp 程序代码更为复杂,需要检查每个系统调用可能返回的错误码,这里我们主要关注正常的复制操作流程。
2. 符号链接处理
在文件路径解析过程中,符号链接的处理是一个重要环节。当处理符号链接时,会调用一系列函数,其流程如下:
1. 调用 __vfs_follow_link() 函数,传入地址 nd 和 nd->saved_names 数组中路径名的地址。
2. 如果定义了inode对象的 put_link
超级会员免费看
订阅专栏 解锁全文
92

被折叠的 条评论
为什么被折叠?



