Startseite | Info | Community | Entwicklung | meinReactOS | Kontakt

  1. Startseite
  2. Info
  3. Community
  4. Entwicklung
  5. meinReactOS

  1. Übersicht
  2. Wie kann ich teilnehmen
  3. Whitepaper
  4. ReactOS kompilieren
  5. Entwickler FAQ
  6. Geistiges Eigentum
  7. SVN Server
  8. Bugzilla
  9. Doxygen
  10. RosCMS
  11. Website Status
  12. Webseite übersetzen
  13. ReactOS CIA

ReactOS Development > Whitepaper

White Paper

Einleitung

Die ReactOS-Architektur basiert auf jener von Microsoft Windows 2003 Server. Die ReactOS Architektur ist monolithisch, aber kann Module laden. Die unterste Schicht ist die Ausführunsschicht. Die Ausführungsschicht beinhaltet alles, was im Kernelmodus läuft. Über der Ausführungsschicht sind die Geschützten Subsysteme. Diese Subsysteme bieten Implementationen verschiedener virtueller Betriebssysteme.

Die Ausführungsschicht (Executive)

Zur Ausführungsschicht gehört aller Code, der im Kernelmodus läuft. Die Ausführungsschicht kann ungefähr in folgende Komponenten unterteilt werden: Hardware Abstraction Layer (HAL), Gerätetreiber, Kernel und Systemdienste (inklusive Win32 Subsystem). All diese Komponenten laufen im Kernelmodus. HAL, Kernel, Systemdienste und Gerätetreiber zusammen werden Ausführungsschicht genannt.

Hardware Abstraction Layer

Der HAL ermöglicht es dem x86-ReactOS-Kernel, auf unterschiedlichen x86-Mainboards zu laufen. Der HAL abstrahiert mainboardspezifischen Code vom Kernel, sodass unterschiedliche Mainboards keine Änderungen im Kernel erfordern. Beispiele für verschiedene Hardwaredesigns sind der Standard PC, der japanische NEC PC98 oder x86-SGI-Workstations.

Gerätetreiber

Gerätetreiber sind hardwarespezifische Erweiterungen zur ReactOS-Ausführungsschicht. Sie erlauben es dem Betriebssystem, mit gewissen Geräten zu interagieren. Reactos zielt darauf den NT Treibermodus umzusetzen, wovon das Windows Treibher Model (WDM) ein Teil ist. WDM ist ein Regelsatz zur Entwicklung von portablen Windowstreibern. Die Windows Driver Foundation (WDF) wurde in Windows Vista eingeführt und kommt für weitere Entwicklung in Frage.

Kommunikation

Gerätetreiber benutzen Pakete, um mit dem Kernel und anderen Treibern zu kommunizieren. Pakete werden mit dem IO Manager (ein Systemdienst) versandt und machen von IRPs (IO Request Packets) Gebrauch.

Kernel

Das Kerneldesign basiert auf jenem vom Microsoft Windows 2003 Server. Es werden asynchrone Prozedurcalls (APCs) im Kernelmodus, verzögerte (deferred) Prozedurcalls (DPCs), Prozesse, Threading, Mutexes, Semaphores, Spinlocks, Timing Code und mehr implementiert.

Systemdienste

Zu den Systemdiensten gehören: IO Manager, Konfigurationsmanager, Plug and Play, Energiemanager, Speichermanager, Executive Support, Objektmanager, security reference monitor, Prozessstruktur, local procedure call, Win32 Subsystem.

Geschützte Subsysteme

Geschützte Subsysteme erlauben die Ausführung verschiedener virtueller Betriebssysteme (OS Personalitäten) auf der ReactOS-Ausführungsschicht. Die ursprüngliche Zielplattform für ReactOS war das Win32k Subsystem. Es wird jedoch heute nicht mehr ausdrücklich hervorgehoben, da es Teil der Ausführungsschicht wurde und im Kernelmodus läuft. Die Implementierung anderer grafischer Subsysteme wird durch eine Programmierschnittstelle im Win32k Subsystem unterstützt. Windows NT Grafiktreiber sind eng mit dem Design des Win32k Subsystem verknüpft. Es ist unpraktisch für Usermode Subsysteme direkt mit den Grafiktreibern zu interagieren. Deshalb sollte ein anderes Subsystem für grafisches Interfaces das API des Kernelmode Win32k Subsystems benutzt werden. Ein solches Subsystem muss nicht notwendigerweise vom Win32k Fenstermanager abhängig sein, sondern kann stattdessen direkt die bereits zur Verfügung stehenden Grafikprimitiven des Win32k Subsystems benutzen.

Native API-Architektur

Standardmäßig ruft der Quellcode der nativen API-Architektur-Aufrufe des Benutzer-Modus verschiedene Dienste des Kernel-Modus auf. Die API ist dabei äquivalent zum System Call Interface, welches von den meisten UNIX-Derivaten genutzt wird. Es existiert keine Dokumentation der nativen API-Architektur seitens Microsoft Windows NT/2000/XP, sodass sich Programmier mit den Win32 API's behelfen müssen. Seitdem ReeactOS zum OpenSource-Projekt wurde, steht unsere native API-Architektur jedem Applikations-Programmierer zur freien Verfügung. Die Implementierung hierfür befindet sich in der NTDLL.dll. Zusätzlich zum Einbinden der Einstiegs-Punkte der nativen API in den Benutzer-Modus, beinhaltet die NTDLL.dll weiterhin Methoden zum Starten von Prozessen sowie Quellcode zum Laden von Modulen. Oben genannte Einstiegs-Punkte rufen ihrerseits die KiSystemService-Methode des Kernel-Modus auf, welche dessen Dienste in der System-Tabelle KiSystemServiceTable nachschlägt.

Ziele bezüglich Kompatibilität

Das anfängliche Ziel von ReactOS bezüglich Treiber- und Anwendungskompatibilität war Microsoft Windows NT 4.0. Seither wurden Microsoft Windows 2000, XP, Server 2003 und Vista veröffentlicht. All dies sind Nachfahren von Windows NT. Aus diesem Grund können wir Schritt für Schritt unser Kompatibilitäts Ziel ändern, ohne uns Gedanken über die Architektur zu machen die sich zu stark ändert. Tatsächlich berichtet Windows 2000 Versionsinformationen intern als Windows 5.0, XP als Windows 5.1, Windows Server 2003 als Windows 5.2 und Windows Vista als 6.0. Das ReactOS Team strebt derzeit Windows 2003 Server als offizielles Kompatibilitäts Ziel an. Von den aktuellen Releases hat sich der Server 2003 als einer der stabilsten erwiesen. Das bedeutet nicht, dass Eigenschaften der späteren Windows NT Versionen nicht in ReactOS einfliessen und weiterhin neue Schnittstellen eingebaut werden.


ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.