天天看點

Apple分區總體布局結構

概述

蘋果機使用基于它自己硬體平台的作業系統,是一種基于Unix核心的作業系統,目前的版本為Mac OS X。同時,蘋果機所使用的Apple分區體系也與衆不同,它與DOS分區體系相比要簡單得多。Apple分區體系廣泛應用于蘋果機、iPod及用來傳遞檔案的Mac磁盤鏡象檔案(Mac磁盤鏡象檔案類似于Windows下的zip或者是Unix下tar壓縮檔案, 被傳遞的檔案儲存在鏡象檔案中的檔案系統中,而這個檔案系統則需要存在于一個分區中) 。在Apple分區體系中,分區表不隻描述檔案系統分區,對分區表本身所處的區域也使用一個分區表項進行描述,甚至磁盤中的空閑空間也會有分區表項對其進行描述。

在Apple磁盤中,并不是所有的分區都是有檔案系統的。隻有用于存儲使用者資料的分區才會建立相應的檔案系統。蘋果機使用單獨的區域存放硬體驅動,這部分區域不會建立檔案系統,但會在分區表中對其位置及大小進行描述。

由于Apple的構造不同,Apple磁盤沒有MBR磁盤中所特有的主引導記錄,是以它的0号扇區隻用于記錄磁盤的一些基本資訊。圖2.23為一個Apple磁盤的0号扇區(為節省篇幅,隻顯示了該扇區的前面部分,後面全部為0的部分省略)。

圖2.23  Apple磁盤的0号扇區

可以看到,Apple磁盤的0号扇區隻有很少的内容,圖2.23中加亮部分含義如下:

1)    0x00~0x01:2個位元組,這兩個位元組一定為0x4552(ER)。

2)    0x02~0x03:2個位元組,每扇區位元組數,一般為512。

3)    0x04~0x07:4個位元組,本磁盤扇區數。

下面給出其資料結構定義,有興趣的讀者可以自行研究。

Struct Block0{

Uint16 sbSig;         //辨別0X4552

Uint16 sbBlkSize;     //扇區(邏輯塊)大小0200即512位元組

Uint32 sbBlkCount;    //扇區數00008200即33280個扇區

Uint16 sbDevType;

Uint16 sbDevID;

Uint32 sbData;

Uint16 sbDrvrCount;

Uint32 ddBlock;

Uint16 ddSize;

Uint16 ddType;

Uint16 ddPad[134];

};

typedef struct Block() Block0;

Apple磁盤也不象MBR磁盤那樣在引導扇區中建立分區表,而是單獨使用一部分扇區存儲分區表項(通常起始于整個磁盤的第二個扇區),而且這個分區表區域也有一個分區表項指向它,描述它的起始位置及大小資訊,是以我們也可以把分區表區域稱為“分區表分區”。 

提示:Apple分區體系沒有分區數量限制,它的分區表可以描述任意個分區。

一個Apple磁盤的總體布局大緻如圖2.24所示。

圖2.24  Apple磁盤總體布局

可以看到,在Apple磁盤内,除0号扇區外,其他所有的區域都有分區表項指向它,包括分區表分區本身以及磁盤尾部的空閑空間。

本文轉自老骥伏枥51CTO部落格,原文連結: http://blog.51cto.com/sjhfml/129119,如需轉載請自行聯系原作者

繼續閱讀