一. VFS抽象: 提供一个通用模型,包括了文件操作全集,抽象给上层使用.
-- V F S --
用户 write() => sys_write() => 具体文件系统调用 ==> 物理设备
VFS中,目录也当做普通文件看待,操作集没有本质不同。
文件的信息和文件本身分两部分存储,信息放在inode里面(如权限,size,owner等);
查看目前filesystem的情况可以用:
a. mount
b. df -lhT
c. " fdisk /dev/sda " + p
二.代码
据说VFS主要有四种对象类型:super, inode, dentry, file;下面分别介绍和试用看看.
super :
super_block结构,这是个链表;安装文件系统时,会用alloc_super()创建并初始化。
super_ops包含 创建/删除/修改 inode等.
inode:
代表一个文件的操作; 例如symlink, rename等.
dentry:
"路径目录项", 是临时生成的,用来查找路径方便.
file:
这个最常用了,比如write - read - seek 等。
.三. 关于I/O设备
块设备与字符设备。块设备指硬盘灯,能随机读取。字符设备指键盘等,只能顺序读。
块是最小寻址单位,必须是2幂,一般512或1K。