What support for 64-bit Windows does the MKS Toolkit product line contain?
MKS has two different solutions for the 64-bit Windows operating system.
MKS Toolkit 8.7 Patch 4 fully supports x64 Windows XP and Windows 2003 and Itanium versions of Windows 2003.
- A 32-bit suite of MKS Toolkit commands and utilities which is 64-bit file aware and contains a 64-bit
xterm, etc. all support running 64 or 32-bit applications on 64-bit Windows.
- MKS Toolkit for Enterprise Developers 64-bit Edition.
Is anything missing from the 64-bit development environments?
The initial release of Toolkit for Enterprise Developers does not support the Hummingbird OpenGL Development Kit add-on or FORTRAN.
Is there a functional
rlogin service on 64-bit Windows?
Yes. All MKS Toolkit v8.7 Patch 4 (and above) variants support both Win32 and Win64 executables.
Does MKS support Win9x/Me as a development platform with MKS Toolkit for Enterprise Developers 64-bit Edition?
Since the Microsoft Platform SDK will not install or run on Win9x/Me, MKS Toolkit for Enterprise Developers 64-bit Edition will not support those platforms for development.
Which 64-bit Windows platforms are supported?
With the v8.7 patch 4 release (April 2005), Windows XP x64 Edition, Windows Server 2003 x64 Edition and Windows Server 2003 for Itanium.
As new versions of Windows are released, they will be validated and supported as appropriate by the next current version of the MKS Toolkit product line.
Why do I need to move to 64-bit Windows?
Performance and scalability and the ability to handle large scale memory intensive applications are some of the many benefits of 64-bit computing. Here are a few articles and resources from some of the leading hardware and software vendors which outline these facts:
Microsoft Press Release — With 64-bit computing, customers see significant performance and scalability gains in applications that require large amounts of memory or intensive numeric calculations. For server applications, this includes database servers, Terminal Server deployments, business applications and technical computing. Desktop applications include digital content creation, computer-aided design/manufacturing, and professional video editing.
Microsoft Article — "Benefits of 64-Bit Computing" — For workloads that are memory-intensive or compute-intensive, the performance and scalability benefits are often dramatic. Large data sets can be loaded entirely into memory, reducing the need for slower disk access; complex calculations that take hours to complete on 32-bit systems can be done in minutes; workloads that once required large server farms can be deployed on a single server.
Industry Article — "The Need for 64-bit Operating Systems — While some 64-bit machines can process both 64-bit and 32-bit instructions, and translators exist to convert 32-bit programs to slow but functional 64-bit programs, a 64-bit machine needs a 64-bit operating system and 64-bit applications to deliver optimum results. 64-bit operating systems run only on 64-bit machines. Therefore, it is preferable that all parts of the technology should emerge at the same time so that one doesn’t act as a drag on the other.
Sun gives this analogy to explain the difference between a 32-bit operating environment and a 64-bit operating environment: A 32-bit addressing space can keep track of the name and address of every person who has lived in the United States since 1997, a 64-bit addressing space can keep track of the name and address of every person who has ever lived in the world, from the beginning of time. The capability to accommodate huge quantities of memory, combined with far greater efficiency at managing high-bandwidth I/O, gives 64-bit systems scalability advantages that 32-bit technology can’t match.
AMD FAQ — What applications benefit from 64-bit computing?
A large number of applications and usage scenarios are likely to benefit from an AMD64 environment over a legacy x86 or proprietary 64-bit environment. Applications that do not benefit do not need to be ported, and will run at full performance in an AMD64 environment. AMD64 is most likely to benefit applications that:
- Need large memory addressing, such as those with large datasets (financial and scientific modeling applications) and host-based desktop applications (to run multiple instances simultaneously without reducing performance).
- Must manage a large number of concurrent users or application threads, such as large scale thin-client solutions, large databases and data warehouse applications for solutions in customer relationship management (CRM), supply chain management (SCM), enterprise resource planning (ERP), and digital rights management (DRM) systems.
- Provide digital content creation capabilities in such applications as computer-aided design, manufacturing, and engineering (CAD, CAM, and CAE), digital music production and video editing, and real-time media streaming solutions.
- Require mathematical precision and floating-point performance including modeling, simulation, statistics and financial analysis, imaging/video/signal processing, physics, medical research, telecommunications, encryption, and compression.
- Require large, high-performance database performance including decision support, searching and indexing, document and content management, and voice recognition.
Microsoft TechNet Article — "64-bit Windows - Should You be Considering a Move to 64-bit?"
Does MKS produce a 64-bit version of the MKS Toolkit for Enterprise Developers?
Yes, MKS Toolkit for Enterprise Developers 64-bit Edition is the product which will allow you to migrate 32-bit and 64-bit UNIX/Linux applications to the 64-bit Windows platforms.
The 8.7 Patch 4 version of this product currently supports Microsoft Windows XP, Windows XP 64-bit Edition, Windows Server 2003, and Windows Server 2003 64-bit Edition for both IA64 and Extended Architecture platforms.
If I own MKS Toolkit for Enterprise Developers can I port 64-bit UNIX applications for deployment on 64-bit Windows?
In order to port 64-bit UNIX applications to Windows you will require MKS Toolkit for Enterprise Developers 64-bit Edition which is a separate product from MKS Toolkit for Enterprise Developers.
If I own MKS Toolkit for Enterprise Developers can I port 32-bit UNIX applications for deployment on 64-bit Windows?
Yes, your ported 32-bit UNIX applications will install and run on 64-bit Windows systems as 32-bit applications.
Is an update to MKS Toolkit for Enterprise Developers 64-bit Edition covered under my existing PCS contract?
MKS Toolkit for Enterprise Developers 64-bit Edition is a separate product from MKS Toolkit for Enterprise Developers and therefore not covered under an existing PCS contract.
If I buy MKS Toolkit for Enterprise Developers 64-bit Edition can I then port 32-bit UNIX applications to either Win32 or Win64 (as well as 64-bit UNIX applications to Win64)?
If you get the 32-bit SDK Add-on to MKS Toolkit for Enterprise Developers 64-bit Edition you can then port both 32-bit and 64-bit UNIX applications to Windows. If you already own MKS Toolkit for Enterprise Developers and then buy MKS Toolkit for Enterprise Developers 64-bit Edition, you will also be able to port all manner of UNIX applications. The 32-bit SDK Add-on is equivalent to having both products installed on a single development machine.
Can I port 64-bit UNIX applications from a 32-bit Windows machine (and vice versa)?
You can install and use MKS Toolkit for Enterprise Developers or MKS Toolkit for Enterprise Developers 64-bit Edition on either a 32-bit Windows system or a 64-bit Windows system to migrate your UNIX applications. Testing of your application should be done on a 64-bit Windows machine however.
If you would like your resulting applications and binaries to be 64-bit and hence deployable on 64-bit Windows systems, you need to use MKS Toolkit for Enterprise Developers 64-bit Edition.
If you would like your resulting applications and binaries to be 32-bit and hence deployable on either 32-bit or 64-bit Windows systems, you would use MKS Toolkit for Enterprise Developers.
Finally, if you would like both a 32-bit and a 64-bit version of your UNIX application, you would use MKS Toolkit for Enterprise Developers 64-bit Edition with the 32-bit SDK Add-on.
Can I install MKS Toolkit for Enterprise Developers and MKS Toolkit for Enterprise Developers 64-bit Edition on the same machine?
While technically you can install both products on the same machine, you will require a special installation key to do so. Further, the runtime components needed to deploy your application are licensed separately for Win32 and Win64 platforms. Be sure to fully discuss your situation with your MKS Regional Sales Manager to insure that the software you are licensed to use and distribute suits your needs.
What MKS Toolkit utilities are native 64-bit executables?
The shell (
bash), the NuTCRACKER Platform and pieces of the connectivity suite needed to ensure proper operation of 64-bit native binaries run from
xterm. The remaining utilities are 32-bit but are 64-bit aware.
Can I access files larger than 2G with MKS Toolkit tools and utilities?
Windows NT/2K/XP with NTFS or Windows 9x/Me with FAT32 allow files larger than 2G (FAT32 imposes a file size restriction of 4G (32-bit unsigned offsets) while NTFS has a 16 exabyte size restriction (64-bit unsigned offsets)). MKS Toolkit commands and utilities are 64-bit file offset aware on both 32 and 64-bit Windows.
Can I port a 64-bit UNIX application to 64-bit Windows unchanged?
Yes. One of the attractive features of the MKS Toolkit for Enterprise Developers is that very little (and often no) source code changes are needed when migrating to Windows. This remains true for 64-bit to 64-bit migration. Any application which is 64-bit clean will port virtually unmodified. However, source which is not 64-bit clean will need to be made 64-bit clean before porting with MKS Toolkit for Enterprise Developers 64-bit Edition.
What Data Model changes are needed to port to 64-bit Windows (What is meant by 64-bit clean?)
Consider this example:
char *aa = "Hello";
int bb = aa;
Now this is not very good code, but assignments of pointers to integers is probably riddled though-out legacy UNIX code. The size of an integer in a 64-bit environment is 32-bits. So this assignment will only function if the pointer happens to reside below the 32-bit boundary. A 64-bit clean source tree will use
uintptr_t for all types that are to be assigned a pointer value. MKS Toolkit for Enterprise Developers 64-bit Edition (TKEDEV64) will ensure that these types are correct for both 32 and 64-bit environments.
There is, however, a small fly in the ointment. Win64 defines the size of long to be 32-bits while most 64-bit UNIX implementations define it as 64-bits. Thus source that uses long and expects it to be able to assign pointers to the long values would be broken. Thus MKS Toolkit ships with a utility called clean64 which will parse all source code and convert long to
intptr_t and unsigned long to
uintptr_t. This is entirely portable to UNIX and will ensure compatibility between UNIX 64-bit ports and TKEDEV64.
There are other integer and pointer issues. Consider:
char *aa = "hello";
%x expects an integer, the result will be truncated to 32-bits. The correct "
%p" should be used to be 64-bit clean.
It is also a good practice to correctly include headers. For example,
malloc() will be assumed to return
int without the inclusion of
malloc.h and in a 64-bit environment
pointer can easily exceed the size of an
int. MKS provides some help in this area by optionally forcing
malloc() to always return pointers about the 4G boundary during the early stages of your port.
Data structure sizes might be different between a 32-bit and a 64-bit version of a product. In particular 8 byte alignment of structures in memory is often required. To make the source 64-bit clean, the size would have to be normalized – if shared across the network or perhaps in a file. More information can be found at the following location: http://unix.org/version2/whatsnew/login_64bit.html.
The Microsoft compiler is quite helpful in tracking down any 32/64-bit assignments.
May I mix Win64 native code and UNIX ported 64-bit code?
Absolutely. The process is identical to the current MKS Toolkit 32-bit editions for mixing Win32 with UNIX ported code, widened to 64-bits. But caution is needed in dealing with
long values are the sizes of
long on UNIX and Win64 are different.
May I mix Win32 native code and UNIX ported 64-bit code?
Microsoft has not permitted the 64 to 32-bit thunking mechanisms needed to permit this within a single executable. Thus all link libraries must be native 64-bit libraries either ported with MKS Toolkit for Enterprise Developers 64-bit Edition or with the Win64 SDK. Of course standard IPC mechanisms exist to have a 64-bit executable communicate with a 32-bit one.
I have never ported my 32-bit UNIX code to a 64-bit platform before. Will this make the porting job more complex?
There is really no reason why you need to first port to a 64-bit UNIX platform; you can do both the Win64 and the 64-bit clean porting in one step. The Microsoft 64-bit compiler has some specific warnings to help you track down pointer truncation issues. It will be slightly more work than starting from 64-bit clean code.
MKS Toolkit v8.7 Patch 4 provides
gcc support. Does that support extend to 64-bit?
At this time the current version of
gcc does not provide object file support for 64-bit Windows.
Can I access files larger than 2G with MKS Toolkit porting APIs?
Windows NT/2K/XP with NTFS or Windows 9x/Me with FAT32 allow files larger than 2G (FAT32 imposes a file size restriction of 4G (32-bit unsigned offsets) while NTFS has a 16 exabyte size restriction (64-bit unsigned offsets)).
MKS Toolkit will permit sequential access to such files today. APIs such as
lseek() and utilities such as
tar use the Win32 API
ReadFile and are not restricted by file system. However, if you wish to use, for example,
sort to manipulate a file larger than 2G, or use
lseek() to an offest which cannot be represented by a number less than or equal to 231-1 (the maximum signed 32-bit quantity), then you either need tools and APIs that are large file aware or native Win64 ports of the tools and the APIs.
MKS Toolkit for Enterprise Developers contains 64-bit file support according to the Single UNIX Specification which can be found at
http://www.unix.org/version2/whatsnew/lfs20mar.html. Further, various utilities such as
sort support files as large as 263-1 (the maximum signed 64-bit quantity) where possible by the underlying data structures used by the archives.
Are there alternatives to MKS Toolkit for Enterprise Developers 64-bit Edition for migrating 32 and 64-bit UNIX/Linux applications to 64-bit Windows?
At this time MKS Toolkit for Enterprise Developers 64-bit Edition is the ONLY solution, commercial or freely available, for porting to 64-bit Windows systems.
Do the 64-bit and 32-bit NuTCRACKER Platforms co-exist on the same machine?
Yes. Not only co-exist, but share resources such as System V IPCs, FIFOs, shared memory and be able to pass file descriptors from a 32-bit to a 64-bit application. When a 64-bit application is deployed, the 64 and 32-bit NuTCRACKER Platforms are both deployed to the target machine. The first implementation of the deployment wizard however will not permit an older 32-bit runtime to be present or upgraded. The older 32-bit NuTCRACKER Platform will need to be uninstalled before the new versions are installed.