欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

考研408总结:操作系统篇 - 文件管理详解

最编程 2024-07-30 08:33:19
...

这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战

考研倒计时:54天

参考资料: 王道操作系统考研复习指导 天勤操作系统高分笔记

文件的逻辑结构

image.png

需注意的tip:

  • 可变长记录的顺序文件无法实现随机存取,定长记录可以。
  • 定长记录、顺序结构的顺序文件可以快速检索
  • 索引本身是定长记录的顺序文件。
  • 索引文件解决了顺序文件不方便增删的缺点。

【习题】

有一个顺序文件含有10000条记录,平均查找的记录数为5000个,采用索引顺序文件结构,则最好情况下平均只需查找()次记录。

A. 1000 B. 10000 C. 100 D. 500

点击查看答案

最好的情况是根号下10000=100组,每组100条记录,因此平均查找次数为50+50=100。选C

下列关于索引表的叙述中,正确的是______。

A.建立索引表的目的之一是为了减少存储空间

B.索引表中含有索引文件的数据及其物理地址

C.对索引文件存取时,必须先查找索引表

D.索引表中每个记录的索引项可以有多个

点击查看答案

索引文件由逻辑文件和索引表组成,对索引文件存取时,必须先查找索引表。 索引表只包含每条记录的长度和在逻辑文件中的起始位置。 每条记录都要有一个索引项,所以提高了存储代价。

选C

文件目录

image.png

注意的tip:

  • 目录结构的特点,索引结构的概念。
  • 无环图目录结构与文件共享结合,会计算,详见后面例题。

【习题】

如果文件系统中有两个文件重名,不应采用_______。

A. 一级目录结构B. 树型目录结构 C. 二级目录结构D. 多级目录结构

点击查看答案A

【2009年408】设文件F1的当前引用计数值为1,先建立F1的符号链接(软链接)文件F2,再建立F1 的硬链接文件F3,然后删除F1。此时,F2和F3的引用计数值分别是______。

A.0、1            B.1、1            C.1、2            D.2、1

点击查看答案

当建立F2时,F1和F2的引用计数值都为1。当再建立F3时,F1和F3的引用计数值就都变成了2。当后来删除F1时,F3的引用计数值为2-1=1,F2的引用计数值不变。 选B

文件的物理结构

image.png

注意tip:

  • 各种分配方式的特点
  • 重点:计算最大文件和所需读磁盘次数

【习题】

【2009年408】下列文件物理结构中,适合随机访问且易于文件扩展的是______。

A.连续结构      B.索引结构

C.链式结构且磁盘块定长 D.链式结构且磁盘块变长

点击查看答案

链式结构不能实现随机访问,连续结构的文件不易拓展。 选B

【2010年408】 设文件索引结点中有7个地址项,其中4个地址项是直接地址索引,2个地址项是一级间接地址索引,1个地址项是二级间接地址索引,每个地址项大小为4B,若磁盘索引块和磁盘数据块大小均为256B,则可表示的单个文件最大长度是________KB。

点击查看答案

解:每个索引块上可以存放的索引项为256B/4B=26256B/4B=2^6。 直接索引的数据块有4个,两个一级间接地址索引指向的数据块为226=272 * 2^6= 2^7, 1个二级间接地址索引指向的数据块有12626=2121 * 2^6 * 2^6= 2^{12}. 所以单个文件最大可以有4+27+212=42284+2^7+ 2^{12}=4228块,文件大小为4228256B=1057KB4228*256B=1057KB

【2014年408】 文件 F 由 200 条记录组成,记录从 1 开始编号。用户打开文件后,欲将内存中的一条记录插入到文件 F 中,作为其第 30 条记录。请回答下列问题,并说明理由。

1)若文件系统采用连续分配方式,每个磁盘块存放一条记录,文件 F 存储区域前后均有足够的空闲磁盘空间,则完成上述插入操作最少需要访问多少次磁盘块?F 的文件控制块内容会发生哪些改变?

2)若文件系统采用链接分配方式,每个磁盘块存放一条记录和一个链接指针,则完成上述插入操作需要访问多少次磁盘块?若每个存储块大小为 1KB,其中 4 个字节存放链接指针,则该文件系统支持的文件最大长度是多少?

点击查看答案

