DJ6-1/2/3 文件系统
目录
6.1 文件系统概述
6.1.1 文件、记录和数据项
6.1.2 文件类型
6.1.3 文件系统模型
6.1.4 对文件的操作
6.2 文件的逻辑结构
6.2.1 文件逻辑结构的类型
6.2.2 顺序文件(Sequential File)
6.2.4 索引文件(Index File)
6.2.5 索引顺序文件(Index File)
6.2.6 直接和哈希文件
6.3 文件的物理结构
6.3.1 连续分配
6.3.2 链接分配
6.3.3 索引分配
6.1 文件系统概述
1、文件系统的定义
文件系统:是指操作系统中的
- 各类文件
- 管理文件的软件
- 管理文件所涉及到的数据结构
等信息的集合。
2、文件系统的结构

3、文件系统的功能
- 有效地管理文件的存储空间
- 管理文件目录
- 完成文件的读/写操作
- 实现文件共享与保护
- 为用户提供交互式命令接口和程序调用接口
6.1.1 文件、记录和数据项

6.1.2 文件类型

6.1.3 文件系统模型
文件系统概念:文件和对文件进行操纵和管理的软件集合
文件系统模型分为三个层次

6.1.4 对文件的操作
open( ):打开一个文件,并指定访问该文件的方式,调用成功后返回一个文件描述符。
creat ( ) :打开一个文件,如果该文件不存在,则创建它,调用成功后返回一个文件描述符。
close ( ) :关闭文件,进程对文件所加的锁全都被释放。
read ( ) :从文件描述符对应的文件中读取数据,调用成功后返回读出的字节数。
write ( ) :向文件描述符对应的文件中写入数据,调用成功后返回写入的字节数。
6.2 文件的逻辑结构
对于任何一个文件,都存在着以下两种形式的结构:
- 文件的逻辑结构,又称文件组织,是用户可以直接处理的数据及其结构。
- 文件的物理结构,又称文件的存储结构,是指文件在外存上的存储组织形式。
6.2.1 文件逻辑结构的类型

6.2.2 顺序文件(Sequential File)
1、逻辑记录的排序

2、对顺序文件的读/写操作

① 对定长记录的顺序文件的读写
读指针 Rptr:
- 读指针指向下一个要读的记录的首地址
- 每读完一条记录,指针做相应的修改
Rptr = Rptr + L
写指针 Wptr:
- 写指针指向下一个要写的记录的首地址
- 每写完一条记录,指针做相应的修改
Wptr = Wptr + L
其中,L 为定长记录的长度。
② 对变长记录的顺序文件的读写
- 设置读写指针
- 每个记录的长度存放在该记录之前的单元中
- 每完成一次读写,读写指针加上刚读或写完的记录的长度 Li
③ 首地址的计算
6.2.4 索引文件(Index File)

检索步骤:
- 根据用户提供的关键字,使用折半查找法查找相关表项
- 根据该表项中的指针值,访问该记录
- 增加新记录时,需要修改对应的索引表
索引文件的检索速度较快,但需要存储。
6.2.5 索引顺序文件(Index File)

检索步骤:
- 根据用户提供的关键字,以某种查找方法查找该组对应的表项
- 根据该表项中的指针值,得到该组第一个记录在主文件中的位置
- 再利用顺序查找法扫描主文件,在对应的分组中查找要求的记录
6.2.6 直接和哈希文件

直接文件:根据给定的关键字值,直接获得指定记录的物理地址。
- 关键字值本身就决定了记录的物理地址
- 这种由关键字值到记录物理地址的转换被称为键值转换
组织直接文件的关键,在于用什么方法进行从关键字值到物理地址的转换。
6.3 文件的物理结构
操作系统或者说文件管理系统负责为文件分配和管理数据块:
- 从逻辑组织的角度看,文件由若干记录组成
- 从物理组织的角度看,文件由若干数据块组成
接下来需要解决的问题:
- 如何划分磁盘空间?
- 如何为一个新建文件分配空间?
- 如何为一个已存在的文件增加存储空间?
- 用什么数据结构记载文件已分配到的数据块和空闲数据块?
外存的组织方式
为文件分配外存空间时所要考虑的主要问题是:怎样才能有效地利用外存空间和如何提高对文件的访问速度。
目前,常用的外存分配方法有:
- 连续分配
- 链接分配
- 索引分配
6.3.1 连续分配

