`

Linux虚拟文件系统VFS

 
阅读更多
文件系统中各种概念的关系梳理:
1. Linux为每个进程维护一个task_struct结构体来维护进程信息,task_struct可以被称为进程描述符(Process Descriptor)或者进程控制块(Process Control Block)
 
2. task_struct中有一个指针struct files_struct *files指向files_struct结构体,files_struct被称为文件描述符表。文件描述符表中的每个表项是指向一个已打开的文件的指针(file*)
 
Sam注:file是linux内核实现的,是内核用来管理文件的,一般我们不会接触到;而FILE是标准C封装的,FILE中包含fd的信息,而且还包含IO缓冲,所以可以理解为FILE*是对fd的封装,我们在编写C文件操作时会经常用到。

 
  563 struct file {
  564         struct list_head        f_list;
  565         struct dentry           *f_dentry;
  566         struct vfsmount         *f_vfsmnt;
  567         struct file_operations  *f_op;
  568         atomic_t                f_count;
  569         unsigned int            f_flags;
  570         mode_t                  f_mode;
  571         loff_t                  f_pos;
  572         unsigned long           f_reada, f_ramax, f_raend, f_ralen, f_rawin;
  573         struct fown_struct      f_owner;
  574         unsigned int            f_uid, f_gid;
  575         int                     f_error;
  576
  577         unsigned long           f_version;
  578
  579         /* needed for tty driver, and maybe others */
  580         void                    *private_data;
  581
  582         /* preallocated helper kiobuf to speedup O_DIRECT */
  583         struct kiobuf           *f_iobuf;
  584         long                    f_iobuf_lock;
  585 };
 
3. 进程通过文件描述符表的索引,如
#define STDIN_FILENO 0
#define STDOUT_FILENO 1
#define STDERR_FILENO 2
 来索引到一个file结构体实例,即表示一个打开的文件
 
4. file实例中有一个f_dentry成员,指向内存中dentry_cache中的一个dentry
            dentry: 实现了文件名和inode编号的映射,当然还有其他功能


 
5. inode: 一个文件对应的inode包含这个文件访问权限、属主、组、大小、生成时间、访问时间、最后修改时间等信息,还有文件在数据块中存放位置的指针。每个文件(包括目录以及/proc目录下的文件)都有对应的inode,inode包括磁盘上的和内存中的inode,只有在需要时,Linux才会内存中创建inode.
inode又分两种:
(1) 磁盘上的inode: 跟在超级块后面的"i节点表"中,如下图所示
(2) 内存中的inode: 
 
 
 
参考文档
file:///C:/Users/nnnn/Desktop/VFS/linux%E5%91%BD%E4%BB%A4%E5%AE%9E%E8%B7%B5-%E5%85%B3%E4%BA%8Einode%20-%20%E5%8F%AF%E8%8B%A6%E5%8F%AF%E4%B9%90%20-%2051CTO%E6%8A%80%E6%9C%AF%E5%8D%9A%E5%AE%A2.htm
 
file:///C:/Users/nnnn/Desktop/VFS/linux%E7%B3%BB%E7%BB%9F%E7%BC%96%E7%A8%8B%E4%B9%8B%E5%9F%BA%E7%A1%80%E5%BF%85%E5%A4%87%EF%BC%88%E4%B8%89%EF%BC%89%EF%BC%9A%E6%96%87%E4%BB%B6%E6%8F%8F%E8%BF%B0%E7%AC%A6file%20descriptor%E4%B8%8Einode%E7%9A%84%E7%9B%B8%E5%85%B3%E7%9F%A5%E8%AF%86_Linux_%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F_%E7%BD%91%E7%BB%9C%E5%AD%A6%E9%99%A2_%E5%A4%A9%E6%96%B0%E7%BD%91.htm
 
file:///C:/Users/nnnn/Desktop/VFS/Linux%20%E7%9A%84%E8%99%9A%E6%8B%9F%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%28%E5%BC%BA%E7%83%88%E6%8E%A8%E8%8D%90%29%20demo%E5%A4%A7%E5%85%A8.htm
  • 大小: 14.8 KB
  • 大小: 150.3 KB
  • 大小: 66.8 KB
  • 大小: 15.9 KB
分享到:
评论

相关推荐

    Linux虚拟文件系统vfs的模拟代码

    对Linux文件系统用C语言进行模拟,在Windows 下建立自己的小型二级文件系统,并在自已建立的文件系统之上进行一系列的操作,包括文件系统的建立,对索引结点和目录文件的操作,目录的安全性设置,目录的检索以及文件...

    Linux VFS 虚拟文件系统资料收集

    是我最近学习Linux VFS 虚拟文件系统时收集的,感觉是学习VFS 虚拟文件系统的好资料,特共享给和我相似的朋友们共同学习. 资料主要有三个: 1. 解析 Linux 中的 VFS 文件系统机制.doc 比较好,写出了文件系统的...

    剖析Linux中的虚拟文件系统VFS的认识.pdf

    剖析Linux中的虚拟文件系统VFS的认识.pdf

    linux 虚拟文件系统数据结构关系

    linux 虚拟文件系统的几个数据结构的关系,自己画的

    linux文件系统-VFS数据结构

    linux文件系统中的虚拟文件系统的数据结构,自己总结的,希望对大家有所帮助。

    解析Linux的VFS机制

    总体上说 Linux 下的文件系统主要可分为三大块:一是上层的文件系统的系统调用,二是虚拟文件系统 VFS(Virtual Filesystem Switch),三是挂载到 VFS 中的各实际文件系统,例如 ext2,jffs 等。本文侧重于通过具体的...

    Linux VFS虚拟文件系统-3.3.81

    Linux VFS虚拟文件系统-3.3.81

    Linux虚拟文件系统胶片

    linux 虚拟文件系统相关的文章,对于理解虚拟文件系统层非常有帮助,刚从IBM 的开发者网站下载下来,英文版,中文暂时没有

    Linux文件管理Linux的文件系统

    Linux系统采用虚拟文件系统技术(VFS)、结构采用倒立树型、VFS使Linux支持以下文件系统:  EXT2: 二次扩展  EXT3: 三次扩展  SWAP: 交换文件系统  FAT、FAT32  NTFS (默认不支持,需要特定的模块) ...

    C++模拟实现的一个VFS(虚拟文件系统)

    自己在操作系统课程设计时做的模拟实现VFS系统,供大家参考。(里面有报告和源代码,标准C++代码可以在Linux通过g++编译) 摘要:本文利用虚拟文件系统(VFS)思想,建立一个统一的接口框架。并基于此接口实现了一个...

    Linux 文件系统介绍

    Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和...

    嵌入式Linux文件系统剪裁方法研究

    文件系统是操作系统的重要组成部分之一。它负责管理 2 VFS 实现机制 外存上的文件, 并为操作系统和用户提供文件的存取、 ...它的重要特征之一就是虚拟文件系统抽象机 制。Linux 文件系统的总体结构可分为三个部分:

    疯狂内核之——虚拟文件系统

    2.5 VFS系统调用的实现 88 2.5.1 open()系统调用 88 2.5.2 read()和write()系统调用 96 2.5.3 close()系统调用 97 3 第二扩展文件系统 99 3.1 Ext2磁盘数据结构 101 3.1.1 磁盘超级块 102 3.1.2 组描述符和位图 105 ...

    Linux 文件系统剖析

    在文件系统方面,Linux® 可以算得上操作系统中的 “瑞士军刀”。Linux 支持许多种文件系统,...本文讨论 Linux 内核中的虚拟文件系统(VFS,有时候称为虚拟文件系统交换器),然后介绍将文件系统连接在一起的主要结构.

    linux虚拟文件系统分析

    :采用过 程分析 的方法, 通过 对 VF S系统的文件 操作过程 和文件访 问过程 的初 步分析,总结 了I J n u x的 V F S文件 系统在 其工作方式及 其结构上的一些优 点, 以便于更好 地认识 VF S文件 系统 的特点。 ...

    本科毕业论文 Linux下文件管理与文件传送的研究与实现

    3 Linux虚拟文件系统 10 3.1 虚拟文件系统概述 10 3.2 VFS支持的文件系统可以划分为三种类型: 10 3.3 VFS功能 11 4 界面的实现 12 4.1发送端界面的实现 12 4.2 接收端的界面实现 13 4.3 锚接部件界面的实现 14 4.4 ...

    Linux VFS介绍

    Linux VFS的简单介绍,PPT格式,介绍入门介绍入门介绍入门

    linux内核设计与实现之VFS文件系统1

    VFS机制《linux内核设计与实现》<第13章:虚拟文件系统>特点VFS使得用户可以直接使用open(),read(),write()等系统调用,无需考虑具体

    Linux文件系统剖析

    在文件系统方面,Linux® 可以算得上操作系统中的“瑞士军刀”。Linux支持许多种文件 系统,从日志型文件系统到集群文件...系统(VFS,有时候称为虚拟文件系统交换器),然后介绍将文件系统连接在一起的主要结 构。

    Linux内核设备驱动之虚拟文件系统笔记整理

    * 虚拟文件系统VFS ********************/ (1)VFS介绍 虚拟文件系统VFS作为内核的子系统,为用户空间程序提供了文件系统的相关接口。 VFS使得用户可以直接使用open()等系统调用而无需考虑具体文件系统和实际物理...

Global site tag (gtag.js) - Google Analytics