深入理解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虚拟文件系统 首先要明白 ...
随机推荐
- 【Linux】找出文件之间的差异
使用命令comm可以找出2个文件之间的差异 现在有文件如下: Linux:/qinys # cat A.txt apple lemon onion orange pear Linux:/qinys # ...
- VTK中导入并显示STL、3DS文件
VTK(visualization toolkit)是一个开源的免费软件系统,主要用于三维计算机图形学.图像处理和科学计算可视化.VTK是在三维函数库OpenGL 的基础上采用面向对象的设计方法发展起 ...
- awbeci—一个帮助你快速处理日常工作的网址收集网站
大家好,我是awbeci作者,awbeci网站是一个能够快速处理日常工作的网址收集网站,为什么这样说呢?下面我将为大家介绍这个网站的由来,以及设计它的初衷和如何使用以及对未来的展望和计划,以及bug反 ...
- According to TLD or attribute directive in tag file, attribute items does not accep t any expressions
According to TLD or attribute directive in tag file, attribute items does not accep t any expression ...
- Linux十大常用命令
No 命令 功能 实例 解释 mkdir 创建目录 mkdir newdirmkdir dir/subdirmkdir -p newdir/subdir -p: 可以是一个路径名称.此时若路径中的某些 ...
- 【laravel5.4】php artisan 常用命令
路由缓存:/www/wd***/php/bin/php artisan route:cache 查看全部路由并输出到txt文件:/www/wd***/php/bin/php artisan r ...
- 自定义cnblogs样式小结
写在前面: 博客模版(皮肤)很多, 这里选择了一套相对"干净"的模版, 这套模版本身已经很好了, 简约大方, 在此基础上进行改动一下. 1.页面背景图源自网络. 2.回到顶部i ...
- eclipse的jdk版本和spring冲突问题WARN XmlWebApplicationContext:1060 - Exception thrown from LifecycleProcessor on context close
项目环境: jdk1.8 tomcat7 问题:eclipse启动tomcat后控制台报如下错误: WARN XmlWebApplicationContext:1060 - Exception thr ...
- 给你出道题---N个数字的静态决策区分问题
决策,是世界上最重要的事情. 走路分两步:看准方向,大步前进.看准方向的过程就是决策. 任何一个问题,都对应两个空间:解空间和决策空间.我们所要做的就是使用决策空间去划分解空间. 决策可以分成两类:单 ...
- APP缓存数据线程安全问题
问题 一般一个 iOS APP 做的事就是:请求数据->保存数据->展示数据,一般用 Sqlite 作为持久存储层,保存从网络拉取的数据,下次读取可以直接从 Sqlite DB 读取.我们 ...