操作系统:磁盘组织与管理

简介: 操作系统:磁盘组织与管理



1 磁盘的结构

1.1 总览

1.2 磁盘、磁道、扇区

1.2.1 什么是磁盘

1.2.2 什么是磁道

如图,假设这是一个磁盘的平面图,磁盘的表面被划分为一个一个的的圈。这些圈就是磁道。实际磁盘中,磁道的数量可能有数万条。

1.2.3 什么是扇区

每一个磁道都会被划分为一个一个的”磁盘块“,这些块就是扇区。如图

注意:各磁道上的扇区存储容量都是相同的。可以看到外层的磁道长度较长,因此其存储容量的密度就会较小,而最内侧扇区的密度最大。

1.3 磁盘怎么读取数据

磁盘的实际物理结构如图所示。

读取文件时,首先由马达带动磁头臂将磁头移动到数据所在磁道的扇区上,接着磁盘转动,就可以实现数据的读取

1.4 盘面、柱面

1.4.1 什么是盘面

实际磁盘中,一个磁盘由多个盘组成,如图所示。每一个盘就是一个盘面,相应的,每一个盘面都有一个读写磁头。注意:所有的磁头都连接指针同一个磁头臂上,这些磁头是”同进退“的。

1.4.2 什么是柱面

所有盘面中相对位置相同的磁道组成柱面。如图,图中黄色的磁道就构成一个柱面

1.5 磁盘的分类

1.5.1 根据磁头是否可以移动

(1)活动磁头磁盘

(2)固定头磁盘

每一个磁盘都有一个磁头

1.5.2 根据盘面是否可以更换可以分为

(1)可换盘磁盘

(2)固定盘磁盘

1.6 总结

2 磁盘调度算法

2.1 总览

2.2 一次磁盘读/写操作需要的时间

2.2.1 寻道时间

2.2.2 延迟时间

解释:

1/r即为读写头转动一圈需要的时间,而找到目标扇区所需要的平均需要转半圈,所以还需要除2。

2.2.3 传输时间

解释:

b/N为写入目标字节数所需要使用的磁道数,而写入一个磁道的数据需要的时间与磁头转动一圈的时间相同。因此传输时间为:

磁头转动一圈的时间*总共需要转几圈

2.2.4 注意

2.3 进程访问磁盘的调度算法

2.3.1 先来先服务(FCFS)

(1)算法思想

(2)例子

(3)优缺点

2.3.2 最短寻找时间优先(SSTF)

对于FCFS算法的改进

(1)算法思想

(2)实例

(3)优缺点

为什么会产生饥饿现象?

2.3.3 扫描算法(SCAN)

对于SSTF算法的改进

(1)算法思想

(2)实例

(3)优缺点

2.3.4 LOOK算法

对于SCAN算法的改进

(1)算法思想

(2)实例

(3)优缺点

2.3.5 循环扫描算法(C-SCAN)

(1)算法思想

(2)实例

(3)优缺点

2.3.6 C-LOOK 调度算法

对于C-SCAN算法的改进

(1)算法思想

(2)实例

(3)优缺点

2.4 总结

3 减少延迟时间

3.1 存在延迟时间的原因

假设磁盘的基本结构如图所示。事实上,在实际的磁盘中,磁头每读取一个扇区的内容后,需要一定的处理时间,但是盘片是在不停的旋转的,所以假设磁头读完2号扇区后再想读3号扇区,必须等盘片转完一圈才可以。此时会产生较大的延迟。

3.2 减少延迟的方法

3.2.1 交替编号

如图,假设磁盘需要读入0-1号扇区的内容,当读完0号扇区的内容后经过一段时间的处理,此时磁头在盘面4,此时只需要等待磁头从4转到1号就可以读取。

3.2.2 错位命名

(1)磁盘的物理地址为什么是(柱面号,盘面号,扇区号)而不是(盘面号,柱面号,扇区号)?

①对于第二种表示方式,

则转第一圈的时候,可以读取0、2、4、6的磁道的数据;转第二圈可以读取1、3、5、7的磁道的数据。

此时(00,000,111)的数据全部读完,为了读取(00,001,000)-(00,001,111)的数据,需要将读写头往外移动一个磁道的距离,这种移动属于物理层面的移动,耗费时间较长。

②对于第一种表示方式,

与前文类似,读取(000,00,111)的数据需要转两圈。接下来为了读取(000,01,000)-(000,01,111)的数据(分布在两个盘面上),示意图如图所示。则只需要将0号磁头关闭并激活1号磁头即可。并再次转两圈就可以读取完成。

