操作系统文件管理相关习题

文件和文件系统

文件:具有名字(文件名)的若干相关元素的集合
元素通常是记录
记录又是一组有意义的数据项的集合
数据分为数据项、记录、文件三级

  1. 文件、记录和数据项
    记录:一组相关数据相的集合,用于描述一个对象在某方面的属性
    有结构文件:由若干相关记录组成,记录式文件
    无结构文件:被看成字符流。流式文件
  2. 文件类型和文件系统模型
    1. 文件系统模型
      该模型分为三个层次:
      1. 底层是对象及其属性
        文件、目录、磁盘存储空间
      2. 中间层是对对象进行操纵和管理的软件集合:
        对文件存储空间的管理、对文件目录的管理、用于将文件的逻辑地址转换为物理地址的机制、对文件读、写的管理、对文件的共享和保护等功能一一文件系统的核心部分
      3. 高层是文件系统提供给用户的接口
        命令接口、程序接口
  3. 文件操作
    最基本的文件操作有:创建、删除、读、写文件等
    还有:打开文件、关闭文件、文件更名。
    1. 最基本的文件操作
      1. 创建文件
        系统为新文件分配必要的外存空间
        在文件目录中为其建立目录项。目录项中应包含文件名及其在外存的地址等属性
      2. 删除文件
        找到要删除文件的目录项,使之成为空项
        回收文件所占的存储空间
      3. 读文件
        在相应的系统调用中给出文件名和应读入的内存目标地址
        为此,须先查找目录,找到指定的目录项,从中得到被读文件的外存地址和文件读指针
      4. 写文件
        在相应的系统调用中给出文件名和该文件在内存的(源)地址
        找目录,找到指定的目录项,再利用目录中的写指针进行写操作
    2. 文件的打开和关闭操作
      当前OS所提供的大多数文件操作,其过程大致都是这样两步:
      1. 过检索文件目录来找到指定文件的属性及其在外存上的位置
      2. 文件实施相应的操作,如读文件或写文件等
        打开文件一一是指系统将指明文件的属性(包括该文件在外存上的物理位置)从外存拷贝到内存打开文件表的一个表目中,并将该表目的编号(或称索引号)返回给用户。
        作用:以后,当用户再要求对该文件进行相应操作时,便可利用该索引号向系统提出操作请求。这时系统便可直接利用该索引号到打开文件表中去查找,从而避免了对该文件的再次检索。这样不仅节省了大量的检索时间,也显著提高了对文件的操作速度。
        关闭文件一一如果用户已不再需要对该文件操作时,可利用“关闭”(Close)系统调用来关闭此文件,OS将会从打开文件表中把该文件对应的表目删除
文件的逻辑结构
  1. 通常,文件是由一系列的记录组成的。
    文件系统设计的关键要素是:
    • 这些记录构成一个文件的方法——逻辑结构
    • 将一个文件存储到外存上的方法——存储结构
      文件的逻辑结构
      这是从用户观点出发所观察到的文件组织形式,是用户可以直接处理的数据及其结构,它独立于文件的物理特性,又称为文件组织。
      文件的物理结构
      又称文件的存储结构,是指文件在外存上的存储组织形式。它不仅与存储介质的存储性能有关,而且与所采用的外存分配方式有关。
      对文件逻辑结构所提出的基本要求:
    1. 提高检索速度
    2. 便于修改
    3. 降低文件的存储费用
  2. 文件逻辑结构的类型
    1. 有结构文件
      又称记录式文件
      数据库常采用有结构文件
      每个记录都是描述实体集中的一个实体,各记录着相同或不同数目的数据项
      1. 定长记录
        1. 文件长度使用记录数目表示
        2. 记录的处理方便、开销小
        3. 是目前较常用的一种记录格式,被广泛用于数据处理中。
      2. 变长记录
        变长的原因:
        可能是记录中包含的数据项数目不相同;也可能是数据项长度不相同
        根据用户和系统管理上的需要,可采用多种方式来组织这些记录,形成下述几种文件:
        1. 顺序文件
          这是有一系列记录按某种顺序排列所形成的文件。通常是定长记录组成,也可以是变长记录的
        2. 索引文件
          当记录可变长时,通常为之建立一张索引表,并为每个记录设置一个表项,以加快对记录的检索速度
          定长记录也可用
        3. 索引顺序文件
          为文件建立一张索引表,为每一组记录中的第一个记录设置一个表项
          至少每组内是定长记录
