深入理解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虚拟文件系统 首先要明白 ...
随机推荐
- VTK中的装配体(vtkAssembly)
Actors有时也会组合在一起形成层次结构,当其中的某个Actor运动时,会影响到其他Actor的位置.例如,一个机械手臂可能由上臂.前臂.手腕和末端等部分通过关节连接起来.当上臂绕着肩关节旋转时,我 ...
- mysql字符生命周期
mysql的字符集,对数据的导入导出很关键,明白自己集在不同阶段不同场景下的意义即为重要! 01.查看mysql当前字符集 show variables like '%cahr%'; 02.用户请求m ...
- Photoshop CS6 操作记录
全局快捷键 橡皮 E 画笔 B 魔棒工具 W 钢笔工具 P 选区工具 M 移动画布 按住Space后鼠标拖动 放大缩小画布 Ctrl+-, Ctrl++ 调出/收回标尺 Ctrl+R 调整画笔大小 [ ...
- 自制小工具含源码——SPTC上海交通卡余额查询
说明 需求 开发 其他
- MAVEN 搭建APPFUSE
2010-05-21 利用Maven构建appfuse. 步骤如下: 1)Maven下载,下载apache-maven-2.2.1-bin.zip 下载地址:http://apache.freela ...
- [转载]Linux下终端字体颜色设置方法
原文地址:Linux下终端字体颜色设置方法作者:router 网上类似的文章有很多,但是都是转来转去的,没有经过测试,按照很多文章的方法会造成你设置之后的终端在换行和删除输入字符时终端显示会乱七八糟, ...
- KVM虚拟机的创建、管理与迁移
[日期:2012-06-01] KVM虚拟机管理 一.环境 role hostname ip OS kvm_server target ...
- 设置span在div中垂直居中
转自:https://blog.csdn.net/weirenkuan/article/details/51177695 使用display:table-cell,span中内容无论多少,都可以垂直居 ...
- 理解bleu
bleu全称为Bilingual Evaluation Understudy(双语评估替换),是2002年提出的用于评估机器翻译效果的一种方法,这种方法简单朴素.短平快.易于理解.因为其效果还算说得过 ...
- Tensorflow CNN入门
一.概论 以图像识别来举例,比如我们让计算机如何识别一张猫的图片识别出猫呢? 老式的计算机视觉是如何做的呢? 比如OpenCV: 首先理解很多算法,比如如何检测线条(Edge Detection) 如 ...