第四章 文件管理 四、文件的物理结构(文件分配方式)
目录
一、文件块,磁盘块
二、连续分配
1、定义:
2、计算方式:
3、注意:
4、优点:
5、缺点:
6、总结
三、链接分配----隐式链接
1、定义:
2、如何实现逻辑块号转物理块号
3、优点:
4、总结
四、链接分配----显式链接
1、定义:
2、如何实现逻辑块号转物理块号
3、优点:
4、总结:
五、索引分配
1、定义:
2、例子:
3、注意
4、优点:
5、缺点:
6、一个磁盘块不够装怎么办?
(1)链接方案
1.定义:
2.缺点:
(2)多层索引
1.定义:
2.文件最大长度:
3、如何实现逻辑块号转物理块号
4、注意:
(3)混合索引
1.定义:
2.优点:
(4)总结
六、总结
一、文件块,磁盘块
1、类似于内存分页,磁盘中的存储单元也会被分为一个个“块/磁盘块/物理块”。很多操作系统中,磁盘块的大小与内存块、页面的大小相同.
2、优点:方便内存的交换。
3、同样的,在外存管理中,为了方便对文件数据的管理,文件的逻辑地址空间也被分为了一个一个的文件“块”。
二、连续分配
1、定义:
连续分配方式要求每个文件在磁盘上占有一组连续的块。

2、计算方式:
物理块号=起始块号+逻辑块号
3、注意:
(1)逻辑块号 ≥ 长度 ,就不合法.
4、优点:
(1)可以直接算出逻辑块号对应的物理块号,因此连续分配支持顺序访问和直接访问(即随机访问)
(2)因为读取某个磁盘块时,需要移动磁头。访问的两个磁盘块相隔越远,移动磁头所需时间就越长,所以,连续分配的文件在顺序读/写时速度最快.
5、缺点:

(1)当黄色区域想要扩展的时候,发现后面的磁盘块已经被占用了,所以就必须整体将黄色块迁移到绿色块才能拓展,因为只有绿色块才有连续的4个块。连续分配的文件不方便拓展。

(2)当有文件想要存储进绿色块时,却发现没有连续的块,所以无法存储,造成了空间的浪费。
结论:物理上采用连续分配,存储空间利用率低,会产生难以利用的磁盘碎片可以用紧凑来处理碎片,但是需要耗费很大的时间代价。
6、总结

三、链接分配----隐式链接
1、定义:

2、如何实现逻辑块号转物理块号
(1)类似于链表,每个物理块号只知道它的前驱和后继,若要访问第i个物理块号,只有先把前面i-1个都访问了才行.
结论:
采用链式分配(隐式链接)方式的文件,只支持顺序访问,不支持随机访问,查找效率低。另外,指向下一个盘块的指针也需要耗费少量的存储空间。
3、优点:
(1)方便拓展
结论:
采用隐式链接的链接分配方式,很方便文件拓展。另外,所有的空闲磁盘块都可以被利用,不会有碎片问题,外存利用率高。
4、总结

四、链接分配----显式链接
1、定义:
注意:物理块号可以是隐含的。

2、如何实现逻辑块号转物理块号
(1)一个用户要找aaa的2号逻辑块。
(2)我们首先在FCB中找到aaa的起始块号为2

(3)根据FAT表可知,
物理块号2,是aaa的0号块;
物理块号5,是aaa的1号块;
物理块号0,是aaa的2号块;

(4)所以,aaa的2号块为存放在物理块号为0的磁盘块中。
3、优点:
(1)采用链式分配(显式链接)方式的文件,支持顺序访问,也支持随机访问(想访问i号逻辑块时,并不需要依次访问之前的0~ i-1号逻辑块),由于块号转换的过程不需要访问磁盘,因此相比于隐式链接来说,访问速度快很多。
(2)显式链接也不会产生外部碎片,也可以很方便地对文件进行拓展。
4、总结:

五、索引分配
1、定义:
索引分配允许文件离散地分配在各个磁盘块中,系统会为每个文件建立一张索引表,索引表中记录了文件的各个逻辑块对应的物理块(索引表的功能类似于内存管理中的页表――建立逻辑页面到物理页之间的映射关系)。
索引表存放的磁盘块称为索引块。文件数据存放的磁盘块称为数据块。
2、例子:
假设我们有一个文件“aaa”,它的数据依次存放在2,5,13,9四个物理块内。
而7号物理块作为它的索引块,里面存的是索引表。
(1)若我们要找aaa的0号逻辑块,首先就得根据FCB目录中的索引块找到索引表。