这种方式无须物理移动磁头,耗费时间更短

(2)什么是错位命名?

不同盘面不同扇区的命名是错开的。如图所示

(3)不采用错位命名的读取过程

如果不采用错位命名,则磁盘的物理结构的示意图如图所示

假设想读取的数据为0号盘面的7号扇区、1号盘面的0号扇区

注意:

1. 这种地址连续的读取很常见)。

2. 不同的盘面是连轴转动的。

则首先会转一圈读取0号盘面的7号扇区,而读取完数据还需要花费一定的时间进行处理,而盘面是不间断转动的,因此虽然此时1号磁头已经到了1号盘面的0号扇区,但是也并不可以立即读取,而等到可以读取的时候磁头已经不在扇区的开始处了。所以又需要转一圈,整个过程耗费时间较长

(4)采用错位命名的读取过程

如果采用错位命名,则磁盘的物理结构的示意图如图所示

则当0号盘面的7号扇区的数据处理完毕,此时1号盘面的磁头可能已经在7号扇区的中间,再等上一小段时间就可以读取数据。此种方法耗费时间较短。

3.3 总结

4 磁盘的管理

4.1 总览

4.2 什么是磁盘初始化

4.2.1 物理格式化

如图所示:

4.2.2 将磁盘分区

如图所示

4.2.3 逻辑格式化

4.3 引导块

4.3.1 初始化程序程序(自举程序)

(1)什么是自举程序?

(2)ROM

(3)存在的问题

初始化程序一般较大,很难保证不出错,但是ROM是不可更改的,当程序出错时就无法更改

4.3.2 引导块

(1)如何改进ROM的问题?

为了解决ROM的问题,通常是将自举块存放在系统内,ROM钟存放自举装入程序,这种程序一般而言较小,出错的可能性很小

(2)什么是引导块?

4.4 坏块

4.4.1 什么是坏块

4.4.2 如何解决坏块的问题

(1)FAT标记

(2)替换坏块

4.5 总结

5 固态硬盘

5.1 总览

5.2 SSD组成

5.2.1 示意图

5.2.2 解释

系统对于固态硬盘的读取是以页为单位,多个页组成了一个块,多个块组成了一个芯片,多个芯片组成了一个芯片组。

对应到机器硬盘:

系统对于机器硬盘的读取是以扇区为单位,多个扇区组成一个磁道,多个磁道促成一个盘面,多个盘面组成一个盘面组。

因此存在对应关系:

固态硬盘 机器硬盘
扇区
磁道
芯片 盘面
芯片组 盘面组

5.3 SSD的读取特性

5.3.1 固态硬盘的读取过程

系统将需要读/写的逻辑块号传入硬盘,硬盘的闪存翻译层将逻辑块号翻译为物理页号,再从此物理地址中取出内容传给系统

5.3.2 固态硬盘的擦除/写过程

由于固态硬盘对数据的擦除是以块为单位的。假如此时一个块有3个页,其中0、1页有数据,而此时又想在0页写数据。则此时需要将0、1页的数据移到其余空闲块,并进行擦除后才可以写入。

同时,数据的物理地址改变后,闪存翻译层还需要同步改变这些数据的逻辑块号、物理地址的映射关系

5.3.4 固态硬盘支持随机访问

可以直接通过电路定位到物理地址。而机器硬盘只可以通过磁头的移动进行读写,不支持随机访问。

5.4 SSD的磨损均衡技术

5.4.1 SSD的缺点

当SSD中的一个块被擦除太多次后会坏掉,也就是不可以再次写入数据。当然,机器硬盘不存在这一点特点。

5.4.2 什么是磨损均衡技术

对于坏掉的块或磨损过于严重的块,闪存翻译层会改变逻辑块号与物理地址的映射关系,不再将数据存入该块

5.4.3 分类

①动态磨损均衡

②静止磨损均衡

6 总结

本文原版PDF文件链接:提取码:ikun

操作系统,如默默守护的守夜者,无声地管理硬件与软件的交流,为计算机创造和谐秩序。

它是无形的引导者,让复杂的任务变得井然有序,为用户提供无忧体验。

操作系统的巧妙设计,让计算机变得更加智能高效,让人与科技之间的交流更加顺畅。

在每一次启动中,它如信任的伙伴,带领我们进入数字世界的奇妙旅程。

渴望挑战操作系统的学习路径和掌握进阶技术?不妨点击下方链接,一同探讨更多操作系统的奇迹吧。我们推出了引领趋势的💻OS专栏:《OS从基础到进阶》 ,旨在深度探索OS的实际应用和创新。🌐🔍

