[Autogenerated] let's now turn our attention to multi processing.
What happens when you have multiple processors on the system,
which of course is the normal case today.
Now, Windows supported back from day one,
something called symmetric multi processing,
symmetric multi processing means that all processors are
essentially the same and they have the same kind of access
the same level of access to memory,
there's no master _____ of any form or any kind of special
specialty to one process or another.
And the basic architecture from the very first Windows and T version was to
support 32-bit 32 processors where each bit in a 32 bit word,
was there to represent the existing existence of a processor.
When 64-bit systems came into the four then of course that was naturally
extended to 64-bit and six For processors however,
started with Windows seven Microsoft wanted to support
even more than 64 logical processors.
In fact, Windows 7,
64-bit and the server version supported 256 logical processors.
Windows eight supports 640 logical processors.
Windows 10 and 11 support even more.
There's no real limit in terms of support.
The only limit is what Microsoft can actually test.
And so the question is how exactly are you doing all that?
I mean how scheduling affecting the fact that we have so many processors,
The action number of process by the way that you can use is
based on licensing the current doesn't really care the current
can handle any number of processors.
It's just a matter of paying the appropriate amount of money to get
perhaps better or higher level Windows version that officially supports
the number of processes that you want to use Now.
One of the things that Windows 10 added and that was for the
benefit of windows phone at the time that was running on qualcomm
processors and that required some changes to the schedule for
certain cases known as big little.
The the idea here is that on qualcomm processors you
might have a process that might have,
let's say eight cores but they're not all the same.
You have four big cores that consume more power but they're more powerful
and then you have four other cores which are smaller,
they're less powerful but they consume less energy.
So now the system is not completely symmetric in the sense
that not all processors are exactly the same.
So it's not as easy to decide to which processor to give a threat to
run and that has to be based on other factors such as whether the
phone or the device is connected to a c power and the amount of
battery that remains and so on.
So Microsoft had to support this idea which is also needed today.
In fact because new processors from Intel AMG also support this
idea that you have a single socket that contains multiple cores
but they're not all the same.
So as I mentioned earlier, this complicates scheduling even further.
Here's an example of a machine called the Mega Godzilla affectionately.
This is a machine in azure that I had the fortune of working on for a
little while when I was working for the sysinternals steam,
there was a bug in process explorer that only manifested itself when a
number of processors was 64 or higher And at the time,
in fact, even now I don't have any machine that has 64 logical processors.
And so I was given this machine access to this machine in
Microsoft azure to try to reproduce the problem and and I
did and eventually fix it.
And so I took a snapshot of task manager,
this is task manager at this number of processors
doesn't really show graphs anymore,
it only shows these rectangular pieces there and if you care then this machine
can definitely run no ted and even Visual Studio this machine has 420 logical
processors and by the way it's a virtual machine.
So imagine what the fizz the machine looks like.
It has 15 sockets, so 15 different sockets,
each one containing a bunch of course.
In fact, it's a new machine,
it's a non uniform memory architecture machine where you have multiple notes.
In fact, I think if I remember correctly,
it was,
it is or was an eight node machine And by the way
it also has 24 terabytes of RAM, but I'm going to disregard that for now.
So this is what what you might find yourself working with if you have
really big work to do and you want to utilize processes,
you really have to know how to write code properly in order
to utilize the part that we have today.
It's no longer easy, as it was, perhaps in the past,
and I'll discuss that in later modules in the course.