(2)7号块中存的就是这个索引表

(3)根据逻辑块号0,找到物理块号2中的数据。

3、注意

4、优点:
(1)索引分配方式可以支持随机访问。文件拓展也很容易实现(只需要给文件分配一个空闲块,并增加一个索引表项即可)
5、缺点:
(1)索引表要占据一定的存储空间。
6、一个磁盘块不够装怎么办?

(1)链接方案
1.定义:
如果索引表太大,一个索引块装不下,那么可以将多个索引块链接起来存放。

2.缺点:

(2)多层索引
1.定义:
使第一层索引块指向第二层的索引块。还可根据文件大小的要求再建立第三层、第四层索引块。
2.文件最大长度:

3、如何实现逻辑块号转物理块号

4、注意:

采用K层索引结构,且顶级索引表未调入内存,则访问一个数据块只需要K+1次读磁盘操作
(3)混合索引
1.定义:
多种索引分配方式的结合。例如,一个文件的顶级索引表中,既包含直接地址索引(直接指向数据块),又包含一级间接索引(指向单层索引表)、还包含两级间接索引(指向两层索引表)。

- 若顶级索引表还没读入内存
- 访问0~7号逻辑块:两次读磁盘
- 访问8~263:三次读磁盘
- 访问264~65799:四次读磁盘
2.优点:
对于小文件,只需较少的读磁盘次数就可以访问目标数据块。(一般计算机中小文件更多)
(4)总结

六、总结

