【lesson40】理解文件系统

文章目录

  • 问题
  • 磁盘结构(物理)
  • 磁盘的存储结构
  • 磁盘的抽象结构

问题

1.有没有没有被打开的文件?当然有
在哪里呢?磁盘中也叫磁盘级文件

2.学习磁盘级别文件的侧重点在哪?
站在单个文件角度:

  1. 这个文件在哪里?
  2. 这个文件有多大?
  3. 这个文件的其他属性是什么?

站在系统角度:

  1. 一共有多少个文件?
  2. 各自属性在哪里?
  3. 如何快速找到?
  4. 可以存储多少个文件?
  5. 如何快速的找到指定文件?
  6. 如何对磁盘文件进行分门别类的存储,用来支持更好的存取?

3.磁盘文件----了解磁盘
内存-----掉电易失数据的存储介质
磁盘----永久性存储介质
磁盘是一个外设,并且还是计算机中唯一的一个机械设备–>慢(OS一定会有一些提速的方式,我们不深究)

磁盘结构(物理)

磁盘盘片、磁头、伺服系统、音圈马达…
在这里插入图片描述
磁盘的盘片:
在这里插入图片描述
盘面上会存储数据!--->计算机只认识二进制----->而磁盘是两态的(南极,北极)---->而盘面上布满了这些---->向磁盘写入本质就是改变磁盘上的正负性---->通过磁头来改变。

磁盘的存储结构

在这里插入图片描述
在这里插入图片描述
同心圆为磁道,多个半径相同的磁道合起来称为柱面
在这里插入图片描述
扇区是磁盘存储的基本单位。

在物理上如何把数据写入到知道扇区里?----本质上是如何找到一个扇区
1.先确认在哪一个面上(对应的就是柱面)
2.在哪一个磁道上(也就是哪个磁头)
3.在哪一个扇区上

在这里插入图片描述
我们有了CHS寻址方式就能找到任意一个扇区。
扇区的基本大小是512字节(硬件要求)!最小也有4KB的但是比较少。

磁盘的抽象结构

我们先来看磁带结构
在这里插入图片描述
磁带没有被拉开是圆形结构---->拉出来就变成了线性结构。

而我们可以把卷起来的磁带看出磁盘。在物理上磁盘是圆形结构,在想象上可以想象为线性结构
在这里插入图片描述
所以访问扇区可以逻辑化成数组,所以访问扇区只要知道数组下标即可
所以访问扇区我们知道将LBA即可,然后通过某种方法将LBA转化为CHS

所以它们之间的对应关系:
将数据存储到磁盘------>将数据存储到该数组
找到磁盘特点扇区的位置-------->找到数组特定的位置
对磁盘的管理-------->对该数组的管理

但是磁盘是很大的,管理大的比较困难,所以我们就要对磁盘进行分区,把磁盘划分成小的来管理。
例子:
在这里插入图片描述
假设磁盘有500GB,很大那么我们就将它分成四个区。
但是分四个区后还是很大,那么我们再进行分区。
在这里插入图片描述
SuperBlock:整个文件系统属性信息,因为可能发生以外,导致前面的文件系统信息消失,进而导致文件系统瘫痪,所以在每个小区域都有整个系统的信息备份,以便恢复。

虽然磁盘的基本单位扇区是512字节,但是OS进行IO的基本单位是4KB(8*512字节)。
为什么不以512字节为单位呢?
1.太小了,有可能导致对此IO,进而导致效率降低!
2.如果OS使用和磁盘扇区一样的大小,万一磁盘变了的话,OS的源代码要不要改呢?
所以是为了软件和硬件进行解耦!

4KB为block块大小,所以磁盘也被称为块设备

Data blocks:多个4KB大小的集合
文件 = 内容 + 属性
Linux在磁盘上存储文件的时候,将内容和属性分开存储!而Data block块存的都是内容,每一个文件都有对应的inode编号

