(57)【要約】【課題】  第一のＯＳと、第一のＯＳの下で動作する第二のＯＳとが搭載されたコンピュータシステムにおいて、第二のＯＳが管理するデバイスドライバの応答性を高める。【解決手段】  コンピュータシステム３０におけるリアルタイムＯＳ４０は、複数のタスクを、タスクに設定されたプライオリティ（優先度）に従って管理し、実行権を与えるタスク制御部４１を備える。タスク制御部４１が管理するレディキュー４３には、マルチメディア機能に優れた汎用ＯＳ（マルチメディアＯＳ５０）が、一つのタスクとして登録されている。このマルチメディアＯＳのプライオリティは、通常時、最低値に設定されている。但し、マルチメディアＯＳに対する割込み要求が発生すると、第二ＯＳ用ＩＳＲが起動し、割込み事象がリングバッファ８０に格納されると共に、マルチメディアＯＳ５０のプライオリティが、最低値よりも高い第二値に変更される。【選択図】  図２
2006004092.tif 000002
【特許請求の範囲】
【請求項１】
複数のタスクを、各タスクに設定された優先度に従って管理する第一のオペレーティングシステムと、
前記第一のオペレーティングシステムの下で、前記タスクの一つとして管理される第二のオペレーティングシステムと、
前記第二のオペレーティングシステムに対する割込み要求が発生すると、その後、前記第一のオペレーティングシステムの下で前記第二のオペレーティングシステムが実行権を獲得した際に、該割込み要求に対応する処理を、前記第二のオペレーティングシステムに実行させる割込み制御手段と、
前記第二のオペレーティングシステムに対する割込み要求が発生すると、前記第二のオペレーティングシステムの優先度を、初期値より高い値に設定する第一切替手段と、
前記第一切替手段により前記第二のオペレーティングシステムの優先度が前記初期値より高い値に設定された後、前記割込み要求に対応する処理が前記第二のオペレーティングシステムにて実行されると、前記第二のオペレーティングシステムの優先度を、前記初期値に再設定する第二切替手段と、
を備えることを特徴とするコンピュータシステム。
【請求項２】
前記割込み制御手段は、
前記第二のオペレーティングシステムに対する割込み要求が発生すると、該割込み要求の識別コードを、順次バッファに格納する格納手段、を備え、
前記第一のオペレーティングシステムの下で前記第二のオペレーティングシステムが実行権を獲得すると、前記バッファに格納された割込み要求の識別コードを、該バッファから順次取出して、該識別コードに対応する処理を、前記第二のオペレーティングシステムに実行させる構成にされており、
前記第二切替手段は、前記第一切替手段により前記第二のオペレーティングシステムの優先度が前記初期値より高い値に設定された後、前記割込み制御手段の動作によって、前記バッファに格納された割込み要求の識別コードに対応する処理が全て前記第二のオペレーティングシステムにて実行されると、前記第二のオペレーティングシステムの優先度を、前記初期値に再設定することを特徴とする請求項１記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タスクに設定された優先度に従って、複数のタスクを管理する第一のオペレーティングシステムと、第一のオペレーティングシステムによって管理される第二のオペレーティングシステムと、を備えるコンピュータシステムに関する。
【背景技術】
【０００２】
従来より、オペレーティングシステム（ＯＳ）としては、Ｗｉｎｄｏｗｓ（登録商標）シリーズやＬｉｎｕｘ等の汎用ＯＳ、組込みシステムに使用される時間管理に優れたリアルタイムＯＳ等が知られている。
【０００３】
リアルタイムＯＳとしては、ＩＴＲＯＮ仕様のリアルタイムＯＳが周知である。ＩＴＲＯＮ仕様のリアルタイムＯＳは、公開されたソースコード等に基づいて、比較的簡単に開発することができるため、ディジタル家電等、種々の電子機器のオペレーティングシステムに採用されている。
【０００４】
しかしながら、既存のリアルタイムＯＳは、時間管理に特化したものであり、目的に応じて適宜開発される比較的小規模なオペレーティングシステムである。従って、アプリケーションプログラムの開発環境が豊富ではなく、大規模なソフトウェア開発をする場合には、効率が悪い。
【０００５】
一方で、ディジタル家電等の電子機器には、近年、マルチメディアデバイスや、通信デバイス等が組み込まれ始め、電子機器上で様々な機能を実現するために、様々なソフトウェアを開発し電子機器に組み込む必要が生じてきている。しかしながら、ソフトウェア開発の際に、開発環境が悪いと、開発コストが上がり、又、製品の開発時間が長くなる。
【０００６】
このため、上述したような電子機器においては、リアルタイムＯＳの下で、開発環境に優れたＷｉｎｄｏｗｓ（登録商標）シリーズなどの汎用ＯＳを動作させ、リアルタイムＯＳ下で、高度な時間管理を要する処理を実行させ、Ｗｉｎｄｏｗｓ（登録商標）シリーズなどの汎用ＯＳ下で、マルチメディア関連の機能や、通信機能等を実現することが考えられている。
【０００７】
尚、オペレーティングシステムは、上述したように、種類によって様々な特徴を有するものであるため、複数のオペレーティングシステムを一の電子機器に組み込むことは、従来から広く行われている。この点については、特許文献１〜４を参照されたい。
【特許文献１】特開平８−２１２０８９号公報
【特許文献２】特開２００１−２１６１７２号公報
【特許文献３】特開２００１−２３６２３７号公報
【特許文献４】特開平１１−１４９３８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、ＩＴＲＯＮ仕様のリアルタイムＯＳでは、各タスクに優先度が設定されており、レディキューに登録されたタスクには、優先度に応じた順序で実行権が付与される。即ち、ＩＴＲＯＮ仕様のスケジューラは、レディキューに登録されたタスクの内、最も優先度の高いタスクに対して実行権を与える。
【０００９】
このため、ＩＴＲＯＮ仕様のリアルタイムＯＳにおいて、レディキューに登録されたタスクの内、優先度の低いタスクは、それより優先度の高いタスクがレディキューから外されるまで、全く実行されないことになる。
【００１０】
従って、ＩＴＲＯＮ仕様のリアルタイムＯＳに代表される第一のオペレーティングシステムの下で、Ｗｉｎｄｏｗｓ（登録商標）等の第二のオペレーティングシステムを動作させるためには、第二のオペレーティングシステムの優先度を最低値に設定する必要がある。第二のオペレーティングシステムは、常にレディキューに登録されているため、仮にそうしないと、第二のオペレーティングシステムより下位の優先度に設定されたタスクが、実行準備状態（ＲＥＡＤＹ状態）になっても、一向に実行されないことになってしまうからである。
【００１１】
しかしながら、第二のオペレーティングシステムの優先度を最低値に設定すると、第二のオぺレーティングシステムは、他のタスクがレディキューに登録されていない第一のオペレーティングシステムの空き時間にしか実行されないことになる。
【００１２】
従って、第二のオペレーティングシステムの優先度を最低値（最下位）に設定すると、第二のオペレーティングシステムで処理すべき割込み要求が発生した場合にも、その割込み要求に対応する処理を、第二のオペレーティングシステムにて直ちに実行することができなくなってしまう。
【００１３】
このため、第二のオペレーティングシステムの優先度を最低値に設定した場合には、高速応答性が必要な第二のオペレーティングシステム下のデバイスドライバにも、第一のオペレーティングシステム下で動作する他のタスクより低い優先度が設定され、そのデバイスドライバの応答性を十分確保することができなくなってしまう。
【００１４】
本発明は、こうした問題に鑑みなされたものであり、タスクに設定された優先度に従って複数のタスクを管理する第一のオペレーティングシステムと、そのオペレーティングシステムにより管理される第二のオペレーティングシステムと、が搭載されたコンピュータシステムにおいて、第二のオペレーティングシステムの下で動作するデバイスドライバの応答性を高めることを目的とする。
【課題を解決するための手段】
【００１５】
かかる目的を達成するためになされた請求項１記載の発明は、第一及び第二のオペレーティングシステムと、割込み制御手段と、第一及び第二切替手段と、を備えるコンピュータシステムである。このコンピュータシステムにおける第一のオペレーティングシステムは、複数のタスクを、タスクに設定された優先度に従って管理するマルチタスクＯＳであり、上記第二のオペレーティングシステムは、第一のオペレーティングシステムの下で動作する。
【００１６】
即ち、このコンピュータシステムにおいて、第一のオペレーティングシステムは、第二のオペレーティングシステムを、一つのタスクとして管理し、第二のオペレーティングシステムに設定された優先度に従って、第二のオペレーティングシステムに実行権を付与する。
【００１７】
割込み制御手段は、第二のオペレーティングシステムに対する割込み要求が発生すると、その後、第一のオペレーティングシステムの下で第二のオペレーティングシステムが実行権を獲得した際に、その割込み要求に対応する処理を、第二のオペレーティングシステムに実行させる。
【００１８】
一方、第一切替手段は、第二のオペレーティングシステムに対する割込み要求が発生すると、第二のオペレーティングシステムの優先度を、初期値より高い優先度に設定する。第二切替手段は、第一切替手段により第二のオペレーティングシステムの優先度が初期値より高い優先度に設定された後、上記発生した割込み要求に対応する処理が第二のオペレーティングシステムにて実行されると、第二のオペレーティングシステムの優先度を、初期値に再設定する。
【００１９】
即ち、このコンピュータシステムでは、第二のオペレーティングシステムにて処理すべき割込み要求が発生すると、その割込み要求に対応する処理が第二のオペレーティングシステムで実行されるまでの期間、第二のオペレーティングシステムの優先度が、初期値より高い優先度に設定される。このため、第二のオペレーティングシステムで処理すべき割込み要求が存在する場合、第二のオペレーティングシステムには、迅速に実行権が付与され、割込み要求に対応する処理は、第二のオペレーティングシステムにて迅速に行われる。
【００２０】
従って、本発明によれば、第二のオペレーティングシステムの優先度を、最も低い値に初期設定した場合であっても、第二のオペレーティングシステムにおけるデバイスドライバの応答性を十分に確保することができる。換言すると、上記第一のオペレーティングシステムの下で第二のオペレーティングシステムが管理されるコンピュータシステムにおいて、第二のオペレーティングシステムの下で動作するデバイスドライバの応答性を、従来より向上させることができる。
【００２１】
尚、第二のオペレーティングシステムに対する割込み要求は、第二のオペレーティングシステムに実行権が付与されるまでに複数発生する可能性があるから、上記コンピュータシステムにおける割込み制御手段には、第二のオペレーティングシステムに対する割込み要求が発生すると、その割込み要求の識別コードを、順次バッファに格納する格納手段を設けるとよい。
【００２２】
このように構成された請求項２記載のコンピュータシステムでは、第一のオペレーティングシステムの下で第二のオペレーティングシステムが実行権を獲得すると、割込み制御手段が、上記バッファに格納された割込み要求の識別コードを、バッファから順次取出して、その識別コードに対応する処理を、第二のオペレーティングシステムに実行させる。一方、第二切替手段は、割込み制御手段の動作によって、バッファに格納された割込み要求の識別コードに対応する処理が全て第二のオペレーティングシステムにて実行されると、第二のオペレーティングシステムの優先度を、初期値に再設定する。
【００２３】
従って、請求項２記載のコンピュータシステムによれば、第二のオペレーティングシステムに対する第一の割込み要求が発生した後、第二のオペレーティングシステムが実行権を獲得するまでの間に発生した、第二のオペレーティングシステムに対する後続の割込み要求に対応する処理を、迅速に第二のオペレーティングシステムに実行させることができ、第二のオペレーティングシステムにて動作するデバイスドライバの応答性を一層高めることができる。
【００２４】
尚、本発明のコンピュータシステムにおける割込み制御手段は、第二のオペレーティングシステムにて処理されるべき割込み要求が発生すると、それをバッファに格納して受付、その後、第二のオペレーティングシステムが実行権を獲得した際に、バッファに格納された識別コードに従い、割込み要求の発信元のデバイスに代わって、同様の割込み要求を第二のオペレーティングシステムに入力することにより、第二のオペレーティングシステムに割込み要求に対応する割込み処理タスク（割込みサービスルーチン）を実行させればよい。
【００２５】
また、上述のコンピュータシステムにおいては、上記第二切替手段を、第一切替手段により第二のオペレーティングシステムの優先度が初期値より高い値（高い優先度）に設定された後、割込み制御手段の動作によって、バッファに格納された割込み要求の識別コードが全て取り出されたか否かを判断する判断手段と、第二のオペレーティングシステムの優先度を初期値に再設定する再設定手段と、上記判断手段により割込み要求の識別コードが全てバッファから取り出されたと判断されると、上記再設定手段を作動させる作動手段と、からなる構成にすると共に、上記再設定手段を、第二のオペレーティングシステムの下で動作する割込み処理タスク（割込みサービスルーチン）の一つとして、当該コンピュータシステムに組み込むとよい。
【００２６】
このようにすれば、第二のオペレーティングシステムに、再設定手段としての機能を有するドライバを組み込む程度で、バッファに格納された割込み要求の識別コードに対応する処理が全て第二のオペレーティングシステムにて実行されてから、第二のオペレーティングシステムの優先度を初期値に再設定する動作を、第二のオペレーティングシステムを改変することなく、簡単に実現することができる。
【発明を実施するための最良の形態】
【００２７】
以下に本発明の実施例について、図面とともに説明する。図１は、本発明が適用されたカーナビゲーション装置１の構成を表すブロック図である。
図１に示すように、本実施例のカーナビゲーション装置１は、液晶ディスプレイ等からなる表示装置１１と、現在地の位置座標を算出するＧＰＳ受信機等からなる位置検出装置１３と、各種キースイッチからなり利用者の操作情報を制御装置２０に入力する入力装置１５と、地図データ等を記憶するハードディスク装置（ＨＤＤ）１６と、外部通信機器と無線通信可能な通信装置１７と、各種メディア（コンパクトディスク等）に記録されたオーディオデータを再生するオーディオ装置１９と、これら各ハードウェア１１〜１９を統括制御する制御装置２０と、を備える。
【００２８】
制御装置２０は、各種演算処理を行うＣＰＵ２１と、プログラム等を記憶するＲＯＭ２３と、ＣＰＵ２１によるプログラム実行時に各種データを記憶するＲＡＭ２５とを備える。ＲＯＭ２３には、当該カーナビゲーション装置１の運営に必要な基本ソフトウェアとして、複数のマルチタスクＯＳ（オペレーティングシステム）が格納されており、制御装置２０は、当該カーナビゲーション装置１の起動時に、ＲＯＭ２３に記憶された上記マルチタスクＯＳ等の基本ソフトウェアを読出し、これをＣＰＵ２１にて実行することにより、図２に示す構成のコンピュータシステム３０を当該制御装置２０内に構築して、当該カーナビゲーション装置１を統括制御（運営）する。
【００２９】
具体的にＲＯＭ２３には、上記マルチタスクＯＳとして、ＩＴＲＯＮ仕様のリアルタイムＯＳ４０と、マルチメディア関連の機能に優れた汎用ＯＳ５０(以下、「マルチメディアＯＳ」と表現する。)とが格納されており、ＣＰＵ２１は、当該カーナビゲーション装置１の起動時に、上記リアルタイムＯＳ４０を実行し、このリアルタイムＯＳ４０の下で、マルチメディアＯＳ５０を実行する。尚、上記マルチメディアＯＳとしては、Ｗｉｎｄｏｗｓ（登録商標）ＣＥ等が挙げられる。
【００３０】
図２（ａ）は、制御装置２０のＣＰＵ２１がＲＯＭ２３に記憶された基本ソフトウェアを実行することにより、当該制御装置２０内に構築されるコンピュータシステム３０の構成を表すブロック図である。
【００３１】
図２（ａ）に示すように、本実施例のコンピュータシステム３０は、上記リアルタイムＯＳ４０と、マルチメディアＯＳ５０と、割込みハンドラ６０と、ベクタテーブル（ＴＢＬ）７０と、リングバッファ８０と、割込みサービスルーチン（ＩＳＲ）の一群９０と、を備える。リアルタイムＯＳ４０は、当該リアルタイムＯＳ４０上で作成された複数のタスクを、各タスクに設定されたプライオリティ（優先度）に従って管理するタスク制御部４１と、実行準備状態（ＲＥＡＤＹ状態）にあるタスクをプライオリティの高い順に記憶するレディキュー４３とを備える。
【００３２】
タスク制御部４１は、ＩＴＲＯＮ仕様にされており、各タスクに設定されたプライオリティに従って、レディキュー４３を構成し、スケジューリングを行う。即ち、実行準備状態（ＲＥＡＤＹ状態）にあるタスクを、プライオリティの高い順に配列して待ち行列を作る。そして、後述するように、レディキュー４３の先頭に位置する最もプライオリティの高いタスクを、実行準備状態（ＲＥＡＤＹ状態）から実行状態（ＲＵＮ状態）に遷移させ（即ち、ディスパッチし）、これによりレディキュー４３の先頭に位置するタスクに実行権を付与して、ＣＰＵ２１に、そのタスクを実行させる。
【００３３】
尚、レディキュー４３には、当該リアルタイムＯＳ４０の起動時に、マルチメディアＯＳ５０が一つのタスクとして登録される。この際、マルチメディアＯＳ５０のプライオリティは、最低値に設定される。
【００３４】
一方、割込みハンドラ６０は、上述したハードウェア１１〜１９から割込みが発生した際に、図示しない割込みコントローラから入力される割込み要求の識別コードとしての割込みＩＤ（割込みベクタ）に基づいて、発生した割込み事象に対応する割込みサービスルーチン（ＩＳＲ）をＣＰＵ２１に実行させる。この割込みハンドラ６０は、入力された割込みＩＤ（割込みベクタ）に対応する割込みサービスルーチン（ＩＳＲ）のアドレスを、ベクタテーブル７０から読み出し、上記アドレスに対応する位置に格納された割込みサービスルーチン（ＩＳＲ）をＣＰＵ２１に実行させる。尚、周知のようにベクタテーブル７０には、割込みＩＤ（割込みベクタ)と、その割込みＩＤ（割込みベクタ）に対応する割込みサービスルーチン（ＩＳＲ）のアドレスとが、互いに関連付けられて記憶されている。
【００３５】
本実施例においては、マルチメディアＯＳ５０にて処理すべき割込みに対応する割込みＩＤ（割込みベクタ）に関連付けられて、その割込みに対応する処理をマルチメディアＯＳ５０に実行させるための割込みサービスルーチン（以下、「第二ＯＳ用ＩＳＲ」と表現する。）のアドレスが記憶されており、マルチメディアＯＳ５０にて処理すべき割込みが発生すると、割込みハンドラ６０は、その割込みＩＤに対応する第二ＯＳ用ＩＳＲをＣＰＵ２１に実行させて、対応する割込みＩＤをリングバッファ８０に記憶させる。尚、リングバッファ８０は、所謂ＦＩＦＯ型のバッファであり、入力されたデータを、順に記憶すると共に、入力されたデータの順に、そのデータを出力するものである。
【００３６】
図２（ｂ）は、上述した割込みハンドラ６０の動作態様を示した説明図であり、図２（ｃ）は、第二ＯＳ用ＩＳＲの動作態様を示した説明図である。また、図３（ａ）は、ＣＰＵ２１が実行する第二ＯＳ用ＩＳＲを表すフローチャートである。
【００３７】
図３（ａ）に示すように、ＣＰＵ２１は、第二ＯＳ用ＩＳＲを実行すると、この第二ＯＳ用ＩＳＲに設定された割込みＩＤを、リングバッファ８０に書き込むと共に（Ｓ１１０）、後述するソフトウェア割込みＩＳＲを起床するためのソフトウェア割込みを発行する（Ｓ１１５）。尚、本実施例では、マルチメディアＯＳ５０が実行権を獲得している期間を除く期間、ソフトウェア割込みに対して、割込みマスクがセットされる。従って、この期間に、Ｓ１１５でソフトウェア割込みを発行しても、ソフトウェア割込みＩＳＲは、ただちに起床されない。
【００３８】
Ｓ１１５での処理を終えると、ＣＰＵ２１は、マルチメディアＯＳ５０のプライオリティを変更するためのプライオリティ変更指令（所謂ｃｈｇ＿ｐｒｉコマンド）を、設定されるべきプライオリティの値を表す情報と共にリアルタイムＯＳ４０に入力し、リアルタイムＯＳ４０のタスク制御部４１に、マルチメディアＯＳ５０のプライオリティを変更させる（Ｓ１２０）。
【００３９】
尚、ここで設定されるべきマルチメディアＯＳ５０のプライオリティの値は、設計者により予め定められており、Ｓ１２０においてＣＰＵ２１は、起動時にマルチメディアＯＳ５０に設定される初期値（最低値）よりも高い値（以下、「第二値」と表現する。）へのプライオリティ変更指令を、リアルタイムＯＳ４０に入力する。この後、ＣＰＵ２１は、当該第二ＯＳ用ＩＳＲを終了する。
【００４０】
図４（ａ）は、このプライオリティ変更指令を受けると、リアルタイムＯＳ４０のタスク制御部４１が実行するプライオリティ変更処理を表すフローチャートである。また、図４（ｂ）は、タスク制御部４１が繰り返し実行するタスク制御処理を表すフローチャートである。
【００４１】
タスク制御部４１は、マルチメディアＯＳ５０を対象とするプライオリティ変更指令が入力されると、そのプライオリティ変更指令の内容を解析し（Ｓ２０１）、プライオリティ変更指令がマルチメディアＯＳ５０のプライオリティを第二値へ変更せよとの変更指令であるのか、それとも、プライオリティ変更指令がマルチメディアＯＳ５０のプライオリティを最低値（初期値）へ変更せよとの変更指令であるのかを判断する。
【００４２】
そして、プライオリティ変更指令がマルチメディアＯＳ５０のプライオリティを第二値へ変更せよとの変更指令であると判断すると、マルチメディアＯＳ５０のプライオリティを最低値より高い第二値に変更する（Ｓ２０３）。その後、タスク制御部４１は、マルチメディアＯＳ５０のプライオリティを第二値とした状態で、レディキュー４３に登録されているマルチメディアＯＳ５０を含むタスク群を、プライオリティの高い順に並べ替え、レディキュー４３を再構成する（Ｓ２０７）。その後、当該プライオリティ変更処理を終了する。
【００４３】
これに対し、Ｓ２０１で、プライオリティ変更指令がマルチメディアＯＳ５０のプライオリティを最低値（初期値）へ変更せよとの変更指令であると判断すると、タスク制御部４１は、マルチメディアＯＳ５０のプライオリティを最低値に変更し（Ｓ２０５）、その後、マルチメディアＯＳ５０のプライオリティを最低値とした状態で、レディキュー４３に登録されているマルチメディアＯＳ５０を含むタスク群を、プライオリティの高い順に並べ替え、レディキュー４３を再構成する（Ｓ２０７）。その後、当該プライオリティ変更処理を終了する。尚、図示しないが、タスク制御部４１は、レディキュー４３に登録されているタスクの種類が変更になる度に、Ｓ２０７と同様のスケジューリングを実行し、プライオリティの高い順にタスクを配列して、レディキュー４３を再構成する。
【００４４】
一方、タスク制御部４１は、ディスパッチの実行条件が満足されて、図４（ｂ）に示すタスク制御処理を実行すると、レディキュー４３に登録されているタスクの内、先頭に位置するタスク（即ち、レディキュー４３に登録されている最もプライオリティの高いタスク）を、ディスパッチ対象のタスクとして選択する（Ｓ２１０）。
【００４５】
Ｓ２１０の処理後、タスク制御部４１は、ディスパッチ対象のタスクがマルチメディアＯＳ５０であるか否かを判断し（Ｓ２２０）、ディスパッチ対象のタスクがマルチメディアＯＳ５０ではないと判断すると（Ｓ２２０でＮｏ）、ソフトウェア割込みマスクをセットした状態で（Ｓ２２３）、ディスパッチ対象のタスクを、実行準備状態（ＲＥＡＤＹ状態）から実行状態（ＲＵＮ状態）に遷移させて、そのタスクを起床する（Ｓ２２５）。この処理により、ディスパッチ対象のタスクは、ＣＰＵ２１により実行される。
【００４６】
一方、ディスパッチ対象のタスクがマルチメディアＯＳ５０であると判断すると（Ｓ２２０でＹｅｓ）、上述したソフトウェア割込みマスクを解除すると共に、マルチメディアＯＳ５０を、実行準備状態（ＲＥＡＤＹ状態）から実行状態（ＲＵＮ状態）に遷移させて、マルチメディアＯＳ５０を起床する（Ｓ２３０）。
【００４７】
この処理により、マルチメディアＯＳ５０は、ＣＰＵ２１により実行される。また、Ｓ２３０では、ソフトウェア割込みマスクが解除されるので、ソフトウェア割込み（換言すると、マルチメディアＯＳ５０にて処理すべき割込み）が発生している場合には、マルチメディアＯＳ５０に先駆けて、ソフトウェアＩＳＲが実行される。図３（ｂ）は、ＣＰＵ２１が実行するソフトウェアＩＳＲを表すフローチャートである。
【００４８】
ソフトウェアＩＳＲを実行すると、ＣＰＵ２１は、リングバッファ８０に格納されている割込みＩＤを一つ取出し（Ｓ３１０）、その取出した割込みＩＤに対応するイベントを発生させる（Ｓ３３０）。具体的には、マルチメディアＯＳ５０がアクセス可能なＲＡＭ２５のフラグ記憶領域２５ａに用意された、その割込みＩＤに対応するイベントフラグをセットする。これにより、割込み要求は、マルチメディアＯＳ５０に伝達される。
【００４９】
その後、ＣＰＵ２１は、リングバッファ８０が空であるか否かを判断し（Ｓ３４０）、空ではないと判断すると（Ｓ３４０でＮｏ）、Ｓ３１０に移行して、リングバッファ８０に格納されている次の割込みＩＤを取出し、それに対応するイベントを発生させる（Ｓ３３０）。そして、リングバッファ８０が空であると判断すると（Ｓ３４０でＹｅｓ）、終了スレッドを起床するためのイベントフラグをセットすることにより、終了イベントを発生させ（Ｓ３５０）、その後、当該ソフトウェアＩＳＲを終了する。
【００５０】
尚、終了スレッドは、マルチメディアＯＳ５０のプライオリティを最低値に変更するためのスレッドであり、マルチメディアＯＳ５０で処理される割込みサービスルーチン（ここでは、「割込み処理スレッド（ＩＳＴ）」と表現する）の一つとして、マルチメディアＯＳ５０に組み込まれている。この終了スレッドのプライオリティは、マルチメディアＯＳ５０において、他の割込み処理スレッド（ＩＳＴ）よりも低く設定されており、終了スレッドは、他の割込み処理スレッド（ＩＳＴ）が全て実行された後に、ＣＰＵ２１により実行される。
【００５１】
次に、マルチメディアＯＳ５０の構成について説明する。図２（ｂ）に示すように、本実施例のマルチメディアＯＳ５０は、リアルタイムＯＳ４０と同様、タスクを管理するタスク制御部５１と、レディキュー５３と、を備える。
【００５２】
タスク制御部５１は、イベントの発生等に応じて、待ち状態のタスクを、レディキュー５３に登録し実行準備状態（ＲＥＡＤＹ状態）にすると共に、スケジューリング等を行う。スケジューリングの際には、実行準備状態（ＲＥＡＤＹ状態）のタスクを、プライオリティの高い順に配列して待ち行列を作る。そして、ディスパッチの実行条件が満足されると、レディキュー５３に登録されている最もプライオリティの高いタスクを、実行準備状態（ＲＥＡＤＹ状態）から実行状態（ＲＵＮ状態）に遷移させ、ＣＰＵ２１に、そのタスクを実行させる。
【００５３】
図５（ａ）は、タスク制御部５１が、イベントに対応する割込み処理スレッド（ＩＳＴ）をレディキュー５３に登録するために繰り返し実行するイベント登録処理を表すフローチャートであり、図５（ｂ）は、タスク制御部５１により実行される割込み処理スレッド（ＩＳＴ）の起床手順を示したフローチャートである。
【００５４】
マルチメディアＯＳ５０のタスク制御部５１は、イベント登録処理を実行すると、ＲＡＭ２５のフラグ記憶領域２５ａを参照して、割込みに関するイベントが発生しているか否か判断し（Ｓ４１０）、イベントが発生していないと判断すると（Ｓ４１０でＮｏ）、当該イベント登録処理を終了し、イベントが発生していると判断すると（Ｓ４１０でＹｅｓ）、発生しているイベントに対応する割込み処理スレッド（ＩＳＴ）をレディキュー５３に登録して、それら割込み処理スレッド（ＩＳＴ）を実行準備状態（ＲＥＡＤＹ状態）にする（Ｓ４２０）。また、この後に、スケジューリングを行って、レディキュー５３に登録されているタスクをプライオリティの高い順に並び替え（Ｓ４３０）、当該イベント登録処理を終了する。
【００５５】
一方、タスク制御部５１は、ディスパッチの実行条件が満足されると、レディキュー５３に登録されている最もプライオリティの高いタスク（割込み処理スレッド（ＩＳＴ））を、ディスパッチ対象として選択し（Ｓ５１０）、このタスクを、実行準備状態（ＲＥＡＤＹ状態）から実行状態（ＲＵＮ状態）に遷移させて起床する（Ｓ５３０，Ｓ５４０）。
【００５６】
この際、レディキュー５３に割込み処理スレッド（ＩＳＴ）が登録されていると、終了スレッドの起床前に、それよりプライオリティの高い終了スレッド以外の割込み処理スレッド（ＩＳＴ）がディスパッチ対象に選択される（Ｓ５１０）。従って、ディスパッチ対象が終了スレッドであるか否かを判断するＳ５２０では、まずＮｏと判断されて、終了スレッドよりプライオリティの高い割込み処理スレッド（ＩＳＴ）が起床され（Ｓ５３０）、ＣＰＵ２１により、この割込み処理スレッド（ＩＳＴ）が実行される。
【００５７】
そして、レディキュー５３に登録された終了スレッド以外の割込み処理スレッド（ＩＳＴ）が全てＣＰＵ２１により実行されレディキュー５３から削除されると、終了スレッドがディスパッチ対象として選択され（Ｓ５１０）、Ｓ５２０でＹｅｓと判断されて、終了スレッドが起床される（Ｓ５４０）。ＣＰＵ２１は、この終了スレッドを実行すると、リアルタイムＯＳ４０におけるマルチメディアＯＳ５０のプライオリティを最低値に変更するよう指示するプライオリティ変更指令をリアルタイムＯＳ４０に入力し、その後当該終了スレッドを終了する。
【００５８】
以上、本実施例のカーナビゲーション装置１及びコンピュータシステム３０について説明したが、このコンピュータシステム３０によれば、第一のオペレーティングシステムとしてのリアルタイムＯＳ４０が、タスク制御部４１にて、第二のオペレーティングシステムとしてのマルチメディアＯＳ５０を一つのタスクとして管理し、マルチメディアＯＳ５０に設定されたプライオリティ（優先度）に従って、マルチメディアＯＳ５０に実行権を付与し（Ｓ２３０）、ＣＰＵ２１にマルチメディアＯＳ５０を実行させる。
【００５９】
割込みハンドラ６０は、マルチメディアＯＳ５０に対する割込み要求が発生する度に、第二ＯＳ用ＩＳＲをＣＰＵ２１に実行させて、その割込み要求に対応する割込みＩＤをリングバッファ８０に順に記憶させる。また、リアルタイムＯＳ４０下でマルチメディアＯＳ５０が実行権を獲得した際、割込みマスクを解除することにより（Ｓ２３０）、過去、第二ＯＳ用ＩＳＲにて発生したソフトウェア割込みに対応する割込み処理ルーチンであるソフトウェアＩＳＲをＣＰＵ２１に実行させて、リングバッファ８０に格納された割込みＩＤを順次取出させ（Ｓ３１０）、割込みＩＤに対応するイベントを発生させ（Ｓ３３０）、そのイベントに対応する処理（割込み処理スレッド）を、マルチメディアＯＳ５０に実行させる（タスク制御部５１が実行するＳ５３０）。
【００６０】
また、タスク制御部４１は、第一切替手段としての機能を果たし、マルチメディアＯＳ５０に対する割込み要求が発生すると、第二ＯＳ用ＩＳＲにて発せられるプライオリティ変更指令（Ｓ１２０）に従って、マルチメディアＯＳ５０のプライオリティ（優先度）を、初期値より高いプライオリティ（第二値）に設定する（Ｓ２０３）。
【００６１】
その他、タスク制御部４１は、第二切替手段としての機能をも果たし、マルチメディアＯＳ５０のプライオリティが初期値より高い第二値に設定された後（Ｓ２０３）、上記発生した割込み要求に対応する処理（割込み処理スレッド）がマルチメディアＯＳ５０により全て実行されると、その後、終了スレッドにより発せられるプライオリティ変更指令（Ｓ５４０）に従って、マルチメディアＯＳ５０のプライオリティ（優先度）を、初期値としての最低値に再設定する（Ｓ２０５）。
【００６２】
このように、本実施例のコンピュータシステム３０では、マルチメディアＯＳ５０にて処理すべき割込み要求が発生すると、その割込み要求に対応する処理（割込み処理スレッド）がマルチメディアＯＳ５０で実行されるまでの期間、マルチメディアＯＳ５０のプライオリティが通常時（初期値）より高い値に設定されるため、マルチメディアＯＳ５０で処理されるべき割込み要求は、従来より迅速にマルチメディアＯＳ５０にて処理される。
【００６３】
従って、このコンピュータシステム３０によれば、マルチメディアＯＳ５０のプライオリティを最低値に初期設定しても、リアルタイムＯＳ４０の管理下で動作するマルチメディアＯＳ５０の割込み処理スレッドの応答性、しいてはデバイスドライバの応答性を十分に確保することができる。即ち、コンピュータシステム３０によれば、マルチメディアＯＳ５０下で動作するデバイスドライバの応答性を向上させることができる。
【００６４】
また、本実施例のコンピュータシステム３０では、マルチメディアＯＳのプライオリティを最低値に設定するための終了スレッドを、他の割込み処理スレッド（ＩＳＴ）よりも低いプライオリティにして、マルチメディアＯＳ５０に組み込み、割込み要求に対応する割込み処理スレッド（ＩＳＴ）が全て終了すると、終了スレッドが実行されるように、マルチメディアＯＳ５０を構成しているので、マルチメディアＯＳ５０のカーネル部を改変することなく、デバイスドライバの一つとして、終了スレッドをマルチメディアＯＳ５０に導入する程度で、マルチメディアＯＳ５０のプライオリティを、適切な時期に初期値に再設定することができる。従って、本発明は、改変不可能なマルチメディアＯＳ５０を用いる場合に、非常に有効である。
【００６５】
尚、本発明のコンピュータシステムは、上記実施例に限定されるものではなく、種々の態様を採ることができる。上記実施例では、カーナビゲーション装置１に本発明のコンピュータシステムを適用した例を示したが、その他の電子装置に、本発明のコンピュータシステムを適用してもよい。また、上記実施例では、ＩＴＲＯＮ仕様のリアルタイムＯＳの下で、Ｗｉｎｄｏｗｓ（登録商標）ＣＥを動作させる例を示したが、その他のＯＳについて、本発明のコンピュータシステムを適用してもよい。
【図面の簡単な説明】
【００６６】
【図１】カーナビゲーション装置１の構成を表すブロック図である。
【図２】制御装置２０に構築されるコンピュータシステム３０の構成を表すブロック図（ａ）及び、割込みハンドラ６０の動作態様を示した説明図（ｂ）並びに、第二ＯＳ用ＩＳＲの動作態様を示した説明図（ｃ）である。
【図３】第二ＯＳ用ＩＳＲを表すフローチャート（ａ）及び、ソフトウェアＩＳＲを表すフローチャート（ｂ）である。
【図４】タスク制御部４１が実行するプライオリティ変更処理を表すフローチャート（ａ）及び、タスク制御部４１が実行するタスク制御処理を表すフローチャート（ｂ）である。
【図５】タスク制御部５１が実行するイベント登録処理を表すフローチャート（ａ）及び、割込み処理スレッドの起床手順を表すフローチャート（ｂ）である。
【符号の説明】
【００６７】
１…カーナビゲーション装置、２０…制御装置、２１…ＣＰＵ、２３…ＲＯＭ、２５…ＲＡＭ、２５ａ…フラグ記憶領域、３０…コンピュータシステム、４０…リアルタイムＯＳ、４１，５１…タスク制御部、４３，５３…レディキュー、５０…マルチメディアＯＳ、６０…割込みハンドラ、７０…ベクタテーブル、８０…リングバッファ
【図１】
2006004092.tif 000003
【図２】
2006004092.tif 000004
【図３】
2006004092.tif 000005
【図４】
2006004092.tif 000006
【図５】
2006004092.tif 000007