minix文件系统研究.docx
- 文档编号:26318084
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:11
- 大小:470.51KB
minix文件系统研究.docx
《minix文件系统研究.docx》由会员分享,可在线阅读,更多相关《minix文件系统研究.docx(11页珍藏版)》请在冰豆网上搜索。
minix文件系统研究
MINIX文件系统研究
摘要
本文对文件系统进行了分析,主要研究了MINIX文件系统的大体原理,通过阅读代码,分析了MINIX文件系统的实现中所用的主要数据结构,MINIX文件系统的工作流程和典型操作的实现。
关键词:
MINIX,文件系统,表格管理
1引言
研究背景
对于长期的信息存储,咱们有如下三个大体要求:
1.必需能存储大量的信息;2.在利用信息的进程终止时,信息必需保留下来;3.多个进程能够并发地访问这些信息。
解决所有这些问题的常常利用方式就是把信息以文件为单位,存储在磁盘或其他外部介质上。
文件是由操作系统来管理的,包括文件的结构、文件的命名、文件的利用、文件的保护和文件的实现等,这些都是在操作系统的设计中需要解决的问题。
在一个操作系统中,负责处置与文件有关的各类情形的那一部份,就称为文件系统。
文件系统由三部份组成:
与文件管理有关的软件、被管理的文件和实施文件管理所需的数据结构。
从系统角度来看,文件系统是对文件存储器空间进行组织和分派,负责文件的存储并对存入的文件进行保护和检索的系统。
具体地说,它负责为用户成立文件,存入、读出、修改、转储文件,控制文件的存取,当用户再也不使历时撤销文件等。
研究目的和意义
文件系统是操作系统的一个重要组成部份,是负责存取和管理文件信息的软件机构,通过对操作系统所管理的存储空间的抽象,向用户提供统一的、对象化的访问接口,屏蔽对物理设备的直接操作和资源管理。
本文主要研究MINIX操作系统的文件系统,通过度析MINIX的文件系统,了解MINIX文件系统的大体原理和设计模式,掌握MINIX的文件系统的实现,加深了对操作系统的理解。
主要研究工作
本文主要研究了MINIX文件系统的大体原理,并对MINIX文件系统的实现进行了分析。
2MINIX文件系统
MINIX文件系统原理
和所有的文件系统一样,MINIX文件系统也必需为文件分派和释放空间、记录磁盘块和空闲空间、提供某种方式来避免文件被非法利用等。
从本质上来讲,MINIX文件系统只不过是运行在用户空间的一个大的C程序。
在读、写文件时,用户进程向文件系统发送一条消息,表明自己需要什么操作,而文件系统会完成相应的工作,并返回一个结果。
文件系统实际上是一个网络文件服务器,只不过它正好和挪用进程在同一台机械上运行。
这种设计方式有深刻的含义。
一方面,文件系统能够独立于MINIX的其他部份进行修改、调试和测试。
另一方面,咱们能够很方便地把整个文件系统移植到任何一台带有C编译器的运算机上,在那里进行编译链接,然后把它作为一个独立的类UNIX的远程文件服务器。
文件系统设计中存在许多关键问题:
消息、文件系统的布局、位图、i节点、块高速缓存、目录和路径、文件描述符、文件锁和设备文件。
1.消息
文件系统的结构大体上与内存管理器和所有的I/O任务一样。
文件系统的主循环程序不断地等待消息。
当收到消息后,它第一提取消息的类型,然后以其为索引查找文件系统中处置各类消息的进程指针表。
随后挪用相应进程,进行处置后,返回状态值。
文件系统再把回答消息发送给挪用进程,然后回到循环的开始,等待下一条消息的到来。
2.文件系统的布局
MINIX文件系统是一个自成体系的逻辑实体。
它能够存储在任何一个块设备中,如软盘或硬盘分区。
MINIX文件系统与标准的UNIX的文件系统大体相同,由6部份组成:
引导块、超级块、i节点位图、区段位图、i节点、数据区。
MINIX文件系统布局如图1所示:
图1一张软盘或一个小的硬盘分区上的磁盘布局
每一个文件系统都以一个引导块开始。
引导块是运算机加电启动时可由ROMBIOS自动读入的执行代码和数据。
但并非所有盘都用作引导设备,所以对于不用于引导的盘片,这一盘块中能够不含代码。
但任何盘片必需要含有引导块空间,以维持MINIX文件系统格式的统一。
若是内核文件放在文件系统中,那么就可以够在文件系统所在的设备的第一个块(引导块空间)寄存实际的引导程序,并由它来取得和加载文件系统中的内核映象文件。
超级块包括了描叙文件系统布局的信息,其主要功能是给出文件系统各个部份的大小。
和引导块一样,超级块的大小也是固定的1024字节。
若是给定块的大小和i节点数,咱们能够很容易地算出i节点位图的大小和寄存i节点所需的块数。
3.位图
MINIX利用了两个位图来管理空闲的i-node和区段。
当一个文件被删除时,很容易计算出该文件i-node所在的位图块,并利用cache来查找该块,找到后改变该文件所对应的i-node位图所在的位。
区段位图的操作类似。
一般来讲咱们可能错误的从常理以为创建一个文件时,文件系统必需一一地检查每一个位图位,以即能够找到一个空闲的i-node,然后把它用于新建的问题。
可是在实际的工作进程中,在内存的超级块表中会有一个域指向了第一个可用的i-node,所以咱们能够直接利用。
那么那个特殊域是如何做到指向第一个空闲i-node的呢?
当一个i-node被释放时,要检查那个被释放的i-node是不是在当前第一个空闲i-node之前,若是是,则指向刚释放的i-node。
当整个分区上的i-node都被占用了时候,空闲i-node地址域将被指向第0号i-node。
如此的机制一样利用于区段。
4.i节点
在MINIX中i节点的布局和UNIX中几乎一样。
如图2所示:
图2MINIX的i节点
i节点的主要作用是给出文件数据块所在的位置。
前7个区段号直接存在i节点中。
在MINIX发行版中,区段和块的大小都为1KB,所以小于7KB的文件能够没必要利用间接块号。
当文件的大小超过7KB时,需要利用间接区段。
i节点中含有模式信息,给出了文件的类型和保护标志位、SETUID位、SETGID位,类型包括普通文件、目录、块设备文件、字符设备或管道。
i节点中的link字段记录了多少个目录项正在指向那个i节点。
5.块高速缓存
MINIX利用块高速缓存来改良文件系统的性能。
高速缓存利用一个固定长度的缓冲区数组来实现,每一个缓冲区由头和体两个部份组成。
头里面包括有指针和计数器、标志位。
体则包括了一个磁盘块大小的空间。
所有未利用的缓冲区被连接在一条双向链表中,按最近一次使历时刻的前后顺序排列,如图3所示。
为了快速判断某个块是不是在缓存中,MINIX使用了哈希表。
图3块高速缓存利用的链接表
6.目录和路径
目录和路径名管理是文件系统的一个重要功能。
MINIX文件系统的系统挪用一部份是以文件名作为数据的标示的。
在实际操作中实际需要的是目的文件的i-node。
文件系统需要在目录树中查找文件并找到对应的i-node。
7.文件描述符
在read和write系统挪用中会用到文件描述符,那个文件描述符是在文件被打开时返回的。
文件系统第一是一个程序,它有自己的地址空间,并在其中保护进程表的部份内容。
在地址空间中有一个字段是一个数组,以文件的描述符编号作为索引。
当给定一个文件描述符时,能够通过改数组找到相应的文件。
在MINIX中,每一个文件都有一个32位的整数来描述即将读写的下一个字节的位置,那个整数成为文件位置,它是通过lseek系统挪用来修改的。
在MINIX中存在一个共享表filp,包括了所有被打开的文件的文件位置。
同时文件的i-node也在其中。
进程表中的文件描述符数组只要包括指向filp表项的指针就可以够了。
8.文件锁
在文件系统管理中,有一部份内容需要利用专门的表结构,这就是文件锁。
MINIX在那个部份支持POSIX标准,支持IPC中的建议性文件锁,允许文件的任何部份或多个部份被标记位锁定。
锁操作不是强制的,而是进程进程中的一种自觉行为,在执行存在潜在冲突的操作前检查文件锁。
9.管道和设备文件
管道和设备文件与普通文件有专门大不同。
读取一个管道时:
若是管道为空,则读进程可能被阻塞,直到另一个进程把数据写入管道。
类似地,当从终端读取数据时,进程也必需一直等待。
因此,文件系统有必要把这些请求挂起,等以后再执行。
MINIX文件系统实现
核心数据结构分析
文件系统中利用的各类数据结构和表格都概念在头文件中。
有些数据结构还放在系统一级的头文件中。
概念了整个文件系统顶用到的一些常量,如表的长度和标志位等;概念了V1和V2版本的i节点在磁盘上的结构;提供了一些函数原型;概念了全局变量和用于输入和应答消息的缓冲区。
文件系统的进程表部份包括在文件中;文件中概念了块高速缓存;文件中包括了中间表filp,主要用于寄存文件的当前位置及i节点指针;文件锁表file_lock寄存在中;在文件中概念了i节点表inode,用于保留当前正在利用的i节点,数据结构如图4所示;文件为包括参数的消息字段概念了名称;文件中概念了超级块表,数据结构如图5所示。
图4i节点的数据结构概念
图5超级块表的数据结构概念
文件中包括了一个通过初始化的数组call_vector,它是一个指针数组,在主循环顶用来决定系统挪用号与相应的处置函数之间的映射关系。
2.2.2典型操作实现
1.表格管理
对于每一个主要的表格,都有一个相关的文件,该文件包括了该表格的各类管理函数。
这些函数会被大量地挪用,并成为表格与文件系统之间的主要接口。
块管理:
块高速缓存是由文件中的函数来管理的。
那个文件包括9个函数,各函数的功能如图6所示。
图6用于块管理的进程
i节点管理:
块高速缓存并非是唯一需要支持函数的文件系统表,i节点一样也需要。
i节点是由中的函数管理的,很多管理i节点表的函数与块管理函数超级相似,各函数的功能如图7所示。
图7用于i节点管理的进程
超级块的管理:
文件中包括了超级块和位图的管理函数,总共有6个函数,各函数功能如图8所示。
图8用于管理超级块和位图的进程
文件描述符的管理:
MINIX利用了专门的函数来管理文件描述符和filp表,这些函数位于中。
其中,get_fd函数为创建或打开的文件分派一个空闲的文件描述符和一个空闲的filp表项,get_filp函数用于检查一个文件描述符是不是在适合的范围内,find_filp函数通过filp表来查找潜在的读进程。
文件锁:
POSIX记录锁函数如图9所示。
文件中只有两个函数,其中,lock_op会检查指定的锁范围是不是有效,锁被清除后,lock_revive会唤醒所有阻塞在那个锁上的进程。
图9POSIX的建议性记录锁操作,这些操作通过系统挪用FCNTL请求
2.主程序
文件系统的主循环包括在文件中。
在挪用fs_init进行初始化后,就进入主循环。
它挪用get_work等待下一条请求消息的到来。
当文件系统启动后,它会当即进入fs_init中的一个循环,那个循环中的第一条语句是去挪用receive,取得在PM的pm_init初始化函数所发出的一条信息,每条信息包括一个进程号和一个PID。
前者用于文件系统的进程表中的索引,后者被保留在相应表项的fp_pid字段。
接下来,完成文件系统自己的初始化。
第一,一些重要的常量被测试并验证其有效性,然后初始化高速缓存和设备表,并在必要时装入RAM盘和根设备的超级块等。
在完成了与进程管理器的交互以后,fs_init挪用的第一个函数是buf_pool,用于构建块高速缓存所用到的链表。
在buf_pool以后,下一个被挪用的函数是build_dmap,接下来被挪用的是load_ram,它负责为RAM盘分派空间,若是引导参数需要,还能够在上面装入根文件系统。
文件中的最后一个函数是load_supper,它初始化超级块表,并把根设备的超级块读入内存。
3.对单个文件的操作
创建、打开和关闭文件:
文件中包括有6个系统挪用的代码,别离是creat,open,mknod,mkdir,close和lseek。
读文件:
文件中包括do_read,read_write,rw_chunk,read_map,rd_indir,read_ahead和rahead函数。
写文件:
文件中包括do_write,write_map,wr_indir,clear_zone,new_block和zero_block函数。
管道:
文件中包括do_pipe,pipe_check,suspend,release,revive,do_unpause,select_request_pipe和select_match_pipe函数。
4.目录和路径
将路径名转换成i节点:
许多系统挪用(如open,unlink和mount)都以路径名作为参数。
这些系统挪用在开始执行它们自己的任务之前通常都要先取得目标文件的i节点。
路径名的解析是在文件中进行的。
挂装文件系统:
mount和unmount这两个系统挪用能够将不同设备上的彼此独立文件系统“黏连”在一路,形成一个无缝的目录树。
挂装是通过把被挂装文件系统的根目录i节点及超级块读入内存,并在超级块中设置两个指针来实现的。
卸载文件系统要比挂装容易患多。
挂装和卸载函数在文件中实现。
3总结
本文主要研究了MINIX文件系统的大体原理,并对MINIX文件系统的实现进行了分析。
从本质上来讲,MINIX文件系统只不过是运行在用户空间的一个大的C程序。
在读、写文件时,用户进程向文件系统发送一条消息,而文件系统完成相应的工作。
同时,文件系统实际上是一个网络文件服务器,只不过它正好和挪用进程在同一台机械上运行。
这种设计方式有深刻的含义。
一方面,文件系统能够独立于MINIX的其他部份进行修改、调试和测试。
另一方面,咱们能够很方便地把整个文件系统移植到任何一台带有C编译器的运算机上。
致谢
参考文献
[1].AndrewS.Tanenbaum,AlbertS.Woodhull.OperatingSystemsDesignandImplementation,ThirdEdition,PearsonEducation,Inc.2006.
[2].汤子瀛等.运算机操作系统.第3版.西安电子科技大学出版社.2011.
[3].Bovet,.UnderstandingtheLinuxKernel.O’Reilly&Associates,Inc.2001.
[4].网络资源.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- minix 文件系统 研究