Laden...

X Window System - X11

Erstellt von bl4ckY vor 13 Jahren Letzter Beitrag vor 13 Jahren 3.539 Views
B
bl4ckY Themenstarter:in
193 Beiträge seit 2009
vor 13 Jahren
X Window System - X11

Muss demnächst einen Präsentation über Softwareschnittstellen halten. Um das ganze möglichst weit zu fächern habe ich mich dazu entschlossen auch etwas über X11 zu erzählen.

Allerdings kommt mir die Erklärung zum Client/Server Konzept etwas eigenartig vor:

* 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 sowie Treiber für Tastatur, Maus und andere Eingabegeräte (wie z. B. Grafik-Tablets) und kommuniziert mit dem X-Client über das Netzwerk.

* Der X-Client ist das Anwendungsprogramm, das die grafischen Ein/Ausgabe-Dienste des X-Servers benutzt. Er kann auf demselben, oder auch auf irgendeinem entfernten Rechner laufen (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.

Das ist von Wikipedia, andere Quellen sagen ähnliches. Kann mir einer Erklären warum die Events vom Server kommen? Damit verliert das ganze Konzept doch seinen Reiz und ist eigentlich ziemlich blödsinnig.

So wie ich es verstehe hat man ca 10 Clients an einem Server, am Server sitzt einer tippt etwas und die 10 Clients können es sehen aber nicht selber dran arbeiten? Sinnvoll wäre es doch wenn man am Client schreibt, Events an den Server gesendet werden, dieser die grafische Abarbeitung macht und das Resultat zurücksendet.

Hoffe so ist es auch gedacht und ich habe nur schlechte Quellen gefunden 😄

E
180 Beiträge seit 2010
vor 13 Jahren
hi

So wie ich es verstehe hat man ca 10 Clients an einem Server, am Server sitzt einer tippt etwas und die 10 Clients können es sehen aber nicht selber dran arbeiten?

nein, das hast du misverstanden, unter linux erhält jeder terminal seinen eigenen arbeitsplatz, d.h. auf der gui siehst du nicht was andere tun, sondern nur deinen eigenen workaround.

stell es dir vor wie der terminalserver von MS, is das selbe prinzip, nur bisle umständlicher bei MS.

Sinnvoll wäre es doch wenn man am Client schreibt, Events an den Server gesendet werden, dieser die grafische Abarbeitung macht und das Resultat zurücksendet

joa und nein, die basis von X11 basiert auf dem SSH protokoll, und das war shcon immer terminalbasiert, d. h. du nimmste deinen ssh client und meldest dich am server an, jedoch arbeitest du auf dem server, nicht auf deinem client. das ssh protokoll wiederum ist dafür da, die kommunikation zwischen beiden sicher zustellen. x11 wiederum macht die ganze geschiche grafisch baut aber auch auf ssh glaub ich auf.

der sinn des ganzen ist letztendlich von überall auf auf die ressourcen (cpukapazität, IO-kapazität) leicht, flexible und sicher zugreifen zu können. deswegen erhälst du auch alle events vom server. du bist an deinem rechner lokal nur ein client. das lässt sich übrigens sehr leicht prüfen visuell, du musst nur auf der verbindung eine hohe last erzeugen und wirst sehen, das diese sich auf dem server breitmacht primär, während dein client relativ unbetroffen ist 😃

B
bl4ckY Themenstarter:in
193 Beiträge seit 2009
vor 13 Jahren

Aber trotzdem müssen doch Tastaturanschläge, Mausbewegungen etc vom Client an den Server gesendet werden. Ich denke aber ich habe meinen Denkfehler gefunden.

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.

Ich denke ich habe diesen Satz falsch interpretiert und die Events die hier gemeint sind, sind jene die die GUI verändern?

799 Beiträge seit 2007
vor 13 Jahren

Die Begrifflichkeit ist mMn etwas verwirrend da man es nicht gewohnt ist, das lokale Programm als Server zu bezeichnen.

Kurzes Beispiel:

Der Server läuft z.B. auf deinem Windows-System und ist rein für die grafische Darstellung der (Linux-)Programme zuständige und der Client läuft auf einer Linux-Kiste die über's Netzwerk die nötigen Daten an den Server schickt um das jeweilige Fenster bei dir am Windows-Rechner darzustellen.

Das heißt die Events werden auch wirklich am Server von dir als Benutzer per Mausclick u. Tastenanschlag getriggered und an den Client übermittelt.

Und ja, das funktioniert auch mit Windows. Es gibt proprietäre Software die es dir ermöglicht einen X-Server auch innerhalb Windows zu verwenden. Ist zwar schon etwas her aber das habe ich beim IT Essentials Kurs von Cisco machen müssen.

As a man thinketh in his heart, so he is.

  • Jun Fan
    Es gibt nichts Gutes, außer man tut es.
  • Erich Kästner
    Krawutzi-Kaputzi
  • Kasperl
3.170 Beiträge seit 2006
vor 13 Jahren

Hallo,

die Erklärungen sind soweit richtig.
Der X-Server ist das Programm das die Fenster zeichnet (Ausgabe) und Tastatur und Maus empfängt. Er stellt also die "Fensterumgebung" zur Verfügung.
Alle Clients sind dann X11-Programme, die eben ihre Ausgabe auf einem bestimmten X-Server rendern und von demselben Server die Benutzereingaben erhalten.

Du sitzt also an Rechner A und startest den X-Server, und startest das Programm auf Rechner B, wobei Du Rechner A z.B. als X-<Server angeben kannst. Dann wird die Ausgabe auf Rechner A gerendert, und die Eingabegeräte von Rechner A genutzt, das Programm läuft aber auf Rechner B.

die basis von X11 basiert auf dem SSH protokoll, Meines Wissens nicht. X11 ist ein eigenständiges Protokoll, und funzt auch ohne ssh.

Da aber SSH eine bequeme Möglichkeit bietet, bei der Verbindung zu einem Fremdrechner den lokalen X-Server zu benutzen (X11-Forwarding), wird es häufig in diesem Zusammenhang benutzt:
Man sitzt an einm Rechner mit X-Server, und verbindet sich zum Fremdrechner per

ssh -X

Der Parameter -X sorgt dafür, daß grafische Programme, die auf dem Remoterechner gestartet werden, den lokalen X-Server benutzen.

Oder ganz einfach gesagt: Die Netzwerkfunktionalität von X11 ermöglicht es, Fensterprogramme auf entfernten Rechner auf dem eigenen Desktop (bzw. X-Server) anzuzeigen und von dort aus zu bedienen.

Grußß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

S
401 Beiträge seit 2008
vor 13 Jahren

die Erklärungen sind soweit richtig.
Der X-Server ist das Programm das die Fenster zeichnet (Ausgabe) und Tastatur und Maus empfängt. Er stellt also die "Fensterumgebung" zur Verfügung.

Schönes Thema hier.
Aus aktuellen Anlass füge ich ein paar Infos bei.
http://ikhaya.ubuntuusers.de/2010/11/05/ubuntu-wendet-sich-langsam-von-x-org-ab/
http://www.golem.de/1011/79165.html
http://www.pro-linux.de/news/1/16360/ubuntu-will-zu-wayland-wechseln.html

Aus den Artikeln kann man auch entnehmen, dass die genutzten Funktionen des X-Servers auf einer Hand ab zu zählen sind. Zu mindestens was das Zeichnen des Desktops angeht. Die meisten Aufgaben haben bereits der Kernel und andere Bibliotheken übernommen.

Gruß, Thomas

B
bl4ckY Themenstarter:in
193 Beiträge seit 2009
vor 13 Jahren

Dann sehe ich aber überhaupt keinen Sinn das ganze über das Netzwerk zu nutzen? Oder ist die netzwerktransparenz nur ein Feature das mitkommt aber eigentlicher keiner brauch?

Ich habe einen Server von dem x-beliebige Clients (Programme) das anzuzeigende Bild bekommen. Da aber die ganzen I/O Sachen nur bei dem Server vorhanden sind müssen sich alle Client Leute die Tastatur teilen 😄 ?

Das das ganze lokal Sinn macht ist klar, wenn Server und Cients auf einem Rechner laufen. Da werden die Eingaben vom Server an die richtigen Clients verteilt. Aber über das Netzwerk über eine längere Strecke? Kann vielleicht (wenn vorhanden) einer ein Beispiel aus der Praxis schnell hinschreiben, vielleicht hilft mir das.

N
60 Beiträge seit 2010
vor 13 Jahren

Das System ist schon ziemlich genial. Folgendes ist damit super möglich und wird öfters praktiziert: Server ist ein Linux/Solairs/BSD ohne Grafische-Oberfläche (X-Server). Jetzt möchte ich als Admin debugging mit Wireshark betreiben (keine Diskussionen über die Rechtsgrundlage, ich sitze im Ausland). Ich kann jetzt an meinem Arbeitsplatz sitzen und starte auf dem Server (z.B. per SSH) Wireshark und sehe das Fenster bequem auf meinem Desktop und kann es bedienen, debugge aber den Netzwerktraffic auf dem Server 😉 Super Sache 😃

Grüße
Nils

187 Beiträge seit 2009
vor 13 Jahren

Noch eine kurze Anmerkung,bin gerade auf Heise drüber gestolpert, vielleicht kannst es für deine Präsentation brauchen. Die Woche: Das Ende von X11?

175 Beiträge seit 2010
vor 13 Jahren

Dann sehe ich aber überhaupt keinen Sinn das ganze über das Netzwerk zu nutzen? Oder ist die netzwerktransparenz nur ein Feature das mitkommt aber eigentlicher keiner brauch?

Siehst Du auch keinen Sinn vom Microsoft Terminal Server? Aus Benutzersicht ist es das gleiche - sprich Dein lokaler Arbeitsplatz ist ein "Terminal" (--> Remote Desktopverbindung) und die Applikation läuft auf dem Server.

Bei Windows wurde dieses "Prinzip" erst kompliziert in die gesamte Windows Infrastruktur implementiert und selbst heute gibt es noch Applikationen, die nicht 100%ig korrekt funktionieren, wenn diese "remote" ausgeführt werden.

Wir UNIX-Anhänger freuen uns seit über 20 Jahren darüber, dass es uns völlig Wurst ist, ob die Applikation remote läuft oder loakal. Es gibt im Grund keinen Unterschied und auch in der Implementierung der Applikation gibt es nichts zu berücksichtigen.

Ich habe einen Server von dem x-beliebige Clients (Programme) das anzuzeigende Bild bekommen. Da aber die ganzen I/O Sachen nur bei dem Server vorhanden sind müssen sich alle Client Leute die Tastatur teilen 😄 ?

Nein.... Ein Programm bekommt kein Bild... Also nochmal: Der X-Server ist das Stück Software, das Dir das grafische Bild anzeigt, die Tastatureingaben- und Mousebewegungen entgegennimmt und diese an das Programm weiterleitet. Die Anwendung/Applikation/Programm ist der Client.

Abstraktes Beispiel: Beim Start der Applikation verbindet sich diese mit dem X-Server. Dann sagt es dem X-Server "mal mir mal ein Fenster mit den Abmassen 123x456 an Position 100,200 mit weissem Hintergrund. Und jetzt pinselt Dir der X-Server auf Deinem PC ein weisses Rechteck auf den Bildschirm. Analog geht es weiter mit allem Zeuchs, das in das Fenster soll. Fakt ist: Der Applikation ist es völlig egal, ob es eine Verbindung zu "localhost" oder zu "x11.foo.ba" aufbaut. Es interessiert die Applikation nicht die Bohne (zu welchem Server es eine Verbindung aufbauen soll/muss entnimmt es der Umgebungsvariable "DISPLAY").

Andersrum genauso: Wenn der Benutzer eine Taste drückt, dann wird der X-Server das "merken" und diesen Tastendruck an die Applikation senden - und in der Applikaktion wir dann der entsprechende EventHandler für diesen Tastendruck aufgerufen.

Das Design von X11 geht so weit, dass die Applikation in der Tat nur den Client-Bereich des Fensters malt. Die Dekoration drumherum ist der Applikation egal - genaugenommen sogar unbekannt. Dafür gibt es den sogenannten Window Manager - und ist austauschbar. Es gibt diese wie Sand am Meer: twm, mwm, fvwm usw....

Das das ganze lokal Sinn macht ist klar, wenn Server und Cients auf einem Rechner laufen. Da werden die Eingaben vom Server an die richtigen Clients verteilt. Aber über das Netzwerk über eine längere Strecke? Kann vielleicht (wenn vorhanden) einer ein Beispiel aus der Praxis schnell hinschreiben, vielleicht hilft mir das.

Was spielt denn jetzt die Entfernung für eine Rolle?!? Und wo ist der Zusammenhang zu X11? Wenn Du mit dem Browser eine Seite in Australien aufrufst ist Dir die Entfernung doch auch egal. Oder bei einer SSH-Verbindung....

Konkretes Beispiel: Server mit Applikationen steht zentral in der Firmenzentrale in [such_dir_ein_land_aus]. Und Du sitzt mit deinem PC oder Thin Client mit X-Server hier in D.

Aus Sicht eines Administrators hat X11 einen ganz besonderen Charme: Ich kann einen Server headless (oder zumindest ohne X11) betreiben, installiere aber einfach die ganzen X11-Libraries und die benötigten Applikationen (was auch ein komplettes GNOME, KDE, CDE, Motif, XFCE oder sonstwas sein kann). Dann kann ich als Admin meinen Benutzern, die ab und zu mal auf einem UNIX-System arbeiten müssen, eine zeitgemäße Oberfläche anbieten (und nicht nur einen nackten SSH-Client), ohne den Server ansich mit einer grafischen Oberfläche ausstatten zu müssen (sprich, auf dem Server muss kein X-Server laufen). Ich muss dann "nur" noch auf den PCs der Anwender einen X-Server installieren. Fertig....

Das ist beispielsweise auch bei einer Installation von Oracle unter unixoiden Betriebssystemen notwendig - der Installer von Oracle ist in Java geschrieben und schreit nach einer grafischen Oberfläche.... Mit obigen Verfahren (X11-Libs auf dem Server installieren, lokal einen X-Server installation) klappt auch eine Oracle-Installation auf einem headless Server....

Bye,
Michael

Debuggers don't remove Bugs, they only show them in Slow-Motion.

B
bl4ckY Themenstarter:in
193 Beiträge seit 2009
vor 13 Jahren

OK, denke soweit habe ich es nun.

Wie wird das denn bei der Netzwerkkommunikation umgesetzt? Nehmen wir an ich sitze in Düsseldorf, der XServer steht in München. Wie merkt der XServer wenn ich eine Taste drücke?

Ich würde jetzt sagen die Application teilt es ihm mit. Aber dem ist ja anscheinend nicht so. Weiß da einer Bescheid?

3.170 Beiträge seit 2006
vor 13 Jahren
Hinweis von MarsStein vor 13 Jahren

2 Beiträge zusammengeführt.

Hallo,

Wie wird das denn bei der Netzwerkkommunikation umgesetzt? Nehmen wir an ich sitze in Düsseldorf, der XServer steht in München. Wie merkt der XServer wenn ich eine Taste drücke? Du hast das Konzept noch nicht richtig verstanden. Wenn Du mit dem X-Server arbeitest, sitzt Du da, wo der Server läuft.
Es ist also nicht wie herkömmliches Client-Server, du sitzt quasi "hinter" der Serveranwendung und kannst von dort die Client-Programme sehen die verbunden sind.

Du kannst damit also Clientprogramme von verschiedenen Rechnern auf dem selben Desktop bedienen.
Du könntest zum Beispiel an Rechner A (dem X-Server) sitzen, und hast Skype auf Rechner B und ein Bildverarbeitungsprogramm auf Rechner C.
Nun kannst Du mittels X11 beide Programme auf Rechner A sehen und steuern, sie laufen aber auf den jeweiligen Netzwerkrechnern (und werden dann dort nicht angezeigt).

Ich würde jetzt sagen die Application teilt es ihm mit.

die Benutzereingaben gehen eben nicht direkt an die Applikation.
Stell es Dir ähnlich vor wie Windows-Messages:
Wenn eine Eingabe erfolgt, wird ja eine Message generiert, und Windows sorgt dafür, daß die Eingabe richtig weitergeleitet wird (an das aktive Programm).
Unter X geht die Eingabe an den X-Server, der kennt die Maus- und Tastaturtreiber, und leitet dann eben die Eingabe (übers Netzwerk) an das laufende Client-Programm, damit dieses die Eingabe verarbeiten kann. Ändert sich dabei etwas an der grafischen Oberfläche, schickt das Client-Programm die Änderungen an den Server, der sie wiederum zeichnet.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

B
bl4ckY Themenstarter:in
193 Beiträge seit 2009
vor 13 Jahren

Ja, so ergibt das ganze auch Sinn. Die Überlegung habe ich zwar auch schon gemacht allerdings durch die Bezeichnungen wieder verworfen.

Konkretes Beispiel: Server mit Applikationen steht zentral in der Firmenzentrale in [such_dir_ein_land_aus]. Und Du sitzt mit deinem PC oder Thin Client mit X-Server hier in D.

Hätte ich richtig gelesen, hätte ich es hier merken müssen.

Danke an alle für ihre Geduld 😄

175 Beiträge seit 2010
vor 13 Jahren

Danke an alle für ihre Geduld 😄

Ich denke, mit dem jetzt gewonnenen Wissen solltest Du den Wikipedia Arttikel noch einmal lesen - jetzt sollte Dir einiges klarer werden/sein.

Denn im Grunde ist der Artikel wirklich sehr gut geschrieben und erklärt ausführlich den X-Server (".... Treiber für Grafikkarte, Monitor, Maus....") und dem X-Client ("Der X-Client ist das Anwendungsprogramm...... empfängt Events vom Server....").

Zwei Sachen noch: Der Name "X11" kommt nicht von ungefähr 😉 Es handelt sich um Version 11 des X Window Systems. Die erste Version, die auch nur ansatzweise der breiten Öffentlichkeit zugänglich gemacht worden ist, war Version 10. Ich denke als Backgroundwissen kann das nicht schaden....

Und mache nie, aber auch niemals den Fehler, das ganze als "X Windows" (man beachte das ssssssssss) zu bezeichnen 😉 Jeder UNIX-Guru würde Dich dafür töten und danach ertränken 😉 Im täglichen Sprachgebrauch sagt man einfach nur "X" oder "X11".

Bye,
Michael

Debuggers don't remove Bugs, they only show them in Slow-Motion.

B
bl4ckY Themenstarter:in
193 Beiträge seit 2009
vor 13 Jahren

Ja das habe ich mir gedacht deswegen habe ich auch pinibelst darauf geachtet kein s dran zu hängen 😄