Vicmarcal hat einen relativ großen Artikel zur NT-Systemarchitektur geschrieben.
Ich habe schon einen großen Teil übersetzt, allerdings habe ich momentan nicht sehr viel Zeit.
Kann jemand eventuell das hier übersetzen?:
Viellen Dank für eure Hilfe,Ok,Ok. Why am I talking about roofs,neighboors,floors?
Let´s make the translation:
An architecture can be studied as a number of superposed layers, as a building
can be studied as a number of superposed floors. So we can have an architecture
with 100 layers or an architecture with just 1 layer.This doesnt say too much,
but let´s following. Each layer is usually divided in different structures,as a
floor can be divided in 10 flats.And each flat(sorry, structure) has its own
task inside the Architecture. One flat(sorry structure) processes the graphics ,
other flat talks with the hardware,other flat talk with the application, other
flat talks with flat2 because flat3 is angry with the latter one...
So lets go to the skytower example again:
On the top(the Roof) of the Skytower there is an Application, in the basement of
the building there is the hardware, and the flats have to create "a way" for the
app to reach the hardware.(Anything ends in the microprocessor,right?or
accessing the HDD, or printing info in the Screen)
The skytower is the typical example of a too much layered OS.A too-much layered
has some advantages, you as a programmer dont have to create a lot of direct
relations between the structures(neighboors) in this skytower just 2 direct
relations.So seems to be easier to control, but..you face one main
issue:Slowness. The "call" has to go through 100 floors.No,there isnt an fast
elevator.Maybe the "call" doesnt need to be processed in the floor number 63,
but it has to go through it to reach the floor number 62.
What happens with a 1-Floor architecture? This is a non-layered-at-all
architecture. Layers are nice since they reduce the number of direct relations
(if you didn't calculate,please do it now :3.It´s huge )but they introduce extra
time if you layered the architecture too much. A non layered architecture is
huge in direct relations, and it is a full mess since you will be seeing the
call going to the flat number #1 which later goes to the number #35 then going
back to #12 and then to #98 and all this happening in ONE floor.
Of course an app makes different "calls"("ways"). A "call" which calculates 2+2
isnt the same that a "call" which reproduces music.This means that a call which
calculates 2+2 needs to go through some flats but maybe different(some could be
commun) that the flats which the "sound call" goes through.Thanks to be all the
flats in the same floor, the calls just have to go in and out from the desired
flats and ending in the basement.Now,imagine the skytower again: both calls will
go through the 100 Flats(because in skytower flat and floor is the same)!
"So it´s better a 1-Floor architecture...":Well,not really. Imagine that the
100% of the time you need at least going inside 2 flats(call1: flat #1,flat #13;
call2: flat#3,flat#11,flat#7;call3: flat #1, flat#7,flat #14...and others 2 or
more flats combinations).Then it´s obvious that if you create a 2-Floor
architecture (remember you can place the flats inside this 2 Floors as you
wish:you are the architect)you arent going to lose extra time!
So yes, you have to find the balance between number of direct
relations(easier,clear and cleaner code as possible) with the performance of the
OS(not too much layers).And also it depends of the objective of the OS,a
real-time OS cant be quite layered or it will "lose a lot of time" from a
Real-time OS point of view(any nanosecond counts).
Basisbit