The way Microsoft gets Windows 10 to support a variety of Linux software has its roots in early versions of the 30-year-old operating system.

The approach Microsoft took to get the Bash shell and other Ubuntu Linux applications running on Windows 10, is reminiscent of how the firm built support for other OSes into Windows NT in the early 1990s, according to Nick Judge, senior development lead for the Windows kernel.

Throughout the 90s, Windows NT OSes included subsystems that gave them partial compatibility with a number of other operating systems, namely OS/2 and Unix-like operating systems compliant with the POSIX (Portable Operating Systems Interface) standards. Similarly, Windows 10 relies on the Windows Subsystem for Linux (WSL) to run Bash on Ubuntu.

Judge drew parallels between Windows 10’s Linux subsystem and those of the early NT OSes in a video explaining the architecture behind WSL.

“NT was written to be a platform on which you could support multiple operating system personalities. This is where the term ‘subsystem for Windows’ originally came from.”

NT’s support for certain POSIX system calls in the 1990s helped give the Windows kernel team a headstart when building WSL, he said.

“We just dusted off a bunch of old functionality, enhanced it, obviously it needed some new fixes for performance or correctness, and it was able to go right away.”

What allowed for the return of subsystems to Windows, according to Judge, was the addition of support for pico processes.

First added to Windows 8.1 and Windows Server 2012 R2, pico processes provide a way to run applications not supported by Windows, for instance Linux binaries on Windows 10. Pico processes are more lightweight than virtualisation, as they don’t require you to run an entire operating system in a virtual machine, instead allowing you to run applications with all of their software dependencies in an environment that is isolated from the Windows OS. The pico process has dedicated drivers that handle system calls originating inside the pico process. In the case of WSL, Bash is run inside a pico process and dedicated drivers, LXSS and LXCore, emulate the Linux kernel and are able to translate Linux system calls into calls that can be handled by the Windows kernel.

Pico processes originated out of Microsoft Research’s Drawbridge project.

“We realized that this approach aligned well with some internal discussion we had been having around longer-term strategy to bring back the idea of subsystems to facilitate future architectural changes within Windows,” Judge wrote in a blog post.

Notable Windows kernel changes to support pico processes and WSL include, allowing individual threads to support case-sensitive file names and improved support for fork system calls, said Judge.

More on Windows 10…