软考--操作系统之文件系统多级索引

news2024/12/26 11:54:46

目录

  • 概念
    • 索引结构
    • 索引表
    • 索引方式
      • 一级索引
      • 多级索引
  • 真题分析
    • 题目1-存储文件最大长度
    • 解析
    • 题目2-多级索引占用物理块号
    • 解析
    • 题目3-综合
    • 解析
    • 总结

概念

索引结构

一个文件的信息存放在若干不连续物理块中
系统为每个文件建立一个专用数据结构——索引表,并将这些物理块的块号存放在该索引表中
索引表就是磁盘块地址数组,其中第i个条目指向文件的第i块
索引块的块号放在FCB(文件控制块)里,通过查找到FCB就可以得到索引表,然后就可以知道文件的每一块放在什么地方了
在这里插入图片描述

索引表

在这里插入图片描述
检索过程,分两步,首先查找索引表,如果存在该记录,则根据索引项的指示读取外存。
如果索引表很大,可以再为索引表建立查找表。如下图:
在这里插入图片描述

索引方式

文件系统使用索引来标识文件和目录,帮助快速定位。
传统的索引方式是一级索引,即文件和目录直接对应一个索引值。
多级索引则采用层次索引方式:
第一级索引:划分一大块空间,每个空间对应一个第一级索引。
第二级索引:在第一级索引对应空间内再划分,对应第二级索引。
第三级索引…依次类推,可以设置多个等级。

一级索引

在这里插入图片描述

多级索引

在这里插入图片描述
多级索引为文件系统带来的优势:

  1. 索引利用率高:通过分层组织,空余的索引可供其他文件和目录使用。
  2. 查找效率高:高级索引将搜索范围缩小到较小空间,降低比较次数。
  3. 扩展性好:可以动态添加高级索引,满足空间不断增加的需要。

今天主要讨论多级索引,以软考真题为例

真题分析

题目1-存储文件最大长度

在这里插入图片描述

解析

磁盘块大小为1K,每个块号占3B,那么一个物理块可放:1024/3=341个地址项,即:
一个一级索引可存放的文件大小为:3411
一个二级索引可存放文件的大小为:341×341
1=116281
一个三级索引可存放文件的大小为:341×341×341*1=39651821

多级索引公式
在这里插入图片描述
上题中物理块是1K,就是1024B,最后求的单位也是多少K,所以不涉及单位的转换。

题目2-多级索引占用物理块号

在这里插入图片描述

解析

此题属于混合索引形式,索引表中既有直接索引,又有多级索引。每一个地址项指的是索引表中一行。

解题思路如下图所示
1、0-4这5个地址项存储为直接地址索引,存储在物理块0-4块上,一个地址项对应一个物理块
2、5,6地址项为一级间接地址项,磁盘索引块和磁盘数据块分别为1K,也就是1024B,每个地址项4B,一个磁盘数据块可以存储1024/4=256个地址,此时,接上面的物理块号5开始,256个地址对应的物理块号为5-260块,同理,下一个物理块号是261-516
3、再来看看剩下的一个二级间接地址:1024/4=256个地址项,每一个又分别对应256个物理块,接相面的516块,从517开始-772块,是上面256个地址项中的第一个地址项对应的物理块号。依次往下,结束的时候是多少块号呢?256×256+516=66052
在这里插入图片描述
分析完之后,来看上题中的问题是不是一目了然了。

题目3-综合

某系统中磁盘的每个盘块大小为1KB,外存分配方法采用中的混合索引结构,其中索引节点中直接地址6项,一级索引地址2项,二级索引地址1项,每个盘块号占用4个字节,请问该系统中允许的文件最大长度是多少?
此题是上面两个题目的结合,综合上面的讲解,来看这道题

解析

一个盘块可记录的盘块号的数量为∶1KB/4=256
直接地址∶记录6个文件所占物理块的块号
一级索引∶记录256x2=512个文件所占物理块的块号
二级索引∶记录256x256个文件所占物理块的块号
该系统中允许的文件最大长度 (256x256+256x2+6)*1KB=自己算下吧

总结

理解多级索引的概念,每多一级,存储的数量是呈幂次变化,牢记多级索引公式,当然理解公式的含义远比死记硬背要牢靠很多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/704893.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

快速部署K8s仪表板,助力管理轻松搞定!

https://kubernetes.io/zh-cn/docs/tasks/access-application-cluster/web-ui-dashboard/ Dashboard 是基于网页的 Kubernetes 用户界面。 你可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。 你可以使…

【运维工程师学习三】Linux中Shell脚本编写

【运维工程师学习三】shell编程 Shell程序分类1、系统中sh命令是bash的软链接2、Shell脚本标准格式之文件后缀3、Shell脚本标准格式之文件内容首行4、Shell脚本的运行方法一、作为可执行程序解释 二、作为解释器(bash)参数 5、find、grep、xargs、sort、…

C++ 中的字符串类

历史遗留问题 C 语言不支持真正意义上的字符串 C 语言用字符数组和一组函数实现字符串操作 C 语言不支持自定义类型,因此无法获得字符串类型 解决方案 从 C 到 C 的进化过程引入了自定义类型 在 C 中可以通过类完成字符串类型的定义 问题: C 中的…

华为云CodeArts实践初体验活动即将结束,抓紧报名,赢华为耳机!

