zoukankan      html  css  js  c++  java
  • 文件系统

    文件系统的架构层次包括:用户层、虚拟文件系统层、文件系统层、缓存层、块设备层、磁盘驱动层和磁盘物理层。

    1、用户层

    最上面用户层是日常使用的各种用户应用程序,需要的接口主要是文件的创建、删除、打开、关闭、写、读等。

    2、虚拟文件系统层VFS

    Linux操作系统分为用户态和内核态,当用户态请求硬件资源时需要调用System Call通过内核态去实现。VFS 作为一个通用的文件系统,抽象了文件系统的挂载点、索引节点、目录项和文件四个基本概念,在内核空间层中为用户空间层的文件操作(文件的创建、删除、打开、关闭、写、读等)提供了相关的接口。

    VFS 存在四个基本对象:
    超级块对象:代表一个已安装的文件系统;
    索引节点对象:代表一个文件;
    目录项对象代表一个目录项;
    文件对象代表由进程打开的文件。

    超级块、索引节点、目录项、文件这四个基本对象是对挂载点、索引节点、目录项和文件四个基本概念的一一对应的。

    3、文件系统层

    不同的文件系统实现了VFS的系统调用函数接口,通过指针注册到VFS里面。用户层的各种操作是通过VFS转到各种文件系统的。
    文件系统大体上可分如下几类:
    网络文件系统,如 nfs、cifs 等;
    磁盘文件系统,如 ext4、ext3 等;
    特殊文件系统,如 proc、sysfs、ramfs、tmpfs 等。

    4、缓存层

    文件系统底下有缓存,Page Cache,加速性能。对磁盘LBA的读写数据缓存到这里。

    5、块设备层

    块设备接口Block Device是用来访问磁盘LBA的层级,读写命令组合之后插入到命令队列,磁盘的驱动从队列读命令执行。

    6、磁盘驱动层

    磁盘的驱动程序把对LBA的读写命令转化为各自的协议,或者是自己硬件可以识别的自定义命令,发送给磁盘控制器。

    7、磁盘物理层

    读写物理数据到磁盘介质。

  • 相关阅读:
    yii---where or该如何使用
    yii---获取当前sql语句
    yii---load怎么使用
    yii---往对象里面添加属性
    js---箭头函数
    yii---判断POST请求
    Atitit USRqc62204 证书管理器标准化规范
    Atitit  深入理解命名空间namespace  java c# php js
    atitit..代码生成流程图 流程图绘制解决方案 java  c#.net  php v2
    Atitit 项目中的勋章体系,,mvp建设 ,荣典体系建设
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8504096.html
Copyright © 2011-2022 走看看