【linux深入剖析】深入理解基础外设--磁盘


🍁你好,我是 RO-BERRY
📗 致力于C、C++、数据结构、TCP/IP、数据库等等一系列知识
🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油

在这里插入图片描述


目录

  • 前言
  • 1.磁盘物理结构
  • 2.磁盘的物理存储
  • 3.磁盘的逻辑存储


前言

我们所有的文件都是与进程相关的文件–进程打开的文件

系统中是不是所有的文件都被打开了呢?如果没有被打开呢?那么没有被打开的文件在哪里保存起来呢?

  • 在宏观上,大部分文件是没有被打开的。没有被打开的文件保存在磁盘,SSD中。

文件被打开后会在内存里,也会像进程一般,OS会有一定的数据结构对其进行管理,那么OS要不要管理一下磁盘上的文件呢?

  • 操作系统OS本身是在内存里的,打开文件也是在内存里的,本质上OS是管理内存即可,但是磁盘是一个很重要的设备,里面存储着我们很多重要的数据以及程序等等,磁盘是一个大的存储设备,那么如何保证我们在磁盘里面准确的找到我们想要的文件并打开呢?OS就会在磁盘里做一个工作–快速定位一个文件

例如:我们日常生活中的菜鸟驿站,你在网上买了几个快递到了菜鸟驿站,每日会菜鸟驿站会到很多个快递,当快递到站了其工作人员会将快递按照快递单号都分门别类的放好,也便于人们去取快递,其核心工作就是为了让用户快速定位快递进行提取,这也就是相当于我们的OS所做的工作。
菜鸟驿站的老板不仅会做这些工作,还需要知道菜鸟驿站今天会到多少快递,已经存储了多少快递,还有预估还能存储多少快递等等信息,为让菜鸟驿站好好的运作下去,要让这些包裹都好好存储起来。

整个菜鸟驿站就是我们的磁盘,菜鸟驿站的包裹就是我们一个个没有被打开的文件,菜鸟驿站的老板就相当于我们OS内的一个文件管理模块–我们称为文件系统

  • 其主要工作是帮我们把磁盘空间好好管理起来,将众多文件分门别类的放好,给用户输出一种统一的服务,快速定位到文件,定位文件的方式就是我们的路径

1.磁盘物理结构

为了好好理解文件系统,我们先来认识一下磁盘

  • 磁盘我们大部分人都不理解,只是清晰其概念,是一个很大的存储设备。
  • 笔记本一般是不装磁盘了,一般都是SSD(固态硬盘),台式电脑可能还会有磁盘。
  • 磁盘一般按照功能划分会分成桌面级磁盘和企业级磁盘,退回到2012年,那个时候的电脑大部分装的都是磁盘,SSD(固态硬盘)在那个时候比较贵。

我们今天谈论的磁盘是企业级磁盘。磁盘在今天是并没有被淘汰,SSD在今天比磁盘依然是要贵的,磁盘存储的数据量比较大,又便宜,性价比比较高

