关于 IO、存储、硬盘和文件系统
关于IO、存储、硬盘和文件系统
- 0.引入
- 1.了解IO
- 1.1.存储器IO
- 1.2.设备IO
- 2.存储介质和存储类型
- 2.1.内存
- 2.2.硬盘
- 2.3.固态硬盘(SSD)
- 2.4.U盘
- 3.硬盘的工作原理
- 3.1.磁头
- 3.2.盘片
- 3.3.电动机
- 3.4.硬盘的读写操作
- 4.文件系统概述
- 4.1.文件系统的类型
- 4.2.文件系统的相关概念
- 4.3.文件系统的优化
- 5.总结
0.引入
在计算机领域,IO(Input/Output)指的是将数据从一个设备传输到另一个设备的过程。而存储指的是将数据保存在内存或硬盘等设备中的过程。硬盘则是存储设备的一种,用于长期存储数据。同时,为了更有效地管理和组织硬盘或其他存储设备中的数据,我们需要使用文件系统。
1.了解IO
IO是计算机中最重要的部分之一,它涉及所有数据的输入和输出操作。在计算机系统中,IO通常分为两类:存储器IO和设备IO。存储器IO指的是CPU与主内存之间的数据传输,而设备IO指的是外设(例如硬盘、键盘、鼠标、显示器等)与计算机之间的数据传输。
1.1.存储器IO
在存储器IO中,CPU会将数据从寄存器读取,然后将其存储到内存中。当需要读取数据时,CPU会从内存中读取数据,然后将其存储到寄存器中。存储器IO是非常快速和高效的,因为内存的访问速度很快,通常可以达到每秒数GB的速度。
1.2.设备IO
设备IO涉及到外设向计算机中传输数据,如硬盘读取和写入数据。在设备IO方面,最重要的因素是设备的传输速度。设备传输速度通常比内存传输速度慢得多,在某些情况下,速度可能只有数kb/s。而设备IO操作也非常耗费CPU资源,因此需要进行合理管理和优化。
2.存储介质和存储类型
计算机中,常用的存储介质有内存、硬盘、固态硬盘(SSD)和U盘等。各种存储介质都有其自身的优点和缺点,可以针对不同的需求进行选择。
2.1.内存
内存是计算机中用于暂时储存程序和数据的地方。内存的读写速度非常快,可以达到每秒GB的速度,但它的容量相对较小。内存中存储的数据在计算机关闭后会丢失,因此,它仅适用于临时存储数据。
2.2.硬盘
硬盘是一种用于长期存储数据的设备。与内存不同,硬盘的容量较大,可以存储TB级别的数据,而且可以在计算机关闭和重新启动后保留数据。但是,硬盘的读写速度较慢,通常在每秒数百MB的范围内。
2.3.固态硬盘(SSD)
固态硬盘是一种新型的存储设备,在速度上比传统的机械硬盘快得多。SSD没有机械部件,因此速度更快、噪音更小,并且可以在温度较高的环境下运行。但SSD相对较贵,容量也不如机械硬盘那么大。
2.4.U盘
U盘是一种便携式存储设备,它非常小巧轻便,可以轻松地将文件从一台计算机传输到另一台计算机。U盘价格便宜,容量适中,适合存储小型文件和临时数据。
3.硬盘的工作原理
硬盘是一种机械设备,它使用磁盘来存储数据。硬盘由许多不同的部件组成,包括磁头、盘片、电动机等。
3.1.磁头
磁头是硬盘中最重要的部件之一,它负责读取和写入磁盘上的数据。磁头以非常高的速度飞过磁盘表面,将信息写入磁介质或从中读取信息。
3.2.盘片
盘片是硬盘中存储数据的主要部件。一个硬盘通常有多个盘片,每个盘片都可以分成许多轨道和扇区。轨道是由同心圆组成的,而扇区是由一条弧线和两条半径直线组成的一个小块。
3.3.电动机
电动机是硬盘中的一个关键部件,它带动磁盘旋转。磁盘必须非常精确地旋转,以便磁头可以在正确的位置读取和写入数据。
3.4.硬盘的读写操作
当需要读取硬盘上的数据时,计算机会发送一个读取请求到硬盘,然后磁头飞过磁盘表面找到正确的轨道和扇区,并读取相应的数据。当需要写入数据时,磁盘会接收一个写入请求,并将数据存储到正确的磁盘扇区中。
4.文件系统概述
文件系统是计算机中用于管理和组织硬盘或其他存储设备中数据的技术。文件系统的作用是让计算机能够方便地对存储在硬盘或其他存储设备中的数据进行管理、存储、读取和写入等操作,以及保证数据的安全性、完整性和可靠性。
4.1.文件系统的类型
Linux支持的文件系统种类非常多。按照存储位置的不同,可以将文件系统分为以下三类:
- 磁盘文件系统:把数据直接存储在磁盘中。常见的磁盘文件系统包括EXT2、EXT3、EXT4、ReiserFS、XFS、NTFS等。
- 内存文件系统:数据存储在内存中而不是硬盘中。常见的内存文件系统包括/tmpfs、/proc、/dev/shm、/sys等。
- 网络文件系统:可以将硬盘中的数据通过网络分享给其他计算机使用。常见的网络文件系统包括NFS、Samba等。
4.2.文件系统的相关概念
- inode:包含了文件或目录的元数据信息,每个文件或目录都有一个唯一的inode号码,操作系统可以通过inode号码来找到文件或目录。
- 超级块:文件系统中的一个非常重要的数据结构,它存储了文件系统的基本信息,如文件系统的大小、块大小、inode数量等等。
- 块:文件系统中的基本单位,文件系统把一个大文件分成若干个块进行存储。
4.3.文件系统的优化
为了提高文件系统的性能,可以采取以下几种优化方法:
- 分区和格式化:合理的分区和格式化可以提高文件系统的性能。我们可以根据数据的不同特点、使用场景等,来选择合适的分区大小、格式化方式等参数。
- 选择合适的文件系统:不同的文件系统有不同的特点和应用场景,选择合适的文件系统可以提高系统的性能和稳定性。
- 例如,对于大容量的磁盘,Ext4是一个比较好的选择,而对于USB闪存盘,则可以选择FAT32或NTFS。
- 调整inode_size:inode_size是一个非常重要的参数,它定义了每个inode节点占用的字节数。通常情况下,inode_size的值与块大小相同,也可以通过调整inode_size的大小来优化文件系统的性能。
- 缓存:缓存是一个非常有用的优化手段,它可以提高文件系统的访问速度。缓存可以分为内存缓存和磁盘缓存两种。内存缓存是指使用内存来缓存热点数据,以提高访问速度。磁盘缓存是指使用硬盘空间来作为缓存,以提高数据的访问速度。
5.总结
IO是计算机中最重要的部分之一,它涉及所有数据的输入和输出操作。
存储包括内存、硬盘、固态硬盘(SSD)和U盘等,各种存储介质都有其自身的优点和缺点。
硬盘是一种重要的长期存储设备,它由许多不同的部件组成,包括磁头、盘片、电动机等。
文件系统是管理和组织硬盘或其他存储设备中数据的技术,它的作用是让计算机能够方便地对存储在硬盘或其他存储设备中的数据进行管理、存储、读取和写入等操作,以及保证数据的安全性、完整性和可靠性。
相关文章:

关于 IO、存储、硬盘和文件系统
关于IO、存储、硬盘和文件系统 0.引入1.了解IO1.1.存储器IO1.2.设备IO 2.存储介质和存储类型2.1.内存2.2.硬盘2.3.固态硬盘(SSD)2.4.U盘 3.硬盘的工作原理3.1.磁头3.2.盘片3.3.电动机3.4.硬盘的读写操作 4.文件系统概述4.1.文件系统的类型4.2.文件系统的…...
计算机网络期中复习提纲-酷酷的聪整理版
第一章 概述 1.请介绍计算机网络在逻辑上的组成及其各自的作用。 计算机网络在逻辑上可以分为终端子网和通信子网两部分。 终端子网是指连接计算机与网络的部分,主要负责将数据从计算机发送到通信子网,或将从通信子网接收到的数据传输到计算机。终端子网通常包括物理层和数据…...

clickhouse的嵌套数据结构Tuple、Array与Nested类型介绍和使用示例
文章目录 Tuple类型Array类型Nested类型使用示例单独使用Tuple数组嵌套 Array(Tuple)Nested类型 生产使用:分组查询 Tuple类型 Tuple是ClickHouse数据库中的一种数据类型,它允许在一个字段中存储由不同数据类型组成的元组(tuple)。元组可以包含任意数量…...

人脸修复增强调研
Real-ESRGAN 工程地址:https://github.com/xinntao/Real-ESRGAN 效果: 人脸增强部分,调用的GFPGAN. GFPGAN 工程地址:https://github.com/TencentARC/GFPGAN 论文效果: BasicSR-ESRGAN: 项目地址&a…...

【Java】继承和多态
文章目录 一、继承1.继承的例子(is-a)2.组合的例子(has-a) 二、多态1.重写2.重载 三、继承的语法四、继承的注意事项1.初始化的顺序:2.super关键字 五、继承访问限定符六、多态实现方式七、多态的理解注意事项…...