inode tableinode是一个大小为128字节的空间。保存的是对应文件的属性
该块组内
,所有文件的inode空间的集合,需要标识唯一性,每一个inode块都需要一个inode编号!
一般而言一个文件,一个inode块,一个inode编号。

Block Bitmap:假设有10000+个block,就有10000+个比特位,比特位和特定的block是一一对应的,Bitmap中某一位置比特位为1,代表该block被占用,比特位为0则表示该block可用。

inode Bitmap:假设有10000+个inode,就有10000+个比特位,比特位和特定的inode是一一对应的,Bitmap中某一位置比特位为1,代表该block被占用,比特位为0则表示该block可用。

Group Descriptor Table块组描述符,这个块组多大,已经使用了多少个。有多少inode,已经占用了多少个,还剩多少个。共有多少block,使用了多少。

如果上面的都清楚,那么就能让一个文件的信息可追溯,可管理!

我们将块组分割成为上面的内容,并且写入相关的管理数据----->每一个块组都这么干----->整个分区就被写入了文件系统信息------>也叫格式化
在这里插入图片描述
一个文件“只”对应一个inode属性节点和inode编号
一个文件只能有一个block块吗不一定

下面就有几个问题了
1.哪些block块属于同一个文件
2.找到文件,只要找到文件对应的inode编号就能找到文件的inode属性集合,可是文件内容呢?
我们的inode属性节点里面,保存了该inode文件下的所有block块编号
在这里插入图片描述
如果这个文件特别大怎么办?下次再讲

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

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

相关文章

【Linux】权限管理

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 一 、Linux中的用户1.1 Linux用户分类1.2 用户转换1.3 指令提权 二、Linux权限管…

LeetCode:88. 合并两个有序数组(双指针 Java)

目录 88. 合并两个有序数组 题目描述: 实现代码与解析: 双指针 原理思路: 88. 合并两个有序数组 题目描述: 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 num…

vscode git stash apply stash@{1}不生效

解决办法 在stash{1}前后加上引号 git stash apply “stash{1}“即可成功恢复指定的stash

企业网络采用SD-WAN的优势

近年来,SD-WAN成为企业网络领域的一项热门技术,为传统网络带来了新的变革。SD-WAN(Software Defined Wide Area Network,软件定义广域网)以其灵活性、可管理性和低成本而备受青睐。它不仅能够创建成熟的专用网络&#…

MySQL 教程 2.3

MySQL DELETE 语句 你可以使用 DELETE FROM 命令来删除 MySQL 数据表中的记录。 你可以在 mysql> 命令提示符或 PHP 脚本中执行该命令。 语法 以下是 DELETE 语句从 MySQL 数据表中删除数据的通用语法: DELETE FROM table_name WHERE condition; 参数说明&…

IP风险画像在企业网络安全中应用

随着企业数字化的不断深入,网络安全问题日益突显。IP风险画像作为一种综合性的网络安全工具,为企业提供了更全面的风险评估和防范手段。本文将结合一个实际案例,深入探讨IP风险画像在企业网络安全中的成功应用。 案例背景 一家大型金融机构…

Like his father, he was driving a car called Bluebird. chatGPT学英语

chatGPT学英语 1、翻译为中文:像他父亲一样,他也在开一辆叫做“蓝鸟”的车。 2、时态分析:这是一个过去进行时的句子,句子语法是正确的。 3、句子结构分析: 主句:he was driving a car called Bluebird.…

IP数据云识别真实IP与虚假流量案例

随着互联网的普及,企业在数字领域面临着越来越复杂的网络威胁。为了保护网站免受虚假流量和恶意攻击的影响,许多企业正在采用IP数据云。本文将结合一个真实案例,深入探讨IP数据云如何成功准确地识别真实用户IP和虚假流量IP,提高网…

Oracle 面试题 | 09.精选Oracle高频面试题

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

vue3 之 组合式API—reactive和ref函数

ref&#xff08;&#xff09; 作用&#xff1a;接收简单类型或者对象类型的数据传入并返回一个响应式的对象 核心步骤&#xff1a; 1️⃣ 从 vue 包中导入 ref 函数 2️⃣在 <script setup>// 导入import { ref } from vue// 执行函数 传入参数 变量接收const count …

