(57)【要約】【課題】システムやプログラムの実行の中断を抑制しつつ共用プログラムの更新を行う「共用プログラムの更新システム」を提供する。【解決手段】DLL利用制御部１０３１は、更新対象DLLの更新開始をDLL管理部１０３２から通知されたならば、スレッド１０２への更新対象DLLのアクセス権の発行を停止する。DLL利用制御部１０３１に、更新対象DLLのアクセス権の全てが返却されたならば、DLL管理部１０３２は、DLLロード/更新処理部１０３３に、ロードされている更新対象DLLを、ＨＤＤ１６にダウンロードしたDLL１０１に書き換えさせた後、DLL利用制御部１０３１に更新対象DLLの更新完了通知を発行する。更新完了通知を受け取ったDLL利用制御部１０３１は、更新対象DLLのアクセス権の発行を再開し、更新対象DLLを利用しているスレッド１０２の更新対象DLLの利用を再開させる。【選択図】図２
2011154437.tif 000002
【特許請求の範囲】
【請求項１】
メモリにロードされ、他のプログラムに動的にリンクされて共用される共用プログラムを更新する共用プログラムの更新システムであって、
更新対象とされた、前記メモリにロードされている前記共用プログラムである更新対象共用プログラムの更新を行う更新処理部を有し、
前記更新処理部は、
前記更新対象共用プログラムを利用している他のプログラムである利用プログラム各々の前記更新対象共用プログラムへのアクセスを停止させると共に、前記更新対象共用プログラムの更新後に、前記各利用プログラムの前記更新対象共用プログラムに対するアクセスを再開させる更新時アクセス制御部と、
前記更新時アクセス制御部が、前記利用プログラムの前記更新対象共用プログラムへのアクセスを停止させた後に、前記更新対象共用プログラムの更新を行う更新部とを有することを特徴とする共用プログラムの更新システム。
【請求項２】
請求項１記載の共用プログラムの更新システムであって、
前記共用プログラムを利用している他のプログラムからの、前記共用プログラムに対するアクセス権の発行要求に応答して、当該他のプログラムに前記共用プログラムに対するアクセス権を発行すると共に、当該他のプログラムから前記共用プログラムに対するアクセス権の返却を受ける利用制御部を有し、
前記更新時アクセス制御部は、前記利用制御部に、前記更新対象共用プログラムに対するアクセス権の発行を停止させると共に、前記更新部による前記更新対象共用プログラムの更新後に、前記利用制御部に前記更新対象共用プログラムに対するアクセス権の発行を再開させ、
前記更新部は、前記更新時アクセス制御部が前記利用制御部に前記アクセス権の発行を停止させた後に、前記利用プログラムから前記更新対象共用プログラムに対する全てのアクセス権が前記利用制御部に返却された後に、前記更新対象共用プログラムの更新を行い、
前記共用プログラムを利用している前記他のプログラムは、前記利用制御部に、前記共用プログラムに対するアクセス権の発行要求を行うと共に、当該発行要求に応答して前記利用制御部から前記アクセス権を発行された場合に前記共用プログラムに対するアクセスを行い、当該アクセスの完了後に当該アクセス権を前記利用制御部に返却することを特徴とする共用プログラムの更新システム。
【請求項３】
請求項１記載の共用プログラムの更新システムであって、
前記共用プログラムを利用している他のプログラムからの、前記共用プログラムに対するアクセス権の発行要求に応答して、当該他のプログラムに前記共用プログラムに対するアクセス権を発行すると共に、当該他のプログラムから前記共用プログラムに対するアクセス権の返却を受ける利用制御部を有し、
前記更新時アクセス制御部は、前記利用制御部に、前記更新対象共用プログラムに対するアクセス権の発行を停止させると共に、前記各利用プログラムに前記更新対象共用プログラムの利用停止を通知させ、前記更新部による前記更新対象共用プログラムの更新後に、前記利用制御部に前記更新対象共用プログラムに対するアクセス権の発行を再開させると共に、各利用プログラムに前記更新対象共用プログラムの利用再開を通知させ、
前記更新部は、前記更新時アクセス制御部が前記利用制御部に前記アクセス権の発行を停止させた後に、前記利用プログラムから前記更新対象共用プログラムに対する全てのアクセス権が前記利用制御部に返却された後に、前記更新対象共用プログラムの更新を行い、
前記共用プログラムを利用している前記他のプログラムは、前記利用制御部に、前記共用プログラムに対するアクセス権の発行要求を行うと共に、当該発行要求に応答して前記利用制御部から前記アクセス権を発行された場合に前記共用プログラムに対するアクセスを行い、当該アクセスの完了後に当該アクセス権を前記利用制御部に返却し、
前記各利用プログラムは、前記利用停止を通知された後、前記利用再開を通知されるまで、前記更新対象共用プログラムの利用を停止し、前記更新対象共用プログラムに対するアクセス権の前記発行要求を行わないことを特徴とする共用プログラムの更新システム。
【請求項４】
請求項１記載の共用プログラムの更新システムであって、
前記共用プログラムへの前記利用プログラムのアクセスが当該共用プログラム側の問題により失敗したときに、当該共用プログラムの、より新しいバージョンを探索し、より新しいバージョンが発見された場合に、当該共用プログラムの最新バージョンを取得し、前記より新しいバージョンが発見された共用プログラムを前記更新対象共用プログラムとして、前記更新処理部に前記更新対象共用プログラムの、取得した前記更新対象共用プログラムの最新バージョンへの更新を行わせる更新制御部を有することを特徴とする共用プログラムの更新システム。
【請求項５】
請求項２記載の共用プログラムの更新システムであって、
前記共用プログラムへの前記利用プログラムのアクセスが当該共用プログラム側の問題により失敗したときに、当該共用プログラムの、より新しいバージョンを探索し、より新しいバージョンが発見された場合に、当該共用プログラムの最新バージョンを取得し、前記より新しいバージョンが発見された共用プログラムを前記更新対象共用プログラムとして、前記更新処理部に前記更新対象共用プログラムの、取得した前記更新対象共用プログラムの最新バージョンへの更新を行わせる更新制御部を有することを特徴とする共用プログラムの更新システム。
【請求項６】
請求項３記載の共用プログラムの更新システムであって、
前記共用プログラムへの前記利用プログラムのアクセスが当該共用プログラム側の問題により失敗したときに、当該共用プログラムの、より新しいバージョンを探索し、より新しいバージョンが発見された場合に、当該共用プログラムの最新バージョンを取得し、前記より新しいバージョンが発見された共用プログラムを前記更新対象共用プログラムとして、前記更新処理部に前記更新対象共用プログラムの、取得した前記更新対象共用プログラムの最新バージョンへの更新を行わせる更新制御部を有することを特徴とする共用プログラムの更新システム。
【請求項７】
請求項４記載の共用プログラムの更新システムであって、
前記更新制御部は、前記共用プログラムを蓄積した配信サーバにアクセスして、共用プログラムの、より新しいバージョンを探索すると共に、探索した共用プログラムの最新バージョンを前記配信サーバから取得することを特徴とする共用プログラムの更新システム。
【請求項８】
請求項５記載の共用プログラムの更新システムであって、
前記更新制御部は、前記共用プログラムを蓄積した配信サーバにアクセスして、共用プログラムの、より新しいバージョンを探索すると共に、探索した共用プログラムの最新バージョンを前記配信サーバから取得することを特徴とする共用プログラムの更新システム。
【請求項９】
請求項６記載の共用プログラムの更新システムであって、
前記更新制御部は、前記共用プログラムを蓄積した配信サーバにアクセスして、共用プログラムの、より新しいバージョンを探索すると共に、探索した共用プログラムの最新バージョンを前記配信サーバから取得することを特徴とする共用プログラムの更新システム。
【請求項１０】
請求項４記載の共用プログラムの更新システムであって、
前記更新制御部は、前記共用プログラムを記憶したリムーバブルメディアにアクセスして、共用プログラムの、より新しいバージョンを探索すると共に、探索した共用プログラムの最新バージョンを前記リムーバブルメディアから取得することを特徴とする共用プログラムの更新システム。
【請求項１１】
請求項５記載の共用プログラムの更新システムであって、
前記更新制御部は、前記共用プログラムを記憶したリムーバブルメディアにアクセスして、共用プログラムの、より新しいバージョンを探索すると共に、探索した共用プログラムの最新バージョンを前記リムーバブルメディアから取得することを特徴とする共用プログラムの更新システム。
【請求項１２】
請求項６記載の共用プログラムの更新システムであって、
前記更新制御部は、前記共用プログラムを記憶したリムーバブルメディアにアクセスして、共用プログラムの、より新しいバージョンを探索すると共に、探索した共用プログラムの最新バージョンを前記リムーバブルメディアから取得することを特徴とする共用プログラムの更新システム。
【請求項１３】
請求項１記載の共用プログラムの更新システムであって、
前記共用プログラムは、DLL（Dynamic Link Library)であることを特徴とする共用プログラムの更新システム。
【請求項１４】
請求項２記載の共用プログラムの更新システムであって、
前記共用プログラムは、DLL（Dynamic Link Library)であることを特徴とする共用プログラムの更新システム。
【請求項１５】
請求項３記載の共用プログラムの更新システムであって、
前記共用プログラムは、DLL（Dynamic Link Library)であることを特徴とする共用プログラムの更新システム。
【請求項１６】
請求項１記載の共用プログラムの更新システムであって、
当該共用プログラムの更新システムは、自動車に搭載された車載のシステムであることを特徴とする共用プログラムの更新システム。
【請求項１７】
コンピュータによって読みとられ実行されるコンピュータプログラムであって、
当該コンピュータプログラムは、前記コンピュータを、
他のプログラムに動的にリンクされて共用される共用プログラムを更新する共用プログラムの更新システムとして機能させ、
前記共用プログラムの更新システムは、
更新対象とされた、前記メモリにロードされている前記共用プログラムである更新対象共用プログラムの更新を行う更新処理部を有し、
前記更新処理部は、
前記更新対象共用プログラムを利用している他のプログラムである利用プログラム各々の前記更新対象共用プログラムへのアクセスを停止させると共に、前記更新対象共用プログラムの更新後に、前記各利用プログラムの前記更新対象共用プログラムに対するアクセスを再開させる更新時アクセス制御部と、
前記更新時アクセス制御部が、前記利用プログラムの前記更新対象共用プログラムへのアクセスを停止させた後に、前記更新対象共用プログラムの更新を行う更新部とを有することを特徴とするコンピュータプログラム。
【請求項１８】
請求項１７記載のコンピュータプログラムであって、
前記共用プログラムの更新システムは、前記共用プログラムを利用している他のプログラムからの、前記共用プログラムに対するアクセス権の発行要求に応答して、当該他のプログラムに前記共用プログラムに対するアクセス権を発行すると共に、当該他のプログラムから前記共用プログラムに対するアクセス権の返却を受ける利用制御部を有し、
前記更新時アクセス制御部は、前記利用制御部に、前記更新対象共用プログラムに対するアクセス権の発行を停止させると共に、前記更新部による前記更新対象共用プログラムの更新後に、前記利用制御部に前記更新対象共用プログラムに対するアクセス権の発行を再開させ、
前記更新部は、前記更新時アクセス制御部が前記利用制御部に前記アクセス権の発行を停止させた後に、前記利用プログラムから前記更新対象共用プログラムに対する全てのアクセス権が前記利用制御部に返却された後に、前記更新対象共用プログラムの更新を行い、
前記共用プログラムを利用している前記他のプログラムは、前記利用制御部に、前記共用プログラムに対するアクセス権の発行要求を行うと共に、当該発行要求に応答して前記利用制御部から前記アクセス権を発行された場合に前記共用プログラムに対するアクセスを行い、当該アクセスの完了後に当該アクセス権を前記利用制御部に返却することを特徴とするコンピュータプログラム。
【請求項１９】
請求項１７記載のコンピュータプログラムであって、
前記共用プログラムの更新システムは、前記共用プログラムを利用している他のプログラムからの、前記共用プログラムに対するアクセス権の発行要求に応答して、当該他のプログラムに前記共用プログラムに対するアクセス権を発行すると共に、当該他のプログラムから前記共用プログラムに対するアクセス権の返却を受ける利用制御部を有し、
前記更新時アクセス制御部は、前記利用制御部に、前記更新対象共用プログラムに対するアクセス権の発行を停止させると共に、各利用プログラムに前記更新対象共用プログラムの利用停止を通知させ、前記更新部による前記更新対象共用プログラムの更新後に、前記利用制御部に前記更新対象共用プログラムに対するアクセス権の発行を再開させると共に、各利用プログラムに前記更新対象共用プログラムの利用再開を通知させ、
前記更新部は、前記更新時アクセス制御部が前記利用制御部に前記アクセス権の発行を停止させた後に、前記利用プログラムから前記更新対象共用プログラムに対する全てのアクセス権が前記利用制御部に返却された後に、前記更新対象共用プログラムの更新を行い、
前記共用プログラムを利用している前記他のプログラムは、前記利用制御部に、前記共用プログラムに対するアクセス権の発行要求を行うと共に、当該発行要求に応答して前記利用制御部から前記アクセス権を発行された場合に前記共用プログラムに対するアクセスを行い、当該アクセスの完了後に当該アクセス権を前記利用制御部に返却し、
前記各利用プログラムは、前記利用停止を通知された後、前記利用再開を通知されるまで、前記更新対象共用プログラムの利用を停止し、前記更新対象共用プログラムに対するアクセス権の前記発行要求を行わないことを特徴とするコンピュータプログラム。
【請求項２０】
請求項１７記載のコンピュータプログラムであって、
前記共用プログラムは、DLL（Dynamic Link Library)であることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、DLL（Dynamic Link Library)等の複数のプログラムから共用されるプログラムを更新する技術に関するものである。
【背景技術】
【０００２】
DLL（Dynamic Link Library)等の複数のプログラムから共用されるプログラムを更新する技術としては、DLLを利用するプログラムの更新前のDLLに対するロード要求をフックして、更新後のDLLをロードして、当該プログラムに更新後のDLLを使用させることにより、稼働中のシステムやプログラムの実行を中断することなく、DLLを更新する技術が知られている（たとえば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２-２４０３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
前記特許文献１記載の技術によれば、DLLの更新を行う際に、既に更新前のDLLをロードして利用しているプログラムが存在する場合には、当該プログラムの利用するDLLを更新後のDLLに変更することはできない。また、この場合には、システム中に、更新前のDLLを利用するプログラムと、更新後のDLLを利用するプログラムが混在することとなり、両者の不整合のために予期せぬ不具合が発生する可能性がある。
【０００５】
そこで、本発明は、稼働中のシステムやプログラムの実行の中断を抑制しつつ、共用プログラムを利用する全てのプログラムが、更新後の共用プログラムを使用するように、共用プログラムの更新を行うことを課題とする。
【課題を解決するための手段】
【０００６】
前記課題達成のために、本発明は、メモリにロードされ、他のプログラムに動的にリンクされて共用される共用プログラムを更新する共用プログラムの更新システムに、更新対象とされた、前記メモリにロードされている前記共用プログラムである更新対象共用プログラムの更新を行う更新処理部を備えると共に、当該更新処理部を、前記更新対象共用プログラムを利用している他のプログラムである利用プログラム各々の前記更新対象共用プログラムへのアクセスを停止させると共に、前記更新対象共用プログラムの更新後に、前記各利用プログラムの前記更新対象共用プログラムに対するアクセスを再開させる更新時アクセス制御部と、前記更新時アクセス制御部が、前記利用プログラムの前記更新対象共用プログラムへのアクセスを停止させた後に、前記更新対象共用プログラムの更新を行う更新部とより構成したものである。
【０００７】
ここで、このような共用プログラムの更新システムによれば、ロードされている共用プログラムの更新を、当該共用プログラムを利用している各利用プログラムの更新対象共用プログラムへのアクセスのみを停止した上で行うので、システム全体や更新対象共用プログラムを利用しない他のプログラムを停止することなく、更新対象共用プログラムの更新を行うことができる。また、全ての利用プログラムは、アクセスの再開後は、更新後の共用プログラムを利用することになるので、複数のバージョンが混在して利用されてしまうこともない。
【０００８】
ここで、このような共用プログラムの更新システムは、前記共用プログラムを利用している他のプログラムからの、前記共用プログラムに対するアクセス権の発行要求に応答して、当該他のプログラムに前記共用プログラムに対するアクセス権を発行すると共に、当該他のプログラムから前記共用プログラムに対するアクセス権の返却を受ける利用制御部を、さらに設けると共に、前記更新時アクセス制御部において、前記利用制御部に、前記更新対象共用プログラムに対するアクセス権の発行を停止させると共に、前記更新部による前記更新対象共用プログラムの更新後に、前記利用制御部に前記更新対象共用プログラムに対するアクセス権の発行を再開させ、前記更新部において、前記更新時アクセス制御部が前記利用制御部に前記アクセス権の発行を停止させた後に、前記利用プログラムから前記更新対象共用プログラムに対する全てのアクセス権が前記利用制御部に返却された後に、前記更新対象共用プログラムの更新を行い、前記共用プログラムを利用している前記他のプログラムにおいて、前記利用制御部に、前記共用プログラムに対するアクセス権の発行要求を行うと共に、当該発行要求に応答して前記利用制御部から前記アクセス権を発行された場合に前記共用プログラムに対するアクセスを行い、当該アクセスの完了後に当該アクセス権を前記利用制御部に返却するように構成してもよい。
【０００９】
または、このような共用プログラムの更新システムは、前記共用プログラムを利用している他のプログラムからの、前記共用プログラムに対するアクセス権の発行要求に応答して、当該他のプログラムに前記共用プログラムに対するアクセス権を発行すると共に、当該他のプログラムから前記共用プログラムに対するアクセス権の返却を受ける利用制御部を、さらに設けると共に、前記更新時アクセス制御部において、前記利用制御部に、前記更新対象共用プログラムに対するアクセス権の発行を停止させると共に、各利用プログラムに前記更新対象共用プログラムの利用停止を通知させ、前記更新部による前記更新対象共用プログラムの更新後に、前記利用制御部に前記更新対象共用プログラムに対するアクセス権の発行を再開させると共に、各利用プログラムに前記更新対象共用プログラムの利用再開を通知させ、前記更新部において、更新時アクセス制御部が前記利用制御部に前記アクセス権の発行を停止させた後に、前記利用プログラムから前記更新対象共用プログラムに対する全てのアクセス権が前記利用制御部に返却された後に、前記更新対象共用プログラムの更新を行い、前記共用プログラムを利用している前記他のプログラムにおいて、前記利用制御部に、前記共用プログラムに対するアクセス権の発行要求を行うと共に、当該発行要求に応答して前記利用制御部から前記アクセス権を発行された場合に前記共用プログラムに対するアクセスを行い、当該アクセスの完了後に当該アクセス権を前記利用制御部に返却する前記各利用プログラムにおいて、前記利用停止を通知された後、前記利用再開を通知されるまで、前記更新対象共用プログラムの利用を停止し、前記更新対象共用プログラムに対するアクセス権の前記発行要求を行わないように構成してもよい。
【００１０】
このようにすることにより、更新対象共用プログラムに対するアクセス権の発行要求が、利用プログラムから無益に発行されてしまうことを抑止することができる。
ここで、以上の共用プログラムの更新システムには、前記共用プログラムへの前記利用プログラムのアクセスが当該共用プログラム側の問題により失敗したときに、当該共用プログラムの、より新しいバージョンを探索し、より新しいバージョンが発見された場合に、当該共用プログラムの最新バージョンを取得し、前記より新しいバージョンが発見された共用プログラムを前記更新対象共用プログラムとして、前記更新処理部に前記更新対象共用プログラムの、取得した前記更新対象共用プログラムの最新バージョンへの更新を行わせる更新制御部を備えるようにしてもよい。
【００１１】
また、この場合、前記更新制御部は、前記共用プログラムを蓄積した配信サーバにアクセスして、共用プログラムの、より新しいバージョンを探索すると共に、探索した共用プログラムの最新バージョンを前記配信サーバから取得するようにしてもよい。または、前記更新制御部は、前記共用プログラムを記憶したリムーバブルメディアにアクセスして、共用プログラムの、より新しいバージョンを探索すると共に、探索した共用プログラムの最新バージョンを前記リムーバブルメディアから取得するようにしてもよい。
【００１２】
なお、以上の共用プログラムの更新システムにおいて、前記共用プログラムは、DLL（Dynamic Link Library)であってよい。
また、以上の共用プログラムの更新システムは、自動車に搭載された車載のシステムであってもよい。
【発明の効果】
【００１３】
以上のように、本発明によれば、稼働中のシステムやプログラムの実行の中断を抑制しつつ、共用プログラムを利用する全てのプログラムが、更新後の共用プログラムを使用するように、共用プログラムの更新を行うことができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態に係る車載システムの構成を示すブロック図である。
【図２】本発明の実施形態に係る車載システムの機能構成を示すブロック図である。
【図３】本発明の実施形態に係るDLL利用状態管理テーブルを示すブロック図である。
【図４】本発明の実施形態に係るDLL更新処理を示すフローチャートである。
【図５】本発明の実施形態に係るDLL利用制限処理を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態を車載システムへの適用を例にとり説明する。
図１に、車載システムの構成を示す。
車載システム１は、自動車に搭載されるシステムであり、図示するように、車載システム１は、ＣＰＵ１１、メモリ１２、無線通信装置１３、表示装置１４、入力装置１５、ＨＤＤ１６、DVD/CDドライブなどであるリムーバブルメディアドライブ１７、その他の各種の周辺機器１８を備えたコンピュータとして構成を有しており、ＣＰＵ１１が、ＨＤＤ１６に記憶されたプログラムをメモリ１２にロードして実行することにより、オペーレーティングシステムと、オペレーティングシステム上で稼働するアプリケーションよりなるソフトウエア構成が実現される。そして、車載システム１のアプリケーションは、オペレーティングシステムを介して無線通信装置１３を利用することにより、DLLファイルを配信するDLL配信サーバ２にアクセスすることができる。
【００１６】
次に、図２に、車載システム１のDLLに関連するアプリケーションの構成を示す。
図示するように、アプリケーション１００は、メモリ１２にロードされたDLL１０１、メモリ１２にロードされたアプリケーションプログラムの実行単位であり、DLL１０１の利用者となるスレッド１０２、スレッド１０２のDLL１０１の利用やロードされているDLL１０１の更新を制御するDLL接続制御部１０３、DLL取得部１０４、ユーザインタフェース制御部１０５を備えている。
【００１７】
ただし、これらDLL１０１、スレッド１０２、DLL接続制御部１０３、DLL取得部１０４、ユーザインタフェース制御部１０５は、図示を省略したオペレーティングシステム上で、オペレーティングシステムの機能を利用しながら稼働するものである。
次に、DLL接続制御部１０３は、DLL利用制御部１０３１、DLL管理部１０３２、DLLロード/更新処理部１０３３を備えている。
次に、図３に、DLL利用制御部１０３１が、DLL１０１の利用状態の管理のために備えるDLL利用状態管理テーブルを示す。
DLL利用状態管理テーブルは、ロードされたDLL毎に対応して設けられ、図示するように、各DLL利用状態管理テーブルには、対応するDLL１０１の識別を表すDLL識別情報、対応するDLL１０１の正常/更新中の状態を表すDLL状態、対応するDLL１０１に対するアクセス権を保持しているスレッド数を表すDLLアクセス権保持スレッド数、対応するDLL１０１を利用するスレッド１０２である利用スレッドの各々の識別子を表す利用スレッド識別子、各利用スレッドの対応するDLL１０１に対するアクセス権保持の有無を表すアクセス権有無とが登録される。
【００１８】
以下、このような車載システム１のDLL１０１の利用、更新動作について説明する。
まず、DLL１０１の通常の利用動作について説明する。
まず、DLL１０１の利用を開始するスレッド１０２は、DLL接続制御部１０３のDLLロード/更新処理部１０３３に、利用を開始するDLLのロードを要求する。ロードを要求されたDLLロード/更新処理部１０３３は、要求されたDLL１０１をＨＤＤ１６よりメモリ１２にロードし、当該DLL１０１をアプリケーション１００に組み込み、ロード成功を要求元のスレッド１０２に報告する。ただし、ロードを要求されたDLL１０１が既にロードされている場合には、実際のロードは行わずに、ロード成功を要求元のスレッド１０２に報告する。
【００１９】
DLLロード/更新処理部１０３３は、DLL１０１をロードしたならば、ロードしたDLL１０１の識別（たとえば、DLL名）とバージョンと機能（ファンクション/関数/メソッド）の一覧をDLL管理部１０３２に通知し、DLL管理部１０３２は通知されたDLL１０１の識別とバージョンと機能の一覧を記憶する。また、DLLロード/更新処理部１０３３は、DLL１０１をロードしたならば、ロードしたDLL１０１の識別を、DLL利用制御部１０３１に通知し、通知を受けたDLL利用制御部１０３１は、識別を通知されたDLL１０１に対応するDLL利用状態管理テーブルを作成し、通知された識別をDLL識別情報に登録すると共に、DLL状態に正常を登録し、DLLアクセス権保持スレッド数に０を登録する。
【００２０】
一方、ロード成功を報告されたロード要求元のスレッド１０２は、自スレッドの、ロード成功を報告されたDLL１０１の利用スレッドとしての登録をDLL利用制御部１０３１に要求し、登録を要求されたDLL利用制御部１０３１は、登録を要求されたDLL１０１のDLL利用状態管理テーブルに、登録要求元のスレッド１０２の識別子を利用スレッド識別子として登録し、当該利用スレッド識別子に対するアクセス権有無に無を登録する。
【００２１】
以降、DLL利用状態管理テーブルに利用スレッド識別子を登録した各スレッド１０２は、DLL１０１の機能を利用する度に以下の動作を行う。
すなわち、DLL利用制御部１０３１にDLL１０１に対するアクセス権を要求し、DLL利用制御部１０３１からアクセス権が発行されたならば、DLL１０１にアクセスしてその機能を利用し、DLL１０１の機能の利用を完了したならば、DLL利用制御部１０３１にアクセス権を返却する。
【００２２】
一方、DLL利用制御部１０３１は、スレッド１０２からDLL１０１に対するアクセス権を要求されたならば、アクセス権を要求されたDLL１０１のDLL利用状態管理テーブルに、要求元のスレッド１０２の識別子が利用スレッド識別子として登録されており、かつ、当該DLL利用状態管理テーブルのDLL状態に正常が登録されている場合には、アクセス権を要求元のスレッド１０２に発行し、DLLアクセス権保持スレッド数を１増加させる。一方、要求元のスレッド１０２の識別子が、アクセス権を要求されたDLL１０１のDLL利用状態管理テーブルに利用スレッド識別子として登録されていないか、当該DLL利用状態管理テーブルのDLL状態に更新中が登録されている場合にはアクセス権の発行を拒否する。
【００２３】
また、DLL利用制御部１０３１は、DLL利用状態管理テーブルに登録されている利用スレッド識別子が示す全てのスレッド１０２が終了したならば、当該DLL利用状態管理テーブルに対応するDLL１０１をアンロードし、当該DLL利用状態管理テーブルを消去する処理も行う。
【００２４】
次に、DLL１０１の通常の更新動作について説明する。
スレッド１０２は、上述のようにアクセス権を取得してDLL１０１の機能にアクセスした際に、アクセスした機能がDLL１０１に含まれていなかったり、DLL１０１の不具合が生じたりする等の、DLL１０１側の問題による理由によってアクセス例外（エラー）が発生したならば、アクセス例外が発生したDLL１０１の識別子を、DLL取得部１０４に通知する。
【００２５】
通知を受けたDLL取得部１０４は、アクセス例外の発生が通知されたDLL１０１のバージョンと機能一覧をDLL管理部１０３２から取得すると共に、DLL配信サーバ２にアクセスして、アクセス例外の発生が通知されたDLL１０１の最新バージョンのバージョンや機能一覧の情報を取得する。
【００２６】
次に、DLL取得部１０４は、ユーザインタフェース制御部１０５を介して、DLL管理部１０３２から取得した現在のDLL１０１のバージョン、機能一覧と、DLL配信サーバ２から取得した最新バージョンのDLL１０１のバージョンや機能一覧の対比を表示装置１４に表示して、最新バージョンのDLL１０１の取得の要否の指示をユーザから受け付ける。
【００２７】
そして、DLL取得部１０４は、最新バージョンのDLL１０１の取得をユーザから指示されたならば、DLL配信サーバ２にアクセスして最新バージョンのDLL１０１をＨＤＤ１６にダウンロードし、ダウンロードが完了したならば、DLL管理部１０３２にDLL１０１の更新処理を指示する。
【００２８】
更新処理を指示されたDLL管理部１０３２は、図４に示すDLL更新処理を行う。
すなわち、DLL管理部１０３２は、現在ロードされているDLL１０１のうちの、ＨＤＤ１６にダウンロードした最新バージョンのDLL１０１の古いバージョンであるDLL１０１を更新対象DLLとして更新対象DLLの更新開始をDLL利用制御部１０３１に通知する（ステップ４０２）。
【００２９】
そして、DLL利用制御部１０３１から、更新対象DLLの更新可能通知を受領するのを待って（ステップ４０４）、DLLロード/更新処理部１０３３に、更新対象DLLを、ＨＤＤ１６にダウンロードした最新バージョンのDLL１０１に書き換えさせる（ステップ４０６）。
【００３０】
また、DLLロード/更新処理部１０３３の更新対象DLLの書き換えが完了したならば、DLL利用制御部１０３１に更新対象DLLの更新完了通知を発行する（ステップ４０８）。
一方、DLL管理部１０３２から、更新対象DLLの更新開始を通知されたDLL利用制御部１０３１は、図５に示すDLL利用制限処理を行う。
図示するように、このDLL利用制限処理において、DLL利用制御部１０３１は、更新対象DLLのDLL利用状態管理テーブルの利用スレッド識別子に識別子が登録されている全てのスレッド１０２に更新対象スレッドの利用停止を指示する（ステップ５０２）。ここで、更新対象DLLの利用停止を指示された各スレッド１０２は、現在、更新対象DLLのアクセス権を保持していれば、更新対象DLLの機能の利用を終了し、更新対象DLLのアクセス権を返却すると共に、以降の更新対象DLLのアクセス権の要求の発行を停止する。また、更新対象DLLの利用停止を指示された各スレッド１０２は、現在、更新対象DLLのアクセス権を保持していない場合にも、以降の更新対象DLLのアクセス権の要求の発行を停止する。
【００３１】
次に、DLL利用制御部１０３１は、更新対象DLLのDLL利用状態管理テーブルのDLL状態に更新中を登録することにより、以降の更新対象DLLのアクセス権の発行を停止する（ステップ５０４）。
また、更新対象DLLのDLL利用状態管理テーブルの利用スレッド識別子にスレッド１０２の識別子の新規登録が発生したならば（ステップ５０６）、当該新規登録されたスレッド１０２に更新対象スレッドの利用停止を指示する（ステップ５１８）。
そして、更新対象DLLのアクセス権の全てが返却されて、更新対象DLLのDLL利用状態管理テーブルのDLLアクセス権保持スレッド数が０となったならば（ステップ５０８）、更新対象DLLの更新可能通知をDLL管理部１０３２に発行する（ステップ５１０）。
【００３２】
そして、DLL管理部１０３２からの更新対象DLLの更新完了通知を待って（ステップ５１２）、更新対象DLLのDLL利用状態管理テーブルのDLL状態に正常を登録することにより、更新対象DLLのアクセス権の発行を再開する（ステップ５１４）。また、更新対象DLLのDLL利用状態管理テーブルの利用スレッド識別子に識別子が登録されている全てのスレッド１０２に更新対象DLLの利用再開を通知し（ステップ５１６）、処理を終了する。
【００３３】
ここで、更新対象DLLの利用再開を通知された各スレッド１０２は、更新対象DLLの通常通りの利用を再開する。
ここで、以上のDLL更新処理とDLL利用制限処理による更新対象DLLの更新動作を時系列順にまとめれば、以下の通りである。
すなわち、まず、DLL管理部１０３２は、現在ロードされているDLL１０１のうちの、ＨＤＤ１６にダウンロードした最新バージョンのDLL１０１の古いバージョンであるDLL１０１を更新対象DLLとして更新対象DLLの更新開始をDLL利用制御部１０３１に通知する（ステップ４０２）。
【００３４】
更新開始を通知されたDLL利用制御部１０３１は、更新対象DLLを利用している全てのスレッド１０２に更新対象スレッドの利用停止を指示する（ステップ５０２）と共に、更新対象DLLのアクセス権の発行を停止する（ステップ５０４）。
一方、更新対象DLLの利用停止を指示された各スレッド１０２は、以降の更新対象DLLのアクセス権の要求の発行を停止する。また、更新対象DLLの利用停止を指示された各スレッド１０２は、現在、更新対象DLLのアクセス権を保持していれば、更新対象DLLの機能の利用を終了し、更新対象DLLのアクセス権を返却する。
【００３５】
また、その後、DLL利用制御部１０３１は、更新対象DLLのDLL利用状態管理テーブルの利用スレッド識別子にスレッド１０２の識別子の新規登録が発生したならば（ステップ５０６）、当該新規登録されたスレッド１０２に更新対象スレッドの利用停止を指示する（ステップ５１８）。
【００３６】
そして、DLL利用制御部１０３１は、更新対象DLLのアクセス権の全てが返却されて、更新対象DLLのDLL利用状態管理テーブルのDLLアクセス権保持スレッド数が０となったならば（ステップ５０８）、更新対象DLLの更新可能通知をDLL管理部１０３２に発行する（ステップ５１０）。
【００３７】
一方、更新可能通知を受けた、DLL管理部１０３２は（ステップ４０４）、DLLロード/更新処理部１０３３に、更新対象DLLを、ＨＤＤ１６にダウンロードした最新バージョンのDLL１０１に書き換えさせ（ステップ４０６）、書き換えが完了したならば、DLL利用制御部１０３１に更新対象DLLの更新完了通知を発行する（ステップ４０８）。
【００３８】
更新完了通知を受け取ったDLL利用制御部１０３１は、更新対象DLLのアクセス権の発行を再開し（ステップ５１４）、更新対象DLLを利用している全てのスレッド１０２に更新対象DLLの利用再開を通知（ステップ５１６）する。
そして、更新対象DLLの利用再開を通知された各スレッド１０２は、更新対象DLLの通常通りの利用を再開する。
以上、本発明の実施形態を説明した。
以上のように、本実施形態によれば、ロードされているDLL１０１の更新を、当該DLL１０１を利用している各スレッド１０２の更新対象のDLL１０１へのアクセスのみを停止した上で行うので、車載システム１全体や更新対象のDLL１０１を利用しない各スレッド１０２を停止することなく、DLL１０１の更新を行うことができる。また、各利用スレッド１０２は、アクセスの再開後は、更新後のDLL１０１を利用することになるので、DLL１０１の複数のバージョンが混在して利用されてしまうこともない。
【００３９】
なお、以上の実施形態では、DLL配信サーバ２から最新バージョンのDLL１０１を取得する場合について示したが、最新バージョンのDLL１０１は、リムーバブルメディアドライブ１７に装着されたＤＶＤなどのリムーバブルメディアから取得するようにしてもよい。
【００４０】
また、以上の実施形態では、ロードしたDLL１０１へのアクセス例外が発生したときに、最新バージョンのDLL１０１のダウンロードや、ロードしたDLL１０１の最新バージョンのDLL１０１への書き換えを行うようにしたが、最新バージョンのDLL１０１の取得は、これ以外の任意の契機で行うようにしてもよい。すなわち、たとえば、DLL１０１をロードしたときに、ロードされたDLL１０１のバージョンが最新のバージョンであるかどうかを調べて、最新のバージョンでない場合に、最新バージョンのDLL１０１のダウンロードや、ロードしたDLL１０１の最新バージョンのDLL１０１への書き換えを行うようにしてもよい。
【００４１】
また、DLL１０１へのリンクを、DLL１０１のロード時に内部に形成するスレッド１０２においては、更新対象DLLの利用再開を通知ときに、更新対象DLLへのリンクを再構成するようにしてもよい。
【符号の説明】
【００４２】
１…車載システム、２…DLL配信サーバ、１１…ＣＰＵ、１２…メモリ、１３…無線通信装置、１４…表示装置、１５…入力装置、１６…ＨＤＤ、１７…リムーバブルメディアドライブ、１８…周辺機器、１００…アプリケーション、１０１…DLL、１０２…スレッド、１０３…DLL接続制御部、１０４…DLL取得部、１０５…ユーザインタフェース制御部、１０３１…DLL利用制御部、１０３２…DLL管理部、１０３３…DLLロード/更新処理部。
【図１】
2011154437.tif 000003
【図２】
2011154437.tif 000004
【図３】
2011154437.tif 000005
【図４】
2011154437.tif 000006
【図５】
2011154437.tif 000007