深入理解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、XFS
2、网络文件系统
这些文件系统允许轻易的访问属于其他网络计算机的文件系统所包含的文件。虚拟文件系统所支持的一些著名的网络文件系统有:NFS、Coda、AFS、CIFS(Window的通用网络文件 系统)以及NCP
3、特殊文件系统
这些文件系统不管理本地或者远程磁盘空间。/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锁:
深入理解Linux内核-虚拟文件系统的更多相关文章
- (转)linux内核虚拟文件系统浅析
转自http://hi.baidu.com/_kouu/item/4e9db87580328244ef1e53d0 ###### 虚拟文件系统(VFS)在我看来, "虚拟"二字主要 ...
- (转)linux内核虚拟文件系统浅析【转】
转自:https://www.cnblogs.com/woainilsr/p/3590716.html 转自http://hi.baidu.com/_kouu/item/4e9db8758032824 ...
- 小白自制Linux开发板 三. Linux内核与文件系统移植
上一篇完成了uboot的移植,但是想要愉快的在开发板上玩耍还需要移植Linux内核和文件系统. 1.Linux内核 事实上对于F1C100S/F1C200S,Linux官方源码已经对licheepi ...
- 读书笔记之Linux系统编程与深入理解Linux内核
前言 本人再看深入理解Linux内核的时候发现比较难懂,看了Linux系统编程一说后,觉得Linux系统编程还是简单易懂些,并且两本书都是讲Linux比较底层的东西,只不过侧重点不同,本文就以Linu ...
- 《深入理解Linux内核》 读书笔记
深入理解Linux内核 读书笔记 一.概论 操作系统基本概念 多用户系统 允许多个用户登录系统,不同用户之间的有私有的空间 用户和组 每个用于属于一个组,组的权限和其他人的权限,和拥有者的权限不一样. ...
- 【读书笔记::深入理解linux内核】内存寻址【转】
转自:http://www.cnblogs.com/likeyiyy/p/3837272.html 我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0 ...
- 【读书笔记::深入理解linux内核】内存寻址
我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0xC0000000:这是内核地址空间的地址转换关系. 这句话瞬间让我惊呆了,根据我的CPU的知识,开 ...
- 嵌入式Linux内核+根文件系统构建工具-Buildroot 快速入手指导【转】
本文转载自:https://my.oschina.net/freeblues/blog/596448 嵌入式Linux内核+根文件系统构建工具-Buildroot 快速入手指导 buildroot 是 ...
- [C++]Linux之虚拟文件系统[/proc]中关于CPU/内存/网络/内核等的一些概要性说明
声明:如需引用或者摘抄本博文源码或者其文章的,请在显著处注明,来源于本博文/作者,以示尊重劳动成果,助力开源精神.也欢迎大家一起探讨,交流,以共同进步- 0.0 1.Linux虚拟文件系统 首先要明白 ...
随机推荐
- oracle 清空表数据的2种方式及速度比较
1.情景展示 现在,需要清空该表数据 2.实现方式 为了比较删除速度,对该表进行复制 确认复制的表和原来的表数据是否一致 方式一:使用truncate table实现 方式二:使用de ...
- 【Linux】ssh建立隧道tunnel连接到内网设备
root@192.168.1.105 建立隧道: ssh -l root -N -f -R 9103:127.0.0.1:2222 work@11.11.13.17 解析:把本地127.0.0.1:2 ...
- 学习练习SQL的数据库employee文件
这个地址是一个已经集成了employee的database的sql文件.所以你可以下载这个sql文件,然后执行sql语句到对应的数据库中,这样你就可以练习sql语句了. 第一个链接是用户指导如何使用的 ...
- visual studio运行时库MT、MTd、MD、MDd的研究
在开发window程序是经常会遇到编译好好的程序拿到另一台机器上面无法运行的情况,这一般是由于另一台机器上面没有安装响应的运行时库导致的,那么这个与编译选项MT.MTd.MD.MDd有什么关系呢?这是 ...
- ROS中发布激光扫描消息
激光雷达工作时会先在当前位置发出激光并接收反射光束,解析得到距离信息,而后激光发射器会转过一个角度分辨率对应的角度再次重复这个过程.限于物理及机械方面的限制,激光雷达通常会有一部分“盲区”.使用激光雷 ...
- mysql加密函数
md5 password() //案例 mysql> select md5('xiaodeng'); +----------------------------------+ | md5('xi ...
- excel如何快速实现数据区域的框选
这里会存在2个情况,一个是快速的选择一行或者一列的数据,另外一个是快速的选择一块的数据(数据区域) 1.当有上万条数据时,怎么快速的选择一行或一列的数据? 方法:将鼠标放在需要选择的数据区域的开头位置 ...
- C#程序实现窗体的最大化/最小化
C#程序实现窗体的最大化/最小化 http://blog.csdn.net/jiangqin115/article/details/41251215 private void button1_Clic ...
- HP ALM lis
<?xml version="1.0" encoding="UTF-8"?><license version="1.0"& ...
- Spark ML 几种 归一化(规范化)方法总结
规范化,有关之前都是用 python写的, 偶然要用scala 进行写, 看到这位大神写的, 那个网页也不错,那个连接图做的还蛮不错的,那天也将自己的博客弄一下那个插件. 本文来源 原文地址:htt ...