磁盘物理结构介绍(磁头,扇区),chs寻址,如何读写,磁盘io消耗时间;线性抽象结构,lba寻址,分区引入

news2024/11/27 15:48:13

目录

磁盘文件

引入

看待角度

磁盘

介绍

物理结构 

俯视图

立体图

磁头

扇区

如何找到一个扇区 -- CHS寻址

如何读写

磁盘io消耗时间

抽象结构 -- 线性

引入

介绍 -- LBA寻址

分区

引入

介绍


磁盘文件

引入

文件分为两种

  • 被打开的文件(主要讨论与进程之间的联系)
  • 没有被打开的文件(存放在磁盘上)

我们这里来介绍磁盘级别的文件

看待角度

  • 从单个文件角度:文件具体存放在哪里,如何存储,大小是多少,属性有哪些
  • 从系统角度:一共有多少个文件,内容和属性存放在哪里,如何快速找到指定的文件和对应的数据

为了了解磁盘文件,我们得先来认识磁盘是什么 

磁盘

介绍

  • 内存--掉点易失存储介质
  • 磁盘--永久性存储介质(eg: ssd,u盘,flash卡,光盘,磁带)
  • 磁盘属于冯诺依曼模型中的外设,是一种机械设备(所以它io速度很慢)

物理结构 

俯视图

  • 工作时,磁盘进行高速旋转(有不同的转速)
  • 磁头会左右摇摆,进行寻址(数据其实就在磁盘上)
立体图

磁头

  • 可以看到,磁盘并不是只有一片,它其实是多个磁盘叠放在一起的
  • 磁盘的两面都可以存放数据,所以一个磁盘对应两个磁头

  • 磁头并不是紧挨着磁盘,他俩中间有一定的距离
  • 因为两者都会旋转
  • 如果挨着,磁盘表面肯定会有一定程度的磨损,而数据也可能随之丢失
  • 虽然他俩有距离,但其实距离很小
  • 所以,一旦在磁盘工作过程中,电脑磕了碰了啥的,都可能会引起磁头和磁盘的接触,就可能磨损磁盘,数据就可能会丢失

扇区

扇区磁盘存储数据的基本单位,一个扇区一般占512字节

如何找到一个扇区 -- CHS寻址

因为存储数据的基本单位是扇区,那么我们进行读写的前提是找到扇区

  • 首先确定在哪一个柱面
  • 每个柱面对应磁头的一个位置,柱面由多个半径相同的磁道组成
  • 然后移动磁头到对应的磁道上
  • 再确定要找的扇区在哪个扇面上(也就是具体对应哪个磁头)
  • 然后就可以找到对应的扇区了

如何读写

由于计算机只认识二进制,而数据都在盘面上,所以盘面上就存储了大量的二进制

类比于磁铁的正负极,盘面是通过磁性来区分0,1

  • 读取操作时,磁头感应磁性场盘面上的磁变化,并将其转换为对应的数据
  • 写入操作时,磁头改变磁场的极性,将数据写入磁性盘面

磁盘io消耗时间

 

抽象结构 -- 线性

引入

  • 随着磁盘容量的增加和计算机系统的发展,CHS寻址方式面临容量限制、复杂性和效率等问题
  • 为了克服CHS寻址方式的限制,磁盘驱动器制造商引入了逻辑块寻址(LBA)方式
  • LBA寻址方式将磁盘的物理位置抽象为一系列逻辑块,每个逻辑块都有唯一的逻辑块地址(LBA)
  • 类比磁带,它看似是圆形结构,实际上圆盘是由非常长的线性磁带环绕而成
  • 因此我们也可以将磁盘的盘片想象成线性的结构

介绍 -- LBA寻址

  • 像上面那样抽象成线性结构,每一个扇区就变成了一个块状结构
  • 如果平铺下来,是不是很像数组:
  • 所以,访问扇区,只需要知道它所在的下标即可
  • 这样的寻址方式就叫做LBA寻址
  • 最终将LBA找到的扇区,转换为CHS上的物理结构即可

分区

引入

