MZ是谁?为什么EXE/DLL一类的文件,总是以它开头?



前言


MZ是谁?为什么EXE/DLL一类的文件,总是以它开头?

魔数,对于大部分人都是魔法!
在编程的世界里,有很多很神奇的数字,比如PE的23117(0x5A4D),除法中的1717986918.4(0x66666667)等,很多业内人士叫他们魔数 。之所以叫魔数,是因为这些数字的确像有魔法一样,在一些算法和校验领域,发挥着至关重要的作用,却又不可言说 。
魔数因其难以理解的作用和高效,常被程序员用于标榜和巩固自己在项目甚至单位中的地位 。传说中的祖先代码里,便充斥着各种魔数,在与老板斗智斗勇的故事里,常常扮演着崖洞秘诀的角色 。
其实很多时候 , 魔数的本质是代码优化的结果,一定程度上能够代表技术的段位 。但也不乏一些伟大的程序员,在自己的作品中标上『谁谁谁到此一游』或『谁谁谁乃XXX之父』的畅快 。
比如著名的ZIP压缩格式 , 就是由Phil Katz创建,其格式签名符"PK"即为该作者名字的缩写 。那本文要讲的“MZ”其实也一样,是另一个伟大程序员的名字,他就是Mark Zbikowski,让我们一起来围观背后的故事吧 。

一、系统和应用程序都是由可执行文件构建起来的


MZ是谁?为什么EXE/DLL一类的文件,总是以它开头?

没有EXE,双击个什么鬼?
1、双击运行,对于每一个使用 PC的人来说,都已经形成了肌肉记忆 。对于非编程的普通用户而言,可执行文件和非可执行文件,并没有什么区别,也不需要关心他们之间的区别 。但对编程用户而言,可执行文件才是眼里的光 。
还记得《》和《WPS二次开发逻辑,及其版本选择》中曾提到的安装选项么?安了WPS后,WPS就接管了Office,成为默认打开程序 。很多用户对此大为困惑,以为WPS与Office不兼容,只能二选一 。其实,就是覆盖了相关关联设置而已 。
因为,利用注册表,就可以将文件扩展名与指定应用程序关联 。普通用户在非可执行文件上双击 , 就会自动关联到可执行文件,并启用其载入打开相应的文件 。关注BtOfficer , 来一键兼容,既能Office,也能WPS,VB/VBA可以通吃啦 。
所以,无论是否为程序员 , 其实利用计算机工作,实质上都是依靠可执行文件,提供的交互功能来进行的 。
MZ是谁?为什么EXE/DLL一类的文件,总是以它开头?

记事本能开万物,EXE必以MZ开头
2、双击后,系统是怎么知道指定的文件可以装载运行呢?这就需要到可执行文件内部去看看了,怎么看呢?在Windows系统中,记事本作为一款纯文本编辑器,虽然没啥卵用,但能打开任何格式的文件 。正因为如此 , 历代Windows中,记事本的地位雷打不动 。
用记事本打开任何一个可执行文件(不仅exe,dll、ocx、sys等扩展名对应的都是可执行文件 , 都遵循PE格式),我们看到前两个字符都是"MZ" 。系统便可以通过该特征来初步判断文件是否为1个可执行文件 。
"MZ"(23117或0x5A4D)便是被称为可执行文件的MagicNumber,也即魔数 。

二、MZ何许人也?难道比盖茨还能耐?为何独占可执行文件中的前两字节?

【MZ是谁?为什么EXE/DLL一类的文件,总是以它开头?】既然可执行文件是系统的重要组成,那就不得不回到系统的历史上来,尤其是Windows这种以兼容著称的通用系统 。在《VB前传,从教学到游戏 , 再到系统,似乎每步都是精心设计》中,重提那段被尘封的历史 , 有BASIC,更有DOS系统 。
"MZ"这个魔数便是PE之DOS_HEADER的首成员 , 与DOS系统兼容密切相关 。在DOS系统十多年的历史上,有两位突出的贡献者,MZ便是其中之一 。
MZ是谁?为什么EXE/DLL一类的文件,总是以它开头?

Tim Paterson,初代DOS的缔造者!
说起DOS,就不得不说另一位开创人,Tim Paterson,就图上这位 。
MZ是谁?为什么EXE/DLL一类的文件,总是以它开头?

Tim Paterson的历史地位
Tim Paterson不仅奠定了MSDOS的初始模样,更主要的贡献是为微软榜上IBM这颗大树提供了物件基础 。
MZ是谁?为什么EXE/DLL一类的文件,总是以它开头?

唯有左边这位的大名 , 配得上在Win里无处不在!
真正让DOS走向成熟和强大的,让微软走上PC系统霸主的,正是图上左边的这位 。他便是Mark Zbikowski(MZ),一个真正低调的王者 , 低调到甚至都搜索不到他更多的照片,他的名号却在PC中无处不在 。
MZ , 于1981年加入微软,是微软第55号员工 。与鲍尔默是老相识,在哈弗与盖茨是同学 。在1982年 , 便取代Tim Paterson,成为MSDOS2.0-4.0的开发经理 。在微软和IBM的合作时期起到过重要作用 。
MZ , 主要技术贡献:参与并主导了DOS分级文件系统OS/2可安装文件系统的开发,主导了Cairo及OFS文件系统的开发,其中很多模块在Windows 2000和其他产品中得到保留 。他更是Windows NT内核的开发成员之一,还主导开发了NTFS
2006年6月,MZ从微软退休,是除创办人盖茨和鲍尔默外首个服务满25年的员工 。对微软有如此重要的贡献,当然值得放在首位予以纪念!
欢迎关注BtOfficer,让我们一起挖掘更多有有意思的技术内幕!

相关经验推荐