标签:文件名 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的属性判断用户权限,获取操作函数,操作该文件。
标签:文件名 buffer 种类型 fat nod 索引 虚拟 ace 记录
原文地址:https://www.cnblogs.com/theif/p/8901269.html