lec 21: 文件系统 spoc 思考题
有"spoc"标记的题是要求拿清华学分的同学在实体课上完成的,对于学堂在线的选课同学是可选题目。
视频相关思考题
21.1 文件系统和文件
文件系统的功能是什么?
负责数据持久保存,功能是数据存储和访问
具体功能:文件分配、文件管理、数据可靠和安全
什么是文件、文件属性、文件头?
文件:文件系统中具有符号名,由字节序列构成的数据项集合。
文件属性:文件系统中保存的与文件相关的属性信息,如文件名、文件访问权限、文件访问时间等。
文件头:文件系统元数据中的文件信息,如文件存储位置等。
文件系统和内存管理在功能和实现算法上有什么异同?
相同:数据保存、分配、释放
不同:数据保存的持久性、管理的数据量大小、数据可靠性、数据访问安全性、服务对象、服务接口
21.2 文件描述符
打开文件时,文件系统要维护哪些信息?
打开文件的状态和信息:文件指针、打开文件计数、访问权限、文件的磁盘存储位置和文件数据缓存
文件系统的基本数据访问单位是什么?这对文件系统有什么影响?
文件是文件系统的基本数据访问单位;
文件访问时操作系统维护的文件描述符信息是对应文件的;
文件的索引访问有什么特点?如何优化索引访问的速度?
文件的索引访问是,先访问索引,以确定要访问的文件位置;再读写文件内容。
文件索引的访问频率远大于文件内容读写。
优化方法:文件的索引信息和文件内容分别保存在不同的数据块。
文件访问方式有哪几种?文件访问方式对文件系统的设计有什么影响?
文件访问方式:顺序访问、随机访问、索引访问
文件访问特征对文件系统的要求会影响文件系统存储组织和操作系统中文件系统模块的实现方法选择;
21.3 目录、文件别名和文件系统种类
什么是目录?
由文件索引项组成的特殊文件。
目录的组织结构是什么样的?
树结构(分层文件系统)、有向图
目录操作有哪些种类?
目录读操作:搜索、遍历、列目录
目录写操作:创建、删除、重命名
什么是文件别名?软链接和硬链接有什么区别?
文件别名:两个或多个文件关联同一个文件;
硬链接:多个文件目录项指向一个文件;
软链接:文件内容是指向文件的路径;
硬链接和软链接的文件删除操作的语义是不同的;
路径遍历的流程是什么样的?如何优化路径遍历?
路径遍历:从根目录开始,读取路径包含的每一级目录,查找下一级目录项和存储位置,直到最后一级;
路径遍历的优化:目录缓存和当前目录;
什么是文件系统挂载?
文件系统挂载(mount):把一个文件卷(文件系统)映射到系统根文件系统的某个挂载目录节点;
为什么会存在大量的文件系统类型?
数据类型:16位、32位、64位、128位文件系统
存储介质类型:磁盘、光盘等
访问安全要求类型:单用户文件系统、多用户文件系统
数据可靠性要求类型:日志文件系统
应用场景类型:网络、本地
在UFS文件系统中允许创建指向父辈目录(即从根目录到当前目录的路径上的目录)的软链接或硬链接,从而在目录树中形成循环结构。这会影响到目录查找和遍历相关的操作。请尝试给出一种在允许循环目录结构的文件系统中遍历操作的影响的解决方法,并有Linux或ucore上进行实现。
一种可能的解法:在遍历的过程中检查重复的目录,并终止该分支的遍历操作。
21.4 虚拟文件系统
虚拟文件系统的功能是什么?
对上接口:统一上层应用的文件访问和控制接口
对下接口:实现对多种类型文件的访问和控制交互;
高效访问实现:打开文件信息的管理、高效的路径遍历实现
文件卷控制块、文件控制块和目录项的相互关系是什么?
文件卷控制块:文件系统描述信息,如数据块大小、存储格式、空余块数目等;每个文件卷对应一个;挂载时读入内存;
文件控制块:文件的描述信息,如文件数据的存储位置和顺序等;每个文件对应一个;打开文件时读入内存;
目录项:每个目录由若干目录项组成,所有目录项共同形成文件系统的树状结构;每个目录项对应一个文件或目录;路径遍历时读入内存;
可以把文件控制块放到目录项中吗?这样做有什么优缺点?
可以。
优点:实现简单;
缺点:搜索时的数据读入量比较大;
21.5 文件缓存和打开文件
虚拟存储和文件缓存有什么区别和联系?
联系:虚拟存储和文件缓存同时用到物理内存,占用的内存空间是相互影响的
区别:虚拟存储是用外存来模拟内存、文件缓存是用内存来模拟外存
文件的数据块缓存和页缓存有什么区别和联系?
联系:物理内存空间的分配
区别:数据缓存是把页面访问映射到数据块访问、页缓存是把文件访问映射到页面访问
为什么要同时维护进程的打开文件表和操作系统的打开文件表?这两个打开文件表有什么区别和联系?为什么没有线程的打开文件表?
系统打开文件表:目录项和文件控制块信息的缓存、引用计数等
进程打开文件表:进程的打开文件的状态信息,如文件指针、文件访问权限等
联系:针对打开文件在内存中维护的数据缓存和文件状态信息
区别:进程打开文件表维护本进程特有的打开文件状态信息,系统打开文件表维护所有进程共用的打开文件信息;
相同进程中的各线程共享进程的打开文件信息,并没有需求针对线程维护打开文件状态信息;
21.6 文件分配
文件分配的三种方式是如何组织文件数据块的?各有什么特征(存储、文件读写、可靠性)?
连续分配:文件数据块的存储是连续的;特征:存储位置必须在大于所需空间的空闲空间;读取性能比较好,文件增长开销比较大;
链式分配:用数据块的链表来存储文件数据块;特征:文件修改比较方便,随机文件读取开销大,可靠性比较差;
索引分配:用索引数据块来保存文件数据块的存储位置和顺序;特征:小文件存储开销大;文件读写性能较好;
UFS多级索引分配是如何组织文件数据块的位置信息的?
多种文件分配方式综合使用:直接索引、一级索引、二级索引、三级索引都可能使用;
21.7 空闲空间管理和冗余磁盘阵列RAID
硬盘空闲空间组织和文件分配有什么异同?
空闲空间组织不需要管顺序,而文件分配需要维护占用数据块的顺序
都需要维护管理有数据块有哪些
RAID-0、1、4和5分别是如何组织磁盘数据块的?各有什么特征?
条带化:在多个独立硬盘上存储数据块,通过并行读写提高I/O性能;
校验和:按位做校验、按块做校验
实现方式:硬件、软件
RAID-0:条带化
RAID-1:镜像
RAID-4:带校验的磁盘条带化
RAID-5:带分布式校验的磁盘条带化
小组思考题
- (spoc)完成Simple File System的功能,支持应用程序的一般文件操作。具体帮助和要求信息请看sfs-homework
(spoc)FAT、UFS、YAFFS、NTFS这几种文件系统中选一种,分析它的文件卷结构、目录结构、文件分配方式,以及它的变种。 wikipedia上的文件系统列表参考
- http://en.wikipedia.org/wiki/List_of_file_systems
- http://en.wikipedia.org/wiki/File_system
- http://en.wikipedia.org/wiki/List_of_file_systems
往届同学的参考回答: