macOS and Linux are descended from UNIX, but Windows is not. Why did Microsoft make this design choice?

by TheLordHighExecu

The first edition of Microsoft released in 1985, so it's outside of the 20-year barrier.

Platypuskeeper

The original Microsoft Windows was not a fully fledged operating system. It was a program that ran on top of DOS (the Disc Operating System). Windows provided graphical environment in which other programs could run. It became the most popular but it was not the only such product; GEM from Digital Research was another. (DR had also created CP/M, the operating system DOS began as a clone of) DOS, CP/M and other PC operating systems of the 80s were single-user, single-process systems. They ran one program, and that program had complete control over the computer, down to the hardware. To the extent that a malicious DOS program could even physically damage your drives by low-level formatting them incorrectly, or your monitor by giving it a signal at the wrong sync frequency.

UNIX on the other hand, was a multi-user, multi-process operating system designed in the 70s for use on large systems; mainframes and minicomputers (which were small compared to mainframes but huge compared to a microcomputer which are what we generally refer to as computers now) So that hardware was more powerful than early PCs, and since they were designed from the ground-up as that kind of system, they had hardware features to enable it, such as managing the memory. Different programs should not be able to read or write each other's memory, or to the operating system's memory, nor should you be able to read and write the memory of another user, you should be able to keep other users from reading your files, and so on. UNIX also 'abstract' the hardware, as putting itself in between the programs and hardware, that way programs would be portable. You only needed to program them to use the right system calls, and the operating system did what was appropriate on the respective hardware. So writing a file to a hard drive, floppy drive or tape drive might work the same as far as the program was concerned.

The IBM PC, original Mac and Apple machines, Ataris, Commodores, all those 8 and 16-bit computers, they had none of these hardware features. The operating systems did not abstract the hardware much (if at all), because doing so slowed things down. For the sake of speed, many programs were also written in assembly language, which is specific to each processor, and were not portable anyway. That doesn't mean it wasn't possible to have a UNIX-like operating system on an ordinary PC, a number of them existed, such as Xenix (from Microsoft!) and Minix, an OS created to teach Operating System design. Much of the impetus for creating Minix was that the Unix source code was no longer available for students to study. (It had been originally, until AT&T who'd created it, fully realized the commercial potential of it)

The original MacOS was not UNIX-like at all though, like the others it was really single-user and single-tasking, although it had a bit more hardware abstraction than DOS for instance. The UNIX-clone came with Mac OS X in the late 90s. I'll get to that.

Anyway, so Windows continued to essentially be a program on top of DOS through to 3.1. (1992) The first fully 32-bit Intel processor from the end of the 80s, the 386, introduced hardware features that made it far easier to run multiple programs at once (multitasking) and not in the 'cooperative multitasking' way Windows had done earlier, where basically one program started when you switched to it, and stopped when you switched away. The student Linus Torvalds, interested in Minix, decided that he wanted to make his own Unix clone that skipped backwards compatibility and used the processor's new features and ran in fully 32-bit mode.

Windows was running on top of DOS (which was a 16-bit program requiring the processor to run in 16-bit mode) and since Microsoft wanted to maintain backwards compatibility, their next Windows version, Windows 95, was 32 bit but switched to 16-bit mode for DOS programs. This caused a lot of the instability and crashes the Windows 95, 98, ME series were infamous for.

Microsoft knew full well they couldn't continue with a 32-bit plus 16-bit operating system built on top of DOS which in turn was an extension of the 8-bit CP/M operating system. So they designed a new operating system from the ground up, that was fully 32-bit, a real multi-user system with multitasking, where the hardware was fully abstracted and so on. And that was Windows NT, released in 1993. Windows NT became just Windows from Windows 2000 forwards. So the operating system we call 'Windows' today is not the same one that was 'Windows' in the 90's

Windows NT was indeed not based on UNIX. It was, however, created by many of the people involved with the VAX operating system, which had been the main competitor to Unix in the minicomputer market. There's not really any reason to prefer a Unix-like design, in particular in the late 1980s when the Unix market was large but fragmented into many not-entirely-compatible clones.

The original intent of Linus Torvalds on the other hand wasn't to create a new professional OS. Designing something completely new would've meant more work and probably attract fewer people. A free UNIX-clone for 386 machines on the other hand was something that obviously attracted enough volunteers to really make something out of it.

By the mid-90s, Apple's hardware, operating system and sales had all stagnate, and they realized they also needed to do what Microsoft was doing with Windows NT. They bought NeXT, maker of UNIX workstations which Steve Jobs had founded after leaving Apple, bringing him back, and the NeXTSTEP operating system was turned into Mac OS X. NeXTSTEP had been a UNIX clone since the market segment they were competing in was the UNIX-workstation segment (which would be dead by around the year 2000 as Linux-on-PC became a cheaper equivalent). It was based on the open-source Mach operating system kernel from Carnegie Mellon, and BSD UNIX tools built at UC Berkeley. In other words they also saved money by starting from a UNIX system.

So they all had different reasons. It should be said though, that the level of program portability, although is not so high, is not so different between these systems. The POSIX standard was created to make Unix programs portable between different UNIX systems, and Windows does actually implement the POSIX.1 standard, although not later ones.

If you want to learn more about Linux's history you can read "Just for Fun" by Linus Torvalds.