(57)【要約】【課題】正常動作時のパフォーマンスの低下を招くことなく、障害発生時の状態を回復する「データ処理システム」を提供する。【解決手段】リトライ制御部３４は、サーバプロセス２０の障害が発生したならば起動要求部３５を制御して、システム制御プロセス１０のプロセス起動部１１を介して、サーバプロセス２０を再起動しＳ３１-３２、サーバIF取得部３１に、再起動したサーバプロセス２０から、サーバIFを取得させるＳ３３。そして、サービス部３２に、履歴記憶部３３に記憶されているサーバプロセス２０の機能呼出の履歴に基づいて、再起動したサーバプロセス２０のサーバサービス部２１のノーマルクライアントプロセス３０に関する処理の状態を、障害発生前の状態と同じ状態とするために必要な機能呼出を、サーバプロセス２０に発行させるＳ３４。【選択図】図２
2010170389.tif 000002
【特許請求の範囲】
【請求項１】
サーバプロセスと、当該サーバプロセスから当該サーバプロセスの機能にアクセスするためのインタフェースをサーバIFとして取得し、取得したサーバIFを介して、当該サーバプロセスに対して機能呼出を発行することにより前記サーバプロセスの機能を利用するクライアントプロセスとが稼働するデータ処理システムであって、
前記クライアントプロセスは、
前記サーバプロセスに発行した機能呼出の履歴を記憶する履歴記憶手段と、
前記サーバプロセスの障害の発生を検出する障害検出手段と、
前記障害検出手段が、前記サーバプロセスの障害の発生を検出したときに、前記サーバプロセスを再起動する再起動手段と、
前記再起動手段が再起動したサーバプロセスからサーバIFを再取得するサーバIF再取得手段と、
前記履歴記憶手段に記憶されている機能呼出の履歴に基づいて、前記サーバIF再取得手段が再取得したサーバIFを介して、再起動したサーバプロセスの状態を、前記サーバプロセスの障害の発生前の状態に遷移させる機能呼出を行う状態回復手段とを有することを特徴とするデータ処理システム。
【請求項２】
サーバプロセスと、設定されたサーバIFを介して前記サーバプロセスに対して機能呼出を発行することにより前記サーバプロセスの機能を利用するクライアントプロセスと、前記サーバプロセスの機能にアクセスするためのインタフェースを前記サーバIFとして当該サーバプロセスから取得し、前記クライアントプロセスに設定するサーバIFデリバリプロセスとが稼働するデータ処理システムであって、
前記サーバIFデリバリプロセスは、
前記サーバプロセスの障害の発生を検出する障害検出手段と、
前記障害検出手段が、前記サーバプロセスの障害の発生を検出したときに、前記サーバプロセスを再起動する再起動手段と、
前記再起動手段が再起動したサーバプロセスからサーバIFを再取得し、前記クライアントプロセスに設定されているサーバIFを再取得したサーバIFに切り替えるサーバIF切替手段とを有し、
前記クライアントプロセスは、
前記サーバプロセスに発行した機能呼出の履歴を記憶する履歴記憶手段と、
設定されているサーバIFが切り替えられたときに、前記履歴記憶手段に記憶されている機能呼出の履歴に基づいて、前記切り替え後のサーバIFを介して、再起動したサーバプロセスの状態を、前記サーバプロセスの障害の発生前の状態に遷移させる機能呼出を行う状態回復手段とを有することを特徴とするデータ処理システム。
【請求項３】
サーバプロセスと、サーバIFデリバリプロセスと、取得したサーバIFを介して前記サーバプロセスに対して機能呼出を発行することにより前記サーバプロセスの機能を利用するクライアントプロセスとが稼働するデータ処理システムであって、前記サーバIFデリバリプロセスは、前記クライアントプロセスから発行されたサーバIF要求に応答して、前記サーバプロセスの機能にアクセスするためのインタフェースを前記サーバIFとして当該サーバプロセスから取得し、前記クライアントプロセスに配信し、前記クライアントプロセスは、前記サーバIFデリバリプロセスにサーバIF要求を発行することによりサーバIFを取得するデータ処理システムであって、
前記サーバIFデリバリプロセスは、
前記サーバプロセスの障害の発生を検出する障害検出手段と、
前記障害検出手段が、前記サーバプロセスの障害の発生を検出したときに、前記サーバプロセスを再起動する再起動手段とを有し、
前記クライアントプロセスは、
前記サーバプロセスに発行した機能呼出の履歴を記憶する履歴記憶手段と、
前記サーバプロセスの障害の発生を検知する障害検知手段と、
前記障害検知手段が、前記サーバプロセスの障害の発生を検知したときに、前記サーバIFデリバリプロセスにサーバIF要求を発行することによりサーバIFを再取得するサーバIF再取得手段と、
前記障害検知手段が、前記サーバプロセスの障害の発生を検知したときに、前記履歴記憶手段に記憶されている機能呼出の履歴に基づいて、前記サーバIF再取得手段が再取得したサーバIFを介して、再起動したサーバプロセスの状態を、前記サーバプロセスの障害の発生前の状態に遷移させる機能呼出を行う状態回復手段とを有することを特徴とするデータ処理システム。
【請求項４】
請求項１記載のデータ処理システムであって、
当該データ処理システムは自動車に搭載されるデータ処理システムであり、
前記サーバプロセスは、カーナビゲーション機能を提供するサーバプロセスであり、
前記クライアントプロセスは、表示インタフェースを含むヒューマンインタフェースを制御するプロセスであって、前記サーバプロセスのカーナビゲーション機能を利用しながら、カーナビゲーション機能の表示インタフェースを含むヒューマンインタフェースをユーザに提供するプロセスであり、
当該クライアントプロセスは、前記障害検出手段が、前記サーバプロセスの障害の発生を検出してから、前記状態回復手段が、起動したサーバプロセスの状態を、前記サーバプロセスの障害の発生前の状態に遷移させるまで、前記カーナビゲーションの表示インタフェースの表示内容を、前記サーバプロセスの障害の発生前の表示内容に維持する表示維持手段を有することを特徴とするデータ処理システム。
【請求項５】
コンピュータによって読みとられ実行されるコンピュータプログラムであって、
前記コンピュータを請求項１、２、３または４記載のデータ処理システムとして機能させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムにおいて発生した障害を回復する技術に関するものである。
【背景技術】
【０００２】
データ処理システムにおいて発生した障害を回復する技術としては、複数のアプリケーションが稼働するデータ処理システムにおいて、アプリケーションに対して成された操作を保存しておき、アプリケーションに障害が発生したときに、障害が生じたアプリケーションと同一のアプリケーションを起動し、起動したアプリケーションに保存しておいた操作を再投入すると共に、障害が発生したアプリケーションの表示画面に代えて、起動したアプリケーションの表示画面を表示することにより、ユーザに障害発生を認知されることなく、データ処理システムの状態を障害発生前の状態に復帰する技術が知られている（たとえば、特許文献１）。
【０００３】
また、データ処理システムにおいて発生した障害を回復する技術としては、複数のプロセスが稼働するデータ処理システムにおいて、プロセスの障害発生状況を管理する制御部を設け、制御部においてプロセスに障害が発生したときに、障害が生じたプロセスと、当該プロセスと連携している他のプロレスとを再起動する技術も知られている（たとえば、特許文献２）。
【０００４】
また、データ処理システムにおいて発生した障害を回復する技術としては、複数のアプリケーションが稼働するデータ処理システムにおいて、アプリケーションの稼働状態を収集保存する制御部を設け、アプリケーションに障害が発生したときに、障害が生じたアプリケーションを再起動すると共に、再起動したアプリケーションを保存しておいた稼働状態を用いて障害発生前の状態に復帰する技術も知られている（たとえば、特許文献３）。
【０００５】
また、この技術では、制御部において、障害が生じたアプリケーションと連携して稼働している他のアプリケーションを、障害が生じたアプリケーションの再起動及び状態復帰の完了まで、障害が生じたアプリケーションと切り離す制御も行っている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2004-30092号公報
【特許文献２】特開2001-282755号公報
【特許文献３】特開2002-342095号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
前記特許文献１の技術によれば、各アプリケーションが各々独立して動作している場合には、データ処理システム全体を再起動することなく、データ処理システムの状態を復帰することができるが、障害が発生したアプリケーションのみを再起動して、その状態を復帰するものであるため、障害が発生したアプリケーションと連携して稼働するアプリケーションが存在する場合には、データ処理システム全体の状態を障害発生前の状態に復帰できない場合が生じ得る。
【０００８】
また、特許文献２、３の技術によれば、制御部において連携して稼働するアプリケーションやプロセスを把握していることが必要となるが、連携して稼働するアプリケーションやプロセスの組み合わせが動的に変化するデータ処理システムにおいては、制御部において連携して稼働するアプリケーションやプロセスを管理することが困難となる。
【０００９】
また、特許文献２の技術によれば、再起動した個々のプロセスを、障害発生前の状態に復帰することはできない。
また、特許文献３の技術によれば、制御部において、各アプリケーションの稼働状態を収集管理することが必要となるが、多くのアプリケーションが稼働するデータ処理システムにおいては、このような各アプリケーションの稼働状態を収集管理のためのリソースの消費によって、各アプリケーションの正常動作時にもデータ処理システムのパフォーマンスを低下させてしまうことがある。
【００１０】
そこで、本発明は、連携して稼働するプロセスが動的に変化するデータ処理システムにおいて、正常動作時のパフォーマンスの低下を招くことなく、障害発生時の状態回復を実現することを課題とする。
【課題を解決するための手段】
【００１１】
前記課題達成のために、本発明は、サーバプロセスと、当該サーバプロセスから当該サーバプロセスの機能にアクセスするためのインタフェースをサーバIFとして取得し、取得したサーバIFを介して、当該サーバプロセスに対して機能呼出を発行することにより前記サーバプロセスの機能を利用するクライアントプロセスとが稼働するデータ処理システムにおいて、前記クライアントプロセスに、前記サーバプロセスに発行した機能呼出の履歴を記憶する履歴記憶手段と、前記サーバプロセスの障害の発生を検出する障害検出手段と、前記障害検出手段が、前記サーバプロセスの障害の発生を検出したときに、前記サーバプロセスを再起動する再起動手段と、前記再起動手段が再起動したサーバプロセスからサーバIFを再取得するサーバIF再取得手段と、前記履歴記憶手段に記憶されている機能呼出の履歴に基づいて、前記サーバIF再取得手段が再取得したサーバIFを介して、再起動したサーバプロセスの状態を、前記サーバプロセスの障害の発生前の状態に遷移させる機能呼出を行う状態回復手段とを備えたものである。
【００１２】
ここで、このようなデータ処理システムは、より具体的には、たとえば、自動車に搭載されるデータ処理システムであり、前記サーバプロセスは、カーナビゲーション機能を提供するサーバプロセスであり、前記クライアントプロセスは、表示インタフェースを含むヒューマンインタフェースを制御するプロセスであって、前記サーバプロセスのカーナビゲーション機能を利用しながら、カーナビゲーションの表示インタフェースを含むヒューマンインタフェースをユーザに提供するプロセスである。なお、このような自動車に搭載されるデータ処理システムにおいては、当該クライアントプロセスに、前記障害検出手段が、前記サーバプロセスの障害の発生を検出してから、前記状態回復手段が、起動したサーバプロセスの状態を、前記サーバプロセスの障害の発生前の状態に遷移させるまで、前記カーナビゲーションの表示インタフェースの表示内容を、前記サーバプロセスの障害の発生前の表示内容に維持する表示維持手段を、さらに設けることが好ましい。
【００１３】
また、前記課題達成のために、本発明は、サーバプロセスと、設定されたサーバIFを介して前記サーバプロセスに対して機能呼出を発行することにより前記サーバプロセスの機能を利用するクライアントプロセスと、前記サーバプロセスの機能にアクセスするためのインタフェースを前記サーバIFとして当該サーバプロセスから取得し、前記クライアントプロセスに設定するサーバIFデリバリプロセスとが稼働するデータ処理システムにおいて、前記サーバIFデリバリプロセスに、前記サーバプロセスの障害の発生を検出する障害検出手段と、前記障害検出手段が、前記サーバプロセスの障害の発生を検出したときに、前記サーバプロセスを再起動する再起動手段と、前記再起動手段が再起動したサーバプロセスからサーバIFを再取得し、前記クライアントプロセスに設定されているサーバIFを再取得したサーバIFに切り替えるサーバIF切替手段とを備え、前記クライアントプロセスに、前記サーバプロセスに発行した機能呼出の履歴を記憶する履歴記憶手段と、設定されているサーバIFが切り替えられたときに、前記履歴記憶手段に記憶されている機能呼出の履歴に基づいて、前記切り替え後のサーバIFを介して、再起動したサーバプロセスの状態を、前記サーバプロセスの障害の発生前の状態に遷移させる機能呼出を行う状態回復手段とを備えたものである。
【００１４】
また、本発明は、前記課題達成のために、サーバプロセスと、サーバIFデリバリプロセスと、取得したサーバIFを介して前記サーバプロセスに対して機能呼出を発行することにより前記サーバプロセスの機能を利用するクライアントプロセスとが稼働するデータ処理システムであって、前記サーバIFデリバリプロセスは、前記クライアントプロセスから発行されたサーバIF要求に応答して、前記サーバプロセスの機能にアクセスするためのインタフェースを前記サーバIFとして当該サーバプロセスから取得し、前記クライアントプロセスに配信し、前記クライアントプロセスは、前記サーバIFデリバリプロセスにサーバIF要求を発行することによりサーバIFを取得するデータ処理システムにおいて、前記サーバIFデリバリプロセスに、前記サーバプロセスの障害の発生を検出する障害検出手段と、前記障害検出手段が、前記サーバプロセスの障害の発生を検出したときに、前記サーバプロセスを再起動する再起動手段とを備え、前記クライアントプロセスに、前記サーバプロセスに発行した機能呼出の履歴を記憶する履歴記憶手段と、前記サーバプロセスの障害の発生を検知する障害検知手段と、前記障害検知手段が、前記サーバプロセスの障害の発生を検知したときに、前記サーバIFデリバリプロセスにサーバIF要求を発行することによりサーバIFを再取得するサーバIF再取得手段と、前記障害検知手段が、前記サーバプロセスの障害の発生を検知したときに、前記履歴記憶手段に記憶されている機能呼出の履歴に基づいて、前記サーバIF再取得手段が再取得したサーバIFを介して、再起動したサーバプロセスの状態を、前記サーバプロセスの障害の発生前の状態に遷移させる機能呼出を行う状態回復手段とを設けたものである。
【００１５】
また、併せて本発明は、コンピュータによって読みとられ実行されるコンピュータプログラムであって、前記コンピュータを以上の各データ処理システムとして機能させることを特徴とするコンピュータプログラムも提供する。
これらのデータ処理システムやコンピュータプログラムによれば、連携して稼働するプロセスや各プロセスの稼働状態を集中管理する必要がなく、クライアントプロセスやサーバIFデリバリプロセスは、自身が関連するプロセスを管理すると共に、クライアントプロセスにおいて自身が行った機能呼出の履歴を管理するだけで良いので、連携して稼働するプロセスが動的に変化する場合においても、各プロセスの稼働状態を集中管理する場合に比べ少ないリソースの消費量で、且つ、正常動作時のパフォーマンスの低下を招くことなく、サーバプロセスの障害発生時の状態回復を実現することができる。
【発明の効果】
【００１６】
以上のように、本発明によれば、連携して稼働するプロセスが動的に変化するデータ処理システムにおいて、正常動作時のパフォーマンスの低下を招くことなく、障害発生時の状態回復を実現することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態に係るデータ処理システムのプロセス構成を示すブロック図である。
【図２】本発明の実施形態に係るノーマルクライアントプロセスとサーバプロセスとシステム制御プロセスとを示すブロック図である。
【図３】本発明の実施形態に係るノーマルクライアントプロセスが行うリトライ処理を示すフローチャートである。
【図４】本発明の実施形態に係るパッシブIF取得クライアントプロセスと、サーバIFデリバリプロセスとサーバプロセスとシステム制御部とを示すブロック図である。
【図５】本発明の実施形態に係るサーバIFデリバリプロセスが行う障害処理と、パッシブIF取得クライアントプロセスが行うリトライ処理を示すフローチャートである。
【図６】本発明の実施形態に係るアクティブIF取得クライアントプロセスと、サーバIFデリバリプロセスとサーバプロセスとシステム制御部とを示すブロック図である。
【図７】本発明の実施形態に係るアクティブIF取得クライアントプロセスが行うリトライ処理を示すフローチャートである。
【図８】本発明の実施形態に係るデータ処理システムの動作例を示す図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態を説明する。
本実施形態に係るデータ処理システムは、ハードウエア的には、ＣＰＵと、入力装置や表示装置や外部記憶装置や、その他の周辺装置を備えたコンピュータを用いて構成される。
そして、図１ａに示すように、当該コンピュータのプログラムの実行によって具現化するオペレーティングシステム１と、オペレーティングシステム１上で稼働する複数のプロセス２によって、データ処理システムの各機能が実現される。
ここで、オペレーティングシステム１上で稼働するプロセス２としては、他のプロセス２にサービスを提供するサーバ機能を備えたプロセス２（以下、「サーバプロセス」と記す）や、サーバプロセスのサービスを利用するクライアント機能を備えたプロセス２「以下、「クライアントプロセス」と記す」などがある。
【００１９】
そして、一つのサーバプロセスに着目して、当該サーバプロセスとの関係において、各プロセス２の構成を示した場合には、データ処理システムは、図１ｂに示すように、システム制御プロセス１０と、当該サーバプロセス２０と、ノーマルクライアントプロセス３０と、パッシブIF取得クライアントプロセス４０と、アクティブIF取得クライアントプロセス５０と、サーバIFデリバリプロセス６０と、その他のプロセス群７０とより構成される。
【００２０】
ここで、ノーマルクライアントプロセス３０は、サーバプロセス２０のサービス（機能）にアクセスするために用いる当該サーバプロセス２０のIFであるサーバIFを直接サーバプロセスから取得し、取得したサーバIFを用いてサーバプロセス２０のサービスを利用するクライアントプロセスである。
【００２１】
また、パッシブIF取得クライアントプロセス４０とアクティブIF取得クライアントプロセス５０は、サーバIFデリバリプロセス６０を介して取得したサーバIFを用いてサーバプロセス２０のサービスを利用するクライアントプロセスである。ただし、パッシブIF取得クライアントプロセス４０は、サーバIFデリバリプロセス６０から受動的にサーバIFが設定されるのに対して、アクティブIF取得クライアントプロセス５０は能動的にサーバIFデリバリプロセス６０からサーバIFを取得する。
【００２２】
すなわち、サーバIFデリバリプロセス６０は、自律的にサーバIFをサーバプロセス２０から取得してパッシブIF取得クライアントプロセス４０に設定したり、アクティブIF取得クライアントプロセス５０からの要求に応じてサーバIFをサーバプロセス２０から取得してアクティブIF取得クライアントプロセス５０に通知する処理を行う。
【００２３】
なお、図１ｂにおける各プロセス２の実線は、クライアントプロセスがサーバプロセス２０のサービスを利用するときデータの流れを、点線はクライアントプロセスがサーバプロセス２０のサーバIFを取得するために使用するデータの流れを、一点鎖線は障害回復に用いるデータの流れを表している。ただし、各プロセス２間のデータは、実際にはオペレーティングシステム１を介して送受されることになる。
【００２４】
以下、このような構成において、サーバプロセス２０に障害（所謂クラッシュ）が発生したときの回復動作について説明する。
まず、ノーマルクライアントプロセス３０が行う、サーバプロセス２０に障害が発生したときの回復動作について説明する。
図２ａに、データ処理システムの、ノーマルクライアントプロセス３０とサーバプロセス２０とシステム制御プロセス１０とを抜き出して示す。
図示するように、ノーマルクライアントプロセス３０は、サーバIF取得部３１と、サービス部３２と、履歴記憶部３３と、リトライ制御部３４と、起動要求部３５とを備えている。
また、サーバプロセス２０は、クライアントプロセスにサーバIFを介してサービスを提供するサーバサービス部２１を備えている。
また、システム制御プロセス１０は、プロセス起動部１１、障害通知部１２、障害検知部１３とを有している。
このような構成において、ノーマルクライアントプロセス３０のサーバプロセス２０の利用は、次のように行われる。
すなわち、まず、ノーマルクライアントプロセス３０の起動要求部３５から、システム制御プロセス１０のプロセス起動部１１にサーバプロセス２０の起動要求を発行するＳ２１。起動要求を受け取ったシステム制御プロセス１０のプロセス起動部１１は、オペレーティングシステム１を介して、サーバプロセス２０を起動するＳ２２。
【００２５】
次に、ノーマルクライアントプロセス３０のサーバIF取得部３１は、サーバプロセス２０から、サーバIFを取得するＳ２３。そして、ノーマルクライアントプロセス３０のサービス部３２は、サーバIF取得部３１が取得したサーバIFを用いて、サーバプロセス２０のサーバサービス部２１に機能呼出を発行することにより、そのサービスを利用しながらＳ２４、自身の処理を行う。また、サービス部３２が、サーバIFを介して、サーバサービス部２１に対して行った機能呼出の履歴を履歴記憶部３３に蓄積する。
【００２６】
このようにしてノーマルクライアントプロセス３０がサーバプロセス２０を利用している状態において、ノーマルクライアントプロセス３０のリトライ制御部３４は、図３に示すリトライ処理を実行する。
図示するように、このリトライ処理において、リトライ制御部３４は、サーバプロセス２０の障害発生を監視する（ステップ３０２）。
ここで、前述したように、ノーマルクライアントプロセス３０とサーバプロセス２０との間の通信はオペレーティングシステム１を介して行われる。すなわち、オペレーティングシステム１は、ノーマルクライアントプロセス３０から発行された機能呼出をサーバプロセス２０に中継し、サーバプロセス２０からの機能呼出に対する応答をノーマルクライアントプロセス３０に中継する。そして、オペレーティングシステム１は、ノーマルクライアントプロセス３０から発行された機能呼出に対して、サーバプロセス２０の障害により、サーバプロセス２０よりの応答をノーマルクライアントプロセス３０に返すことができない場合に、ノーマルクライアントプロセス３０に機能呼出に対する応答として、サーバプロセス障害によるエラーを応答する。
【００２７】
そして、リトライ処理のステップ３０２では、サービス部３２が発行した機能呼出に対する応答として、サーバプロセス障害によるエラーを受信したときに、サーバプロセス２０に障害が発生したと判定する。
次に、サーバプロセス２０に障害が発生したならば、リトライ制御部３４は、ノーマルクライアントプロセス３０のサービス部３２の表示出力内容を、現在の状態に凍結すると共に、サービス部３２の処理を一時停止させる（ステップ３０４）。ただし、サービス部３２が表示出力を行わないものである場合には、表示出力内容の凍結は不要である。
【００２８】
そして、次に、図２ｂに示すように、ノーマルクライアントプロセス３０の起動要求部３５を制御して、システム制御プロセス１０のプロセス起動部１１を介して、サーバプロセス２０を再起動するＳ３１-３２（ステップ３０６）。
また、ノーマルクライアントプロセス３０のサーバIF取得部３１に、再起動したサーバプロセス２０から、サーバIFを取得させるＳ３３（ステップ３０８）。
そして、次に、サービス部３２に、再起動したサーバプロセス２０のサーバサービス部２１の、ノーマルクライアントプロセス３０に関する処理の状態を、サーバプロセス２０の障害発生前の状態に回復する処理を行わせる（ステップ３１０）。
障害発生前の状態に回復する処理は、サービス部３２が、履歴記憶部３３に記憶されている機能呼出の履歴に基づいて、再起動したサーバプロセス２０のサーバサービス部２１のノーマルクライアントプロセス３０に関する処理の状態を、サーバプロセス２０の障害発生前の状態と同じ状態とするために必要な機能呼出を、ステップ３０８で取得したサーバIFを用いて、サーバプロセス２０に発行することにより行うＳ３４。
【００２９】
そして、最後に、サービス部３２の表示出力の凍結を解除して、サービス部３２の一次停止していた処理を再開させ（ステップ３１２）、ステップ３０２の監視に戻る。ここで、ステップ３１２で再開されたサービス部３２の処理は、ステップ３０８で取得したサーバIFを用いてサーバプロセス２０を利用しながら行われることになる。
【００３０】
以上、ノーマルクライアントプロセス３０が行う、サーバプロセス２０に障害が発生したときの回復動作について説明した。
なお、ノーマルクライアントプロセス３０のリトライ制御部３４は、以上のようなリトライ処理によるサーバプロセス障害の回復処理以外にも、各種エラーに対する回復処理を行う機能を備えている。
次に、パッシブIF取得クライアントプロセス４０と、サーバIFデリバリプロセス６０が行う、サーバプロセス２０に障害が発生したときの回復動作について説明する。
図４ａに、データ処理システムの、パッシブIF取得クライアントプロセス４０とサーバIFデリバリプロセス６０とサーバプロセス２０とシステム制御部とを抜き出して示す。
図示するように、パッシブIF取得クライアントプロセス４０は、サーバIF設定部４１と、サービス部４２と、履歴記憶部４３と、リトライ制御部４４とを備えている。
また、サーバIFデリバリプロセス６０は、サーバIF取得部６１と、サーバIF配信部６２と、障害処理部６３と、起動要求部６４とを備えている。
このような構成において、パッシブIF取得クライアントプロセス４０のサーバプロセス２０の利用は、次のように行われる。
すなわち、まず、サーバIFデリバリプロセス６０の起動要求部６４から、システム制御プロセス１０のプロセス起動部１１にサーバプロセス２０の起動要求を発行しＳ４１、起動要求を受け取ったシステム制御プロセス１０のプロセス起動部１１は、オペレーティングシステム１を介して、サーバプロセス２０を起動するＳ４２。
【００３１】
そして、サーバIFデリバリプロセス６０の障害処理部６３は、起動したサーバプロセス２０の障害発生通知要請をシステム制御プロセス１０の障害通知部１２に設定するＳ４３。
次に、サーバIFデリバリプロセス６０のサーバIF取得部６１は、サーバプロセス２０から、サーバIFを取得しＳ４４、サーバIF配信部６２を介して、パッシブIF取得クライアントプロセス４０のサーバIF設定部４１に設定するＳ４５。
そして、パッシブIF取得クライアントプロセス４０のサービス部４２は、サーバIFデリバリプロセス６０からサーバIF設定部４１に設定されたサーバIFを用いて、サーバプロセス２０のサーバサービス部２１に機能呼出を発行することにより、そのサービスを利用しながらＳ４６、自身の処理を行う。また、サービス部４２が、サーバIFを介して、サーバサービス部２１に対して行った機能呼出の履歴を履歴記憶部４３に蓄積する。
【００３２】
このようにしてパッシブIF取得クライアントプロセス４０がサーバプロセス２０を利用している状態において、サーバIFデリバリプロセス６０の障害処理部６３は、図５ａに示す障害処理を、パッシブIF取得クライアントプロセス４０のリトライ制御部４４は図５ｂに示すリトライ処理を実行する。
【００３３】
図５ａに示すように、サーバIFデリバリプロセス６０の障害処理部６３は、この障害処理において、サーバプロセス２０の障害発生を監視する（ステップ５０２）。
ここで、システム制御プロセス１０の障害検知部１３は、オペレーティングシステム１を介して各プロセス２の障害発生を監視しＳ４７、障害が発生したプロセス２を障害通知部１２に通知する。そして、障害通知部１２は、通知されたプロセス２が、サーバIFデリバリプロセス６０の障害処理部６３から障害発生通知要請を設定されているプロセス２である場合には、設定元のサーバIFデリバリプロセス６０の障害処理部６３に、当該プロセス２の障害発生を通知する図４ａＳ４８。
【００３４】
そして、障害処理のステップ５０２では、このシステム制御プロセス１０の障害通知部１２からの通知に基づいて、サーバプロセス２０の障害発生を検知する。
次に、サーバプロセス２０に障害が発生したならば、障害処理部は、図４ｂに示すように、起動要求部６４を制御して、システム制御プロセス１０のプロセス起動部１１を介して、サーバプロセス２０を再起動するＳ５１-５２（ステップ５０４）。
そして、障害が発生したサーバプロセス２０が、そのサーバIFをパッシブIF取得クライアントプロセス４０に設定したサーバプロセス２０であるかどうかを判定し（ステップ５０６）、そうでなければステップ５０２の監視に戻る。
一方、障害が発生したサーバプロセス２０が、そのサーバIFをパッシブIF取得クライアントプロセス４０に設定したサーバプロセス２０であれば（ステップ５０６）、サーバIF取得部６１に、再起動したサーバプロセス２０から、サーバIFを取得させるＳ５３（ステップ５０８）。そして、サーバIF配信部６２から、ステップ５０８で取得したサーバIFへの利用サーバIFの切り替えを、障害が発生したサーバプロセス２０のサーバIFを過去に通知したパッシブIF取得クライアントプロセス４０のサーバIF設定部４１に通知させるＳ５４（ステップ５１０）。
【００３５】
そして、ステップ５０２の監視に戻る。
次に、図５ｂに示すように、パッシブIF取得クライアントプロセス４０のリトライ制御部４４が行うリトライ処理では、サーバIF設定部４１における、サーバIFデリバリプロセス６０のサーバIF配信部６２からの利用サーバIFの切り替えの通知の受信を監視し（ステップ５５２）、当該受信が発生したならば、サービス部４２の表示出力内容を、現在の状態に凍結すると共に、サービス部４２の処理を一時停止させる（ステップ５５４）。ただし、サービス部４２が表示出力を行わないものである場合には、表示出力内容の内容の凍結は不要である。
【００３６】
そして、次に、サービス部４２に、再起動したサーバプロセス２０のサーバサービス部２１の、パッシブIF取得クライアントプロセス４０に関する処理の状態を、サーバプロセス２０の障害発生前の状態に回復する処理を行わせる（ステップ５５６）。この回復の処理は、ノーマルクライアントプロセス３０と同様に、履歴記憶部４３に記憶されている機能呼出の履歴に基づいて、再起動したサーバプロセス２０のサーバサービス部２１の、パッシブIF取得クライアントプロセス４０に関する処理の状態を、サーバプロセス２０の障害発生前の状態と同じ状態とするために必要な機能呼出を、ステップ５０２で受信を検出した利用サーバIFの切り替えの通知において通知された切り替え後のサーバIFを用いて、サーバプロセス２０に発行することにより行うＳ５５。
【００３７】
そして、最後に、サービス部４２の表示出力の凍結を解除して、サービス部４２の一次停止していた処理を再開させ（ステップ５５８）、ステップ５５２の監視に戻る。ここで、ステップ５５８で再開されたサービス部４２の処理は、ステップ５０２で受信を検出した利用サーバIFの切り替えの通知において通知された切り替え後のサーバIFを用いてサーバプロセス２０を利用しながら行われることになる。
【００３８】
以上、パッシブIF取得クライアントプロセス４０とサーバIFデリバリプロセス６０が行う、サーバプロセス２０に障害が発生したときの回復動作について説明した。
なお、パッシブIF取得クライアントプロセス４０のリトライ制御部４４は、以上のようなリトライ処理によるサーバプロセス障害の回復処理以外にも、各種エラーに対する回復処理を行う機能を備えている。
次に、アクティブIF取得クライアントプロセス５０が行う、サーバプロセス２０に障害が発生したときの回復動作について説明する。
図６ａに、データ処理システムの、アクティブIF取得クライアントプロセス５０とサーバIFデリバリプロセス６０とサーバプロセス２０とシステム制御部とを抜き出して示す。
図示するように、アクティブIF取得クライアントプロセス５０は、サーバIF取得部５１と、サービス部５２と、履歴記憶部５３と、リトライ制御部５４とを備えている。
このような構成において、アクティブIF取得クライアントプロセス５０のサーバプロセス２０の利用は、次のように行われる。
すなわち、まず、サーバIFデリバリプロセス６０の起動要求部６４から、システム制御プロセス１０のプロセス起動部１１にサーバプロセス２０の起動要求を発行しＳ６１、起動要求を受け取ったシステム制御プロセス１０のプロセス起動部１１は、オペレーティングシステム１を介して、サーバプロセス２０を起動するＳ６２。
【００３９】
そして、サーバIFデリバリプロセス６０の障害処理部６３は、起動したサーバプロセス２０の障害発生通知要請をシステム制御プロセス１０の障害通知部１２に設定するＳ６３。
次に、アクティブIF取得クライアントプロセス５０のサーバIF取得部５１は、サーバIFデリバリプロセス６０のサーバIF配信部６２を介してサーバIF取得部６１に、サーバプロセス２０のサーバIFの配信を要求するＳ６４。
要求を受けたサーバIFデリバリプロセス６０のサーバIF取得部６１は、サーバプロセス２０から、サーバIFを取得しＳ６５、サーバIF配信部６２を介して、アクティブIF取得クライアントプロセス５０のサーバIF取得部５１に通知するＳ６６。
そして、アクティブIF取得クライアントプロセス５０のサービス部５２は、サーバIF取得部５１が、サーバIFデリバリプロセス６０から取得したサーバIFを用いて、サーバプロセス２０のサーバサービス部２１に機能呼出を発行することにより、そのサービスを利用しながらＳ６７、自身の処理を行う。また、サービス部５２が、サーバIFを介して、サーバサービス部２１に対して行った機能呼出の履歴を履歴記憶部５３に蓄積する。
【００４０】
このようにしてアクティブIF取得クライアントプロセス５０がサーバプロセス２０を利用している状態において、サーバIFデリバリプロセス６０の障害処理部６４は、前述した図５ａの障害処理を行う。一方、アクティブIF取得クライアントプロセス５０のリトライ制御部５４は図７に示すリトライ処理を実行する。
【００４１】
サーバIFデリバリプロセス６０の障害処理部６３は、図５ａの障害処理において前述の通り、システム制御プロセス１０の障害検知部１３のサーバプロセス２０の障害発生の検知Ｓ６８によって、障害通知部１２から障害が通知されるとＳ６９、図６ｂに示すように、サーバプロセス２０を再起動するＳ７１-７２。
【００４２】
一方、アクティブIF取得クライアントプロセス５０のリトライ制御部５４は、図７に示すように、リトライ処理において、サーバプロセス２０の障害発生を監視する（ステップ７０２）。この監視は、サービス部５２の、サーバプロセス２０に対して発行した機能呼出に対する、サーバプロセス障害によるエラー応答の受信に基づいて行う。
【００４３】
そして、サーバプロセス２０に障害が発生したならば、リトライ制御部５４は、サービス部５２の表示出力内容を、現在の状態に凍結すると共に、サービス部５２の処理を一時停止させる（ステップ７０４）。ただし、サービス部５２が表示出力を行わないものである場合には、表示出力内容の凍結は不要である。
【００４４】
そして、次に、サーバIF取得部５１に、サーバIFを再取得させる（ステップ７０６）。
この再取得は、図６ｂに示すように、サーバIFデリバリプロセス６０に、サーバプロセス２０のサーバIFの配信を要求することによりＳ７３、サーバIFデリバリプロセス６０に再起動したサーバプロセス２０からのサーバIFの取得Ｓ７４と配信Ｓ７５を行わせることにより行う。
【００４５】
そして、次に、サービス部５２に、サーバプロセス２０のサーバサービス部２１の、アクティブIF取得クライアントプロセス５０に関する処理の状態を、サーバプロセス２０の障害発生前の状態に回復する処理を行わせる（ステップ７０８）。
障害発生前の状態に回復する処理は、ノーマルクライアントプロセス３０と同様に、履歴記憶部５３に記憶されている機能呼出の履歴に基づいて、再起動したサーバプロセス２０のサーバサービス部２１の、アクティブIF取得クライアントプロセス５０に関する処理の状態を、サーバプロセス２０の障害発生前の状態と同じ状態とするために必要な機能呼出を、ステップ７０６で再取得したサーバIFを用いて、サーバプロセス２０に発行することにより行うＳ７６。
【００４６】
そして、最後に、サービス部５２の表示出力の凍結を解除して、サービス部５２の一次停止していた処理を再開させ（ステップ７１０）、ステップ７０２の監視に戻る。ここで、ステップ７１０で再開されたサービス部５２の処理は、ステップ７０６で再取得したサーバIFを用いてサーバプロセス２０を利用しながら行われることになる。
【００４７】
以上、サーバプロセス２０の障害発生時に、各プロセス２が行う回復処理について説明した。
なお、本実施形態において、サーバプロセス２０の状態は、クライアントプロセス毎に独立しており、各クライアントプロセス毎の状態は、クライアントプロセス間の、機能呼出の順序に依存しない。また、システム制御プロセス１０のプロセス起動部１１は、サーバプロセス２０に障害が発生した場合に、当該サーバプロセス２０の起動要求を複数受け取った場合においても、最初に受け取った起動要求のみに応じてサーバプロセス２０の起動を行う。
【００４８】
さて、以上のようなデータ処理システムは、たとえば、自動車に搭載する車載システムに適用することができる。
この場合、サーバプロセス２０は、たとえば、地図表示や現在位置の算出や目的地までのルート設定やルート案内を行うナビゲーション機能を提供するナビゲーションプロセスや、ハンズフリー電話機能を提供するハンズフリーフォンプロセスや、外部記憶装置毎に設けられた、外部記憶装置のアクセスを担うクライアントプロセスとの間のインタフェースが統一された複数の外部記憶装置サーバプロセスなどとする。また、クライアントプロセスとしては、各サーバプロセス２０と協調動作してユーザ間のインタフェースを提供する、ノーマルクライアントプロセス３０として実現されたヒューマンインタフェースプロセスや、サーバIFデリバリプロセス６０を介して、外部記憶装置サーバプロセスを利用して、各種データを外部記憶装置に記憶する、アクティブIF取得クライアントプロセス５０やパッシブIF取得クライアントプロセス４０として実現されたクライアントプロセスなどとする。
【００４９】
ここで、このように構成された車載システムにおいて、ナビゲーションプロセスが、図８ａに示すように、初期状態からオープニング画面を生成するオープニング状態を経て、地図を表す案内画面を表示する地図表示状態に遷移した後、ヒューマンインタフェースプロセスからの機能呼出Ａ-Ｈに応じて、その状態を、目的地を検索する目的地検索状態、目的地を設定し目的地までのルートを探索する目的地設定状態、探索したルートを表示するルート表示状態、ルートを設定し設定したルートを案内するルート案内状態との間を図中の矢印のように遷移するものとする。
【００５０】
そして、この場合において、ナビゲーションプロセスの起動後、図８ｂに示すように、ヒューマンインタフェースプロセスから、機能呼出Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｇ、Ｈ、Ｃ、Ｄが当該順序で発行され、ナビゲーションプロセスがルート案内状態にあるときに、ナビゲーションプロセスに障害が発生したものとする。
【００５１】
この場合、この時点においてヒューマンインタフェースプロセスの履歴記憶部３３には、図８ｃに示すように、それまでに行った機能呼出Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｇ、Ｈ、Ｃ、Ｄが蓄積されている。
そこで、ヒューマンインタフェースプロセスのリトライ制御部３４は、ナビゲーションプロセスに障害が発生したことを検出したならば、ナビゲーションプロセスを再起動し、履歴記憶部３３に蓄積されている機能呼出を順次、再起動したナビゲーションプロセスに発行し、ナビゲーションプロセスの状態をルート案内状態に復帰させる。
【００５２】
または、ヒューマンインタフェースプロセスのリトライ制御部３４は、ナビゲーションプロセスに障害が発生したことを検出したならば、履歴記憶部３３に蓄積されている機能呼出を解析して、ナビゲーションプロセスの障害発生前の状態を識別し、再起動したナビゲーションプロセスに、その状態を識別した障害発生前の状態に遷移させるための最小限の機能呼出を順次発行することにより、その状態を識別した障害発生前の状態に復帰させる。すなわち、たとえば、図８ｂ、ｃのようにルート案内状態で障害が発生した場合には、図８ｄに示すように、機能呼出Ａ、Ｂ、Ｃ、Ｄのみを順次、再起動したナビゲーションプロセスに発行し、ナビゲーションプロセスの状態をルート案内状態に復帰させる。
【００５３】
なお、ヒューマンインタフェースプロセスのリトライ制御部３４は、ナビゲーションプロセスに障害が発生したことを検出したならば、前述のように、再起動したナビゲーションプロセスの状態を障害発生前の状態に復帰するまで、表示出力を凍結すると共にサービス部３２の処理を一時停止するので、ナビゲーションプロセスの障害回復を、およそユーザに認知されないように、もしくは、異常な表示出力によってユーザに違和感を感じさせないように行うことができる。
【００５４】
以上、本発明の実施形態について説明した。
このように本実施形態によれば、連携して稼働するプロセス２や各プロセス２の稼働状態を集中管理する必要がなく、クライアントプロセスやサーバIFデリバリプロセス６０が自身が関連するプロセス２を管理すると共に、クライアントプロセスにおいて自身が行った機能呼出の履歴を管理するだけで良いので、連携して稼働するプロセス２が動的に変化する場合においても、各プロセス２の稼働状態を集中管理を行う場合に比べ少ないリソースの消費量で、且つ、正常動作時のパフォーマンスの低下を招くことなく、サーバプロセス２０の障害発生時の状態回復を実現することができる。
【符号の説明】
【００５５】
１…オペレーティングシステム、２…プロセス、１０…システム制御プロセス、１１…プロセス起動部、１２…障害通知部、１３…障害検知部、２０…サーバプロセス、２１…サーバサービス部、３０…ノーマルクライアントプロセス、３１…サーバIF取得部、３２…サービス部、３３…履歴記憶部、３４…リトライ制御部、３５…起動要求部、４０…パッシブIF取得クライアントプロセス、４１…サーバIF設定部、４２…サービス部、４３…履歴記憶部、４４…リトライ制御部、５０…アクティブIF取得クライアントプロセス、５１…サーバIF取得部、５２…サービス部、５３…履歴記憶部、５４…リトライ制御部、６０…サーバIFデリバリプロセス、６１…サーバIF取得部、６２…サーバIF配信部、６３…障害処理部、６４…起動要求部、７０…プロセス群。
【図１】
2010170389.tif 000003
【図２】
2010170389.tif 000004
【図３】
2010170389.tif 000005
【図４】
2010170389.tif 000006
【図５】
2010170389.tif 000007
【図６】
2010170389.tif 000008
【図７】
2010170389.tif 000009
【図８】
2010170389.tif 000010