ThingsBoard集群部署之k8s
1、概述 今天终于有时间去搞这个啦,拖了很久了,一直没时间,因为我本地没有那么多机器资源,开虚拟机不够,如果租用阿里云服务器,需要有充值的时间,因为这个费用是按小时付费,需要有连贯的时间来搞才行,今天恰好有时间,就开始搞了,弄成功搞出来了,特地写博客记录下来…...
【Gorm】如何在 GORM 中实现模型之间的关联?
文章目录 关联1、Belongs To(属于)2、Has One(拥有一个)3、Has Many(拥有多个)4、Many To Many(多对多) 关联 当涉及到 ORM(Object-Relational Mapping)的…...
Linux危险命令
rm -rf 命令 该命令可能导致不可恢复的系统崩坏。 rm -rf / #强制删除根目录下所有东西。rm -rf * #强制删除当前目录的所有文件。rm -rf . #强制删除当前文件夹及其子文件夹。fork 炸弹 :() { :|:& };:不太好理解可以转换成 bomb() {bomb|bomb& }; bomb一旦执行…...

FPGA入门系列13--异步串口通信
文章简介 本系列文章主要针对FPGA初学者编写,包括FPGA的模块书写、基础语法、状态机、RAM、UART、SPI、VGA、以及功能验证等。将每一个知识点作为一个章节进行讲解,旨在更快速的提升初学者在FPGA开发方面的能力,每一个章节中都有针对性的代码…...

k8s基础4——deployment控制器、应用部署、升级、回滚、水平扩容缩容
文章目录 一、基本介绍二、应用程序生命周期2.1 部署应用2.2 应用升级2.2.1 修改YAML文件升级(交互式)2.2.2 命令指定镜像版本升级(免交互式)2.2.3 调用vim升级 2.3 滚动升级2.3.1 升级流程 2.4 应用回滚2.4.1 查看历史发布版本2.…...

动态规划算法——40道leetcode实例入门到熟练
目录 t0.解题五部曲1.基础入门题目1.509. 斐波那契数2.70. 爬楼梯3.746. 使用最小花费爬楼梯4.62. 不同路径5.63. 不同路径 II6.343. 整数拆分7.96. 不同的二叉搜索树 2.背包问题1.01背包(二维数组实现)2.01背包(滚动数组实现)1.4…...

Nmap入门到高级【第十一章】
预计更新第一章. Python 简介 Python 简介和历史Python 特点和优势安装 Python 第二章. 变量和数据类型 变量和标识符基本数据类型:数字、字符串、布尔值等字符串操作列表、元组和字典 第三章. 控制语句和函数 分支结构:if/else 语句循环结构&#…...

配置本地Angular环境并使用VsCode调试Angular前端项目
配置本地Angular环境并使用VsCode调试Angular前端项目 配置本地Angular环境部署Node.Js本地环境配置一下环境变量 使用vscode调试Angular安装vscode 配置本地Angular环境 部署Node.Js本地环境 1 从官网下载node.js, 本文为(v16.13.0) 下载地址: https://nodejs.org/dist/v16.…...

100ASK_全志V853-PRO开发板支持人形检测和人脸识别
1.前言 V853 芯片内置一颗 NPU核,其处理性能为最大 1 TOPS 并有 128KB 内部高速缓存用于高速数据交换,支持 OpenCL、OpenVX、android NN 与 ONNX 的 API 调用,同时也支持导入大量常用的深度学习模型。本章提供一个例程,展示如何使…...

简单实现基于UDP与TCP的回显服务器
目录 前言UDP 版的回显服务器需要用到的 api服务端客户端UDP 版本的字典客户端和字典服务器 TCP 版的回显服务器需要用到的 api服务器客户端对服务器进行改进(使用线程池)TCP 版本的字典客户端和字典服务器 前言 我们写网络程序, 主要编写的是应用层代码. 真正要发送这个数据,…...

家用洗地机有什么推荐的吗?家用洗地机哪款好
洗地机是创新、高效的清洁工具,其具有高性能的清洁能力和卓越的操作体验。与传统的清洁工具相比,洗地机可以迅速而彻底地打扫地面,降低清洁时间和人力成本,让我们在工作之余不用花费大量的时间和精力去打扫卫生,下面就…...

深度学习与文本聚类:一篇全面的介绍与实践指南
❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…...

AP5153 线性降压恒流驱动芯片 2.5A
AP5153 是一种 PWM 调光的、低压 差的 LED 线性降压恒流驱动器。 AP5153 仅需要外接一个电阻和一个 NMOS 管就可以构成一个完整的 LED 恒 流驱动电路, 调节该外接电阻就可以调节 输出电流,输出电流可调范围为 20mA 到 3.0A。 AP5153 还可以通过在 DIM…...
Unity物理系统脚本编程(下)
一、修改物理材质 Unity对物体表面材料的性质做了件化处理,仅有5种常用属性: Dynamic Friction(动态摩擦系数)Static Friction(静态摩擦系数)Bounciness(弹性系数)Friction Combine…...

容器技术的发展
容器技术的发展 近年来,随着计算机硬件、网络以及云计算等技术的迅速发展,云原生的概念也越来越受到业界人士的广泛关注,越来越多的应用场景开始拥抱云原生,其中容器技术的发展起着至关重要的作用。本章将介绍容器技术的基础知识…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...

人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...

6.9-QT模拟计算器
源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...