在使用32位系统驱动和64位系统驱动时,最显着的一点区别就是系统架构不同。32位系统在设计时采用了32位地址总线,最大可以寻址4GB的内存空间,而64位系统则拥有更广阔的内存寻址能力。它可以支持的最大内存数量远高于32位系统,达到数十TB级别。对于系统内存的寻址能力,自然而然地影响了对应的设备驱动系统设计。
为了适应不同架构系统的需要,针对驱动开发设计时也是两个版本不同的。因为64位系统需要适配更广阔的内存空间,所以其驱动程序会相对更多的内存寻址。在设计上也采用了更健壮的内存管理技术。而32位驱动则相对简单一些。
为了更好地匹配64位的硬件环境,64位系统设计时采用了另外一个新的内存寻址方法。原先32位驱动普遍采用的32位地址来寻址,而64位系统则针对大于4GB以上内存的标志位进行变更,转化为一种成为线性地址(Linear Address)的内存寻址方式。由此,驱动的功能实现上区别将变得更为显著。
在64位驱动设计时,为了保证驱动的稳定性,很多开发者会在程序中预留大量的内存供系统灵活运用。这是因为当驱动程序出现问题时,如果硬件没有相应的内存保护措施,就有可能导致系统的奔溃和严重数据丢失的情况发生。而在64位驱动的设计上,内存寻址的特性时限制相对稳定,驱动程序的设计也更为注重系统的稳定性。
对于32位驱动和64位驱动的兼容性,二者彼此之间并不完全兼容。实际上,32位驱动是可以安装在64位系统下的,而64位驱动却不能安装在32位系统上。在安装驱动时,32位驱动只能在32位系统下运行,而64位驱动通常也需要一个64位系统匹配的环境。