外存分配方式

物理结构直接与外存分配方式有关。
目前常用的外存分配方式有:连续分配、链接分配、索引分配。
在一个系统中,仅采用其中的一种外存分配方式。

  1. 连续分配
    1. 连续分配方式
      要求为每一个文件分配一组相邻的盘块
      把逻辑文件中的记录顺序地存储到相邻的物理盘块中
      成为顺序文件结构,又称顺序文件(连续文件)。
      文件目录项:文件名、第一个盘块号、文件长度(以盘块数进行计量)
      会形成磁盘碎片(外部碎片),可以用紧凑方法消除碎片,但将花费比内存紧凑多得多的时间
  2. 连续分配的主要优缺点
    优点:
    1. 顺序访问容易
      从第一个盘块开始,顺序地、逐个地往下读/写,也支持直接存取。
    2. 顺序访问速度快
      磁头移动得距离最少。
      缺点:
    3. 要求有连续的存储空间
    4. 必须事先知道文件的大小。文件大小不宜动态变化。
  3. 链接分配
    在采用链接分配时,可通过在每个盘块上的链接指针,将同属于一个文件的多个离散的盘块链接成一个链表,把这样形成的文件称为链接文件
    优点:
    1. 消除了外部碎片,提高了外存利用率
    2. 便于文件动态增长,文件的增、删、改也十分方便
      链接方式又可以分为隐式链接和显式链接两种
隐式链接

每个文件的目录项中,包含第一个盘块和最后一个盘块号(指针),而在每个盘块中,都有一个指向下一个盘块的指针。如果盘块大小为512字节,指针占4个字节,则每个盘块中只有508个字节可供用户使用

  1. 隐式链接缺点:
    1. 只适合顺序访问,对随机访问极其低效
    2. 可靠性差——任何一个指针出现问题,都将导致整个链的断开
      为了提高检索速度和减少指针所占用的存储空间,可以将几个盘块组成一个簇(cluster)。但增大了内部碎片
显式链接

用于链接文件物理块的指针(块号),显式地存放在外存的一张链接表中,整个磁盘仅一张表
表中的序号是物理块号,从0开始,直至N-1;N为磁盘总块数。
每个表项中存放链接指针,即下一个盘块号
文件的第一个块号,存放在文件目录项(FCB)中
系统启动时,该表调入内存——提高检索速度
该表称为文件分配表FAT(FileAllocationTable)
显式链接结构:
![[Pasted image 20241205131557.png]]

	文件物理结构

![[Pasted image 20241205131607.png]]

索引分配
  1. 单级索引
    链接分配解决了连续分配存在的问题,但又出现了另外两个问题:

    1. 不能支持高效的直接存取
    2. FAT需要占用较大的内存空间
      由于一个文件所占用的盘块号是随机地分布在FAT中的,因而只有将整个FAT调入内存,才能保证在FAT中找到一个文件的盘块号。当磁盘容量很大时,FAT可能要占用数MB以上的内存空间,这是令人难以接受的。事实上,在打开文件时,只需要把该文件的盘块号调入内存即可,完全没有必要将整个 FAT调入内存。
      为此,应将每个文件的盘块号集中放在一起。索引分配方法就是基于这种思想所形成的一种分配方法。它为每个文件分配一个索引块(表),把分配给该文件的盘块号都记录在索引块中。
      在建立文件时,其目录项中包含指向索引块的指针。
      ![[Pasted image 20241205132224.png]]

    索引分配的优点:
    1. 索引分配支持直接访问
    2. 索引分配不会产生外部碎片
    3. 文件较大时,优于链接分配
    索引分配的缺点:
    可能要花费较多的外存空间——
    每个文件都要一个索引表,小文件仍需分配一个盘块

  2. 多级索引分配
    当OS为一个大文件分配磁盘空间时,若盘块号装满一个索引l块时,OS便为该文件分配另一个盘块,依次类推,再通过链指针将各索引块链接起来。这种方法是低效的。
    解决的办法是采用多级索引
    ![[Pasted image 20241205132709.png]]

如果盘块大小为1KB,每个盘块号占4个字节,则一个索引块可存放256个盘块号。
这样在两级索引时,文件的最大盘块数为N=256x256=64K个盘块号
即允许的文件最大长度为64MB
若采用一级索引,允许的最大文件长度为
1KBx256=256KB

计算盘块大小为4KB的情况


