初识Linux · 预备文件系统

目录

前言:

看看物理磁盘

了解磁盘的存储结构

对磁盘进行逻辑抽象


前言:

我们在上文探讨的问题都是基于文件是被打开的情况,那么对于文件没有被打开的情况,我们是没有探讨过的,而本文作为文件系统的预备知识,着重介绍的硬件,对,没错,是硬件部分,介绍的是磁盘方面的知识。

有人会好奇,我们学习文件系统和硬件内容有什么关系呢?一个是OS层面的,一个是外设层面的。 ->在冯诺依曼结构体中,cpu可是不能直接和外设打交道的,要借助OS,所以我们有必要学习磁盘,借助于磁盘的学习,我们对文件系统理解会更加容易一点。

本文通过三个部分介绍磁盘,1 看看物理磁盘 2 了解磁盘的存储结构 3 对磁盘进行逻辑抽象

那么,就进入今日的主题吧!


看看物理磁盘

我们通过几个几个实际图片看看:

磁盘用于存储信息的都是那个光滑的平面存储信息的,而存储信息的时候,光盘上的磁头会左右摇摆(记住要考)用于存储信息,其中那个盘叫做盘片,那么磁盘高速旋转和磁头左右摇摆都是通过的马达,也就是磁盘中间的圆柱体类似的东西。这是对磁盘最基础的认识。

那么磁盘的作用是什么呢?

图中的房间是机房,而里面的机柜,也就是像柜子一样的东西,里面都是存储的磁盘:

而磁盘作为存储信息的机械外设,不同于光盘这种存储信息的,它具有两面都是光滑的,每个面都是可存储信息,可是我们明明知道计算机只认识0 1,磁盘难道可以写入0 1吗?

这里我们的认识不能太死板了,因为0 1无非就是两种状态,如果规定都是我们自己认为的规定,比如我们可以规定0是南极,1是北极,对于磁体来说,我们就可以这样规定。

而磁盘,就是由无数无数个小磁铁构成的,所以里面是否存在了0 1呢?当然是存储了的。

信息存储方面我们就知道了磁盘可以做到。

这里插个题外话,对于机房来说,因为用到了大量的磁盘,机柜,并且信息量极高,信息量极高的情况下是因为磁盘高速运转,所以势必会产生很多热量,那么如果不散热就会导致热量堆积,让温度升高,从而导致磁盘退磁,退磁的后果可是十分严重的,这导致了信息的丢失。而一般只有大型的公司具有自主机房的能力,比如阿里,腾讯,字节跳动等,因为一个机房的造价是非常非常高的。

甚至为了散热,某个公司将机房建在了西湖里面,保证了散热的进行,但是确实,,,造价太昂贵了,包括后期的维护成本也是非常高的。

磁盘分为民用级别的磁盘,企业级的磁盘。

这里我们得出来的结论是:磁盘可以进行数据存储,并且满足了计算机0 1的需求,但是需要散热等。

所以计算机的0 1只是物理的不同表现,而不是特定的。


了解磁盘的存储结构

由前文我们知道磁盘本质上是一个机械外设,那么既然是外设,导致的结果肯定就是慢,但是存储的信息量非常大,所以和我们平常使用的SSD固态硬盘来说,造价相对来说是非常便宜的。

这也是它性价比高的原因之一。

而从上文的图片来看,我们知道了磁盘的可以叠螺子,也就是如上图。每个光面都有一个磁头,用来存取数据等。

对于SSD来说,我们对硬盘分区,磁盘也是,不过磁盘是将这个圆盘分为不同的扇区,而磁盘读取的基本单位是扇区,每次是512字节。中间的一圈叫做磁道,磁道里面有扇区。

但是磁盘将数据发送到内存的方式是,比如需要一个字节,磁盘会将这个扇区的512字节全部发送过去,管它要不要的。

这时候有人问了,不同扇区的大小不一样,难道都是一样的大小吗?这是因为靠近中心的扇区的bit位比较集中,远离的就没有那么集中了。

那么问题来了,我们如何找到磁盘中存储的数据呢?

你想,磁头是用来写数据的,那么在哪个面我们可以通过磁头找到,同时需要找到对应的柱面,也就是磁道,磁道找到了,我们就需要找到对应的扇区,找到了之后,我们也就找到了对应的数据,其中,磁道,扇区,磁头的英文组成的名字是CHS定址法,因为磁道的英文是Cylinder,磁头的英文是Head,扇区的英文是:sector。这个CHS定址法对于后面数据的查找十分重要,尤其是磁盘的逻辑抽象部分。

到现在,我们甚至可以将文件存储的问题,变成文件在磁盘中占有几个扇区的问题!


