Is Windows Unix based?

Last Updated on February 2, 2022 by Dave Farquhar

At least two of the most popular operating systems of today are based on Unix. But what about Windows? Is Windows Unix based?

While Windows has some Unix influences, it is not derived or based on Unix. At some points is has contained a small amount of BSD code but the majority of its design came from other operating systems.

BSD code in Windows

is Windows Unix based
Here’s Xenix, a Unix-based Microsoft operating system running on Apple hardware. But Windows itself is not Unix based.

BSD is a form of Unix. The University of California at Berkeley started working with Unix in 1974, extending its capabilities to meet its needs. By 1978, Berkeley was sharing its changes with other universities.

By 1991, BSD no longer contained any AT&T-owned code, so technically it could be distributed on the University of California’s terms, not AT&T’s terms. But the University of California had no rights to the Unix trademark. That stopped them from from calling it BSD Unix.

There was some legal wrangling between AT&T and the University of California. One reason why Linux is more popular than FreeBSD is because Linux was a clean-room implementation and spread freely during the early 1990s while the BSD family was tied up in court.

What does any of this have to do with Windows? Well, once BSD was free and clear, it could be distributed on the University of California’s terms. Their terms were generous. You could copy it all you wanted, including reusing the code in closed-source projects, as long as the copyright message remained intact.

When Microsoft decided to include standard Internet utilities in Windows, it just recompiled the BSD tools. This included the copyright message, which was required by law. This confused people, but Microsoft wasn’t doing anything underhanded. Why didn’t they bother to remove the message? They couldn’t.

The Windows 10 versions of these tools no longer have the message. But they did in NT4.

The POSIX subsystem

POSIX is a Unix standard for interoperability. Anyone who’s dealt with more than one type of Unix will tell you it’s a fragmented mess. Sure, if you understand one you can understand another, but the details can vary in maddening ways.

POSIX was a US government initiative to ensure a certain amount of interoperability. As long as your Unix implemented that baseline, the government would be able to work with it. This kept the government from being tied to a single computer vendor, which was good for everyone. It kept bidding competitive, didn’t lock anyone out, and kept the government from becoming beholden to a single vendor like IBM.

Microsoft included a POSIX subsystem in Windows NT. This layer made Windows NT just Unix-like enough that the government could run its software on it. This and a few other design decisions made Windows NT eligible for work that had previously been the exclusive realm of mainframes or Unix.

By the 2000s, the government was sometimes just writing native Windows software. Ironically, when I was a government contractor, I had to disable the POSIX functionality in Windows to reduce its attack surface. The very thing the government once required was something it wanted gone.

And this subsystem was layered on top of the base of Windows. Like the BSD networking components, these were bolted onto the chassis while Microsoft used its own drivetrain. Windows once was based on MS-DOS, but when Microsoft needed something more advanced, they wrote their own kernel and userspace, the NT kernel.

What about the Linux subsystem for Windows?

Windows 10 includes a Linux subsystem, allowing you to run full Linux distributions, including Linux applications, on top of Windows 10.

But this capability rides on top of a translation layer, translating the Linux system calls into the Windows equivalents. It’s still the Windows kernel under the hood.

The future

There has been some speculation that Microsoft could do a Linux subsystem in reverse, running the Windows userspace on a Linux kernel and translating the Windows calls into Linux equivalents. Some have argued Microsoft should do this, and that it would allow for a more efficient and more secure system overall.

So far, Microsoft has had no reason to try that. Nothing says they haven’t tried it internally in a lab, but they haven’t done it in anything consumers can get their hands on.

There’s no reason it’s not possible to do. But Microsoft won’t do it unless they have something to gain.

Other Microsoft Unix projects

Even though Windows isn’t based on Unix, Microsoft has dabbled in Unix in the past. Microsoft licensed Unix from AT&T in the late 1970s and used it to develop its own commercial derivative, which it called Xenix. When IBM approached Microsoft in 1980 to provide a programming language and an operating system for the IBM PC, Microsoft tried to get them to use Xenix. IBM wanted something more CP/M-like, and the rest was history.

In 1984, IBM released the 80286-based PC/AT, and Microsoft was excited that IBM finally had a machine powerful enough to run Xenix. But Xenix and DOS weren’t compatible and the industry wanted compatibility, so IBM and Microsoft developed OS/2 as their next-generation operating system. OS/2 led to Windows NT and the end of Microsoft’s Unix ambitions.

Microsoft sold Xenix to SCO, the company that helped it develop Xenix in the first place, in 1987. SCO developed products based on it for a few years, and eventually ended up owning many (but not all) of the rights to Unix itself, after purchasing them from Novell, who had in turn purchased them from AT&T. In 2002 it merged with Linux distributor Caldera, then turned around and sued IBM for $1 billion in 2003. Ironically, the case was over IBM’s contributions to the Linux kernel.

The case was decided in IBM’s favor in 2017, but the tattered remnants of SCO are still appealing the decision.

If you found this post informative or helpful, please share it!

One thought on “Is Windows Unix based?

  • June 9, 2020 at 9:10 am
    Permalink

    The original Windows Subsystem for Linux uses a translation layer. WSL2, which has been available to Windows Insiders for a while and recently became generally available (well, once the compatibility hold for most Intel processors has been resolved) with the Spring 2020 update to Windows, uses an actual Linux kernel running in a virtual machine.

Comments are closed.