* 这种磁盘比较薄就是我们笔记本上装的

  • 盘片:白色的盘像光盘一样的就是盘片,我们的数据就是存储在上面,我们平时见到的光盘是只读的,只能被写入一次,盘片是可以不限次数被写入的,光盘一般只有一面是光的,也就是只有一面有我们的数据,而盘片两面都是光的,没有正反,或者正反两面都可以存储数据,家用的桌面级磁盘,这个盘片只有一片两面,很薄;企业级磁盘拆开的就是一摞的。
  • 磁头:磁盘上一个像指针的东西,一个尖尖的就是我们的磁头,一面一个磁头,不是一个盘片一个磁头,加点后磁头就会移动到盘面区。在这里插入图片描述
  • 音圈马达:盘片中央的位置就是我们的音圈马达,马达就是充电了就会转,盘片就是被音圈马达带动着旋转,盘片转动的时候,我们的磁头就会来回左右摇摆,磁头的摆动就是在盘片上进行寻址。
    在这里插入图片描述
  • 伺服系统:在硬盘的背面,有磁盘对应的硬件电路,叫做伺服系统,用来控制我们的磁盘,磁盘内部的二进制指令通过伺服系统进行识别,比如开机关机寻址读写等等,控制盘片和磁头进行寻址。
    在这里插入图片描述
  1. 每一个盘片的转动速度取决于钱越多转动速度越快,磁头摆的也就越快,对应的速度也越快。
  2. 磁头贴在盘片上,好像是挨在一起,但是是没有挨在一起的,如果挨在一起就会刮花盘片,就会丢失数据。
  3. 在刚开机的时候一定是盘片高速旋转,然后磁头悬浮在盘面之上,帮我们找到数据,这个时候台式机最怕的就是突然断电或者强制关机,磁头失去动力就会落下来,由于惯性盘片会持续旋转,那么就会刮花盘片。这也是磁盘为什么被淘汰的原因之一
  4. 我们听到过很多说计算机只认识二进制01,这是没问题的,但是电脑上真正存的是01二进制数据吗?早期发明计算机的人发明了一种硬件电路,这个硬件电路可以短暂进行存储数据,存一个高低点位,我们叫做触发器,有一个触发器就存一个高电平,两个触发器就能存两个,一个高电平一个低电平,所以这就是有和无,也就是1和0。计算机里面存的根本就不是0和1这样的二进制数字,这是被人为规定出来的,根据不同的介质0和1也会被赋予不同的含义,有的是以信号的强弱表示0和1,有的是以信号的有无表示0和1,所以主要我们对应的计算机设备能够找出对应两态的就可以用0和1进行表示。
  5. 磁盘能存数据,我们可以将其想象成由无数个磁铁构成,磁铁是具有南北两极的,在磁盘当中每一块小磁铁可以看做南极为1,北极为0,这样盘片上连续写一二十个字节也就是在改变小磁铁的朝向,我们想改写全1,就是将小磁铁南极朝上即可。
  6. 一块磁铁扔到家里不管,如果很久不管依然会有磁性,这也就是磁盘为什么能长久存储数据的原因,所以我们将磁盘叫为永久存储设备

[总结]

1. 磁盘是有多个盘片和磁头组成的,盘片和磁头是1:1的
2. 磁头和盘片经过旋转移动进行定位寻址
3. 磁盘是机械设备,不允许我们在其开机时进行移动、搬迁等等,出现物理上的损失
4. 盘片和磁头离得比较近,所以要求我们的磁盘要防震,以及内部要是无尘的,磁盘是很需要高精度的技术的,国外走的比较早,所以国外的技术是非常领先的
5. 企业磁盘的数据失去其价值的时候,是不会将磁盘随便扔掉的,但是对于磁盘需要去销毁,有人说可以消磁也有人说可以丢进火里烧毁,当然了这两种办法都是可行的,但是这费人费力消耗太大,所以我们的企业通过和另一些企业通力合作,通过一定的指令技术,将磁盘数据全部写0或者1,来达到消除数据的功效,进行集中报废


2.磁盘的物理存储

在这里插入图片描述
磁盘各个面的展开图如下:
在这里插入图片描述

  • 磁道/柱面:这里面的扇区是我们磁盘IO的基本单位—不一定是系统和磁盘IO的基本单位,每一个扇区都有唯一的编号
    在这里插入图片描述
  • 磁头、盘面:盘片的每一个面叫做盘面,每一个盘面都有唯一的编号

如果我们想访问磁盘里的一个扇区:
通过磁头定位:磁道/柱面(cylinder),确认使用哪一个磁头(head),再进行确认哪一个扇区(sector)
这种定位方案叫做CHS定位法
了解了这些,那么文件不就是多个扇区承载的数据吗?

3.磁盘的逻辑存储

我们先来认识一下磁带
在这里插入图片描述
磁带存储的数据就在这一条带子上面,它是圈起来通过马达将其一点一点移动的,通过技术读取带子数据,这一整个带子圈起来就相当于盘片里的一面,全部抽出来拉直了不就是一恶搞线性存储结构吗?

