操作系统中的引导块和坏块

2025 年 7 月 3 日 | 阅读 11 分钟

操作系统负责磁盘管理的几项其他功能,例如磁盘初始化、引导块或从磁盘启动以及坏块。引导块是硬盘、软盘、光盘或其他数据存储设备中的一个区域,包含由计算机系统内置固件加载到随机存取存储器 (RAM) 中的机器代码。

而坏块是计算机磁盘驱动器或闪存上的扇区,由于永久性损坏(例如磁盘表面物理损坏或闪存晶体管故障)而无法使用。

操作系统中的引导块是什么?

当计算机开始运行或重启以获取实例时,它需要一个初始程序来运行。这个初始程序被称为引导程序,它必须初始化系统的所有方面,例如

  • 首先,初始化 CPU 寄存器、设备控制器、主内存,然后启动操作系统。
  • 引导程序在磁盘上找到操作系统内核来完成其工作,然后将该内核加载到内存中。
  • 最后跳转到初始地址以开始操作系统执行。

引导程序存储在只读存储器 (ROM) 中。这个位置很方便,因为 ROM 不需要初始化,并且它位于一个固定位置,处理器在加电或复位时可以开始执行。由于 ROM 是只读存储器,它不能被计算机病毒感染。问题是更改此引导代码需要更改 ROM 和硬件芯片。这就是为什么系统在引导 ROM 中存储一个微小的引导加载程序,其工作是从磁盘加载完整的引导程序。

完整的引导程序可以轻松更改,并且新版本可以写入磁盘。完整的引导程序存储在磁盘固定位置的引导块中。具有引导分区的磁盘称为引导盘系统盘

在引导 ROM 中,代码指示磁盘控制器将引导块读入内存(此时未加载设备驱动程序),然后开始执行该代码。完整的引导程序比引导 ROM 中的引导加载程序更复杂,因为它可以从磁盘上的非固定位置加载整个操作系统并启动操作系统运行。

引导块的组成

引导块的关键要素如下

  • 主引导记录 (MBR):引导块、引导代码、分区表以及其他必要信息和指令都包含在主引导记录 (MBR) 中,它是存储设备的初始部分。主引导记录是计算机系统的重要组成部分,有助于确定哪个分区需要启动以及存储设备是如何设置的。
  • 引导加载程序:引导加载程序是一种计算机软件,负责启动系统并将操作系统放入主内存中。它执行启动过程所需的所有必要操作。
  • 引导代码:引导块的另一个关键部分是引导代码,通常称为引导程序代码。所有必要的指令都以低级语言(如机器语言或汇编语言)表示在引导程序代码中。配置系统组件、初始化硬件、将操作系统加载到主内存以及其他关键任务都由引导程序代码执行。
  • 分区表:引导块的另一个关键部分是分区表。实质上,它是一个数据表,包含有关各种数据存储设备分区的信息。它有助于定位磁盘的活动分区,操作系统应该加载到主内存中。

因此,引导块是存储设备的一小块区域,其中包含分区表、引导加载程序、引导代码和 MBR 等必要部分。它是操作系统加载和系统初始化所需的关键组件。

引导块如何工作?

让我们尝试使用 Windows 2000 中的引导过程示例来理解这一点。

Windows 2000 将其引导代码存储在硬盘的第一个扇区中。下图显示了 Windows 2000 中从磁盘引导的过程。

Boot Block and Bad Block in Operating System
  • 此外,Windows 2000 允许将硬盘划分为一个或多个分区。其中一个分区被标识为引导分区,其中包含操作系统和设备驱动程序。
  • 在 Windows 2000 中,引导通过运行放置在系统 ROM 内存中的代码开始。
  • 此代码允许系统直接从主引导记录或 MBR 读取代码。
  • MBR 还包含列出硬盘分区和指示系统从哪个分区引导的标志的表。
  • 一旦系统识别出引导分区,它就会从内存中读取第一个扇区,称为引导扇区。它继续执行引导过程的其余部分,其中包括加载各种系统服务。

操作系统中的坏块是什么?