(1)系统采用顺序分配方式时,插入记录需要移动其他的记录块,整个文件共有 200 条记录,要插入新记录作为第 30 条,而存储区前后均有足够的磁盘空间,且要求最少的访问存储块数,则要把文件前 29 条记录前移,若算访盘次数移动一条记录读出和存回磁盘各是一次访盘,29 条记录共访盘 58 次,存回第 30 条记录访盘 1 次,共访盘 59 次。(1 分) F 的文件控制区的起始块号和文件长度的内容会因此改变。(1 分)

(2)文件系统采用链接分配方式时,插入记录并不用移动其他记录,只需找到相应的记录,修改指针即可。插入的记录为其第 30 条记录,那么需要找到文件系统的第 29 块,一共需要访盘 29 次,然后把第 29 块的下块地址部分赋给新块,把新块存回内存会访盘 1 次,然后修改内存中第 29 块的下块地址字段,再存回磁盘(1 分),一共访盘 31 次。(1 分)

4 个字节共 32 位,可以寻址 232=4G2^{32}=4G 块存储块,每块的大小为 1KB,即 1024B,其中下块地址部分占 4B,数据部分占 1020B,那么该系统的文件最大长度是 4G×1020B=4080GB。(2 分)

文件存储空间管理和基本操作

image.png

注意的tip:

  • 空闲表法和内存管理的动态分区分配类似,可对比记忆。
  • 重点:位示图法,会计算转换!
  • 基本操作的大致过程需要了解,会考选择题。

【习题】

若用8个字(字长32位)组成的位示图管理内存,假定用户归还一个块号为100的内存块,它对应位示图的位置为(  )。假定字号、位号、块号均从1开始算起,而不是从0开始。

A. 字号为3,位号为5

B. 字号为4,位号为4

C. 字号为3,位号为4

D. 字号为4,位号为5

点击查看答案B

【2015年408】文件系统用位图法表示磁盘空间的分配情况,位图存于磁盘的32~127 号块中,每个盘块占1024 个字节,盘块和块内字节均从0 开始编号。假设要释放的盘块号为409612,则位图中要修改的位所在的盘块号和块内字节序号分别是    

A.81,1   

B.81,2

C.82,1  

D.82,2

点击查看答案 一个盘块有8192 位,409612/8192=50,409612%8192= 12,所以,盘块号为409612 对应位图中的盘块号为32+50=82,在块内字节序号为1。【块内字节号=(盘块号%8192)/8】这里不是位号。

【2012年408】若一个用户进程通过read系统调用读取一个磁盘文件中的数据,则下列关于此过程的叙述中,正确的是( )。

I.若该文件的数据不在内存中,则该进程进入睡眠等待状态

II.请求read系统调用会导致CPU从用户态切换到核心态

III. read系统调用的参数应包含文件的名称

A. 仅I、lI

B. 仅I、III

C. 仅Ⅱ、Ⅲ

D. I、Ⅱ和III

点击查看答案 I:当用户进程读取的磁盘文件数据不在内存时,产生中断(缺页中断),会导致该进程进入睡眠等待状态(其实就是阻塞态),I正确。

II:read系统调用属于系统调用,系统调用是运行在内核空间,因此请求read系统调用会导致CPU从用户态切换到核心态,II正确。

III:在调用read之前,需要用open打开该文件,如上可以知道open会产生一个文件编号(或索引)返回给用户。以后当用户要对该文件进行操作时,只需利用编号(或索引号)向系统提出请求即可,所以read系统调用的参数不应包含物理文件名,III错误。

read要求用户提供三个输入参数:文件描述符fd,buf缓冲区首址,传送的字节数n

选A

文件共享、保护以及文件系统的层次结构

image.png

注意的tip:

  • 文件共享相关的计算(如前面的例题),区分硬链接和软链接。
  • 了解一些文件保护的方式

【习题】

【2020年408】若多个进程共享同一个文件F,则下列叙述中正确的是:

A.各进程只能用“读”方式打开文件 F;

B.在系统打开文件表中仅有一个表项包含F的属性;

C.各进程的用户打开文件表中关于F的表项内容相同;

D.进程关闭F时系统删除F在系统打开文件表中的表项。

点击查看答案 答案:B
解析:A:各进程既可以用读方式打开文件F,也可用写方式打开文件F

B:系统打开文件表只有一张,正确

C:打开文件表关于同样一个文件的表项内容不一定相同

D:进程关闭F时会使F的引用计数-1,引用计数=0时才会删除表项

部分内容待补充完善~

如有误,请多指正!