索引文件结构

索引结构是讲逻辑上连续的文件信息存放在不连续的物理块中,系统为每个文件建立一张索引表。索引表记录了文件信息所在的逻辑块号对应的物理块号。

题目通常要求:

  1. 可根据逻辑块号找到对应的物理块号
  2. 可分清:直接地址索引、一级间接地址索引、二级间接地址索引...

概念

主要阐述什么是直接地址索引、一级间接地址索引(以此类推)

  • 直接地址索引,是指它直接存放的是内容(实际内容地址),例如10,20物理块号是直接地址索引节点,存放的是直接地址索引。
  • 一级间接索引节点,是指它存放的一级地址索引表,该索引表的每一项直接存放内容(存放直接地址索引)。
  • 二级间接索引节点,是指它存放的是二级地址索引表,该索引表的每一项直接存放一级地址索引表,该索引表的每一项直接存放内容(存放直接地址索引)。

...

逻辑块号和物理块号

逻辑块号是连续的概念是对程序来言,就像 arr[0],arr[1]...,而实际arr[0] 和 arr[1]可能是不连续的,所以将 arr[0],arr[1]其中的 0,1...称为逻辑块号,对应的内容是物理块号。

但注意,上图仅针对于 arr[x] 对应的就是直接索引,当对应到一级间接索引时会发生改变,要到内层去找到第一个直接物理盘块,继续编号,如下图所示:

题目

摘自 "软考达人"

假设文件系统采用索引节点管理,且索引节点有8个地址项iaddr[0]~iaddr[7],每个地址项大小为4B, iaddr[0]~iaddr[4]采用直接地址索引,iaddr[5]和iaddr[6]采用一级间接地址索引,iaddr[7]采用二级间接地址索引。假设磁盘索引块和磁盘数据块大小均为1KB字节,文件Filel的索引节点如下图所示。若用户访问文件Filel中逻辑块号为5和261的信息,则对应的物理块号分别为( );101号物理块存放的是( )。

解题思路

通过概念可知,arr[5]对应的是一个一级索引节点,非物理块号,所以往内一层找到第一个:58号,得逻辑块号5,对应的物理块号为58;

逻辑块号261,需要计算,由题目知:磁盘索引块为1KB,地址项大小为4B。所以可得 物理盘号 90 作为一个一级间接索引(磁盘索引块),它一共可存放 1KB * 1024 / 4 = 256 个地址。所以物理盘号 90一共可以存放256个地址,即它存放的最后一个逻辑值是 5 + 255 = 260(arr[260]),所以261顺到下一个一级间接索引91,对应的是187物理盘号。

101号物理块存放的是二级间接索引的地址。

相关推荐
JMchen1237 小时前
现代Android图像处理管道:从CameraX到OpenGL的60fps实时滤镜架构
android·图像处理·架构·kotlin·android studio·opengl·camerax
Jing_jing_X9 小时前
CPU 架构:x86、x64、ARM 到底是什么?为什么程序不能通用?
arm开发·架构·cpu
qq_1777673711 小时前
React Native鸿蒙跨平台自定义复选框组件,通过样式数组实现选中/未选中状态的样式切换,使用链式调用替代样式数组,实现状态驱动的样式变化
javascript·react native·react.js·架构·ecmascript·harmonyos·媒体
小程故事多_8012 小时前
深度搜索Agent架构全解析:从入门到进阶,解锁复杂问题求解密码
人工智能·架构·aigc
●VON13 小时前
React Native for OpenHarmony:项目目录结构与跨平台构建流程详解
javascript·学习·react native·react.js·架构·跨平台·von
Gary董13 小时前
高并发的微服务架构如何设计
微服务·云原生·架构
ujainu14 小时前
Flutter + OpenHarmony 实战:《圆环跳跃》——完整游戏架构与视觉优化
flutter·游戏·架构·openharmony
爬山算法14 小时前
Hibernate(74)如何在CQRS架构中使用Hibernate?
java·架构·hibernate
香芋Yu15 小时前
【大模型教程——第二部分:Transformer架构揭秘】第2章:模型家族谱系:从编码器到解码器 (Model Architectures)
深度学习·架构·transformer
从此不归路16 小时前
Qt5 进阶【13】桌面 Qt 项目架构设计:从 MVC/MVVM 到模块划分
开发语言·c++·qt·架构·mvc