(57)【要約】【課題】  プログラム搭載システムを停止することなく、プログラムの一部を更新できるプログラム更新システムを提供する。【解決手段】  本発明は、主メモリにロードされている処理プログラムを更新するプログラム更新システムに関する。処理プログラムを、実行可能ファイルのメインモジュールと、その他の部分モジュールとに分割しておく。更新される旧部分モジュールに置き換えられる新部分モジュールを主メモリにアップロードする新モジュールアップロード手段と、主メモリ上で有効な部分モジュールを旧部分モジュールから新部分モジュールに切り替える新旧モジュール切り替え手段と、上述の切り替え後に、主メモリ上の旧部分モジュールをアンロードする旧モジュールアンロード手段とを有する。【選択図】      図７
2010130620.tif 000002
【特許請求の範囲】
【請求項１】
主メモリにロードされている処理プログラムを更新するプログラム更新システムにおいて、
上記処理プログラムを、実行可能ファイルのメインモジュールと、その他の部分モジュールとに分割すると共に、
更新される旧部分モジュールに置き換えられる新部分モジュールを上記主メモリにアップロードする新モジュールアップロード手段と、
上記主メモリ上で有効な部分モジュールを旧部分モジュールから新部分モジュールに切り替える新旧モジュール切り替え手段と、
上記新旧モジュール切り替え手段の切り替え後に、上記主メモリ上の旧部分モジュールをアンロードする旧モジュールアンロード手段とを有する
ことを特徴とするプログラム更新システム。
【請求項２】
上記部分モジュールの識別子と、その部分モジュールの上記主メモリ上の位置とを対応付けた、部分モジュールの参照呼び出しで利用される部分モジュール位置情報管理手段を有し、
上記切り替え手段は、上記部分モジュール位置情報管理手段における旧部分モジュールの識別子に対応付けられた、上記主メモリ上の位置情報を、新部分モジュールの上記主メモリ上の位置情報に更新する
ことを特徴とする請求項１に記載のプログラム更新システム。
【請求項３】
上記新モジュールアップロード手段は、アップロードしようとする新部分モジュールが常駐プログラム若しくは非常駐プログラムを含む場合にはアップロードを実行しないことを特徴とする請求項１又は２に記載のプログラム更新システム。
【請求項４】
上記部分モジュールは、自己に含まれているサブルーチンの実行数を管理するカウンタを有し、
上記旧モジュールアンロード手段は、上記主メモリ上の旧部分モジュール内の全てのサブルーチンに係る実行数が０であることを条件として、上記主メモリ上の旧部分モジュールをアンロードする
ことを特徴とする請求項１〜３のいずれかに記載のプログラム更新システム。
【請求項５】
主メモリにロードされている処理プログラムを更新するプログラム更新方法において、
上記処理プログラムを、実行可能ファイルのメインモジュールと、その他の部分モジュールとに分割しておくと共に、アップロード手段、新旧モジュール切り替え手段及び旧モジュールアンロード手段を備え、
上記新モジュールアップロード手段は、更新される旧部分モジュールに置き換えられる新部分モジュールを上記主メモリにアップロードし、
上記新旧モジュール切り替え手段は、上記主メモリ上で有効な部分モジュールを旧部分モジュールから新部分モジュールに切り替え、
上記旧モジュールアンロード手段は、上記新旧モジュール切り替え手段の切り替え後に、上記主メモリ上の旧部分モジュールをアンロードする
ことを特徴とするプログラム更新方法。
【請求項６】
実行可能ファイルのメインモジュールと、その他の部分モジュールとに分割されている、主メモリにロードされている処理プログラムを更新させるためのプログラム更新プログラムであって、
コンピュータを、
更新される旧部分モジュールに置き換えられる新部分モジュールを上記主メモリにアップロードする新モジュールアップロード手段と、
上記主メモリ上で有効な部分モジュールを旧部分モジュールから新部分モジュールに切り替える新旧モジュール切り替え手段と、
上記新旧モジュール切り替え手段の切り替え後に、上記主メモリ上の旧部分モジュールをアンロードする旧モジュールアンロード手段として機能させる
ことを特徴とするプログラム更新プログラム。
【請求項７】
交換機能を担う呼制御サーバにおいて、
請求項１〜４のいずれかに記載のプログラム更新システムを有することを特徴とする呼制御サーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラム更新システム、方法及びプログラム、並びに、交換機に関し、例えば、ＩＰセントレックスシステムにおけるＩＰテレフォニーサーバ等の呼制御サーバのプログラムの一部を更新する場合に適用し得るものである。
【背景技術】
【０００２】
企業内音声ネットワークシステムとして、１又は複数の主たる拠点にメイン呼制御サーバを配置して全ての拠点の交換機能や呼制御機能を集中管理するＩＰセントレックス方式のシステムが既に実用に供している。今日においては、メイン呼制御サーバが高性能になってきており、そのため、取り扱うことが可能な加入者数も多くなっている。また、企業内音声ネットワークシステムを導入した企業も、電話通信事業者並みの高信頼性を要求するようになりつつある。
【０００３】
メイン呼制御サーバは、主として、ソフトウェアによって交換機能や呼制御機能等を提供するものであるが、プログラムに軽微なバグ（例えばプログラムの１行の記述にミス）が発生していることもあり得る。軽微なバグを修正する場合であっても、通話を強制的に切断して、バグを有するプログラム部分を更新しなければならず、運用に与える影響が大きいと共に、信頼性を損なってしまう。
【０００４】
そのため、システムを停止することがなく、システム稼働中に、修正対象のプログラム部分を修正することが求められている。
【０００５】
このような要求に応える従来技術として、特許文献１に記載のものがある。特許文献１の記載技術は、主記憶装置に常駐化され動作中のプログラムを構成する機能的に閉じた各処理プログラムモジュール毎に、それぞれ固有の識別名を付けて、常時、この識別名により各処理プログラムモジュールが動作中か否かを判断できる動作状態管理テーブルを有し、この動作状態管理テーブルにより、修正対象の処理プログラムモジュールが不動作中であることを確認して主記憶装置上で修正する常駐化モジュール修正方式である。
【特許文献１】特開平２−１６１５２３
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の記載技術は、メイン呼制御サーバ等の多くのセッションを取り扱う呼制御サーバのプログラム部分の修正には適用し難いものである。
【０００７】
メイン呼制御サーバは、例えば、数百、数千というセッション（呼）を取り扱うものであり、修正対象のプログラム部分がいずれのセッションについても不動作中であることはまずあり得ない。仮に、修正対象のプログラム部分が適用されることが少ない部分であって、全てのセッションで不動作中であって修正を開始したとしても、その修正期間で、そのプログラム部分の実行を求めるセッションが生じたとしてもそれに答えることができず、修正期間でアクセスを禁止することを要する。すなわち、特許文献１の記載技術は、システムを切断してモジュール修正を行って再起動することをなくし、システムの切断時間や再起動時間を削減しているが、システムの無停止を実現することができないものであり、呼制御サーバのプログラム部分の修正には適用し難いものである。
【０００８】
そのため、システムを停止することなく、プログラムの一部を更新することができるプログラム更新システム、方法及びプログラム、並びに、呼制御サーバが望まれている。
【課題を解決するための手段】
【０００９】
第１の本発明は、主メモリにロードされている処理プログラムを更新するプログラム更新システムにおいて、（１）上記処理プログラムを、実行可能ファイルのメインモジュールと、その他の部分モジュールとに分割すると共に、（２）更新される旧部分モジュールに置き換えられる新部分モジュールを上記主メモリにアップロードする新モジュールアップロード手段と、（３）上記主メモリ上で有効な部分モジュールを旧部分モジュールから新部分モジュールに切り替える新旧モジュール切り替え手段と、（４）上記新旧モジュール切り替え手段の切り替え後に、上記主メモリ上の旧部分モジュールをアンロードする旧モジュールアンロード手段とを有することを特徴とする。
【００１０】
第２の本発明は、主メモリにロードされている処理プログラムを更新するプログラム更新方法において、（１）上記処理プログラムを、実行可能ファイルのメインモジュールと、その他の部分モジュールとに分割しておくと共に、アップロード手段、新旧モジュール切り替え手段及び旧モジュールアンロード手段を備え、（２）上記新モジュールアップロード手段は、更新される旧部分モジュールに置き換えられる新部分モジュールを上記主メモリにアップロードし、（３）上記新旧モジュール切り替え手段は、上記主メモリ上で有効な部分モジュールを旧部分モジュールから新部分モジュールに切り替え、（４）上記旧モジュールアンロード手段は、上記新旧モジュール切り替え手段の切り替え後に、上記主メモリ上の旧部分モジュールをアンロードすることを特徴とする。
【００１１】
第３の本発明は、実行可能ファイルのメインモジュールと、その他の部分モジュールとに分割されている、主メモリにロードされている処理プログラムを更新させるためのプログラム更新プログラムであって、コンピュータを、（１）更新される旧部分モジュールに置き換えられる新部分モジュールを上記主メモリにアップロードする新モジュールアップロード手段と、（２）上記主メモリ上で有効な部分モジュールを旧部分モジュールから新部分モジュールに切り替える新旧モジュール切り替え手段と、（３）上記新旧モジュール切り替え手段の切り替え後に、上記主メモリ上の旧部分モジュールをアンロードする旧モジュールアンロード手段として機能させることを特徴とする。
【００１２】
第４の本発明は、交換機能を担う呼制御サーバにおいて、第１の本発明のプログラム更新システムを有することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、システムを停止することなく、プログラムの一部を更新することができるプログラム更新システム、方法及びプログラム、並びに、呼制御サーバを提供できる。
【発明を実施するための最良の形態】
【００１４】
（Ａ）主たる実施形態
以下、本発明によるプログラム更新システム、方法及びプログラム、並びに、呼制御サーバの一実施形態を、図面を参照しながら詳述する。ここで、実施形態の呼制御サーバは、ＩＰセントレックスシステムにおけるＩＰテレフォニーサーバ等の交換機能や呼制御機能を担うメインの呼制御サーバである。
【００１５】
（Ａ−１）実施形態の構成
図１は、実施形態のメイン呼制御サーバのＩＰセントレックスシステムにおける位置付けの一例を示す説明図である。
【００１６】
図１において、実施形態のメイン呼制御サーバを適用しているＩＰセントレックスシステム１は、ＩＰ−ＶＰＮ、広域イーサネットサービス（イーサネットは登録商標）、インターネットＶＰＮなどのＩＰネットワーク２を介して、複数（図１では５つ）の拠点３−１〜３−５が相互に接続されている。
【００１７】
拠点３−１は、本社などのセンターが該当し、内部ネットワーク１０がルータ１１を介してＩＰネットワーク２に接続されている。内部ネットワーク１０には、実施形態の呼制御サーバ（メイン呼制御サーバ）１２や、システム監視サーバや課金情報集計サーバなどの管理用サーバ１３や、アプリケーションサーバやＩＰ公衆電話網接続サーバやプロトコル変換サーバやユニファイドメッセージサーバなどのサービス用サーバ１４が接続されている。図１では省略しているが、主たる拠点３−１にも、各種端末が設けられていても良い。
【００１８】
拠点３−２〜３−５は、支店や営業所などが該当し、それぞれ、内部ネットワーク２０、…、５０がルータ２１、…、５１を介してＩＰネットワーク２に接続されている。
【００１９】
拠点３−２の内部ネットワーク２０には、ＰＨＳ端末２２を収容したＰＨＳ基地局（ＩＰ非対応）２３や固定電話機（ＩＰ非対応）２４を接続したＩＰ遠隔ユニット２５や、ＩＰ公衆電話網接続サーバ２６や、ＩＰ公衆電話網接続サーバ２６の障害時の代替用サバイバルゲートウェイ２７が接続されている。
【００２０】
拠点３−３の内部ネットワーク３０には、内線端末３２を収容したＰＢＸ３３がＶｏＩＰゲートウェイ３４を介して接続されている。
【００２１】
拠点３−４の内部ネットワーク４０には、ＩＰソフトフォン４２やＩＰ固定電話機４３を収容したＩＰ−ＰＢＸ４４が接続されている。
【００２２】
拠点３−５の内部ネットワーク５０には、ＰＨＳ端末５２を収容したＰＨＳ基地局（ＩＰ対応）５３や、ＩＰ固定電話機５４や、無線ＬＡＮ端末５５を収容した無線ＬＡＮアクセスポイント５６や、パソコンベース中継台５７や、ＩＰソフトフォン５８や、ＩＰ遠隔ユニット５９や、メイン呼制御サーバ１２の障害時の代替用サバイバルサーバ６０が接続されている。
【００２３】
上述した各種の内線端末や外線との交換機能や呼制御機能を担っているメイン呼制御サーバ１２は、ハードウェア的には、図２に示すような構成を有する。
【００２４】
メイン呼制御サーバ１２は、制御部７０に対し、インタフェース部（ＩＦ）７１を介して、入力部７２、出力部７３、通信部７４、外部記憶装置７５等が接続されているものである。また、入出力ポート７６を備え、図示しない保守端末等が接続できるようになされている。制御部７０は、ＣＰＵや、ＣＰＵが処理を実行する際にアクセスする各種のメモリ（ＲＯＭ、ＲＡＭなど）からなり、メモリの一部はいわゆる主メモリとして利用される。外部記憶装置７５は、例えば、ハードディスクやＣＤ−ＲＯＭなどの記録媒体とそのアクセス構成とでなり、当該メイン呼制御サーバ１２の主メモリにロードされるプログラム等が記憶されているものである。
【００２５】
外部記憶装置７５には、当該メイン呼制御サーバ１２の立ち上げ時に主メモリにロードすべきプ交換・呼制御用ログラムが格納されている。図３は、外部記憶装置７５に記憶されている交換・呼制御用プログラムの構成の説明図である。
【００２６】
交換・呼制御用プログラム８０は、複数のモジュールに分割されている。モジュールは、メインモジュール８１と、ダイナミックリンクライブラリモジュール（以下、ＤＬＬモジュールと呼ぶ）８２（８２−ａ〜８２−ｎ）を有する。メインモジュール８１は、いわゆる実行可能ファイルであり、ＯＳによって主メモリにロードされるものである。ＤＬＬモジュール８２は、メインモジュール８１（実行可能ファイル）によって読み出されて主メモリにロードされるものである。
【００２７】
外部記憶装置７５に格納されている段階のＤＬＬモジュール８２は、常駐プログラム、非常駐プログラム、サブルーチンという３種類の要素のうちの１種類以上の要素を含むものとなっている。常駐プログラムは、当該メイン呼制御サーバ１２が立ち上げられているときには、常に主メモリ上に存在して動作するプログラムである。非常駐プログラムは、主メモリにロードされているが、システムの稼働している間に常に動作しているものではなく、必要時に常駐プログラムのように一定時間だけ動作をし続けた後、処理が完了した時点で動作を停止するプログラムである。サブルーチンは、常駐プログラム、非常駐プログラムのいずれかスによって読み出されて動作するプログラムである。また、ＤＬＬモジュール８２は、処理面からは、交換処理用として利用されるモジュール、局データ設定・コマンド受付用として利用されるモジュール、障害処理用として利用されるモジュールに分類することができる。
【００２８】
なお、ＤＬＬモジュール８２の識別子（名称）から、交換処理用、局データ設定・コマンド受付用、障害処理用のいずれであるかを区別できるようになされている。また、ＤＬＬモジュール８２を構成する各要素についての識別子から、その要素が、常駐プログラム、非常駐プログラム、サブルーチンのいずれであるかを区別できるようになされている。
【００２９】
メインモジュール８１は、ＤＬＬモジュール８２の操作用の処理ルーチンとして、図３に示すように、当該メイン呼制御サーバ１２が新規に立ち上げられた際に、自己に記述されている所定のＤＬＬモジュールを主メモリにロードするための初期立上げ時ロードルーチン８１Ａや、修正された新モジュール（若しくは新プログラム）を主メモリにロードしたり、修正により不要となった旧モジュール（若しくは旧プログラム）を主メモリからアンロードしたりするための更新ルーチン８１Ｂ等を備えている。
【００３０】
（Ａ−２）実施形態の動作
次に、実施形態の特徴と関係する、メイン呼制御サーバ１２の動作を、図面を参照しながら順に説明する。
【００３１】
（Ａ−２−１）メイン呼制御サーバ１２の新規立ち上げ時の処理
まず、当該メイン呼制御サーバ１２が新規に立ち上げられた際における主メモリへのロード処理を、図４のシーケンス図を参照しながら説明する。
【００３２】
当該メイン呼制御サーバ１２の電源がオンされて新規に立ち上げられると、当該メイン呼制御サーバ１２におけるＯＳ（そのＩＰＬ機能）により、外部記憶装置７５からメインモジュール８１が主メモリにロードされる（Ｓ１００、Ｓ１０１）。ここで、ロードするメインモジュール８１の名称（ファイル名）は、ＩＰＬ用プログラム部分に記述されていても良く、また、保守オペレータに入力させるようにしても良い。
【００３３】
メインモジュール８１には主メモリに新規にロードされた際には、初期立上げ時ロードルーチン８１Ａを実行するように記述されており（なお、保守オペレータによる手動起動であっても良い）、当該メイン呼制御サーバ１２のＣＰＵが、主メモリにロードされた初期立上げ時ロードルーチン８１Ａを実行することにより、外部記憶装置７５から所定のＤＬＬモジュール（８２）を読み出して主メモリにロードさせる処理を繰り返し実行する（Ｓ１０２、Ｓ１０３）。
【００３４】
初期立上げ時ロードルーチン８１Ａは、このようなＣＰＵの実行時に、呼び出し関係がある交換・呼制御用プログラム８０の部分間のリンクを記述したプログラム管理テーブルを作成するようになされている。ここで、プログラム管理テーブルは、呼び出し元プログラム部分（以下、プログラム部分も単にプログラムと呼ぶ）が、呼び出し先プログラムにアクセスできるように、呼び出し先プログラムの主メモリの位置（例えば先頭アドレス）を記述したものである。
【００３５】
図５は、主メモリに存在するプログラムとプログラム間に張られるリンク例の説明図である。例えば、当該メイン呼制御サーバ１２の架キャビネット単位にメインモジュール８１が設けられており、そのメインモジュール８１にはファイル名「ｒｔ」が付されている。メインモジュール８１は、内部に１つのサブシステムを有し、ファイル名「ｒｔ」を呼び出し元とし、サブシステム名「ＳＴ」を呼び出し先とするリンクが張られる。上述のサブシステムは、局データ設定・コマンド受付用としてのサブシステム部分ａｄｍｉｓｔｒａｔｉｏｎ、交換処理用としてのサブシステム部分ｃａｌｌ  ｓｗｉｔｃｈｉｎｇ、障害処理用としてのサブシステム部分ｍａｉｎｔｅｎａｎｃｅを有し、各サブシステムａｄｍｉｓｔｒａｔｉｏｎ、ｃａｌｌ  ｓｗｉｔｃｈｉｎｇ、ｍａｉｎｔｅｎａｎｃｅはそれぞれ、当該サブシステムが利用する全てのＤＬＬモジュールにリンクを張る。図５では、交換処理用としてのサブシステムｃａｌｌ  ｓｗｉｔｃｈｉｎｇから識別子「ＭＴ」を有するＤＬＬモジュールＭｏｄ−ｘ．ＤＬＬにリンクが張れている様子を示している。ＤＬＬモジュールＭｏｄ−ｘ．ＤＬＬは、自己が所有する全ての要素プログラム（関数）の識別子ＰＴ１、ＰＴ２、ＰＴ３、…を管理しており、その識別子ＰＴ１、ＰＴ２、ＰＴ３、…に対応付けて、その要素プログラム（関数）の実体が格納されている主メモリの位置（例えば先頭アドレス）を記述されている。また、要素プログラム（関数）が、常駐プログラムや非常駐プログラムではなく、サブルーチンである場合には、その要素プログラム（関数）の実体が格納されている主メモリの位置に加え、そのサブルーチンのその時点で有効な実行数（プログラム実行カウンタ）も記述されている。図５では、サブルーチンである要素プログラム（関数）ｆｕｎｃ−ｘの実体が格納されている主メモリの位置ＰＯＳと、有効な実行数ＣＮＴが、要素プログラム（関数）ｆｕｎｃ−ｘの識別子ＰＴ３に対応付けられて記述されている。
【００３６】
主メモリの位置の情報は、プログラム管理テーブルに記述されている。プログラムの更新の単位がＤＬＬモジュールの場合には、例えば、サブシステムが呼び出し元プログラムでＤＬＬモジュールが呼び出し先プログラムであるので、サブシステムに、モジュールの主メモリの位置（アドレス）の情報を記述したプログラム管理テーブルが設けられる。
【００３７】
交換機能を有するメイン呼制御サーバ１２の場合、取り扱うセッション（呼）の数も種々変化するものであり、また、呼制御の段階によって必要とするサブルーチンも異なるものである。また、複数のセッションを処理するため、同一のサブルーチンが複数のセッションのために並行して実行されることもあり得る。有効な実行数ＣＮＴは、そのサブルーチンが並行して実行されている数を表している。
【００３８】
（Ａ−２−２）メイン呼制御サーバ１２のプログラム参照呼び出し処理
次に、メイン呼制御サーバ１２が新規に立ち上げられた際に作成されたプログラム管理テーブルを利用した、プログラム参照呼び出し処理を説明する。上述のようにして主メモリにロードされた交換・呼制御用プログラム８０をＣＰＵが実行することにより、メイン呼制御サーバ１２としての交換機能や呼制御機能を実行する。この際、ＤＬＬモジュールの要素プログラム（関数；サブルーチンとする）をアクセスする際には、プログラム管理テーブルを利用したプログラム参照呼び出し処理を行う。
【００３９】
図６は、プログラム参照呼び出し処理の説明図である。一般的には、図６（Ａ）に示すように、呼び出し元のプログラムに呼び出し先のプログラム（例えばＤＬＬモジュール）のアドレスが含まれており、呼び出し元のプログラムが呼び出し先のプログラムを直接呼び出すものであった。この実施形態では、図６（Ｂ）に示すように、呼び出し元のプログラムには、呼び出し先のプログラムの識別子が含まれており、呼び出し元のプログラムは、プログラム管理テーブルを参照し、呼び出し先のプログラムの識別子から、呼び出し先のプログラムの位置（アドレス）を得て呼び出すものである。
【００４０】
ここで、図示は省略しているが、呼び出し先のプログラムがサブルーチンである場合には、この呼出時に、上述した有効な実行数（プログラム実行カウンタ）を１インクリメントする。なお、呼び出されたサブルーチンの実行が終了して処理が呼び出し元のプログラムに戻った際には、上述した有効な実行数が１デンクリメントされる。
【００４１】
（Ａ−２−３）プログラムの更新処理
次に、実施形態のプログラムの更新処理を説明する。
【００４２】
まず、プログラムの更新処理の概要を、図７を参照しながら説明する。なお、プログラムの更新単位は、ＤＬＬモジュールとなされている。
【００４３】
外部記憶装置７５に更新後のＤＬＬモジュール（新モジュール）を格納しておく。ここで、新モジュールの識別子は、更新されるＤＬＬモジュール（旧モジュール）の識別子とほぼ同様であり、バージョンなどを示す一部だけが異なっている。
【００４４】
保守オペレータは、メインモジュール８１の更新ルーチン８１Ｂ（図７）を起動させ、新モジュールのアップロードを指示する。このとき、メインモジュール８１の更新ルーチン８１Ｂは、アップロードが指示された新モジュールがアップロードしても良いものかを確認する（Ｓ２００）。メインモジュール８１の更新ルーチン８１Ｂは、このような新モジュールのアップロード時には、メイン呼制御サーバ１２の新規立ち上げ時のアップロードとは異なり、新モジュールがアップロードしても良いものかを確認する。例えば、この確認時には、交換処理用又は局データ設定・コマンド受付用であって(言い換えると、障害処理用モジュールは拒否される)、常駐プログラムや非常駐プログラムを含まないサブルーチンだけを含むものであることを確認する。新モジュールが、障害処理用モジュールであったり、常駐プログラム若しくは非常駐プログラムを含むものであったりすると、アップロードが拒否され、図７に示す一連の処理を終了する。
【００４５】
新モジュールを外部記憶装置７５から主メモリにアップロードしても良いものである場合には、アップロードさせる（Ｓ２０１）。
【００４６】
新モジュールのアップロードが終了すると、新モジュールを使用できるように、旧モジュールからの新モジュールへの切り替えを実行する（Ｓ２０２）。この切り替え方法については後述する。なお、新モジュールのアップロード時には、新モジュール内の全てのサブルーチンについての有効な実行数（プログラム実行カウンタ）を初期化（０）することを行う。
【００４７】
その後、保守オペレータは新モジュールが適用される呼制御などが実行される操作を行って、新モジュールが適切に実行されていることを確認する。例えば、新モジュールがリンギングバックトーンの音色に関するものであれば、保守オペレータは発呼操作を行い、リンギングバックトーンの音色が適切であることを確認する。
【００４８】
メインモジュール８１の更新ルーチン８１Ｂは、新モジュールをアップロードした後では、入力部７２を介した保守オペレータからの指示を待ち受け、その指示内容を判別する（Ｓ２０３）。保守オペレータは新モジュールが適切に動作することを確認すると、旧モジュールのアンロード（消滅）を指示し、新モジュールが適切に動作しないことを認識すると、旧モジュールへの切り戻しを指示する。
【００４９】
メインモジュール８１の更新ルーチン８１Ｂは、旧モジュールのアンロード（消滅）が指示されると、アンロードを実行できる条件が成立するのを待ち受けた後（Ｓ２０４）、旧モジュールを主メモリから消滅させ（Ｓ２０５）、図７に示す一連の処理を終了させる。ここで、アンロードを実行できる条件とは、旧モジュールに含まれている全てのサブルーチンについての有効な実行数（プログラム実行カウンタ）が０であることである。従って、旧モジュールに含まれている全てのサブルーチンについての有効な実行数（プログラム実行カウンタ）が０になる前では、旧モジュールと新モジュールとが共に実行していることもあり得る。
【００５０】
これに対して、メインモジュール８１の更新ルーチン８１Ｂは、旧モジュールへの切り戻しが指示されると、新モジュールからの旧モジュールへの切り替えを実行し（Ｓ２０６）、新モジュールを主メモリから消滅させ（Ｓ２０７）、図７に示す一連の処理を終了させる。なお、新モジュールを主メモリから消滅させる際にも、新モジュールに含まれている全てのサブルーチンについての有効な実行数（プログラム実行カウンタ）が０であることを待ち受けて行うようにしても良く、また、そのような条件成立を待つことなく、直ちに消滅させるようにしても良い。ここで、新モジュールから旧モジュールへの切り戻し方法は、旧モジュールからの新モジュールへの切り替え方法と同様である。
【００５１】
新旧モジュール間の切り替えは、プログラム管理テーブルの操作によって実行される。図８は、プログラム管理テーブルの構成例を示す説明図である。プログラム管理テーブルは、上述したように、呼び出し先のプログラムの識別子（ＤＬＬモジュール）と、呼び出し先のプログラムの主メモリ上の位置（アドレス）とを対応付けたものである。例えば、呼び出し先のプログラムＡが旧モジュールであり、呼び出し先のプログラムＡ’が新モジュールである場合であれば、プログラム管理テーブルにおける呼び出し先のプログラムＡの識別子に、新モジュールである呼び出し先のプログラムＡ’の主メモリ上の位置（アドレス）を対応付けるように書き換えることにより、新旧モジュール間の切り替えを行う。このようなプログラム管理テーブルの書換えにより、呼び出し元のプログラムが、旧モジュールである呼び出し先のプログラムＡの識別子でプログラム管理テーブルを参照した場合には、新モジュールである呼び出し先のプログラムＡ’が呼び出される。
【００５２】
例えば、プログラムの更新処理前における主メモリの記憶状態及びリンク状態が上述した図５に示すような場合において、新モジュールをアップロードすると、主メモリの記憶状態及びリンク状態は図９に示すようになる。新モジュールをアップロードした状態では、まだ、サブシステムｃａｌｌ  ｓｗｉｔｃｈｉｎｇから識別子「ＭＴ」を有する旧モジュールＭｏｄ−ｘ．ＤＬＬにリンクが張れている。新モジュールＭｏｄ−ｘ．ＤＬＬ’への切り替えがなされ、サブシステムｃａｌｌ  ｓｗｉｔｃｈｉｎｇ内のプログラム管理テーブルが書き換えられると、主メモリの記憶状態及びリンク状態は図１０に示すようになり、サブシステムｃａｌｌ  ｓｗｉｔｃｈｉｎｇから識別子「ＭＴ」を有する新モジュールＭｏｄ−ｘ．ＤＬＬ’にリンクが張れるが旧モジュールＭｏｄ−ｘ．ＤＬＬも主メモリ上に残存している。その後、旧モジュールＭｏｄ−ｘ．ＤＬＬをアンロードすると、主メモリの記憶状態及びリンク状態は図１１に示すようになり、旧モジュールＭｏｄ−ｘ．ＤＬＬは主メモリ上から消滅する。
【００５３】
（Ａ−３）実施形態の効果
上記実施形態によれば、交換・呼制御用ログラムを、実行可能ファイルであるメインモジュールと、メインモジュールによってアップロードされる複数のＤＬＬモジュールとで構成し、いずれかのＤＬＬモジュールを更新する際には、新ＤＬＬモジュールをアップロードして主メモリに新旧のＤＬＬモジュールを併存させた後、新ＤＬＬモジュールへの切り替えを行い、その後、旧ＤＬＬモジュールをアンロードさせるようにしたので、システムを無停止でＤＬＬモジュールを更新（修正）することができる。
【００５４】
また、上記実施形態によれば、アップロードする新ＤＬＬモジュールに常駐プログラム若しくは非常駐プログラムが含まれている場合にはアップロードを禁止するようにしたので、ＤＬＬモジュールの更新（修正）によって、システムが誤動作したり更新時間が徒に長くなったりすることを未然に防止することができる。因みに、常駐プログラムや非常駐プログラムはサブルーチンに比べ、実行時間が長かったり、ループが多くかったりし、常駐プログラムや非常駐プログラムを含むＤＬＬモジュールを更新対象とした場合には、新ＤＬＬモジュールの実行確認に長い時間がかかって更新時間が長くなったり、実行確認時に無限ループに入ったりする恐れがある。
【００５５】
さらに、上記実施形態によれば、ＤＬＬモジュール内のサブルーチンに対応付けてプログラム実行カウンタを設け、旧ＤＬＬモジュール内の全てのサブルーチンに対応付けられているプログラム実行カウンタが０になったことを条件に旧ＤＬＬモジュールをアンロードするようにしたので、新ＤＬＬモジュールがアップロードした際に、旧ＤＬＬモジュールのサブルーチンを利用していたセッションがあったとしても、そのセッションに悪影響を与えることはない。
【００５６】
さらにまた、上記実施形態によれば、新ＤＬＬモジュールが正常動作を保証できず、旧ＤＬＬモジュールに切り戻す際にも、システムを停止させずに実行することができる。
【００５７】
（Ｂ）他の実施形態
上記実施形態においても種々変形実施形態に言及したが、さらに、以下に例示するような変形実施形態を挙げることができる。
【００５８】
上記実施形態では、全てのサブルーチンに対応付けられているプログラム実行カウンタが０になることを、旧ＤＬＬモジュールのアンロードの条件としているものを示したが、他の条件を適用するようにしても良い。例えば、新ＤＬＬモジュールがアップロードされた時点から、所定時間を経過したときに、旧ＤＬＬモジュールをアンロードするようにしても良い。
【００５９】
上記実施形態では、当該メイン呼制御サーバ１２を新規に立ち上げる際にアップロードされるモジュールを記憶している記憶装置も、更新のための新モジュールを記憶している記憶装置も同じものであったが、これらの外部記憶装置が異なっていても良い。例えば、更新のための新モジュールを記憶している記憶装置として、保守用端末に設けられている記憶装置を適用するようにしても良い。
【００６０】
上記実施形態では、１つのモジュール毎に更新するように説明したが、複数種類の新モジュールを同時にアップロードし、複数種類のモジュールの更新を並行して行うようにしても良い。
【００６１】
上記実施形態では、ＩＰセントレックスシステムにおけるＩＰテレフォニーサーバ等の交換機能や呼制御機能を担うメインの呼制御サーバのプログラム更新に適用した場合を示したが、他の呼制御サーバや交換機（特許請求の範囲では呼制御サーバや交換機をまとめて呼制御サーバと呼んでいる）に本発明を適用するようにしても良い。さらに、呼制御サーバや交換機以外の装置におけるプログラムの更新に、本発明を適用するようにしても良い。
【図面の簡単な説明】
【００６２】
【図１】実施形態のメイン呼制御サーバのＩＰセントレックスシステムにおける位置付けの一例を示す説明図である。
【図２】実施形態のメイン呼制御サーバのハードウェア的構成例を示すブロック図である。
【図３】図２の外部記憶装置に記憶されている交換・呼制御用プログラムの構成の説明図である。
【図４】実施形態のメイン呼制御サーバが新規に立ち上げられた際における主メモリへのロード処理を示すシーケンス図である。
【図５】実施形態における主メモリに存在する交換・呼制御用プログラムのプログラムとプログラム間に張られたリンクの例を示す説明図である。
【図６】実施形態におけるプログラム参照呼び出し処理の説明図である。
【図７】実施形態におけるプログラムの更新処理の概要を示すフローチャートである。
【図８】実施形態におけるプログラム管理テーブルの構成例を示す説明図である。
【図９】実施形態のプログラム更新時における主メモリの記憶状態及びリンク状態を示す説明図（１）である。
【図１０】実施形態のプログラム更新時における主メモリの記憶状態及びリンク状態を示す説明図（２）である。
【図１１】実施形態のプログラム更新時における主メモリの記憶状態及びリンク状態を示す説明図（３）である。
【符号の説明】
【００６３】
１…ＩＰセントレックスシステム、１２…メイン呼制御サーバ、７０…制御部、７５…外部記憶装置、８０…交換・呼制御用プログラム、８１…メインモジュール、８１Ａ…初期立上げ時ロードルーチン、８１Ｂ…更新ルーチン、８２−ａ〜８２−ｎ…ダイナミックリンクライブラリモジュール（ＤＬＬモジュール）。
【図１】
2010130620.tif 000003
【図２】
2010130620.tif 000004
【図３】
2010130620.tif 000005
【図４】
2010130620.tif 000006
【図５】
2010130620.tif 000007
【図６】
2010130620.tif 000008
【図７】
2010130620.tif 000009
【図８】
2010130620.tif 000010
【図９】
2010130620.tif 000011
【図１０】
2010130620.tif 000012
【図１１】
2010130620.tif 000013