[Autogenerated] Let's summarize the process types Windows
supports before the existence of minimal processes,
there was just one type of process let's call that anti process.
This kind of process has the normal ingredients that
any Windows process should have,
such as anti DLL and the PB and threat environment blocks
and something called shared user data,
which is a data structure which is mapped to the same address in all processes.
And of course subsystem DLS and all these things.
And when we talked about protected processes,
although they have some special properties,
they're still normal processes in that respect.
They're still anti processes.
They just have some certain different behavior perhaps in terms of security.
But minimal processes are really completely new.
A minimal process is just an empty address space.
That's it can only be manipulated by the kernel directly and
no system calls are required or possible event because there's
no user mode code running there.
The third option is the extension of the minimal process model,
which is PICO processes, PICO processes.
A minimal processes with the supporting PICO provider,
which is currently just one of those existing that provides the
support for the Windows subsystem for Linux version one.
And the basic idea here is that the process is going to run here and
it's going to perform system calls that are Linux.
System calls, Linux.
System calls use the same siskel instruction X 64 for instance.
However, the calling convention is different.
The actual system calls themselves are different so the pick a
provider is the one providing the Windows kernel support,
so to speak that is required to act as the Linux kernel and the way this
works that the PICO process has this beat in the process,
in one of the flags saying PICO process And when the system service
dispatcher in the Windows kernel gets the actual system called,
it says who is the color?
If the colors, the PICO processes simply redirect to the PICO provider says hey,
here you go, you handle that system called.
Otherwise it will handle the system called normally.
So this is the way it works and this is how WsL one is implemented.
If we compare WsL 12 W cell to what are the main differences.
WsL one is built on top of PICO processes,
these are necessary and the pickle provider is acting as the Linux kernel
using what parts of the are used from a real Destro.
So these are normal Linux executable the only thing that is slightly
different is the process that has to know about the fact that it's part
of running on Windows But other than that,
all the normal ingredients from any Linux distribution are exactly this same.
Running as is starting with those binaries that have the E L F
format rather than the pE used on Windows.
So it's part of the PICO providers purpose here in w someone to figure
these things out and part the LF appropriately to actually launch the
Linux process as as expected and so the colonel is really provided by
the pickle provider that's acting as the Linux kernel kernel is not
being used in WsL one.
So this has some downsides the performance in terms
of I o in particular is not ideal, not as fast as in a true Linux system.
WsL two improves many of these things significantly,
but all by also allowing good applications by utilizing various supporting
the X window system that Linux knows how to work with.
So the idea of people processes, although very cool in my,
in my humble opinion were dropped so they're no longer being used.
They're still supported because as we've seen,
we can switch between WsL one WsL two Attwell but they're not
going to be developed any further probably unless there's really
some kind of a new idea about that.
But if you think about the idea of a pickle provider,
it's actually very cool because you can think of implementing
other operating systems in terms of Windows,
but that would require us to have access to the Windows source code because
in many cases you have to call internal functions which are not exported and
not even talking about the actual documentation.
So maybe someday Microsoft will open this thing up and we'll be able to
implement other operating systems in terms of Windows by writing our own
pickle provider but that's perhaps it's just a pipe dream that may or may
not ever happen in w sell to a full Windows,
sorry,
full Linux distribution is installed using modern kernel because
really the Linux kernel is the best one suited to handle system
calls coming from Linux using what processes obviously and the
technology behind the scenes, it's called hybrid virtual machine.
It using it uses the Hyper-V hyper visor in order to make the
appropriate field that it is the actual same system.
But the Linux kernel doesn't really need to know that.
So you can use the true Linux kernel,
the actual way this works is not very well or deeply documented
by Microsoft but there are some articles that have been written
by the Microsoft kernel team.
The Windows kernel team that describes some aspects of this hybrid virtual
machine technology and I definitely recommend you read that and there's lots of
other research you can do in this space obviously.
So this hybrid virtual machine is the one being used behind
the covers and as you see in the demo,
it seems like I was able to launch a W cell to machine without any issues.
It does require the Hyper-V rise and if you are using a
Windows 10 or 11 virtual machine,
you might need to turn on nested virtualization which is
not very difficult to do and you can find out how to do
that just by browsing the web