Zum Inhalt springen

X Window System

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 20. April 2006 um 21:32 Uhr durch Polluks (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Logo des X Window System

Das X Window System (auch: X Version 11, X11, X, aber nicht X-Windows) ist eine Sammlung von Protokollen, Computerprogrammen und Standards zur Ansteuerung grafischer Bildschirme im Allgemeinen und zur Anzeige einer grafischen Benutzungsoberfläche, vor allem unter Unix-Systemen.

Geschichte von X

X wurde 1984 im Projekt Athena in Zusammenarbeit des MIT, der Digital Equipment Corporation und IBM entwickelt. Die erste Version wurde im Juni 1984 freigegeben, im September 1987 folgte die Version X11.

Als 1988 der Erfolg immer größer wurde, wurde das nicht-kommerzielle X-Konsortium gegründet, welches die weitere Entwicklung übernahm. Es veröffentlichte verschiedene Versionen, die letzten große war X11R6 1994. Danach übernahm The Open Group die Entwicklung und Standardisierung. Seit 2004 wird es unter Führung von X.Org weitestgehend standardisiert. Im Dezember 2005 wurde die Version X11R7.0 veröffentlicht. Zu großer Verbreitung auf PCs brachte es die Implementierung in Form der freien Software XFree86. Diese hatte aber 2003 projektinterne und lizenzrechtliche Probleme, was im Endeffekt zur Auflösung des Entwicklerteams führte. Der weiterentwickelte X.Org-Server der X.Org Foundation trat in den meisten Fällen in dessen Fußstapfen, und gilt seitdem als der meistverbreitete X-Server.

Technik

Der X-Server steuert die Ein- und Ausgabegeräte wie die Maus, Tastatur, den Bildschirm und die Grafikkarte. Um dies zu erreichen, kommuniziert er in der Theorie mit dem Betriebssystem-Kernel, in der Praxis wird der Kernel aber auch umgangen.

Die Darstellung bei X ist die eines rastergrafikbasierten Windowing-Systems, das verschiedene Funktionen bereit stellt. Dazu gehört das Zeichnen und Bewegen der Fenster, die ereignisorientierte Handhabung eines Zeigergeräts wie einer Maus, die Interprozesskommunikation und teilweise auch die Verwaltungsfunktionen für Druck und Sound. X ist also ein Minimalsystem, bei dem zum Zeichnen lediglich Primitives wie Linien, Muster, etc. bereitgestellt werden.

Das eigentliche Aussehen und Verhalten des Fenstersystems wird deshalb nicht von X bestimmt, sondern von dem Fenstermanager, der wie eine normale Anwendung einfach als Client des X Servers läuft. Für das Aussehen der Programme selbst aber ist dieser nicht verantwortlich, dies übernimmt meist eine Oberflächenbibliothek, die das Zeichnen und Verwalten der typischen Elemente einer grafischen Oberfläche wie z. B. Menüs und Buttons übernimmt. Siehe dazu auch Arbeitsoberfläche.

Kommunikationsmodell

X ist netzwerktransparent und baut auf dem Client-Server-Modell auf. Zu beachten ist hierbei, dass der X-Server auf dem lokalen Arbeitsplatzrechner läuft, während der X-Client ebenfalls dort, oder aber auf einem entfernten Rechner ausgeführt werden kann.

  • Der X-Server läuft auf dem Rechner am Arbeitsplatz und stellt seine (grafischen) Dienste den X-Clients zur Verfügung. Er enthält den Grafikkartentreiber, Treiber für Tastatur und Maus, und kommuniziert mit dem X-Client über das Netzwerk.
  • Der X-Client wird hingegen durch das Anwendungsprogramm dargestellt, das lokal auf dem selben, oder auch auf irgendeinem entfernten Rechner laufen kann (sofern eine Netzwerkverbindung zwischen beiden besteht). Der X-Client benutzt die Dienste des X-Servers um eine grafische Darstellung zu erreichen und empfängt von ihm die diversen Ereignisse (events) wie Tastenanschläge, Mausbewegungen, Klicks usw.

X-Terminal

Das in der Großrechner-Welt bekannte, textbasierte Terminal-System (dort meist proprietäre wie IBM 5250 und 3270; unter Unix die bekannten seriellen Terminals wie z. B. VT100) erlebte seine grafische Weiterentwicklung zum X-Terminal; ein Rechner, auf dem nichts anderes als ein X-Server läuft. Diese X-Terminals werden häufig genutzt, um mit leistungsschwachen Rechnern auf rechenintensive Anwendungen zuzugreifen: die Anwendung selbst läuft auf einem Server, das X-Terminal übernimmt nur die Anzeige der grafischen Oberfläche.

Stärken

Das X-System wurde von Anfang an für den effizienten Netzwerkbetrieb konzipiert. Die Kommunikation zwischen Client und Server läuft über ein standardisiertes Protokoll ab, das nur relativ geringe Transferraten benötigt. Der Quellcode des X-Systems ist zwar objektorientiert, aber dennoch in C geschrieben, so dass eine Übersetzung auf nahezu jedem Unix-Rechner möglich ist. Das X-System ist im Gegensatz zu aktuellen MS-Windows-Versionen kein Betriebssystem und ein Absturz von X hat deshalb i.d.R. auch keinen Einfluss auf die Integrität des selbigen. Weiterhin hat der Windowmanager (die „Bedienoberfläche“) im Prinzip denselben Status wie ein X-Client: Man kann im laufenden Betrieb einen Windowmanager durch einen anderen ersetzen. Bereits mit sehr kleinen Windowmanagern (z. B. twm, ca. 140 KB) kann komfortabel gearbeitet werden.

Durch den durchdachten, hierarchischen Aufbau des Systems ist beispielsweise Folgendes möglich:

  • An einem X-Server mehrere Bildschirm-Arbeitsplätze betreiben.
  • Für Entwicklungs- und Testzwecke einen X-Server in einem Fenster eines anderen X-Servers laufen lassen.
  • Programme an einem Rechner mit völlig anderer Hard- und Software als dem Bedienrechner ausführen.

Die Weiterentwicklung von X läuft im Vergleich zur Hardware auf großen Zeitskalen, mit nur geringen Veränderungen ab. Kompatibilitätsprobleme treten daher nicht auf, wenn nur Standardbibliotheken verwendet werden. Allerdings benutzt ein großer Teil der X-Clients heute Erweiterungen wie Xft, XVideo oder Xinerama.

Schwächen

Die strikte Trennung des X Window Systems vom Betriebssystem und von der Benutzeroberfläche führt zu einem vergleichsweise flexiblen System, das aber auch sehr uneinheitlich erscheinen kann. Es kann durchaus vorkommen, dass jedes der Programme, die man selbst benutzt, unterschiedlich aussieht und sich geringfügig unterschiedlich verhält.

Ein möglicher Lösungsansatz ist die Erstellung einer Desktopoberfläche mit einheitlichen Oberflächenbibliotheken. Die heute bekanntesten Systeme dieser Art sind KDE und GNOME, historisch von Bedeutung ist auch CDE. Ein alternativer Lösungsansatz wäre es, auf X vollständig zu verzichten und es durch ein auf höherem Niveau angelegtes System zu ersetzen, das von Beginn an eine einheitliche Behandlung von Oberflächenelementen beinhaltet. Ein solcher Versuch ist das Fresco-Projekt, aber auch das Y Window System.

Ansätze zur Verbesserung

Ein weiteres Problem beim Einsatz des X-Window-Systems über Rechnergrenzen hinweg ist seine sehr häufig langsame und dem Anwender „zäh“ vorkommende Performance bei Verbindungen über schmale Bandbreiten mit hoher Latenzzeit (Modem, ISDN).

Mögliche Ansätze, diesen Problemen zu begegnen sind

  • Kompression der Übertragungsdaten,
  • Anlegen eines Caches für schon übertragene Daten und
  • Reduzierung der Roundtrips zwischen X-Client und X-Server

Viele „Roundtrips“ sind unnötig und werden teilweise von ineffizienter Programmierung von X-Applikationsprogrammen verursacht. Ein effizienter Cache erspart die wiederholte Übertragungen derselben Datenblöcke (z. B. Symbole in Programm-Menüleisten). Die starke Kompression reduziert den Datenverkehr weiter.

Verschiedene Projekte versuchen, diese Ansätze zu implementieren. In jüngerer Zeit hat dabei das NX-Projekt der italienischen Firma NoMachine einen hohen Bekanntheitsgrad erreicht. Andere Projekte versuchen, die Schwächen von X11 durch ein komplettes Redesign zu umgehen, haben dabei aber mit Akzeptanzproblemen zu kämpfen. Alternativ kann man die Netzwerktransparenz von X ungenutzt lassen und den kompletten Bildschirminhalt eines X-Servers, der mit den Clients auf demselben Rechner läuft, mit Programmen wie VNC oder rdesktop übertragen.

Low Bandwidth X

Ein anderes Projekt, das diese Ansätze umsetzen wollte, war das Low-Bandwidth-X-Projekt von Keith Packard. Es war gedacht, eine Erweiterung des X-Protokolls zu erstellen, um dessen Netzwerktransparenz auch für niedrige Bandbreiten nutzbar zu machen. Mit der Veröffentlichung der von X11R6.3 durch das X-Konsortium im Dezember 1996 wurde LBX eine volle Erweiterung des X Protokolls. Da es aber nie großflächig genutzt wurde und auch nur für einen Teil der Probleme eine Lösung bieten konnte, wurde das Projekt im Laufe des Jahres 2000 von Keith Packard für tot erklärt Vorlage:Ref.

Bekannte Vertreter

Da es sich bei X um frei einsehbare Protokolle und Standards handelt, gibt es mehrere Projekte, die versuchen diese umzusetzen. Die bekanntesten sind die auch schon erwähnten Server X.Org und XFree86.

Quellen

  1. Vorlage:Fußnote

Literatur