(57)【要約】【課題】本発明は割込みスケジューリング方法に関する。【解決手段】本発明による割込みスケジューリング方法は、割込み発生時、ウェイクアップされるターゲットプロセスを実行可能待ち行列に進入させないで、ウェイクアップされたターゲットプロセスと割込み発生以前に行った現在プロセスとの優先順位を直接比較して、その比較結果によって再スケジューリングを設定する段階及び再スケジューリングが設定されたか否かによって現在プロセスからターゲットプロセスへ直接コンテキストスイッチングをする段階を含む。本発明の割込みスケジューリング方法によれば、ウェイクアップされたターゲットプロセスを実行可能待ち行列に進入させる過程と、実行可能待ち行列で優先順位が一番高いプロセスを選択する過程を省略することにより、コンピュータシステムのオペレーティングシステムで割込みによって発生される先取り延期時間を最小化させることができる。【選択図】図３
2009282987.tif 000002
【特許請求の範囲】
【請求項１】
割込み発生時、ウェイクアップされるターゲットプロセスを実行可能待ち行列(ready queue)に進入させないで、前記ウェイクアップされたターゲットプロセスと前記割込み発生以前に実行されていた現在プロセスとの優先順位を直接比較して、その比較結果によって再スケジューリングを設定する段階と、
前記再スケジューリングが設定されたか否かによって、前記現在プロセスから前記ターゲットプロセスへ直接コンテキストスイッチング(ｃｏｎｔｅｘｔ  ｓｗｉｔｃｈｉｎｇ)をする段階と、
を含む割込みスケジューリング方法。      
【請求項２】
前記コンテキストスイッチングをする段階以後、
前記現在プロセスが実行可能待ち行列に進入されたか否かを判別する段階と、
前記現在プロセスが実行可能待ち行列に進入されている場合、オペレーティングシステムスケジューラーを実行させ、前記現在プロセスが前記実行可能待ち行列に進入されていない場合、前記現在プロセスを前記実行可能待ち行列に進入させた後、前記オペレーティングシステムスケジューラーを実行させる段階と、
をさらに含む請求項１に記載の割込みスケジューリング方法。
【請求項３】
前記再スケジューリングを設定する段階は、
前記ターゲットプロセスがウェイクアップされたか否かを判別する段階と、
前記ターゲットプロセスがウェイクアップされた場合、前記ウェイクアップされたターゲットプロセスの優先順位と前記現在プロセスの優先順位とを直接比較する段階と、
前記ターゲットプロセスの優先順位が前記現在プロセスの優先順位より高い場合、前記再スケジューリングを設定した後、割込みハンドラの実行を終了して、前記ターゲットプロセスの優先順位が前記現在プロセスの優先順位より低い場合、前記ターゲットプロセスを前記実行可能待ち行列に進入させた後、前記割込みハンドラの実行をに終了する段階と、
を含む請求項１に記載の割込みスケジューリング方法。
【請求項４】
前記コンテキストスイッチングをする段階は、
前記再スケジューリングが設定されたか否かを判別する段階と、
前記再スケジューリングが設定された場合、前記現在プロセスから前記ターゲットプロセスへ直接コンテキストスイッチングをし、前記再スケジューリングが設定されていない場合、前記現在プロセスの演算を継続して進行する段階と、
を含む請求項１に記載の割込みスケジューリング方法。
【請求項５】
割込み発生時、ウェイクアップされるターゲットプロセスを実行可能待ち行列(ready queue)に進入させないで、前記ウェイクアップされたターゲットプロセスと前記割込み発生以前に実行していた現在プロセスとの優先順位を直接比較する段階と、
前記ターゲットプロセスの優先順位が前記現在プロセスの優先順位より高い場合、前記現在プロセスから前記ターゲットプロセスへ直接コンテキストスイッチング(context switching)して、前記ターゲットプロセスの優先順位が前記現在プロセスの優先順位より低い場合、前記現在プロセスを実行する段階と、
を含む割り込みスケジューリング方法。
【請求項６】
前記コンテキストスイッチングをする場合,
前記現在プロセスが実行可能待ち行列に進入されたのか否かを判別する段階と、
前記現在プロセスが実行可能待ち行列に進入されている場合、オペレーティングシステムスケジューラーを実行させて、前記現在プロセスが前記実行可能待ち行列に進入されていない場合、前記現在プロセスを前記実行可能待ち行列に進入させた後、前記オペレーティングシステムスケジューラーを実行させる段階と、
をさらに含む請求項５に記載の割込みスケジューリング方法。
【請求項７】
前記ターゲットプロセスの優先順位が前記現在プロセスの優先順位より低い場合、
前記ターゲットプロセスを前記実行可能待ち行列に進入させる段階と、
割込みハンドラの実行を終了して、前記現在プロセスの演算を進行する段階と、
を含む請求項５に記載の割込みスケジューリング方法。
【請求項８】
請求項１乃至４の何れかの割込みスケジューリング方法を実行するためのプログラムが記録されたコンピュータで読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、割込みスケジューリング方法に関する。
【背景技術】
【０００２】
一般的に、コンピュータシステムのオペレーティングシステムで割込みが発生した時、割込みを処理するために呼出される割込みハンドラ関数は、割込み発生時、実行中であったプロセスのコンテキスト(Ｃｏｎｔｅｘｔ)で実行される。割込みハンドラ関数は、場合によって、当該の割込みを待っていたターゲットプロセスをウェイクアップ(ｗａｋｅ−ｕｐ)するルーチン(ｒｏｕｔｉｎｅ)を含むことができる。割込みハンドラ関数によってウェイクアップされたターゲットプロセスは、オペレーティングシステムスケジューラーによって選択されて、直ちに実行されるように実行可能待ち行列(Ｒｅａｄｙ  ｑｕｅｕｅ)に進入するようになる。オペレーティングシステムスケジューラーは、割込みハンドラ関数が終わった後、実行可能待ち行列にある一連のプロセスの中、優先順位が一番高いプロセスを選択して実行させる。この時、割込み発生以前に実行中であったプロセスの優先順位が一番高い場合、カーネルはプリエンプション(先取り)しない。しかし、ターゲットプロセスが割込みハンドラ関数によってウェイクアップされる場合、割込み発生以前に実行中であったプロセスはターゲットプロセスにより先取りされる。
【０００３】
以下では、添付された図を参照しながら、従来の割込みスケジューリング方法について説明する。
【０００４】
図１は、従来の割込みスケジューリング方法を概略的に示した流れ図である。
図１を参照すれば、従来の割込みスケジューリング方法は、先にコンピュータオペレーティングシステムで割込みが発生されれば(１０１)、現在実行中のプロセスの実行をしばらく中断させて、現在実行中のプロセスのコンテキストで割込みハンドラ関数の実行が始まる(１０３)。
【０００５】
以後、割込みハンドラ関数は当該の割込みを待ちながら、スリップ(Ｓｌｅｅｐ)状態にあるターゲットプロセスをウェイクアップする(１０５)。
以後、ターゲットプロセスはいつでもオペレーティングシステムスケジューラーによって選択されて直ちに実行されるように、実行可能待ち行列に進入してスケジューラーが選択するのを待つようになる(１０７)。
【０００６】
以後、カーネル(ｋｅｒｎｅｌ)はターゲットプロセスの優先順位が現在実行中のプロセスの優先順位より高いかどうかチェックする。ターゲットプロセスの優先順位が現在実行中のプロセスの優先順位より高い場合、再スケジューリングを設定して以後にオペレーティングシステムスケジューラー関数が呼出されることができるようにする(１１１)。再スケジューリングが設定された後、割込みハンドラ関数の実行が終わる(１１３)。一方、現在実行中のプロセスの優先順位がターゲットプロセスの優先順位より高い場合、割込みハンドラ関数の実行が直ちに終わる(１１３)。
【０００７】
割込みハンドラ関数の実行を終了(１１３)した後、再スケジューリングが設定されたか否かを判別する(１１５)。ここで、再スケジューリングが設定(１１１)された場合、再スケジューリングが必要なので、オペレーティングシステムスケジューラー関数を呼び出して実行可能待ち行列で優先順位が一番高いプロセスを選択する(１１７)。この時、実行可能待ち行列にあるプロセスの中、優先順位が一番高いターゲットプロセスが選択されることができる。その後、オペレーティングシステムスケジューラー関数は、現在実行中のプロセスからターゲットプロセスへコンテキストスイッチングを実行する(１１９)。一方、再スケジューリングが設定されていない場合、現在実行中のプロセスは割込み発生以前に実行した演算を継続して進行するようになる(１２１)。
【０００８】
したがって、従来の割込みスケジューリング方法は、ターゲットプロセスがウェイクアップされる時点からターゲットプロセスと現在実行中のプロセスとの優先順位を比べる過程までの大部分の場合、ターゲットプロセスが実行可能待ち行列に進んだ後にオペレーティングシステムスケジューラーによって、次に実行されるプロセスとして選択されて現在実行中のプロセスを先取りするようになる。すなわち、ターゲットプロセスが現在実行中のプロセスを先取りすることが明らかである場合、ウェイクアップされたターゲットプロセスを実行可能待ち行列に進入させてターゲットプロセスを処理するためのオペレーティングシステムスケジューラーの呼出過程さえ不必要になることを分かる。よって、従来の割込みスケジューリング方法は割込みの発生時点からターゲットプロセスの実行までの先取り延期時間を不必要に必要とする問題点を持つ。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
このような問題点を解決するための本発明は、割込みの発生時点からターゲットプロセスの実行を始めるまでの先取り遅延時間を最小化させる割込みスケジューリング方法を提供することを目的とする。
また、本発明による割込みスケジューリング方法を実行するためのプログラムが記録された、コンピュータで読み取り可能な記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明による割込みスケジューリング方法は、割込み発生時、ウェイクアップされるターゲットプロセスを実行可能待ち行列に進入させないで、ウェイクアップされたターゲットプロセスと割込み発生以前に実行されていた現在プロセスとの優先順位を直接比較して、その比較結果によって再スケジューリングを設定する段階及び再スケジューリング設定されたか否かによって現在プロセスからターゲットプロセスへ直接コンテキストスイッチングをする段階を含む。
【００１１】
コンテキストスイッチングをする段階以後、現在プロセスが実行可能待ち行列に進入されたか否かを判別する段階、及び現在プロセスが実行可能待ち行列に進入されている場合、オペレーティングシステムスケジューラーを実行させて、現在プロセスが実行可能待ち行列に進入されていない場合、現在プロセスを実行可能待ち行列に進入させた後、オペレーティングシステムスケジューラーを実行させる段階をさらに含むのが好ましい。
【００１２】
再スケジューリングを設定する段階は、ターゲットプロセスがウェイクアップされたか否かを判別する段階、ターゲットプロセスがウェイクアップされた場合、ウェイクアップされたタケップロセスの優先順位と現在プロセスの優先順位とを直接比較する段階、及びターゲットプロセスの優先順位が現在プロセスの優先順位より高い場合、再スケジューリングを設定した後、割込みハンドラの実行を終了し、ターゲットプロセスの優先順位が現在プロセスの優先順位より低い場合、ターゲットプロセを実行可能待ち行列に進入させた後、割込みハンドラの実行を終了する段階を含むのが好ましい。
【００１３】
コンテキストスイッチングをする段階は、再スケジューリングが設定されたか否かを判別する段階、及び再スケジューリングが設定された場合、現在プロセスからターゲットプロセスへ直接コンテキストスイッチングをし、再スケジューリングが設定されていない場合、現在プロセスの演算を進行する段階を含むのが好ましい。
【００１４】
本発明による割込みスケジューリングの方法は、割込み発生時、ウェイクアップされるターゲットプロセスの実行可能待ち行列に進入させず、ウェイクアップされたターゲットプロセスと割込み発生以前に実行していた現在プロセスとの優先順位を直接比較する段階、及びターゲットプロセスの優先順位が現在プロセスの優先順位より高い場合、現在プロセスからターゲットプロセスへ直接コンテキストスイッチングをして、ターゲットプロセスの優先順位が現在プロセスの優先順位より低い場合、現在プロセスを実行する段階を含む。
【００１５】
コンテキストスイッチングをする場合、現在プロセスが実行可能待ち行列に進入されたか否かを判別する段階、及び現在プロセスが実行可能待ち行列に進入されている場合、オペレーティングシステムスケジューラーを実行させて、現在プロセスが実行可能待ち行列に進入されていない場合、現在プロセスを実行可能待ち行列に進入させた後、オペレーティングシステムスケジューラーを実行させる段階をさらに含むのが好ましい。
【００１６】
ターゲットプロセスの優先順位が現在プロセスの優先順位より低い場合、ターゲットプロセスを実行可能待ち行列に進入させる段階、及び割込みハンドラの実行を終了して、現在プロセスの演算を進行する段階を含むのが好ましい。
【００１７】
本発明による割込みスケジューリング方法を実行するためのプログラムが記録された、コンピュータで読み取り可能な記録媒体を含むのが好ましい。
【発明の効果】
【００１８】
本発明の割込みスケジューリング方法によれば、ウェイクアップされたターゲットプロセスを実行可能待ち行列に進入させる過程と、実行可能待ち行列で優先順位が一番高いプロセスを選択する過程を省略することによって、コンピュータシステムのオペレーティングシステムで割込みにより発生される先取り延期時間を最小化させることができる。
【図面の簡単な説明】
【００１９】
【図１】従来の割込みスケジューリング方法を示す流れ図である。
【図２】本発明の一実施例による割込みスケジューリング方法を概略示す図である。
【図３】本発明の第一実施例による割込みスケジューリング方法を具体的に示す図である。
【図４】本発明の第一実施例による割込みスケジューリング方法を具体的に示す図である。
【図５】本発明の第２実施例による割込みスケジューリング方法を概略示す図である。
【図６】本発明の第２実施例による割込みスケジューリング方法を具体的に示す図である。
【発明を実施するための形態】
【００２０】
以下には、添付された図を参照しながら、本発明の好ましい第一実施例による割込みスケジューリング方法について説明する。なお、以降で述べる割込みハンドラ（又は、割込みハンドラ関数）およびオペレーティングスケジューラー（又は、オペレーティングスケジューラー関数）は、コンピュータのオペレーティングシステム上で実行するサブルーチンであり、これらの実質的な処理は、コンピュータの演算処理ユニットが行う。また、以降で述べるカーネルの処理も、コンピュータの演算処理ユニットを用いて実質的に実行される。
【実施例】
【００２１】
図２は、本発明の第一実施例による割込みスケジューリング方法を概略的に示した図である。
【００２２】
図２を参照すれば、本発明の第一実施例による割込みスケジューリング方法は、コンピュータシステムオペレーティングシステムで割込み発生時、ウェイクアップされるターゲットプロセスと割込み発生以前に行った現在のプロセスとの優先順位を直接比較して、その比較結果によって再スケジューリングを設定する段階(Ｓ２１)、再スケジューリング設定されたか否かによって、現在プロセスからターゲットプロセスへ直接コンテキストスイッチングをする段階(Ｓ２２)を含む。
【００２３】
図３は、図２で示された割込みスケジューリング方法をさらに具体的に示した図である。
図３を参照すれば、先ず、コンピュータシステムのオペレーティングシステムで割込みが発生(３００)すると、現在実行中のプロセスの実行がしばらく中断され、現在プロセスのコンテキストで割込みハンドラ関数による実行が始まる(３０１)。この時、割込みハンドラ関数は当該割込みを待ちながらスリープ(Ｓleep)状態にあるターゲットプロセスをウェイクアップする。
【００２４】
次に、割込みハンドラ関数によってターゲットプロセスがウェイクアップされたかを判別する(３０３)。ターゲットプロセスがウェイクアップされた場合、ターゲットプロセスの優先順位と現在プロセスの優先順位とのうち、どのプロセスの優先順位が高いのかを比較する(３０５)。この時、ターゲットプロセスを実行可能待ち行列に進入させる過程無しで、ウェイクアップされたターゲットプロセスと現在プロセスとの優先順位を直接比較する。
【００２５】
比較結果、ターゲットプロセスの優先順位が現在プロセスの優先順位より高い場合、割込みハンドラの終了後、再スケジューリングをしなければならなくなること意味するので、再スケジューリングを設定する(３０７)。再スケジューリングを設定(３０７)した後、割込みハンドラ関数の実行が終わる(３０９)。
一方、ターゲットプロセスの優先順位が実行中のプロセスの優先順位より低い場合、ターゲットプロセスは実行可能待ち行列に進入して、以後、割込みハンドラ関数の実行が終わる(３０９)。
【００２６】
図１に示した既存の割込みスケジューリング方法と比較して見ると、本発明による割込みスケジューリング方法は、割込み発生段階(３００)から再スケジューリングが設定される段階(３０７)までの過程において、割込みハンドラ関数によってウェイクアップされたターゲットプロセスが実行可能待ち行列に進入される過程が省略される。ターゲットプロセスの優先順位が実行可能待ち行列にある現在プロセスの優先順位より高い場合、ターゲットプロセスが先取りされることは明らかである。これによって、ターゲットプロセスの実行が終了されるとき、実行可能待ち行列からスリープ待ち行列(ｓｌｅｅｐ  ｑｕｅｕｅ)に移動される。したがって、ターゲットプロセスが実行可能待ち行列に進む必要がなくなる。
【００２７】
次に、割込みハンドラ関数の実行終了(３０９)以後、カーネルは再スケジューリングが設定されたかをチェックする(３１１)。再スケジューリングが設定された場合、オペレーティングシステムスケジューラー関数を実行して、実行可能待ち行列にあるプロセスのうち、優先順位が一番高いプロセスを選択して、現在プロセスで選択されたプロセスへコンテキストスイッチングを実施するのではなく、オペレ-ションシステムスケジューラーにより実行可能待ち行列で優先順位が一番高いプロセスを選択する過程なしで、現在プロセスからターゲットプロセスへコンテキストスイッチングを直ちに実行する(３１３)。一方、再スケジューリングの設定がされてない場合、現在実行中のプロセスのコンテキストがそのまま維持され、割込み発生以前に実行しているプロセスの演算は継続して進行する(３０５)。
【００２８】
図１に示した既存の割込みスケジューリング方法と比較して見ると、本発明による割込みスケジューリング方法において、割込み発生によりウェイクアップされたターゲットプロセスが割込み発生以前に実行中であった現在プロセスを先取りして実行される場合、割込みハンドラ実行が終わる段階(３０９)からターゲットプロセスへコンテキストスイッチングされる段階(３１３)までの間において、オペレーティングシステムスケジューラー関数によって実行可能待ち行列で優先順位が一番高いプロセスを選択する過程とオペレ-ションシステムスケジューラー関数を呼び出して実行可能待ち行列から優先順位が一番高いプロセスを選択する過程が省略される。
【００２９】
次に、現在プロセスからターゲットプロセスへコンテキストスイッチングが実行(３１３)された後、図４に示したように、オペレーティングシステムスケジューラーの実行が始まる場合(４００)、現在プロセスが実行可能待ち行列に進入されていない状態で先取りされてしまうと、問題が発生するおそれがある。したがって、実質的なスケジューラー関数の演算が実行される以前に、現在プロセスが実行可能待ち行列に進入されているかを確認する(４０１)。この時、現在プロセスが実行可能待ち行列に進入されていない場合、現在プロセスを実行可能待ち行列に進入させた後、オペレーティングシステムスケジューラーの実質的な演算が継続して実行されるようにする(４０５)。また、現在プロセスが実行可能待ち行列に進入されている場合、オペレーティングシステムスケジューラーの演算が直ちに実行されるようにする(４０５)。
【００３０】
本発明の割込みスケジューリング方法によれば、割込み発生段階とターゲットプロセスへのコンテキストスイッチング段階との間において、ウェイクアップされたターゲットプロセスを実行可能待ち行列に進入させる過程と、実行可能待ち行列で優先順位が一番高いプロセスを選択する過程を省略することで、割込みによって発生する先取り延期時間を最小化させることができる。
すなわち、ターゲットプロセスが現在プロセスの優先順位より高い場合、既存のターゲットプロセスの先取り過程の中、論理的に不必要な過程であるターゲットプロセスの実行可能待ち行列への進入を遅延させることで、ターゲットプロセスの先取り延期時間を減らすことができる。また、ターゲットプロセスが現在プロセスの優先順位より低い場合、すなわち直ちに先取りしなければならないプロセスが無い場合、既存の方法によって実行することでオペレーティングシステムをそのまま実行させることができる。
【００３１】
以下、添付された図を参照しながら本発明の好ましい第２実施例による割込みスケジューリング方法について説明する。
【００３２】
図５は、本発明の第２実施例による割込みスケジューリング方法を概略に示した図である。
【００３３】
図５を参照すると、本発明による割込みスケジューリング方法は、割込み発生時、ウェイクアップされるターゲットプロセスを実行可能待ち行列に進入させないで、ウェイクアップされたターゲットプロセスと割込み発生以前に実行していた現在プロセスとの優先順位を直接比較する段階(Ｓ５１)、及びターゲットプロセスの優先順位が現在プロセスの優先順位より高い場合、現在プロセスからターゲットプロセスへ直接コンテキストスイッチングをして、ターゲットプロセスの優先順位が現在プロセスの優先順位より低い場合、現在プロセスを実行する段階(Ｓ５２)を含む。
【００３４】
図６は、本発明の第２実施例による割込みスケジューリング方法をより詳しく説明するために示した図である。
【００３５】
図６を参照すると、本発明の第２実施例による割込みスケジューリング方法は、第１実施例による割込みスケジューリング方法と比較して次のような差異がある。
【００３６】
図３を参照して説明した第1実施例による割込みスケジューリング方法では、ターゲットプロセスの優先順位が現在プロセスの優先順位より高い場合、再スケジューリングを設定したが、第２実施例による割込みスケジューリング方法では、ターゲットプロセスと現在プロセスとの優先順位を比較して(６０５)、その結果、ターゲットプロセスの優先順位がもっと高ければ、再スケジューリングを設定するのではなく、現在プロセスからターゲットプロセスへコンテキストスイッチングを直ちに実行する(６０７)。これによって、ターゲットプロセスの先取り延期時間をより效果的に減らすことができるようになる。
【００３７】
上述した差異を除いた方法は、本発明の第１実施例による割込みスケジューリング方法と同一であるので、上述した差異を除いた割込みスケジューリング方法に関する詳細な説明は、第１実施例による割込みスケジューリング方法に関する詳細な明と同様である。
【００３８】
本発明による割込みスケジューリング方法を実行させるためのプログラムが記録された、コンピュータで読み取り可能な記録媒体に関する説明は、本発明の一実施例による割込みスケジューリング方法についての詳細な説明と同様である。
【図１】
2009282987.tif 000003
【図２】
2009282987.tif 000004
【図３】
2009282987.tif 000005
【図４】
2009282987.tif 000006
【図５】
2009282987.tif 000007
【図６】
2009282987.tif 000008