Montag, 10. August 2009

NT-Architectur: Was ist ... eine Architektur?

Aus der Sicht der Benutzer ist Windows ein bekanntes Betriebssystem (Das erste Spiel, welches Sie am Computer spielten war sicherlich Minesweeper oder Solitär in einer der WindowsVersionen). Auch dank einigen interessanten und informativen Büchern wie z.B. „Windows Internals 4. oder 5. Edition“ kann man nun anfangen, die internen Systemmechanismen von Windows kennen zu lernen.

Reactos ist ein Betriebssystem das sich zum Ziel setzt sich genauso zu verhalten wie Windows. Dieses Ziel anstrebend wird Reactos auch in der Lage sein Treiber und Programme die für Windows geschrieben wurden zu starten und zu laden. Windows, Gnu-Linux, ReactOS oder jedes anderes OS haben aus der Sicht des Benutzers nur ein Ziel: Programme ausführen. Vom Entwickler standpunkt aus gesehen: Erschaffe die schnellste zuverlässigste Verbdindung zwischen Anwendung und Hardware beim gleichzeitigen Bearbeiten und Auswerten des Ergebnisses.



Aber "Windows" ist ein einfach zu merkender Name. Die Art, wie sich ein OS verhällt, die Art wie ein OS informationen verarbeitet, wie eine Anwendung arbeitet und wie sie mit der Hardware (um das ergebniss auf einem Bidschirm anzuzeigen) verbunden ist, wird Architektur genannt - bevor ich es vergesse: Windows besaß in der Vergangenheit verschiedene Architekturen. Die Aktuellste wird "NT Architektur" genannt.


Was ist eine Architektur?


Ich mag die Idee, irgend eine OS-Architektur mit der Architektur von Gebäuden zu vergleichen. Stelle dir vor du bist ein Architekt, stell dir vor du kannst dein Gebäude frei bestimmen, wie es aussieht, aber: das einzige was du beachten musst ist das 100 Menschen reinpassen. Du kannst frei entscheiden ob du 10 Stockwerke mit je 10 Apartments machst, oder du entscheidest dich für einen 100-Stockwerke-Wolkenkratzer mit nur einem Apartment auf jedem Stockwerk zu machen. Es gibt verschiedene Architekturen, aber alle sind eine korrekte Lösungen. Aber im gleichen Maße kannst du auch verschiedene OS Architekturen haben, die alle dazu dienen zu Arbeiten und die Hardware mit der Software zu verbinden. Deswegen gibt es: Nt-Architektur, Mac OS X-Architektur, Linux kernel,...

Und die beste Architektur ist...


Lass uns zur Idee des Gebäudes zurückkehren. Egal ob wir den Wolkenkratzer oder das 10 Stockwerke Gebäude wählen, wir werden verschiedene Probleme lösen müssen.

Schauen wir uns den Wolkenkratzer an: Du hast einen Nachbar auf jedem Stockwerk, das heist das jeder Nachbar eine direkte beziehung zu dem unter seinen Füßen und zu dem über seinem Kopf hat. Daher sind die Apartments sehr leise. Das ist eine nette Sache, wenn du der Architekt bist und auch zugleich der Besitzer der ein "leises-Stockwerkausfüllendes Arpartment" hat (auch Loft genannt): nette Werbung. aber mit sicherheit hat das auch Nachteile, und die erste: Wenn der Bewohner vom Erdgeschoss auf das Dach will sollte er sich ein paar Sandwiches mitnehemen damit er nicht verhungert bis er auf dem Dach ist, so lange es keinen Direkten Aufzug zum Dach gibt.

Die 10 Stockwerke Architektur ist ein nettes Ziel, viel billiger zu konstruieren, aber es ist auch sehr viel mehr Lärm auf jedem Stockwerk und ein Haufen Relationen (welche in einer nachbarschaft zu problemen führen können) werden erzeugt. Lass uns doch einmal die Relationen zählen: Jede Person auf der 5 Etage wird 9 Nachbarn auf seiner Etage haben, plus 10 weitere Nachbarn über seinem Kopf und 10 weitere unter seinen Füßen. Gesamt: 29 direkte Relationen, die jede Person hat. Versuch mal die anzahl der gesamten relativen Verbindungen zu zählen und vergleiche die Anzahl mit der Anzahl der gesamten Relationen des Wolkenkratzers den wir vorhin hatten.


Nun können wir aber auch in der tat eine neue Architektur erntwickeln, genannt: Erstes-Stockwerk. Ein seltsames "Bauwerk" mit nur einem enormen Stockwerk und 100 Nachbarn. Nun kannst du das Dach sehr leicht erreichen, ohne einen Aufzug zu verwenden!! wowww...(*ehem*) Wie ist hier wohl die Anzahl direkter möglicher Relationen? Jap, viele. Aber hey, sie können alle das Dach erreichen.

OK, OK. Warum rede ich über Dächer, Nachbarn und Stockwerke?

Lasst es mich übersetzen:

