
linux虚拟文件系统
文章平均质量分 77
bullbat
爱好程序设计,对待问题喜欢追根溯源。
展开
-
Linux虚拟文件系统(概述)
Linux虚拟文件系统是一个内核软件层,用来处理与UNIX标准文件系统相关的所有系统调用。其健壮性表现在能为各种文件系统提供一个通用的接口。Linux虚拟文件系统支持的文件系统可以划分为三种主要的类型:磁盘文件系统这些文件系统管理在本地磁盘分区中可用的磁盘空间或者其他可以起到磁盘作用的设备(比如说一个USB闪存)。网络文件系统这些文件系统允许访问属于其他网络计算机的文件系统所包原创 2012-02-08 09:58:54 · 8930 阅读 · 3 评论 -
Linux虚拟文件系统之文件打开(sys_open())
在文件读写之前,我们必须先打开文件。从应用程序的角度来看,这是通过标准库的open函数完成的,该函数返回一个文件描述符。内核中是由系统调用sys_open()函数完成。/*sys_open*/SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, int, mode){ long ret; /*检查是否应原创 2012-02-13 15:43:28 · 9593 阅读 · 0 评论 -
Linux虚拟文件系统之文件系统卸载(sys_umount())
Linux中卸载文件系统由umount系统调用实现,入口函数为sys_umount()。较于文件系统的安装较为简单,下面是具体的实现。/*sys_umont系统调用*/SYSCALL_DEFINE2(umount, char __user *, name, int, flags){ struct path path; int retval; /*找到装载点的vfsmount原创 2012-02-13 10:35:41 · 3913 阅读 · 0 评论 -
Linux虚拟文件系统之文件系统安装(sys_mount())
对于前面的根目录文件系统的安装中涉及到了mount系统调用的调用,这里我们考虑一个文件系统将被安装在一个已经安装文件系统之上的情形,即调用mount系统调用实现。mount系统调用被用来安装一个普通文件系统,他的服务例程为sys_mount()。 /*sys_mount系统调用*//*dev_name为待安装设备的路径名;dir_name为安装点的路径名;type是表示文件系统类型的字原创 2012-02-10 19:09:36 · 4628 阅读 · 0 评论 -
Linux虚拟文件系统(内核初始化<一>)
Linux虚拟文件系统在内核初始化的start_kernel()函数中主要调用两个函数来实现。asmlinkage void __init start_kernel(void){ …… vfs_caches_init_early(); …… vfs_caches_init(totalram_pages); ……}一、早期初始化虚拟文件系统的早期初始化有函数vfs原创 2012-02-09 15:09:57 · 4948 阅读 · 2 评论 -
Linux虚拟文件系统(安装根文件系统)
安装根文件系统式系统初始化的关键部分。Linux内核允许根文件系统放在很多不同的地方,比如硬盘分区、软盘、通过NFS共享的远程文件系统以及保存在ramdisk中。内核要在变量ROOT_DEV中寻找包含根文件系统的磁盘主设备号。当编译内核时,或者像最初的启动装入程序传递一个合适的“root”选项时,根文件系统可以被指定为/dev目录下的一个设备文件。安装根文件系统分为两个阶段:1,内核安装特原创 2012-02-10 11:36:09 · 4051 阅读 · 0 评论 -
Linux虚拟文件系统(内核初始化<二>)
这部分主要对linux虚拟文件系统内核初始化部分做些补充。关于shrinker,inode和dentry cache初始化阶段都需要注册自己的shrinker,用于缩减cache。两个操作原理类似。shrinker数据结构介绍/* * A callback you can register to apply pressure to ageable caches. * * 'shr原创 2012-02-09 16:54:10 · 6498 阅读 · 2 评论 -
Linux虚拟文件系统(节点路径搜索)
前面对linux虚拟文件系统的架构以及设计到的数据结构有了一个整体的认识,这里看看linux内核怎么根据给定的文件路径名在内存中找到和建立代表着目标文件或目录的dentry结构和inode结构。文件路径的搜索是文件系统中最基本也是最重要的一部分之一,后面我们会看到,文件的打开、关闭等等操作都将涉及到文件路径的搜索。下面我们看看linux内核中时怎么实现的。一、搜索中所用数据结构/*这个数据原创 2012-02-08 15:49:31 · 5915 阅读 · 2 评论 -
Linux虚拟文件系统之文件读取(sys_read())
在文件成功打开之后,进程将使用内核提供的read和write系统调用,来读取或修改文件的数据。内核中文件读写操作的系统调用实现基本都一样,下面我们看看文件的读取。/*sys_read()*/SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count){ struct file *file; ssiz原创 2012-02-13 17:13:20 · 4482 阅读 · 1 评论