• ベストアンサー

X window systemの仕組みについて

LinuxやFreeBSDのX Window systemについて教えてください。 "X.Org Foundation"前提で構いません。 1)Xはネットワーク通信を介して使われることを前提として設計されている。 2)クライアントサーバ型システムをとっている 3)つまり、たとえばKNOPPIXやPC-BSDなどのLIVE CDを起動して表示されるGUIシステムは、  自分で立てたXサーバ(127.0.0.1)に対して自分がクライアントとして接続しに行っているに過ぎない。 4)よってその気になればMS-Windowsや漢字Talk上でも、クライアントさえあればKNOPPIXのXサーバに  接続してデスクトップを引っ張ってこれる この理解は正しいですか。 これは目的から外れる質問ですが、可能でしたら教えて下さい 4)Windowsシリーズもこのシステムを採用しているのか、あるいは直接入出力デバイスの描画なり入力なり を管理しているのか 5)後者であればWindowsXP sp2のリモートデスクトップシステムの仕組みはX.Orgとはまったく異なる仕組みなのか

質問者が選んだベストアンサー

  • ベストアンサー
noname#136147
noname#136147
回答No.5

> 1)、2) 高性能マシンや非力なマシンと組み合わせて効率よく仕事をさせるために クライアントサーバ型とすることでパフォーマンスを得られるように 設計されたのではないでしょうか。 詳しくはリンク先を参照してください。 ・X を理解する http://www.freebsd.org/doc/ja/books/handbook/x-understanding.html ・X Window System(Xウィンドウシステム)の動作原理 Xプロトコル http://www.stackasterisk.jp/tech/engineer/xwindow01_01.jsp > 3) そのとおりです。 ただし、クライアントとサーバが同一マシンの時は、 UNIXドメインソケット(/tmp/.X11-unix/Xn)を使用し、違うマシンの時はTCP/IPを使用するようです。 > 4) すでにWindows用ならば、cygwinを使ったり、 他にもExceedのような商用のものを用いるとUnixアプリケーションを 動かす(Windows側が表示でXサーバ、アプリを動かすUnix側はクライアントになるのでしょうか?) こともできます。 LinuxやFreeBSDなどのマシンが2台あれば、 Xアプリならば、-displayオプションやDISPLAY環境変数を使うことで 試すことが出きると思います。 host1、host2の2台があったとして、 host1側で、 $ xhost +host2 とし、(最近はXAuthじゃないとダメな場合も‥‥) host2側で、 $ xeyes -display host1:0 などとすると、相手マシンにxeyesを表示できたり、 host1=>host2側にtelnetやsshでログインした後に、 $ emacs -display host1:0 などとすると、相手マシンのemacsが自分のホストで起動したりします。 これによって重いアプリケーションを高性能マシンで動かし 自分のホストでは描画だけ、などという風に使うことが出来ます。

4kobun_mac
質問者

お礼

遅くなりすみません。CygwinをセットアップしてWindows側のFWでポートを開けてやり、Linuxのtermからviはもちろん、GUIソフトであるワープロソフトなどをコマンドラインから起動したら見事にWindows側でそのUIが表示されました。 あまりに簡単にできてしまったので少し驚いています。 リンク先は熟読しておきます。ありがとうございます、解決です。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • gon987
  • ベストアンサー率16% (53/313)
回答No.4

>サーバ, 「その画面で動くプログラム」のがクライアント. >だから, 「X としてのサーバ/クライアント」と「プログラム実行環境としてのサーバ/クライアント」は逆になりますが, 「サーバ/クライアント」という言葉の意味自体は逆じゃないです>#1. それだとVNCのサーバとクライアントの関係がちょっと変になる気がしますよ?

4kobun_mac
質問者

お礼

確かにこのあたりのことは解釈に相違があってややこしいですね。 http://www.atmarkit.co.jp/flinux/special/vnc01/vnc01a.html うーん。

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

何らかの「サービス」をするのが「サーバ」, そのサーバのサービスを使って仕事をするのが「クライアント」で, X の場合「X の画面を提供する」のがサーバ, 「その画面で動くプログラム」のがクライアント. だから, 「X としてのサーバ/クライアント」と「プログラム実行環境としてのサーバ/クライアント」は逆になりますが, 「サーバ/クライアント」という言葉の意味自体は逆じゃないです>#1.

