探秘磁盘的奥秘:物理结构、缓存和虚拟内存的作用

简介: 本文介绍了磁盘的物理结构、磁盘缓存和虚拟内存的重要性,并解释了它们在计算机系统中的作用。了解磁盘的物理结构可以帮助我们更好地理解数据的存储和访问过程,从而进行系统优化和性能提升。磁盘缓存和虚拟内存则能够提高数据读取速度和运行程序的能力。深入了解这些知识,将为您的计算机系统带来更好的性能和效率。

引言

在我们之前的讲解中,我们已经详细介绍了CPU和内存的物理结构,这是计算机系统中至关重要的组成部分。然而,除了CPU和内存之外,磁盘也扮演着非常重要的角色,它在数据存储方面起着至关重要的作用。因此,我们将继续向大家介绍磁盘的物理结构,以便更全面地了解计算机系统的工作原理。通过深入了解磁盘的物理结构,我们可以更好地理解数据的存储和访问过程,从而帮助我们更好地进行系统优化和性能提升。让我们一起深入研究磁盘的组成部分和工作原理,为进一步的学习打下坚实的基础。

磁盘

磁盘的物理结构

磁盘的物理结构指的是磁盘存储数据的特定形式。一块机械硬盘由三个关键部件组成,它们分别是盘面、磁头和悬臂。这些部件共同协作,以实现数据的读取和写入。盘面是磁盘的主要组成部分,它是一个平坦的圆盘,上面覆盖着磁性材料。磁头则是位于盘面上方和下方的装置,它们负责读取和写入数据。而悬臂则起到支撑和定位磁头的作用。这三个部件的协同工作使得磁盘能够高效地存储和访问数据。

image

image

在磁盘的物理结构中,磁盘表面被划分成了若干个同心圆的空间,这些空间被称为磁道。而磁道又按照固定大小的存储空间被划分成了扇区。

扇区是磁盘进行物理读写的最小单位。在Windows系统中,一般一个扇区的大小为512个字节。然而,在逻辑层面上,Windows对磁盘进行读写的单位是扇区整数倍的簇。根据磁盘容量和功能的不同,一个簇可以是512字节(即1个扇区)、1KB(2个扇区)、2KB、4KB、8KB、16KB、32KB(64个扇区)。因此,簇和扇区的大小是相等的。

硬盘的基本存储单位是扇区(Sector),每个扇区通常为512字节。一个硬盘通常由多个磁盘片组成,每个磁盘片上划分了若干个同心圆的磁道,每个磁道又被划分为若干个扇区。

一般情况下,一个盘面上会有两个磁头,分别位于盘面的正面和背面。盘面的正面和背面都被涂有磁性材料,用于存储数据。此外,一块硬盘通常不只有一个盘面,而是由多个盘面堆叠而成,这些盘面是平行排列的。每个盘面的正面和背面都有对应的磁头,用于读取和写入数据。

image

在数据存取的过程中,我们不能直接从磁盘盘面上将数据传输到总线上,而是需要通过磁头进行中转。首先,磁头将从盘面上读取数据,然后通过电路信号传输给控制电路和接口,最终传送到总线上。

读取数据实际上包含两个主要步骤。首先,我们需要将盘面旋转到特定位置。在这个位置上,悬臂能够准确定位到整个盘面的一个特定子区间。这个子区间的形状类似于一块披萨饼,通常被称为几何扇区(Geometrical Sector),意味着在“几何位置上”,所有这些扇区都可以被悬臂访问到。

其次,我们需要将悬臂移动到特定磁道的特定扇区,也就是在几何扇区内部定位到我们实际需要的扇区。一旦找到目标扇区,磁头会降下来,从正对着扇区的位置读取数据。

综上所述,数据的读取过程包括将盘面旋转到目标位置和将悬臂移动到目标扇区的过程。通过这两个步骤,我们可以成功读取到所需的数据。

image

磁盘缓存

正如我们之前提到的,磁盘和内存之间通常是互利共生的关系,彼此协作并保持良好的合作关系。每次内存需要读取数据时,往往会读取相同的内容,因此必然会有一个角色负责存储我们经常需要读取的内容。就像在软件开发中经常使用缓存技术一样,在硬件层面也存在磁盘缓存。

