第4节 虚拟文件系统 virtual filesystem (VFS)

Slides:



Advertisements
Similar presentations
数据结构的引入. 通讯录管理 社团机构管理 校园导航管理 通讯录管理 社团机构管理 校园导航管理.
Advertisements

第九章 文件系统 (一)文件系统的基本概念 (二)文件的逻辑结构与存取方法 (三)文件的物理结构 (四)文件目录结构 (五)文件的共享与保护
操作系统实践 第19章 Linux虚拟文件系统 山东科技大学操作系统教研组.
第2节 ext2文件系统 索引文件的的代表 索引文件 文件使用三部曲 文件共享 文件保护 举例.
第2章 文 件 系 统 2.1 文件系统及其分类 2.2 二级扩展文件系统ext2构成 2.3 虚拟文件系统VFS 2.4 缓冲区的缓存
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
C程序设计 第10章 文 件 主讲教师: 鲁 萍 西安建筑科技大学 理学院.
第十三章 文件.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
第12章 文 件 §12.1 概述 1.文件信息的集合,如一段程序、一段数据、一副图等
第九章 字符串.
作業系統 第十三章 檔案系統實例.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
第8章 文件 P 了解文件的处理过程 8.2 掌握文件的基本操作本领 8.3 文件的应用举例 *贯穿教学全过程的实例.
chapter 1-Introduction
Hadoop I/O By ShiChaojie.
程序讲解 第一题: 将指定文件的m行到n行字符写到显示屏上,m和n值从键盘输入。 运行时输入及结果: please enter m,n:
存储系统.
管理信息结构SMI.
辅导课程六.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
第十二章 文件 12.1 C文件概述 文件:存储在外部介质上数据的集合,是操作系统数据管理的单位 文件分类 按文件的逻辑结构: 按存储介质:
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
操作系统 Operating System.
文件读写实践 广州创龙电子科技有限公司 01 广州创龙电子科技有限公司
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
THE C PROGRAMMING LANGUAGE
如何生成设备节点 广州创龙电子科技有限公司
第9章 文件操作 文件 使用文件的目的 操作系统管理数据的基本单位 存储在外存储器上的数据的集合
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
实验四 Linux文件目录 一、实验目的 1、了解Linux文件系统与目录操作; 2、了解Linux文件系统目录结构;
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
Java语言程序设计 清华大学出版社 第8章 输入输出流(1).
Linux的虚拟文件系统.
第9章 文件 学习目的与要求: 熟练掌握文件指针的使用 掌握与文件相关的函数 能够利用文件相关函数实现各种操作.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
一、文件的基本概念 第十三章 文 件 所谓“文件”是指一组相关数据的有序集合。 这个数据集有一
微机系统的组成.
作業系統 Operating System 第四單元 檔案系統
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
VisComposer 2019/4/17.
Main() { Dfas Asdfasf fasdfa } #include <stdio.h> void main( ) {
C语言程序设计 教案 崔武子制作
实验七 安全FTP服务器实验 2019/4/28.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
iSIGHT 基本培训 使用 Excel的栅栏问题
第二章 类型、对象、运算符和表达式.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Visual Basic程序设计 第13章 访问数据库
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
第13章 文 件.
_08文件操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
Google的云计算 分布式锁服务Chubby.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第七章 文件 7.1 文件的基本概念 7.2 文件类型指针 7.3 文件的打开与关闭 7.4 文件的读/写 7.5 文件的随机读/写
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第四章 UNIX文件系统.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
Linux文件系统.
入侵检测技术 大连理工大学软件学院 毕玲.
Presentation transcript:

第4节 虚拟文件系统 virtual filesystem (VFS) 通常一个操作系统会支持使用几个文件子系统 不同的文件系统的磁盘数据在内存怎么放? Linux支持的文件系统 Linux的VFS 进程与文件

FAT外、内存数据结构 CDS(当前目录结构) DBF(磁盘缓冲区) 外存: 内存: SFT(系统文件表) DPB链(驱动器参数块链) 数据块 FAT1 FAT2 目录区 盘卷总信息 Open()返回这个表的行号 内存: CDS(当前目录结构) DPB链(驱动器参数块链) SFT(系统文件表) 文件子系统的安装程序 文件子系统的建立程序 文件子系统拆除程序 打开、读写、关闭文件程序 ……….. DBF(磁盘缓冲区)

ext2的外、内存数据结构 外存: 内存: 块组3 块组2 块组1 块组0 引导块 数据块 索引节点表 组描述符 块位图 索引节点位图 超级块 内存: superblock inode dentry file

虚拟文件系统的引入 文件系统1 磁盘 驱动 虚拟文件系统 I/O系统 文件系统2 …….. 虚拟文件系统是在内存的 第4层抽象 第3层抽象 第2层抽象 第1层抽象 sec cyl head 文件系统1 磁盘 驱动 虚拟文件系统 I/O系统 文件系统2 …….. 虚拟文件系统是在内存的

Linux支持的文件系统 由于Linux自由软件的特点,很多人为Linux添加文件系统,所以。。。。。。。