连续分配:为每个文件分配一组相邻接的盘块。即把逻辑文件中的数据顺序地存储到物理上邻接的各个盘块中,这样形成的物理文件可以进行顺序存取。
一组盘块的地址定义了磁盘上的一段线性地址。
6.3.2 链接分配
当将一个逻辑文件存储到外存上时,并不要求为整个文件分配一块连续的空间,而是可以将文件装到多个离散的盘块中。
链接分配:通过每个盘块上的链接指针,将同属于一个文件的、多个离散的盘块链接成一个链表。把通过这种方式形成的物理文件称为链接文件。
1、隐式链接

2、显式链接

两者的区别在于:
- 隐式链接的指针存放在每个盘块中
- 显式链接的指针存放在文件分配表 FAT 中
6.3.3 索引分配
链接分配方式虽然解决了连续分配方式所存在的问题, 但又出现了另外两个问题:
① 不能支持高效的直接存取:在对一个较大文件进行直接存取时,必须首先在 FAT 中顺序查找许多盘块号。
② FAT 需占用较大的内存空间:由于一个文件所占用盘块的盘块号是随机地分布在 FAT 中的,因而只有将整个 FAT 调入内存,才能保证在 FAT 中找到一个文件的所有盘块号。
1、单级索引分配
原理:
- 给每个文件分配一个索引块
- 索引块就是一个盘块,用于记录分配给该文件的所有盘块号
- 在建立一个文件时,只需在对应目录项中填上指向该索引块的指针
- 该目录项是在文件创建时新建的
优点:
- 支持直接访问:可直接从索引块中找到第 i 个盘块的盘块号
- 不会产生外碎片:由于不需连续分配,因此每个盘块都能被分出去
存在的问题:
可能需要花费较多的外存空间。每当建立一个文件时,便需为之分配一个索引块。对于小文件如果采用这种方式,索引块的利用率将是极低的。极端情况:每个文件的文件内容只会占用一个盘块,那么外存空间的利用率将只有 50%!
2、两级索引分配
当 OS 为一个大文件分配磁盘空间时,会增加许多索引块。当文件太大,其索引块太多时,这种方法是低效的。解决办法:两级索引分配方式。

设文件系统采用两级索引分配方式,如果每个磁盘块的大小为1KB,每个盘块号占4B,则单
个文件的最大长度是多少?
解:每个盘块可有1KB/ 4B=256个索引项,则两级索引下单个文件最大长度:256*256*1KB=64MB
3、增量式索引分配(混合索引方式)
在 UNIX System V 的索引结点中设有 13 个地址项,包含:i.addr(0) ~ i.addr(12) 。
- i.addr(0)~i.addr(9):直接地址
- i.addr(10):一次间接地址
- i.addr(11):二次间接地址
- i.addr(12):三次间接地址
在考试中,题干中给出的地址组织方式可能与 UNIX System V 的不同,请注意!