对磁盘进行逻辑抽象

如果OS直接使用CHS定址法,查找数据的话会导致耦合度较高。所以为了方便内核进行磁盘管理,OS又将磁盘简单封装了一下,在此之前,我们先看看一个古老的东西:

磁带里面都是一条长长的带子,在里面绕成了环状,可是小时候的我们总是调皮的,我们当然会将磁带扯出来玩,扯出来的结果就是将磁带从环状的转换成了线性的。

也就是这样的一个过程转换:

那么,提问了就,这个方方的东西,假设有800GB的空间,那么从开头到某个部分开始,有200GB,这是一个盘面的存储,那么这个盘面可以分为许多许多的sector,那么每个扇区都有自己的空间,也就是从头开始划分自己的空间,这是什么?这不就是数组吗!!!

我们已经完成了磁盘逻辑抽象的第一步,抽象成为了数组。

那么在数组如何使用CHS定址法呢?位图相信大家都是有所了解吧?

在这个数组里面查找,甚至有位图既视感了。不是有很多盘面吗,那么假设每个盘面的存储空间为M,那么M总 / M等于第几个磁盘,M总 % M等于M空间里面的第几个,所以我们要找到对应的sector只需要一个除法 + 一个取模即可。

一般而言,OS和磁盘交互的时候,基本单位是4KB,如果是512字节,就太小了。并且因为磁盘读取数据,不是一次性将4KB的拿过去吗?所以,OS做了这样一件事。

将原来的数组区域化,分为不同的块区域,计算下标也很简单,m * 块的空间个数即可,这样OS可以直接找到对应的块,也就能够一次将多少多少字节拿过去了。

而这分出来的块,体现了分治思想,就像管理一个国家一样的。

这些块有一个名字叫做:LBA(logic block address)逻辑区块地址。

所以!

文件 不就是由块组成的吗!!


感谢阅读!

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

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

相关文章

多ip访问多网站

1.前提配置 关防火墙 关selinux 2.安装web服务程序nginx 3.当前主机添加多地址(ip a) 4.自定义nginx配置文件通过多地址区分多网站 /etc/nginx/conf.d/test_ip.conf server { #标记为一个虚拟主机} 5.根据配置在主机创建数据文件 6.重启服务加载配…

【ROS2】构建导航工程

1、ROS小车组成 ROS小车由三大件组成:运动底盘、ROS主控、导航传感器。 1.1 运动底盘 运动底盘的硬件由车轮、电机(带编码器)、电机驱动器、STM32控制器、电池等组成。 涉及的知识点主要为:STM32单片机程序、机器人运动学分析 1)STM32单片机程序 单片机程序框架如下:…

Modbus TCP报错:Response length is only 0 bytes

问题描述: 使用modbus_tk库,通过Modbus tcp连接PLC时,python中的一个报错信息: Response length is only 0 bytes报错原因: 与Modbus TCP 服务端建立连接后没有断开,继续作为长连接使用,客户端…

vue3 + ts + element-plus 二次封装 el-dialog

实现效果&#xff1a; 组件代码&#xff1a;注意 style 不能为 scoped <template><el-dialog class"my-dialog" v-model"isVisible" :show-close"false" :close-on-click-modal"false" :modal"false"modal-class&…

Java调用大模型 - Spring AI 初体验

Spring AI&#xff1a;为Java开发者提供高效的大模型应用框架 当前Java调用大模型时面临缺乏高效AI应用框架的问题。Spring作为资深的Java应用框架提供商&#xff0c;通过推出Spring AI来解决这一挑战。它借鉴了LangChain的核心理念&#xff0c;并结合了Java面向对象编程的优势…

提升网络安全防御有效性,服务器DDoS防御软件解读

从购物、银行业务、旅行计划到娱乐&#xff0c;人们越来越多地转向数字领域来促进他们的公共和私人生活。然而&#xff0c;当DDoS攻击汹涌而至&#xff0c;企业很可能会陷入数小时或数天的混乱局面&#xff0c;用户的体验也会大打折扣。根据DDoS-Guard发布的数据&#xff0c;20…

QML 基本动画

在介绍完 QML 动画框架之后,现在我们来看看具体的动画及其用法。先从最常用的基本动画入手,这些动画包括:PropertyAnimation、ColorAnimation、Vector3dAnimation 和 PathAnimation 等,它们不仅能够帮助我们轻松地为应用程序添加动态效果,还能显著提升用户体验,使得界面更…

C++11——智能指针

智能指针的介绍 智能指针是C11中引入的标准库特性之一&#xff0c;智能指针是为了避免手动管理内存时常见的错误&#xff0c;比如内存泄漏、重复释放内存等问题。智能指针通过封装原生指针&#xff08;裸指针&#xff09;和自动释放内存的功能&#xff0c;让开发者更安全和高效…