文件系统分类 支持的文件系统可分为三类 基于磁盘的文件系统 网络文件系统 特殊文件系统 e.g ext2、ext3、VFAT、NTFS、ISO9660 CDROM… 网络文件系统 e.g NFS、Coda… 特殊文件系统 不占磁盘空间,e.g /proc

Linux支持的部分文件系统

虚拟文件系统(vfs) 第四层抽象

virtual filesystem (VFS) 正是这种抽像和映射,保证了Linux系统可以支持多种 介质的不同文件系统,使所有文件系统都具有基本相 同的外部表现

virtual filesystem (VFS) 操作函数 操作函数由实际的文件系统实现 VFS依据这些对象提供的信息和操作函数来完成将用 户的文件请求映射到实际文件系统的操作

数据结构的建立 结构体的数据由实际文件系统的相应的数据来填充 各个数据结构的对象存在于内存 只内存有 superblock inode dentry file 只内存有

Superblock VFS的superblock和文件系统一一对应,代表一个实 际的文件系统 设备标识符、文件系统标志、数据块大小、文件系统的特殊 信息、文件系统的使用信息、超级块操作集指针 VFS的superblock和文件系统一一对应,代表一个实 际的文件系统 superblock在文件系统挂载时建立,在文件系统卸 载后撤销 存在同步更新的问题,所以,VFS也会周期性地将 所有发生改变的Superblock写回磁盘

Superblock与介质文件系统 ext2: FAT: 块组3 块组2 块组1 块组0 引导块 数据块 索引节点表 组描述符 块位图 索引节点位图 超级块 FAT: 数据块 FAT1 FAT2 目录区 盘卷总信息

inode inode结构体代表文件系统中的一个文件 inode信息的获取 inode信息同步 仅当文件被打开时,其对应的VFS inode结构体才在内存中创建 inode信息的获取 从磁盘读入文件的FCB inode信息同步 与超级块相同,inode也存在同步更新的问题,所以,VFS也会周 期性地将所有发生改变的inode写回磁盘

inode与介质文件系统 ext2: FAT: 块组3 块组2 块组1 块组0 引导块 数据块 索引节点表 组描述符 块位图 索引节点位图 超级块 FAT: 数据块 FAT1 FAT2 目录区 盘卷总信息

file、dentry、inode三者关系 用户可见

举例 printf("从键盘输入%d个字符:",N); for(i=0;i<N;i++) { ch=getchar(); fputc(ch,fp); } fclose(fp); printf("文件的内容如下:\n"); if((fp=fopen("file2.txt","r"))==NULL) { printf("不能打开文件!\n"); exit(0); } while(!feof(fp)) { ch=fgetc(fp); putchar(ch); } } #include <stdio.h> #include "stdlib.h" #define N 8 void main() { int i; char ch; FILE *fp; if((fp=fopen("file2.txt","w"))==N ULL) {printf("不能打开文件!\n"); exit(0); }

file 从用户(进程)角度看 file结构体描述进程打开的文件 file结构体因open()系统调而创建,因close()而销毁 进程直接处理文件,关心文件的访问模式、以及读、 写等操作,而不是superblock、inode、dentry file结构体描述进程打开的文件 当进程open()一个文件,VFS将为它建立一个file结构 file结构 文件打开模式(f_mode) 读/写位置指针(f_pos) 文件访问计数(f_count) 文件的目录项指针(f_dentry) 文件操作集指针(f_op) file_operations文件操作集结构体 它由一组对文件内容进行操作的函数指针组成,如read()、 wirte()、lseek()等。 file结构体因open()系统调而创建,因close()而销毁

dentry dentry 结构体用来记录目录项(directory entry) 路径名中的每一个目录项都对应一个dentry e.g., /home/lkp/Chapter06.txt 为/, home, lkp, and Chapter06.txt分别创建dentry 当VFS首次解析一个路径名时,它依次读取路径中的每个目录或文件,为每个分量建立一个dentry结构 VFS将这些已建立的dentry结构按目录关系链接在一起 在后续的文件查找操作中,VFS只需沿dentry的链接结构进行查找,可以很快地找到目标文件的dentry结构,然后得到它的VFS inode

为什么要dentry linux在定位一个文件时需要沿该文件的路径逐级访问路径中的 目录 如果每次都要从磁盘读取目录文件的话,访问文件的效率就会很 低。 为了方便查找操作,VFS引入了目录项(dentry)的概念。

dentry 与 inode 的关系 dentry是对文件的逻辑描述 dentry与inode结合可以完整地表示一个文件 VFS inode描述文件的属性及其内容的物理存储 dentry与inode结合可以完整地表示一个文件 dentry可看作是访问一个文件的入口,查找文件就是 在dentry链表中沿路径找到目标dentry的过程 文件路径名

进程与其相关文件之间的关系 多个进程可以同时打开和操作同一个文件 一个文件 同一个文件在内存中可能存在多个file结构体对象 对应inode是唯一的 但其对应的file结构体对象可能不唯一(被多个进程打开 “读”)

多个进程同时打开同一个文件 PCB1 file dentry inode PCB2 file dentry

多个进程同时打开同一个文件 PCB1 file dentry inode PCB2 file

多个进程同时打开同一个文件 PCB1 file dentry inode PCB2

总结 每个文件系统在内存都有: superblock inode dentry file 高级语言编程者可以看到file结构