通过上面的抽象,我们对磁盘的操作,就变成了对数组的操作:

但是,磁盘通常容量很大,几百g甚至t,若将其看作一个整体,则太过于庞大

于是我们可以将它进行分区,这些分区以统一的视角去看待,就可以将大的问题简单化

介绍

先将非常大容量的磁盘分区:

但是,这样分下来,每个区还是很大,不好管理

所以每个分区里面再进行分区:

不断分区...最终以块组为单位,组成磁盘

一个很大的磁盘 -> 多个分区 -> 很多个块组

所以只要管理好块组,分区就管理好了,分区管理好了,磁盘也就管理好噜~

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

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

相关文章

python基础速通

1. 梳理:目前学习了哪几种数据类型, 每一个数据类型定义一个变量,并输出内容以及类型 # 数据类型 # 整型 int_data 1 print(int_data, type(int_data)) # 浮点型 float_data 1.2 print((float_data, type(float_data))) # 复数 complex_da…

计算机毕设 基于大数据的社交平台数据爬虫舆情分析可视化系统

文章目录 0 前言1 课题背景2 实现效果**实现功能****可视化统计****web模块界面展示**3 LDA模型 4 情感分析方法**预处理**特征提取特征选择分类器选择实验 5 部分核心代码6 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕…

Monarch Mixer:一种性能比Transformer更强的网络架构

六年前,谷歌团队在arXiv上发表了革命性的论文《Attention is all you need》。作为一种优势的机器学习网络架构,Transformer技术迅速席卷全球。Transformer一直是现代基础模型背后的主力架构,并且在不同的应用程序中取得了令人印象深刻的成功…

[云原生1. ] Docker consul的详细介绍(容器服务的更新与发现)

文章目录 1. 服务注册与发现的概述1.1 cmp问题1.2 解决方法 2. Consul的概述2.1 简介2.2 为什么要使用Consul服务模块2.2 Consul的服务架构2.3 Consul的一些关键特性 3. consul服务部署3.1 前置准备3.2 Consul服务器3.2.1 建立 Consul 服务3.2.2 设置代理,在后台启动…

Linux开发工具的使用(vim、gcc/g++)

文章目录 vimvim基本概念vim的常用三种模式vim三种模式的相互转换vim命令模式下的命令集移动光标删除文字剪切/删除复制替换撤销和恢复跳转至指定行 vim底行模式下的命令集 gcc/ggcc/g的作用gcc/g的语法预处理编译汇编链接函数库动静态库动态链接的优缺点 静态链接的优缺点 vim…

注意,注意,weak_ptr有坑

class Test { public:Test(){cout << "构造函数\n";}~Test(){cout << "析构函数\n";} }; void *operator new(size_t nsize) {void *ptmp std::malloc(nsize);printf("申请内存:%d,%p\n",nsize, ptmp);return ptmp; }void operator…

【油猴脚本】学习笔记

目录 新建用户脚本模板源注释 测试代码获取图标 Tampermonkey v4.19.0 原教程&#xff1a;手写油猴脚本&#xff0c;几分钟学会新技能——王子周棋洛   Tampermonkey首页   面向 Web 开发者的文档   Greasy Fork 新建用户脚本 打开【管理面板】 点击【】&#xff0c;即…

微服务使用指南

微服务使用指南 1.初识微服务 微服务可以认为是一种分布式架构的解决方案&#xff0c;提供服务的独立性和完整性&#xff0c;做到服务的高内聚、低耦合。 目前服务架构主要包含&#xff1a;单体架构和分布式架构。 1.1 单体架构 单体架构&#xff1a;把所有业务功能模块都…

YoloV8目标检测与实例分割——目标检测onnx模型推理

一、模型转换 1.onnxruntime ONNX Runtime&#xff08;ONNX Runtime或ORT&#xff09;是一个开源的高性能推理引擎&#xff0c;用于部署和运行机器学习模型。它的设计目标是优化执行使用Open Neural Network Exchange&#xff08;ONNX&#xff09;格式定义的模型&#xff0c;…

