随笔分类 -  内核 文件系统

摘要:之前分析“close系统调用分析-性能优化” 时 出现了一个sockfs 网络文件的问题,当时是linux 2.6内核,目前看下新kernel; 一、简介 Linux中"万物皆文件",socket在Linux中对应的文件系统叫Sockfs,每创建一个socket,就在sockfs中创建了一个特殊的文 阅读全文
posted @ 2022-08-09 10:29 codestacklinuxer 阅读(47) 评论(0) 推荐(0)
摘要:VFS层调用流程: 系统调用sys_read会调用到vfs层的__vfs_read接口如下,在vfs层接口会调用大具体的文件系统的 ssize_t __vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos) { 阅读全文
posted @ 2022-01-16 23:47 codestacklinuxer 阅读(64) 评论(0) 推荐(0)
摘要:背景 一个具体的文件在打开后,内核会在内存中为之建立一个struct inode结构(该inode结构也会在对应的file结构体中引用),其中的i_mapping域指向一个address_space结构。这样一个文件就对应一个address_space结构;address_space对象是文件系统中 阅读全文
posted @ 2022-01-15 18:30 codestacklinuxer 阅读(166) 评论(0) 推荐(0)
摘要:由于设备需要能回复出产设置功能,以前都是将最原始的文件都备份一份, 但是目前存在一个问题:系统升级后只是修改了一小部分文件,很多内容没有修改,这样就导致备份的大多数内容其实在浪费空间;那能不能和fork 那样做到cow呢?也就是升级的时候你要修改此文件,我才去备份!这样节约存储空间。so可以参考do 阅读全文
posted @ 2022-01-14 17:35 codestacklinuxer 阅读(153) 评论(0) 推荐(0)
摘要:系统初始化期间,Linux 都首先要在内存当中构造一棵VFS的目录树,实际上便是在内存中建立相应的数据结构。 文件系统注册 在 Linux 源代码中,每种实际的文件系统用以下的数据结构表示: struct file_system_type { const char *name; int fs_fla 阅读全文
posted @ 2022-01-09 15:50 codestacklinuxer 阅读(47) 评论(0) 推荐(0)
摘要:linux虚拟文件系统四大对象: 1)超级块(super block) 2)索引节点(inode) 3)目录项(dentry) 4)文件对象(file) super_block /*超级块代表了整个文件系统,超级块是文件系统的控制块,有整个文件系统信息,一个文件系统所有的inode都要连接到超级块上 阅读全文
posted @ 2022-01-08 13:43 codestacklinuxer 阅读(338) 评论(0) 推荐(0)
摘要:操作文件的本质是将磁盘文件数据映射到进程内存中,从进程如何映射到该文件系统,中间还有一系列的过程,主要包括 进程发出文件操作命令,通过系统调用如sys_open、sys_read、sys_write调用相应内核函数 在内核中为进程打开的文件和系统文件创建数据结构进行维护 通过虚拟文件系统对各种不同的 阅读全文
posted @ 2022-01-06 23:43 codestacklinuxer 阅读(203) 评论(0) 推荐(0)
摘要:找到了几年前的学习笔记;今天附上 虚拟文件系统(Virtual File System,简称VFS)是Linux内核的子系统之一,它为用户程序提供文件和文件系统操作的统一接口,屏蔽不同文件系统的差异和操作细节。借助VFS可以直接使用open()、read()、write()这样的系统调用操作文件,而 阅读全文
posted @ 2022-01-06 20:10 codestacklinuxer 阅读(179) 评论(0) 推荐(0)
摘要:这段时间一直都在处理整个系统的bring up, 对系统盘 数据盘挂载 分区, uboot 启动内核、挂载根文件系统等问题debug。目前记录一下学习到的文件系统知识。 文件系统设计了如下特性 采取树形结构、文件夹设计 对热点文件进行缓存,便于读写 采用索引结构,便于查找分类 维护一套数据结构用于记 阅读全文
posted @ 2021-12-28 23:18 codestacklinuxer 阅读(44) 评论(0) 推荐(0)