在我看来,磁盘也就是一个非常巨大的线性空间,而扇区就是其中一块一块的连续空间,可以理解为磁盘是这一整个线性空间,而磁道和扇区就是这其中一个一个的子空间,也就是说,我们对磁盘的管理也就是对数组的增删查改!我们就可以通过一个磁道有多少个扇区来访问到目标扇区

  1. 磁盘是会自己转化成为线性地址供我们访问的

  2. 操作系统认为,一次和磁盘IO一个扇区单位太小了,访问速度太慢了,OS文件系统认为:IO的基本单位是4KB,如果一个扇区是512B,那么OS会一次访问8个扇区去进行IO。

  3. 在OS内部就会重新形成一个8个扇区为一个子数组的线性结构,这样每8个扇区就会对应一个数组下标。这每一块数组的地址就是逻辑区块地址(Logical Block Address, LBA)

  4. 逻辑区块地址(Logical Block Address, LBA)是描述计算机存储设备上数据所在区块的通用机制,一般用在像硬盘这样的辅助记忆设备。LBA可以意指某个数据区块的地址或是某个地址所指向的数据区块。现今计算机上所谓一个逻辑区块通常是512或1024位组。ISO-9660格式的标准CD则以2048位组为一个逻辑区块大小。

  5. LBA是非常单纯的一种定址模式﹔从0开始编号来定位区块,第一区块LBA=0,第二区块LBA=1,依此类推。这种定址模式取代了原先操作系统必须面对存储设备硬件构造的方式。最具代表性的首推CHS(cylinders-heads-sectors,磁柱-磁头-扇区)定址模式,区块必须以硬盘上某个磁柱、磁头、扇区的硬件位置所合成的地址来指定。CHS模式对硬盘以外的设备来说没什么作用(例如磁带或是网络存储设备),所以通常也不会用在这些地方。过去MFM(Modified Frequency Modulation, 改良调频式)和RLL(Run Length Limited)存储设备都曾使用CHS模式,ATA-1设备更将延伸CHS(Extended Cylinders-Heads-Sectors, ECHS)也派上了用场。

  6. SCSI采用LBA抽象定址。实际上硬件控制器还是以CHS来定址区块,但无论驱动程序还是任何以低级访问磁盘的应用程序(例如数据库软件)通常都不再需要这个参数。各种要求区块低级访问的系统调用把定义好的LBA传给驱动程序﹔最直接的情况下(逻辑器件与实体设备单一对应)驱动程序只是将LBA再传给硬件控制器。

一个磁盘整体空间是非常大的,我们OS会将其划分成一个一个小块。会对这个空间进行分区操作,分完区又会对其进行分组,将每一个小块进行管理就会将整个空间管理好了

大部分笔记本都只有一块磁盘,我们电脑里的C盘D盘是我们系统对其进行了分区的。

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

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

相关文章

Go 实战|使用 Wails 构建轻量级的桌面应用:仿微信登录界面 Demo

概述 本文探讨 Wails 框架的使用,从搭建环境到开发,再到最终的构建打包,本项目源码 GitHub 地址:https://github.com/mazeyqian/go-run-wechat-demo 前言 Wails 是一个跨平台桌面应用开发框架,他允许开发者利用 Go …

联想电脑VMware虚拟机VT开启虚拟化

以联想电脑为例。 关机重启, 有的电脑是按F2, 有的是按fnF2 进入BIOS,左右键,选择Configuration, 再上下键选择 Intel Virtual Technology 按回车键,再按上下键选择 Enable ,回车确认。 按fn…

Xlinx相关原语讲解导航页面

原语就是对FPGA底层器件的直接调用,与IP功能是类似的,将原语的参数变成IP配置时的GUI界面参数,可能会更加直观。IP的缺陷在于繁杂,比如SelectIO IP内部包含IDDR、ODDR等等IO转换的功能,如果只想使用单沿转双沿一个功能…

ChatGPT全方位解析:如何培养 AI 智能对话技能?

简介 ChatGPT 的主要优点之一是它能够理解和响应自然语言输入。在日常生活中,沟通本来就是很重要的一门课程,沟通的过程中表达的越清晰,给到的信息越多,那么沟通就越顺畅。 和 ChatGPT 沟通也是同样的道理,如果想要C…

[软件使用-Vcftools / Plink ] VCF文件中剔除/提取一个或多个样本,两组方法实现及运算时间比较

官网:VCFtools 参数查看: 提取样本 --keep 剔除样本 --remove # 提取某几个样本 system("vcftools --vcf eg.vcf --keep keep.list --recode --out keep") # keep.list 是由每一行为一个样本ID组成的文件 tips: 运行比较耗时 官网&#xff…

【算法】二分算法题

个人主页 : zxctscl 如有转载请先通知 题目 1. 704. 二分查找1.1 分析1.2 代码 2. 34. 在排序数组中查找元素的第一个和最后一个位置2.1 分析2.2 代码 3. 35. 搜索插入位置3.1 分析3.2 代码 4. 852. 山脉数组的峰顶索引4.1 分析4.2 代码 5. 153. 寻找旋转排序数组中…

蓝桥杯简单STL

