MSDOS(MBR) 磁盘分区表
开机管理程序纪录区与分区表则通通放在磁盘的第一个扇区,这个扇区通常是 512Bytes 的大小,所以说,第一个扇区 512Bytes 会有这两个数据:
- 主要开机记录区(Master Boot Record, MBR):可以安装开机管理程序的地方,有446Bytes
- 分区表(partition table):记录整颗硬盘分区的状态,有64 Bytes
由于分区表所在区块仅有64 Bytes容量,因此最多仅能有四组记录区,每组记录区记录了该区段的启始与结束的柱面号码。这四个分区的记录被称为
主要(Primary)或延伸(Extended)分区
注
- 其实所谓的“分区”只是针对那个64 Bytes的分区表进行设置而已!
- 分区的最小单位“通常”为柱面(cylinder)
- 当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分区进行数据的处理
如果想要更多分区就要采用延伸分区。延伸分区的实质是使用额外的扇区来记录分区信息,延伸分区本身并不能被拿来格式化。 然后我们可以通过延伸分区所指向的那个区块继续作分区的记录。
GUID partition table, GPT 磁盘分区表
因为过去一个扇区大小是 512Bytes 而已,为了相容于所有的磁盘,因此在扇区的定义上面, 大多会使用所谓的逻辑区块位址(Logical BlockAddress, LBA)来处理。GPT 将磁盘所有区块以此 LBA(默认为 512Bytes 喔!) 来规划,而第一个 LBA 称为 LBA0 (从 0 开始编号)。
与 MBR 仅使用第一个 512Bytes 区块来纪录不同, GPT 使用了 34 个 LBA 区块来纪录分区信息!同时与过去 MBR 仅有一个区块的情况不同, GPT 除了前面 34 个LBA 之外,整个磁盘的最后 33 个 LBA 也拿来作为另一个备份!结构如下:
- LBA0 (MBR 相容区块)
与 MBR 模式相似的,这个相容区块也分为两个部份,一个就是跟之前 446 Bytes 相似的区块,储存了第一阶段的开机管理程序! 而在原本的分区表的纪录区内,这个相容模式仅放入一个特殊标志的分区,用来表示此磁盘为 GPT 格式之意。而不懂 GPT 分区表的磁盘管理程序, 就不会认识这颗磁盘,除非用户有特别要求要处理这颗磁盘,否则该管理软件不能修改此分区信息,进一步保护了此磁盘. - LBA1 (GPT 表头纪录)
这个部份纪录了分区表本身的位置与大小,同时纪录了备份用的 GPT 分区 (就是前面谈到的在最后 34 个 LBA 区块)放置的位置, 同时放置了分区表的检验机制码(CRC32),操作系统可以根据这个检验码来判断 GPT 是否正确。若有错误,还可以通过这个纪录区来取得备份的 GPT(磁盘最后的那个备份区块)来恢复 GPT 的正常运行! - LBA2-33 (实际纪录分区信息处)
从 LBA2 区块开始,每个 LBA 都可以纪录 4 笔分区纪录,所以在默认的情况下,总共可以有 4 * 32 = 128 笔分区纪录!因为每个 LBA 有 512Bytes,因此每笔纪录用到 128Bytes 的空间,除了每笔纪录所需要的识别码与相关的纪录之外,GPT 在每笔纪录中分别提供了 64bits 来记载开始/结束的扇区号码,因此,GPT 分区表对于单一分区来说,他的最大容量限制就会在“ 2 * 64 * 512Bytes = 2 * 63 *1KBytes = 233TB = 8 ZB ”,要注意 1ZB = 230TB !
注
GPT 分区已经没有所谓的主、延伸、逻辑分区的概念,既然每笔纪录都可以独立存在, 当然每个都可以视为是主分区!每一个分区都可以拿来格式化使用!
CMOS
CMOS芯片主要的功能为记录主板上面的重要参数, 包括系统时间、CPU电压与频率、各项设备的I/O位址与IRQ等,由于这些数据的记录要花费电力,因此主板上面才有电池。
BIOS
BIOS(Basic Input Output System)是一套程序,这套程序是写死到主板上面的一个内存芯片中, 这个内存芯片在没有通电时也能够将数据记录下来,那就是只读存储器(Read Only Memory, ROM),ROM是一种非挥发性的内存。
BIOS虽然对于我们日常操作电脑系统没有什么太大的关系,但是他却控制着开机时各项硬件参数的取得、系统硬件的详细信息与开机设备的选择等重要信息。
BIOS在开机的时候执行,以载入CMOS当中的参数, 并尝试调用储存设备中的开机程序,进一步进入操作系统当中。BIOS程序也可以修改CMOS中的数据。