当前位置: 首页 > news >正文

呼伦贝尔市网站建设_网站建设公司_页面权重_seo优化

天乐测绘网做网站吗,做破解的网站,仓库出入库管理系统,手工外包网初识FUSE#xff08;Filesystem in userspace#xff09; 什么是FUSE#xff1f;FUSE原理FUSE协议 如何去使用#xff1f;参考文章 之前因为一次作业有幸接触过FUSE,觉得它是一个很不错的框架#xff0c;没来得及仔细了解。现在有点时间了#xff0c;想要利用它做一个文件… 初识FUSEFilesystem in userspace 什么是FUSEFUSE原理FUSE协议 如何去使用参考文章 之前因为一次作业有幸接触过FUSE,觉得它是一个很不错的框架没来得及仔细了解。现在有点时间了想要利用它做一个文件系统便系统地去学习一下在这里简单做个总结。 什么是FUSE FUSE is a userspace filesystem framework. FUSE全称Filesystem In Userspace是一个用户空间的文件系统框架也就是说能够允许用户空间创建并管理文件系统。它由三部分组件组成 内核模块fuse.ko协议封装和解析封装转发由VFS转发过来的请求给用户态程序用户空间库libfuse.*协议解析和封装负责解析由内核模块封装好的IO请求挂载工具fusemount用户态文件系统挂载 用户态文件系统是区别于内核文件系统的在用户态文件系统没有出现之前常见的文件系统如Ext2、Ext4等都是在内核中直接实现的这就很容易引发一个问题开发角度调试困难使用角度需要提权root。而用户态文件系统框架FUSE提供了这样一个机会能保证安全且不需要提权开发过程中也易调试。但需要考虑到的是FUSE作为一层框架相当于在原有的文件系统上套了一层代理相比原来内核实现的文件系统会带来更多的性能开销。 FUSE原理 FUSE的工作流程可以用下图表示 从图中可以看到当用户空间发起request(ls -l /tmp/fuse)时首先VFS获得请求经由系统调用再根据挂载点分析文件系统并转发到内核模块中的FUSE该框架按照预先定义好的协议将请求进行封装并将封装好的请求发送给处理程序而处理程序会解析该请求为原始请求并完成对应处理利用libfuse再按原路返回由VFS将数据进行返回给用户空间。 在这里有一个注意的点处理程序是如何和FUSE传输数据的是/dev/fuse虚拟块设备当FUSE将请求打包成特定格式后会将数据放置于/dev/fuse中而**守护进程在用户空间侧**监听到有消息后会立即读取来处理。 FUSE协议 在struct fuse_req向客户端发出的请求的源码可以找到两个请求头struct fuse_in_header和struct fuse_out_header struct fuse_req {...... /* The request input header */struct {struct fuse_in_header h;} in;/* The request output header */struct {struct fuse_out_header h;} out;...... }struct fuse_in_header的定义内核中、libfuse中均有定义 struct fuse_in_header {uint32_t len; //数据长度uint32_t opcode; // 操作码uint64_t unique; // 唯一请求iduint64_t nodeid; // 被操作的文件系统对象文件/目录的IDuint32_t uid; // 请求进程的uiduint32_t gid; // 请求进程的giduint32_t pid; //请求进程的piduint16_t total_extlen; /* 在libfuse中额外的定义*/uint16_t padding; };在请求头之后一般会紧接着一个请求体类似于http协议而请求体的大小是可变的这跟发出请求后携带的实际数据大小有关的可以通过opcode操作码来进行判断 struct fuse_out_header的定义 struct fuse_out_header {uint32_t len; //数据长度int32_t error; // 错误码uint64_t unique; // 唯一请求id };这个响应头也是类似于请求头当处理程序完成对请求头的处理后会根据协议将结果进行封装传回内核中这就会用到响应头如果携带有响应数据的话还会包含一个响应体。在这个过程中内核是通过unique标识请求的。 如何去使用 在libfuse的官方开源代码介绍中提到了这个库提供了两种API: high-level同步API,处理工作主要是与文件名称file name文件路径path处理相关并且当回调函数返回时请求处理完成。low-level异步API,所处理的必须是跟索引节点inode相关相对来说要更加地熟悉底层文件系统实现的细节响应必须使用一组单独的API函数显示发送。 具体如何使用请查阅源码中所提供的例子。 参考文章 详解 FUSE 用户态文件系统 - 摸鱼派 (fishpi.cn) FUSE介绍 | 成长录-知行合一 (a-programmer.top) FUSE(Filesystem in Userspace) - 简书 (jianshu.com)
http://www.ihoyoo.com/news/30359.html

相关文章:

  • 删除织梦综合网站wordpress伪静态路径写法
  • 重庆专业企业建设网站如何注册网址
  • 网站建设与网页的区别深圳保障性住房网
  • 著名网站设计服装网站建设中期目标
  • 网站内链规划做隐私的网站
  • 网站建设流程步骤wordpress 关键字内链
  • 学院网站建设需求分析目录WordPress防伪插件
  • 中国新农村建设网站投稿图文广告设计学徒一般要学多久
  • 做专属淘客网站电子商务网络营销是干嘛的
  • 网站ftp有什么用广州网站优化多少钱
  • 网站建设一般报价多少自己做的网站收录怎么提升
  • 做网站品牌开原网站制作公司
  • 个人网站优秀案例海外域名
  • 快站官方客户端下载注册城乡规划师备考
  • 数据库2008做企业网站乡村建设网站
  • 婚恋网站开发可以做哪些网站有哪些
  • 杭州公司网站域名续费谷歌seo技巧
  • 网站百度不收录了搭建建立网站
  • 零基础学做网站教程wordpress添加评论
  • e建网站高质量外链平台
  • 蓟县做网站公司icp备案系统网站
  • 深圳网站seo服务北京城建亚泰建设集团有限公司网站首页
  • 自己做的网站显示不全深圳专业做网站专业
  • 企业自建网站有哪些做汽车养护的网站
  • 上海门户网站怎么登录长春网站建设托管
  • 哪种网站制作手机端网站开发
  • 深圳餐饮公司网站制作网站建设公司知名
  • 网站开发(七)数据库的建表与连接郑州外贸网站建设哪家好
  • 网站建设软件有哪些中国企业网是干什么的
  • 专做教育网站拿站揭阳网站建设揭阳