JP3912441B2 - 通信システム、コンピュータシステム及びソフトウェアコンポーネント交換方法 - Google Patents

通信システム、コンピュータシステム及びソフトウェアコンポーネント交換方法 Download PDF

Info

Publication number
JP3912441B2
JP3912441B2 JP11560697A JP11560697A JP3912441B2 JP 3912441 B2 JP3912441 B2 JP 3912441B2 JP 11560697 A JP11560697 A JP 11560697A JP 11560697 A JP11560697 A JP 11560697A JP 3912441 B2 JP3912441 B2 JP 3912441B2
Authority
JP
Japan
Prior art keywords
exchange
thread
old
application
state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP11560697A
Other languages
English (en)
Other versions
JPH10143377A (ja
Inventor
ハウプトマン シュテフェン
ヴァーゼル ヨゼフ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips NV
Koninklijke Philips Electronics NV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips NV, Koninklijke Philips Electronics NV filed Critical Koninklijke Philips NV
Publication of JPH10143377A publication Critical patent/JPH10143377A/ja
Application granted granted Critical
Publication of JP3912441B2 publication Critical patent/JP3912441B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Exchange Systems With Centralized Control (AREA)
  • Multi Processors (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、制御回路を具える通信システムであって、該制御回路が、
メッセージベースのオペレーティングシステム、アプリケーションソフトウェア及びアプリケーションソフトウェアを交換する手段を含み、且つ
アプリケーションソフトウェアが交換される時に、置換されるべき古いソフトウェアコンポーネントが状態転送を遂行するようにし、一定の点で停止させて有効なメッセージを新しいソフトウェアコンポーネントに送るようにする
通信システムに関する。
【0002】
通信システムは、ソフトウェアを長期間実際に連続的に使用することができるコンピュータシステム又は制御回路を含む。ソフトウェアにエラーがある場合、或いは新しい要求がある場合、或るソフトウェアコンポーネントを更新しなければならない場合がある。このような場合には通信システムの休止時間を最小にする必要がある。
【0003】
スイッチングシステムのソフトウェアコンポーネントを交換する際に実際上休止時間のない通信システムがUS-A-5,155,837号から既知である。交換する前に、古いソフトウェアが動作している間に、先ず、全てのレジスタ、プロセス及びメモリーユニットの内容及び状態を特別なメモリーにセーブする(7欄30乃至36行)。次にソフトウェアの古いバージョンを第1部分にロードする。新しいソフトウェアを第2部分に連続的にロードする。新しいソフトウェアのロードが完了しテストか終了した後、全てのレジスタ、プロセス及びメモリーユニットの内容及び状態をメモリーから新しいソフトウェアに転送する。次にこの新しいソフトウェアを動作させる。しかしながら、従って、新しいソフトウェアは、古いソフトウェアが停止したプロセス点ではなく、定められたプログラム点で動作を開始する。更に、個々のソフトウェアモジュール又はソフトウェアコンポーネントが交換されるのではなく、閉じたソフトウェアが交換される。
【0004】
更に、文献「"Elektrisches Nachrichtenwesen",第64巻第4号、1990年、第 327乃至333 頁」は、例えばスイッチングセンターの動作中におけるソフトウェアコンポーネントの交換を開示している。この交換の場合、システムが古いソフトウェアコンポーネントに必要な状態転送を遂行させる。予め定められた同期点に到達すると、古いソフトウェアコンポーネントが停止し、古い方から新しいソフトウェアコンポーネントにメッセージが送られる。新しいソフトウェアコンポーネントがスタートし、古いソフトウェアコンポーネントが停止し、除去される。交換のために具えられるプログラムの詳細な構成については、この文献からは不明である。
【0005】
【発明が解決しようとする課題】
従って、本発明の目的は、この手順の間は短時間の遅延時間を除いて動作が制限されない、実現可能なソフトウェアコンポーネントの交換手順を提供することにある。
【0006】
【課題を解決するための手段】
上記の目的は、冒頭の文節で述べた型の通信システムにおいて、アプリケーションソフトウェアが、少なくとも1つのアプリケーションスレッド及び交換スレッドを有するプロセスを少なくとも含み、古いプロセスのアプリケーションスレッドが交換点で停止した後に、交換されるべき古いプロセスが少なくともその状態を集めるために供給され、更に、古いプロセスの交換スレッドが少なくとも状態を交換ポートを通して新しいプロセスに転送するために用いられることによって達成される。
【0007】
本発明による交換手順は、例えば複数のスレッド(連続的に実行されるプログラム部分)を含み、それらの間に交換を制御するための交換スレッドが存在するプロセスに関する。本発明によれば、それぞれの古いプロセスが停止したプログラム点(交換点)で新しいプロセスがスタートする。更に、古いプロセスの全ての状態が、古いプロセスの交換スレッドを介して新しい状態に転送される。しかしながら、これは、ソフトウェアコンポーネント間でメッセージを交換することを可能にするオペレーティングシステム(例えばコーラスCHORUS)を具えるシステムにのみ適用することができる。従って、メッセージは、以後ポートと称するソフトウェアインタフェースを介して種々のプロセス間で交換される。従って、状態は、古いプロセス及び新しいプロセスの交換ポートを介して交換される。
【0008】
プロセスの交換は、他のプロセスに影響を与えないように行われる。交換後には、他のクライアント(他のプロセス)から到着するメッセージは新しいプロセスに送信され更に処理される。交換は処理の間の僅かな遅延が存在するだけで行われる。実用的な研究によれば、この遅延は数ミリ秒の範囲である。
【0009】
通信システムは、コンピュータシステム、スイッチングセンター、コンピュータネットワーク、又は例えばビデオオンデマンドサーバーのようなサーバーであってもよい。コンピュータシステムは、少なくともその中のソフトウェアコンポーネントが交換されるコンピュータを含む。
【0010】
アプリケーションスレッドは、少なくとも交換されるべき古いプロセスのアプリケーションスレッドの状態を集めるための第1部分を持ち、且つ集められた状態を古いプロセスの交換スレッドへ送るために用いられる。新しいプロセスのアプリケーションスレッドが、古いプロセスの交換スレッドから状態を引き継ぐため及び状態に関するオブジェクトを再構成するための第2部分を持つ。
【0011】
プロセスの交換は置換サーバーによって開始される。このサーバーは、別のソフトウェアコンポーネントとして制御回路に含まれ、プロセスをロードしスタートさせるため及び新たにスタートしたプロセスが古いプロセスに代わるべきか否かを認識するために用いられる。メンテナンスデバイスが送信媒体を介して新しいプロセスを置換サーバーへ送る。
【0012】
複数のプロセスの交換が行われる場合はそれらが連続的に交換される。従って先ず最初のプロセスが交換され、次に以後のプロセスが続く。複数のプロセスの交換が行われる場合は制御を置換サーバーに渡すことができる。
古いプロセスを交換するために用いられる新しいプロセスがロードされ、スタートすると、正規のプログラムルーティンをスキップし、先ず古いプロセスの交換点に対応する交換点へのジャンプが行われる。
【0013】
本発明は、更に、少なくとも1つのコンピュータを含むコンピュータシステム及びソフトウェアコンポーネントを交換する方法に関する。
本発明のこれら及び他の観点は、以下に説明する実施例を参照することによって明瞭且つ明快になる。
【0014】
【発明の実施の形態】
図1はコンピュータ1及びメンテナンスデバイス2を具えるコンピュータシステムを示す。コンピュータは、ハードウェアコンポーネント3、オペレーティングシステム4、アプリケーションソフトウェア5及び置換サーバー6を含む。オペレーティングシステム4は、メッセージ(例えばオペレーティングシステムに基づくメッセージ)を介して行うアプリケーションソフトウェア5のソフトウェアコンポーネント間の通信を可能にする。従って、メッセージ又はデータがソフトウェアインタフェースを介して交換される。以下においては、ソフトウェアインタフェースをポートと称する。
【0015】
置換サーバー6はソフトウェアプログラムであり、それによりアプリケーションソフトウェア5のコンポーネントが交換される。交換されるべきソフトウェアコンポーネントは種々のスレッドを含むプロセス(アクター)である。スレッドは、プログラムの中の自律的に連続的に走行する部分である。図1は、円によって個々のソフトウェアコンポーネントを示している。円の間の結合は、ソフトウェアコンポーネント間のメッセージの流れを示している。
【0016】
メンテナンスデバイス2は、リモートコンピュータであってもよく、それから新しいソフトウェアコンポーネントが送出される。従って、新しいソフトウェアコンポーネントについて、このコンピュータで開発されテストされることが考えられる。新しいソフトウェアコンポーネントを送信するために、既知の送信媒体及びプロトコルを用いることができる。例えば、電話ネットワークによる送信が可能である。しかしながら、(例えばローカルメンテナンスデバイス(ラップトップ)により)新しいソフトウェアコンポーネントをコンピュータ1に直接ロードすることもできる。
【0017】
図2はコンピュータの他の実施例を示す。このコンピュータシステムは、ハードウェアインタフェース(例えばイーサネットインタフェース)によって相互に結合されている種々のノード(例えばパーソナルコンピュータ、ワークステーション等)を有するローカルエリアネットワークとして構成されている。図2は、例として種々のプロセス9を含むそれぞれのアプリケーションソフトウェアを含むネットワークの2つのノード7及び8を示している。このようなプロセスは、プロテクトされたアドレス空間を持ち、多数のポート及び、上述のように、図2に波線で示されている種々のスレッドを管理し、それらのポートを通してプロセスが他のプロセスとメッセージを交換する。プロセス9は、ポート10を介してメッセージ11のみを送信し受信することができる。ノード7及び8は、ネットワークの他のノード(図示されていない)にネットワークリンク30を介して結合される。
【0018】
プロセスのスレッドは、更に、それら自身のそれぞれのポートを介してメッセージを交換することができる。更に、例えばミューテックスMutex 及びセマフォールsemaphore によってもメッセージを交換することができる。ミューテックス(相互排他)は、一定の範囲には1つのスレッドのみアクセスすることができるメソッドを表す。例えばデータがスレッドからプリンターに送信される場合である。この場合、スレッドがミューテックスを設定すると、このスレッドのみがプリンターにデータを送信することができる。従って他のスレッドはデータをプリンターに送ることができない。セマフォールは、限定された数のスレッドのみが一定の範囲にアクセスすることができる。異なるプロセスのスレッド間では、それぞれのプロセスのポートを介してのみメッセージを交換することができる。
【0019】
図2にその1つのセクションを示しているローカルエリアネットワークのための分布オペレーティングシステムとしては、コーラスを用いることができる(Rozier,M.;Abrossimov,V.;Armand,F.;Boule,I.;Gien,M.;Guillemont,M.;Herrmann,F.;Kaiser,C.;Langlois,S.;Leonard,P.:Neuhauser,W.:Overview of the CHOLUS distrbuted operating systems;CHOLUS system Technical Report CS-TR-90-25,1990参照)。アプリケーションソフトウェアについては、例えばC又はC++プログラミング言語を選択することができる。
【0020】
図2のネットワークにおける少なくとも1つのプロセス9の交換を制御するため、ノード7が更に置換サーバー12を含む。この置換サーバー12は同様に、ノード7以外の他のノード(例えばノード8)の部分を形成することができる。
【0021】
置換サーバー6(図1)又は12(図2)によって制御される少なくとも1つのプロセスが置換又は交換される時は、新しいソフトウェアコンポーネント(新しいプロセス)がロードされ、コンピュータ1(図1)又はネットワークのノード7又は8(図2)でスタートする。次に、古いソフトウェアコンポーネント(古いプロセス)の全てのアプリケーションスレッドが停止され、古いプロセスが全てのオブジェクトの状態を集める。新しいプロセスが、古いプロセスによって集められた状態を受取り、古いプロセスのポートが全てのペンディングメッセージと共に新しいプロセスに移る。古いオブジェクト構造が新しいプロセスに受入れられると、次に新しいプロセスのスレッドが、古いプロセスの点に対応する点でスタートする。最後に古いプロセスが削除される。
【0022】
コンピュータ又はローカルエリアネットワークの動作中に行われるこの交換に対し、アプリケーションソフトウェアのコンポーネント又はプロセスにおいて、交換不可能なコンポーネントに関する一定の変更が行われる。交換可能である各プロセスは、交換スレッドと呼ばれ、交換手順を遂行する付加的なスレッドを含み、更に、交換中に通信を行うために用いられる付加的な交換ポートを含む。
【0023】
図3は、交換に適しているプロセスが含まれていることを記号で表している。プロセス13が正方形で表され、そのアプリケーションスレッド14が波線として表示されている。プロセス13は1つのクライアントとポート15を通してデータを交換する。クライアントは、他のソフトウェアコンポーネントである。上述のように、交換可能のプロセスは付加的に交換スレッド16を含み、付加的な交換ポート17を有する。
【0024】
図4は、プロセスの交換又は置換のためのメッセージの流れを示す。クライアント18が、これまでにインストールされたプロセス20のポート19(以下サービスポートという)にメッセージを送る。プロセス20(前駆コンポーネント)が新しいプロセス21(後継コンポーネント)に交換されることになる。後継コンポーネント21がロードされ、スタートすると、後継コンポーネント21の交換ポート22から、前駆コンポーネント20の交換ポート23に対して、交換命令が送られる。図4における交換命令は参照記号(1) で表されている。前駆コンポーネント20は、停止した後、その状態を集め、それらを後継コンポーネント21の交換ポート22に送る(矢印(2) )。全ての送信が終わると、前駆コンポーネント20がこの通知を受ける(矢印(3) )。次に、古いプロセスのサービスポート19が、クライアント18に対して、新しいサービスポート24として、ペンディングメッセージについてアクセス可能になる。このポートの変更は、点線矢印(4) で表示されている。
【0025】
図5は、交換の後のメッセージの流れを示す。クライアント18が、ここで後継コンポーネント21のサービスポート24にメッセージを送る。前駆コンポーネント20が削除される。これは、前駆コンポーネント20を表す正方形の上の2本の交差線によって表示されている。
【0026】
上述の交換手順においては、交換可能なプロセスがスタートしている。複数のプロセスを交換する場合は、この交換手順を幾つかのステップに分けることができる。従って、1つのステップは各回1つのプロセスの交換である。この結果、これは、多数のプロセスを同時に交換する場合に比較して、交換手順を制御することがより簡便であり、必要なメモリー容量がより少ない。
【0027】
更に、古いプロセスを置換しようとする一定の新しいプロセスは、例えば他の新しい機能を含むことがある。古いプロセスとの互換性を保つためには、以前の機能を新しいプロセスでも更に使用可能にすることが必要である。古い機能を用いていた全てのクライアントが無くなる場合は、古い機能を無効とし、次の交換が導入される時に全て消去してもよい。
【0028】
図1及び2は、動作中に交換可能なソフトウェアについて2つの応用の可能性を示す。他の応用の可能性が、メッセージを送信するために用いられるシステムについて存在する。1つの例は、主ブロックが図6に示されているスイッチングシステムである。このスイッチングシステムは、入力ライン26で受信した信号を1又は複数の出力ライン27に送出するスイッチングネットワーク25を含む。スイッチングネットワークを制御するため、必要なハードウェア部品に加えて、オペレーティングシステム、アプリケーションソフトウェア及び置換サーバーを含む制御回路28がある。アプリケーションソフトウェアのコンポーネントの交換のために、メンテナンスデバイス2がコンピュータ1と協働する場合と同様に、制御回路28と協働するメンテナンスデバイス29が存在する。
【0029】
上述のように、交換スレッドは、プロセスの部分を構成すると共にプロセスの交換のために必要である。このような交換スレッドは、プロセス中のアプリケーションスレッドに対するインタフェースを具える。このインタフェースはプロセスを交換可能にする。C++プログラミング言語におけるインタフェースの使用は、例えば「ExcThread 」と呼ぶことができるクラス定義である。アプリケーションスレッドは、このクラス「ExcThread 」のエンティティを厳密に1つ持つ。このクラスは3つのメソッド「getExcInfo」、「setExcInfo」及び「restartPointReached 」を持つ。
【0030】
メソッド「ExcThread::getExcInfo 」は、各アプリケーションスレッドの最初に1度だけ呼出される。これは、アプリケーションコンポーネントが新しいコンポーネントとしてスタートするのか又はこのコンポーネントのより古いバージョンが交換されるのかの情報を与える。交換の場合においては、メソッド「ExcThread::getExcInfo 」が、古いコンポーネントのアプリケーションスレッドの状態、及び、新しいプロセスのアプリケーションスレッドが再スタートできる点を記述するパラメータを与える。
【0031】
新しいプロセスのアプリケーションスレッドが全てのオブジェクトを再構成すると、それがメソッド「ExcThread::restartPointReached」を呼出す。このメソッドは、全てのアプリケーションスレッドのスタートを同期させるために用いられる。全てのスレッドがこのメソッドを用いる前に、このメソッドから抜け出すアプリケーションスレッドはないことが保証されなければならない。これによって、全てのオブジェクトが、いずれかのアプリケーションスレッドによって用いられる前に、確実に初期化される。これは、これらのオブジェクトが多数のアプリケーションスレッド、例えばポートを分け合う場合即ちセマフォールの場合に特に重要である。
【0032】
メソッド「ExcThread::setExcInfo 」は、各アプリケーションスレッドによって、アプリケーションスレッドが交換のために停止した後で1度呼出される。このメソッドは、このアプリケーションスレッドの現在の状態をそのそれぞれの新しいコンポーネントに送出するために必要である。
【0033】
状態の転送は、新しいプロセスにとって、例えば古いプロセスから状態を引き継ぐために必要である。状態転送は、古いプロセスの停止と新しいプロセスのスタートとの間で行われる。例えば、状態転送は、古い電話ディレクトリの状態を新しい電話ディレクトリの状態の中に再生するために必要である。このような転送は、例えば新しいフィールド「郵便コード」が加えられる場合、又はこのフィールドが他の型を含む(例えば4桁を5桁にする)場合に必要である。
【0034】
プロセスの状態転送とは、そのオブジェクトの全ての状態が送信されることを意味する。従って各オブジェクトは2つのメソッドを持つ。1つのメソッドは状態をフェッチし、1つのメソッドは状態を格納する。
【0035】
1つのプロセスの全てのアプリケーションスレッドが、それらが停止できる点で停止した時に、交換動作がスタートする。これらの点は停止点と呼ばれる。スレッドにおいて停止点に到達した時は、その正規の動作がアボートされ、交換に関する動作が遂行される。スレッドが停止できる同期及び通信点は、停止点と同様に選択される。
【0036】
新しいプロセスがスタートできるそれぞれの点が、新しいプロセスにおける停止点で使用可能でなければならない。これらの点は再スタート点と呼ばれる。停止点及び再スタート点は交換点と呼ばれる。新しいプロセスは、プログラムコード及びオブジェクト構造で古いプロセスと区別される。新しいプロセスにおいては、複数のオブジェクトが消滅、付加又は変化することがある。
【0037】
次の点は、交換点の例である。
Port::call
Port::receive
Semaphore::get
Mutex::get
Thread::delay
【0038】
ここではプログラミング言語C++の表記を選択している。先ず、クラス名を入力し、続いて2つのコロンの後にメソッド名を入力する(ClassName::MethodName) 。例えば「Mutex::get」は、Mutex 型の全てのオブジェクトについて使用可能性のメソッド「get 」を表す。
【0039】
交換のための時間が長過ぎる場合には、或る種のアプリケーション(例えば、ソフトウェアコンポーネントがスイッチングセンターで交換される場合)に対して問題が生ずることがある。これは、次の5つの条件が満足される場合は生起しないものと思われる。
R1)アプリケーションが1つのプロセッサを持つシステム上で走行すること。
R2)プロセッサの負荷が 100%未満であること。
R3)プロセッサが所与の時間間隔内で一定のプロセッサ時間を保証されていること。
R4)スレッドが非同期的に停止することは許可されないこと。即ち、停止点以外では停止しないこと。
R5)交換点において、スレッドを停止し、それを停止点に残し、正規の方法で続けることができること。
【0040】
プロセッサが使用可能であり (R1)、このプロセッサが 100%以下の負荷を持つ (R2)場合は、1つのプロセスの全てのスレッドが停止する時点が存在する。交換スレッドが使用可能であり、これがそのプロセスの他のアプリケーションスレッドの優先度より低い優先度を持つ場合は、このプロセスは常に所与の時間間隔内に使用可能なプロセッサ時間の一部分を受信しているので (R3)、交換スレッドがこの時点で起動される。交換スレッド自身を除いて全てのアプリケーションスレッドが、一定の停止点で停止したことが保証される (R4)。従って交換スレッドは、交換動作を実行するために使用可能なプロセッサ時間を利用し、停止点にある全てのアプリケーションスレッドを停止させる (R5)。
【0041】
各停止点が交換点である場合は、多数の交換点が使用可能であることがある。多くの交換点が単純なミューテックス動作であり、共通データへの並行アクセスを妨げる場合がある。多数のオペレーティングシステムが、ミューテックスで停止したスレッドの単純なアボートを許可しない。従って、「Mutex::get」でスタートし「Mutex::rel」で終わるミューテックスは、潜在的な交換点として除外することができる。「Mutex::get」と「Mutex::rel」との間に他の停止点は存在しないこと、及びミューテックスは同一プロセスのスレッドによってのみ用いられることとの条件の下に、全てのスレッドが停止する時にこのミューテックスではスレッドが停止しないことが分かる。従って、これらの条件の下に、ミューテックスは交換点として除外することができる。
【0042】
交換点が実現されると、1つのメソッドが実行され、そこで交換されるべきスレッドがそれ自身アボート状態に移る。この場合、オペレーティングシステムが特別なリターンコードを用いてアボート状態を終了させる。このリターンコードは、更にエラーコード「abort 」を表示する。アボートの場合、このリターンコードは交換のための信号として直接翻訳される。次に、C++プログラミング言語の例が、交換できないスレッドに属する「port::receive 」(停止点)について与えられる。
Figure 0003912441
【0043】
例において括弧中に与えられた数字は、プログラムテキストの一部分を構成するものではなく、単にラインを識別するために用いられている。ライン(08)においては、バッファ「buf 」は受信されるデータのためにクリアされる。ライン(09)の「receive 」ステートメントでバッファ「buf 」が新しいデータで満たされる。第2のパラメータ「receive 」ステートメントの「TimeOutPeriod 」は、例えばクライアントによって引き起こされるクラッシュのような無制限の遅延時間を防ぐための時間超過に対する値である。ライン(15)では、時間超過に対するエラーコード(「Time out」)がテストされる。
【0044】
この停止点を交換点に変換するために、「port::receive 」についての例を変更する。従って、これが交換可能のスレッドに属する。
Figure 0003912441
【0045】
上述の例は、交換のための交換スレッドオブジェクト主要点のプログラム部分を示す(ライン(01))。交換不可能の例「port::receive 」に比較して新たに付加されたラインのみ説明する。ライン(10)では、エラーコード「Port::Aborted 」がテストされ、交換が検出されたか否かを明確にする。交換が行われる場合には、先ずスレッドのローカルオブジェクトの状態が集められる(ライン(11))。状態は、オペレータ「< < 」及び「> > 」を定義する「Bin 」型の特別なオブジェクトに集められる。オペレータ「< < 」はオブジェクトの状態を集め、オペレータ「> > 」はそれらを復元する。次に、そのスレッドは、オブジェクトを削除し、他のメジャーを遂行してリソースを無駄にしないようにすることができる(ライン(12))。最後の「ExcThread.setExchangeInfo 」の呼出しの後、集められた状態は、交換スレッドから新しいプロセスに送信される(ライン(13))。第1パラメータ(ThreadName)は呼出されたスレッドを示し、第2パラメータ(ReceiveExcPointld) は呼出されたスレッド中での交換点を表す整数変数であり、第3パラメータ(state) は送出されるべき状態を表す。スレッドは決して「setExchangeInfo 」から戻ることはない。
【0046】
交換スレッドが交換点で古いプロセスの状態を集め、古いプロセスが停止した後で、それぞれの点(再開始点)で新しいプロセスのスレッドがスタートする必要がある。従って、再開始点は、種々の他の機能の呼出しが終了するまでは到達しない機能中に存在するという問題がある。従って、新しいプロセスの呼出しの後、先ず、他のステートメントを実行せずに再開始点に到達すべきである。これは、例えばC++プログラミング言語の機能では、「goto」命令によって達成することができる。機能の開始時点で、先ず再開始点を含む機能へのジャンプが行われる。これは、複数の機能レベルを介して実現することができる。再開始点に到達した後は、状態変数が再び設定され、古いプロセスがアボートする前における次のステートメントであった筈のステートメントにより、新しいプロセスが遂行される。
【0047】
この場合の実際の動作を以下の例によって示す。
Figure 0003912441
【0048】
機能「threadBody」(ライン(15))が機能「fctA」を生成させ、それが再開始点を含む機能「fctB」を生成させる。先ず、機能「threadBody」で「restart 」が真実か否かがテストされる(ライン(17))。真実ならば、それぞれの再開始点が選択され、それぞれのジャンプ目的地へのジャンプが行われる(ExcPointX;(ライン(24))。そこでは機能「fctA」が呼出される。機能「fctA」においては(ライン(09)乃至(14))同一の手順が繰り返される。ジャンプ目的地「ExcPointX 」(ライン(12))では機能「fctB」にジャンプする。即ち、機能「fctB」(ライン(02)乃至(08))中のジャンプ目的地「ExcPointX 」(ライン(05))にジャンプする。
【0049】
再開始点に到達すると、オブジェクトが再構成されることになる。状態転送を付加的に含む上記の例「port::receive 」を用いて説明する。この状態転送は、以下の例のライン(01)乃至(05)に記述されている。
Figure 0003912441
【0050】
交換の後における状態の再構成(ライン(05)で比較する)がメソッド「ExcThread.restartPointReached 」の呼出し(ライン(06))で終了する。これにより、新しいプロセスの全てのアプリケーションスレッドが、確実に同時にスタートする。「restartPointReached 」のパラメータ「deliveredState」は、状態が正確に読取られたか否かをテストするために必要である。
【0051】
上述のように、プロセスはポートを通して通信を行う。このため、古いプロセスのポートは、なお新しいプロセス中に存在する(ポート変換)。コーラスオペレーティングシステムにおいては、ポート変換は容易に実現される。ポートの状態は、他のオブジェクトの状態と同様の方法で送信される。その相違は、ポートの状態が特別なメソッド「Port::migrate 」と共に転送されることのみである。古いプログラムの一部分をなすプログラムの例を以下に示す。
Figure 0003912441
【0052】
新しいプロセスにおいて、送出された状態から移動されたポートが直接作り上げられる。メソッド「Port::migrate 」を処理するために用いられる時間の間、外部のメッセージが失われることはない。まだ到着しつつある全てのメッセージは、ポートのキューに行列しており、そのポートと共に新しいプロセスに送出される。
【0053】
図7は、以下に説明する交換プロセスにおけるメッセージのフローチャートを示す。先ずプロセスA1 がスタートする。プロセスA1 がプロセスA2 で置換されるものとする。従ってプロセスA1 は前駆コンポーネントを表し、プロセスA2 は後継コンポーネントを表す。交換は、特別なソフトウェアコンポーネントとしてノードに収容されている置換サーバーAMによって制御される。図7においては、置換サーバーAMはAMと表記された長方形の記号で表されている。
【0054】
図7におけるメッセージフローチャートは、プロセスA1 及びA2 のアプリケーションスレッドとそれぞれの交換スレッドE(A1)及びE(A2)との関係を示す。図7のメッセージフローチャートは、各プロセスA1 及びA2 に対して1つのアプリケーションスレッドA(A1)及びA(A2)のみを示すことが明らかである。種々のメカニズム(例えば「Port::send/Port::receive」、「Semaphore::get/Semaphore::rel 」)によって実現されるメッセージの流れは、それぞれの矢印で特徴付けられている。
【0055】
図7のフローチャートにおいては、最初にプロセスA1 がロードされてスタートする(点P1 )。このプロセスは交換スレッドE(A1)を発生し(矢印CET1)、置換サーバーAMにメッセージを送る(矢印NACH1 )。置換サーバーAMは応答し(矢印OKS )、これにより後続のコンポーネントがないことを表示する。続いて、プロセスA1 のアプリケーションスレッドA(A1)が、プロセスA1 の交換スレッドE(A1)のスタートを同期する(矢印SYNCS1)。次に、アプリケーションスレッドはそれらの元のタスク(点P2 )に移る。
【0056】
プロセスA1 のアプリケーションスレッドA(A1)によるプロセスA1 の交換スレッドE(A1)のスタートの同期の後、交換スレッドE(A1)が、アプリケーションスレッドA(A1)の優先度より低い優先度を自身に設定する(点P3 )。これは、アプリケーションスレッドA(A1)に対する交換スレッドE(A1)の影響を可能な限り小さく保つために行われる。更に、点P3 で交換スレッドE(A1)が交換ポートを発生し、これにより後継コンポーネント(プロセスA2 )がこのポートに到着することができる。次に、交換スレッドE(A1)が、交換の準備が完了したことを置換サーバーAMに信号する(矢印RFG1)。
【0057】
プロセスA1 (前駆コンポーネント)の後継コンポーネントとしてプロセスA2 がロードされ、スタートし(点P4 )、第2プロセスA2 の交換スレッドE(A2)が発生される(矢印CET2)と、先ず置換サーバーAMにメッセージ(矢印NACH2 )が送られる。置換サーバーAMは、プロセスA2 のアプリケーションスレッドA(A2)の一つに、後継コンポーネントが前駆コンポーネント(プロセスA1 )を置換することを表示する応答を送る(矢印OKR )。続いて、このプロセスA2 のアプリケーションスレッドA(A2)が、前駆コンポーネントの交換ポートに対するそれぞれの参照符号を発生し(点P5 )、プロセスA1 の交換スレッドE(A1)に交換手順がスタートしたことを知らせる(矢印STARE )。
【0058】
プロセスA2 のこのメッセージが第1プロセスの交換スレッドE(A1)を起動する。最初に、交換スレッドE(A1)が自身の交換ポートをアクセス不能にし、これにより他のコンポーネント(プロセス)が交換メッセージを送って来ないようにする(点P6 )。全てのプロセスA1 のアプリケーションスレッドA(A1)が停止した時に、交換スレッドE(A1)が、全てのスレッドが停止した旨のメッセージを受取り(矢印ALLBL )、次に全てのプロセスA1 のアプリケーションスレッドA(A1)にアボート命令を与える(矢印ABTHR )。交換手順の継続のための命令(矢印RETHR )を第1プロセスA1 の交換スレッドE(A1)から受信すると、プロセスA1 の各アプリケーションスレッドA(A1)がその状態を集め(点P7 )、アクノリッジ信号を交換スレッドE(A1)に送り(矢印ABCOM )、終了時点でそれ自身を消去する(点P8 )。
【0059】
第1プロセスA1 の交換スレッドE(A1)が第1プロセスA1 のアプリケーションスレッドA(A1)の種々の状態を集め(点P9 )、それらを第2プロセスA2 のアプリケーションスレッドA(A2)に送る(矢印REPAS )。これは交換手順の開始を知らせることになる(矢印STARE を参照)。受信された状態はアプリケーションスレッドA(A2)に運ばれる(点P10)。この状態はそれらの状態の部分を引き継いでおり、これからそれらのオブジェクトを再構成する(点P11)。同時に、それにより交換スレッドE(A2)が通知を受ける(矢印SYNCS2)。全ての再開始点への到達が完了した後、この交換スレッドE(A2)は、それらの元のタスクを実行するためにアプリケーションスレッドA(A2)を解放する(矢印STACO )。
【0060】
最後に、第2プロセスA2 の交換スレッドE(A2)が第1プロセスA1 の交換スレッドE(A1)に、交換手順が完了した旨の信号を送る(矢印ALLAB )。第1プロセスA1 の交換スレッドE(A1)は、置換サーバーに停止メッセージを送り(矢印STOP)、自身を停止させる。次に、第2プロセスA2 の交換スレッドE(A2)は、それ自身、更に後の時点で後継コンポーネントにより置換されることになるかも知れない。続いて、交換スレッドが交換ポートを発生し、自身を最も低い優先度レベルに設定し(点P12)、置換サーバーAMに対し、交換スレッドが交換の準備を完了した旨の通知を行う(矢印RFG2)。
【図面の簡単な説明】
【図1】メンテナンスデバイス及び交換可能のプロセスを含むコンピュータを具えるコンピュータシステムを示す図である。
【図2】ローカルエリアネットワークを含むコンピュータシステムを示す図である。
【図3】プロセスを記号で表した図である。
【図4】新しいプロセスと古いプロセスとの交換を記号で表した図である。
【図5】新しいプロセスと古いプロセスとの交換後の状態を記号で表した図である。
【図6】メンテナンスデバイス及び交換可能のプロセスを含む制御回路を具えるスイッチングシステムを示す図である。
【図7】古いプロセスと新しいプロセスとの間のメッセージの流れを示す図である。
【符号の説明】
1 コンピュータ
2 メンテナンスデバイス
3 ハードウェアコンポーネント
4 オペレーティングシステム
5 アプリケーションソフトウェア
6 置換サーバー
7、8 ノード
9 プロセス
10 ポート
11 メッセージ
12 置換サーバー
13 プロセス
14 アプリケーションスレッド
15 ポート
16 交換スレッド
17 交換ポート
18 クライアント
19 ポート
20、21 プロセス
22、23 交換ポート
24 サービスポート
25 スイッチングネットワーク
26 入力ライン
27 出力ライン
28 制御回路
29 メンテナンスデバイス
30 ネットワークリンク

Claims (8)

  1. 制御回路を具える通信システムであって、該制御回路が、
    メッセージベースのオペレーティングシステム、アプリケーションソフトウェア及びアプリケーションソフトウェアを交換する手段を含み、且つ
    アプリケーションソフトウェアが交換される時に、置換されるべき古いソフトウェアコンポーネントが状態転送を遂行するようにし、一定の点で停止させて有効なメッセージを新しいソフトウェアコンポーネントに送るようにする
    通信システムにおいて、
    アプリケーションソフトウェアが、少なくとも1つのアプリケーションスレッド及び交換スレッドを有するプロセスを少なくとも含み、古いプロセスのアプリケーションスレッドが交換点で停止した後に、交換されるべき古いプロセスが少なくともその状態を集めるために供給され、更に、古いプロセスの交換スレッドが少なくとも状態を交換ポートを通して新しいプロセスに転送するために用いられることを特徴とする通信システム。
  2. アプリケーションスレッドが、少なくとも交換されるべき古いプロセスのアプリケーションスレッドの状態を集めるための第1部分を持ち、且つ集められた状態を古いプロセスの交換スレッドへ送るために用いられ、更に、新しいプロセスのアプリケーションスレッドが、古いプロセスの交換スレッドから状態を引き継ぐため及び状態に関するオブジェクトを再構成するための第2部分を持つことを特徴とする請求項1に記載の通信システム。
  3. 制御回路が、プロセスをロードしスタートするため及び新たにスタートしたプロセスが古いプロセスに代わるべきか否かを認識するために用いられる他のソフトウェアコンポーネントとして置換サーバーを含むことを特徴とする請求項1又は2に記載の通信システム。
  4. 古いプロセスを交換するために用いられる新しいプロセスのロード及びスタートの後、正規のプログラムルーティンをスキップし、先ず古いプロセスの交換点に対応する交換点へのジャンプが行われることを特徴とする請求項1乃至3のいずれか1項に記載の通信システム。
  5. 複数のプロセスが交換されるべき場合には、これらのプロセスが連続的に交換されることを特徴とする請求項1乃至4のいずれか1項に記載の通信システム。
  6. 新しいソフトウェアコンポーネントを置換サーバーへ送信媒体を介して送るためにメンテナンスデバイスが用いられることを特徴とする請求項1乃至5のいずれか1項に記載の通信システム。
  7. 少なくとも1つのコンピュータを具えるコンピュータシステムであって、
    メッセージベースのオペレーティングシステム、アプリケーションソフトウェア及びアプリケーションソフトウェアを交換する手段を含み、且つ
    アプリケーションソフトウェアが交換される時に、置換されるべき古いソフトウェアコンポーネントが状態転送を遂行するようにし、一定の点で停止させて有効なメッセージを新しいソフトウェアコンポーネントに送るようにする
    コンピュータシステムにおいて、
    アプリケーションソフトウェアが、少なくとも1つのアプリケーションスレッド及び交換スレッドを有するプロセスを少なくとも含み、古いプロセスのアプリケーションスレッドが交換点で停止した後に、交換されるべき古いプロセスが少なくともその状態を集めるために供給され、更に、古いプロセスの交換スレッドが少なくとも状態を交換ポートを通して新しいプロセスに転送するために用いられることを特徴とするコンピュータシステム。
  8. メッセージベースのオペレーティングシステム、アプリケーションソフトウェア及びアプリケーションソフトウェアを交換する手段を含み、アプリケーションソフトウェアが交換される時に、置換されるべき古いソフトウェアコンポーネントが状態転送を遂行するようにし、一定の点で停止させて有効なメッセージを新しいソフトウェアコンポーネントに送るようにする、システムのためのソフトウェアコンポーネントを交換する方法において、
    アプリケーションソフトウェアが、少なくとも1つのアプリケーションスレッド及び交換スレッドを有するプロセスを少なくとも含み、古いプロセスのアプリケーションスレッドが交換点で停止した後に、交換されるべき古いプロセスが少なくともその状態を集めるために供給され、更に、古いプロセスの交換スレッドが少なくとも状態を交換ポートを通して新しいプロセスに転送するために用いられることを特徴とする方法。
JP11560697A 1996-05-06 1997-05-06 通信システム、コンピュータシステム及びソフトウェアコンポーネント交換方法 Expired - Fee Related JP3912441B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE19617976:9 1996-05-06
DE19617976A DE19617976A1 (de) 1996-05-06 1996-05-06 Kommunikationssystem mit Mitteln zum Austausch von Softwareprozessen

Publications (2)

Publication Number Publication Date
JPH10143377A JPH10143377A (ja) 1998-05-29
JP3912441B2 true JP3912441B2 (ja) 2007-05-09

Family

ID=7793362

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11560697A Expired - Fee Related JP3912441B2 (ja) 1996-05-06 1997-05-06 通信システム、コンピュータシステム及びソフトウェアコンポーネント交換方法

Country Status (4)

Country Link
US (1) US6634025B1 (ja)
EP (1) EP0807883B1 (ja)
JP (1) JP3912441B2 (ja)
DE (2) DE19617976A1 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19803697C2 (de) * 1998-01-30 2000-03-16 Ericsson Telefon Ab L M Verfahren zum Aufrüsten eines Softwaresystems und Vorrichtung zur Durchführung des Verfahrens
US6385770B1 (en) 1999-01-29 2002-05-07 Telefonaktiebolaget Lm Ericsson (Publ) Software upgrade
JP2001043070A (ja) * 1999-07-29 2001-02-16 Nec Corp 設定情報自動復帰方法及び装置並びに設定情報自動復帰プログラムを記録した記録媒体
FR2810423A1 (fr) * 2000-06-16 2001-12-21 Suntech Systeme informatique modulaire et procede associe
US7370322B1 (en) 2001-04-11 2008-05-06 Sun Microsystems, Inc. Method and apparatus for performing online application upgrades in a java platform
GB2411995B (en) * 2001-04-11 2005-10-26 Sun Microsystems Inc Performing upgrades of a Java platform
US20030005408A1 (en) * 2001-07-02 2003-01-02 Pradeep Tumati System and method for creating software modifiable without halting its execution
US20030092438A1 (en) * 2001-11-14 2003-05-15 Moore Brian J. Method and apparatus for stabilizing calls during a system upgrade or downgrade
US7117506B2 (en) 2002-02-07 2006-10-03 Mobitv, Inc. Plug-in API for modular network transaction processing
WO2003069475A2 (en) * 2002-02-07 2003-08-21 Idetic, Inc. A plug-in api for modular network transaction processing
US7234056B2 (en) * 2002-09-24 2007-06-19 Inrange Technologies Corp. Method and apparatus for downloading executable code in a non-disruptive manner
US7698700B2 (en) * 2003-04-17 2010-04-13 International Business Machines Corporation System quiesce for concurrent code updates
US8276136B2 (en) * 2007-12-11 2012-09-25 Red Hat, Inc. Transparent configuration of a network appliance
US8418164B2 (en) 2008-05-29 2013-04-09 Red Hat, Inc. Image install of a network appliance
CN101616028B (zh) * 2009-06-25 2012-02-29 中兴通讯股份有限公司 一种通信程序业务不中断升级方法及系统
US8224894B1 (en) 2011-05-09 2012-07-17 Google Inc. Zero-click sharing of application context across devices
US8812601B2 (en) * 2011-05-09 2014-08-19 Google Inc. Transferring application state across devices with checkpoints
US8171137B1 (en) 2011-05-09 2012-05-01 Google Inc. Transferring application state across devices
US8819660B2 (en) * 2011-06-29 2014-08-26 Microsoft Corporation Virtual machine block substitution
US9184800B2 (en) 2012-07-16 2015-11-10 Google Inc. Automated sharing of application data over a near field communication link
US9526120B2 (en) 2013-03-15 2016-12-20 Google Inc. Techniques for context-based application invocation for short-range wireless communication interactions
US20150143354A1 (en) * 2013-11-19 2015-05-21 Suresh Mathew Zero downtime deployment and rollback
CN105450782B (zh) 2016-01-15 2018-11-06 网宿科技股份有限公司 一种无丢包零停机重启网络服务的方法和系统

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155847A (en) * 1988-08-03 1992-10-13 Minicom Data Corporation Method and apparatus for updating software at remote locations
US4954941A (en) * 1988-08-31 1990-09-04 Bell Communications Research, Inc. Method and apparatus for program updating
US5155837A (en) 1989-03-02 1992-10-13 Bell Communications Research, Inc. Methods and apparatus for software retrofitting
US5210854A (en) * 1989-06-14 1993-05-11 Digital Equipment Corporation System for updating program stored in eeprom by storing new version into new location and updating second transfer vector to contain starting address of new version
JP2886961B2 (ja) * 1990-09-19 1999-04-26 株式会社日立製作所 プログラム入替方法
JP2582956B2 (ja) * 1991-05-07 1997-02-19 三菱電機株式会社 プログラマブル制御装置
US5410703A (en) * 1992-07-01 1995-04-25 Telefonaktiebolaget L M Ericsson System for changing software during computer operation
JP2741994B2 (ja) * 1992-08-28 1998-04-22 富士通株式会社 ジョブ環境動的変更機能を持つ処理装置および処理方法
JPH0683605A (ja) * 1992-09-07 1994-03-25 Fujitsu Ltd 改変したプログラムを実行するデータ処理方式
US5359730A (en) * 1992-12-04 1994-10-25 International Business Machines Corporation Method of operating a data processing system having a dynamic software update facility
US5613133A (en) * 1994-09-09 1997-03-18 Unisys Corporation Microcode loading with continued program execution
US5682533A (en) * 1994-09-27 1997-10-28 Telefonaktiebolaget Lm Ericsson (Publ) Updating software within a telecommunications switch without interrupting existing communication and neither moving nor converting data
SE504943C2 (sv) * 1994-12-09 1997-06-02 Ericsson Telefon Ab L M Synkroniseringsförfarande som tillåter tillståndsöverföring
US5619698A (en) * 1995-05-05 1997-04-08 Apple Computer, Inc. Method and apparatus for patching operating systems
US5764992A (en) * 1995-06-06 1998-06-09 Apple Computer, Inc. Method and apparatus for automatic software replacement
US5845077A (en) * 1995-11-27 1998-12-01 Microsoft Corporation Method and system for identifying and obtaining computer software from a remote computer
US6161218A (en) * 1996-01-16 2000-12-12 Sun Microsystems Inc. Software patch architecture
US5761504A (en) * 1996-02-16 1998-06-02 Motorola, Inc. Method for updating a software code in a communication system
US6049671A (en) * 1996-04-18 2000-04-11 Microsoft Corporation Method for identifying and obtaining computer software from a network computer
US5797016A (en) * 1996-10-29 1998-08-18 Cheyenne Software Inc. Regeneration agent for back-up software
US6202205B1 (en) * 1998-07-21 2001-03-13 Hewlett-Packard Company System and method for profile-based, on-the-fly optimization of library code

Also Published As

Publication number Publication date
EP0807883B1 (de) 2003-07-09
US6634025B1 (en) 2003-10-14
JPH10143377A (ja) 1998-05-29
EP0807883A2 (de) 1997-11-19
EP0807883A3 (de) 2000-05-31
DE59710399D1 (de) 2003-08-14
DE19617976A1 (de) 1997-11-13

Similar Documents

Publication Publication Date Title
JP3912441B2 (ja) 通信システム、コンピュータシステム及びソフトウェアコンポーネント交換方法
US5060140A (en) Universal programmable data communication connection system
KR0137406B1 (ko) 고장 방지 컴퓨터 시스템
CN108647104B (zh) 请求处理方法、服务器及计算机可读存储介质
Hofmeister et al. A framework for dynamic reconfiguration of distributed programs
US5165018A (en) Self-configuration of nodes in a distributed message-based operating system
US6418478B1 (en) Pipelined high speed data transfer mechanism
CN106357452B (zh) 一种单点异构数据存储的高可用框架系统及其实现方法
US5987511A (en) Communication system capable of exchanging software and restarting with all information preserved
EP2972824B1 (en) Computer system using in-service software upgrade
US7080377B2 (en) Method for effective utilizing of shared resources in computerized system
US9946582B2 (en) Distributed processing device and distributed processing system
CN107493266B (zh) 嵌入式自助终端的通信系统、方法及装置
Pyarali et al. Evaluating and optimizing thread pool strategies for real-time CORBA
JPH07101407B2 (ja) スケジユーリング方法及び装置
JP2002522845A (ja) フォールトトレラント・コンピュータシステム
JP2710896B2 (ja) 通信オートマトンセットの開発を支援する方法
US6226694B1 (en) Achieving consistency and synchronization among multiple data stores that cooperate within a single system in the absence of transaction monitoring
CN112738060A (zh) 微服务数据的处理方法、装置、微服务处理平台及介质
JP2000194678A (ja) クラスタコンピュ―タシステムにおける高度に利用可能な非同期i/o
EP3703342B1 (en) Dynamic load balancing in network centric process control systems
JP6577901B2 (ja) 計算機システムおよびシステム状態再現方法
CN110502460B (zh) 数据处理的方法和节点
JP5251197B2 (ja) メッセージ処理方法、メッセージ処理装置、及びプログラム
US5369765A (en) Composite software system and method of writing it

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040506

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040506

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060425

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20061128

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070123

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees