Porting UNIX to Windows NTBy David G. Korn, AT&T Research
Summary by Michael Stok
In this presentation, David Korn related the needs that prompted AT&T to want a UNIX-like environment on NT machines, some of the strategies that might lead to a solution, and how well the solution they engineered allows the performance of code ported from UNIX to compare to code written as NT native code.
AT&T has many utilities and applications developed under UNIX and in everyday use. As computers running NT start to come into use, there is a need to port these applications and utilities to the new platform. Multiple code bases for the same application were not desired, and one aim was to provide enough of an environment to support most of AT&T's code and allow much of the software freely available for UNIX to be configured and compiled with no changes to the source. Korn commented that in the time he's been working on this, he's seen only two things in NT that aren't in UNIX, although NT has a large API and is more complex than UNIX. He also noted that there aren't that many "deep" NT experts around, so having to understand the old code and the new NT system in enough depth to modify the programs was not attractive.
The POSIX subsystem provided by Microsoft for NT is isolated from the rest of the system, and some of the third party libraries intended to assist with UNIX code porting require the code to be understood and occasionally tweaked. Korn said that "99% is not good enough," so it was decided that AT&T would develop a library for NT (which can also run on a Windows 95 box but with reduced functionality), which would allow ksh and a subset of applications and utilities that rely on POSIX to run. It soon became clear that many useful utilities used facilities like sockets and IPC, so the scope of the library was extended toward X/Open.
The results of the work are a system that is layered on top of the Win 32 system. This has the benefit that, as well as being able to do simple recompilation of old code without an investment in rewriting, it is possible to develop new code that can use both the UNIX and Windows native functions at the same time. The library is layered on top of the Win 32 API as a POSIX layer and on top of that the ast layer; these work in concert with a server that is responsible for issuing the security tokens needed to emulate setuid/setgid execution and make sure that the windows registry and the password and group files represent the same state of affairs.
Some timings of operations performed under Linux and under the UWIN library were presented; these showed some performance wrinkles, like slow system calls. Problems inherent in hosting a UNIX system on a Windows system, such as special devices and case sensitivity, were covered.
The objective of being able to port existing UNIX applications and tools to NT seems to be close or have been achieved. The system is described at https://www.research.att.com/sw/tools/uwin/.
Originally published in ;login: Vol. 22, No.2, April 1997.
Last changed: May 28, 1997 pc