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

仲恺建设局网站网站开发和广告制作

仲恺建设局网站,网站开发和广告制作,苏州seo排名优化课程,北京php网站开发虚拟文件系统#xff08;VFS#xff09;作为内核子系统#xff0c;为用户空间程序提供了文件和文件系统相关的接口。通过虚拟文件系统#xff0c;程序可以利用标准的 Unix 系统调用对不同的文件系统#xff08;甚至不同介质上的文件系统#xff09;进行读写操作。 一、通…虚拟文件系统VFS作为内核子系统为用户空间程序提供了文件和文件系统相关的接口。通过虚拟文件系统程序可以利用标准的 Unix 系统调用对不同的文件系统甚至不同介质上的文件系统进行读写操作。 一、通用文件系统接口 VFS 可以使得用户可以直接使用 open()、read() 和 write() 等文件相关系统调用而不需要考虑具体文件系统和实际物理介质。VFS 与块 I/O 相结合提供抽象、接口使得用户空间的程序调用统一的系统调用访问各种文件。 二、文件系统抽象层 内核在所有类型的文件系统接口上建立了一个抽象层该抽象层使 Linux 能够支持各种文件系统。 VFS 之所以能衔接各种各样的文件系统是因为它定义了所有文件系统都支持的、基本的、概念上的接口和数据结构。而实际的文件系统通过编程提供 VFS 所期望的抽象接口和数据结构这样内核就可以毫不费力地连接在一起。 如下面这个例子 ret write(fd, buf, len) 该系统调用将 buf 指针指向的长度为 len 字节的数据写入文件描述符 fd 对应的文件的当前位置。这个系统调用首先执行 sys_write() 系统调用函数该函数要找到 fd 所在的文件系统所实现的写操作然后再执行该操作数据最终通过该操作写入介质。 三、Unix 文件系统 Unix 有四种与文件系统相关的传统抽象概念文件、目录项、索引节点和挂载点mount point。 从本质上讲文件系统是特殊的数据分层存储结构它包含文件、目录和相关的控制信息。文件系统的通用操作包含创建、删除和挂载等。在 Unix 中文件系统被安装到一个特定的挂载点上该挂载点在全局层次结构中被称为命名空间所有的已安装文件系统都作为根文件系统树的枝叶出现在系统中。 VFS 把目录当作文件对待所以可以对目录执行和文件相同的操作。 Unix 系统将文件的相关信息和文件本身这两个概念加以区分例如访问控制权限、大小、拥有者等信息。文件相关信息也被称作文件的元数据被存储在一个单独的数据结构中这个结构被称为索引结点inode。文件系统的信息则存储在超级块中超级块是一种包含文件系统信息的数据结构。 比如说在磁盘上文件目录也属于文件信息按照索引节点的形式存储在单独的块中控制信息被集中存储在磁盘的超级块中。 四、VFS 对象及其数据结构 VFS 采用的是面向对象的设计思路使用一组数据结构来代表通用文件对象。这些结构体包含数据的同时也包含操作这些数据的函数指针其中的操作函数由具体的文件系统实现。 VFS 有四个主要的对象类型分别是 超级块对象代表一个具体的已安装文件系统。、索引节点对象它代表一个具体文件。目录项对象它代表一个目录项是路径的一个组成部分注目录项不同于目录目录属于文件对象。文件对象它代表由进程打开的文件。 上述每个对象都包含一个对应的操作对象这些操作对象描述了内核针对主要对象可以使用的方法 super_operations 对象包含内核针对特定文件系统能调用的方法比如 write_inode() 和 sync_fs() 等方法。inode_operations 对象包含内核针对特定文件能调用的方法比如 create() 和 link()。dentry_operations 对象包含内核针对特定目录所能调用的方法如 d_compare() 和 d_delete()。file_operations 对象包含进程针对已打开文件所能调用的方法比如 read() 和 write()。 操作对象作为一个结构体指针来实现里面包含指向操作其父对象的函数指针。对于其中许多方法来说可以继承使用 VFS 提供的通用函数如果通用函数的功能无法满足需要那么就必须使用实际文件系统独有的方法来填充这些函数指针。 五、超级块对象 各种文件系统都必须实现超级块对象该对象用于存储特定文件系统的信息通常对应于存放在磁盘特定扇区中的文件系统超级块或文件系统控制块。对于并非基于磁盘的文件系统如基于内存的文件系统sysfs它们会在使用现场创建超级块并将其保存到内存中。 超级块对象由 super_block 结构体表示定义在文件 linux/fs.h 中 六、索引节点对象 索引节点对象包含了内核在操作文件或目录时需要的全部信息。索引节点对象与其对应的文件是分开存放的。索引节点对象由 inode 结构体表示定义在文件 linux/fs.h 中 一个索引节点代表文件系统中的一个文件它也可以是设备或管道这样的特殊文件。因此索引节点结构体中有一些和特殊文件相关的项如 i_pipe 项就指向一个代表有名管道的数据结构i_bdev 指向块设备结构体i_cdev 指向字符设备结构体。 索引节点对象的 inode_operations 项也非常重要因为它描述了 VFS 用以操作索引节点对象的所有方法这些方法由文件系统实现。 inode-inode_operations-对应操作函数 七、目录项对象 VFS 把目录当作文件来对待所以在路径 /bin/vi 中bin 和 vi 都属于文件bin为目录文件而 vi 是一个普通文件路径中的每个组成部分都由一个索引节点对象表示。 为了方便查找操作VFS 引入了目录项每个目录项代表路径中的一个特定部分如 前面的 /、bin 和 vi 都属于目录项的概念。在路径中的每一个部分都是目录项对象目录项的引入可以让文件的查找变得更加方便。 目录项对象由 dentry 结构体表示定义在文件 linux/dcache.h 中 与前面两个对象不同目录项没有对应的磁盘数据结构VFS 根据字符串形式的路径名现场创建它。由于目录项并非真正保存在磁盘上所以目录项结构体没用是否被修改的标志。 目录项有三种有效状态被使用、未被使用和负状态。 一个被使用的目录项对应一个有效的索引节点即 d_inode 指向相应的索引节点并且表明该对象存在一个或多个使用者d_count 为正值。一个未被使用的目录项对应一个有效的索引节点d_inode 指向一个索引节点 但是应指明 VFS 当前并未使用它d_count 为 0。该目录项对象仍然指向一个有效对象而且保留在缓存中以便需要时再使用它所以之后再需要它时不需要重新创建。一个负状态的目录项或者说无效目录项没有对应的有效索引节点d_inode 为 NULL因为索引节点已被删除了或路径不再正确了但目录项仍保留。 如果 VFS 遍历路径名中所有的元素并将它们逐个地解析成目录项对象还要达到最深层目录将是一件非常费力的工作所以内核将目录项对象缓存再目录项缓存中简称 dcache以节省时间。  八、文件对象 文件对象表示进程已打开的文件。该对象由相应的 open() 系统调用创建由 close() 系统调用撤销。因为多个进程可以同时打开和操作同一个文件所以同一个文件也可能存在多个对应的文件对象。虽然一个文件对应的文件对象不是唯一的但对应的索引节点和目录项对象是唯一的。 文件对象由 file 结构体表示定义在 linux/fs.h 中 类似于目录项对象文件对象实际上没有对应的磁盘数据只有当一个文件被进程打开时才被创建。 文件对象的操作如下
http://www.sadfv.cn/news/86456/

