笔者在学习操作系统时接触到了这个专业词,简单记录一下。
定义
魔数 (magic number):它被用来为重要的数据定义标签,用独特的数字唯 地标识该数据,这种独特的数字是只有少数人才能掌握其奥秘的"神秘力量"。
举个生动的例子:就像小姑娘对着小伙子伸出大拇指和食指,小伙子马上就意会了,这是让我晚上 点在村口东边老槐树下见。
简单来说,就是懂得人马上就意会其中的含义,不了解的人对次感到迷惑。
应用
魔数的应用场景比较多 ~
例如:
- elf文件头
ELF Header
Magic : 7f 45 4c 4 6 01 01 01 00 00 00 00 00 00 00 00 00
这个 Magic 后面的 长串就是魔数, elf 解析器(通常是程序加载器)用它来校验文件的类型是否是 elf。
- 扇区是否可引导
主引导记录最后的两个字节的内容是 0x55, 0xaa,这表明这个扇区里面有可加载的程序, BIOS 就用它来校验该扇区是否可引导.
- OS识别文件系统
一个硬盘上可以有很多分区,每个分区的格式又可以不同。
对于Linux系统而言,既可以识别ext3,又可识别ext4。
原因在于文件系统有自己的魔数。各分区都有超级块, 一般位于本分区的第 2 个扇区。超级块里面记录了此分区的信息,其中就有文件系统的魔数,1 种文件系统对应 1个魔数,比对此值便知道文件系统类型了
参考资料:
- 《操作系统真象还原》