问题(10分):存放在某个磁盘上的文件系统,对于采用混合索引分配方式,其 FCB 中共有 13 项地址项,第 0~9 个地址项为直接地址,第 10 个地址项为一次间接地址,第 11 个地址项为二次间接地址,第 12 个地址项为三次间接地址。如果每个盘块的大小为 512 字节,盘块号需要 3 个字节来描述,则每个盘块最多存放 170 个盘块地址:
(1) 该文件系统允许的最大长度是多少?
10*512+170*512+170^2*512+170^3*512=2471040KB
(2) 将文件的字节偏移量 5000、15000、150000 转换为物理块号和块内偏移量。
- 5000/512=9 5000%512=392 FCB 的第 9 个地址
- 15000/512=29 15000%512=152 一次间址块中的第 19 项
- 150000/512=292 150000%512=496 二次间址块中的第一块的第 112 项
(3) 假设某文件的索引结点已在内存中,但其它信息均在外存,为了访问该文件中某个位置的内容,最多需要几次访问磁盘?
最多需要 4 次访问磁盘:
- 第一次是读三次间址块
- 第二次是读二次间址块
- 第三次是读一次间址块
- 第四次是是读文件盘块
相关文章:
DJ6-1/2/3 文件系统
目录 6.1 文件系统概述 6.1.1 文件、记录和数据项 6.1.2 文件类型 6.1.3 文件系统模型 6.1.4 对文件的操作 6.2 文件的逻辑结构 6.2.1 文件逻辑结构的类型 6.2.2 顺序文件(Sequential File) 6.2.4 索引文件(Index File&…...
华为OD机试真题 Java 实现【打印文件】【2023Q1 100分】
一、题目描述 有 5 台打印机打印文件,每台打印机有自己的待打印队列。 因为打印的文件内容有轻重缓急之分,所以队列中的文件有1~10不同的优先级,其中数字越大优先级越高。 打印机会从自己的待打印队列中选择优先级最高的文件来打印。 如果存在两个优先级一样的文件,则选…...
基于LSB实现文本、图片、压缩包的隐藏
关于LSB的相关介绍: LSB全称为 Least Significant Bit(最低有效位),是一种基于图片最低有效位修改储存信息的隐写方法,在CTF杂项中经常会遇到,LSB属于空域算法中的一种,是将信息嵌入到图像点中…...
(万字长文)Linux——IO之重定向+缓冲区 +重定向 +缓冲区原理实现 +带重定向的简易版shell+标准输出标准错误
索引 文件描述符分配规则重定向 缓冲区1.什么是缓冲区2.缓冲区在哪里 重定向源码模拟实现缓冲区原理带重定向的简易版Xshell标准输入和标准错误 文件描述符分配规则 文件描述符的分配规则 从头遍历数组fd_array[],找到一个最小的,没有被使用的下标,分配…...
面试:js 延迟加载方式
相关知识点: js 延迟加载,也就是等页面加载完成之后再加载 JavaScript 文件。 js 延迟加载有助于提高页面加载速度 一般有以下几种方式: defer 属性 async 属性 动态创建 DOM 方式 使用 setTimeout 延迟方法 让 JS 最后加载 js 的加载…...
将Oracle数据文件导入SQL Server的方法
审计过程中,采集的业务数据有Oracle备份数据,备份文件的后缀名为.dmp。如何将*.dmp文件导入审计人员熟悉的SQL Server中呢?以下是现场审计数据导入方法介绍。 一、将*.dmp文件导入oracle数据库 *.dmp文件为Oracle数据库备份文件,因…...
《汇编语言》- 读书笔记 - 实验5 编写、调试具有多个段的程序
《汇编语言》- 读书笔记 - 实验5 编写、调试具有多个段的程序 题目1题目2题目3题目4题目5题目6总结 题目1 将下面的程序编译、连接,用 Debug 加载、跟踪,然后回答问题 assume cs:code, ds:data, ss:stack data segmentdw 0123h,0456h,0789h,0abch,0def…...
剑指offer -- 二维数组中的查找
二维数组中的查找_牛客题霸_牛客网 (nowcoder.com) 暴力查找法: 是一种简单直接的解决方法,可以用于在二维数组中查找目标值。该方法的思路是遍历数组的每个元素,逐个与目标值进行比较。 具体步骤如下: 从数组的第一行第一列开始,…...
3. 自然语言处理NLP:具体用途(近义词类比词;情感分类;机器翻译)
一、求近义词和类比词 1. 近义词 方法一:在嵌入模型后,可以根据两个词向量的余弦相似度表示词与词之间在语义上的相似度。 方法二:KNN(K近邻) 2. 类比词 使用预训练词向量求词与词之间的类比关系。eg:man&a…...
Hibernate的FlushMode
一、Session中FlushMode的设置: 在事务开启前设置FlushMode属性,方法: // session.setFlushMode(FlushMode.Always|AUTO|COMMIT|NEVER|MANUAL)。Service public class TestService {Logger log LoggerFactory.getLogger(getClass());AutowiredEntityM…...
二线程序员的出路
最近长沙不太平。去年被动离职一拨人之后,HR一直强调降本增效,人人自危,挤走一拨人,反正会有大量内卷失败的一线程序员进来填坑。当然留就有人走,前同事除了几个出去搞培训创业(后面解散了)的之…...
MKS SERVO4257D 闭环步进电机_系列2 菜单说明
第1部分 产品介绍 MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品。具备脉冲接口和RS485/CAN串行接口,支持MODBUS-RTU通讯协议,内置高效FOC矢量算法,采用高精度编码器,通过位置反馈&am…...
使用Actor-Critic的DDPG强化学习算法控制双关节机械臂
在本文中,我们将介绍在 Reacher 环境中训练智能代理控制双关节机械臂,这是一种使用 Unity ML-Agents 工具包开发的基于 Unity 的模拟程序。 我们的目标是高精度的到达目标位置,所以这里我们可以使用专为连续状态和动作空间设计的最先进的Deep…...
黑马学生入职B站1年,晒出21K月薪:我想跳槽华为
现在的Z时代,嘴上说着不要,身体却很诚实。 前两天,黑马发布了《2022年度互联网平均薪资出炉!高到离谱!》,信息传输、软件和信息技术服务业薪资遥遥领先!Z时代举头望着天花板,故作潇…...
一文看懂GPT风口,都有哪些创业机会?
新时代的淘金者,低附加价值的创业要谨慎,高附加价值、低技术门槛创业也要谨慎,主干道边上的创业也要谨慎。不少朋友看完不淡定了,干什么都谨慎,回家躺平好了,我有个朋友,靠ChatGPT,半…...
chatgpt赋能python:Python中的不确定尾数问题
Python中的不确定尾数问题 Python作为一种高级编程语言,被广泛应用于数据科学、机器学习、Web开发等众多领域。然而,Python在处理浮点数时会出现一些不确定尾数的问题,给程序员和数据分析员带来不少麻烦。本篇文章将介绍Python中不确定尾数的…...
杜绝开源依赖风险,许可证扫描让高效合规「两不误」
目录 开源许可证及其常见类型 开源许可证扫描是软件研发过程中,不可或缺的工具 极狐GitLab 开源许可证扫描的优势与应用 Step 1:启用及设置许可证策略 Step 2:自动创建策略文件存放项目 Step 3:查看许可证合规情况 Step 4&…...
【sop】含储能及sop的多时段配网优化模型
目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 之前分享了含sop的配电网优化模型,链接含sop的配电网优化,很多同学在咨询如何增加储能约束,并进行多时段的优化,本次拓展该部分功能,在原代码的基础上增加储能模…...
nodjs使用阿里云镜像安装
要使用阿里云镜像来安装 npm 包,你需要按照以下步骤进行操作: 首先,确保你已经安装了 Node.js 和 npm。你可以在终端(或命令提示符)中输入以下命令来验证它们的安装: node -v npm -v如果显示了 Node.js 和…...
C++ Primer Plus 第二章习题
目录 复习题 1.C程序的模块叫什么? 2.#include 预处理器编译指令的用处? 3.using namespace std; 该语句是干什么用的? 4.什么语句可以打印一个语句"hello,world",然后重新换行? 5.什么语句可以用来创…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
高考志愿填报管理系统---开发介绍
高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...
数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...
Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...