【Python】【完整代码】解析Excel 文件中的内容并检查是否包含某字符串,并返回判断结果

示例&#xff1a; 开发需求&#xff1a;解析Excel 文件中的内容并检查是否包含 "Fail" 字符&#xff0c;若没有则返回True&#xff0c;若有则返回False 实现代码&#xff1a; #!/usr/bin/env python3 # -*- encoding: utf-8 -*-File : check_excel_for_fail.py Ti…

记录首次使用yolov8-obb

1.数据格式 之前使用的数据格式是yolov5_obb的数据格式&#xff0c;然后需要转数据格式&#xff1a; 目前的数据只支持四个坐标点标注的数据&#xff0c;参考&#xff1a;If a corner of the rotate rectangle is out of the image range, How to annotate the image? Issu…

【如何快速上手Vue.js框架——详细介绍】

如何快速上手Vue.js框架——详细介绍 1. 介绍2. 理解Vue.js的核心概念3. 搭建开发环境4. 创建第一个项目5. 学习基础6. 进阶概念7. 最佳实践和模式8. 构建和部署9. 持续学习10. 实际操作 1. 介绍 要快速上手Vue.js框架&#xff0c;可以按照以下步骤进行学习和实践&#xff1a;…

vue介绍和使用

一、vue介绍 vue官网说&#xff1a;Vue.js&#xff08;读音 /vjuː/&#xff0c;类似于 view&#xff09; 是一套构建用户界面的渐进式的JavaScript框架。与其他重量级框架不同的是&#xff0c;Vue 采用自底向上增量开发的设计。 1、渐进式的JavaScript框架 复制代码 Angular…

[ubuntu]add-apt-repository 添加以及移除

add-apt-repository是一个用于添加PPA&#xff08;Personal Package Archive&#xff09;存储库的命令。它是Ubuntu和基于Ubuntu的Linux发行版中的apt软件包管理系统的一部分。 PPA存储库允许用户安装和更新软件包&#xff0c;这些软件包不包含在官方软件源中。通过添加PPA存储…

OJ_找位置

题干 代码 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<vector> #include<algorithm> #include<map> using namespace std;int main() {char str[200] { 0 };scanf("%s", str);map<char, vector<int>> times…

openlayers加载天地图

申请天地图key 官方&#xff1a;https://www.tianditu.gov.cn/ 申请key&#xff1a;https://sso.tianditu.gov.cn/login?servicehttps%3A%2F%2Fconsole.tianditu.gov.cn%2F 进去之后&#xff0c;先登录&#xff0c;如果没账号先注册一个就行。 可以创建个应用&#xff0c;…

如何将图片提取文字转换成文字?3个方法帮你转换

如何将图片提取文字转换成文字&#xff1f;在日常生活中&#xff0c;将图片中的文字转换成可编辑的文本可以带来很多便利。例如&#xff0c;我们可以使用OCR技术将书籍或报纸上的文章转换成电子文本&#xff0c;方便阅读和编辑。此外&#xff0c;将名片、菜单、广告等物品上的文…

政安晨的AI笔记——Bard大模型最新提示词创作绘画分析

AI大模型进入商业应用元年后的第一年&#xff0c;顶级模型大混战终于开始了。 Bard在追赶OpenAI的过程中&#xff0c;还是补上了画图的短板。 &#xff08;相比于视频的5阶张量处理而言&#xff0c;图画做为4阶张量处理虽然不新鲜&#xff0c;但却是跨不过去的基础条件&#…

LLM(5) | Encoder 和 Decoder 架构

LLM(5) | Encoder 和 Decoder 架构 文章目录 LLM(5) | Encoder 和 Decoder 架构0. 目的1. 概要2. encoder 和 decoder 风格的 transformer (Encoder- And Decoder-Style Transformers)原始的 transformer (The original transformer)编码器 (Encoders)解码器 (Decoders)编码器和…