私はクライアントがソケットを介してサーバープロセスに接続し、Windowsサーバーにタスクを送信するのではなく、特定のタスクを実行するX11システムの仕組みをよく知っています。
しかし、GUIアプリケーションがMac OS XのWindowsシステムとどのように対話するかについての説明がわかりません(良い文書も見つかりません)。私の質問のいくつかは次のとおりです。
- アプリケーションはWindowsシステムからイベントをどのように受け取りますか?
- アプリケーションをカーネルまたは一部のWindowsシステムサーバーに登録する必要がありますか?
- Windowsシステムはアプリケーションにディスプレイの更新をどのように要求しますか?
- アプリは再表示タスクをどのように実行しますか?
- ソケットベースのプロトコルやWindowsシステム用の他のRPCシステムはありますか?
- Windowsシステムやアプリケーションはハードウェアに直接アクセスできますか?
- クライアントアプリケーションとWindowsシステムの間で何ができますか?
答え1
私がこれまでに収集した内容は次のとおりです。
アプリケーションは一部のプライベートAPIを介してWindowServerプロセスと通信し、WindowServerプロセスは実際にハードウェアイベント(マウス、キーボード)を取得し、これらのイベントをクライアントアプリケーションに渡します。 (これはまだ一般的な質問です。どのプロトコル(もしあれば)を使用するのか、MachポートとMIGを使用するのか、またはいくつかのソケットベースのAPIを使用しているのかはわかりません。)
ここにいくつかの情報があります:
WindowServerはQuartzシンセサイザです。通常、アプリケーションはCoreGraphics API(CGXXX関数)に公開されているQuartz2D APIを使用します。アプリケーションは、CoreGraphics「コンテキスト」(CGContext)を生成し、そこに描画します。大きなビットマップで完了したら、コンテキストをプッシュするのか、X11のようにサーバーにジョブを送信するのかは、まだ開いている質問です。
WindowServerプロセスの特定の側面を制御するための制限されたAPIがあります。通常、設定アプリで実行される構成設定の種類ですが、公開されたカーボンに加えて、アプリケーションが実際にグラフィック要求を転送したりサーバーからメッセージを送信したりする方法についてのドキュメントはありません。 /ココアAPI。
答え2
「ココアとは何か?」に関する部分ココア基本ガイド下から上への建築の素晴らしいイラストがたくさんあります。
答え3
OS X内部の最高のリソースはAmit SinghのMac OS Xの内部。非常に詳細ですが、残念ながらOS X 10.4以下にのみ適用されます。 Google ブックスでは時事。
AppleのOS Xドキュメントまた、素晴らしいリソースであり、最新バージョンです。
答え4
以前のバージョンのMacOSでは、プロモーションはQuickDrawで行われましたが、OS XではCocoaに置き換えられました。
しかし、X11と並行しているわけではありません。たとえば、X11にはオーディオは含まれていませんが、Cocoaには含まれています。