文件系统,磁盘的物理存储结构和逻辑存储结构

问题导入

在计算机中不是所有的文件都是被打开的,只有我们要用的文件的被打开,大部分文件(当前不需要访问的文件),都在磁盘中保存着。问题是没有被打开的文件是否需要管理?

这就好比我有十套衣服,但是我出去玩不可能吧十套衣服全穿在身上。我只会穿一套,剩下九套放在柜子里。但是我不能乱放,因为乱放我下次再想找衣服就可能找不到,或者效率很低下,找半天才能找到。我必须要把我的衣服叠好管理起来,方便我下次找到。

同样的,当前没被访问的存放在磁盘中的文件我也需要管理起来,目的是为了快速定位文件,提高查找文件的效率。就好比想在菜鸟驿站成千上万的快递中找到我们自己的快递,我们就需要拿着我们自己的取件码去对应的货架上找。菜鸟驿站的管理人员会把对应的快递按照取件码放在对应的货架上,也就是只有管理人员进行管理之后我们才可以通过取件码拿到快递。同样的,我们的文件也在对应的位置,我们可以按照路径快速定位到我们的文件。而把文件摆放在相应位置,生成文件的路径等等这些操作都是文件系统去做的。

文件系统解决的是文件的存储问题。而文件又是属性+内容构成的。所以文件系统解决的实际上是文件的属性和内容的存储的问题。

而文件存储的问题的本质是为了方便OS/用户对文件进行增删查改操作。因为要想对文件进行增删查改必然要先找到文件,而为了更快的找到文件我们就需要把文件管理起来。为了更好的管理,文件系统应运而生。为什么说是为了方便OS对文件进行增删查改呢?因为用户只是输了一个命令,OS就要去找这个文件,找到之后用户才能进行操作。

文件物理存在磁盘上,我们这里要对其进行一个逻辑存储结构的抽象。为什么要进行逻辑存储结构的抽象呢?这是为了给OS管理文件提供一个统一的视角,方便让OS管理磁盘。 

磁盘的物理存储结构

磁盘的基本存储结构是扇区,一个扇区是512字节、4kb等大小。如果想要修改磁盘上的一个bit位也要把磁盘的一个扇区的大小(比如512字节)加载进内存,修改完之后也要按512字节大小再刷新回扇区里。  

CHS寻址

要想使用某个扇区,我们就需要先找到这个扇区。这个过程就是先确定用哪个Head(磁头),然后去寻找对应的Cylinder(磁道),最后找磁头上需要修改的Sector(扇区)

这个我们称之为CHS寻址定位法

磁盘的逻辑存储结构

 我们可以把磁盘想象为一个线性空间。每一个段都可以看为是一个磁道,每一个分段都可以为是一个盘面,每一个子段都可以看为是一个磁道,每一个小格子都可以看为是一个扇区。

因为是线性的,所以我们可以用数组来存储。因此对磁盘的管理就可以变为对数组的管理。

我们可以通过下标来对每个盘面进行划分。比如说1~10000是划分为第一个盘面,10001~20000划分为第二个盘面。

比如说我想知道下标为1234属于哪个扇区,计算方法如下:

1234/10000=0  说明在第一个盘面

1234/1000=0   说明在第一个磁道

1234%10000=1234  说明在第1234个扇区

因此下标1234在第一个盘面的第一个磁盘的第一个扇区。

LBA寻址

操作系统可以按照扇区为单位进行读取,也可以按照块为单位进行读取。一次可以读取八个扇区作为一个块,刚好是4kb大小。

LBA寻址因为是线性的,所以效率要更快一些,而且比CHS寻址找磁头,磁道,扇区的方式更简洁一些。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLO损失函数——SIoU和Focal Lossr损失函数解析

1. 概述 YOLO(You Only Look Once) 系列模型以其实时目标检测能力而闻名,其有效性在很大程度上归功于其专门设计的损失函数。在本文中,这里将深入探讨YOLO演进中不可或缺的各种YOLO损失函数,并重点介绍它们在PyTorch中…

JWT生成token工具类实现

JWT简介 JWT定义 JWT全称为Json web token,也就是 Json 格式的 web token JWT数据结构 1.JWT由三段字符串组成,中间用.分隔 Project_eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIiwiZXhwIjoxNzE2MzcwMTM0LCJpYXQiOjE3MTU3NjUzMzQsImp0aSI6IjllO…

价格战开卷!字节发布豆包大模型,比行业便宜99.3%

豆包大模型正式亮相 5月15日,在2024春季火山引擎Force原动力大会上,字节跳动自研豆包大模型正式亮相。 (图源:证券时报) 火山引擎是字节跳动旗下云服务平台,据火山引擎总裁谭待介绍,豆包大模型…

线上网页点击菜单没有反应 报错ChunkLoadError:Loading chunk chunk-***** failed

现象 点击菜单无反应并且控制台报错Loading chunk chunk-***** failed 具体错误现象截图如下 分析 在线上页面已经打开的情况下,重新打包部署了前端项目。每次打包,js文件的hash值都会发生改变,因为我们的路由采用了懒加载,未…

第二届视觉语音识别挑战赛 CNVSRC 2024 启动