目录 vector vector定义 vector访问 常用函数 size() ​编辑 push_back(num) pop_back() clear 迭代器(iterator) 迭代器定义 遍历数组示例 insert(it, element) erase(it) 标准模板库--STL,它包含了多种预定义的容器、算法和迭代器&…

联想电脑开启虚拟化失败,开启虚拟化却提示还没有开启虚拟化

安装虚拟机的时候, 电脑要开启虚拟化, Intel VT, 去BIOS开启了, 但是依然报错,说虚拟化处于禁用状态。 解决方案: 去联想官方,下载BIOS更新包,更新BIOS。 更新文档: 联…

Harmony鸿蒙南向驱动开发-DAC

DAC(Digital to Analog Converter)是一种通过电流、电压或电荷的形式将数字信号转换为模拟信号的设备。 DAC模块支持数模转换的开发。它主要用于: 作为过程控制计算机系统的输出通道,与执行器相连,实现对生产过程的自…

MySQL数据库 数据库基本操作(四):表的增删查改(下)

1. 联合查询 注:联合查询是面试中的重点,只要考到sql,大多数情况下都考的是联合查询,而且联合查询也是我们学习中的难点. 1.1 笛卡尔积 在实际开发中,数据往往来自不同的表,所以要多表联合查询.多表查询是对多张表的数据笛卡尔积. 它们是两张表的各行数据通过全排列得到的. …

基于SSM+Jsp+Mysql的高校毕业设计管理系统

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

秋招复习笔记——八股文部分:操作系统

笔试得刷算法题,那面试就离不开八股文,所以特地对着小林coding的图解八股文系列记一下笔记。 这一篇笔记是图解系统的内容。 硬件结构 CPU执行程序 计算机基本结构为 5 个部分,分别是运算器、控制器、存储器、输入设备、输出设备&#xf…

轻量的 WebHook 工具:歪脖虎克

本篇文章聊聊轻量的网络钩子(WebHook)工具:歪脖虎克。 写在前面 这是一篇迟到很久的文章,在 21 年和 22 年的时候,我分享过两篇关于轻量的计划任务工具 Cronicle 的文章:《轻量的定时任务工具 Cronicle&a…

运筹学基础(六)列生成算法(Column generation)

文章目录 前言从Cutting stock problem说起常规建模Column generation reformulation 列生成法核心思想相关概念Master Problem (MP)Linear Master Problem (LMP)Restricted Linear Master Problem (RLMP)subproblem(核能预警,非常重要) 算法…

kvm基础命令

前言 一、基础命令 1.虚拟机查看 2.虚拟机开启与关闭 3.虚拟机删除 4.查看虚拟机的配置 5.配置文件重定向 6.命令行登录虚拟机 二、调整虚拟机磁盘大小 三、虚拟机创建快照 四、virsh console报错 总结 前言 今天我们分享一下如何使用kvm基础命令。 一、基础命令 1.虚拟机查看…

杨笛一新作:社恐有救了,AI大模型一对一陪聊,帮i人变成e人

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站ai人工智能工具 更多资源欢迎关注 在社交活动中,大语言模型既可以是你的合作伙伴(partner)&#xff0…

MySQL-用户与权限管理:用户管理、权限管理、角色管理

用户与权限管理 用户与权限管理1.用户管理1.1 登录MySQL服务器1.2 创建用户1.3 修改用户1.4 删除用户1.5 设置当前用户密码1.6 修改其它用户密码 2. 权限管理2.1 权限列表2.2 授予权限的原则2.3 授予权限2.4 查看权限2.5 收回权限 访问控制连接核实阶段请求核实阶段 3. 角色管理…

Redis 八种常用数据类型常用命令和应用场景

5 种基础数据类型:String(字符串)、List(列表)、Set(集合)、Hash(散列)、Zset(有序集合)。 3 种特殊数据类型:HyperLogLog&#xff0…

【git】checkout origin/xxx 出现 detached HEAD问题

git 检出远程分支出现Head分离的是什么原因导致的呢?? 因为Head指向了origin的一个commit, 但是这个origin分支你的本地又没有,也就是说你本地没有追踪这个分支,那就要track一下 git checkout -h 看一下有没有追踪的命令 果不其…

服务器开发 Socket 相关函数

Socket 函数 #include <sys/types.h> #include <sys/socket.h> int socket(int domain, int type, int protocol)domain: AF_INET 这是大多数用来产生 socket 的协议&#xff0c;使用TCP或UDP来传输&#xff0c;用IPv4的地址 AF_INET6 与上面类似&#xff0c;不过…