坏块是存储介质中不再可靠用于存储和检索数据的区域,因为它已完全损坏或损坏。坏块也称为坏扇区

我们知道磁盘有移动部件且公差很小。它们容易发生故障。当故障完全发生时,需要更换磁盘,并将其内容从备份介质恢复到新磁盘。更常见的是,一个或多个扇区出现故障。

坏块的类型

操作系统中有两种类型的坏块,例如

Boot Block and Bad Block in Operating System
  1. 物理或 硬坏块: 它来自存储介质的损坏。物理坏块是指数据存储设备物理损坏(例如磨损、磁干扰、划痕等)时发生的那种。因为它​​是永久且不可修复的,所以这种坏块也称为“硬坏块”。因此,数据丢失可能是不可逆转的。
  2. 逻辑或 软坏块: 当操作系统无法从扇区读取数据时发生。由于文件系统故障或病毒感染等软件故障导致的一种坏块称为逻辑坏块。因为它可以使用软件工具修复,所以它通常被称为软坏块。
  3. 坏块不可读:不可读坏块是指由于数据损坏或其他问题导致其数据无法读取的坏块。当块不可读时,就会发生数据丢失。

例如,当特定存储块的循环冗余校验 (CRC) 或纠错码 (ECC) 与磁盘读取的数据不匹配时,就会发生这种情况。

如何处理坏块

处理存储设备中的故障块时需要考虑一些重要因素

  • 坏块识别:现代操作系统和存储介质中内置的错误修复工具能够自动检测和标记问题块。设备驱动程序或存储设备为此使用内置的错误报告功能。
  • 坏块映射:现代操作系统可以使用映射或表来跟踪问题扇区的位置。为了防止在读写请求期间使用故障块,操作系统利用这些坏块映射。

坏块的原因

存储驱动器在出厂时可能带有在制造过程中产生的缺陷块。带有坏块的设备在出厂前被标记为有缺陷。这些会重新映射到可用的额外存储单元。

设备的物理损坏也会导致坏块设备,因为操作系统无法从损坏的设备访问数据。笔记本电脑掉落、灰尘和自然磨损也会导致硬盘驱动器盘片损坏。

当内存晶体管发生故障时,会导致固态硬盘损坏。存储单元也可能随着时间的推移变得不可靠,因为 NAND 闪存单元中的基板在一定数量的编程-擦除周期后会变得不可用。

固态硬盘 (SSD) 上的擦除过程需要通过闪存卡进行多次充电。这会降级将浮栅晶体管与闪存硅基板分离的氧化层,并增加位错误率。驱动器的控制器可以使用错误检测和纠正机制来修复这些错误。但是,错误可能会在某个时候超出控制器纠正它们的能力,并且单元可能会变得不可靠。

软件问题导致软坏扇区。例如,如果计算机意外关机,硬盘驱动器也会在写入块的中间关闭。因此,该块可能包含与 CRC 检测错误代码不匹配的数据,然后它将被识别为坏扇区。

坏块如何工作

这些块的处理方式有很多种,但这取决于磁盘控制器。对于某些带有 IDE 控制器或简单磁盘的磁盘,坏块是手动处理的。

  1. 第一种策略是扫描磁盘以在格式化磁盘时查找坏块。任何发现的坏块都被标记为不可用,以便文件系统不分配它们。如果块在正常操作期间变坏,则必须手动运行特殊程序(Linux bad blocks 命令)以搜索坏块并将其停止。
  2. 更复杂的磁盘在坏块恢复方面更智能。控制器的工作是维护坏块列表。控制器形成的列表在工厂进行低级格式化期间初始化,并在磁盘的生命周期内更新。

低级格式化保留了操作系统不可见的备用扇区。最后,控制器将每个坏扇区逻辑地替换为备用扇区。这个过程也称为扇区备用和转发

示例

在操作系统中,典型的坏块事务遵循以下步骤

  • 假设操作系统想要读取逻辑块 80。
  • 现在,控制器将计算 EEC,并假设它发现该块是坏块,然后它向操作系统报告请求的块是坏块。
  • 无论何时系统下次重启,都会使用一个特殊命令,它会告诉控制器这个扇区要被备用扇区替换。
  • 将来,每当有块 80 的请求时,请求都会由控制器转换为替换扇区的地址。