相关文章
|
7月前
|
缓存 Linux UED
深入理解操作系统的虚拟内存管理
【5月更文挑战第30天】 在现代计算机系统中,虚拟内存是允许用户程序逻辑地址空间与物理内存解耦的关键概念。此技术不仅增强了多任务处理能力,还提供了内存保护和简化了内存管理。尽管虚拟内存的基本概念广为人知,但本文将探讨其背后的机制,以及如何通过分页和分段优化系统性能。我们将分析虚拟内存对操作系统稳定性的影响,并讨论当前操作系统中虚拟内存管理的最佳实践。
|
7月前
|
安全 算法 网络协议
探索Linux操作系统的内核管理
【5月更文挑战第31天】本文将深入探讨Linux操作系统的内核管理机制,包括其设计原则、主要组件以及它们如何协同工作以提供高效的系统性能。通过分析Linux内核的关键特性和功能,我们将揭示这一开源操作系统如何在各种计算环境中保持其稳定性和灵活性。
|
5月前
|
算法
深入理解操作系统的虚拟内存管理
【7月更文挑战第24天】在现代操作系统中,虚拟内存管理是一项至关重要的技术,它允许系统拥有比物理内存更大的地址空间,从而提升多任务处理能力。本文将详细探讨虚拟内存的工作原理、关键技术及其对操作系统性能的影响,帮助读者构建对虚拟内存管理的深入理解。
|
5月前
|
Cloud Native Devops 数据库
云原生架构:未来软件开发的引擎深入理解操作系统的虚拟内存管理
【7月更文挑战第30天】在这篇文章中,我们将深入探讨云原生架构的概念,以及它如何改变软件开发的世界。我们将从云原生的基本概念开始,然后深入到它的关键技术和实践,最后讨论它对软件开发的未来影响。无论你是软件开发者,还是IT专业人士,这篇文章都将为你提供深入理解和掌握云原生架构的重要信息。 【7月更文挑战第30天】在数字世界的构建中,虚拟内存是操作系统不可或缺的一环。本文将探索虚拟内存的核心概念、工作机制及其对现代计算环境的重要性,同时揭示其背后的技术细节和面临的挑战。
52 3
|
5月前
|
缓存 算法
操作系统的虚拟内存管理
【7月更文挑战第29天】本文深入探讨了操作系统中至关重要的虚拟内存管理机制,包括其设计原理、实现方式以及在现代计算机系统中的作用。通过分析分页系统、分段系统、页面置换算法和内存分配策略,揭示了虚拟内存如何优化资源利用,提高系统性能,并确保进程间的安全性与隔离性。此外,文章还讨论了虚拟内存管理面临的挑战及未来的发展方向。
|
5月前
|
缓存 算法 程序员
深入理解操作系统中的虚拟内存管理
【7月更文挑战第14天】本文将深入探讨操作系统中至关重要的组成部分——虚拟内存管理。通过分析其设计原理、实现机制以及性能优化策略,旨在为读者提供一个全面而深入的视角来理解虚拟内存在现代操作系统中的作用和重要性。文章不仅会涵盖虚拟内存的基本概念和功能,还会讨论其在多任务处理、内存保护及系统性能提升方面的贡献。
|
5月前
|
算法 Linux 调度
操作系统中的虚拟内存管理:原理与实现
本文深入探讨了操作系统中虚拟内存管理的核心概念,包括分页、分段、需求分页和页面置换算法。通过分析现代操作系统如Linux和Windows的虚拟内存实现机制,文章揭示了虚拟内存在提升内存利用率、进程隔离和保护内存中的关键作用。同时,讨论了虚拟内存管理面临的挑战,如内存泄漏、碎片化以及性能开销,并提出了相应的优化策略。
|
6月前
|
算法
深入理解操作系统中的虚拟内存管理
【6月更文挑战第19天】在现代操作系统中,虚拟内存管理是一个至关重要的组件。它不仅使得程序能够在有限的物理内存中运行更大的地址空间,还为系统提供了多任务处理能力。本文将深入探讨虚拟内存的概念、实现机制以及它在操作系统中的重要性,同时也会讨论虚拟内存管理中遇到的挑战和解决方案。
85 4
|
6月前
|
Python
Python中使用os库管理环境变量
在Python中,可以使用os库来管理操作系统的环境变量。通过os.environ对象,我们可以获取、修改和删除环境变量的值。
127 3
|
5月前
|
Windows 内存技术
nvm 管理和切换 node版本(windows操作系统)
nvm 管理和切换 node版本(windows操作系统)
90 0