2018操作系统课程设计

上传人:夏** 文档编号:457671068 上传时间:2022-10-17 格式:DOC 页数:28 大小:922.50KB
返回 下载 相关 举报
2018操作系统课程设计_第1页
第1页 / 共28页
2018操作系统课程设计_第2页
第2页 / 共28页
2018操作系统课程设计_第3页
第3页 / 共28页
2018操作系统课程设计_第4页
第4页 / 共28页
2018操作系统课程设计_第5页
第5页 / 共28页
点击查看更多>>
资源描述

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

1、东北大学分校计算机与通信工程学院操作系统课程设计设计题目Linux中的虚拟文件系统的分析专业名称计算机科学与技术班级学号学生黎楠指导教师王翠荣设计时间2021年01月01日一2021年01月12日资料课程设计任务书专业: 计算机科学与技术 学号:学生签名:设计题目: Linux 中的虚拟文件系统的分析与进程管理器一、设计实验条件综合楼 1208、1210实验室二、设计任务及要求1. Linux 中的虚拟文件系统的分析;2. 进程管理器;三、设计报告的容1. 设计题目与设计任务设计任务书题目一: Linux 中的虚拟文件系统的分析要求:虚拟文件系统(VFS是物理文件系统与效劳之间的一个接口层。试

2、说明它与物理文件系统有何关系,以及 VFS超级块地实现方法;题目二:进程管理器要求:在Linux或Windows系统环境下,实现一个系统进程管理器,能够显示当前系统的活动进程信息进程名、用户、优先级、存使用等 ,并能完毕或创立特定进程。可参考 Windows下“任务管理器功能。2. 前言绪论 (设计的目的、意义等 )任何一个操作系统都是基于文件系统之上的,在 Linux 操作系统中下的文件系 统主要可分为三大块:一是上层的文件系统的系统调用,二是虚拟文件系统 VFS(Virtual Filesystem Switch),三是挂载到 VFS中的各实际文件系统,例如 ext2, jffs 等。 V

3、FS 处于文件系统的使用者与具体的文件系统之间,将两者隔 离开来。这种引入一个抽象层次的设计思想,即“上层不依赖于具体实现,而 依赖于接口;下层不依赖于具体实现,而依赖于接口,就是著名的“依赖反 转,它在 Linux 核中随处可见。所以对 VFS 与物理文件系统之间关系的分 析以及 VFS 超级块的实现方法显得格外重要。而正是因为虚拟文件系统的存 在,跨文件系统的文件操作才能得以实现。 对虚拟文件系统的分析将有助于我 们对 Linux 文件系统的学习,同时对深入理解 Linux 操作系统有很大帮助。3. 设计主体各局部设计容、分析、结论等中的虚拟文件系统的分析【 题目分析 】虚拟文件系统Vir

4、tual File System,简称VFS,是Linux核中的一个软件层, 用于给用户空间的程序提供文件系统接口;同时,它也提供了核中的一个 抽象功 能,允许不同的文件系统共存。系统中所有的文件系统不但依赖 VFS 共存,而且 也依靠 VFS 协同工作。 VFS 支持的文件系统可以分为 3 种类型:基于磁盘的文 件系统、网络文件系统、特殊文件系统 (虚拟文件系统 )。为了能够支持各种实际文件系统, VFS 定义了所有文件系统都支持的根本的、 概念上的接口和数据构造; 同时实际文件系统也提供 VFS 所期望的抽象接口和数 据构造,将自身的诸如文件、目录等概念在形式 上与VFS的定义保持一致。换

5、句话说,一个实际的文件系统想要被Linux支持,就必须提供一个符合 VFS标准的接口,才能与VFS协同工作。实际文件系统在统一的接口和数据构造下隐藏了具 体的实现细节,所以在 VFS层和核的其他局部看来,所有文件系统都是一样的。图1VFS在核中与其他的核模块的协同关系【VFS与物理文件系统的关系】Linux的VFS位于Linux整个文件系统的最上层,是一种软件机制,提供文 件系统对用户命令、系统调用及核其他模块的统一接口,负责管理并控制下层的 逻辑文件系统,使它们按照各自特定的模式正常运转,同时能够对用户提供尽可 能一样的表现形式。VFS是物理文件系统与效劳之间的一个接口层,它对Linux的每

6、个文件系统的所有细节进展抽象,使得不同的文件系统在Linux核心以及系统中 运行的进程看来都是一样的。严格的说, VFS并不是一种实际的文件系统。它只 存在于存中,并没有真正存在于磁盘分区中,磁盘分区存放的是逻辑文件系统的 容,所有VFS的数据构造都是在系统启动之后才建立完成,并在系统关闭时撤销。同时,它必须和其他实际存在于磁盘的文件系统,比方Linux默认的ext2或者Windows NT的NTFS等逻辑文件系统一起,才能构成一个完整的文件系统VFS 对逻辑文件系统进展抽象,采用统一的数据构造在存中描述所有这些文 件系统,承受用户层的系统调用和核心层其他模块的,通过 VFS 操作函数,按照

7、一定的映射关系,把这些重新定向到逻辑文件系统中相应的函数调用,然后由逻 辑文件系统来完成真正的具体操作。这样, VFS 只负责处理设备无关的操作,主 要是进展具体操作的映射关系。正是VFS的这种抽象的功能层次,保证了 Linux系 统可以支持多种不同的逻辑文件系统,所有文件系统都具有根本一样的外部表现, 而且可以方便地进展相互。针对下层的逻辑文件系统, Linux 系统中的 VFS 为它 们提供一致的接口,统一管理各种逻辑文件系统,包括进展文件系统的注册和注 销、安装和卸载等,提供限额机制,对用户存储空间进展有效的控制。对文件操 作进展适当的转换,转交由具体的逻辑文件系统进展处理,然后把具体的

8、操作结 果提供应上层的调用者。针对上层,VFS为用户层函数调用和核其他模块的提供接口,承受并返回由具体逻辑文件系统完成的结果。此外, VFS 还负责管理文件系 统的各种缓冲区,保证文件系统的整体效率。从本质上讲,文件系统是特殊的数据分层存储构造,它包含文件、目录和相 关的控制信息。为了描述这个构造,Linux引入了一些根本概念:文件 一组在逻辑上具有完整意义的信息项的系列。在 Linux 中,除了普通文 件,其他诸如目录、设备、套接字等 也以文件被对待。总之, “一切皆文件。目录 目录好比一个文件夹,用来容纳相关文件。因为目录可以包含子目录, 所以目录是可以层层嵌套,形成 文件路径。在 Lin

9、ux 中,目录也是以一种特殊文 件被对待的,所以用于文件的操作同样也可以用在目录上。目录项 在一个文件路径中,路径中的每一局部都被称为目录项;如路径/home/source/helloworld.c 中,目录 /, home, source和文件 helloworld.c都是一个目录项。索引节点用于存储文件的元数据的一个数据构造。文件的元数据,也就是文 件的相关信息,和文件本身是两个不同 的概念。它包含的是诸如文件的大小、拥 有者、创立时间、磁盘位置等和文件相关的信息。超级块用于存储文件系统的控制信息的数据构造。描述文件系统的状态、文 件系统类型、大小、区块数、索引节 点数等,存放于磁盘的特定

10、扇区中。如上的几个概念在磁盘中的位置关系如图4所示VFS依靠四个主要的数据构造和一些辅助的数据构造来描述其构造信息,这些数据构造表现得就像是对象;每个主要对象中都包含由操作函数表构成的操作对象,这些操作对象描述了核针对这几个主要的对象可以进展的操作。下列图就是逻辑上对VFS及其下层实际文件系统的组织图,可以看到用户层只能于VFS打交道,而不能直接实际的文件系统,比方EXT2、EXT3、PROC,换句话说,就是用户层不用也不能区别对待这些真正的文件系统,不过,SOCKET虽然也属于VFS的管辖围,但是有其特殊性,就是不能像翻开大局部文件系统下的“文件 一样翻开socket,它只能被创立,而且核中

11、对其有特殊性处理。int fd = opeint fd = socketQUserPROCV. KernelEXT2F3FAT320Block Device DriverMemoryManagerNet Device Driver、J、1XSOCKET图3逻辑上对VFS及其下层实际文件系统的组织图【超级块的实现方法】VFS描述文件系统使用超级块和inode的方式,所谓超级块就是对所有文件系 统的管理机构,每种文件系统都要把自己的信息挂到super_blocks这么一个全局链表上。核中是分成2个步骤完成:首先每个文件系统必须通过register_filesystem函数将自己的 file_sys

12、tem_type挂接到 file_systems这个全局变量上,然后调用 kern_mount函数把自己的文件相关操作函数集合表挂到super_blocks上。每种文件系统类型的读超级块的例程get_sb必须由自己实现。super_blxAsbst_nead &_lil广fille_sstem_type *s_iypeSsuperBop + 4 afuper.bbckFUjpFr_blod seek (s type具廿的文ftMe层 sock_nlloc_innciocfestrayjnode* nnchinndf?图4超级块的实现存储一个已安装的文件系统的控制信息,代表一个已安装的文件系统;

13、每次 一个实际的文件系统被安装时,核会从磁盘的特定位置读取一些控制信息来填充存中的超级块对象。一个安装实例和一个超级块对象一一对应。超级块通过其构 造中的一个域s_type记录它所属的文件系统类型。VFS超级块是各种逻辑文件系统在安装时建立的,并在这些文件系统卸载时 自动删除,它只存在于存中。VFS中保存了系统中挂接的文件系统的链表以及这 些文件系统对应的VFS超级块。系统启动后所有被初始化的文件系统都要向VFS登记。每个已安装的文件系统由一个 VFS超块表示,它包含如下信息:Device表示文件系统所在块设备的设备标志符。例如系统中第一个IDE硬盘的设备标志符为0x301。(2) Inode

14、 pointers:这个)u nted in ode指针指向文件系统中第一个in ode。而covered inode指针指向此文件系统安装目录的inodeo根文件系统的VFS超块不包含covered指针。Blocksize:以字节记数的文件系统块大小,如024字节。Superblock opeations指向此文件系统一组超块操纵例程的指针。这些例程被VFS用来读写inode和超块。File System type:这是一个指向已安装文件系统的file_system_type构造的指针。FileSystem specifi指向文件系统所需信息的指针。一个超级块对应一个文件系统(已经安装的文件

15、系统类型如ext2,此处是实际的文件系统 )。之前我们已经说了文件系统用于管理这些文件的数据格式和操作之 类的,系统文件有系统文件自己的文件系统,同时对于不同的磁盘分区也有可以 是不同的文件系统。那么一个超级块对应一个独立的文件系统,保存文件系统的 类型、大小、状态等等。(“文件系统和“文件系统类型是不同的概念,一个文件系统类型下可以包括很多文件系统即很多的 super_block)对于不同的文件系统有不同的 super_block,对于不同的super_block的操作也 是不同的,所以我们在下面的 super_block 构造中可以看到上面说的抽象的 struct 构造(例如下面的: struct super_operations:)(linux 核 5truct 5Liper_t?lock

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

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