深入理解Linux内核-虚拟文件系统

Linux 成功的关键之一是它具有和其他操作系统和谐共存的能力

5个标准文件类型:1、普通文件2、目录文件3、符号链接文件4、设备文件5、管道文件

虚拟文件系统(Virtual FileSystem):内核软件层,用来处理与Unix标准文件系统相关的所有系统调用。健壮性表现在能为各种文件系统提供一个通用的接口。

VFS支持的文件系统可以分为三种主要类型:1、磁盘文件系统:  a、Linux使用的Ext2、Ext3,以及Reiser文件系统(ReiserFS);  b、Unix家族的文件系统,如sysv文件系统(System V, Coherent, Xenix)、UFS(BSD、SOlaris、NEXTSTEP),MINIX文件系统及 VERITAS VxFS (SCO UnixWare    )  c、Window的文件系统,如MS-DOS,VFAT,NTFS  d、ISO9660 CD-ROM 文件系统和通用磁盘格式(UDF)的DVD文件系统  e、其他有专利权的文件系统,如HPFS(IBM公司的OS/2)、HFS(苹果公司的Macintosh)、AFFS、ADFS  f、起源于非Linux系统的其他日志文件系统,如IBM的JFS、SGI、XFS2、网络文件系统  这些文件系统允许轻易的访问属于其他网络计算机的文件系统所包含的文件。虚拟文件系统所支持的一些著名的网络文件系统有:NFS、Coda、AFS、CIFS(Window的通用网络文件  系统)以及NCP3、特殊文件系统  这些文件系统不管理本地或者远程磁盘空间。/proc 文件系统是特殊文件系统的一个典范。

通用文件模型:1、能表示所有支持的文件系统2、要实现每个具体的文件系统,必须将其物理组织结构转换为虚拟文件系统的通用文件模型。

文件分配表(File Allocation Table,FAT):基于目录的文件系统

读取文件:  当我们调用read函数时,内核会调用相应的sys_read()服务例程,在sys_read()中文件有结构File结构来表示,其包含一个f_op字段,这个字段包含了读取各种文件系统的方法  例如:file->f_op->read(), 针对不同的文件系统,由不同的read方法来读取

磁盘高速缓存:属于软件机制,允许内核将原本存在磁盘上的某些信息保存在RAM中,以便对这些数据的进一步访问能快速进行,不必慢速访问磁盘。  a、目录项高速缓存  b、索引节点高速缓存  c、页高速缓存

硬件高速缓存:是一个快速静态RAM,它加快了直接对慢速动态RAM的请求。

内存高速缓存:是一种软件机制,引入它是为了绕过内核内存分配器(参见slab分配器)

文件系统的注册:一个文件系统要能够被使用,需要将他的类型注册到一个单向链表中。

Linux的根文件系统:内核在引导阶段直接安装,并拥有系统初始化脚本以及最基本大系统程序。

安装点(mount point):安装文件系统的目录。

进程的命名空间:每个进程可以拥有自己的已安装文件系统树。

文件系统的安装:1、多数类Unix内核中,每个文件系统只能安装一次;例如 存放在/dev/fd0 软磁盘上的ext2文件系统通过命令(mount -t ext2 /dev/fd0 /flp)安装在/flp  在通过umount卸载之前,所有作用在/dev/fd0的安装命令都会失效。2、Linux不同,同一个文件系统可以被安装多次。3、不管一个文件系统被安装了多少次,它都只有一个超级块对象。4、同一个安装点可以安装多个文件系统5、后安装的会隐藏先安装的,当顶层顶安装被删除后,下面的系统又变为可现

文件系统的卸载:umount()

路径名查找:1、路径如果是以‘\’开头,是绝对路径,从 current->fs->root开始搜索2、否则是相对路径,从current->fs->pwd开始搜索

标准路径名查找:

父路径名查找:

符号链接的查找:需要注意循环引用,采用计数器解决。

文件加锁:

Linux 文件加锁:

FL_FLOCK锁 和FL_POSIX锁:
时间: 2024-11-08 00:30:28

深入理解Linux内核-虚拟文件系统的相关文章

20150514我读《深入理解linux内核》之虚拟文件系统笔记

20150514我读<深入理解linux内核>之虚拟文件系统笔记 2015-05-14 Lover雪儿 虚拟文件系统所隐含的思想就是把很多不同种类的文件系统的共同信息放入内核,其中有一个字段或者函数来支持Linux所支持的所有实际文件系统所提供的任何操作.对所调用的每个读.写或者其他函数,内核都能把他们替换成支持本地Linux文件系统.NTFS文件系统,或者文件所在的任何其他文件系统的实际函数. 虚拟文件系统可以称为虚拟文件系统转换,是一个内核软件层,用来处理与Unix标准文件系统相关的所有系

