主分区和扩展分区的差别在于主分区位于硬盘的最開始。MBR 扇区的位置。这个位置的数据在计算机启动时。会自己主动被 BIOS 读取而且运行,也就是说这个位置的分区表会自己主动被 BIOS 读取到内存里。这样 MBR 启动程序不须要运行什么操作就能直接获得主分区表信息。但由于 MBR 仅仅有 512 字节。分区表还要占用 4x16 字节,外加还有个 55AA 标志占用2字节,实际 MBR 能够放置能够运行的程序代码空间就仅仅有
446 字节了。这 446 字节限制写出来的程序体积太小而不足以实现某些功能,所以这个时候系统须要使用一些 BIOS 提供的系统操作实现简单的启动工作,这个简单的代价就是 446 字节的程序不能直接读取扩展分区里面的逻辑分区的数据而且启动系统,由于扩展分区的逻辑分区表在硬盘的后部,也就是数据区里面。位置不固定须要多次查找才干找到相应的分区位置。446 字节的程序根本没办法进行操作。
并且由于还没有能进入完整的系统,所以 BIOS 提供的功能尽管非常多,但仍然不够进行某些特殊操作的功能要求。
这就是为什么 Windows 就算你安装到扩展分区,他也会在 C 盘上放上非常多东西的原因。
由于 Windows 要求 C 盘必须是主分区才干启动系统。
Linux 的 GRUB 能够安装到扩展分区是由于他用了 MBR 的 446 字节后,MBR 之后的几个闲置扇区,大概有 8k 的容量继续放他的程序,这种设计使得体积限制得到了缓解。
这样他能够继续调用硬盘特定位置的程序代码继续启动而不一定非要主分区。
综上说的基础,主分区和扩展分区基本的差别就是启动系统的问题。BIOS 这个古老的硬件设计害死了不少程序猿的脑细胞。