【活动简介】 CodeArts是华为自研一站式软件开发生产线,软件开发全流程覆盖:支持需求管理、代码托管、流水线、代码检查、编译构建、部署、测试、制品仓库等全生命周期软件开发服务;开箱即用,云上开发。本次实践体验活动带你初步…

项目——学生信息管理系统4

目录 学生模块的功能实现 1. 创建Student实体类型 编写StudentDao 提供添加学生的方法 创建 学生添加页面 创建 AddStudentFrm 页面 注意创建成JInternalFrame类型 注意:把main方法注释掉 回到 MainFrm.java 页面 给添加学生按钮绑定事件 当打开 AddStudentF…

从裸机启动开始运行一个C++程序(五)

先序文章请看 从裸机启动开始运行一个C程序(四) 从裸机启动开始运行一个C程序(三) 从裸机启动开始运行一个C程序(二) 从裸机启动开始运行一个C程序(一) 把MBR和内核源码拆开 拆分M…

实现表格合并单元格、在表格做输入处理以及数值统计

需求:表格样式涉及到合并单元格,功能上可以在表格最后一列输入分数,并自动统计总分。 大体样式 代码: 表格: :span-method 属性用来合并单元格 :summary-method 属性用来实现自动统计 // 合并单元格操作 objectSpa…

头文件的使用,什么是头文件?

*## 头文件的使用*为什么要加这个#include include表示包含的意思,就是把iostream这个文件拷贝到main.c这里 有什么意义呢? 有什么意义呢?都是明星同时也是小卡 所以需要包含头文件去查找一下 所以头文件就是相对应功能函数的集合。要想使用…

java实现布隆过滤器(手写和Guava库提供的)

目录 前言 布隆过滤器的原理 插入​编辑 查询 删除 布隆过滤器优缺点 优点: 缺点: 代码实现 方式一: Google Guava 提供的 BloomFilter 类来实现布隆过滤器 到底经过几次哈希计算 解决缓存穿透 方式二:手写 前言 在学…

基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建

系列文章目录 基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建 基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定 基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理 基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理 基于PyQt5的桌面图像调试仿真平台开发(5)…

Git:git merge和git rebase的区别

分支合并 git merge是用来合并两个分支的。比如:将 b 分支合并到当前分支。同样git rebase b,也是把 b 分支合并到当前分支。他们的 「原理」如下: 假设你现在基于远程分支"origin",创建一个叫"mywork"的分支…

【爬虫】对某某贴吧主页的爬虫分析+源码

1. 网站分析 想要的内容有标题、时间和帖子跳转链接 查看网站源代码,发现想要的内容就在里面,那就好办了,直接上正则,当然beautifulsoup也不是不可以 2. Python源码 import requests import re from prettytable import PrettyTa…

“生鲜蔬”APP的设计与实现

1.引言 在这个科技与网络齐头并进的时代,外卖服务正在飞速发展,人们对外卖APP系统功能需求越来越多,开发APP的人员对自己的要求也要越来越高,要从所做APP外卖系统所实现的功能和用户的需求来对系统进行设计,还需要与当…

基于SpringBoot+vue的人职匹配推荐系统设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

CC1310 CC1310F128RSMR 超低功耗SUB-1GHz 无线 MCU芯片

1 器件概述 1 1 特性 • 微控制器 – 性能强大的 Arm Cortex -M3 处理器 – EEMBCCoreMark评分:142 – EEMBC ULPBench™评分:158 – 时钟速率最高可达 48MHz – 32KB、64KB 和 128KB 系统内可编程闪存 – 8KB 缓存静态随机存取存储器 (SRAM) &#xff…

农业副业产品求购供应发布市场行情VIP会员公众号小程序开源版开发

农业副业产品求购供应发布市场行情VIP会员公众号小程序开源版开发 后台一键同步全国近200家农产品批发市场商品包括,蔬菜、水果、水产、粮油和农副产品等的价格。 前端VIP权益功能,开通VIP会员后,可以开启VIP会员标识。可无限制查看全国市场…

Scrapy框架之Mongo安装和与关系型数据库比较

目录 Windows安装与启动MongoDB 下载 启动MongoDB 通过命令启动 脚本 快速学习方法 与关系型数据库比较 什么是BSON Windows安装与启动MongoDB 下载 企业版-收费 社区版-免费 下载Mongodb Download MongoDB Community Server | MongoDB 选择版本 稳定版5.0.9 选择平台…

前端工程化 | vue3+ts+jsx+sass+eslint+prettier 配置化全流程

起因: 前端开发是一个工程化的流程。 包括持续集成、持续部署。 我认为集成 的第一方面就是开发,在前端项目开发中,需要保证代码格式规范的统一、代码质量、提交的规划。而这些要求需要通过各种插件来保证规范化和流程化开发。 如何配置这…

大数据的金融数据读取及分析(二)

一、注册和获取token 参考大数据的金融数据读取及分析(一)大数据的金融数据读取及分析(-)_石工记的博客-CSDN博客 二、获取股市信息 需注意的是,利用tushare接口获取部分信息时对积分有不同的要求,积分不…

后室主题 Game Jam

在后室主题 Game Jam 中探索无尽的深渊! 向所有富有冒险精神的游戏开发者和创作者发出召集令!准备好潜入未知领域,将令人毛骨悚然的后室之谜变为现实吗?加入我们,参加与 Game Maker 合作举办的令人振奋的游戏竞赛吧&am…