DJ6-1/2/3 文件系统

news2024/10/5 17:28:07

目录

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、文件系统的定义

文件系统:是指操作系统中的

  1. 各类文件
  2. 管理文件的软件
  3. 管理文件所涉及到的数据结构

等信息的集合。

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)

检索步骤:

  1. 根据用户提供的关键字,使用折半查找法查找相关表项
  2. 根据该表项中的指针值,访问该记录
  3. 增加新记录时,需要修改对应的索引表

索引文件的检索速度较快,但需要存储。

6.2.5  索引顺序文件(Index File)

检索步骤:

  1. 根据用户提供的关键字,以某种查找方法查找该组对应的表项
  2. 根据该表项中的指针值,得到该组第一个记录在主文件中的位置
  3. 再利用顺序查找法扫描主文件,在对应的分组中查找要求的记录

6.2.6  直接和哈希文件

直接文件:根据给定的关键字值,直接获得指定记录的物理地址。

  • 关键字值本身就决定了记录的物理地址
  • 这种由关键字值到记录物理地址的转换被称为键值转换

组织直接文件的关键,在于用什么方法进行从关键字值到物理地址的转换。

6.3  文件的物理结构

操作系统或者说文件管理系统负责为文件分配和管理数据块:

  • 从逻辑组织的角度看,文件由若干记录组成
  • 从物理组织的角度看,文件由若干数据块组成

接下来需要解决的问题:

  1. 如何划分磁盘空间?
  2. 如何为一个新建文件分配空间?
  3. 如何为一个已存在的文件增加存储空间?
  4. 用什么数据结构记载文件已分配到的数据块和空闲数据块?

外存的组织方式

为文件分配外存空间时所要考虑的主要问题是:怎样才能有效地利用外存空间和如何提高对文件的访问速度。

目前,常用的外存分配方法有:

  • 连续分配
  • 链接分配
  • 索引分配

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 次访问磁盘:

  • 第一次是读三次间址块
  • 第二次是读二次间址块
  • 第三次是读一次间址块
  • 第四次是是读文件盘块

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

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

相关文章

英文论文(sci)解读复现【NO.12】YOLO-Tea: YOLOv5改进的茶叶病害检测模型

此前出了目标检测算法改进专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读发表高水平学术期刊中的 SCI论文&a…

CocosCreator图片处理:截图裁剪,保存到本地,从本地加载,远端图片转base64

截图裁剪 从相机导出的renderTexture中使用readPixels读取像素数据,通过像素数据创建spriteFrame可以展示到界面上。 this.rt new RenderTexture(); this.rt.initialize({width: view.getVisibleSize().width,height: view.getVisibleSize().height, }) this.ca…

Three.js--》实现3d官网模型展示

目录 项目搭建 实现网页简单布局 初始化three.js基础代码 创建环境背景 加载飞船模型 实现滚轮滑动切换3D场景 设置星光流动特效 今天简单实现一个three.js的小Demo,加强自己对three知识的掌握与学习,只有在项目中才能灵活将所学知识运用起来&…

计算机常见的故障类型

文章目录 前言一、常见故障类型介绍1.硬件故障2.系统故障3.软件故障 二、故障排查思路三、Win操作系统问题1.系统基本信息2.系统资源监视器(运行对话框输入“resmon”)3.事件查看器(运行对话框输入“eventvwr”)4.任务管理器&…

使用这些方法让你的 Python 并发任务执行得更好

动动发财的小手,点个赞吧! 问题 一直以来,Python的多线程性能因为GIL而一直没有达到预期。 所以从 3.4 版本开始,Python 引入了 asyncio 包,通过并发的方式并发执行 IO-bound 任务。经过多次迭代,asyncio A…

【LED子系统】八、小试牛刀

个人主页:董哥聊技术 我是董哥,高级嵌入式软件开发工程师,从事嵌入式Linux驱动开发和系统开发,曾就职于世界500强公司! 创作理念:专注分享高质量嵌入式文章,让大家读有所得! 文章目录…

2023电工杯数学建模B题完整模型代码【原创首发】

文末获取全部资料 摘要 近年来,随着人工智能(AI)技术的发展和广泛应用,其在教育领域的潜力和影响引起了广泛关注。本研究旨在通过一项全面的问卷调查,探讨AI学习工具在大学生学习过程中的影响。 在本项研究中&#…

认识HTTP协议---1

