随笔分类 - 文件系统
摘要:每个进程都有他自己当前的工作目录和它自己的根目录。这是内核用来标识进程与文件系统相互作用做必须维护的数据;每个进程的fs字段指向进程的fs_struct结构;struct path { struct vfsmount *mnt; struct dentry *dentry;};/include/linux line6struct fs_struct { int users; // 共享这个表的进程个数 rwlock_t lock; //用于表中字段的读写自旋锁 int umask; //打开文件设置文件权限是所使用的位掩码 int in_exec; struc...
阅读全文
摘要:linux/fs/open.cSYSCALL_DEFINE3(open, const char __user *, filename, int, flags, int, mode){ long ret; if (force_o_largefile()) flags |= O_LARGEFILE; ret = do_sys_open(AT_FDCWD, filename, flags, mode); /* avoid REGPARM breakage on x86: */ asmlinkage_protect(3, ret, filename, flags, mod...
阅读全文
摘要:super_block:存放已安装文件系统的信息;记录此 filesystem 的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式不相关信息等struct super_block { struct list_head s_list; /* Keep this first */ dev_t s_dev; /* search index; _not_ kdev_t */ unsigned long s_blocksize; unsigned char s_blocksize_bits; unsigned char s_dirt; unsigned lon...
阅读全文
摘要:简介:良好的操作系统性能部分依赖于操作系统有效管理资源的能力。在过去,堆内存管理器是实际的规范,但是其性能会 受到内存碎片和内存回收需求的影响。现在,Linux® 内核使用了源自于 Solaris 的一种方法,但是这种方法在嵌入式系统中已经使用了很长时间了,它是将内存作为对象按照大小进行分配。本文将探索 slab 分配器背后所采用的思想,并介绍这种方法提供的接口和用法。动态内存管理内存管理的目标是提供一种方法,为实现各种目的而在各个用户之间实现内存共享。内存管理方法应该实现以下两个功能:最小化管理内存所需的时间最大化用于一般应用的可用内存(最小化管理开销)内存管理实际上是一种关于权衡
阅读全文
摘要:1.sysf文件系统的全局变量static struct vfsmount *sysfs_mount;struct super_block * sysfs_sb = NULL;struct kmem_cache *sysfs_dir_cachep;2. 文件系统类型:file_system_typefs/sysfs/symlink.cstatic struct file_system_type sysfs_fs_type = { .name = "sysfs", .get_sb = sysfs_get_sb, .kill_sb = kill_...
阅读全文
摘要:对于每一个 mount 的文件系统,都由一个 vfsmount 结构来表示。对于每一个目录项,都用一个dentry来表示,例如对于/usr/local/lib : / usr local lib 表示4个目录项两者关系以一个例子来说明:例如我们要mount一个设备 /dev/sdb1 到 /home/my目录下,我们假设 /home/my 就是当前进程的根文件系统中的目录(即 home 和 my 都没有mount任何文件系统),命令行是: mount -t ext2 /dev/sdb1 /home/my我们mount的时候,传入的参数有三个: 要mount的设备( /dev/sdb1 ) ,.
阅读全文
摘要:1.file_system_type结构体说明:/include/linux/fs.hstruct file_system_type { const char *name; //文件系统名 int fs_flags; //文件系统类型标识 int (*get_sb) (struct file_system_type *, int, const char *, void *, struct vfsmount *);//读超级块的方法 void (*kill_sb) (struct super_block *);//删除超级块的方法 struct module *owner; ...
阅读全文
摘要:Ramfs is a very simple filesystem that exports Linux's disk caching mechanisms (the page cache and dentry cache) as a dynamically resizable RAM-based
阅读全文

浙公网安备 33010602011771号