磁盘缓存指的是将从磁盘读取的数据存储到内存中的一种方式。这样,在接下来需要读取相同内容时,就不再需要通过实际的磁盘访问,而是可以直接从磁盘缓存中读取。磁盘缓存的出现大大改善了磁盘访问的速度,类似于某种技术或框架的出现,解决了特定问题。

通过磁盘缓存,我们能够提高数据的读取速度,减少对实际磁盘的频繁访问,从而提升系统的整体性能。磁盘缓存的存在使得数据的读取更加高效和快速,为我们的计算机系统带来了许多便利。

image

虚拟内存是计算机系统内存管理的一种技术,它通过将磁盘的一部分作为假想内存来使用,成为内存和磁盘交互的第二个媒介。与假想的磁盘(实际上是内存)相对的是磁盘缓存,而与假想的内存(实际上是磁盘)相对的是虚拟内存。

虚拟内存的主要作用是使应用程序认为它拥有连续可用的内存,即一个完整的地址空间。然而实际上,这个地址空间通常被分割成多个物理碎片,并且其中的一部分存储在外部磁盘管理器上,需要时进行数据交换。

虚拟内存的存在使得即使内存不足,仍然可以运行程序。例如,即使只剩下10MB的内存空间,仍然可以运行15MB的程序。然而,由于CPU只能执行加载到内存中的程序,因此虚拟内存的空间需要与内存中的空间进行置换(swap),然后才能运行程序。

虚拟内存有两种方法,分别是分页式和分段式。而Windows采用的是分页式。分页式是指在不考虑程序构造的情况下,将运行的程序按照一定大小的页进行分割,并以页为单位进行置换。在分页式中,将磁盘的内容读入内存中称为Page In,将内存的内容写入磁盘称为Page Out。Windows计算机的页大小为4KB,也就是说,需要将应用程序按照4KB的页来进行切分,并以页为单位放入磁盘中,然后进行置换。

image

为了实现虚拟内存功能,Windows在磁盘上提供了虚拟内存使用的文件,即页文件。该文件由Windows生成和管理,其大小与虚拟内存大小相同,通常是内存大小的1-2倍。

至于为什么选择分页式而不是分段式,我们在之前的文章中已经详细讨论过,所以在这里就不再赘述了。

总结

本文介绍了磁盘的物理结构、磁盘缓存和虚拟内存三个方面。磁盘的物理结构由盘面、磁头和悬臂组成,盘面上划分了多个磁道和扇区,扇区是磁盘的最小读写单位。磁盘缓存是将磁盘读取的数据存储到内存中,提高了数据读取速度和系统整体性能。虚拟内存是通过将磁盘的一部分用作假想内存的技术,使应用程序能够认为拥有连续可用的内存。虚拟内存的存在使得即使内存不足,仍然可以运行程序。通过深入了解磁盘的物理结构、磁盘缓存和虚拟内存,我们可以更好地理解计算机系统的工作原理,为系统优化和性能提升提供基础。

相关文章
|
21天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
54 7
|
1月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
602 2
|
2月前
|
存储 缓存 固态存储
|
2月前
|
消息中间件 存储 缓存
大数据-71 Kafka 高级特性 物理存储 磁盘存储特性 如零拷贝、页缓存、mmp、sendfile
大数据-71 Kafka 高级特性 物理存储 磁盘存储特性 如零拷贝、页缓存、mmp、sendfile
75 3
|
2月前
|
存储 缓存 API
LangChain-18 Caching 将回答内容进行缓存 可在内存中或数据库中持久化缓存
LangChain-18 Caching 将回答内容进行缓存 可在内存中或数据库中持久化缓存
48 6
|
3月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
201 5
|
2月前
|
C# 开发工具 Windows
C# 获取Windows系统信息以及CPU、内存和磁盘使用情况
C# 获取Windows系统信息以及CPU、内存和磁盘使用情况
59 0
|
4月前
内存或磁盘不足,excel无法再次打开或保存任何文档
内存或磁盘不足,excel无法再次打开或保存任何文档
102 2
|
4月前
|
存储 缓存 Linux
在Linux中,内存怎么看?磁盘状态怎么看?
在Linux中,内存怎么看?磁盘状态怎么看?
|
4月前
|
存储 NoSQL Java
Tair的发展问题之Tair对于不同存储介质(如内存和磁盘)的线程分配是如何处理的
Tair的发展问题之Tair对于不同存储介质(如内存和磁盘)的线程分配是如何处理的