好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Linux操作系统分析.ppt

84页
  • 卖家[上传人]:ldj****22
  • 文档编号:48636129
  • 上传时间:2018-07-18
  • 文档格式:PPT
  • 文档大小:2.17MB
  • / 84 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • Linux操作系统分析中国科学技术大学计算机系 陈香兰(0512-87161312) xlanchen@ 助教:裴建国、冯晓静 Autumn 2008文件系统vUnix文件系统概述 vLinux的虚拟文件系统 vExt2文件系统简介Date2Linux OS analysisUnix文件系统概述中国科学技术大学计算机系 陈香兰(0512-87161312) xlanchen@ 助教:裴建国、冯晓静 Autumn 2008提纲v文件 v硬链接和软链接 v文件类型 v文件描述符与索引节点 v访问权限和文件模式 v文件操作的系统调用Date4Linux OS analysis文件vUnix文件是以字节序列组成的信息载体v内核不解释文件的内容 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 creat(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的虚拟文件系统中国科学技术大学计算机系 陈香兰(0512-87161312) xlanchen@ 助教:裴建国、冯晓静 Autumn 2008提纲v虚拟文件系统VFS的作用 vVFS的数据结构v文件系统类型 v文件系统安装 v路径名查找 vVFS系统调用的实现v文件加锁Date18Linux OS analysis虚拟文件系统VFS的作用v虚拟文件系统 ØVirtual Filesystem ØVirtual Filesystem Switch ØVFS是一个软件层,用来处理与Unix标准文件系统 相关的所有系统调用。

      l是用户应用程序与文件系统实现之间的抽象层 Ø能为各种文件系统提供一个通用的、统一的接口 vLinux与其他类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 analysisVFS支持的文件系统类型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 analysisØ 网络文件系统:用于访问属于其他网络计算机的文件系统所包 含的文件 l NFS、Coda、AFS、SMB、NCP Ø 特殊文件系统 l 不同于上述两大类 l 不管理具体的磁盘空间 l /proc v 各种不同的文件系统通过mount(挂载、安装)到根文 件系统中 Ø 在Linux中,根文件系统即根目录所代表的文件系统 Ø 通常是ext2文件系统Date23Linux OS analysisVFS中通用文件模型概念vVFS的基本思想:引入一个通用文件模型,这 个模型能够表示所有支持的文件系统 Ø对于一个具体实现的文件系统,在处理时,需要将 其进行概念上的转换 l例如,在通用文件模型中,目录被看成是普通文件 Ø在实现上,read()sys_readfile数据结构f_opMS_DOS文件操作 指针(其中的read操作) Ø类似面向对象的概念Date24Linux OS analysisv通用文件模型有下列对象类型组成 Ø超级块对象(superblock object)l存放文件系统相关信息:例如文件系统控制块 Ø索引节点对象(inode object) l存放具体文件的一般信息:文件控制块/inode Ø文件对象(file object)l存放已打开的文件和进程之间交互的信息 Ø目录项对象(dentry object)l存放目录项与文件的链接信息Date25Linux OS analysis三个不同的进程打开同一个文件两个不同的硬链接同一个 硬链接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 、fchown 、lchown :更改文件所有者 v chmod 、fchmod 、utime :更改文件属性 v open、close、create …Date27Linux OS analysisv上述大部分操作之需要与通用文件模型中的一 些对象打交道,而不需要真正操作具体的文件 系统和文件,因此可以把VFS看成是一个“通用 ”的文件系统,在必要时依赖某种具体的文件系 统Date28Linux OS analysisVFS的数据结构v每个VFS对象都对应一定的数据结构,在这个 数据结构中包含对象的属性及其方法 v一个具体的文件系统:超级块对象: super_block v一个具体的文件:Inode对象: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在系统初始化期间,register_filesystem()用来注 册编译时指定的每个文件系统 Ø相应的文件系统对象被插入到file_systems链表中 vunregister_filesystem()Date33Linux OS analysis文件系统的挂载v每个文件系统都有自己的根目录 v如果一个文件系统的根目录是系统目录树的根 目录,那个这个文件系统就是根文件系统 v其他文件系统可以挂载到系统的目录树上 Ø这样的目录称为挂载点(mount点,安装点) v文件系统之间的挂载关系对应文件系统之间的 父子关系Date34Linux OS analysisv例如,放在软盘/dev/fd0上的ext2文件系统,可 通过下列命令安装在/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_umountDate36Linux OS analysisProject 6v分析Linux的VFS相关的数据结构、文件系统的 挂载操作,了解VFS中的各种操作(例如read )是如何与一个具体的文件系统相关的。

      Date37Linux OS analysis路径名查找vVFS是如何从文件路径名找到相应的索引节点 的? Ø分析路径名,将它拆分成一个文件名序列 Ø除了最后一个文件名之外,其他所有文件名必定都 是目录名v搜索的起点: Ø绝对路径:currentfsroot初始化更 改 Ø相对路径:currentfspwd更改Date38Linux OS analysisv首先找到起点目录的索引节点 v在这个索引节点的目录文件中,找到第一个目 录名(文件名)所对应的索引节点 v在第一个目录名的索引节点的目录文件中找到 第二个目录名(文件名)所对应的索引节点 v…反复,直到文件名序列的最后一项Date39Linux OS analysisv在上述查找过程中要处理的其他问题: Ø对每个目录的访问权限必须进行检查 Ø若是符号链接,需要进行扩展 Ø要考虑符号链接的循环引用(进行处理) Ø目录名可能是一个文件系统的安装点,必须扩展到 一个新的文件系统中v路径名查找 Ø数据结构:struct nameidata Ø在需要进行路径名查找的时候,依此调用如下函数 :path_init, path_walk, path_releaseDate40Linux OS analysis查找操作的标志Date41Linux OS analysis标准查找操作v要处理的问题 Ø跳过第一个路径名分量前的任何/Ø考虑符号链接的查找 Ø检查权限 Ø考虑“.” Ø考虑“”Ø考虑普通目录,要在目录项高速缓存中查找 Ø…Date42Linux OS analysis父路径名的查找v在很多情况下,查找操作的真正目的不是路径 名的最后一个分量,而是最后分量的前一个分 量 Ø例如创建一个文件时 Ø此时,路径解析的结果中存放最后一个分量所在目 录对应的对象Date43Linux OS analysis符号链接的查找v关于符号链接的解析由内核来完成v如何识别这是一个符号链接? v如何处理符号链接的循环情况?Date44Linux OS analysisVFS系统调用的实现v 仍然考虑 $ cp 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.