(57)【要約】    【課題】  マルチプロセス環境において効率的かつ適切にプロセスと遅延タスクをスケジューリングする。    【解決手段】  プロセススケジューリング装置は、可変の優先度が付与された遅延タスクのみを処理する遅延タスク処理プロセス＃１と、固定の優先度が付与された遅延タスク以外の処理を実行する複数のプロセス＃２，＃３…とを備える。プロセススケジューリング部１２は、遅延タスク処理プロセス＃１及びプロセス＃２，＃３…を優先度に基づいて順次実行する。遅延タスク登録処理部１３は、新たに発生した遅延タスクを優先度と共にキューイングテーブル２１に登録する。遅延タスク優先度制御部１４はキューイングテーブル２１内で優先度が最高の遅延タスクを選択し、プロセス優先度制御部１５は選択された遅延タスクの優先度を遅延タスク処理プロセス＃１の優先度に設定する。【選択図】図１
2004234643.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ優先度が付与された複数のプロセスを並列処理するプロセススケジューリング装置であって、
前記複数のプロセスのうち遅延タスクを処理し、前記遅延タスクが登録されるキューイングテーブルを備え、かつ可変の優先度が設定される少なくとも一つの遅延タスク処理部と、
前記複数のプロセスのうち前記遅延タスク以外の一つのプロセスをそれぞれ処理する複数の通常プロセス処理部であり、かつ各通常プロセス処理部の優先度は前記処理するプロセスの優先度と等しく設定されているものである通常プロセス処理部と、
前記遅延タスク処理部及び通常プロセス処理部をそれらに設定された優先度に基づいて順次起動し、対応する前記プロセスを処理させるプロセススケジューリング部と、
前記遅延タスク処理部のキューイングテーブルに、新たに発生した遅延タスクをそれ自体の優先度と共に登録する遅延タスク登録処理部と、
前記キューイングテーブルに登録された遅延タスクのうち最高の優先度の遅延タスクを選択する遅延タスク優先度制御部と、
前記遅延タスク優先度制御部によって選択された遅延タスクの優先度を、前記遅延タスク処理部の優先度に設定するプロセス優先度制御部と
を備える、プロセススケジューリング装置。
【請求項２】
前記遅延タスクは、割り込みハンドラのうち遅延処理が可能なタスクを含む、請求項１に記載のプロセススケジューリング装置。
【請求項３】
前記プロセス優先度制御部は、前記新たな遅延タスクが発生した場合、実行中のプロセスに続く次のプロセスが開始される前に、前記遅延タスク処理部の優先度の設定を実行する、請求項１に記載のプロセススケジューリング装置。
【請求項４】
前記プロセス優先度制御部は、前記新たな遅延タスクが発生した場合、前記実行中のプロセスを中断し、前記遅延タスク処理部の優先度の設定を実行した後、前記中断されたプロセスを再開する、請求項３に記載のプロセススケジューリング装置。
【請求項５】
前記プロセス優先度制御部は、前記新たな遅延タスクが発生した場合、前記実行中のプロセスが終了した後、前記次のプロセスが開始される前に、前記遅延タスク処理部の優先度の設定を行う、請求項３に記載のプロセススケジューリング装置。
【請求項６】
前記新たな遅延タスクが発生した時に実行中のプロセスは、前記通常プロセス処理部により処理されるプロセスと、前記遅延タスク処理部により処理される遅延タスクを含む、請求項３に記載のプロセススケジューリング装置。
【請求項７】
それぞれ優先度が付与された複数のプロセスを並列的に処理するプロセススケジューリング方法であって、
遅延タスクを処理する遅延タスク処理プロセスと、前記遅延タスク以外の処理を実行する通常プロセスとを、それらに付与された優先度に基づいて順次実行し、
新たに発生した遅延タスクを、キューイングテーブルにその遅延タスクに付与されている優先度と共に登録し、
前記キューイングテーブルに記録された遅延タスクのうち優先度が最高である遅延タスクを選択し、
前記選択された遅延タスクの優先度を前記遅延タスク処理プロセス自体の優先度に設定する、
プロセススケジューリング方法。
【請求項８】
前記遅延タスクは、割り込みハンドラのうち遅延処理が可能なタスクを含む、請求項７に記載のプロセススケジューリング方法。
【請求項９】
前記新たなタスクが発生した時の前記遅延タスク処理プロセスの優先度の設定を、実行中のプロセスに続く次のプロセスが開始される前に実行する、請求項７に記載のプロセススケジューリング方法。
【請求項１０】
前記新たなタスクが発生した時の前記遅延タスク処理プロセスの優先度の設定は、
前記新たな遅延タスクが発生した時に実行中のプロセスを中断し、
前記遅延タスク処理プロセスの優先度の設定し、かつ
前記中断されたプロセスを再開する、請求項９に記載のプロセススケジューリング方法。
【請求項１１】
前記新たなタスクが発生した時の前記遅延タスク処理プロセスの優先度の設定は、前記実行中のプロセスが終了した後、前記次のプロセスが開始される前に実行される、請求項９に記載のプロセススケジューリング方法。
【請求項１２】
前記新たなタスクが発生した時に実行中のプロセスは、前記通常プロセスと前記遅延タスクを含む請求項９に記載のプロセススケジューリング方法。
【請求項１３】
それぞれ優先度が付与された複数のプロセスをコンピュータに並列処理させるためのプログラムであって、
遅延タスクを処理する遅延タスク処理プロセスと、前記遅延タスク以外の処理を実行する通常プロセスとを、それらに付与された優先度に基づいて順次実行する手順と、
新たに発生した遅延タスクを、キューイングテーブルにその遅延タスクに付与されている優先度と共に登録する手順と、
前記キューイングテーブルに記録された遅延タスクのうち優先度が最高である遅延タスクを選択する手順と、
前記選択された遅延タスクの優先度を前記遅延タスク処理プロセス自体の優先度に設定する手順と
を備えるプログラム。
【請求項１４】
それぞれ優先度が付与された複数のプロセスをコンピュータに並列処理させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、前記プログラムは、
遅延タスクを処理する遅延タスク処理プロセスと、前記遅延タスク以外の処理を実行する通常プロセスとを、それらに付与された優先度に基づいて順次実行する手順と、
新たに発生した遅延タスクを、キューイングテーブルにその遅延タスクに付与されている優先度と共に登録する手順と、
前記キューイングテーブルに記録された遅延タスクのうち優先度が最高である遅延タスクを選択する手順と、
前記選択された遅延タスクの優先度を前記遅延タスク処理プロセス自体の優先度に設定する手順と
を備える記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセス環境下で効率的かつ適切なスケジューリングが可能な、プロセススケジューリング装置、プロセススケジューリング方法、プロセススケジューリングのためのプログラム、及びプロセススケジューリングのためのプログラムを記録した記録媒体に関する。
【背景技術】
【０００２】
現在、コンピュータは、大型計算機やパーソナルコンピュータのような形態での利用に限らず、各種家電機器、携帯電話等の分野でも利用が進んでいる。
【０００３】
コンピュータにおける効率的な処理方法として、マルチプロセス処理が知られている。このマルチプロセス処理では、プログラムをプロセス、スレッド、あるいはタスクと呼ばれる複数の実行単位（本明細書では「プロセス」と呼ぶ。）に分け、各実行単位をそれら付与された優先度に基づいたスケジューリングにより並列処理する。ただし、マルチプロセス処理であっても、全ての実行単位が一律にプロセスとして実行されるわけではなく、プロセスとは異なる形で実行される実行単位も多い。例えば、割り込み要求を処理するための実行単位群（割り込みハンドラ）は、プロセスとは別の形態で処理される。また、割り込みハンドラのうち即時処理の必要がない部分は、適切なタイミングでプロセスとは別の形態で遅延して処理されることが多い。
【０００４】
前記割り込みハンドラのうち即時処理の必要がない部分のようなプロセス以外の形態で実行されるタスク（本明細書では「遅延タスク」と呼ぶ。）と、プロセスとのどちらを優先して処理するかを判断するために、遅延タスクにも優先度を与え、プロセスと同じようにスケジューリングすることが考えられる。これに関連して、発生したイベントを優先度付けした上でキューイングし、優先度の高い順にイベントに対応したプロセスを起動するイベントスケジューリング方法が、特許文献１に記載されている。この特許文献１の方法を発展させて、イベントを遅延タスクの発生とし、起動されるプロセスを遅延タスクに対応する実際の処理として扱うことで、プロセスと遅延タスクをスケジューリングすることが考えられる。
【０００５】
しかし、特許文献１に記載の方法は、マルチプロセス環境を前提としたものではなく、プロセスと遅延タスクとを効率的かつ適切にスケジューリングすることができない。すなわち、特許文献１に記載の方法をマルチプロセス環境に適用した場合、各イベント毎に一つのプロセスを対応させる必要がある。発生したすべてのイベントに対応するプロセスをマルチプロセス的に処理すると大量のプロセスが起動し、プロセスの生成と消滅を短期間で繰り返す必要がある。短期間で大量のプロセスの生成、消滅を繰り返すのは計算機装置にとって負担が大きい。また、一般に、起動しているプロセス数が増加すると、スケジューリングに長時間を要し、管理のためのメモリ消費も増加する。
【特許文献１】特開昭６２−４２２５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、マルチプロセス環境において効率的かつ適切に通常のプロセスと遅延タスクをスケジューリングすることを課題としている。
【課題を解決するための手段】
【０００７】
本発明の第１の態様は、それぞれ優先度が付与された複数のプロセスを並列処理するプロセススケジューリング装置であって、前記複数のプロセスのうち遅延タスクを処理し、前記遅延タスクが登録されるキューイングテーブルを備え、かつ可変の優先度が設定される少なくとも一つの遅延タスク処理部と、前記複数のプロセスのうち前記遅延タスク以外の一つのプロセスをそれぞれ処理する複数の通常プロセス処理部であり、かつ各通常プロセス処理部の優先度は前記処理するプロセスの優先度と等しく設定されているものである通常プロセス処理部と、前記遅延タスク処理部及び通常プロセス処理部をそれらに設定された優先度に基づいて順次起動し、対応する前記プロセスを処理させるプロセススケジューリング部と、前記遅延タスク処理部のキューイングテーブルに、新たに発生した遅延タスクをそれ自体の優先度と共に登録する遅延タスク登録処理部と、前記キューイングテーブルに登録された遅延タスクのうち最高の優先度の遅延タスクを選択する遅延タスク優先度制御部と、前記遅延タスク優先度制御部によって選択された遅延タスクの優先度を、前記遅延タスク処理部の優先度に設定するプロセス優先度制御部とを備える、プロセススケジューリング装置を提供する。
【０００８】
前記遅延タスクとは、マルチプロセス環境において通常のプロセス以外の形態で実行されるタスクである。例えば、前記遅延タスクは、割り込みハンドラに含まれるタスクのうち遅延処理が可能なタスクを含む。また、遅延タスクはプロセスからの要求であって即時処理を要せず遅延可能なタスクを含む。
【０００９】
本発明のプロセススケジューリング装置では、遅延プロセスを処理する遅延タスク処理部の優先度が、それ自体が備えるキューイングテーブルに記憶された遅延タスクの優先度のうち最も優先度が高いものに設定される。従って、遅延タスクと、遅延タスク以外のプロセスとをそれらの優先度に応じて効率的かつ適切にスケジューリングすることができる。
【００１０】
優先度が高いプロセスが優先度の低いプロセスよりも後に処理される現象である優先度の逆転を防止するには、プロセス優先度制御部は、新たな遅延タスクが発生した時に実行中のプロセスに続く次のプロセスが開始される前に、遅延タスク処理プロセス部の優先度の設定を行うことが好ましい。具体的には、プロセス優先度制御部は、新たな遅延タスクが発生した場合、実行中のプロセスを中断し、遅延タスク処理部の優先度の設定を実行した後、前記中断されたプロセスを再開する。あるいは、プロセス優先度制御部は、新たな遅延タスクが発生した場合、実行中のプロセスが終了した後、次のプロセスが開始される前に、前記遅延タスク処理部の優先度の設定を行う。これらのプロセスには、前記通常プロセス処理部により処理されるプロセスと、前記遅延タスク処理部により処理される遅延タスクを含む。
【００１１】
本発明の第２の態様は、それぞれ優先度が付与された複数のプロセスを並列的に処理するプロセススケジューリング方法であって、遅延タスクを処理する遅延タスク処理プロセスと、前記遅延タスク以外の処理を実行する通常プロセスとを、それらに付与された優先度に基づいて順次実行し、新たに発生した遅延タスクを、キューイングテーブルにその遅延タスクに付与されている優先度と共に登録し、前記キューイングテーブルに記録された遅延タスクのうち優先度が最高である遅延タスクを選択し、前記選択された遅延タスクの優先度を前記遅延タスク処理プロセス自体の優先度に設定する、プロセススケジューリング方法を提供する。
【００１２】
本発明の第３の態様は、それぞれ優先度が付与された複数のプロセスをコンピュータに並列処理させるためのプログラムであって、遅延タスクを処理する遅延タスク処理プロセスと、前記遅延タスク以外の処理を実行する通常プロセスとを、それらに付与された優先度に基づいて順次実行する手順と、新たに発生した遅延タスクを、キューイングテーブルにその遅延タスクに付与されている優先度と共に登録する手順と、前記キューイングテーブルに記録された遅延タスクのうち優先度が最高である遅延タスクを選択する手順と、前記選択された遅延タスクの優先度を前記遅延タスク処理プロセス自体の優先度に設定する手順とを備えるプログラムを提供する。
【００１３】
本発明の第４の態様は、前記プログラムを記録したコンピュータ読み取り可能な記録媒体を提供する。
【発明の効果】
【００１４】
本発明では、遅延タスクを処理する遅延タスク処理プロセスの優先度が、それ自体が備えるキューイングテーブルに記憶された遅延タスクの優先度のうち最も優先度が高いものに設定される。従って、遅延タスクと、遅延タスク以外の通常のプロセスとをそれらの優先度に応じて効率的かつ適切にスケジューリングすることができる。
【００１５】
また、遅延タスク処理プロセスの優先度の設定を、新たなタスクが発生した時に実行中のプロセスに続く次のプロセスが開始される前に行うことにより、優先度の逆転現象を防止することができる。
【発明を実施するための最良の形態】
【００１６】
次に、図面に示す本発明の実施形態を説明する。
【００１７】
図１は、本発明のプロセススケジューリング装置であるコンピュータを示している。コンピュータは、少なくとも中央演算処理装置(ＣＰＵ)１とメモリ装置２を備えている。また、コンピュータは、図示しない入力装置、出力装置のような他の機器を備えていてもよい。
【００１８】
ＣＰＵ１は、処理性能が十分であれば任意のタイプのものを用いることができる。
【００１９】
メモリ装置２には、コンピュータのオペレーティングシステム（ＯＳ）１０、一つの遅延タスク処理プロセス＃１、及び他の複数のプロセス＃１，＃２…＃Ｎ（Ｎは自然数）を含むプログラムやデータが格納されている。メモリ装置２は、十分な機能及び容量があればランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリのような任意のタイプのものを使用することができる。また、メモリ装置２は、単一のメモリ装置で構成されている必要はなく、同種の複数のメモリ装置又はリードオンリーメモリ（ＲＯＭ）を含む異なる種類のメモリ装置の組み合せであってもよい。さらに、メモリ装置２以外にハードディスクドライブのような外部記憶装置を設け、コンピュータの動作に問題のない範囲で外部記憶装置に対してプログラムやデータを移動させてもよい。
【００２０】
遅延タスク処理プロセス＃１は遅延タスクのみを処理する専用のプロセスであり、機能的に見ると遅延タスク処理部を構成する。他のプロセス＃２, ＃３…＃Ｎは遅延タスク以外のプロセスを実行するための通常のプロセスであり、機能的に見ると通常プロセス処理部を構成する。遅延タスク処理プロセス＃１及び他のプロセス＃２，＃３…＃Ｎには、それぞれ優先度が付与されている。本実施形態では、プロセスの優先度を０，１，２，３…Ｒ…のように０及び自然数で表している。この数字の値が小さい程優先度が高いことを示している。ただし、優先度の表現はこれに限定されず、プロセス間の優先度を決定できればよい。遅延タスク処理プロセス＃１に付与される優先度は可変であり、後に詳述するように処理する遅延タスクに応じて変更される。一方、他のプロセス＃２，＃３…＃Ｎに付与されている優先度は固定であり、変更されない。図１では、例として、遅延タスク処理プロセス＃１以外のプロセスのうち、プロセス＃２の優先度を３、プロセス＃３の優先度を１としている。
【００２１】
遅延タスク処理プロセス＃１はキューイングテーブル２１を備えている。このキューイングテーブル２１には新たに遅延タスクが発生する度に、その遅延タスクを表す識別子が優先度と共に登録される。本実施形態では、遅延タスクの識別子としてＡ，Ｂ，Ｃ…のようにアルファベットを使用している。ただし、遅延タスクの識別子はこれに限定されず、個々の遅延タスクを識別可能なものであればよい。また、本実施形態では、遅延タスクの優先度を、前記遅延タスク処理プロセス＃１及び他のプロセス＃２，＃３…＃Ｎの優先度と同様に、０，１，２，３…のように０及び自然数で表しており、値が小さい程優先度が高いことを示している。遅延タスク処理プロセス＃１は、キューイングテーブル２１に登録された遅延タスクをその優先度の順に実行する。また、遅延タスク処理プロセス＃１自体の優先度は、キューイングテーブル２１に登録された遅延タスクの優先度のうち最も優先度が高いものに設定される。図１では、例として、キューイングテーブル２１に優先度４の遅延タスクＢと、優先度５の遅延タスクＣが登録されている。また、実行中のタスクは、最も優先度の高い遅延タスクＡ（優先度２）である。実行中の遅延タスクは処理が終了するまでキューイングテーブル２１から削除されないが、図１では実行中の遅タスクであることを明確にするために、実行中の遅延タスクＡをキューイングテーブル２１内の他の遅延タスクＢ，Ｃとは分離して図示している。さらに、図１では、遅延タスク処理プロセス＃１自体の優先度が、最も優先度が高い遅延タスクＡの優先度（優先度２）に設定されている。
【００２２】
ＯＳ１０はＣＰＵと協働して本スケジューリング方法を実現するために、割り込みハンドラ処理部１１、プロセススケジューリング部１２、遅延タスク登録処理部１３、遅延タスク優先度制御部１４、及びプロセス優先度制御部１５を備えている。これらの機能について説明すると、割り込みハンドラ処理部１１は、割り込み要求により発生した割り込みハンドラを処理する。次に、プロセススケジューリング部１２は、遅延タスク処理プロセス＃１及び他のプロセス＃２，＃３…＃Ｎのうち起動中のものをそれらに付与された優先度に基づいて順次実行させ、それによって複数のプロセスを時分割的に並列処理する。また、遅延タスク登録処理部１３は、遅延タスク処理プロセス＃１のキューイングテーブル２１に、新たに発生した遅延タスクの識別子を、その遅延タスクに付与されている優先度と共に登録する。さらに、遅延タスク優先度制御部１４は、キューイングテーブル２１に記録された遅延タスクのうち優先度が最高の遅延タスクを選択する。遅延タスク優先度制御部１４は、キューイングテーブル２１に登録された遅延タスクをそれらの優先度が高い順に並べ替えてもよい。さらにまた、プロセス優先度制御部１５は、遅延タスク優先度制御部１４によって選択された遅延タスクの優先度を、遅延タスク処理プロセス＃１自体の優先度に設定する。
【００２３】
次に、図２から図３のフローチャートを参照して本実施形態のマルチプロセススケジューリング装置の動作を説明する。これらのフローチャートで実現される機能は一つのプログラムとして実現することができる。また、そのようなプログラムをコンピュータ読み取り可能な記録媒体に記録してもよい。
【００２４】
図２のステップＳ２−１において、プロセススケジューリング部１２が優先度に基づいて、次に実行されるプロセスを選択する。詳細には、プロセススケジューリング部１２は、遅延タスク処理プロセス＃１及び他のプロセス＃２，＃３…＃Ｎのうち起動中のものの優先度を比較し、優先度が高いものから順に実行する。ステップＳ２−２では、ステップＳ２−２において選択された遅延タスク処理プロセス＃１又は他のプロセス＃２，＃３…＃Ｎのいずか一つが実行される。一つのプロセスの実行が終了すると、再びステップＳ２−１においてプロセススケジューリング部１２が次に実行されるプロセスを選択する。
【００２５】
図３は、プロセス＃２，＃３…＃Ｎの実行中に割り込み要求があった場合の処理を示している。割り込み要求があると、ステップＳ３−１において割り込みハンドラ処理部１１が割り込みハンドラのうち即時処理が必要なタスク（即時処理タスク）を実行する。次に、ステップＳ３−２において、割り込みハンドラに遅延タスクが含まれているか否かを割り込みハンドラ処理部１１が判断する。遅延タスクが含まれていない場合には、ステップＳ３−６において、実行中のプロセスに戻る。一方、遅延タスクが含まれている場合には、ステップＳ３−３において、遅延タスク登録処理部１３が、遅延タスクの識別子と優先度を、遅延タスク処理プロセス＃１のキューイングテーブル２１に登録する。次に、ステップＳ３−４において、遅延タスク優先度制御部１４がキューイングテーブル２１に登録された遅延タスクのうち優先度が最高である遅延タスクを選択する。続いて、ステップＳ３−５において、プロセス優先度制御部１５が、遅延タスク処理プロセス＃１の優先度を遅延タスク優先度制御部１４により選択された最高優先度の遅延タスクの優先度に設定する。遅延処理プロセス＃１の優先度の設定後、ステップＳ３−６において実行中のプロセスに戻る。
【００２６】
図４は、遅延タスク処理プロセス（図２のステップＳ２−２）の内容を示している。まず、ステップＳ４−１において、キューイングテーブル２１に登録された遅延タスクのうち最高優先度を有する遅延タスクの処理が開始される。次に、ステップＳ４−２において、新たに遅延タスクが発生したか否か、すなわち新たな割り込み処理要求がされ、かつその新たに要求された割り込み処理が遅延タスクを含むか否かが判断される。ステップＳ４−２において新たに遅延タスクが発生していなければ、ステップＳ４−３において現在処理中の遅延タスクが終了するまで、処理が継続される。次に、ステップＳ４−４において、遅延タスク登録処理部１３が処理の終了した遅延タスクをキューイングテーブル２１から削除する。また、ステップＳ４−５において、遅延タスク処理プロセス＃１の優先度が、キューイングテーブル２１内で最高優先度の遅延タスクの優先度に設定される。具体的には、遅延タスク優先度制御部１４がキューイングテーブル２１に登録された遅延タスクのうち優先度が最高である遅延タスクを選択し、プロセス優先度制御部１５が選択された遅延タスクの優先度を遅延タスク処理プロセス＃１の優先度に設定する。
【００２７】
一方、ステップＳ４−２において、新たに遅延タスクが発生した場合には、まずステップＳ４−６において遅延タスク登録処理部１３が新たに発生した遅延タスクの識別子をその優先度と共にキューイングテーブル２１に登録する。次に、ステップＳ４−７において、遅延タスク優先度制御部１４が、新たに発生した遅延の優先度がキューイングテーブル２１内及び現在処理中の遅延タスクの優先度より高いか否かを判断する。ステップＳ４−７において、新たな遅延タスクの優先度がキューイングテーブル２１内及び現在処理中の遅延タスクより高くない場合には、ステップＳ４−２に戻る。一方、ステップＳ４−７において、新たな遅延タスクの優先度がキューイングテーブル２１内及び現在処理中の遅延タスクより高い場合には、ステップＳ４−８においてプロセス優先度制御部１５が、遅延タスク処理プロセス＃１の優先度を新たに発生した遅延タスクの優先度に変更する。
【００２８】
次に、図５及び図６を参照して、本実施形態によるマルチプロセススケジューリングの簡略化された例を説明する。これらの図５及び図６において、太実線はそのプロセスがＣＰＵ１を確保して実行されている状態であることを示している。また、白抜きの太線はＯＳ１０の処理がＣＰＵ１により実行されていることを示している。図５は遅延タスク処理プロセス＃１以外のプロセス＃２，＃３…＃Ｎの実行中に割り込み要求があった場合の一例を示し、図６は遅延タスク処理プロセス＃１の実行中に割り込み要求があった場合の一例を示している。
【００２９】
図５を参照すると、時刻ｔ０の時点で、遅延タスク処理プロセス＃１のキューイングテーブル２１には優先度４の遅延タスクＢと優先度５の遅延タスクＣが登録されており、遅延タスク処理プロセス＃１の優先度は４に設定されている。また、優先度３のプロセス＃２と優先度１のプロセス＃３が起動している。
【００３０】
プロセス＃３を実行中の時刻ｔ１に割り込み要求が発生し、割り込みハンドラ処理部１１によって割り込みハンドラ１００が実行される（時刻ｔ１から時刻ｔ２：ステップＳ３−１〜Ｓ３−６）。割り込みハンドラ１００のうち１００ａで示す部分は即時実行タスクである（ステップＳ３−１）。割り込みハンドラ１００のうち１００ｂで示す部分では、遅延タスク登録制御部１３が新たに発生した遅延タスクＡ（優先度２）をキューイングテーブル２１に録する（ステップＳ３−３）。また、新たに発生した遅延タスクＡの優先度は、既に登録されていた遅延タスクＢ，Ｃの優先度よりも高いので、遅延タスク優先度制御部１４及びプロセス優先度制御部１５によって遅延タスク処理プロセス＃１の優先度が遅延タスクＡの優先度である２に設定される（ステップＳ３−４，Ｓ３−５）。割り込みハンドラの終了後、プロセス＃３の処理が再開される（時刻ｔ２から時刻ｔ３：ステップＳ３−６）。
【００３１】
プロセス＃３の処理がすべて終了すると、プロセススケジューリング部１２が次に実行するプロセスを選択する（時刻ｔ３から時刻ｔ４：ステップＳ２−１，２−２）。遅延処理タスク処理プロセス＃１の優先度（優先度２）とプロセス＃２の優先度（優先度３）が比較され、優先度の高い遅延タスク処理プロセス＃１が選択される。
【００３２】
遅延タスク処理プロセス＃１がキューイングテーブル２１内で最も優先度の高い遅延タスクＡの処理を実行する（時刻ｔ４から時刻ｔ５：ステップＳ４−１）。新たな遅延タスクが発生せず（ステップＳ４−２）、時刻ｔ５に遅延タスクＡの処理が終了すると（ステップＳ４−３）、遅延タスク処理プロセス＃１はＯＳ１０に処理終了を通知する。この通知を受けたＯＳ１０の遅延タスク登録処理部１３は処理が終了した遅延タスクＡをキューイングテーブル２１から除去する（ステップＳ４−４）。また、それに続いて遅延タスク優先度制御部１４及びプロセス優先度制御部１５により、遅延処理タスク処理プロセス＃１の優先度がキューイングテーブル２１内で最も優先度が高い遅延タスクＢの優先度（優先度４）に設定される（時刻ｔ５からｔ６：ステップＳ４−５）。
【００３３】
以上のように遅延タスク処理プロセス＃１による一つの遅延タスクの処理と、それに伴う遅延タスク処理プロセス＃１の優先度の変更が終了すると、プロセススケジューリング部１２が次に実行するプロセスを選択する（時刻ｔ６からｔ７）。遅延タスク処理プロセス＃１の優先度（優先度４）とプロセス＃２の優先度（優先度３）が比較され、優先度の高いプロセス＃２が選択される。
【００３４】
プロセス＃２が実行された後（時刻ｔ７からｔ８）、プロセススケジューリング部１２が次に実行するプロセスを選択し（時刻ｔ８からｔ９）、最も優先度が低くいために未処理で残されている遅延タスク処理プロセス＃１が選択される。このときの遅延タスク処理プロセス＃１では、キューイングテーブル２１内で最も優先度が高い遅延タスクＢ（優先度４）が実行される。
【００３５】
以上のように、優先度２の遅延タスクＡの処理が実行され（時刻ｔ４からｔ５）、次に優先度３のプロセス＃２が実行され（時刻ｔ７からｔ８）、その後に優先度４の遅延タスクＢが実行されている。従って、本実施形態のマルチプロセススケジューリングでは、遅延タスクとプロセスが優先度に応じて効率的かつ適切にスケジューリングされている。
【００３６】
次に、図６を参照すると、時刻ｔ０の時点では、遅延タスク処理プロセス＃１のキューイングテーブル２１に、優先度２の遅延タスクＡ、優先度４の遅延タスクＢ、及び優先度５の遅延タスクＣが登録され、かつ最も優先度が高い遅延タスクＡを実行中である。また、時刻ｔ０の時点の遅延タスク処理プロセス＃１は遅延タスクＡと同一の優先度２に設定されている。
【００３７】
遅延タスク処理プロセス＃１を実行中の時刻ｔ１１に割り込み要求が発生し、割り込みハンドラ１００が実行される（時刻ｔ１１から時刻ｔ１２：ステップＳ３−１〜ｓ３−６）。即時実行タスクの処理がなされた後（部分１００ａ：ステップＳ３−１）、遅延タスク登録処理部１３が新たに発生した遅延タスクＤ（優先度０）をキューイングテーブル２１へ登録すると共に（ステップＳ３−２，Ｓ３−３，Ｓ４−６）、遅延タスク優先度制御部１４及びプロセス優先度制御部１５が遅延タスク処理プロセス＃１の優先度を遅延タスクＤの優先度である０に設定する（ステップＳ３−４，Ｓ３−５，Ｓ４−７，Ｓ４−８）。割り込みハンドラの終了後、遅延タスク処理プロセス＃１での遅延タスクＡの処理が再開される（時刻ｔ１２から時刻ｔ１３：ステップＳ３−６）。
【００３８】
時刻ｔ１３に遅延タスクＡの処理が終了すると、遅延タスク登録処理部１３は処理が終了した遅延タスクＡをキューイングテーブル２１から除去する（時刻ｔ１３からｔ１４）。しかし、遅延タスク処理プロセス＃１の優先度は既に優先度０に設定されているので、変更されない（ステップＳ４−２〜Ｓ４−５）。
【００３９】
続いて、プロセススケジューリング部１２が次に実行するプロセスを選択する（時刻ｔ１４からｔ１５：ステップＳ２−１，Ｓ２−２）。遅延処理タスク処理プロセス＃１の優先度（優先度０）とプロセス＃２，＃３の優先度（優先度３，１）が比較され、最も優先度の高い遅延タスク処理プロセス＃１が選択される。遅延タスク処理プロセス＃１はキューイングテーブル２１内で最も優先度の高い遅延タスクＤの処理を実行する（ステップＳ４−１）。新たな遅延タスクが発生せず、時刻ｔ１６に遅延タスクＤの処理が終了すると、遅延タスク登録処理部１３は処理が終了した遅延タスクＤをキューイングテーブル２１から除去し、遅延処理タスク処理プロセス＃１の優先度をキューイングテーブル２１内で最も優先度が高い遅延タスクＢの優先度（優先度４）に設定する（時刻ｔ１６からｔ１７：ステップＳ４−２〜Ｓ４−５）。
【００４０】
続いて、プロセススケジューリング部１２が次に実行するプロセスを選択し、プロセス＃２，＃３（優先度３，１）のうち、優先度が高いプロセス＃３が選択される。プロセス＃３の実行後（時刻ｔ１８からｔ１９）、次のプロセスとして未処理で残されているプロセス＃２が選択される。
【００４１】
この図６の例でも、優先度０の遅延タスクＤの処理が実行され（時刻ｔ１５からｔ１６）、次に優先度１のプロセス＃３が実行され（時刻ｔ１６からｔ１８）、その後に優先度３のプロセス＃２が実行されており、遅延タスクとプロセスが優先度に応じて効率的かつ適切にスケジューリングされている。
【００４２】
本実施形態のマルチプロセススケジューリングでは、一つの遅延タスク処理プロセス＃１のみが遅延タスクの処理を実行するので、遅延タスクを処理するためにプロセスの生成と消滅を短期間で繰り返す必要がなく、スケジューリングに要する時間やメモリの消費の点で大きな負担とならない。
【００４３】
プロセスと遅延タスクのスケジューリングでは、優先度が高いプロセスが優先度の低いプロセスよりも後に処理される現象（優先度の逆転）の発生を防止する必要がある。本実施形態では、優先度の逆転現象の発生を防止するために、遅延タスク登録処理部１３によってキューイングテーブル２１に新たな遅延タスクが登録されると、その登録と実質的に同じタイミングでプロセス優先度設定部１５による遅延タスク処理プロセス＃１の優先度の変更を行っている。具体的には、割り込み要求によって新たな遅延タスクが発生すると、割り込みの時点で実行中のプロセス又は遅延タスクの実行中が終了するまで、又は割り込みの時点で実行中のプロセス又は遅延タスクが終了した後次のプロセス又は遅延タスクが開始されるまでに、遅延タスク処理プロセス＃１の優先度の変更を行っている（図３のステップＳ３−３からＳ３−５、図４のステップＳ４−５，Ｓ４−８、図５の時刻ｔ１からｔ２、並びに図６の時刻ｔ１１からｔ１２参照）。換言すれば、本実施形態では、新たな遅延タスクが発生した時に実行中のプロセス（通常のプロセス又は遅延タスク）に続く次のプロセス（通常のプロセス又は遅延タスク）が開始される前に、遅延タスク処理プロセス＃１自体の優先度の設定を行っている。
【００４４】
図７は遅延タスク処理プロセスの他の例を示している。この例では、遅延タスクの処理中により優先度が高い遅延タスクが発生した場合、処理中の遅延タスクを即時に中断し、新たに発生した優先度の高い遅延タスクの処理を行う。ただし、処理中の遅延タスクが中断可能でない場合もあるので、この場合にはその遅延タスクの処理を続行する。例えば、処理中の遅延タスクがデータの書き換えであり、中断するとデータの不整合を生じるような場合には、処理中の遅延タスクを中断することができない。図７のステップＳ７−１からステップＳ７−８は、図４のステップＳ４−１からステップＳ４−８と同一である。ステップＳ７−７で新たに発生した遅延タスクがキューイングテーブル２１内及び現在処理中の遅延タスクよりも優先度が高い場合、ステップＳ７−８で遅延タスク処理プロセスの優先度を新たに発生した遅延タスクの優先度に設定する。次に、ステップＳ７−９で現在処理中の遅延タスクが中断可能であれば、ステップＳ７−１に戻り、キューイングテーブル２１内で最高優先度の遅延タスクの処理を開始する。ステップＳ７−６で登録された新たに発生した遅延タスクはキューイングテーブル２１内で最高の優先度を有するので、ステップＳ７−１では処理中の遅延タスクが中断されて新たに発生した遅延タスクの処理が開始される。一方、ステップＳ７−９で処理中の遅延タスクが中断可能でない場合には、ステップＳ７−２に戻り、遅延タスクの処理を続行する。
【００４５】
図８は遅延タスク実行処理のさらに他の例を示している。この例では遅延タスクの処理中に新たに遅延タスクが発生した場合、キューイングテーブル２１への登録のみを行い、遅延タスク処理プロセスの優先度の変更は処理中の遅延タスクの終了後に行う。図８においてステップＳ８−１からステップＳ８−５は図４のステップＳ４−１からステップＳ４−５と同一である。ステップＳ８−２で新たに遅延タスクが発生すると、ステップＳ８−６においてその新たに発生した遅延タスクをキューイングテーブル２１へ登録する。その後、ステップＳ８−２に戻り、遅延タスクの処理を続行する。
【００４６】
前記実施形態では、キューイングテーブル２１への遅延タスクの登録及び削除、並びに遅延タスク処理プロセスの優先度をすべてＯＳ１０が行っている。しかし、遅延タスク処理プロセス＃１自体が一部の処理を行ってもよい。図９は終了した遅延タスクの削除と遅延タスク処理プロセス＃１の優先度の変更を、遅延タスク処理プロセス＃１自体が行う例を示している。図９において、時刻ｔ０から時刻ｔ５及び時刻ｔ６から時刻ｔ９までの処理は図５と同一である。時刻ｔ５に遅延タスクＡの処理が終了すると、遅延タスク処理プロセス＃１は遅延タスクＡをキューイングテーブル２１から除去する。また、遅延タスク処理プロセス＃１は、それ自体の優先度をキューイングテーブル２１内で最高の優先度を有する遅延タスクＢの優先度である４に変更する。
【００４７】
本発明は、前記実施形態に限定されず、種々の変形が可能である。例えば、比較的少数であれば２個以上の遅延タスク処理プロセスを設け、これらを同時に起動してもよい。
【００４８】
また、遅延タスクは前記実施形態のように割り込みハンドラの遅延して処理される部分に限定されず、プロセスとは別の形態で処理される任意の処理であってもよい。例えば、プロセスからの要求を受けたＯＳが、その要求に対する処理の一部を遅延タスクとする場合にも本発明を適用することができる。具体的には、プロセスがＯＳに対してネットワークを介したデータ送信を要求し、ＯＳがこのデータ送信を即時処理する必要がないと判断して遅延タスクとして処理する場合がある。この場合、図５及び図６において、割り込み処理発生の代わりにプロセスからＯＳ１０にデータ送信の要求がなされる。
【００４９】
本発明はコンピュータのスケジューリングに関するので、コンピュータを用いる任意の分野に応用することができる。例えば、各種の家電機器、携帯電話などの通信機器、あるいは産業機器などに本発明を適用することができる。
【図面の簡単な説明】
【００５０】
【図１】本発明の実施形態にかかるプロセススケジューリング装置を構成する計算機装置の概略構成図である。
【図２】プロセススケジューリング部１２の動作を説明するためのフローチャートである。
【図３】割り込み要求の処理を説明するためのフローチャートである。
【図４】遅延タスク処理プロセスを説明するためのフローチャートである。
【図５】本発明の実施形態にかかるプロセススケジューリングの一例を示すタイムチャートである。
【図６】本発明の実施形態にかかるプロセススケジューリングの他の一例を示すタイムチャートである。
【図７】遅延タスク処理プロセスの他の一例を説明するためのフローチャートである。
【図８】遅延タスク処理プロセスのさらに他の一例を説明するためのフローチャートである。
【図９】本発明によるプロセススケジューリングの他の一例を説明するためのタイムチャートである。
【符号の説明】
【００５１】
１  中央演算処理装置（ＣＰＵ）
２  メモリ装置
１０  オペレーティングシステム（ＯＳ）
１１  割り込みハンドラ処理部
１２  プロセススケジューリング部
１３  遅延タスク登録処理部
１４  遅延タスク優先度制御部
１５  プロセス優先度制御部
２１  キューイングテーブル
＃１  遅延タスク処理プロセス（遅延タスク処理部）
＃２，＃３  プロセス（通常プロセス処理部）
【図１】
2004234643.tif 000003
【図２】
2004234643.tif 000004
【図３】
2004234643.tif 000005
【図４】
2004234643.tif 000006
【図５】
2004234643.tif 000007
【図６】
2004234643.tif 000008
【図７】
2004234643.tif 000009
【図８】
2004234643.tif 000010
【図９】
2004234643.tif 000011