Fuse Fuse helloworld

2023-11-05 14:08
文章标签 helloworld fuse

本文主要是介绍Fuse Fuse helloworld,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近项目用到了Fuse“秒级”准备代码,构建时按需从远程获取代码并缓存到本地。虽然代码“准备”确实是快了,但构建的速度却有40%左右的劣化,正如下午说的,每次读写文件都需要用户态和内核态的切换。当前能想到的是读写分离,即写的目录不要是fuse目录,其他的办法还得在研究。。。。

 

https://www.jianshu.com/p/c2b77d0bbc43

为什么FUSE会存在

事物的存在的原因之一是其优势大于劣势,下面是它的优劣描述。

优势

  • 文件系统的改动不用更新内核
    FUSE的核心逻辑在用户空间,所以修改文件系统的行为绝大部分修改会在用户空间。这在很多场合是一件很方便的事情。
  • 很容易实现自己的文件系统
    理论上它可以实现任何天马行空的文件系统,只要一个开发者实现了基本的文件操作。而这个所谓的文件操作也是自己定义的,甚至可以这个操作可能只是一句打印而已,或者是一件超级复杂的事情,只要这个操作符合开发者的要求,他就完成了一个符合开发者需求的文件系统(也许本质上并不是文件系统了,这种情况是有现实例子的)。

劣势

  • 效率较低
    这是显而易见的,就针对块设备的文件系统而言,用户层肯定不如内核实现的效率高,毕竟用户态/内核态切换的开销是少不了的。这也是符合一般软件规律的,越高层次的软件易用性越高,效率越低。

FUSE实现原理

下面这张图体现了FUSE工作的基本套路,是根据WIki里的画的,这张图感觉更符合我看到的代码的状况。

fuse基本工作流程


图中体现了FUSE的2个关键部分(绿色方框),分别是Kernel中的那个FUSE(这里简称kernel FUSE)和user space中的那个fuse_user程序。其中kernel FUSE是负责把从用户层过来的文件系统操作请求传递给fuse_user程序的,而这个fuse_user程序实现了前面所说的文件系统的核心逻辑。
下面分步描述一下在用户对一个FUSE分区上的文件执行ls命令时发生了什么,当然,这里隐含了个前提,即这个系统的/tmp目录已经属于某个FUSE分区了,为了达到这种状况,前面还需要有一个mount的过程
 

 

学习一个FUSE的helloworld吧: 

http://www.maastaar.net/fuse/linux/filesystem/c/2016/05/21/writing-a-simple-filesystem-using-fuse/

http://www.maastaar.net/fuse/linux/filesystem/c/2019/09/28/writing-less-simple-yet-stupid-filesystem-using-FUSE-in-C/

这篇关于Fuse Fuse helloworld的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/350340

相关文章

Python简单入门教程helloworld

Python 学习资源 推荐书籍: Python核心编程(第二版) (强烈推荐,建议有一定基础的看,或者看完简明Python教程再看) Python 基础教程 第二版 (入门,没有核心编程好,但也不错) 编写高质量代码:改善Python程序的91个建议 (进阶,有一定基础再看) 书籍下载: Python 教程(部分内容来源于网络, 历时一年多总结整理的,给刚刚入门的

HelloWorld 模块

helloworld.c 代码 #include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){printk(KERN_ALERT "Hello world\n");return 0;}static void hello_exit(v

ROS程序设计系列 - 5.实例helloworld

ROS程序设计系列 - 5.实例helloworld 1. 源由2. 步骤Step 1:安装ROS系统Step 2:创建框架工程Step 3:检查工程结构Step 4:创建CPP文件Step 5:修改配置文件Step 6:编译工程 3. 测试Step 1: 启动ROS CoreStep 2: 启动Hello程序 4. 总结5. 参考资料6. 补充 1. 源由 在做《Ardupil

使用命令行窗口新建一个Java文件,输出HelloWorld

进入桌面 cd desktop 在桌面新建文件夹 mkdir zwt 进入文件夹,新建.Java文件 cd zwtecho. > helloWorld.java 使用记事本打开文件编写代码 notepad HelloWorld.java 此时电脑就会自动打开文件,直接编写代码 public class HelloWorld(){public static void mi

Qwen-7B-Chat大模型安装训练推理-helloworld

初始大模型之helloworld编写 开发环境:modelscope GPU版本上测试的,GPU免费36小时 ps:可以不用conda直接用环境自带的python环境使用 魔搭社区 安装conda wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh 1.2 bash Minicond

Shiro HelloWorld (二)从数据库中获得数据

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">1、创建users表,插入一条记录</span> <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb

Shiro HelloWorld

Maven工程结构图如下: pom.xml中依赖如下: <span style="white-space:pre"> </span><dependencies><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-core</artifactId><version>1.2.4</version></de

Canvas(1)之HelloWorld

/*1.要使用canvas必须先设置其width和height属性2.接着获取绘制上下文,并指定能力,为2D还是3D3.绘制方式有填充和描边两种方式,即fillStyle 填充属性 fillRect()strokeStyle 描边属性 strokeRect()*/var drawing = document.getElementById('drawing');if(drawing

OrangePi AIpro 香橙派 昇腾 Ascend C算子开发 - HelloWorld

OrangePi AIpro 香橙派 昇腾 Ascend C算子开发 - HelloWorld flyfish Ascend C算子编程是SPMD(Single-Program Multiple-Data)编程 假设,从输入数据到输出数据需要经过3个阶段任务的处理(T1、T2、T3)。如下图所示,SPMD会启动一组进程,并行处理待处理的数据。对待处理数据切分,把切分后数据分片分发给不同进程处理

php环境搭建,小白helloworld初试

学php的起因是因为阿里云的云服务器好贵啊。用来搞测试网站有点方。虚拟主机倒是便宜,不过只有html和php环境。 一、本人php小白,有啥不对的,请指正。 1.各种软件环境:前人栽树,所以出现了XAMPP这种好东西,把需要的软件都搞到一起,然后直接下载解压就ok.这个貌似就是下载地址 下载后请安装在C,D,E,F这种根目录下,例如E:/xampp. 我也不知道为啥会这样,本人亲试,重装两次,