操作系统学习-练习题个人总结(九)
第六章 文件系统
一、第一节-文件系统基本概念-课前测试
正确知识点总结
- 在Linux中,一个源程序经过编译之后得到的可执行文件属于(普通文件)。
- 文件系统的最基本目的是(实现对文件的“按名存取”)。
- 在文件系统中可命名的最小数据单位是数据项,用户以记录为单位对文件进行存取、检索等。
补充:
文件的分类
- 按照用途:系统文件、库文件、用户文件
- 按照保护级别:只读文件、读写文件、只执行文件、不保护文件
- 按照存取方法:顺序存取文件、随机存取文件
- 实际操作系统中文件分类:Window、Unix和Linux都有普通文件和目录文件,Unix和Linux系统还有特殊文件【FIFO文件字符、设备文件、块设备文件、符号链接文件】
二、第二节-文件逻辑结构-课前测试
正确知识点总结
- 从Windows系统的角度上来看,excel应用程序处理的.xls文件的逻辑结构是(流式文件)。
- 文件系统中源程序是有结构的记录式文件。(×)
补充:
文件的逻辑结构
- 有结构文件:指整个文件由若干条记录构成,也称记录式文件【数据结构和数据库】
- 顺序文件:读写批处理时比较好用,存取效率最高;查找、增加、删除文件比较难
- 索引文件:索引表
- 顺序索引文件:结合上述
- 直接文件和散列文件:由记录键值获得存储物理地址
- 无结构文件:由一组相关信息组成的有序字符流,也称流式文件;文件长度按照字节计算【UNIX、DOS、WINDOWS】
文件的物理结构
- 连续文件【顺序文件】:磁盘空间会产生碎片,文件修改困难
- 链接文件
- 隐式连接文件:盘块中存有下一块的地址;顺序存储、容易丢失
- 显式链接文件:链接指针统一存放在链接表里【FAT】;检索速度快,支持随机存取;FAT表占用内存空间
- 一个磁盘分区大小为20GB,若盘块大小为1KB,计算该磁盘分区的FAT表大小。
盘块数=20GB/1KB =20MB,20MB<32MB(这里要求分配的块数是2的n次方,所以要扩展),盘块号大小为3.5B(32MB->2的25次方,需要25个二进制位,25/8取半字节整数倍=3.5B),FAT表大小=20MB×3.5B=70MB
注意:每个磁盘块号大小取半个字节的整数倍。 - 存储空间利用率高;文件创建时用户不必指出文件的大小;文件动态扩充和修改容易;顺序存取效率高;随机存取效率较低
- 索引文件【索引表;索引块-存放索引表的物理块;索引文件】
- 单级索引:目录->索引表->具体文件存放物理块
- 多级索引
- 混合索引
- UNIX索引结构【iaddr(0) ~iaddr(9): 直接地址;iaddr(10):一级索引;iaddr(11): 二级索引;iaddr(12): 三级索引。】
三、第二节-文件结构和存取-课堂测试
- UNIX索引结构【iaddr(0) ~iaddr(9): 直接地址;iaddr(10):一级索引;iaddr(11): 二级索引;iaddr(12): 三级索引。】
1、错题解析
-
假设某文件包含100个磁盘块,0#-99#,并且文件的FCB已经在内存中。若物理结构采用连续文件,且文件头部之前没有空闲块,文件尾部之后有空闲块。假定每次读或写一个磁盘块就是一次磁盘操作,如果要在文件第50块(49#块)前添加一个磁盘块,但不需要向其中写数据,则需要执行磁盘I/O操作的次数是(102)次。
解析:读出后面51个块,并写到磁盘上【51*2,从后向前读50块,在50块前添加一块之后填写内容,还需要对后面后50块的内容进行修改,就是说要再读一遍,并且是从新添加的这块开始读的,因为要找到后一块就要去读前一块】
-
假设某文件有100个磁盘块,0#-99#,并且FCB在内存中,文件物理结构采用隐式链接,假定每次读或写一个磁盘块就是一次磁盘操作,如果要在文件第50块(49#块)前添加一个磁盘块,但不需要向其中写数据,则需要启动磁盘I/O操作的次数是(51)次。
解析:读出前面49个块,同时写第49号块及刚添加的一个块,(需要修改其中的链接指针)
-
设某文件为隐式链接结构,由8个逻辑记录组成,每个逻辑记录的大小与磁盘快大小相等,均为1KB,并依次存储在60、6、43、7、212、124、19、28号磁盘上,若要存取文件的第6200逻辑字节处的信息,应访问(19)号磁盘快?若文件的FCB在内存中,需要启动(7)次磁盘I/O操作?
解析:6200=1K*6+56,所以(从0开始)去访问19号磁盘块,需要读磁盘7次(前6次找到19号磁盘块,第7次读出文件信息)
2、正确知识点总结
- 磁盘与主机之间传递数据是以(数据块)为单位进行的。
- 如果文件采用直接存取方式,且文件大小不固定,则采用(索引)结构较合适。
四、第二节-文件索引结构-课堂测试
1、错题解析
设有一个包含2000个记录的索引文件,每个记录正好占用一个物理块。一个物理块可以存放10个索引表目,建立索引时,一个物理块应有一个索引表目,最高级索引占据一个块。问该文件的所有及文件内容本身应占(2223)个物理块。
解析:2000+2000/10+200/10+20/10+1【每个记录一个块+一级索引+二级索引+三级索引+索引目录表】
2、正确知识点总结
设有一个包含1000个逻辑记录的索引文件,每个记录刚好占用一个物理块。一个物理块可以存放10个索引表目。建立索引时,一个物理块应有一个索引表目,试问该文件系统至少应该建立(3)级索引?(假设最高级索引只占用一个物理块)。
四、第三节-文件目录管理-课前测试
正确知识点总结
- 文件目录项中不包含的是(文件控制块的物理位置)。
- Linux系统中关于文件目录和索引节点的概念正确的是(索引节点中有文件的控制信息)。
- 目录文件不能为空(目录文件中至少包含“.”和“…”两个特殊目录项)。
- 目录文件由(文件控制块)组成。
- 在Linux系统中,当一个普通文件处于“未打开”状态时,文件所占用的资源有(一个文件目录项;一个磁盘索引节点项;一个或多个磁盘块)
补充:
文件控制块FCB
- 基本信息
- 文件名
- 用户名:文件主、同组用户、用户组等
- 文件类型
- 文件物理地址和文件长度
- 文件逻辑结构和文件物理结构
- 存取控制信息
文件主、文件主同组用户(或授权用户)、一般用户对该文件的存取权限 - 使用信息
- 文件的建立日期及时间
- 上次存取文件的日期及时间
- 当前的使用状态信息
- 共享链接计数等
- 引入索引节点,将除文件名外的其它信息“封装”
文件目录结构
- 单级目录结构:查找慢;不允许重名;不便实现文件共享
- 两级目录结构【主目录文件+用户文件】:允许重名;缺乏灵活性;无法很好的满足文件多的用户的需求
- 多级目录结构【绝对路径|当前路径】:允许重名:目录检索速度快,层次清楚;容易实现共享
目录检索技术
- 线性检索法【顺序检索】
- 哈希检索法
五、第三节-文件目录-课堂测试
1、错题解析
-
在Linux的ext2文件系统中,多个单独设备上的多个文件系统被安装到一个统一的文件系统中。假设光盘设备安装到/mnt上,如果光盘文件系统包含一个/home/user/data的文件,那么在整个文件系统中,这个文件的名字是(/mut/home/user/data)。
解析:略
-
线性搜索法、散列搜索法以及二分搜索法都可用于树型目录结构的搜索。(×)
解析:树形目录使用线性搜索法。
-
树型目录结构中,当前目录就是用户所处的目录位置,所以在Linux中,用户的当前目录就是它的注册目录。(×)
解析:不是一回事。
2、正确知识点总结
- 在实现文件系统时,为加快文件目录的检索速度,可利用“FCB分解法”。假设目录文件存放在磁盘上,每个盘块512B。FCB占64B,其中文件名占8B。通常将FCB分解成两个部分,第一部分占10B(包括文件名和文件索引节点编号),第二部分占56个字节(包括文件索引节点编号和文件的其他描述信息)。假设某一个目录文件共有254个FCB,试分别给出采用分解法前和分解法后,查找该目录文件的某个FCB的平均访问磁盘次数(16.5;4)。
解析:假设某一目录文件共有254个文件控制块,而每个磁盘块为512B,文件控制块占64B。
采用分解法前,一个盘块可存放:512/64=8个目录项,则254个文件控制块要占:254/8=32个目录块,故平均查找一个目录项需访问磁盘:32/2=16次。
采用分解法后,将文件控制块分解成两部分,第一部分占10B(包括文件名和文件内部号),第二部分占56B(包括文件内部号和文件其他描述信息i)。一个盘块可存放:512/10=51个目录项,这样254个目录项要占:254/51=5个目录块。平均查找一个目录项需访问磁盘:5/2≈3次,而得到文件控制块还应访问一次磁盘,故总共需访问磁盘:3+1=4次。 - 打开文件操作主要是(把文件控制块从磁盘拷贝到内存)。
六、第四节-文件存储空间管理-课前测试
1、错题解析
使用空闲盘块链表法管理磁盘空间,因其算法实现简单,且能实现离散分配,因此广泛地应用在多种文件系统中。(×)
解析:回收和分配效率低。
2、正确知识点总结
- 文件的存储空间管理实质上是对(外存空闲区)的组织和管理。
- 打开文件操作主要是(把文件控制块从磁盘拷贝到内存)。
补充:
空闲表法:设置一张表记录空闲块的位置和大小
空闲块链表法:使用指针将所有空闲盘块链接起来
位示图法:使用二进制位表示,0无1有
成组链接法【具体操作看例题】
- 把所有空闲磁盘块按照固定数量分成若干组,从后向前分组。
- 将每组(第1组除外)的总块数及相应的块号记录在前一组的最末块中
- 对第1组,其总块数和各块块号记录在空闲盘块栈中,放在超级块里。
- 系统启动后,将超级块复制到主存中,并建立空闲盘块号栈,栈顶指针S_Free=第1组总块数。
七、第五节-文件共享与保护-课前测试
1、错题解析
Linux的ext2文件系统采用用户权限表实现文件保护。(×)
解析:Unix和Linux都使用访问控制表
2、正确知识点总结
- 若采用口令保护方式来保护文件,则“口令”最合适的保存位置是(文件控制块)。
- 基于索引节点的共享方式,不能用于目录文件的共享。
- 基于索引节点的共享方式不能实现跨文件卷的文件共享。(因为每个文件卷中的文件索引节点都是从0开始编号的,即不同文件卷上的索引节点编号是重复的)
补充:
文件共享
- 基于索引节点的共享【硬链接】:与原文件共用一个索引节点
- 利用符号链接实现文件共享【软链接】-建立link类型的新文件
文件访问保护
- 口令保护
- 加密保护
- 设置文件使用权限
- 访问控制矩阵
- 访问控制表:对访问矩阵按列(对象)进行划分,每一列建立一张访问控制表
- 用户权限表:对访问矩阵按行进行划分,每一行建立一张访问权限表。
八、第五节-文件共享与保护-课堂测试
错题解析
-
用()可以防止共享文件可能造成的破坏,但实现起来系统开销太大。
解析:Unix和Linux都使用访问控制表
-
若用户仅允许他的某些同事访问他的文件,适用哪种文件保护机制(访问控制矩阵)。
解析:不同用户,同一文件权限
九、第六节-磁盘调度-课前测试
1、错题解析
Linux的ext2文件系统采用用户权限表实现文件保护。(×)
解析:Unix和Linux都使用访问控制表
2、正确知识点总结
- 一个磁盘的转速为7200转/分,每个磁道有160个扇区,每扇区有512B,那么理想情况下,其数据传输率为(9600)KB/s。(磁盘转速为7200转/分=120转/s,转一圈160个扇区,每个扇区512B,所以数据传输率=120160512=9600KB/s)
- 启动磁盘读写一块数据时,(传输时间)是硬件设计时就固定的。
- 基于索引节点的共享方式不能实现跨文件卷的文件共享。(因为每个文件卷中的文件索引节点都是从0开始编号的,即不同文件卷上的索引节点编号是重复的)
补充:
0号磁道在最边上。
移臂调度算法
- 先来先服务算法(FCFS)
- 最短寻道时间优先算法(SSTF):磁头方向可能会频繁移动,可能会出现饥饿现象
- 扫描算法(电梯算法)(SCAN):↑↓↑↓↑↓
- 循环扫描算法(CSAN):↓↓↓或↑↑↑;可能会出现磁臂黏着现象
- N-Step-SCAN算法:分组;子队列内SCAN;子队列之间用FCFS
- FSCAN算法:当前一组,新来的一组;组内SCAN
十、第六节-磁盘调度-课堂测试
错题解析
某磁盘组的每个盘面上有200个磁道,格式化时每个磁道被分成4个扇区,整个磁盘组共有8000个扇区,那么该磁盘组应由(10)盘片组成。
解析:理解磁盘的三维结构就行了。
补充:
Linux文件系统:
Ext2文件系统结构
0~11直接寻址
12一级间接寻址
13二级间接寻址
14三级间接寻址