Man kann sich eine Architektur als eine Anzahl übereinander liegender Schichten vorstellen, genauso wie man sich ein Gebäude wie eine Anzahl übereinanderliegender Stockwerke vorstellen kann. Das heißt, wir können eine Architektur mit 100 Schichten oder mit nur 1 Schicht haben. Das sagt nicht viel aus, aber lasst uns weitermachen. Jede Schicht für sich ist auch in unterschiedliche Strukturen unterteilt, so wie ein Stockwerk in 10 Wohnungen unterteilt sein kann. Jede Wohnung (verzeihung Struktur) hat Ihre eigene Aufgabe in der Architektur. Eine Wohnung (verzeihung Struktur) verarbeitet die Grafik, die nächste Wohnung kommuniziert mit der Hardware, die nächste Wohnung kommuniziert mit der Anwendung, die nächste Wohnung kommuniziert mit der Zweiten, weil die Dritte sauer auf die Letztere ist...

Lasst uns wieder das Hochhausbeispiel nehmen:
Ganz oben (auf dem Dach) des Hochhauses ist eine Anwendung, im Keller des Gebäudes befindet sich die Hardware, und die Wohnungen haben die Aufgabe einen "Weg" für die Anwendung zu schffen, damit diese mit der Hardware kommunizieren kann. (Alles endet beim Prozessor, richtig? Oder mit Festplatten Zugriffen oder durch die Ausgabe von Information am Bildschirm)


Das Hochhaus ist ein typisches Beispiel eines zu stark geschichteten Betriebssystems. Ein zu stark geschichtetes Betriebssystem hat einige Kostenvorteile, man muss als Programmierer nicht so viele direkte Verbindungen zwischen den Strukturen (Nachbarn) im Hochhaus herstellen, nur Zwei. Dadurch ist es dem Anschein nach leichter zu kontrollieren, aber... man erkennt ein Hauptproblem: Langsamkeit. Der "Aufruf" muss über 100 Stockwerke erfolgen. Nein, es gibt keinen superschnellen Fahrstuhl. Vielleicht muss der "Aufruf" im Stockwerk 63 überhaupt nicht verarbeitet werden, aber dennoch muss er dieses passieren um zum Stockwerk 62 zu gelangen.

Was geschieht in einer 1-Stockwerk Architektur? Das ist eine vollkommen Schichtenlose Architektur. Schichten sind toll, da sie die Anzahl der direkten Verbindungen verringern (Falls Ihr noch nicht gerechnet habt, wäre jetzt der passende Zeitpunkt dafür :3. Das Ausmaß ist gewaltig) aber sie benötigen zusätzliche Zeit, falls die Architektur zu stark geschichtet wurde. Eine ungeschichtete Architektur setzt unmengen an Direktverbindungen voraus, und es ist ein riesiges Chaos, da man beobachten wird, wie der Aufruf zur Wohnung 1 dann zur 35 dann zurück zur 12 und schließlich zur 98 geht; und alles geschieht in EINEM Stockwerk.

Natürlich macht eine Anwendung unterschiedliche Aufrufe (geht unterschiedliche Wege). Ein Aufruf, der 2+2 errechnet ist nicht das selbe, wie der Aufruf, der Musik wiedergibt. Das heißt, dass ein Aufruf, der 2+2 errechnet durch manche Wohnungen gehen muss, aber wahrscheinlich andere (manche könnten gemeinschaftlich genutzt sein) als der Soundaufruf durchläuft. Dank dessen, dass sich alle Wohnungen im selben Stockwerk befinden muss der Aufruf nur hinein dann hinaus aus den beliebigen Wohnungen und in den Keller. Nun stellen wir uns wieder das Hochhaus vor: Beide Aufrufe müssen durch 100 Wohnungen (weil im Hochhaus Wohnung und Stockwerk das selbe sind)!


"Dann ist eine 1-Stockwerk Architektur besser..."

Nun ja, Nicht wirklich. Stellen wir uns vor, dass 100% der Zeit die wir benötigen nur zum betreten zweier Wohnungen verwendet wird (Aufruf1: Wohnung 1, 13; Aufruf2: Wohnung 3, 11, 7; Aufruf3: Wohnung 1, 7, 14... und noch 2 oder mehr Wohnungskombinationen). Dann ist es es offensichtlich, dass wenn wir eine 2-Stöckige Architektur erschaffen (denkt daran: Wir können die Wohnungen anordnen, wie wir es wünschen; wir sind schließlich die Architekten!) verlieren wir keine Zeit!
Also ja, man muss ein Gleichgewicht zwischen den direkten Verbindungen (leichter, klarer und so sauberer Quelltext wie möglich) und der Leistungsfähigkeit des Betriebssystems (nicht zu viele Schichten) schaffen. Genauso spielt das Ziel eines Betriebssystems eine Rolle, ein Echtzeit-Betriebssystem kann nicht vollständig geschichtet sein, sonst "verliert es eine Menge Zeit" aus der sicht eines Echtzeit-Betriebssystems (jede Nanosekunde zählt)

Also versucht jedes OS seine eigene Lösung zu diesem balanzierten System zu finden, und das ist auch der Grund, weshalb es verschiedene Architekturen gibt. ReactOS folgt der NT Architektur und dessen Schichten sind genauso positioniert wie die von NT.

Und ja: Wir werden nächste Woche versuchen, euch die ReactOS (NT) Architektur zu erklären..Seit Ihr bereit? ;)

Bis zum nächsten Post :)

Keine Kommentare:

Kommentar veröffentlichen