魔數(shù)是什么嚷兔?
魔數(shù)森渐,magic number,這真是讓人迷惑不解谴垫,什么樣的數(shù)字是魔數(shù)呢章母?魔數(shù)又是什么意思呢母蛛?哈哈翩剪,其實魔數(shù)的本意就是讓人感到迷惑的數(shù),看到某個數(shù)彩郊,不知道其代表何意前弯,用東北話說蚪缀,都蒙圈了。
魔數(shù)恕出,其實也稱為神奇數(shù)字询枚,我們大多數(shù)人是在學(xué)習(xí)計算機過程中接觸到這個詞的。它被用來為重要的數(shù)據(jù)定義標(biāo)簽浙巫,用獨特的數(shù)字唯-地標(biāo)識該數(shù)據(jù)金蜀,這種獨特的數(shù)字是只有少數(shù)人才能掌握其奧秘的“神秘力量”。
故的畴,直接出現(xiàn)的一個數(shù)字渊抄,只要其意義不明確,感覺很詭異丧裁,就稱之為魔數(shù)护桦。魔數(shù)應(yīng)用的地方太多了,如elf 文件頭煎娇。
ELF Header :
Magic : 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
這個Magic 后面的一長串就是魔數(shù)二庵, elf 解析器(通常是程序加載器)用它來校驗文件的類型是否是elf。
主引導(dǎo)記錄最后的兩個字節(jié)的內(nèi)容是0x55, 0xaa缓呛,這表明這個扇區(qū)里面有可加載的程序催享, BIOS 就用它來校驗該扇區(qū)是否可引導(dǎo)。
有人說只要為這些數(shù)字賦予實際的意義不就行了嗎哟绊。其實睡陪,無論怎么給這組陌生的數(shù)字賦予名稱,它都不像熟悉的出生日期那樣直觀易懂(如對于19590318匿情,不解釋大家也會知道0318 是3 月18 日)兰迫,反而還要額外增加一些內(nèi)容來解釋,得不償失炬称,所以這就是魔數(shù)不得不存在的原因汁果。
我們知道,一個硬盤上可以有很多分區(qū)玲躯,每個分區(qū)的格式又可以不同据德。就拿Linux 來說,既能識別ext3,又能識別ext4 跷车〖可能有同學(xué)會說,這兩個分區(qū)的文件系統(tǒng)都是Linux 自己專用的朽缴,當(dāng)然認(rèn)得自己的東西了善玫。
可是自己的東西也得有個辨別的地方,否則憑什么說“認(rèn)得”呢密强。
其實這是魔數(shù)的作用茅郎,文件系統(tǒng)也有自己的魔數(shù)蜗元,魔數(shù)的神秘力量在此施展了。各分區(qū)都有超級塊系冗,一般位于本分區(qū)的第2 個扇區(qū)奕扣,比如若各分區(qū)的扇區(qū)以0 開始索引,其第1 個扇區(qū)便是超級塊的起始扇區(qū)掌敬。超級塊里面記錄了此分區(qū)的信息惯豆,其中就有文件系統(tǒng)的魔數(shù), 一種文件系統(tǒng)對應(yīng)一個魔數(shù)奔害,比對此值便知道文件系統(tǒng)類型了循帐。