当前位置: 首页 > news >正文

【Linux-基础IO】如何理解Linux下一切皆文件磁盘的介绍

目录

如何理解Linux系统上一切皆文件

1.物理角度认识磁盘

2.对磁盘的存储进行逻辑抽象

磁盘寻址

3.磁盘中的寄存器


如何理解Linux系统上一切皆文件

计算机中包含大量外设,操作系统想要管理好这些外设,就必须对这些外设进行先描述再组织,描述就是将每个外设抽象出一个结构体,每个结构体内部包含写方法、读方法等,如果某个外设没有所对应方法就把变量置为NULL

不同的外设接口抽象出的结构体可能会存在差异,操作系统通过再一层封装,将不同外设抽象成相同的存储结构,便于上层的调用

 

如果某个进程需要访问外设,就会先创建一个struct file,该struct file中存储对于的opration_func,当某个进程需要操作该外设时,则只需要访问存储该外设的operation_func的struct file并找到它的对应方法,即可对外设做操作

对于上层的保存着operation_func的struct file的集合,我们将其称之为虚拟文件系统。该文件系统存储格式是文件,上层用户看来,Linux中外设也是文件

 

1.物理角度认识磁盘

磁盘在冯诺伊曼体系中是外设,磁盘是计算机的一个组成;很早以前的计算机的存储设备是磁盘,现在为了轻便,大部分计算机采用固态硬盘(SSD)替代了磁盘,我们这里只讨论磁盘;磁盘是通过磁盘的磁性(N/S级)存储0或1,属于永久性存储介质;

磁盘的物理结构指的是存储数据的磁盘介质本身的物理组成部分。这些组成部分共同工作,以存储和检索数据。以下是磁盘物理结构的主要部分:

磁头是磁盘上最显著的组件之一,负责在磁盘表面读取和写入数据。磁头通过一个称为“磁头臂”的机械装置移动,该装置连接到磁盘的驱动器部分。磁头在移动时会非常接近磁盘表面,有时甚至只有几微米,因此磁头的设计必须非常精确。

磁盘表面是磁头在上面读写数据的平面。磁盘表面通常由多个圆盘组成,每个圆盘都围绕一个中心轴旋转。这些圆盘被称为磁盘片(简称盘片),它们通常是铝或玻璃,并且涂有磁性材料。

磁盘片是磁盘表面上的物理盘片,它们通常由多层涂有磁性材料的铝或玻璃制成。磁盘片围绕中心轴旋转,以一定的速度(称为转速)旋转

磁盘驱动器是磁盘的机械部分,它包含磁头臂、电机和控制器。磁头臂是连接到磁头的金属臂,它可以在磁盘表面移动。电机用于驱动磁盘片旋转,而控制器负责协调磁头和电机的动作,以确保数据读写操作的正确执行。

磁道是磁盘表面上的圆环,每个磁盘片上有多个磁道。磁头沿着这些磁道移动,以读取或写入数据。磁道的数量和布局取决于磁盘的大小和设计。

扇区是磁道上的一个存储单元,它是一个圆周上的一个固定大小的区域。每个扇区都有一个唯一的编号,用于标识其在磁盘上的位置。扇区的大小通常为512字节,但最新的硬盘可能使用更大的扇区大小,如4KB。

控制器是磁盘驱动器中的电子部分,负责管理磁头、电机和磁盘片之间的交互。控制器接收来自主机的命令,并将其转换为磁头和电机的动作指令。控制器还负责错误检测和纠正,以及数据传输的同步

磁盘接口是连接磁盘驱动器与计算机主板的部分,它定义了数据传输的协议和速度。常见的接口包括SATA、SAS、SCSI、NVMe等。

 

 

在磁盘中,定位某个扇区的方法是:①找到指定的磁头(Head);②找到指定的磁道(Cylinde);③找到指定的扇区(Sector)。这种方法简称为CHS(Cylinder、Header、Sector)

【示例】读取指定位置的数据

所以文件其实就是在磁盘中占有几个扇区的问题

2.对磁盘的存储进行逻辑抽象

磁盘寻址

在我们小学的时候,听英语听力我们使用磁带。将磁带插入播放机中,播放机既可以进行播放听力。磁带里有一条很长很长的塑料袋,上面涂有一层磁性材料,通常是氧化铁或磁性颗粒的混合物。这些材料在磁场的作用下可以被磁化,形成代表数据的磁化模式。磁带里也有磁头,用于读取和写入磁带的物理组件。

当我们把磁带拉出来,可以发现它存储数据是线性存储的;我们也把磁盘看作线性结构,即将磁道上的扇区按照某种规则,给予线性顺序编号;如下图所示,从左向右依次是盘面1、盘面2、盘面3......;每个盘面内,从左向右分别是该盘面不同的磁道;每个磁道又由多个扇区组成(这里我们假设每个磁道的扇区个数相同)

 

 