由 NCMMSC 2024 组委会发起,清华大学、北京邮电大学、海天瑞声、语音之家共同主办的第二届中文连续视觉语音识别挑战赛 CNVSRC 2024 即日启动,诚邀参与报名。 视觉语音识别,也称唇语识别,是一项通过口唇动作来推断发音内容的技术。…

【Linux线程(三)】生产者消费者模型

目录 前言: 一、什么是生产者消费者模型 (一)概念 (二)321原则 1.三个关系 2. 两种角色 3.一个场所 (三)生产者消费者模型的优缺点 二、基于阻塞队列实现生产者消费者模型 &#xff0…

算法练习第22天|39. 组合总和、40.组合总和II

39. 组合总和 39. 组合总和 - 力扣(LeetCode)https://leetcode.cn/problems/combination-sum/description/ 题目描述: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数…

安卓、iOS、iPad三端搞定,不再剧荒!

哈喽,各位小伙伴们好,我是给大家带来各类黑科技与前沿资讯的小武。 之前给大家推荐过各种看剧姿势,但很多苹果、平板端的小伙伴还是存在更好的需求体验,今天给大家推荐这款可以在安卓、iOS和平板上都能安装使用,不再剧…

合并K个升序链表

题目 解法一 优先级队列 思想 将每个链表中的一个节点存放到优先级队列中,本题采用小根堆,将小根堆中的根节点取出,插入到最终的链表中,并且将该节点在原链表中的下一个节点插入小根堆中(需要向下调整)&a…

【OpenHarmony IDL工具规格及使用说明书】

OpenHarmony IDL工具规格及使用说明书 IDL接口描述语言简介 当客户端和服务器进行IPC通信时,需要定义双方都认可的接口,以保障双方可以成功通信,OpenHarmony IDL(OpenHarmony Interface Definition Language)则是一种…

GPU学习记一下线程分组相关

在compute的时候,是要dispatch一个数量的代表分了多少块任务集,dispatch的块内部也是有一个数量的,那么这些值怎么取的呢 内部,N卡32 外面dispatch的数量就是all/32 然后细说这个值 这有一个叫core的东西,就是相当于th…

惠普打印机无线网络连接设置

休息一下,灌个水。这次没多少内容,具体步骤惠普官网上都有,唯一增加的是对安装过程中踩的坑做了一个说明。 一.打印机无线网络连接设置步骤 惠普打印机设置无线网络连接,共16个步骤。 1. 在电脑上打开任意浏览器&am…

微信原生小程序-图片上传回显(含组件封装详解)

实现效果(如图所示):点击上传>弹出拍摄或从手机相册中选择图片或视频>选择图片上传>上传成功后回显图片。 文件梳理分析(注意点): index文件表示当前页面文件,case-upload-item文件表示…

Java学习48-Java 流(Stream)、文件(File)和IO - 复习章节

1.File类的使用 File类的一个实例对应着磁盘上的文件或文件目录。(必须熟悉)File的实例化(新建一个对象),常用的方法File类中只有新建,删除,获取路径等方法,不包含读写文件的方法,此时需要使用使用下面说的IO流 IO流…

STL 总结

STL 在 C 标准模板库(STL)中,主要包含了一系列的容器、迭代器、算法、函数对象、适配器。 容器 容器是用于存储数据的类模板。STL 容器可以分为序列型容器、关联型容器和链表型容器三类:序列型容器:vector、deque、…

XMind 头脑风暴/思维导图软件_V24.04.10291 PC高级版

一款风靡全球的头脑风暴和思维导图软件,为激发灵感和创意而生。在国内使用广泛,拥有强大的功能,包括思维管理,商务演示,与办公软件协同工作等功能。XMind中文版采用全球先进的Eclipse RCP软件架构,是集思维…

QT状态机8-使用恢复策略自动恢复属性

当状态分配的属性不再活动时,可能希望将其恢复到初始值,通过设置全局的恢复策略可以使状态机进入一个状态而不用明确制定属性的值。 QStateMachine machine; machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);当设置了恢复策略以后,状态机将自动恢复所有…

k8s pod就绪探针

Pod 可能需要时间来加载配置或数据,或者可能需要执行预热过程以防止第一个用户请求时间太长影响了用户体验。在这种情况下,不希望该 pod 立即开始接收请求,尤其是在运行的实例可以正确快速地处理请求的情况下。不要将请求转发到正在启动的 po…

第十四届蓝桥杯大赛软件赛国赛C/C++ 大学 B 组 数三角

//枚举顶点。 //不存在等边三角形 #include<bits/stdc.h> using namespace std; #define int long long const int n2e311; int a,b,c,l[n],r[n]; signed main() {ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>a;for(int i1;i<a;i){cin>>…

欢迎光临Java中的客“栈”

就目前而言&#xff0c;相信大家对数组、链表还有栈都基本已经有了一些了解&#xff0c;本篇文章将以栈为主体&#xff0c;探究栈和数组&#xff0c;栈和链表之间的一些联系。 当然在开始对栈的学习之前&#xff0c;我们先回顾有关数组、链表的基础知识点。 学习代码就是一个…