Hacker News new | ask | show | jobs
by Grimeton 541 days ago
I think you're mistaking the Windows Subsystems for "virtualization". Windows has/had tons of subsystems beside the today well known WSL.

There were MSFU, NTVDM (Dos) or even OS/2 subsystems. As Windows NT is based on the ideas and code of OS/2 (the chkdsk output is the same till Windows 7 iirc) both OS support the subsystem feature. Printing is its own subsytem btw.

This went as far as having the Win32 subsystem available on OS/2 and vice versa.

These subsystems are small layers that convert between the NT native system and the software that is run on top of them. The thing you call Windows is just the Win32/Win64 "subsystem" running on top of the NT-Kernel.

Here a few links I could find regarding this topic. This stuff is ancient and Microsoft doesn't make a big fuzz about it, because it's one of the core features that allows Microsoft to port Windows quickly to any platform and run software built for any architecture on top of the NT kernel.

There are enough "subsystems" out there, like Windows on Windows (WoW64) or even Windows on Arm and so on.

This hole is deeeeeeep. I recommend the sysinternals book.

[1] - https://learn.microsoft.com/en-us/previous-versions//cc76796...

[2] - https://web.archive.org/web/20120112001543/http://support.mi...

[3] - https://en.wikipedia.org/wiki/Virtual_DOS_machine

[4] - https://en.wikipedia.org/wiki/System#Subsystem

[5] - https://en.wikipedia.org/wiki/Windows_Services_for_UNIX

3 comments

I don't think they're mistaking anything. 386-era Windows and OS/2 versions used the CPU's v86 task support, which, while having some severe warts[1], can well and truly be called "virtualization".

[1] Most of them fixed with later CPU extensions: https://www.rcollins.org/articles/vme1/

When most people talk about VMs these days they mean something similar to the Popek and Goldberg definition, which wouldn’t be achieved on x86 until a decade later.
I don't see how the real mode emulation on the 80386 (VM86) fails to meet the standard of the Popek and Goldberg definition. IA-32, yes, that took a while, but VM86 allowed 8086 (real mode) tasks to run as if they were running authentically in real mode while the 386 was in protected mode, and had all the features P&G describe in their definition. It runs natively, it runs with equivalent performance, and there's a VMM trapping privileged instructions to either emulate or arbitrate system resources. It's the full deal!
Yep.

I don't think P&G implies that the VM needs to run with exactly the same capabilities and characteristics as the host architecture. If that were true, then probably a large amount of modern virtualized machine are suddenly not P&G anymore, just because some obscure CPU (or other) feature might not be available in the VM, which is not a meaningful distinction.

> There were MSFU

Before SFU there was https://en.wikipedia.org/wiki/Microsoft_POSIX_subsystem

> The thing you call Windows is just the Win32/Win64 "subsystem" running on top of the NT-Kernel.

Sounds like WINE is an open source Win32/64 sub-system for Linux.

Win32 or Win16?