相关文章:

  • 安康 住房城乡建设部网站邵阳市建设局网站首页
  • .net 接单网站有哪些封丘县建设银行网站
  • 张槎杨和网站建设帮做ppt的网站
  • 六安网站开发专门做生鲜的网站
  • 温州网站设计联系亿企邦wordpress 三合一
  • 惠州网站制作软件wordpress the7 下载
  • 博客做资讯类网站武进区住房和城乡建设局网站
  • 网站访问量火车头wordpress 5.1发布模块
  • 邢台专业网站建设体育新闻最新消息乒乓球
  • 做公司网站需要备案吗网站 分析
  • app门户网站沧州网络营销推广方案
  • 企业网站建设案例哪个品牌好哪些网站可做矿机期货
  • 网站图片内容上海设计公司排名前十强20
  • 成都手机建站电脑手机网站首页
  • 网站推广过程叙述电商美工是做什么的
  • 久久租房网.net网站如何优化
  • 网站建设与管理大纲天津大邱庄网站建设公司
  • 烟台百度网站推广创建全国文明城市倡议书
  • 网站要多钱wordpress菜单背景半透明
  • 微信公众号的微网站怎么做的网页游戏排行榜知乎
  • 建网站多少钱可以卖货的中天建设集团有限公司第五建设公司
  • 做外贸的网站看啥书临沂外贸网站建设
  • 网站安全性怎么做一个网站开发的意义
  • 做网站要考虑什么深圳网站设计吧
  • 网站制作的教程淮北网站建设设计
  • 广西住房和建设厅网站丽江门户网站
  • 八里河风景区网站建设设计概述怎么做推广和宣传平台
  • 惠州网站建设 英语it外包公司品牌
  • 网站后台更新无法在网页显示上海网站seo
  • 注册网站流程及资料网页设计费用明细