hello,大家好,今天为大家带来http协议的相关知识 1.HTTP协议 🐷1.应用层协议 🐷2.HTTP协议的工作过程 2.HTTP协议格式 🐷1.认识抓包工具Fidder 🐷2.学会使用fidder 🐷3.协议格式总结 3.HTTP请求 &#x1f437…

常用本地事务和分布式事务解决方案模型

目录 1 DTP模型2 2PC2.1 方案简介2.2 处理流程2.2.1 阶段1:准备阶段2.2.2 阶段2:提交阶段 2.3 方案总结 3 3PC3.1 方案简介3.2 处理流程3.2.1 阶段1:canCommit3.2.2 阶段2:preCommit3.3.3 阶段3:do Commit 3.3 方案总结…

使用本地的chatGLM

打开终端 wsl -d Ubuntu conda activate chatglm cd cd ChatGLM-6B python3 cli_demo.py 依次输入以上命令。

随机森林Proximity实现及应用

随机森林Proximity实现及应用 1 算法1.1 随机森林Proximity简介1.2 RF-GAP1.3 实现代码 2 应用2.1 离群点(outlier)检测2.1.1 原理和实现2.1.2 实验结果 附录 项目主页:randomforest C implementation of random forests classification, regression, proximity and…

可以免费使用的ChatGPT保姆级教程 (New Bing)

ChatGPT狂飙160天,世界已经不是之前的样子。https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 最近,ChatGPT已经非常流行,但由于各种原因,国内用户无法直接免费使用ChatGPT的API,各种伟大的神也利用这…

沉浸式翻译 安装及使用

介绍一下最近非常或的沉浸式翻译工具,非常有助于外文阅读,包括网页、pdf等。可以同时显示原文和译文,操作简单,使用起来还是非常友好的。 先上链接:介绍 - 沉浸式翻译 如何使用 - 沉浸式翻译 1.安装 支持Edg…

仙人掌之歌——权力的游戏(2)

他是特级战斗英雄 “那个李通,会不会看起来好吓人呀?” 云冰洁有些紧张的样子,几乎要让陈速笑出来。 “哪有,一个很 nice 的人好吧。就是看起来比较严肃而已,我也从没看他笑过倒是。” 陈速让云冰洁看菜单&#xff0…

【极海APM32F4xx Tiny】学习笔记01-模板工程创建

本项目的使用的开发板 关于芯片使用的其他笔记 外部晶振时钟 模板工程创建/LED工程 项目仓库 https://gitcode.net/u010261063/apm32_test_part 创建模板工程的核心要素 复制官方的标准外设库复制启动文件复制cmsis文件复制相关的公共头文件如apm32f4xx_int.h 和 system_apm…

mybatis trim标签使用详解

mybatis trim标签使用详解 mybatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 “where“、“set“以及“values(“ 等前缀,或者添加“)“等后缀,可用于选择性插入、更新、删除或者条件查询等操作。…

Dubbo框架

文章目录 1. 什么是Dubbo2. Dubbo架构3. SpringBoot整合Dubbo框架3.1 前期准备3.1.1 Zookeeper的安装 3.2 项目创建3.3 添加依赖3.4 定义服务接口3.5 服务端的实现3.6 消费端请求任务3.7 服务端配置文件3.8 消费端配置文件3.9 启动应用 4. Dubbo负载均衡5. Dubbo集群容错 1. 什…

第一部分-基础篇-第一章:PSTN与VOIP(上篇)

文章目录 序言引言:什么是VOIP和PSTN1.1 PSTN起源与发展1.1.1 最早的电话网1.1.2 人工电话交换时代1.1.3自动电话交换时代1.1.4半电子交换机时代1.1.5空分交换机时代1.1.6 数字交换机时代1.1.7现代PSTN时代1.1.8 下一代网络及VoIP时代 1.2 电话实现技术1.2.1 电话号…

【MySQL】如何速通MySQL(1)

📌前言:本篇博客介绍如何速通MySQL,主要介绍Mysql中主要的基础的入门,学习MySQL之前要先安装好MySQL,如果还没有安装的小伙伴可以看看博主前面的博客,里面有详细的安装教程。或者看一下下面这个链接~ &…

“AI孙燕姿”爆火背后,是内容合规问题的再次升级|上云那些事

“讽刺的是,人类再怎么快也无法超越它。”这是歌手孙燕姿关于自己AI分身遍布网络一事,在MAKE MUSIC网站的博客上发表的看法。 来源:孙燕姿MAKE MUSIC网站博客 当大家还在担心AIGC会不会让自己失业时,歌手孙燕姿就因为“AI孙燕姿”…