[渗透]前端源码Chrome浏览器修改并运行

文章目录 简述本项目所使用的代码[Fir](https://so.csdn.net/so/search?qFir&spm1001.2101.3001.7020) Cloud 完整项目 原始页面修改源码本地运行前端源码修改页面布局修改请求接口 本项目请求方式 简述 好久之前&#xff0c;就已经看到&#xff0c;_无论什么样的加密&am…

SPI的学习

工作原理 SPI的工作原理基于主从架构。主设备通过四条主要信号线与一个或多个从设备进行通信&#xff1a; MOSI&#xff08;主输出&#xff0c;从输入&#xff09;DI&#xff08;Master Output Slave Input&#xff09;&#xff1a;主设备发送数据到从设备。MISO&#xff08;…

利用自定义 ref 实现函数防抖

今天来简单介绍一个新的方法&#xff0c;使用自定义 ref 实现函数防抖。 1. 自定义 ref 的来源 自定义 ref 防抖函数来自于前端开发中的两个概念&#xff1a;Vue 的响应式系统 和 数防抖&#xff08;Debounce&#xff09;。 1、Vue 响应式系统&#xff1a;Vue 提供了 ref 和…

SQL 干货 | SQL 反连接

最强大的 SQL 功能之一是 JOIN 操作&#xff0c;它提供了一种优雅而简单的方法&#xff0c;将一个表中的每一条记录与另一个表中的每一条记录结合起来。不过&#xff0c;有时我们可能想从一个表中找到另一个表中没有的值。正如我们将在今天的博客文章中看到的&#xff0c;通过包…

爬虫结合项目实战

由于本人是大数据专业&#xff0c;所以准备的是使用pycharm工具进行爬虫爬取数据&#xff0c;然后实现一个可视化大屏 参考项目&#xff1a; 1.医院大数据可视化最后展示 2. 大数据分析可视化系统展示 代码包&#xff1a;

会话管理——Cookie

会话管理在人机交互中扮演着至关重要的角色&#xff0c;它是指保持用户的整个会话活动的互动与计算机系统跟踪过程。以下是对会话管理的简单介绍&#xff1a; 会话主要分为两类&#xff1a;有状态会话&#xff08;知道对方身份&#xff09;和无状态会话&#xff08;不知道对方…

go mod的使用

1. go中包的介绍和定义 包就是很多golang源码的集合&#xff0c;Go语言为我们提供了很多内置包&#xff0c;如fmt、strconv、strings、sort、errors、time、encoding/json、os、io等。 种类&#xff1a;1、系统内置包 2、自定义包 3、第三方包 系统内置包&…

计算机组成原理一句话

文章目录 计算机系统概述存储系统指令系统 计算机系统概述 指令和数据以同等地位存储在存储器中&#xff0c;形式上没有差别&#xff0c;但计算机应能区分他们。通过指令周期的不同阶段。 完整的计算机系统包括&#xff0c;1&#xff09;软件系统&#xff1a;程序、文档和数据&…

GEE引擎架设好之后进游戏时白屏的解决方法——gee引擎白屏修复

这两天测试GeeM2引擎的服务端&#xff0c;最常见的问题就是点击开始游戏出现白屏&#xff0c;最早还以为是服务端问题&#xff0c;结果是因为升级了引擎&#xff0c;而没有升级NewUI这份文件导致的。解决方法如下&#xff1a; 下载GEE引擎包最新版&#xff0c;&#xff08;可以…

C++实现精简实用的json解析库

fcjson.h #pragma once#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__) #define _CRT_SECURE_NO_WARNINGS #endif#include <stdint.h> #include <string> #include <vector> #include <map>// VS 将执行字符集指定为…

Jupyter Notebook修改你的默认路径

Jupyter Notebook修改你的默认路径 看到网上一堆抄来抄去的博客&#xff0c;图片和文字都不对应&#xff0c;搞得配置得头昏脑涨的&#xff0c;所以写了这个。 1.打开 Anaconda Prompt 2.输入 jupyter notebook --generate-config&#xff0c;注意提示后输入N&#xff0c;因为…

【K8s】Kubernetes 证书管理工具 Cert-Manager

本文内容均来自个人笔记并重新梳理&#xff0c;如有错误欢迎指正&#xff01; 如果对您有帮助&#xff0c;烦请点赞、关注、转发、订阅专栏&#xff01; 专栏订阅入口 | 精选文章 | Kubernetes | Docker | Linux | 羊毛资源 | 工具推荐 | 往期精彩文章 【Docker】&#xff08;全…