Welche Architektur hat das Fenstersystem von Mac OS X?


34

Ich bin mit der Funktionsweise des X11-Systems vertraut, bei dem Clients über einen Socket eine Verbindung zum Server herstellen und Vorgänge an den Windows-Server senden, um bestimmte Vorgänge in ihrem Namen auszuführen.

Ich verstehe jedoch nicht (und konnte keine guten Dokumente finden), wie eine GUI-Anwendung mit dem Windows-System unter Mac OS X interagiert. Einige der Fragen, die ich gestellt habe, sind:

  • Wie empfängt eine App Ereignisse vom Fenstersystem?
  • Muss sich die App beim Kernel oder einem Windows-Server registrieren?
  • Wie fordert das Fenstersystem eine App auf, ihre Anzeige zu aktualisieren?
  • Wie löst eine App eine erneute Anzeige aus?
  • Gibt es ein Socket-basiertes Protokoll oder ein anderes RPC-System für das Fenstersystem?
  • Hat das Fenstersystem oder die Anwendung direkten Hardwarezugriff?
  • Welche Operationen stehen zwischen Client-Apps und dem Fenstersystem zur Verfügung?

Antworten:


14

Folgendes konnte ich bisher sammeln:

Anwendungen kommunizieren über eine private API mit dem WindowServer-Prozess. Der WindowServer-Prozess empfängt tatsächlich Hardwareereignisse (Maus, Tastatur) und leitet diese an die Clientanwendungen weiter. (Dies ist immer noch eine offene Frage: Welches Protokoll verwenden sie, verwenden sie Mach-Ports und MIG oder eine Socket-basierte API, nicht sicher).

Einige Informationen finden Sie hier:

https://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/OSX_Technology_Overview/GraphicsTechnologies/GraphicsTechnologies.html#//apple_ref/doc/uid/TP40001067-CH273-SW1

Der WindowServer ist der Quartz Compositor. In der Regel verwenden Anwendungen die Quartz2D-API, die in der CoreGraphics-API verfügbar gemacht wurde (CGXXX-Funktionen). Anwendungen erstellen CoreGraphics "Contexts" (CGContext) und zeichnen dort. Ob der Kontext gepusht wird, wenn er als große Bitmap erstellt wird, oder ob die Vorgänge wie auf X11 an den Server gesendet werden, ist noch offen.

Es gibt eine eingeschränkte API, die zur Steuerung bestimmter Aspekte des WindowServer-Prozesses zur Verfügung steht. Dies ist die Art der Konfigurationseinstellungen, die normalerweise in der Anwendung "Einstellungen" vorgenommen werden. Es gibt jedoch keine Dokumentation darüber, wie Apps Grafikanforderungen oder Pumpmeldungen vom Server tatsächlich übermitteln die Kohlenstoff / Kakao-APIs ausgesetzt.


Die Verbindung ist unterbrochen
Mick

3

Das "Was ist Kakao?" Der Abschnitt des Cocoa Fundamentals Guide enthält eine Reihe großartiger Illustrationen der Architektur von unten nach oben.


2
(Leider können noch keine Notizen gepostet werden): Quartz oder Core Graphics ist das Zeichnungs- und Fenstersystem in OS X (anstelle von QuickDraw). Core Graphics ist ein Teil von Cocoa (Cocoa als Ganzes ist eher mit der gesamten Win32-API vergleichbar als mit GDI, Direct2D oder X)
KellyClowers


1

XQuartz ist das Open-Source-Projekt des X.org X Window Systems, das unter Mac OS X ausgeführt wird. Das Entwickler-Wiki und die Mailing-Liste sollen Ihnen bei Ihren Fragen behilflich sein. Es scheint, als bräuchten Sie jemanden, der tief in das Projekt involviert ist, um diese zu beantworten.


4
Richtig, aber das gilt nur für XQuartz, das nur ein Programm ist, das mit ihrem eigentlichen Fenstersystem kommuniziert. Die Frage war, wie Apps wie XQuarts oder Finder mit diesem Fenstersystem
kommunizieren

1

In früheren MacOS-Versionen wurde das Heben von QuickDraw durchgeführt. in OS X, das von Cocoa abgelöst wurde ...

Es ist jedoch nicht einfach parallel zu X11. Beispielsweise enthält X11 kein Audio, Cocoa jedoch.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.