Shining some light on the history of OS/2, Win9x and NT
[Nicked from the FB Vintage Computer Club]
Someone was claiming that the big innovation of OS/2 2 was that it used CPU protection rings, and that made it better than any version of Windows ever. XKCD 386 got me.
Protection rings date back to the 1960s or even the 1950s — the Multics OS that "inspired" Unix was known for its extensive use of them.
All OSes that use pre-emptive multitasking and hardware memory management use rings. The only significant question is how many — most x86 OSes only use ring 0 and ring 3 and nothing in between, which is simpler but throws away a massively useful protective feature.
OS/2 2 was unusual because it also uses Ring 1, I believe. This made it very hard to virtualise, which is what led to the development of VirtualBox.
Windows 2 286 & 386 both made very basic use of rings — even MS-DOS 386 memory managers such as QEMM do.
NT makes extensive use of them and dates all the way back to 1993. NT originated as OS/2 v3, of course, before the IBM/MS divorce.
Win 9x does make use of them, but because of its inspired hack of a design, it basically runs in Ring 0 almost all the time. But don't knock it. What the Win95 team did was amazing work: a protect-mode 386 OS that can run and use MS-DOS mode drivers. This was stunning work and is what made 32-bit Windows succeed and sell.
OS/2 couldn't do it. So I have a period IBM PS/2 Model 55SX I want to run OS/2 on, but its network card drivers only work in Windows 3 for Workgroups. But I could use it in Win95.
I had to spent nearly as much as I spent on my copy of OS/2 2.0 to buy a driver for my ProHance PowerMouse, because OS/2 couldn't use even a DOS driver for basic functionality. I had to buy a driver for my Logitech SoundMan because it couldn't use my Windows 3 driver, although of course it could run Windows 3 in what we'd now call a container.
IBM and MS co-wrote OS/2 1, which IBM insisted ran on the 80286. This meant no protected DOS virtual machines -- that was a 386-only feature -- and that's why OS/2 flopped.
There were 3 versions planned:
- OS/2 1: 80286
- OS/2 2: 80386
- OS/2 3: portable, CPU independent
When OS/2 1 flopped, IBM and MS went separate ways. IBM kept OS/2 2 and finished it on its own. MS got OS/2 3, which was little more than a skeleton of an idea at that point. To keep it cross-platform clean and not dependent on any x86 features, it was being developed on Intel's new RISC chip, the i860, codenamed the "N-10". The project was therefore codenamed after it: OS/2 N-Ten, or "OS/2 NT" for short.
Microsoft didn't really have the people to finish OS/2 NT, and it was heavily committed to Windows 3.x at this time — but around then, it headhunted Dave Cutler from DEC. Cutler was the lead architect of RSX-11 and VAX-VMS, 2 of DEC's flagship OSes.
A famed story of Cutler's programming prowess is that the 2 main PDP-11 OSes, RSX-11 and RSTS/E, had to be ported to a new variant of the machine. DEC management gave the 2 team leads a weekend to write up feasibility reports.
The RSTS-E team came back on Monday and said that it could be done in only a couple of months. Management turned to Cutler and asked him how long his team would take.
"It works," he said. "It'll be fine." The managers and the other team didn't understand. He explained: he'd done it over the weekend. The main port was done, it just needed some other drivers and tools tidying up.
Cutler wanted to do a new, cross-platform OS for DEC, working on a new RISC chip he was also involved in designing, called PRISM. DEC cancelled it. Cutler and his team left and went to Microsoft. MS didn't know what to do with this élite group so it gave them OS/2 3 to finish.
They did, by fleshing out the sketch of Portable OS/2 with design elements from VAX-VMS, and a port of the Win32 API on top together with a Win32 GUI taken from Windows 3. But underneath it had 2 other "personalities" — an OS/2 one, for text-mode OS/2 apps, and a POSIX one for porting Unix apps.
None of these are the native API, which is not exposed and is not normally used directly.
Windows 10 is Windows NT. Windows NT is Portable OS/2.
IBM developed OS/2 2 on its own. It had absolutely no involvement in Windows 2, 3 or WinOS2. WinOS2 is a runtime: just Windows 3 with some special drivers to use OS/2 memory management, OS/2 screen drivers and so on instead of its own DOS ones. There's no "IBM source tree of Windows" or "IBM code base for Windows", that's piffle. Yes they had source access, because IBM sold Windows PCs, made Windows hardware, and needed to write Windows drivers.
MS didn't "learn stuff from IBM". That's piffle too. Remember, MS had written a PC OS and a ton of apps and languages before, whereas IBM hadn’t. And soon afterwards, MS had one of the greatest all-star OS programming teams there’s ever been. IBM didn’t.
Both IBM and MS learned together from the project they did together. Neither took more from the other than it gave: IBM got the plans for a 386 version, MS got the plans for a CPU-independent version.