【示例】假设有一个磁盘,它的每个盘面有50个磁道,每个磁道有400个扇区(即每个盘面有20,000个扇区)。如果某个文件存放在18888号扇区,那么它属于哪个盘面的哪个磁道的哪个扇区呢?

盘面号 = 18888 / 20000 = 0号盘面(,磁道号 = 18888 / 400 = 47号扇区号 = 18888 % 400 = 88号扇区;

综上所述,18888号扇区属于第0个盘面的第47个磁道的第88个扇区。

像上述示例中寻找扇区的方式,称为LBA寻址方式(又称为逻辑寻址方式)。

3.磁盘中的寄存器

不仅CPU中包含寄存器,其他外部设备中也存在寄存器。

当某个进程需要向磁盘中写入数据时,以下步骤通常会发生:

设置读写控制寄存器

  • 进程(通过操作系统和相应的设备驱动程序)首先会将磁盘的读写控制寄存器设置为写状态。这通常涉及到向命令寄存器写入一个特定的命令代码,比如 “写命令”。

将数据放入数据寄存器

  • 接着,进程会将要写入的数据放入数据寄存器中。数据寄存器是磁盘控制器的一部分,用于暂存数据,这些数据随后会被写入磁盘的指定位置。

写入地址信息

  • 然后,进程需要将要写入数据的目标地址信息放入地址寄存器。这通常包括磁道号、磁头号和扇区号。这些信息告诉磁盘控制器数据应该被写入磁盘的哪个位置。

启动磁盘操作

  • 一旦所有的寄存器都被正确设置,磁盘控制器会开始执行写入操作。这个过程可能涉及到磁盘的寻道和旋转,以便磁头能够定位到正确的磁道和扇区。

监控状态寄存器

  • 在写入操作进行时,状态寄存器会显示磁盘的状态。例如,它可能会被设置为 “正在写入” 状态,表示磁盘正在执行写操作。

  • 操作系统或设备驱动程序会定期检查状态寄存器,以监控操作进度和任何可能发生的错误。

操作完成

  • 当磁盘完成写入操作后,它会更新状态寄存器。如果操作成功完成,状态寄存器会设置为 “写入成功”;如果操作失败,状态寄存器会设置为 “写入失败”,并且可能会在错误寄存器中提供错误代码,以便于诊断问题。

响应操作结果

  • 操作系统根据状态寄存器的信息来决定下一步操作。如果写入成功,它可能会继续执行其他任务或响应用户请求。如果写入失败,它可能会重试写入操作、记录错误、通知用户或采取其他错误恢复措施。

相关文章:

【Linux-基础IO】如何理解Linux下一切皆文件磁盘的介绍

目录 如何理解Linux系统上一切皆文件 1.物理角度认识磁盘 2.对磁盘的存储进行逻辑抽象 磁盘寻址 3.磁盘中的寄存器 如何理解Linux系统上一切皆文件 计算机中包含大量外设,操作系统想要管理好这些外设,就必须对这些外设进行先描述再组织&#xff0c…...

Golang | Leetcode Golang题解之第436题寻找右区间

题目: 题解: func findRightInterval(intervals [][]int) []int {n : len(intervals)type pair struct{ x, i int }starts : make([]pair, n)ends : make([]pair, n)for i, p : range intervals {starts[i] pair{p[0], i}ends[i] pair{p[1], i}}sort.…...

微服务SpringSession解析部署使用全流程

目录 1、SpringSession简介 2、实现session共享的三种方式 1、修改Tomcat配置文件 2、Nginx负载均衡策略 3、redis统一存储 0、准备工作 1、本地服务添加依赖 2、修改本地服务配置文件 3、添加application.properties文件 4、添加nacos - redis配置 5、修改本地项目…...

自动驾驶 3DGS 学习笔记

目录 street_gaussians gsplat依赖项 运行报错: python>3.9 SGD: Street View Synthesis with Gaussian Splatting and Diffusion Prior 差分高斯光栅化 diff-gaussian-rasterization street_gaussians https://github.com/zju3dv/street_gaussians gsp…...

【C++笔试强训】如何成为算法糕手Day5

学习编程就得循环渐进,扎实基础,勿在浮沙筑高台 循环渐进Forward-CSDN博客 目录 循环渐进Forward-CSDN博客 第一题:游游的you 思路: 第二题:腐烂的苹果 思路: 第三题:孩子们的游戏 思路&…...

【Qt】无IDE的Gui程序快速开始

Qt安装 在 Windows 上安装 Qt 的步骤如下: 下载 Qt 安装程序 访问 Qt 的官方网站:Qt Downloads。点击“Download”按钮,下载 Qt Online Installer(在线安装程序)。 运行安装程序 双击下载的 QtInstaller.exe 文件…...

Python编码系列—Python备忘录模式:掌握对象状态保存与恢复技术

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…...

linux常用命令汇编(持续更新)

一、用户提示符 # root账号提示符 $ 普通用户提示符 二、关闭计算机 shutdown(安全有序地关闭计算机) 语法:shutdown [options] [time] [message] shutdown -h now #立即关机(--halt/终止) shutdown -r now #重…...

AI面试指南:AI工具总结评测,助力求职季

AI面试指南:AI工具总结评测,助力求职季 摘要: 在竞争激烈的AI领域秋招季,准备充分并借助高效工具是提升面试通过率的关键。本文主要介绍一些针对秋招的AI面试工具和学习资源,分为简历优化、面试助手、手撕代码练习三个…...

大二考核题解

大二考核题解 题号题目考察知识点A有意思的监考二分答案B海绵宝宝的数独DFSC走楼梯递推D碱基配对kmpE好简单的题啊,写它!最短路 写在前面: 整体难度不大,代码能力需要一些,正常来说至少要会3题以上 A 有意思的监考 …...

深入解析:Kubernetes 如何使用 etcd 作为配置中心和注册中心

在 Kubernetes 中,etcd 是核心的分布式存储组件,负责存储和管理集群的所有配置信息、状态数据以及服务注册信息。etcd 的高可用性和强一致性使得它成为 Kubernetes 的 “source of truth”,确保集群能够动态、高效地管理资源,并保…...

MQ高级:RabbitMQ小细节

在之前的学习中,我们只介绍了消息的发送,但是没有考虑到异常的情况,今天我们就介绍一些异常情况,和细节的部分。 目录 生产者可靠性 生产者重连 生产者确认 MQ可靠性 持久化 Lazy Queue 消费者可靠性 消费者确认机制 失…...

期权卖方怎么选择权利金高的品种,期货VIX高低对行情有什么影响

VIX指数——全称为芝加哥期权交易所市场波动率指数,俗称恐慌指数。 是衡量波动性的重要指标。VIX指数上升,预期未来市场波动性会增加。VIX指数下降,预期未来市场波动性会降低。 期货VIX指数最新价格排序 期权卖方尽量选择期货VIX指数在25以…...

内存对齐的原理和使用

1. 什么是内存对齐? 内存对齐是指将数据存储在内存中时,按照数据类型的大小,将数据放在特定的内存边界上。例如,4 字节的 int 通常放在能够被 4 整除的地址上,8 字节的 double 则放在能被 8 整除的地址上。 2. 为什么…...

搭建企业级私有仓库harbor

华子目录 harbor简介实验环境准备下载软件包安装docker-cehosts解析 实验步骤配置https加密传输解压进入解压目录,修改文件配置启动harbor 测试客户端配置harbor本地加速器注意 通过docker compose管理harbor harbor简介 harbor是由wmware公司开源的企业级docker r…...

互联网前后端分离的开发场景,一般会员和数据权限的判断是放在前端还是后端?

推荐学习文档 golang应用级os框架,欢迎stargolang应用级os框架使用案例,欢迎star案例:基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识,这里有免费的golang学习笔…...

李宏毅机器学习2022-HW8-Anomaly Detection

文章目录 TaskBaselineReportQuestion2 Code Link Task 异常检测Anomaly Detection 将data经过Encoder,在经过Decoder,根据输入和输出的差距来判断异常图像。training data是100000张人脸照片,testing data有大约10000张跟training data相同…...

用户体验分享 | YashanDB V23.2.3安装部署

近期崖山新版体验过程中,总能看到用户提问:openssl版本问题、monit命令找不到问题、yashan用户权限问题、数据库重装问题 今日整理了多位用户的安装经验,希望能够帮助到大家~ 1.Lucifer三思而后行 :YashanDB 个人版数据库安装部…...

【漏洞复现】泛微OA E-Office /E-mobile/App/init.php 任意文件上传漏洞

免责声明: 本文旨在提供有关特定漏洞的信息,以帮助用户了解潜在风险。发布此信息旨在促进网络安全意识和技术进步,并非出于恶意。读者应理解,利用本文提到的漏洞或进行相关测试可能违反法律或服务协议。未经授权访问系统、网络或应用程序可能导致法律责任或严重后果…...

SpringCloudEureka实战:搭建EurekaServer

1、依赖引入 <dependencies><!-- 注册中心 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency> </dependencies> <de…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...