1 / 18
文档名称:

Linux FUSE源代码分析.doc

格式:doc   大小:420KB   页数:18页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Linux FUSE源代码分析.doc

上传人:duzw466 2018/7/8 文件大小:420 KB

下载得到文件列表

Linux FUSE源代码分析.doc

相关文档

文档介绍

文档介绍:Linux FUSE源代码分析
一、Fuse简要介绍
FUSE(用户空间文件系统)是这样一个框架,它使得FUSE用户在用户态下编写文件系统成为可能,而不必和内核打交道。FUSE由三个部分组成,linux内核模块、FUSE库以及mount 工具。用户关心的只是FUSE库和mount工具,内核模块仅仅提供kernel的接入口,给了文件系统一个框架,而文件系统本身的主要实现代码位于用户空间中。 FUSE库给用户提供了编程的接口,而mount工具则用于挂在用户编写的文件系统。
FUSE起初是为了研究AVFS(A Virtual Filesystem)而设计的,e的一个独立项目,目前适用的平台有Linux, FreeBSD, NetBSD, OpenSolaris和Mac OS X。官方的linux ,,用户如果要在FUSE中创建一个文件系统,需要先安装一个FUSE内核模块,然后使用FUSE库和API来创建。
什么是Fuse
传统的文件系统是操作系统的一部分,放在操作系统内核里面实现。Fuse(Filesystem in Userspace), 一个用户空间文件系统框架,提供给我们一组用于实现一个文件系统的API,使我们可以在用户态实现自已的文件系统。。
(注:操作系统中的用户态指权限等级中的一般级别,与之相对的是超级用户或者管理员的特权级别。用户态启动的每个进程,根据运行该进程的登录用户,都被系统赋予一定的权限,另外也有一些限制。)
优缺点
传统文件系统都是定义在操作系统内核层面上的,要操作系统识别一种新的文件系统,必需重写内核,而内核态代码难以调试,生产率较低;但是用户空间编程和调试难度较小,有更多的语言可以选择(目前FUSE已经绑定了很多语言,比如c++、java等),还可以复用已有的库),从而能够大幅提高生产率,极大地简少了为操作系统提供新的文件系统的工作量。
一些服务可以通过统一的文件系统接口来进行访问,比如说ftp、sftp、samba
可以把非文件的服务当做文件来实现,比如把gmail提供的巨大的空间用来进行文件存储的Gmail Filesystem。
在用户态实现文件系统必然会引入额外的内核态/用户态切换带来的开销,对性能会产生一定影响。
二、FUSE特性
a、库文件和 API简单,极大地方便了用户的使用
b、安装简便,不需要加补丁或者重新编译 kernel
c、执行安全,使用稳定
d、高效,相对于其它用户态文件系统实例
e、非特权用户可以使用
f、基于 和 内核,现在可以支持JavaTM 绑定,不必限定使用C和C++来编写文件系统
三、源代码目录:
./doc 包含FUSE相关文档
./include 包含了FUSE API头,对创建文件系统有用,
./lib 存放FUSE库的源代码
./util 包含了FUSE工具库的源代码
./example 参考的例子
四、安装
FUSE的源码安装类似于其他软件,只需要在FUSE的源码目录下执行如下命令即可:
./configure
make
make install(以root身份执行)
五、FUSE operations
FUSE使用fuse_operations来给用户提供编程结构,让用户通过注册自己编写的函数到该结构体来实现自己的文件系统。
六、Fuse文件系统的结构
fuse包括三个模块:用户空间库,内核模块以及mount工具
1)用户空间库给程序员提供编程接口,程序员通过实现fuse提供的两组接口fuse_lowlevel_ops, fuse_operations之一即可实现一个用户空间文件系统
2)内核模块实现了一个完整文件系统的框架,但具体操作没有实现(由程序员在用户空间实现)
3)mount工具fusermount用于挂载基于fuse的文件系统
Fuse在用户空间工作的流程图
通过这幅图可以看到三个模块在fuse工作时所起的作用
fuse_main() (lib/)——fuse用户空间主函数,用户程序调用它时,fuse_main()函数解析相关参数(如mountpoint,multithreaded),并调用fuse_mount()函数,接着调用fuse_new()函数,为fuse文件系统数据分配存储空间。最后调用fuse_loop()函数实现会话的接受与处理。
fuse_mount() (lib/)——创建UNIX本地套接口,创建并运行子进程

最近更新

2024年广东省阳江市人民检察院招聘10人历年高.. 90页

2024年广东省阳江阳春市机关事业单位招聘23人.. 89页

嘉善西塘规划方案 31页

2024年广东省韶关市曲江区事业单位招聘6人历年.. 89页

2024年广东省龙川县乡镇财政结算中心招聘18人.. 88页

2024年广东韶关南雄市教育局下属事业单位选聘.. 91页

2024年广安岳池县委办公室遴选机关工作人员历.. 89页

商场安全日活动方案策划 36页

2024年广州市增城区水务局招聘水政执法协管历.. 89页

2024年广州市天河区环保局环保协管员招聘历年.. 90页

2024年广州市番禺区沙湾镇招聘3人历年高频难、.. 89页

2024年广州市黄埔区联和街招聘1人历年高频难、.. 88页

2024年广州环境监测中心站招聘3名工作人员历年.. 89页

2024年2月贵州铜仁市市直事业单位招考聘用72人.. 55页

2024年广西北海市创城办招聘20人历年高频难、.. 89页

2024年广西北海市邮政管理局招聘2人历年高频难.. 87页

2024年广西区来宾市兴宾区机关事务管理局事业.. 89页

2024年广西南宁市不动产登记中心招聘6人历年高.. 89页

2024年广西南宁市兴宁区劳动保障管理中心事业.. 88页

2024年广西南宁市房产资金管理中心招聘3人历年.. 89页

2024年广西南宁市江南区机关事业单位招聘84人.. 88页

2024年广西南宁市道路运输管理处招聘80人历年.. 89页

2024年广西南宁经济技术开发区招聘5人历年高频.. 89页

2024年广西崇左市交通运输局招聘5人历年高频难.. 90页

2024年广西崇左市天等县残疾人联合会招聘1人历.. 88页

2024年广西崇左市江州区财政局事业单位招聘2人.. 89页

2024年广西平果县住房和城乡规划建设局招聘5人.. 88页

基于STC89C52单片机的数字温度计(附源代码,完.. 16页

2024年安徽省普通高中学业水平测试卷 5页

2023年北美电商市场研究报告 54页