linux文件系统二 VFS读写流程

这篇博客详细介绍了Linux文件系统中虚拟文件系统(VFS)如何处理读写操作,通过调用VFS接口实现对不同文件系统的兼容。内容包括文件系统框架的概述,通过strace和ftrace抓取调用跟踪的方法,以及open和read/write操作的具体流程。文章重点解析了从应用层到内核层的调用路径,展示了VFS如何与具体文件系统如ext4交互。
摘要由CSDN通过智能技术生成

一、文件系统框架:

  从文件系统一种我们了解了linux文件系统的框架,这里我们首先再通过下面简洁的流程图

来展示linux文件系统文件读写的大框架:

  从上图中可以看出linux文件系统的读写通过调用虚拟文件系统(VFS)的对应接口,从而

调用到实际文件系统的读写接口,来进行emmc的操作,这样可以实现多文件系统兼容,如android

中的boot/system分区是ext4的格式,但cache/userdata我们可以配置为f2fs的文件系统格式,但

VFS层的调用接口是不变的。对应的相关结构体直接的关系:

二、抓取调用trace方法:

1、linux应用层操作方法:

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/mman.h>
int main(void)
{
	int i,f;
	FILE *fp;
	char string[24];

	fp = fopen("test.dat","w+");
	return 0;
}

gcc  file_open.c  -o  file_open

strace  ./file_open   可以抓取到应用层调用的trace:

mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7562000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7562940, limit:1048575, seg_32bit:1, conten
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值