4kobun_mac
質問者

お礼

今回は被操作PC側をサーバという認識で書きました。でも、今後は前提認識を併記するようにします。ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

本題じゃない所への回答で申し訳無い。本題への回答は識者に任せる。 >4)Windowsシリーズもこのシステムを採用しているのか、あるいは直接入出力デバイスの描画なり入力なり >を管理しているのか 直接ではないが「デバイスコンテキスト」を介して「仮想画面」に描画を指示している。なので、クライアントサーバー型ではない。 その「仮想画面の先」に、つまり、「デバイスコンテキストの先」に、実画面があったり、プリンタがあったりする。 要は「デバイスコンテキストのドライバを介してアクセスしている」に過ぎない。 >5)後者であればWindowsXP sp2のリモートデスクトップシステムの仕組みはX.Orgとはまったく異なる仕組みなのか まったく異なる。 Windowsのリモートデスクトップシステムはクライアントサーバー型ではないので、リモートもクライアントも「それぞれ1つしか」存在できない。「1対1」のサービスとなる。

4kobun_mac
質問者

補足

デバイスコンテキストというやつがあるおかげで各アプリケーションは実ハードウェアの仕様を意識せずとも利用できる、だからそれを呼び出すための命令やそれに対する応答は、別にIPでカプセル化して遠隔で送り出しても同じこと、ということなのだと勝手に理解しました。 ありがとうございます。私が理解するにはもうちょっと勉強が必要かも・・・。 最近はSCSIコマンドをIPでカプセル化してネットワーク経由で送り出す仕組みもあるようですが、面白いですね。

全文を見る
すると、全ての回答が全文表示されます。
  • gon987
  • ベストアンサー率16% (53/313)
回答No.1

>3)つまり、たとえばKNOPPIXやPC-BSDなどのLIVE CDを起動して表示されるGUIシステムは、 > 自分で立てたXサーバ(127.0.0.1)に対して自分がクライアントとして接続しに行っているに過ぎない。 逆。 Xサーバのサーバとクライアントの関係は通常のサーバクライアントのシステムとは逆の関係になっている。 だからWindows版Xサーバとか通常ならクライアント側の部分がサーバと言われる状態になる。 (Windows版XサーバでLinux環境に接続とかね。) >5)後者であればWindowsXP sp2のリモートデスクトップシステムの仕組みはX.Orgとはまったく異なる仕組みなのか 詳しい仕様は知らないけどVNCに近いシステムだと思いますよ。

4kobun_mac
質問者

お礼

