Linux操作系统分析

上传人:ldj****22 文档编号:48636383 上传时间:2018-07-18 格式:PPT 页数:84 大小:2.17MB
返回 下载 相关 举报
Linux操作系统分析_第1页
第1页 / 共84页
Linux操作系统分析_第2页
第2页 / 共84页
Linux操作系统分析_第3页
第3页 / 共84页
Linux操作系统分析_第4页
第4页 / 共84页
Linux操作系统分析_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《Linux操作系统分析》由会员分享,可在线阅读,更多相关《Linux操作系统分析(84页珍藏版)》请在金锄头文库上搜索。

1、Linux操作系统分析中国科学技术大学计算机系 陈香兰(051287161312) 助教:裴建国、冯晓静 Autumn 2008文件系统vUnix文件系统概述 vLinux的虚拟文件系统 vExt2文件系统简介Date2Linux OS analysisUnix文件系统概述中国科学技术大学计算机系 陈香兰(051287161312) 助教:裴建国、冯晓静 Autumn 2008提纲v文件 v硬链接和软链接 v文件类型 v文件描述符与索引节点 v访问权限和文件模式 v文件操作的系统调用Date4Linux OS analysis文件vUnix文件是以字节序列组成的信息载体v内核不解释文件的内

2、容 v文件的组织Date5Linux OS analysis文件、目录和目录树v文件被组织成一个树状的命名空间 文件:叶结点 目录:根节点(根目录“/”)和中间节点 l目录使用一个目录名标识。 l目录节点包含它下面的文件及子目录的所有信息 v文件名和目录名 不能使用“/”和字符“0”,其他ASCII字符都OK 长度:不同的文件系统有不同的限制, 通常 #include #include int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); int cr

3、eat(const char *pathname, mode_t mode); #include ssize_t write(int fd, const void *buf, size_t count); int unlink(const char *pathname);#include #include off_t lseek(int fildes, off_t offset, int whence); #include int rename(const char *oldpath, const char *newpath); Date16Linux OS analysisLinux的虚拟文

4、件系统中国科学技术大学计算机系 陈香兰(051287161312) 助教:裴建国、冯晓静 Autumn 2008提纲v虚拟文件系统VFS的作用 vVFS的数据结构v文件系统类型 v文件系统安装 v路径名查找 vVFS系统调用的实现v文件加锁Date18Linux OS analysis虚拟文件系统VFS的作用v虚拟文件系统 Virtual Filesystem Virtual Filesystem Switch VFS是一个软件层,用来处理与Unix标准文件系统 相关的所有系统调用。 l是用户应用程序与文件系统实现之间的抽象层 能为各种文件系统提供一个通用的、统一的接口 vLinux与其他类

5、Unix系统一样,采用虚拟文件系 统VFS来达到支持多种文件系统格式的目标Date19Linux OS analysisVFS在一个简单文件复制操作中的作用v假设用户输入以下shell命令 $ cp /floppy/TEST /tmp/test v其中, /floppy是MS-DOS的磁盘的一个挂载点(安装点) /tmp是Ext2文件系统中的一个目录 v对于cp命令而言,它不需要知道/floppy/TEST 和/tmp/test分别是什么文件系统类型 在cp命令中,它通过VFS提供的系统调用接口进行 文件操作Date20Linux OS analysisDate21Linux OS analy

6、sisVFS支持的文件系统类型v VFS支持的文件系统可以划分为三种主要类型 基于磁盘的文件系统:它们管理在本地磁盘分区中可用的存储 空间 l Linux使用的文件系统:ext2、ext3、ReiserFS l Unix家族的文件系统:SYSV文件系统,UFS,MINIX文件系统以 及VERITAS VxFS l 微软公司的文件系统:MS-DOS、VFAT以及NTFS l ISO9660CD-ROM文件系统和通用磁盘格式的DVD文件系统 l 其他有专利权的文件系统,如HPFS、HFS、AFFS、ADFS l 起源于非Linux系统的其他日志文件系统,JFS,XFSDate22Linux OS

7、analysis 网络文件系统:用于访问属于其他网络计算机的文件系统所包 含的文件 l NFS、Coda、AFS、SMB、NCP 特殊文件系统 l 不同于上述两大类 l 不管理具体的磁盘空间 l /proc v 各种不同的文件系统通过mount(挂载、安装)到根文 件系统中 在Linux中,根文件系统即根目录所代表的文件系统 通常是ext2文件系统Date23Linux OS analysisVFS中通用文件模型概念vVFS的基本思想:引入一个通用文件模型,这 个模型能够表示所有支持的文件系统 对于一个具体实现的文件系统,在处理时,需要将 其进行概念上的转换 l例如,在通用文件模型中,目录被看

8、成是普通文件 在实现上,read()sys_readfile数据结构f_opMS_DOS文件操作 指针(其中的read操作) 类似面向对象的概念Date24Linux OS analysisv通用文件模型有下列对象类型组成 超级块对象(superblock object)l存放文件系统相关信息:例如文件系统控制块 索引节点对象(inode object) l存放具体文件的一般信息:文件控制块/inode 文件对象(file object)l存放已打开的文件和进程之间交互的信息 目录项对象(dentry object)l存放目录项与文件的链接信息Date25Linux OS analysis三个

