码迷,mamicode.com
首页 > 系统相关 > 详细

linux文件系统

时间:2018-04-21 16:12:39      阅读:330      评论:0      收藏:0      [点我收藏+]

标签:文件名   buffer   种类型   fat   nod   索引   虚拟   ace   记录   

                  APP

                  |  |

                  |  GNU C library

                  |  | (上层为用户空间,下层为内核空间)

                 System call  interface

                    |

                 Visual file system(缩写VFS,虚拟文件系统)

                    |

                 Individual file system (各种类型的文件系统,比如NTFS、FAT、EXT2、EXT3等等)

                    |

                 Buffer cache

                    |

                 Device drivers(系统驱动,连接硬件设备)

 

1、从上图看的出整个linux文件系统的核心就在于VFS,链接了用户和硬件,并且在硬件层上将各种类型文件系统隔离开来,实现统一兼容支持,使得开发人员的操作统一(像open、write、read)

 

技术分享图片

2、上面这个图清晰的说明了文件系统与磁盘等硬件设备的关系(图片来源于《The Linux Programming Interface》)

  ①文件系统从磁盘分区映射过来后分为4个部分,分别是:boot block、super block 、i-node table、 data blocks

  ②boot block 启动区,这是硬件中的一段特定区域,相当于主板上的BIOS块,硬盘上的MBR,这部分不是本篇的重点,不做详解

  ③super block 超级块,储存了文件系统的相关信息,文件系统块大小、文件系统根目录项、inode、操作函数等等

  ④inode table 索引节点表(就这样翻译吧),每个文件都有一个inode,通过inode可以操作该文件, inode表就相当于所有文件的集合。inode储存了文件的时间信息、用户信息、文件大小、操作函数等等

  ⑤data blocks 数据块,储存具体文件内容

  ⑥dentry table 目录项表,这个是隐藏boss,这个才是真正展现目录结构的表,从根目录下一层一层记录文件名(包括目录名,unix下一切皆文件),每个dentry对应一个inode

 

总结一下,如果要操作一个文件,首先从超级块中获取文件系统根目录项(dentry table),从根目录下一层一层找到文件所属dentry,根据dentry获取inode,根据inode的属性判断用户权限,获取操作函数,操作该文件。

linux文件系统

标签:文件名   buffer   种类型   fat   nod   索引   虚拟   ace   记录   

原文地址:https://www.cnblogs.com/theif/p/8901269.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!