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、磁盘物理层

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

  • 相关阅读:
    MySQL:按前缀批量删除表格
    用Parallel.For()和Parallel.For<TLocal>()方法实现并行运行迭代
    用资源管理器右键编译 Visual Studio 解决方案文件
    C#和C++中char类型的区别
    传递给系统调用的数据区域太小。 (异常来自 HRESULT:0x8007007A)
    NHibernate之映射文件配置说明
    warning,C4996,sprintf,deprecated,C4996,strcpy,C4996,strcat
    OPC服务器开发浅谈 — 服务器模型(转)
    进程内COM与进程外COM
    fork()函数
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8504096.html
Copyright © 2011-2022 走看看