Windows x64 Part 4: Code Trees, Drivers
This is the fourth part of a mini-series on Windows x64, focusing on behind the scene changes in the operating system. In the last article I wrote about the changes to the x86 processor architecture that make x64 possible. But there is of course more to a new platform than just updated hardware.
Beginning with Windows Server 2003, Microsoft makes their operating systems available both in x86 and x64 versions. It is important to note that both versions of a product share the same code base. For Microsoft, this is crucial because otherwise, patch management would become a nightmare. The same logic applies to the customer – who wants to wait longer for critical hotfixes just because the affected systems happen to be x64 machines?
While Windows Server 2008 is being released as 32- and 64-bit versions from the very beginning, the 64-bit version of its predecessor entered the market under the somewhat bulky name “Windows Server 2003 x64 Edition” after its 32-bit twin. To be exact, Windows Server 2003 x64 is based on the code tree segment of Windows Server 2003 Service Pack 1. Windows Server 2003 SP1, on the other hand, includes all fixes of Windows XP Service Pack 2. Since Windows XP x64 is also based on the Server 2003 code tree, it already includes XP SP2. Confused? I will try to sort it out.
When Microsoft started working on Windows x64 they had to choose a code tree to work from. Unfortunately, they had split client (XP) and server (2003) OS code trees earlier on when they moved from Windows 2000 to XP. By now they seem to have realized their mistake: beginning with Vista SP1 and Server 2008 the code trees have been merged again. But back in the old days, they decided to base the x64 versions of both Windows XP and Windows Server 2003 on the Server 2003 code tree. By the time Windows x64 was ready for market, the 2003 code tree had reached Service Pack 1. Now Microsoft did not want to call their brand new x64 edition “Service Pack 1”, so they just omitted the service pack part from the name.
To sum it up from a hotfix perspective:
- Windows XP x64 = Windows Server 2003 x64
- Windows Server 2003 x64 = Windows Server 2003 SP1
- Windows Server 2003 SP1 = Windows XP SP2
Therefore, Windows XP x64 = Windows XP SP2.
Although the following has nothing to do with 64-bit versions of Windows it fits in nicely here:
Windows Vista SP1 = Windows Server 2008
Interestingly enough, the RTM version of Server 2008 carries “Service Pack 1” in its version information string (try
winver). I wonder what the first service pack will be called. Service Pack 2?
Now let’s move on to some more technical aspects of the OS.
Everything comes at a price. Since Microsoft’s licenses allow you to use the x64 OS even if you have bought only the 32-bit version, there must be something else. There is: compatibility. No, not application compatibility. As we will see in the later parts of this series, Microsoft has gone to great lengths to ensure that 32-bit applications run flawlessly on Windows x64. The problem lies with the drivers.
Windows x64 can only load 64-bit drivers. This obviously affects all your hardware. You have to make sure every single device is supported, either by a driver included in Windows or by a vendor-supplied driver. Generally speaking, this is not an issue for servers. The larger vendors of server hardware have been providing x64 device drivers for their machines for years. But consumer hardware is another thing altogether. Writing device drivers is difficult. Writing drivers that compile as 32- and 64-bit versions even more so. With this in mind, it is not hard to understand why vendors of consumer hardware that have to live on a very tight margin do not bother with x64.
While only having to worry about device driver availability would be bad enough, there is more. Many software products rely on filter or other types of drivers that hook into the system and add or change functionality. Among the more popular are virus scanners, backup solutions, drive imaging programs and admin tools (like the great Process Monitor). When considering the move to Windows x64, be sure to check if all your programs support it!
Interestingly, printer drivers are affected too. I am talking about current version-3 drivers here that do not run in kernel mode. This may well prove to be the biggest caveat for many companies. Although it is technically possible and officially supported to access 32-bit print servers (that have 64-bit drivers installed) from x64 machines, I have heard rumors that even Microsoft recommends setting up dedicated 64-bit print servers for x64 machines. I am sure you can vividly imagine what that means to your organization: not only do you have to set up and maintain twice as many print servers, you also have to manage the network printer connections on all your clients in such a way that they point to the correct print servers.
With this, I will leave you to your thoughts. In the next article in will dive further into Windows x64, show how x86 applications are handled and explain what was deliberately left out.