(57)【特許請求の範囲】
【請求項１】
複数のアプリケーションプログラムを記憶した記憶手段とこれら複数のアプリケーションプログラムを実行する機能を持つアプリケーションサーバとを持つサーバ計算機において、
前記アプリケーションサーバは、
クライアント計算機から出力された前記記憶手段に記憶されたアプリケーションの起動要求を受け付ける起動受付手段と、
この起動受付手段で受け付けた前記起動要求されたアプリケーションを前記記憶手段から読み出し、この読み出したアプリケーションプログラムに基づいてスレッドを作成することによりアプリケーションを生成するアプリケーションロード手段と、
このアプリケーションロード手段により生成されたアプリケーションによって使用されるアプリケーション毎のリソース及び複数のアプリケーション間で共有するリソースを管理するリソースマネージャを有する前記クライアント計算機にＧＵＩを表示するための命令を送信する機能を持つＧＵＩライブラリとを具備し、
複数のアプリケーションを単一プロセス内で実行することを特徴とするサーバ計算機。
【請求項２】
請求項１に記載のサーバ計算機において、
前記リソースマネージャは、前記生成されたアプリケーション内にアプリケーション固有オブジェクトが存在する場合、オブジェクト生成時に当該固有オブジェクト内に前記リソースへの直接参照データを保持させ、この固有オブジェクトが参照データのもとに前記リソースを直接検索可能にしたことを特徴とするサーバ計算機。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＧＵＩライブラリを用いて、クライアント計算機とサーバ計算機との間で分散処理を実行するサーバ計算機に関する。
【０００２】
【従来の技術】
ＵＮＩＸ系ＯＳの成熟化に伴い、ユーザにとって比較的分かり易いＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）環境の遠隔命令処理方式として、Ｘウインドウ・システムが開発されている。
【０００３】
また、各ユーザであるクライアント計算機が遠隔地のサーバ計算機側で所有するアプレット（Ａｐｐｌｅｔ）などの処理内容を転送要求するとか、或いはインストールする方法も考えられている。さらに、サーバ計算機と各クライアント計算機とが個別に命令処理及び通信に関するソフトを用意するものも考えられている。
【０００４】
しかしながら、以上のような幾つかの遠隔命令処理に関し、Ｘウインドウ・システムを用いたものは、ＵＮＩＸ環境等であるＸウインドウ・システムを塔載する環境のみに限られる問題がある。
【０００５】
また、クライアント計算機がサーバ計算機で所有するアプレットを転送要求するシステムは、アプレット自身のデータ容量の大きさにより、ネットワークに大きな負荷がかかる。
【０００６】
さらに、依頼元であるサーバ計算機と依頼先であるクライアント計算機が個別に命令処理及び通信に関するソフトを用意するものは、アプレットの開発はもとより、両者のデータ通信方法の検討開発等に関し、それぞれ個別に検討・開発しなければならず、開発費用が嵩むという問題がある。
【０００７】
そこで、従来、図５に示すような分散処理環境システムが考えられている。このシステムは、ＧＵＩを使用するアプリケーション５１を実行するサーバ計算機５２とＡＷＴ（Abstract  Window  Toolkit：抽象ウインドゥ・ツールキット）サーバ６１を備えた１つ以上のクライアント計算機６２がネットワークを介して接続され、サーバ計算機５２は、ＧＵＩを使用するアプリケーション５１を実行する際、クライアントアクセス時のポート番号を管理サーバ５３に通知する一方、必要に応じてＧＵＩライブラリ５４が使用される。
【０００８】
クライアント計算機６２では、ＡＷＴサーバ６１が管理サーバ５３から通知されたポート番号にアクセスし、遠隔表示用ＧＵＩライブラリ５４と通信を行い、サーバ計算機５２のアプリケーション５１がＧＵＩライブラリ５４を使用した場合、ＧＵＩ６３を取り込んでクライアント計算機６２に表示する。
【０００９】
ここで、クライアント計算機６２は、表示されたＧＵＩ６３上で発生するキーボード入力やマウス操作等の操作情報がＡＷＴサーバ６１を経由し、遠隔表示用ＧＵＩライブラリ５４に転送される。サーバ計算機５２の遠隔表示用ＧＵＩライブラリ５４は、クライアント計算機６２側から転送されてくる操作情報に基づいて該当アプリケーション５１の処理を行う。
【００１０】
【発明が解決しようとする課題】
ところで、以上のような分散処理環境システムでは、サーバ計算機５２上で動作するアプリケーション５１がプログラム実行単位である個別プロセスとして動作することから、主記憶装置のメモリ使用量がほぼアプリケーションプロセス数に比例して増加する。よって、メモリ使用量がアプリケーションプロセス数に比例して増加する場合、次のような問題が出てくる。
【００１１】
あるメモリ容量の主記憶装置を備えたサーバ計算機５２では、同時に実行できるプロセス数がそのメモリ容量の範囲内で制限される。このことは、クライアント計算機６２を増加できないという問題がある。
【００１２】
また、逆の面から考えると、ある同時実行プロセス数を達成するためには、主記憶装置のメモリ容量を増加させる必要があり、コスト的に非常に高くなる問題がある。
【００１３】
本発明は上記事情に鑑みてなされたもので、複数のアプリケーションを単一プロセス内で動作させ、メモリの使用効率を高めるサーバ計算機を提供することを目的とする。
【００１６】
【課題を解決するための手段】
（１）  上記課題を解決するために、本発明は、複数のアプリケーションプログラムを記憶した記憶手段とこれら複数のアプリケーションプログラムを実行する機能を持つアプリケーションサーバとを持つサーバ計算機において、前記アプリケーションサーバは、クライアント計算機から出力された前記記憶手段に記憶されたアプリケーションの起動要求を受け付ける起動受付手段と、この起動受付手段で受け付けた前記起動要求されたアプリケーションを前記記憶手段から読み出し、この読み出したアプリケーションプログラムに基づいてスレッドを作成することによりアプリケーションを生成するアプリケーションロード手段と、このアプリケーションロード手段により生成されたアプリケーションによって使用されるアプリケーション毎のリソース及び複数のアプリケーション間で共有するリソースを管理するリソースマネージャを有する前記クライアント計算機にＧＵＩを表示するための命令を送信する機能を持つＧＵＩライブラリとを備えた構成である。
【００１７】
本発明は、以上のような構成とすることにより、起動手段が例えば外部機器であるクライアント計算機からアプリケーション起動要求を受けると、アプリケーションロード手段は、起動要求されたアプリケーションごとに、所要とするプログラムを用いて要求内容に応じたスレッドグループを構成するアプリケーションを作成し、これらアプリケーション毎のリソース及び各アプリケーション間で共有するリソースを管理するリソースマネージャを有する前記クライアント計算機にＧＵＩを表示するための命令を送信する機能を持つＧＵＩライブラリを設けたので、複数のアプリケーションが単一プロセス内で動作させることが可能となり、多くのリソースが各アプリケーション間で共有させることができ、サーバ計算機のメモリ使用量を大幅に低減することが可能である。
【００２１】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して説明する。
【００２２】
図１は本発明に係わるサーバ計算機を持つ分散処理環境システムの一実施の形態を示す構成図である。
【００２３】
この分散処理環境システムは、サーバ計算機１０と１つ以上のクライアント計算機２０がＬＡＮ，インターネット等のネットワークを介して接続されている。
【００２４】
サーバ計算機１０は、ＯＳ（Operating  System）や所要とする各種のアプリケーションの他、クライアント計算機２０と関係するアプリケーションサーバ１１が設けられ、さらにシステム上必要な各種のプログラムその他必要なデータを保存するディスク装置１２が接続されている。
【００２５】
このアプリケーションサーバ１１は、複数のアプリケーションプログラムを実行する機能をもつプロセスであって、ユーザがＯＳ（図示せず）などを用いてアプリケーション（機能モジュール）を開発し提供するインターフェースの役割を有し、またクライアントアドレスを含むアプリケーション起動要求を受け付けて起動を行うＡＰＩ（Application  Programming  Interface）サーバ１３と、このＡＰＩサーバ１２から起動要求されたアプリケーションのプログラムをディスク装置１２から読み込んで自計算機の主記憶装置（図示せず）上にロードし、各アプリケーション毎に図２に示すようにメインとなるスレッドグループを作成し、そのスレッドグループに属するスレッドおよびサブとなるスレッドグループを作成することにより、アプリケーション起動要求に応じた複数のアプリケーションＡ，Ｂ，…を生成するアプリケーションローダ１４とが設けられている。なお、サブとなるスレッドグループには、さらにサブスレッドグループに属するスレッドおよびサブとなるスレッドグループが順次繋がりをもって作成される。
【００２６】
また、アプリケーションサーバ１１には、クライアント計算機２０におけるキー入力操作などを助けるためのソフトウエアであるＧＵＩライブラリ１５およびアプリケーションに属さないシステムスレッドとによって構成されている。
【００２７】
このＧＵＩライブラリ１５は、アプリケーションＡ，Ｂ，…毎のリソースＡ，Ｂ，…およびアプリケーションＡ，Ｂ，…間で共有するリソースなどを管理するためのリソースマネージャ１６を有し、このリソースマネージャ１６にはアプリケーションサーバ１１からリソース管理用のアドレスが登録されている。
【００２８】
また、ＧＵＩライブラリ１５は、前記クライアントアドレスのもとにネットワークの通信路を確立し、ＧＵＩの表示命令をクライアント計算機２０に転送する機能をもっている。
【００２９】
１７はメモリ使用効率を高める為の処理を実行するプログラムを記憶する記憶媒体であるが、このプログラムは、記憶媒体１７でなく、ディスク装置１２その他適宜な記憶媒体に記憶してもよい。
【００３０】
前記クライアント計算機２０は、サーバ計算機１０のアプリケーションサーバ１１にアプリケーション起動要求を行うＡＰＩクライアント２１、アプリケーションサーバ１１側のアプリケーションがＧＵＩライブラリ１５を使用したとき、クライアント計算機２０にＧＵＩを表示する命令を送信するが、その表示命令を受信しクライアント計算機２０にＧＵＩのみを表示するＡＷＴサーバ２２が設けられている。
【００３１】
次に、以上のようなシステムの動作およびプログラムによる一連の処理について図３を参照して説明する。
【００３２】
アプリケーションサーバ１１の起動後、記憶媒体１７からプログラムを読み取って適宜な記憶手段例えば主記憶装置（図示せず）に記憶した後、起動要求に基づいて以下のような処理を実行する。
【００３３】
すなわち、アプリケーションサーバ１１の起動後、アプリケーションを実行する場合、ＡＰＩクライアント２１から使用すべきＡＷＴサーバ２２が動作するクライアント計算機２０のアドレスを含むアプリケーション起動要求を行う。このＡＰＩクライアント２１からのアプリケーション起動要求は、ネットワークを経由しアプリケーションサーバ１１に送信される。
【００３４】
アプリケーションサーバ１１のＡＰＩサーバ１３は、クライアント計算機２０からの起動要求を受信し、アプリケーションローダ１４にアプリケーション起動指示を出すとともに、起動要求に含まれるアドレスをアプリケーション毎のリソースを管理するリソースマネージャ１６に登録する（Ｓ１，Ｓ２：アプリケーション起動確立機能）。
【００３５】
アプリケーションローダ１４は、ＡＰＩサーバ１３からアプリケーション起動指示を受けると、起動要求されたアプリケーションのプログラムをディスク装置１２から読み込んでサーバ計算機１０の図示しない主記憶装置などにロードし、メインスレッドグループを作成し、このメインスレッドグループに属する１つ以上のスレッドの他、必要に応じてサブスレッドグループを作成し、さらにサブスレッドグループに属するスレッドを作成し、これら一連のスレッド作成処理により、起動要求のあったアプリケーションを作成する（Ｓ３〜Ｓ５：アプリケーション作成機能）。
【００３６】
しかる後、アプリケーションサーバ１１は、作成されたアプリケーションがＧＵＩライブラリ１５を使用するか否かを判断し、ＧＵＩライブラリ１５を使用すると判断したとき、ＧＵＩライブラリ内のリソースマネージャ１６は、ＧＵＩライブラリ１５を呼び出したスレッドのスレッドグループに基づいてアプリケーションを特定し、そのアプリケーションが接続すべきＡＷＴサーバ２２をもつクライアント計算機２０のアドレスを特定し、ＧＵＩライブラリ１５が当該アドレスを用いてクライアント計算機２０のＡＷＴサーバ２２と通信し通信路を確立する（Ｓ６〜Ｓ９：通信路確立機能）。
【００３７】
以上のようにしてＡＷＴサーバ２２とアプリケーションサーバ１１のＧＵＩライブラリ１５との通信路が確立された後、ＧＵＩライブラリ１５は、ＧＵＩをクライアント計算機２０に表示するための命令をＡＷＴサーバ２２に送信する（Ｓ１０：ＧＵＩ送信機能）。
【００３８】
ここで、ＡＷＴサーバ２２は、当該命令を受信し、命令に応じたＧＵＩをクライアント計算機２０の表示部に表示する。
【００３９】
クライアント計算機２０では、表示されたＧＵＩ上で発生したキーボード入力やマウス操作等のＧＵＩ操作情報（イベント）は、ＡＷＴサーバ２２を経由し、ＧＵＩライブラリ１５に転送される。
【００４０】
アプリケーションサーバ１１は、ＡＷＴサーバ２２からＧＵＩ操作情報があるか否かを判断し、操作情報があれば、ＧＵＩライブラリ１５で操作情報に応じた処理を実行し、その後、別のＧＵＩや操作情報が有れば、その要求に応じて所要の処理を行う（Ｓ１１〜Ｓ１３：ＧＵＩ操作情報処理機能）。
【００４１】
従って、以上のような実施の形態によれば、アプリケーションローダ１４は、ＡＰＩサーバ１２から起動要求されたアプリケーション毎のプログラムをディスク装置１２から読み込み、各アプリケーション毎にスレッドグループおよびこのスレッドグループに属するスレッドを作成し、複数のアプリケーションＡ，Ｂ，…を生成するので、アプリケーションサーバ１１は、複数のアプリケーションプログラムを実行する機能をもつプロセスを実現することができる。
【００４２】
また、アプリケーションサーバ１１のＧＵＩライブラリ１５は、アプリケーションＡ，Ｂ，…毎のリソースＡ，Ｂ，…及びアプリケーション間で共有するリソースを管理するためのリソースマネージャ１６を有するので、複数のクライアント計算機２０から同時にアプリケーションの起動要求が合ったときでも、サーバ計算機１０では、複数のアプリケーションが単一プロセス内で動作させることができる。このように複数のアプリケーションを単一プロセス内で動作させることにより、多くのリソースがアプリケーション間で共有することが可能となり、メモリ使用効率を高めることができ、ひいてはサーバ計算機１０のメモリ使用量を大幅に減らすことが可能となる。
【００４３】
次に、各アプリケーション毎のリソースの特定方法について図４を参照して説明する。
【００４４】
アプリケーションサーバ１１は、前述するように複数のアプリケーションプログラムを実行する機能をもつプロセスであるが、このプロセス内にはアプリケーション固有オブジェクトと複数のアプリケーションが共有する例えばキー入力に対するサブルーチン処理などの共通オブジェクトとが存在する場合がある。
【００４５】
リソースマネージャ１６は、前述するようにアプリケーション毎のリソースを管理し、スレッドグループに基づいてリソースを検索しリソースを特定する必要があるが、このときアプリケーション固有オブジェクトと共通オブジェクトとによってリソースの特定方法が異なる。
【００４６】
アプリケーション固有オブジェクトの場合、リソースマネージャ１６は、オブジェクト生成時に当該固有オブジェクト内にリソースへの直接参照データを保持させているので、アプリケーション固有オブジェクトがリソースを必要とするとき、リソースマネージャ１６で検索処理を行わず、自身のアプリケーション固有オブジェクト内に保持される直接参照データに基づいてリソースへの直接参照によりリソースを特定する。
【００４７】
一方、複数のアプリケーション間で共有する共通オブジェクトの場合、複数のリソースを使用する可能性があるので、その都度リソースマネージャ１６を経由しリソースを検索し、リソースを特定する。
【００４８】
よって、このリソース特定方法においては、リソースマネージャ１６がスレッドグループに基づいてリソースを検索しリソースを特定するが、その時、アプリケーションがアプリケーション固有オブジェクトの他に共通オブジェクトをもっているか判断するステップと、この判断結果に基づいてアプリケーション固有オブジェクトの場合には自身のアプリケーション固有オブジェクト内に保持される直接参照データに基づいてリソースへの直接参照によってリソースを特定するステップと、共通オブジェクトの場合にはリソースマネージャ１６がリソースを検索しリソースを特定するステップとから構成されている。
【００４９】
従って、以上のようなリソース特定方法によれば、アプリケーション固有オブジェクトの場合にはリソースマネージャ１６による検索処理を必要としないので、リソースマネージャ１６の検索処理回数が少なくなるので、サーバ計算機１０の負荷を大幅に低減化できる。また、他のアプリケーションに属するスレッドやアプリケーションに属さないスレッドから、アプリケーション固有オブジェクトへのアクセスが合った場合でも、適切にリソースを特定できる。
【００５０】
その他、本願発明は、上記実施の形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変形して実施できる。また、各実施の形態は可能な限り組み合わせて実施することが可能であり、その場合には組み合わせによる効果が得られる。さらに、上記各実施の形態には種々の上位，下位段階の発明が含まれており、開示された複数の構成要素の適宜な組み合わせにより種々の発明が抽出され得るものである。例えば問題点を解決するための手段に記載される全構成要件から幾つかの構成要件が省略されうることで発明が抽出された場合には、その抽出された発明を実施する場合には省略部分が周知慣用技術で適宜補われるものである。
【００５１】
【発明の効果】
以上説明したように本発明によれば、複数のアプリケーションが単一のプロセス内で動作させることができ、また複数のアプリケーション間でリソースを共有化することによりメモリの使用効率を高めるサーバ計算機を提供できる。
【図面の簡単な説明】
【図１】  本発明に係わるサーバ計算機を持つ分散処理環境システムの一実施の形態を示す構成図。
【図２】  アプリケーションの作成例を示す図。
【図３】  本発明に係わるサーバ計算機を持つ分散処理環境システムの動作及びプログラムの一連の処理を説明するフローチャート。
【図４】  各アプリケーション毎のリソースの特定方法を説明する図。
【図５】  従来の分散処理環境システムの構成図。
【符号の説明】
１０…サーバ計算機
１１…アプリケーションサーバ
１２…ディスク装置
１３…ＡＰＩサーバ
１４…アプリケーションローダ
１５…ＧＵＩライブラリ
１６…リソースマネージャ
２０…クライアント計算機
２１…ＡＰＩクライアント
２２…ＡＷＴサーバ
【図１】
0003884239.tif 000002
【図２】
0003884239.tif 000003
【図３】
0003884239.tif 000004
【図４】
0003884239.tif 000005
【図５】
0003884239.tif 000006