相关文章:
第四章 文件管理 四、文件的物理结构(文件分配方式)
目录 一、文件块,磁盘块 二、连续分配 1、定义: 2、计算方式: 3、注意: 4、优点: 5、缺点: 6、总结 三、链接分配----隐式链接 1、定义: 2、如何实现逻辑块号转物理块号 3、优点&…...
解析外贸开发信的结构?营销邮件书写技巧?
做外贸的开发信结构是怎样的?写外贸邮件的注意事项? 外贸开发信是国际贸易中至关重要的一环,它不仅是与潜在客户建立联系的第一步,也是一种有效的市场推广工具。蜂邮EDM将深入解析外贸开发信的结构,帮助您更好地理解如…...
Linux的命令基本格式
因为对服务器来讲,图形界面会占用更多的系统资源,而且会安装更多的服务、开放更多的端口,这对服务器的稳定性和安全性都有负面影响。其实,服务器是一个连显示器都没有的家伙,要图形界面干十么?说到这里&…...
数据库Redis(二):基本数据类型
Redis中采用Key-Value键值对的形式将数据存储在数据库中,首先介绍Redis中针对键Key的操作命名。 Redis键Key相关命令 # 查看当前库所有key keys * # 判断某个key是否存在 exists <key> # 查看你的key是什么类型 type <key> # 删除指定的key数据 …...
mysql第四次作业
目录 数据表介绍 --1.学生表Student(SId,Sname,Sage,Ssex)--SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表Course(CId,Cname,TId)--CId 课程编号,Cname 课程名称,TId 教师编号 --3.教师表Teacher(TId,Tname)--TId 教师编号,Tname 教师姓名 --4.成绩…...
kubesphere 一键部署K8Sv1.21.5版本
1. 在centos上的安装流程 1.1 安装需要的环境 yum install -y socat conntrack ebtables ipset curl1.2 下载KubeKey #电脑必须可以访问github,很重要。不然安装过程会出问题 curl -sfL https://get-kk.kubesphere.io | VERSIONv1.2.1 sh - chmod x kk1.3 开始安…...
设计模式(12)状态模式
参考【设计模式】用Java实现状态模式_java 状态模式_卷帘的博客-CSDN博客 一、介绍: 1、状态模式:是一种行为设计模式,它允许对象在内部状态发生改变时改变其行为。该模式将对象的行为包装在不同的状态类中,使得对象的行为可以根…...
C#WPFPrism框架模块化应用实例
本文实例演示C#WPFPrism框架模块化应用实例。 首先创建WPF项目,修改App相关文件内容,以便使用prism。 一、添加模块 解决方案中添加ModuleA和ModuleB两个项目 删除不用的窗体,添加自定义窗体 修改ModuleA和ModuleB的输出类型...
ES6之Set集合(通俗易懂,含实践)
Set是什么?它的方法有哪些?它在实例开发中有什么作用? 让我为大家介绍一下吧! ES6提供了新的数据结构 Set(集合) 。它类似于数组,但成员的值是唯一的,常用于数组去重。 创建方法: let s new S…...
深度学习标注工具(包括自动标注)总结——持续更新
首次记录日期2023年10月24日 名称 导出格式支持形状地址1 anylabeling 支持yolov5和v8,自动标注的软件 沿物体轮廓分割 https://github.com/vietanhdev/anylabeling 2 RectLabel 使用Core ML模型自动标记图像 对象、属性、热键和快速标签的设置。 以PASCAL VOC …...
阿里云核心产品list
计算: 01函数计算(Function Compute)全托管serverless计算服务,不需要管理服务器等基础设施,只需要编写代码并上传。 02云服务器(Elastic Compute Service)云计算服务 03GPU云服务(G…...
矢量图形编辑软件 illustrator 2023 mac 中文软件特点
illustrator 2023 mac是一款矢量图形编辑软件,用于创建和编辑排版、图标、标志、插图和其他类型的矢量图形。 illustrator 2023 mac软件特点 矢量图形:illustrator创建的图形是矢量图形,可以无限放大而不失真,这与像素图形编辑软…...
vue按特定字符串切割后端传输的图片路径
一、分隔字符 /userfiles/1/attachment/null/2023/10/13967b6b8332413f92ab67735873aa76.jpg|/userfiles/1/attachment/null/2023/10/17fd6e2c16144e66b8cd3ec495e6745f.png 后端传来图片的路径是按照 | 进行分隔的 首先在return中定义数组 在methods中添加分隔方法 //将查询…...
Spring底层原理(三)
Spring底层原理(三) Bean的生命周期 SpringBootApplication public class Application {public static void main(String[] args) {ConfigurableApplicationContext context SpringApplication.run(Application.class, args);context.close();} }Slf4j Component public cla…...
ElementPlus表格中的背景透明
ElementPlus表格中的背景透明 最近写大屏,用到elementplus中的el-table,为了让显示效果好看一点,需要把表格的白色背景调整为透明,与整个背景融为一体。可以参考的资料非常少,大部分都是ElmentUI的方法,在…...
【会议征稿通知】2024第四届神经网络、信息与通信工程国际学术会议(NNICE 2024)
2024第四届神经网络、信息与通信工程国际学术会议(NNICE 2024) 2024 4th International Conference on Neural Networks, Information and Communication Engineering 2024第四神经网络、信息与通信工程国际学术会议(NNICE 2024࿰…...
PyCharm改变代码背景图片的使用教程
一个好的集成环境是学习和使用一门编程语言的重中之重,这次我给大家分享如何改变PyCharm软件的代码背景图片。 说明:本教程使用的是汉化版PyCharm软件。 打开PyCharm软件。 点击软件最上方导航栏的文件,然后找到设置。 打开设置然后点击外观…...
BadNets: Identifying Vulnerabilities in the Machine Learning Model Supply Chain
BadNets: Identifying Vulnerabilities in the Machine Learning Model Supply Chain----《BadNets:识别机器学习模型供应链中的漏洞》 背景: 许多用户将训练过程外包给云计算,或者依赖于经过训练的模型,然后根据特定的任务对模型进行微调。这…...
Kubernetes速成课程:掌握容器编排的精髓
微服务演进方向 • 面向分布式设计(Distribution):容器、微服务、API 驱动的开发; • 面向配置设计(Configuration):⼀个镜像,多个环境配置; • 面向韧性设计(Resistancy):故障容忍和自愈; • 面向弹性设计(Elasticity):弹性扩展和对环境变化(负载)做出响应; •…...
【数据库】分组数据 GROUP BY、HAVING
分组数据 创建分组过滤分组SQL 子句顺序 创建分组 s q l sql sql 中,使用 GROUP BY 子句对数据进行分组。分组通常与聚合函数一起使用,以对每个组内的数据执行聚合操作; e . g . e.g. e.g. 按照客户分组,计算每个客户的订单总金额…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