坏块的替换

控制器的重定向可能会使操作系统磁盘调度算法的任何优化失效。为此,大多数磁盘格式化为在每个柱面和备用柱面中提供几个备用扇区。每当坏块重新映射时,控制器都会尽可能使用同一柱面中的备用扇区。否则,也使用备用柱面。

一些控制器使用备用扇区来替换坏块。还有另一种替换坏块的技术,即扇区滑动

例如,假设逻辑块 20 出现故障,并且第一个可用的备用扇区在扇区 200 之后。然后扇区滑动开始重新映射。所有从 20 到 200 的扇区都向下移动一个位置。扇区 200 被复制到备用扇区,然后扇区 199 被复制到 200,然后 198 被复制到 199,依此类推,直到扇区 21 被复制到扇区 22。通过这种方式,滑动扇区腾出了扇区 21 的空间,以便扇区 20 可以映射到它。

坏块的替换不是自动的,因为坏块中的数据通常会丢失。软错误会触发一个过程,其中制作块数据的副本,并且该块被备用或滑动。不可恢复的硬错误将丢失所有数据。无论哪个文件正在使用该块,都必须修复,这需要手动干预。

坏块的管理

修复受坏块影响的 HDD 文件的最佳方法是覆盖原始文件。这将导致硬盘重新映射坏块或修复数据。

坏块管理对于提高 NAND 闪存驱动器的可靠性和耐用性至关重要。所有更改都必须写入新块,并且原始块中的数据必须标记为删除。

  • 一旦闪存驱动器填满,控制器必须在写入新数据之前开始清除标记为删除的块。之后,它通过将好数据复制到新块来整合好数据。此过程需要额外的写入来整合好数据,并导致写入放大,其中实际写入次数超过请求次数。写入放大可能会降低闪存驱动器的性能和寿命。
  • 闪存供应商使用许多技术来控制写入放大。其中一种称为垃圾回收,涉及通过释放以前写入的块来主动整合数据。这些重新分配的扇区可以减少每次写入操作擦除整个数据块的需要。
  • 供应商还使用数据缩减技术,例如压缩重复数据删除,以最大程度地减少驱动器上写入和擦除的数据量。此外,SSD 的接口可以帮助减少写入放大。Serial ATA 的 TRIM 和 SAS 的 UNMAP 命令识别不再使用的可擦除数据块。这种方法最大限度地减少了垃圾回收,并释放了驱动器上的空间,从而提高了性能。

操作系统的引导块和坏块的区别

引导块坏块
系统开始执行所需的最可靠数据存储在引导块中。介质的此部分不再可靠用于存储或检索数据。
它划定了一个特定区域,通常是存储介质第一个扇区的第一个块。它可以在存储介质上的任何位置找到;它没有固定的位置。

总结

从上面的描述可以看出,引导块是存储设备上的初始块,它包含启动系统引导过程所需的所有数据和指令,而坏块是存储设备上无法用于存储数据的损坏块。

常见问题

描述引导块。

引导块是硬盘、软盘、光盘或其他数据存储设备的一部分,其中包含计算机系统固件将加载到随机存取存储器 (RAM) 中的机器代码。

解释什么是坏块?

坏块是闪存或磁盘驱动器的一部分,由于不可逆转的损坏(例如闪存晶体管故障或磁盘表面物理损坏)而无法使用。

引导块有什么用?

计算机开机或重启时必须运行一个初始程序。这个引导程序看起来很简单。要启动操作系统,它会在磁盘上找到操作系统,将内核加载到内存中,然后跳转到第一个地址。

坏块有哪几种?

存在两种坏块。有两种类型的坏块:逻辑或软坏块以及物理或硬坏块。

坏块的功能是什么?

用户可以使用坏块软件检查设备是否存在问题扇区或块。该设备,由 /dev/sdc 等文件表示,可能是外部磁盘驱动器或硬盘驱动器。