Linux内核,文件系统移植过程中出现的一些问题与解决办法

1.bootm地址和load address一样 此种情况下,bootm不会对uImage header后的zImage进行memory move的动作,而会直接go到entry point开始执行.因此此时的entry point必须设置为load address + 0x40.如果kernel boot过程没有到uncompressing the kernel,就可能是这里设置不对. boom address == load address == entry point - 0x40 2.

【深入理解Linux内核】《第一章 绪论》笔记

1.商用Unix操作系统包括: - AT&T公司开发的(System V Release 4) SVR4. - 加州伯克利分校发布的4.4BSD - Dec公司(现属于HP)的Digital Unix - IBM公司的AIX - HP公司的HP-UX - Sun公司的Solaris   - Apple公司的Mac OS X 所有商业版本都是SVR4或4.4BSD的变体,并且都趋向于遵循某些通用标准:如IEEE的POSIX(Portable Operating Systems based on U

【笔记】深入理解Linux内核--内存寻址(一)

<深入理解Linux内核>中关于内存管理一共有三章,这是其中的一章,还有第八章,讨论内核怎样给自己分配主存,以及第九章,考虑怎样给进程分配线性地址. 内存地址 -- (P40) 以下三种地址是相对与8086处理器来说的. 逻辑地址(logical address) 包含在机器语言指令中用来指定一个操作数或一条指令的地址.比如下面反汇编代码中最左边的地址即逻辑地址. 1 40052d: 55 push %rbp 2 40052e: 48 89 e5 mov %rsp,%rbp 3 400531:

【深入理解Linux内核】《第二章 内存寻址》笔记 (2014-06-28 12:38)

2.1 内存地址 逻辑地址:段+偏移 线性地址(虚拟地址) 物理地址 2.2硬件中的分段 2.2.1 段选择符和段寄存器 15                                                3  2  1   0 ------------------------------------------------|                                                    |TI |RPL  ||         索引号 

【读书笔记::深入理解linux内核】内存寻址

我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0xC0000000:这是内核地址空间的地址转换关系. 这句话瞬间让我惊呆了,根据我的CPU的知识,开启分页之后,任何寻址都要经过mmu的转换,也就是一个二级查表的过程(386) 难道内核很特殊,当mmu看到某个逻辑地址是内核传来的之后,就不查表了,直接减去0xC0000000,然后就传递给内存控制器了??? 我发现网上也有人和我问了同样的问题,看这个问题 这句话太让人费解了,让人费解到以至于要怀疑

深入理解Linux内核day04--内核同步

内核同步 你可以把内核看作是不断对请求响应的服务器,这些请求可能来自在CPU上执行的进程,也可能来自发出中断请求的外部设备. 内核如何为不同的请求提供服务 为了更好的理解内核代码是如何执行的,我们把内核看作必须满足两种请求的侍者:一种请求来自于顾客,另一种请求来自数量有限的几个不同的老板. 对不同的请求,侍者采用如下的策略: 1.老板提出请求时,如果侍者正空闲,则侍者开始为老板服务. 2.如果老板提出请求时侍者正在为顾客服务,那么侍者停止为顾客服务,转而去为老板服务. 3.如果一个老板提出请求时

从文件 I/O 看 Linux 的虚拟文件系统

1 引言 Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等.通过使用同一套文件 I/O 系统 调用即可对 Linux 中的任意文件进行操作而无需考虑其所在的具体文件系统格式:更进一步,对文件的 操作可以跨文件系统而执行.如图 1 所示,我们可以使用 cp 命令从 vfat 文件系统格式的硬盘拷贝数据到 ext3 文件系统格式的硬盘:而这样的操作涉及到两个不同的文件系统. 图 1. 跨文件系统的文件操作 “一切皆是文件”是 Unix/Linux 的基本哲学之一.不

准备把深入理解Linux内核这本书细看一遍

第一章 绪论 Linux与其他类Unix内核的比较 硬件的依赖性 Linux版本 操作系统基本概念 Unix文件系统概述 Unix内核概述 第二章 内存寻址 内存地址 硬件中的分段 Linux中的分段 硬件中的分页 Linux中的分页 第三章 进程 进程.轻量级进程和线程 进程描述符 进程切换 创建进程 撤销进程 第四章 中断和异常 中断信号的作用 中断和异常 中断和异常处理程序的嵌套执行 初始化中断描述符表 异常处理 软中断及tasklet 工作队列 从中断和异常返回 第五章 内核同步 内核如