OK6410A 开发板 (八) 90 linux-5.11 OK6410A linux文件系统导读

  • 文件系统是什么
文件系统是
	为了处理信息的,以目录的方式展示这些信息,并供用户增删改查
	且用户的接口是文件名
  • linux 真实文件系统分类
信息存储在内核之中:sysfs,procfs,rootfs,devtmpfs

信息存储在内核之外:
	存储在 网络 : nfs cifs
	存储在 硬盘 : ext2/3/4 ntfs

// vfs 并不是真实文件系统,是个框架
// vfs 存在于内核中
  • 我们如何熟悉 linux下的文件系统
从流程去熟悉
1. 挂载 	: 涉及到 super_block
2. 文件操作  : 涉及到 inode
3. search及真实文件系统中层级目录的维护 	: 涉及到 dentry
4. 文件IO 	: 涉及到 file

每个流程(例如挂载都会涉及到)
	1. VFS
	2. 真实文件系统(sysfs或者nfs或者ext2)
  • linux运行时 , 文件系统在哪里 与 文件系统访问加速
如果是 sysfs , 则 只在本机内存中
如果是 nfs , 则在 本机内存中和 服务器端硬盘
如果是 ext4, 则在 本机内存中 和 本机硬盘

对于 ext4 这些硬盘文件系统来讲
	内存访问比硬盘访问快
		所以打算将硬盘上的整个文件系统加载到内存中
	但是内存空间比硬盘小
		所以实现中会将硬盘上的部分信息加载到内存中
	因为同样的信息在内存和硬盘上是两份,且我们会改动内存中的信息
		所以需要用同步机制来保证内存和硬盘中文件系统相关信息的一致
文件系统加速涉及到
	super_block
	dentry
	inode
	address_space
	file
文件系统 访问实例
  • 从文件名(/home/pop/xxx/yyy/my_file)到文件内容
1."/" -> inode 
	一开始是/,可以直接获取 根目录的inode号码

2. inode -> dentry
	inode之后,读取该inode通常在高速缓冲中,然后根据其磁盘块指针(应该是很小的,直接指针,找到对应的磁盘块,理论上应该也在高速缓冲中),从这里面就可以获取到目录表项,

3. dentry -> inode
	然后查询两个/之间的那个文件的名称,如果有,再看下当前进程的用户是否有权限搜索、读取目录等,类似于权限控制,如果有的话,就把这个节点的inode号得到

4. 重复 23 ,直到找到 目标对象(在这里为my_file)inode (目标对象可以是目录文件和普通文件和其他类型文件)/home/pop/xxx/yyy/my_file 为例

"/" -> 	"/"的inode 		-> "/" 的dentry 	->
		"home"的inode 	-> "home" 的dentry 	->
		"pop"的inode 	-> "pop" 的dentry 	->
		"xxx"的inode 	-> "xxx" 的dentry 	->
		"yyy"的inode 	-> "yyy" 的dentry 	->
		"my_file"的inode-> "my_file" 的地址块,大小,权限
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值