7.2Windows克服了CPU以外的硬件差异
计算机的硬件并不仅仅是由CPU构成的,还包括用于存储程序指令和数据的内存,以及通过1/O连接的键盘、显示器、硬盘、打印机等外围设备。而计算机是如何控制这些外围设备的呢?这和计算机的机型有着很大的关系。Windows操作系统对克服这些硬件构成的差异做出了很大贡献。在20年前的MS-DOS时代,日本国内市场上有NEC的PC-9801、富士通的FMR、东芝的Dynabook等各种机型的计算机。Windows3.0及3.1问世前后,AT兼容机开始普及,并开始同PC-9801争夺市场份额。
MS-DOS(Microsoft Disk Operating System)是20世纪80年代普遍使用的计算机操作系统。
这些机型虽然都搭载了486及 Pentiunm等x86系列的CPU,不过内存和IO地址的构成等都是不同的,因此每个机型都需要有专门的MS-DOS应用。x86提供有专门用来同外围设备进行输入输出的/O地址空间(1/O地址分配)。至于各外围设备会分配到什么样的地址,则要由计算机的机型来定。
例如,如果想使用当时大热的文字处理软件——JustSystem的“一太郎”的话,就必须要买各个机型专用的一太郎软件(图7-3(a))。
这是因为,应用软件的功能中,存在着直接操作计算机硬件的部分。而这又是为什么呢?原因主要有两点,一是当时MS-DOS的功能尚不完善,二是为了提高程序的运行速度。
不过,随着Windows的广泛使用,这样的局面也得到了大幅改善。因为只要Windows能正常运行,同样的应用(本地代码)在任何机型上都是可以运行的(图7-3(b))。
在Windows的应用软件中,键盘输入、显示器输出等并不是直接向硬件发送指令,而是通过向Windows发送指令来间接实现的。因此,程序员就不用注意内存和1/O地址的不同构成了。因为Windows操作的是硬件而非应用软件,而且针对不同的机型,这些硬件的构成也是有差异的(图7-4)。
不过,Windows本身则需要为不同的机型分别提供专用的版本,比如用于AT兼容机的Windows、用于PC-9081的Windows等。而即便是Windows,也依然无法吸收CPU类型的差异。这是因为,市面上销售的Windows应用软件,都是用特定的CPU的本地代码来完成的。