网站首页 > 博客文章 正文
神奇的现象:一个字符却占用 4KB?
你可以跟着一起实验,在你的电脑(Windows 或者 MacBook 都可
以)上新建或者修改一个 Txt 格式的文档,使其只有一个字符“a”,然后保存。
然后查看该文件的详情,会神奇的发现:只有一个字符 a 的文件却占用着 4KB 的磁盘空间?
更神奇的是,如果写入 1000 个、2000 个、4096 个 “a”,都是占用 4KB;持续增加数量,而如果写入 4097 个“a”,将占用 8KB?
这究竟是怎么回事呢?
磁盘的物理结构
要回答这个问题,得从磁盘的物理结构说起。磁盘的物理结构主要包括盘片、磁头、磁道、扇区和柱面等部分,它们共同构成了磁盘存储和检索数据的基础。
如上图所示,磁盘是由一个或者多个叠放在一起的盘片(Platter)构成的;每个盘片有两个表面(Surface),表面覆盖的磁性材料负责记录信息。
在盘片中央有一个主轴(Spindle),主轴可以使得盘片以固定的速度绕轴旋转,这个速度通常就是我们平时所说的磁盘是多少转的,专业术语叫做转每分钟(Revolution Per Minute,RPM)。
这样的结构封装在一个密封的容器中,我们叫做磁盘驱动器(Disk drive),简称磁盘(Disk)。
每个表面是由一组同心圆组成的,这些同心圆称为磁道(Track)。
每个磁道被划分为一组扇区(Sector)。每个扇区包含相等数量的数据位(通常是 512 字节)。
扇区之间是由间隙(Gap)隔开的,这些间隙不存储数据。
柱面(Cylinder)是所有盘片表面到主轴中心距离相等的磁道的集合。
磁盘容量
一个磁盘上可以记录的最大位数称为磁盘容量。磁盘容量是评估磁盘性能和存储能力的重要指标,它指的是磁盘可以存放数据量的大小。
磁盘容量的计算方式: 假设一个磁盘有 5 个盘片,每个面 20000 条磁道,每条磁道平均 300 个扇区,每个扇区 512 字节那么磁盘容量为:
根据笔者的计算机硬盘设置,1 个簇 =8 个扇区 =4 KB(4096 字节), 因此,无论多小的文件,在硬盘上应该也会占用 4 KB 的空间。
扇区是磁盘在物理上可读写的最小单位。一个扇区的长度一般为 512 字节。在电脑上,软件读写磁盘的单位是簇( cluster), 它的长度是扇区的整数倍,一般是 8 倍。
同一个簇中不能存放不同的文件,否则无法只删除簇中的部分文件。 因此,无论多小的文件,都要占用一个簇的空间,所有文件实际占用的磁盘空间是簇的整数倍。
1 个簇=8 个扇区=4 KB(4096 字节),无论写入 1 个“a”、2 个“a”,还是 4096 个“a”,都会占用 4KB 的磁盘空间。
而如果 4097 个字符“a”,1 个簇已经无法存下了,需要使用 2 个簇,那就是 8KB。
磁盘操作
磁盘读写操作的过程可以分为以下几个步骤:
磁盘读写操作过程
磁盘的读写其实就是读写头(read/write head)来读写存储在磁性表面的位。
移动传动臂(Arm)依靠机械运动定位到盘面上的磁道的操作称为寻道(Seek)。
寻道完成之后,会“寻找扇区”;“寻找扇区”传动臂不动,是依靠磁盘旋转来实现的;可以对照着物理结构图想一想。
当扇区确定之后,就可以从该扇区第一位开始读取内容了。
其实,上述的过程只是物理结构方面的过程,真正的读写过程中肯定还得靠操作系统的参与。
磁盘操作时间估算
在上面过程中,涉及寻道时间、旋转时间、传送时间。
寻道时间:移动传动臂,定位磁道所需要的时间;依赖读写头以前的位置和传动臂在盘面上移动的速度,一般为 3-9ms;
旋转时间:旋转磁盘,定位到扇区所需要的时间;依赖读写头到达目标扇区时盘面的位置以及磁盘旋转速度;
传送时间:读取整个扇区数据的时间;依赖磁盘旋转速度和每条磁道的扇区数目;
提高磁盘访问速度
那如何提高磁盘访问速度呢?
首先,从上面过程分析,可以想到的办法肯定是让提高影响访问时间的影响参数。可以让磁盘的传动臂移动得更快一点;旋转得更快一点;每条磁道上面的扇区数多一些;那么买电脑的时候也可以参考这些参数。
其次,可以考虑更换为固态硬盘,固态硬盘使用闪存芯片代替传统磁盘的机械驱动器,随机访问时间比旋转磁盘要快得多,能耗也更低,同时更结实。
其他,其实还可以通过操作系统方面的优化,这个后续再操作系统部分更新。
猜你喜欢
- 2024-10-18 轻松扩展PC存储:分区与格式化指南
- 2024-10-18 用DOS命令diskpart来管理磁盘,并没有相像的那么高深,人人可做
- 2024-10-18 systemd入门16:如何控制日志文件大小,避免日志撑满存储空间
- 2024-10-18 深信服获得发明专利授权:“交换分区管理方法、装置、电子设备和存储介质”
- 2024-10-18 LINUX——磁盘存储管理笔记(二)(linux磁盘相关命令)
- 2024-10-18 数据存储分区的原理(数据分区的好处有)
- 2024-10-18 铁威马TRAID弹性阵列,提升你的磁盘空间利用率
- 2024-10-18 详解Linux磁盘挂载、分区、扩容操作的实现方法
- 2024-10-18 diskgenius 硬盘管理(1) 快速分区
- 2024-10-18 系统磁盘管理功能讲解,电脑硬盘分区格式化修改驱动器号图文教程
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)