9、不同的进程打开同一个文件两个不同的硬链接同一个 硬链接Date26Linux OS analysisVFS所处理的系统调用v mount、umount:挂载/卸载文件系统 v sysfs :获取文件系统信息 v statfs、fstatfs、ustat :获取文件系统统计信息 v chroot :更改根目录 v chdir、fchdir、getcwd :操纵当前工作目录 v mkdir、rmdir :创建/删除目录 v getdents、readdir 、link 、unlink 、rename :对目录项进行操作 v readlink 、symlink :对软链接进行操作 v chown 、

10、fchown 、lchown :更改文件所有者 v chmod 、fchmod 、utime :更改文件属性 v open、close、create Date27Linux OS analysisv上述大部分操作之需要与通用文件模型中的一 些对象打交道,而不需要真正操作具体的文件 系统和文件,因此可以把VFS看成是一个“通用 ”的文件系统,在必要时依赖某种具体的文件系 统Date28Linux OS analysisVFS的数据结构v每个VFS对象都对应一定的数据结构,在这个 数据结构中包含对象的属性及其方法 v一个具体的文件系统:超级块对象: super_block v一个具体的文件:Ino

11、de对象:inode v一个打开文件:文件对象:file v目录项对象:dentryDate29Linux OS analysis与进程相关的文件v文件系统相关信息fs_struct v打开文件相关信息files_structDate30Linux OS analysis文件系统类型v特殊文件系统 用来为系统程序员、系统管理员等提供一种容易的 方式来操作内核的数据结构并实现操作系统的特殊 特征 常用的特殊文件系统Date31Linux OS analysisDate32Linux OS analysis文件系统类型的注册v文件系统类型:file_system_typev在系统初始化期间,reg

12、ister_filesystem()用来注 册编译时指定的每个文件系统 相应的文件系统对象被插入到file_systems链表中 vunregister_filesystem()Date33Linux OS analysis文件系统的挂载v每个文件系统都有自己的根目录 v如果一个文件系统的根目录是系统目录树的根 目录,那个这个文件系统就是根文件系统 v其他文件系统可以挂载到系统的目录树上 这样的目录称为挂载点(mount点,安装点) v文件系统之间的挂载关系对应文件系统之间的 父子关系Date34Linux OS analysisv例如,放在软盘/dev/fd0上的ext2文件系统,可 通过下

13、列命令安装在/flp上 mount -t ext2 /dev/fd0 /flp v一般情况下,只允许挂载一次 在umount之前,其他对/dev/fd0的挂载命令会失 败 v在2.4中,可以挂载多次不管被挂载多少次,只有一个真实的文件系统,因 此只有一个超级块对象Date35Linux OS analysisv 已挂载文件系统描述符vfsmountv 挂载根文件系统 第一阶段:安装一个特殊的文件系统,该文件系统仅提供一个 作为初始安装点的空目录:init_mount_tree 第二阶段:mount_root v 挂载一个文件系统 sys_mount v 卸载一个文件系统 sys_umountD

14、ate36Linux OS analysisProject 6v分析Linux的VFS相关的数据结构、文件系统的 挂载操作,了解VFS中的各种操作(例如read )是如何与一个具体的文件系统相关的。Date37Linux OS analysis路径名查找vVFS是如何从文件路径名找到相应的索引节点 的? 分析路径名,将它拆分成一个文件名序列 除了最后一个文件名之外,其他所有文件名必定都 是目录名v搜索的起点: 绝对路径:currentfsroot初始化更 改 相对路径:currentfspwd更改Date38Linux OS analysisv首先找到起点目录的索引节点 v在这个索引节点的目录

15、文件中,找到第一个目 录名(文件名)所对应的索引节点 v在第一个目录名的索引节点的目录文件中找到 第二个目录名(文件名)所对应的索引节点 v反复,直到文件名序列的最后一项Date39Linux OS analysisv在上述查找过程中要处理的其他问题: 对每个目录的访问权限必须进行检查 若是符号链接,需要进行扩展 要考虑符号链接的循环引用(进行处理) 目录名可能是一个文件系统的安装点,必须扩展到 一个新的文件系统中v路径名查找 数据结构:struct nameidata 在需要进行路径名查找的时候,依此调用如下函数 :path_init, path_walk, path_releaseDate

16、40Linux OS analysis查找操作的标志Date41Linux OS analysis标准查找操作v要处理的问题 跳过第一个路径名分量前的任何/考虑符号链接的查找 检查权限 考虑“.” 考虑“”考虑普通目录,要在目录项高速缓存中查找 Date42Linux OS analysis父路径名的查找v在很多情况下,查找操作的真正目的不是路径 名的最后一个分量,而是最后分量的前一个分 量 例如创建一个文件时 此时,路径解析的结果中存放最后一个分量所在目 录对应的对象Date43Linux OS analysis符号链接的查找v关于符号链接的解析由内核来完成v如何识别这是一个符号链接? v如何处理符号链接的循环情况?Date44Linux OS analysisVFS系统调用的实现v 仍然考虑 $ cp

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号