OS/2 could run DOS, Windows 2.x, Windows 3.0 (badly), and OS/2 native apps. The source code shows thousands of lines of "shims" and "thunks" to make this work. Every line of compatibility code is a line that wasn’t spent improving the native API. Modern OSes (looking at you, Windows 11 and macOS) suffer from the exact same problem.
OS/2 did it in 1987 on a 6MHz 286 with 1MB of RAM. Windows didn’t get true preemptive multitasking until Windows 95 (and even that was flaky). Reading the OS/2 scheduler teaches you the eternal trade-off: fairness vs. responsiveness. Their solution (a time-slicing priority system with "critical section" boosts) is still used by QNX and VxWorks today. os 2 source code
When the source code finally surfaced (primarily for OS/2 1.2 and 1.3 from the late 1980s, with fragments of 2.0), it told a story of engineering brilliance hamstrung by corporate politics. OS/2 could run DOS, Windows 2