実際に物理キーボードを叩くこちらの方がサーバ、こちらの方がそのマシンを遠隔で掌握するからサーバ、ということですね。 その考えは無かったので参考になりました。ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • X Window System に替わるもの

    どこに有ったのか失念してしまったのですが、 いわゆるXについて代替するwindow systemが考えられているみたいな記事を最近読みました。 UBUNTUの次期リリースがどうとか言ってたような記憶があります。 何か新しいwindow systemについて知っていることがあれば教えてください。 また、Xのようにサーバとホストの仕組みではなく、ローカルでGUIを使うためのプログラムを書くには何を勉強する必要があるでしょうか。 Xのソースとか読んで理解するのが良いとは思いますが、他にいい方法があれば教えてください。

  • x window systemについて

    xの通信内容について、ご教授頂きたく。 サーバーAにXサーバーを用意して、サーバーBにXクライアントを用意します。 サーバーBのGUIをサーバーAで表示させる場合、BからAにたいしてはTCP6000ポートでの接続が発生しますが、AからBへはその応答パケットしか飛ばない、という認識は合っていますでしょうか? 疑問に思っているのはAでのキーボード操作の時、どんなパケットのやり取りになるのか、です。 宜しくお願いします。

  • X Window SystemにおけるXサーバのインターセプト

    X Window Systemについて質問させてください。 Xサーバから送られてくるキーボードやマウスイベント、 またはクライアントから送られてくるウィンドウイベント等をインターセプトすることはできますか? インターセプトと言うと語弊があるかもしれませんが、Xサーバから送られてくる情報を複製してクライアントとログファイルに出力したいのです。 イメージとしては以下の通りです。 [Xサーバ]  ↑  ↓(マウスイベント等) [インターセプタ] → [ログファイル]  ↑ (ウィンドウイベント) [クライアント] いま直面している問題は以下の通りです。 サーバ/クライアント間にインターセプタを挟むということは、 インターセプタは本来サーバが用いるべきソケットを使うことになりますよね? だとしたらXサーバが起動する前に(ソケットが作られてしまう前に)インターセプタを起動させておかないといけないと思うのですが、この方法は合っていますでしょうか。 直接解答につながる意見でなくても構いませんので、思いつくことがあれば是非ご教示ください。よろしくおねがいします。 --- 環境 OS :Fedora 11 X :X.Org Foundation

  • X Window SystemでWindowsOSにXクライアントをインストールできる?

    X Window Systemの質問です。 WindowsOSにXクライアントをインストールして、そのPCからネットワーク上のLINUXOSにインストールされたXサーバを操作するということはできるのでしょうか? 素人の質問ですが宜しくお願いします。

  • X Window Systemが起動しない

    Debianをインストールしましたが、GUIが起動しません。 ためしに、CUIなのでログインし、「startx」としたところ、、 X.Org X Server 1.4.2 Release Date: 11 June 2008 X Protocol Version 11, Revision 0 Build Operating System: Linux Debian (xorg-server 2:1.4.2-10.lenny3) Current Operating System: Linux buffalo 2.6.26-2-686 #1 SMP Thu Jan 27 00:28:05 UTC 2011 i686 Build Date: 25 September 2010 12:05:44PM Before reporting problems, check http://wiki.x.org to make sure that you have the latest version. Module Loader present Markers: (--) probed, (**) from config file, (==) default setting, (++) from command line, (!!) notice, (II) informational, (WW) warning, (EE) error, (NI) not implemented, (??) unknown. (==) Log file: "/var/log/Xorg.0.log", Time: Mon May 2 21:28:57 2011 (==) Using config file: "/etc/X11/xorg.conf" (II) Module "ramdac" already built-in (II) Module "ddc" already built-in (EE) SIS(0): ************************************************** (EE) SIS(0): ERROR: (EE) SIS(0): Virtual screen too big for memory; 4800K needed, 4096K available (EE) SIS(0): END OF MESSAGE (EE) SIS(0): ************************************************** (EE) Screen(s) found, but none have a usable configuration. Fatal server error: no screens found giving up. xinit: Connection reset by peer (errno 104): unable to connect to X server xinit: No such process (errno 3): Server error. とでてきました。 どうすれば起動するのでしょうか? Debian 5.0.3 lenny メモリ 256MB HDD 40GB 一応、VNCをインストールしてWindowsから操作はできるようになっています。 (しかし、タスクバーなどが表示されていません。) 宜しくお願いします。

  • VNCとXの関係について

    VNC関連の過去ログは多かったのですが該当する質問が 見つけられなかったため投稿させていただきます。 RedHat9のマシンにtightvncサーバをインストールし 別マシンからviewerを利用するとサーバのマシンと クライアントのマシンで描画されてるデスクトップが 異なります。 私の認識ではXサーバの画像を見る事ができるのがVNCで、 クライアントはXを立ち上げるわけではないと思っていました。 以前は別環境でVineにインストールし、Windows2000から Linuxのデスクトップを見る事ができ、winからLinuxの デスクトップ操作ができました。 要点としましては VNCのサーバとクライアントでディスプレイの同期、マウス、キーボードの同期ができていない ということです。 なにか原因が考えられるようでしたら教えてください。 サーバ:Redhat9 クライアント:VineLinux2.5,Windows2000(両方試した) ソフト:tightvnc-server-1.2.8-1 また、投稿のカテゴリーがかなりあやふやなため もしカテゴリーを変えるべきでしたらご指摘お願いします。

  • モニタを接続しない環境でX Window Systemが起動してくれない

    タイトルのとおりモニタを接続しない環境でX Window Systemが起動できず困っています。 省スペースマシンでファイルサーバー(NAS的な扱い)を構築しようと思い下記構成でシステムを構築しました。 マザーボード: インテル製「D945GCLF2」 CPU: (オンボード) メモリ: Transcend製JetRamDDR2-800「JM800QLU-2G」(2GB) ハードディスク: 日立製「Travelstar5K320(HTS543232L9A300)」(320GB) OS: DebianGNU/Linux5.0 デスクトップ環境: GNOME 主なデーモン: Samba+Swat、Xrdp、Telnet、NTP マシンにはモニタや入力装置は接続せずに電源ケーブルとLANケーブルのみを接続して運用したいと思っています。 設定をいじる場合はXrdpへWindowsマシンよりリモート接続して操作します。 構築作業自体は問題なく完了したのですが実際にモニタや入力装置を外して電源を入れたあとにXrdpへリモート接続するとマウスが正常に機能しません。 正確にはデスクトップの上下のバーに対してマウス操作が全く利かないのです。 そこでモニタをつなげてみると Failed to start the X server (your graphical interface). It is likely that it is not set up correctly. Would you like to view the X server output to diagnose the problem? というメッセージがブルー画面上に出ていました。 恐らくXrdpの障害というよりもX Window Systemが正常に起動できなかったことが原因っぽいです。 モニタを接続した状態で起動するとこのエラーは出ないためモニタの有無が関係しているようです。 モニタの電源のOnOff状態は関係なくただケーブルで繋がれていればエラーは出ないようです。 (モニタの電源ケーブルを抜いた状態でもマシンに接続されてさえいればエラーは出ない) なお、モニタを接続した状態で正常起動させてリモート接続するとマウスは機能します。 一応ネットでも調べてみたのですがモニタの有無についての有力な情報は見つかりませんでした。 どなたかモニタを接続していない状態でX Window Systemを起動させる方法をご存知の方よろしくお願いします。

  • 共有お絵かきシステムの同期の取り方について

    現在、共有ホワイトボードになるものを作っています。 今は以下のような方法で同期をとろうとしています。 クライアントからサーバへはソケットで接続し、サーバ側で接続があれば別スレッドで入力を待ち続けます。 スレッドを新しく走らせる時点でクライアントのソケットに対するOutputStreamを配列に入れ、複数のクライアントの出力先の管理をします。 各スレッド毎に入力(描画情報)があると、上記のOutputStreamの配列に対してその要素数分だけfor文をまわし、受け取った情報を接続中のクライアントに出力する。 といった同期の取り方をしています。 しかし、各クライアントからの描画情報はとても多く、クライアントが3人以上になるとすぐに固まってしまったり、クライアント側で情報がごちゃごちゃになり期待通りの描画がされなかったりといったことになります。 共有ホワイトボード等でお絵かき情報の同期の取り方について何か良い考え方はありませんでしょうか?

    • ベストアンサー
    • Java
  • CentOSのデスクトップがシンプルになってしまいました。

    CentOS5をインストールしました。 目的は、ファイルサーバーにするためです。 しかし、うまくいきませんでした。 (最初は、CUIで操作していましたが、不慣れなためGUI操作に変えました。) そこで、sambaをインストールしたりアンインストールしたりしました。 そして、再起動しました。 すると、今までWindowsのようなカラフルなデスクトップが、急にシンプルなデスクトップになりました。 http://commons.wikimedia.org/wiki/File:X-Window-System.png こちらのページのようなデスクトップになってしまいました。 これを、元のカラフルなデスクトップに戻すには、どのようにすればいいのでしょうか? よろしくお願いします。

  • リモートデスクトップ 同時接続数

    お世話になっております。 OS:Windows Server 2012 Standard 今回、社内のサーバーリプレースで2003から2012となりました。 クライアントPCからサーバーへリモートデスクトップで接続し、サーバーのローカルadministratorでログオンすると、既にログオンしているユーザー(同administrator)がログアウトされてしまいます。 1ユーザーの接続数がデフォルトで1となっているからだと思うのですが、どこで変更できるのでしょうか。 調べたところ、レジストリを修正することにより変更できるようなのですが、できればGUIから変更したいところです。 http://handcraft.blogsite.org/blog/2012/10/20/909 ご教授の程、宜しくお願い致します。

このQ&Aのポイント
  • EW-M670FTからPX-M730Fに買い替えましたが、以前のアドレス帳のデータを移行する方法が知りたいです。
  • 新しいEPSONプリンターにアドレス帳のデータを移行する方法を教えてください。
  • EPSON製品のアドレス帳を新しい機種に引き継ぐ方法を教えてください。
回答を見る