题目:二级索引,可以有256x256个的盘块号,把盘块号都占满的情况,盘块的数量乘以盘块的大小,就是允许的文件最大长度
1 K B ⋅ 256 ⋅ 256 = 1 K B ⋅ 2 8 ⋅ 2 8 = 2 26 B = 2 6 M B = 64 M B 1KB \cdot 256 \cdot 256 =1KB \cdot 2^{8} \cdot 2^{8} =2^{26}B=2^{6}MB=64MB 1KB256256=1KB2828=226B=26MB=64MB

索引块可存放
4 K B 4 B = 2 2 ⋅ 2 10 2 2 = 2 10 = 1024 \frac{4KB}{4B}=\frac{2^{2} \cdot 2^{10}}{2^{2}}=2^{10}=1024 4B4KB=2222210=210=1024
个盘块号
二级索引时允许的文件最大长度
4 K B ⋅ 1024 ⋅ 1024 = 4 ⋅ 2 10 ⋅ 2 10 ⋅ 2 10 B = 4 ⋅ 2 30 B = 4 G B 4KB \cdot 1024 \cdot 1024=4 \cdot 2^{10} \cdot 2^{10} \cdot 2^{10}B=4 \cdot 2^{30}B= 4GB 4KB10241024=4210210210B=4230B=4GB
一级索引为
4 K B ⋅ 1024 = 4 ⋅ 2 10 ⋅ 2 10 B = 4 M B 4KB \cdot 1024=4 \cdot 2^{10} \cdot 2^{10}B=4MB 4KB1024=4210210B=4MB

46

某文件系统为一级根目录结构,文件的数据一次性写入磁盘,已写入的文件不可修改,但可多次创建新文件。请回答如下问题。

  1. 在连续、链式、索引三种文件的数据块组织方式中,哪种更合适?要求说明理由。为定位文件数据块,需在FCB中设置哪些相关描述字段?
  2. 为快速找到文件,对于FCB,是集中存储好,还是与对应的文件数据块连续存储好?要求说明理由

  1. 连续数据块组织方式更合适。因为系统规定文件不可修改,即文件长度不可能动态增长或缩小,在这种情况下,连续组织方式的缺点不再存在,而它的优点是顺序访问容易、读写文件速度快,而且磁盘空间利用率高。为定位文件数据块,需在FCB中设置首块号和文件长度值
  2. 为快速找到文件,对于FCB集中存储好,因为这样目录查找速度比FCB与对应的文件数据块连续存储时快得多
混合索引分配方式

将多种索引|方式相结合而形成的一种索引方式
有直接索引l、一级索引、二级索引,甚至三级索引l
UNX系统采用混合索引I方式
![[Pasted image 20241205142154.png]]

设盘块大小为4KB
直接地址。为了提高对文件的检索速度度,设置了10个直接地址项,i.addr(0)~i.addr(9)。当文件大小不超过40KB时,可直接索引|得到。
一次间接地址。i.addr(10)。文件大小不超过 4MB+40KB。(假设盘块号4字节)
二次间接地址。i.addr(11)。文件大小不超过 4GB+4MB+40KB。
三次间接地址。i.addr(12)。文件大小不超过 4TB+4GB+4MB+40KB。

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


每一个磁盘块可以存储多少个地址项
256 4 = 64 \frac{256}{4}=64 4256=64
一个盘块可以存放64个盘块号
直接地址索引:盘块大小是256字节,有4个直接地址索引
256 ⋅ 4 = 1024 = 2 10 B 256 \cdot 4 = 1024=2^{10}B 2564=1024=210B
一级间接地址索引,有2个,每个盘块存储64个盘块号,每个盘块号指向1个盘块,一个盘块存放256B数据
2 ⋅ 64 ⋅ 256 = 2 15 B 2 \cdot 64 \cdot 256=2^{15}B 264256=215B
二级间接地址索引,有一个,能存放64乘以64个盘块号,每个盘块号指向一个盘块
64 ⋅ 64 ⋅ 256 = 2 20 B 64 \cdot 64 \cdot 256=2^{20}B 6464256=220B
总和
1 K B + 2 5 K B + 2 10 K B = 1 K B + 32 K B + 1024 K B = 1057 K B 1KB+2^{5}KB+2^{10}KB=1KB+32KB+1024KB=1057KB 1KB+25KB+210KB=1KB+32KB+1024KB=1057KB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值