微信怎么批量保存大量照片

8-2 本文要解决的问题是自动或者快速地保存微信收到的图片的事情&#xff0c;如果你的工作中有一个事情是需要每天或者经常保存大量的从微信收到的图片或者视频的&#xff0c;也许本文适合你&#xff0c;本文介绍的方法&#xff0c;可以自动保存各个群或者人发来的图片和视频。…

【LeetCode每日一题合集】2023.9.18-2023.9.24(⭐拓扑排序⭐设计数据结构:LRU缓存实现 LinkedHashMap⭐)

文章目录 337. 打家劫舍 III&#xff08;树形DP&#xff09;2560. 打家劫舍 IV&#xff08;二分查找动态规划&#xff09;LCP 06. 拿硬币&#xff08;简单贪心模拟&#xff09;2603. 收集树中金币⭐思路——拓扑排序删边 2591. 将钱分给最多的儿童&#xff08;分类讨论&#xf…

MATLAB_5MW风电永磁直驱发电机-1200V直流并网MATLAB仿真模型

仿真软件&#xff1a;matlab2016b 风机传动模块、PMSG模块、蓄电池模块、超级电容模块、无穷大电源、蓄电池控制、风机控制、逆变器控制等模块。 逆变器输出电压&#xff1a; 混合储能系统SOC&#xff1a; 威♥关注“电击小子程高兴的MATLAB小屋”获取更多精彩资料&#xff0…

String的几个常见面试题及其解析

String s3 new String("a") new String("b")会不会在常量池中创建对象&#xff1f; 答案&#xff1a;不会&#xff0c;首先需要解释“”字符串拼接的理解。 采用 运算符拼接字符串时&#xff1a; 如果拼接的都是字符串直接量&#xff0c;则在编译时编…

基于信号功率谱特征和GRNN广义回归神经网络的信号调制类型识别算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 ................................................................ %调制识别 len1 func_f…

【代码】【5 二叉树】d3

关键字&#xff1a; 非叶子结点数、k层叶子结点数、层次遍历、找双亲结点、找度为1、叶子结点数

MySQL EXPLAIN查看执行计划

MySQL 执⾏计划是 MySQL 查询优化器分析 SQL 查询时⽣成的⼀份详细计划&#xff0c;包括表如何连 接、是否⾛索引、表扫描⾏数等。通过这份执⾏计划&#xff0c;我们可以分析这条 SQL 查询中存在的 问题&#xff08;如是否出现全表扫描&#xff09;&#xff0c;从⽽进⾏针对优化…

好用的MybatisX插件~

MybatisX插件&#xff1a; MyBatis-Plus为我们提供了强大的mapper和service模板&#xff0c;能够大大的提高开发效率。但是在真正开发过程中&#xff0c;MyBatis-Plus并不能为我们解决所有问题&#xff0c;例如一些复杂的SQL&#xff0c;多表联查&#xff0c;我们就需要自己去…

Web前端—网页制作(以“学成在线”为例)

版本说明 当前版本号[20231105]。 版本修改说明20231105初版 目录 文章目录 版本说明目录day07-学成在线01-项目目录02-版心居中03-布局思路04-header区域-整体布局HTML结构CSS样式 05-header区域-logo06-header区域-导航HTML结构CSS样式 07-header区域-搜索布局HTML结构CSS…

Gin学习笔记

Gin学习笔记 Gin文档&#xff1a;https://pkg.go.dev/github.com/gin-gonic/gin 1、快速入门 1.1、安装Gin go get -u github.com/gin-gonic/gin1.2、main.go package mainimport ("github.com/gin-gonic/gin""net/http" )func main() {// 创建路由引…

打通你学习C语言的任督二脉-函数栈帧的创建和销毁(上)

&#x1f308;个人主页: Aileen_0v0&#x1f525;系列专栏:C语言学习&#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 待解决疑惑: 局部变量是怎么创建的? 为什么局部变量的值是随机值? 函数是怎么传参的?传参的顺序是怎样的? 形参和实参是什么关系? 函数调…