(57)【特許請求の範囲】
【請求項１】
マルチタスク実行環境におけるタスク実行の調整を行うタスクスケジューリング装置において、
実行中のタスクより優先順位の高いタスクがレディー状態になった際に、そのタスクに実行が遷移するプリエンプトスケジューリングを行うプリエンプトスケジューリング手段と、
同じ優先度の複数のタスクを一定のタイムスライスごとに順番に実行するラウンドロビンスケジューリングを行うラウンドロビンスケジューリング手段と、
ラウンドロビンスケジューリング用のタスク実行優先順位の情報を各タスクに設定するタスク情報登録手段と、
前記各タスクに設定されたラウンドロビンスケジューリング用のタスク実行優先順位の情報を保持するタスク情報管理手段とを備え、
ラウンドロビンスケジューリングにおいて、前記ラウンドロビンスケジューリング用タスク実行優先順位とユーザが任意に設定可能なタイムスライスとを掛けた値を前記ラウンドロビンスケジューリング用タスク実行優先順位の最小値で割って算出された実行許可時間の間、各タスクを実行することを特徴とするタスクスケジューリング装置。
【請求項２】
前記ラウンドロビンスケジューリング手段は、ラウンドロビンスケジューリングモードのコマンドが発行されることにより、全タスクを前記のラウンドロビンスケジューリングで動作させることを特徴とする請求項１記載のタスクスケジューリング装置。
【請求項３】
前記タスク情報管理手段は、ラウンドロビンスケジューリングを行う複数のタスクをラウンドロビンスケジューリング・タスク・グループとして登録してこれらの複数のラウンドロビンスケジューリング・タスク・グループを管理できる構成よりなり、ラウンドロビンスケジューリングモードのコマンドが発行されることにより、各ラウンドロビンスケジューリング・タスク・グループ内においては、前記のラウンドロビンスケジューリング動作を行い、各ラウンドロビンスケジューリング・タスク・グループ、およびその他のどのラウンドロビンスケジューリング・タスク・グループにも属さないタスク間では、プリエンプトスケジューリングを行うことを特徴とする請求項１記載のタスクスケジューリング装置。
【請求項４】
前記タスク情報管理手段は、一個以上のラウンドロビンスケジューリング・タスク・グループの各々について、プリエンプトスケジューリング用のタスク管理情報を、各グループごとに一括して管理できる構成であることを特徴とする請求項３記載のタスクスケジューリング装置。
【請求項５】
前記タスク情報管理手段は、前記ラウンドロビンスケジューリング・タスク・グループに登録されている各タスク管理情報中のラウンドロビンスケジューリング用タスク実行優先順位を、タスク動作中でも変更可能であることを特徴とする請求項３記載のタスクスケジューリング装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、タスクスケジューリング装置に関するものである。
【０００２】
【従来の技術】
以下に、従来のタスクスケジューリング装置について、図１７を参照しながら説明する。
【０００３】
一般的なタスクスケジューリング方法として、現在実行中のタスクより優先順位の高いタスクがレディー状態になると、そのタスクに実行が遷移するプリエンプトスケジューリングと、同じ優先度の複数のタスクを一定のタイムスライスごとに順番に実行するラウンドロビンスケジューリングが採用されている。
【０００４】
まず、各タスクの起動時に、タスク情報登録手段１０により、タスクの優先順位、動作状態等を保持するタスク情報管理手段１１に登録される。
【０００５】
タスク情報管理手段１１においては、図１８に示すように、プリエンプトスケジューリング用タスク実行優先順位ごとに、Ｒｅａｄｙ状態になった順番にタスク情報が保存されている（以下、この各々を「タスクキュー」という。）。
【０００６】
前記プリエンプトスケジューリングにおいては、前記タスクキューにおいて、優先順位が最も高いタスクキューの中で、先頭にある最初にＲｅａｄｙ状態になったタスクが実行される。
【０００７】
現在実行中のタスクより高い優先順位のタスクがＲｅａｄｙ状態になった場合には、現在実行中のタスクの状態はＴＣＢへ待避され、高い優先順位のタスクが実行される。そのタスクの実行が終わると、元のタスクへ実行が戻る。
【０００８】
そのタスクの実行が終わったときに、セマフォの資源待ち等の理由でＲｅａｄｙ状態でなくなった場合には、図１９に示すように、該当タスクをタスクキューから登録を外す。そうでなければ、図２０にように、該当タスクをＲｅａｄｙタスクキューに末尾に移動する。
【０００９】
その他のタスクが新しくＲｅａｄｙ状態になった場合には、対応する優先順位のタスクキューの末尾に追加登録する。
【００１０】
次に、前記ラウンドロビンスケジューリングのタスクの実行遷移の例を図２１に示す。
【００１１】
一般的に、ラウンドロビンスケジューリングは、複数のタスクが順番に共有資源へのアクセスを行う場合の排他処理を行うときなどに使用される。ラウンドロビンスケジューリングにおいては、優先順位の同じＲｅａｄｙ状態のタスク間で、プロセッサの使用時間を均等に配分する。
【００１２】
実行許可時間の均等配分のため、各タスクはタイムカウント・データを持ちタイマのクロックに合わせて増加していく。ラウンドロビンスケジューリングにおける各タスクの実行許可時間長は、予めシステムで決められているタイムスライスに等しく、あるタスクが実行を始めてから増加する前記タイムカウント・データを参照しつつ、前記実行許可時間が経過するまで実行が許可される。
【００１３】
実行が終わったら、そのタスクを同じ優先順位のＲｅａｄｙタスクキューの最後尾に置く。同時に、そのタスクのタイムカウント・データは０に初期化される。次に、Ｒｅａｄｙタスクキュー内の先頭に来たタスクを前記一定時間実行する。以後、この動作を繰り返す。
【００１４】
【発明が解決しようとする課題】
しかしながら前述のような従来構成では、ラウンドロビンスケジューリングにおいて、同じ優先順位のレディー状態のタスクを、予めシステムで決められているタイムスライスの間隔で遷移することしかできなかったため、各タスク毎に実行時間の指定できないなど、きめ細やかなタスク制御ができないという問題があった。
【００１５】
また、上記従来構成では、ラウンドロビンスケジューリングを行うタスクグループは一つであるため、複数の共有資源に対しグループ分けを行い排他処理を行うことができないという問題があった。
【００１６】
そこで、本発明は、きめ細やかなタスク制御を可能とし、かつ複数の共有資源に対し、同時に排他処理を行うことができるタスクスケジューリング装置を提供することを目的とする。
【００１７】
【課題を解決するための手段】
この課題を解決するために、本発明のタスクスケジューリング装置において、実行中のタスクより優先順位の高いタスクがレディー状態になった際に、そのタスクに実行が遷移するプリエンプトスケジューリングを行うプリエンプトスケジューリング手段と、同じ優先度の複数のタスクを一定のタイムスライスごとに順番に実行するラウンドロビンスケジューリングを行うラウンドロビンスケジューリング手段と、ラウンドロビンスケジューリング用のタスク実行優先順位の情報を各タスクに設定するタスク情報登録手段と、各タスクに設定されたラウンドロビンスケジューリング用のタスク実行優先順位の情報を保持するタスク情報管理手段とを備え、ラウンドロビンスケジューリングにおいて、前記ラウンドロビンスケジューリング用タスク実行優先順位とユーザが任意に設定可能なタイムスライスとを掛けた値を前記ラウンドロビンスケジューリング用タスク実行優先順位の最小値で割って算出された実行許可時間の間、各タスクを実行する構成としたものである。
【００１８】
また、この課題を解決するために、本発明のタスクスケジューリング装置において、前記ラウンドロビンスケジューリング手段が、ラウンドロビンスケジューリングモードのコマンドが発行されることにより、全タスクをラウンドロビンスケジューリングで動作させる構成としたものである。
【００１９】
さらに、この課題を解決するために、本発明のタスクスケジューリング装置において、前記タスク情報管理手段は、ラウンドロビンスケジューリングを行う複数のタスクをラウンドロビンスケジューリング・タスク・グループとして登録してこれらの複数のラウンドロビンスケジューリング・タスク・グループを管理できる構成よりなり、ラウンドロビンスケジューリングモードのコマンドが発行されることにより、各ラウンドロビンスケジューリング・タスク・グループ内においては、前記のラウンドロビンスケジューリング動作を行い、各ラウンドロビンスケジューリング・タスク・グループ、およびその他のどのラウンドロビンスケジューリング・タスク・グループにも属さないタスク間では、プリエンプトスケジューリングを行うものである。
【００２０】
これらにより、タスク毎に実行時間長を指定できるなど、より細やかなタスク制御が可能になる。
【００２２】
さらに、この課題を解決するために、本発明のタスクスケジューリング装置は、前記タスク情報管理手段が、各タスクのラウンドロビンスケジューリング用タスク実行優先順位情報を独立して管理できる構成よりなるものである。
【００２３】
また、この課題を解決するために、本発明のタスクスケジューリング装置は、前記タスク情報管理手段が、一個以上のラウンドロビンスケジューリング・タスク・グループの各々について、プリエンプトスケジューリング用のタスク管理情報を、各グループごとに一括して管理できる構成よりなるものである。
【００２４】
さらに、この課題を解決するために、本発明のタスクスケジューリング装置は、前記タスク情報管理手段が、前記ラウンドロビンスケジューリング・タスク・グループに登録されている各タスク管理情報中のラウンドロビンスケジューリング用タスク実行優先順位をタスク動作中でも変更可能であるものである。
【００２７】
これらによって、タスク毎に実行時間長を指定できるなど、より細やかなタスク制御が可能になるとともに、タスク情報管理手段において、複数のタスクグループを管理できる構成とすることにより、複数の共有資源に対し、同時に排他処理を行うことができる。
【００２８】
【発明の実施の形態】
本発明の請求項１に記載の発明は、実行中のタスクより優先順位の高いタスクがレディー状態になった際に、そのタスクに実行が遷移するプリエンプトスケジューリング手段と、同じ優先度の複数のタスクを一定のタイムスライスごとに順番に実行するラウンドロビンスケジューリングと、ラウンドロビンスケジューリング用のタスク実行優先順位等の情報を各タスクに設定するタスク情報登録手段と、その情報を保持するタスク情報管理手段とを備えたことを特徴とするタスクスケジューリング装置であり、タスク毎に実行時間長を指定できるなど、よりきめ細やかなタスク制御を行うことが可能になるという作用を有する。
【００２９】
本発明の請求項２に記載の発明は、請求項１記載の発明において、ラウンドロビンスケジューリング手段が、ラウンドロビンスケジューリングへの移行コマンドにより、全タスクをラウンドロビンスケジューリングで動作させることを特徴とするタスクスケジューリング装置であり、タスク毎に実行時間長を指定できるなど、よりきめ細やかなタスク制御を行うことが可能になるという作用を有する。
【００３０】
本発明の請求項３に記載の発明は、請求項１記載の発明において、タスク情報管理手段が、複数のラウンドロビンスケジューリング・タスク・グループを管理できる構成であり、ラウンドロビンスケジューリングを行う複数のタスクを、ラウンドロビンスケジューリング・タスク・グループの何れかに登録を行い、ラウンドロビンスケジューリングへの移行コマンドにより、各ラウンドロビンスケジューリング・タスク・グループ内においては、ラウンドロビンスケジューリング動作を行い、各ラウンドロビンスケジューリング・タスク・グループ、およびその他のどのラウンドロビンスケジューリング・タスク・グループにも属さないタスク間では、プリエンプトスケジューリングを行うことを特徴とするタスクスケジューリング装置であり、タスク毎に実行時間長を指定できるなど、よりきめ細やかなタスク制御を行うことが可能になるという作用を有する。
【００３１】
本発明の請求項４に記載の発明は、請求項１に記載の発明において、タスク情報管理手段におけるラウンドロビンスケジューリング用タスク実行優先順位が、プリエンプトスケジューリング用タスク実行優先順位と同一の値を用いることを特徴とするタスクスケジューリング装置であり、タスク毎に実行時間長を指定できるなど、よりきめ細やかなタスク制御を行うことが可能になると同時に、複数のタスクグループを管理できる構成とすることにより、複数の共有資源に対し、同時に排他処理を行うことが可能になるという作用を有する。
【００３２】
本発明の請求項５に記載の発明は、請求項１に記載の発明において、タスク情報管理手段は、各タスクのラウンドロビンスケジューリング用タスク実行優先順位情報を独立して管理できる構成であることを特徴とするタスクスケジューリング装置であり、タスク毎に実行時間長を指定できるなど、よりきめ細やかなタスク制御を行うことが可能になると同時に、複数のタスクグループを管理できる構成とすることにより、複数の共有資源に対し、同時に排他処理を行うことが可能になるという作用を有する。
【００３３】
本発明の請求項６に記載の発明は、請求項３に記載の発明において、タスク情報管理手段が、一個以上のラウンドロビンスケジューリング・タスク・グループの各々について、プリエンプトスケジューリング用のタスク管理情報を、各グループごとに一括して管理できる構成であることを特徴とするタスクスケジューリング装置であり、タスク毎に実行時間長を指定できるなど、よりきめ細やかなタスク制御を行うことが可能になると同時に、複数のタスクグループを管理できる構成とすることにより、複数の共有資源に対し、同時に排他処理を行うことが可能になるという作用を有する。
【００３４】
本発明の請求項７に記載の発明は、請求項３に記載の発明において、タスク情報管理手段が、ラウンドロビンスケジューリング・タスク・グループに登録されている各タスク管理情報中のラウンドロビンスケジューリング用タスク実行優先順位を、タスク動作中でも変更可能であることを特徴とするタスクスケジューリング装置であり、タスク毎に実行時間長を指定できるなど、よりきめ細やかなタスク制御を行うことが可能になると同時に、複数のタスクグループを管理できる構成とすることにより、複数の共有資源に対し、同時に排他処理を行うことが可能になるという作用を有する。
【００３５】
本発明の請求項８に記載の発明は、請求項３に記載の発明において、ラウンドロビンスケジューリングのベース・タイム・スライスを任意に設定できるベースタイムスライス設定手段を有したことを特徴とするタスクスケジューリング装置であり、タスク毎に実行時間長を指定できるなど、よりきめ細やかなタスク制御を行うことが可能になると同時に、複数のタスクグループを管理できる構成とすることにより、複数の共有資源に対し、同時に排他処理を行うことが可能になるという作用を有する。
【００３６】
本発明の請求項９に記載の発明は、請求項３に記載の発明において、タスク情報登録手段が、ラウンドロビンスケジューリング時の各タスクの絶対動作時間長をユーザが任意に設定可能とする構成であることを特徴とするタスクスケジューリング装置であり、タスク毎に実行時間長を指定できるなど、よりきめ細やかなタスク制御を行うことが可能になると同時に、複数のタスクグループを管理できる構成とすることにより、複数の共有資源に対し、同時に排他処理を行うことが可能になるという作用を有する。
【００３７】
以下、本発明の実施の形態について、図１から図１６を用いて説明する。なお、これらの図面において同一の部材には同一の符号を付しており、また、重複した説明は省略されている。
【００３８】
（実施の形態１）
図１は本発明の実施の形態１による画像形成装置を示す構成図、図２は同タスク状態遷移の一例を示す説明図、図３は同ラウンドロビンスケジューリング用タスク管理データを示す説明図、図４は同ラウンドロビンスケジューリングのタスク遷移例を示す説明図、図５は同ラウンドロビンスケジューリングのタスクキューデータの一例を示す説明図、図６は、同ラウンドロビンスケジューリングのタスクキューデータの他の例を示す説明図、図７は同ラウンドロビンスケジューリングのタスクキューデータの他の一例を示す説明図、図８は同ラウンドロビンスケジューリングのタスクキューデータの他の一例を示す説明図、図９は同プリエンプトスケジューリングのフローチャート、図１０は同ラウンドロビンスケジューリングのフローチャート、図１１は同ラウンドロビンスケジューリングのフローチャート、図１２は同プリエンプトスケジューリングのタスク管理データの一例を示す説明図である。
【００３９】
本発明の実施の形態１において、画像形成装置には、図１に示すように、中央演算処理装置１が設けられている。この中央演算処理装置１は、リードオンリメモリ２のプログラム記憶領域３やランダムアクセスメモリ４のワーク領域５に記憶された実行可能なプログラムなどに基づいて各種のデバイスとのアクセスを総括的に制御する。
【００４０】
また、リードオンリメモリ２はプログラム記憶領域３を有し、中央演算処理装置１が実行可能な制御プログラムなどを記憶する。タイマ部６は、ハードウェアタイマによりタスクの遷移タイミングを計る割込み信号を発生させる。
【００４１】
図１７に、タイムスケジューリング装置の構成を示す。
【００４２】
このタスクスケジューリング装置は、従来の技術と同様に、タスクスケジューリング手段７が設けられており、このタイムスケジューリング手段７はタスク実行のスケジューリングを司る。
【００４３】
また、一般的なリアルタイムＯＳにおいて、タイムスケジューリング手段７は、プリエンプトスケジューリング手段８と、ラウンドロビンスケジューリング手段９とから構成される。
【００４４】
一般的なリアルタイムＯＳにおけるタスクの状態遷移の一例を図２に示す。
【００４５】
この場合、タスクの状態は、実行待ちであるＲｅａｄｙ状態と、セマフォやメッセージ待ち等の理由のため実行がブロックされているＢｌｏｃｋｅｄ状態と、実行されているＲｕｎｎｉｎｇ状態の３つの状態を持つものが一般的である。
【００４６】
各タスクの実行優先順位や、プログラムスタック、変数やプログラムカウンタなどのタスク動作情報は、タスクコントロールブロック（以下、ＴＣＢという。）に保持されており、それらは一括してタスク情報管理手段１１で管理される。また、タスク情報管理手段１１への登録は、タスク情報登録手段１０によりプログラム中で実行される。
【００４７】
さらに、図１８に従来の技術で説明したプリエンプトスケジューリング用タスク情報管理データの動作例を示す。図に示すように、実行優先順位毎に現在Ｒｅａｄｙ状態であるタスクが、登録された順番にキューに並べられる。この例では、実行優先順位の数値が大きいほど、実行優先順位は高いものとする。
【００４８】
次に、プリエンプトスケジューリング手段８の動作を図９のフローチャートを用いて説明する。
【００４９】
まず、ラウンドロビンモードが発行されていないかチェックする（ステップＳ１０１）。ラウンドロビンモードであれば、後述のラウンドロビンモードの動作に移る。
【００５０】
プリエンプトモードであれば、これまで実行していたタスクのＴＣＢを待避する（ステップＳ１０２）。次に、タスク情報管理手段１１で管理するタスクのうち、Ｒｅａｄｙ状態であり、最もプリエンプトスケジューリング用の実行優先順位が高いキューの先頭のタスクを選択する（ステップＳ１０３）。次に、前記選択されたタスクのＴＣＢをロードし、実行する（ステップＳ１０４）。
【００５１】
そのタスクの実行がセマフォなどの資源待ちなどの理由でブロックされた場合には（ステップＳ１０５）、従来の技術で示した図１９のように、該当タスクをＲｅａｄｙタスクキューから外し（ステップＳ１０６）、ステップＳ１０１の処理に戻る。そうでなければ、従来の技術で示した図２０にように、該当タスクをＲｅａｄｙタスクキューに末尾に移動する（ステップＳ１０７）。
【００５２】
また、ステップＳ１０１の処理において、ラウンドロビンモードであると判断された場合のラウンドロビンスケジューリング手段９の動作について説明する。
【００５３】
図３に、ラウンドロビンスケジューリング用タスク情報管理データの例を示す。たとえば、この例ではＴａｓｋ１，２，３のラウンドロビンスケジューリング用実行優先順位は１００、Ｔａｓｋ４のそれは１５０、Ｔａｓｋ５のそれは２００である。
【００５４】
この例の場合には、これら５個のタスクについて、本発明のラウンドロビンスケジューリングを行った場合には、図４に示すように、各タスクのラウンドロビンスケジューリング用実行優先順位に応じた実行許可時間が、Ｔａｓｋ５は２ｔ、Ｔａｓｋ４は１．５ｔ、Ｔａｓｋ１〜Ｔａｓｋ３はｔと算出され、各タスクの実行許可時間が経過するまで順番に実行される。但し、ｔはシステムで予め決められるタイムスライスである。
【００５５】
以下、図１０のフローチャートを用いて、動作を詳細説明する。
【００５６】
まず、前記タスク情報管理手段により管理されているＴＣＢ中のラウンドロビンスケジューリング用データにおいて、新しくタスクがＲｅａｄｙ状態になった場合や、初めてラウンドロビンモードになった場合など、タスク管理データに変化が合った場合には（ステップＳ２０１）、そのＴＣＢ中のデータを参照し、ラウンドロビンスケジューリングを行う。
【００５７】
次に、存在する全タスクの各々について実行許可時間を算出する（ステップＳ２０２）。本ステップの詳細動作については、後述する。
【００５８】
そして、Ｒｅａｄｙタスクキューを更新し、ラウンドロビンスケジューリング用タスク実行優先順位および各Ｒｅａｄｙタスクキューへの登録順番に従ってソートする（ステップＳ２０３）。
【００５９】
たとえば、図３のタスク情報管理データの例の場合には、図５に示すように、Ｔａｓｋ５、Ｔａｓｋ４、Ｔａｓｋ１、Ｔａｓｋ２、Ｔａｓｋ３の順にソートされる。
【００６０】
また、新らしくＲｅａｄｙ状態になったタスクがある場合には、図８のように、Ｒｅａｄｙタスクキューの末尾に追加する。優先度が変更されたタスクがある場合には、該当タスクの動作許可時間を更新し、Ｒｅａｄｙタスクキューをソートし直す。
【００６１】
次に、ソートされたタスクの中から、実行すべきタスクを選択する（ステップＳ２０４）。その後、選択されたタスクのＴＣＢをロードし、実行する（ステップＳ２０５）。各タスクはタイムカウント・データを持ちタイマのクロックに合わせて増加していく。
【００６２】
各タスクの実行許可時間長は、先のステップＳ２０２の処理で、各タスク毎に算出された時間であり、あるタスクが実行を始めてから増加する前記タイムカウント・データを参照しつつ、前記実行許可時間が経過するまで実行が許可される。
【００６３】
ラウンドロビンモードが解除された場合（ステップＳ２０６）、プリエンプトスケジューリングの動作に戻る。Ｒｕｎｎｉｎｇ状態であったタスクの実行が終わったとき、ブロックされて終了した場合（ステップＳ２０７）、図７に示すように、該当タスクをＲｅａｄｙタスクキューから外す（ステップＳ２０８）。
【００６４】
そうでなければ、図６に示すように、該当タスクをＲｅａｄｙタスクキューの最後尾に置く（ステップＳ２０９）。同時に、そのタスクのタイムカウント・データは０に初期化され、ステップＳ２０１の処理に戻る。以後、この動作を繰り返す。
【００６５】
ここで、各タスクの動作許可時間の算出ステップ（ステップＳ２０２）の詳細動作について説明する。
【００６６】
ここでは、ラウンドロビンスケジューリング手段９においては、タスク情報管理手段１１に保存されている全てのタスクを、前記のラウンドロビンスケジューリングの対象とする。
【００６７】
以下、図１１のフローチャートを用いて説明する。
【００６８】
まず、各タスクの動作許可時間（Ｔｉ）を、たとえば下記のような計算式により、ラウンドロビンスケジューリング用タスク実行優先順位に応じて算出し、各タスクのＴＣＢに保存する（ステップＳ３０１，Ｓ３０２）。
【００６９】
Ｔｉ＝Ｔｓ＊Ｔｉ＿ｐｒｉ／ｍｉｎ（Ｔｐｒｉ）    （数１）
但し、
Ｔｉ：タスクｉの動作許可時間
Ｔｓ：タイムスライス
Ｔｉ＿ｐｒｉ：タスクｉのラウンドロビンスケジューリング用タスク実行優先順位
ｍｉｎ（Ｔｐｒｉ）：ラウンドロビンスケジューリングを行う全タスクのうちラウンドロビンスケジューリング用タスク実行優先順位の最小値とする。
【００７０】
次に、全てのタスクについて、ラウンドロビンスケジューリング用タスク実行優先順位および各Ｒｅａｄｙタスクキューへの登録順番に従って、全タスクをソートし、Ｒｅａｄｙタスクキューに並べる（ステップＳ３０３）。
【００７１】
ここで、各タスクの動作許可時間を算出するステップにおいて、そのベースとなるタイムスライスは、ユーザが任意に設定可能であるものとする。さらに、各タスクの動作許可時間を算出するステップにおいて、タスク絶対動作時間設定手段により設定された絶対動作時間を満足するよう、タスク動作許可時間を算出する。この場合、上記算出式ではなく、ユーザにより指定された値をそのままタスク動作許可時間に代入すれば良い。
【００７２】
それにより、本発明の実施の形態１によれば、各タスクにラウンドロビンスケジューリングにおける実行優先順位を設定し、ラウンドロビンスケジューリングにおける実行優先順位を基にＲｅａｄｙ状態の各タスクが動作できる時間を算出し、タスク・スケジューリングを行うことができるので、より細やかなタスク制御を可能にすることができる。
【００７３】
（実施の形態２）
以下、本発明の実施の形態２について図面を参照しながら説明するが、前記実施の形態１と異なる箇所について詳細に説明する。
【００７４】
図１３は本発明の実施の形態２によるラウンドロビンスケジューリングのタスク遷移例を示す説明図、図１４は同プリエンプトスケジューリングのフローチャート、図１５は同ラウンドロビンスケジューリングのフローチャート、図１６は同ラウンドロビンスケジューリングのフローチャートである。
【００７５】
本発明の実施の形態２において、タイムスケジューリング装置（図１７）の構成は実施の形態１と同様である。また、実施の形態１では、全タスクがラウンドロビンスケジューリングによって動作したが、本発明の実施の形態２においては、ラウンドロビンスケジューリングを行うタスクを、１つまたは２つ以上の複数のラウンドロビン・スケジューリング・タスク・グループの何れかに登録・管理し、各ラウンドロビン・スケジューリング・タスク・グループ毎にラウンドロビンスケジューリングを行う。
【００７６】
このため、図１７のタスク情報管理手段１１とタスク情報登録手段１０は、１個以上のラウンドロビン・スケジューリング・タスク・グループの登録・管理に対応するものである。
【００７７】
また、前記１個以上のラウンドロビン・スケジューリング・タスク・グループと、それらに登録されていないその他のタスクの間では、プリエンプトスケジューリングを行う。
【００７８】
その動作例を、図１２と図１３に示す。図中のＲＲＴＧ１、ＲＲＴＧ２は、ラウンドロビン・スケジューリング・タスク・グループであり、複数のタスクが、各ラウンドロビン・スケジューリング・タスク・グループ内でラウンドロビンスケジューリング動作をする。
【００７９】
また、Ｔａｓｋ７は、どのラウンドロビン・スケジューリング・タスク・グループにも登録されていない単一のタスクであり、例えば２つのラウンドロビン・スケジューリング・タスク・グループ（ＲＲＴＧ１，ＲＲＴＧ２）と単一タスクであるＴａｓｋ７のプリエンプトスケジューリング用タスク実行優先順位が図１２に示す通り、各々１００，１００，２００であるとすれば、図１３のタスク遷移図に示すように遷移する。
【００８０】
もしも、ＲＲＴＧ２内の動作中に、Ｔａｓｋ７がＲｅａｄｙ状態になった場合には、Ｔａｓｋ７が実行権を得て実行され、その実行完了後、再びＲＲＴＧ２が実行される。
【００８１】
このときのフローチャートを図１４、図１５に示す。タスク実行が開始された後、もしラウンドロビンモードの指定がなされていなければ（ステップＳ４０１）、実施の形態１と同等の動作を行い、プリエンプトスケジューリングを実行する（ステップＳ４０２〜Ｓ４０７）。
【００８２】
もし、ラウンドロビンモードの指定がなされていれば、それまで実行中であったタスクまたはラウンドロビン・スケジューリング・タスク・グループのＴＣＢを待避する（ステップＳ５０２）。
【００８３】
次に、Ｒｅａｄｙ状態の全タスクのうち、最もプリエンプトスケジューリング用実行優先順位が高いキューの先頭のタスク、またはラウンドロビン・スケジューリング・タスク・グループを選択する（ステップＳ５０３）。
【００８４】
選択されたものがタスクかラウンドロビン・スケジューリング・タスク・グループかを判断し（ステップＳ５０４）、タスクであれば、そのタスクのＴＣＢをロード後、実行する（ステップＳ５０５）。
【００８５】
選択されたものがラウンドロビン・スケジューリング・タスク・グループであれば、ラウンドロビン・スケジューリング・タスク・グループの実行ルーチンに入る（ステップＳ５０６）。その動作を示すフローチャートを図１６に示すが、その動作は実施の形態１で用いた図１０と同等であるため、その説明は省略する。
【００８６】
ここで、各々のＲＲＴＧは、請求項６に記載してあるように、一般のタスクと同様のＴＣＢを持ち、プリエンプトスケジューリング用タスク実行優先順位等の情報は一括して管理されている。
【００８７】
次に、その時点でラウンドロビンモードが解除されていれば、ステップＳ４０２のプリエンプトスケジューリングへ戻る（ステップＳ５０１）。
【００８８】
ここで、ステップＳ５０３の処理におけるラウンドロビンスケジューリング・タスク・グループを選択するための実行優先順位として、プリエンプトスケジューリング用タスク実行優先順位と同一の値を用いる。また、ラウンドロビンスケジューリング用タスク実行優先順位情報をＴＣＢ内に独立して設け、その値を用いるようにしてもよい。
【００８９】
さらに、各タスクやラウンドロビンスケジューリング・タスク・グループのラウンドロビンスケジューリング実行優先順位は、タスク動作中でもプログラム中より変更可能であるものとする。この変更は、ステップＳ６０１の処理でタスク管理データの変更とみなされ、ステップＳ６０３の処理において、タスクキューが更新される。
【００９０】
それにより、本発明の実施の形態２においては、より細やかなタスク制御を可能にすることができるとともに、複数の共有資源に対し、同時に排他処理を行うことを可能にすることができる。
【００９１】
【発明の効果】
以上のように、本発明によれば、各タスクにラウンドロビンスケジューリングにおける実行優先順位を設定し、前記ラウンドロビンスケジューリングにおける実行優先順位を基にＲｅａｄｙ状態の各タスクが動作できる時間を算出し、タスク・スケジューリングを行うことにより、より細やかなタスク制御が可能になるという有効な効果が得られる。
【００９２】
また、本発明によれば、複数の共有資源に対し、同時に排他処理を行うことが可能になるという有効な効果が得られる。
【図面の簡単な説明】
【図１】本発明の実施の形態１による画像形成装置を示す構成図
【図２】本発明の実施の形態１によるタスク状態遷移の一例を示す説明図
【図３】本発明の実施の形態１によるラウンドロビンスケジューリング用タスク管理データを示す説明図
【図４】本発明の実施の形態１によるラウンドロビンスケジューリングのタスク遷移例を示す説明図
【図５】本発明の実施の形態１によるラウンドロビンスケジューリングのタスクキューデータの一例を示す説明図
【図６】本発明の実施の形態１によるラウンドロビンスケジューリングのタスクキューデータの他の一例を示す説明図
【図７】本発明の実施の形態１によるラウンドロビンスケジューリングのタスクキューデータの他の一例を示す説明図
【図８】本発明の実施の形態１によるラウンドロビンスケジューリングのタスクキューデータの他の一例を示す説明図
【図９】本発明の実施の形態１によるプリエンプトスケジューリングのフローチャート
【図１０】本発明の実施の形態１によるラウンドロビンスケジューリングのフローチャート
【図１１】本発明の実施の形態１によるラウンドロビンスケジューリングのフローチャート
【図１２】本発明の実施の形態１によるプリエンプトスケジューリングのタスク管理データの一例を示す説明図
【図１３】本発明の実施の形態２によるラウンドロビンスケジューリングのタスク遷移例を示す説明図
【図１４】本発明の実施の形態２によるプリエンプトスケジューリングのフローチャート
【図１５】本発明の実施の形態２によるラウンドロビンスケジューリングのフローチャート
【図１６】本発明の実施の形態２によるラウンドロビンスケジューリングのフローチャート
【図１７】従来のタイムスケジューリング装置を示す構成図
【図１８】従来のプリエンプトスケジューリング用タスク管理データを示す説明図
【図１９】従来のプリエンプトスケジューリング用タスク管理データを示す説明図
【図２０】従来のプリエンプトスケジューリング用タスク管理データを示し説明図
【図２１】従来のラウンドロビンスケジューリングのタスク遷移例を示す説明図
【符号の説明】
７  タスクスケジューリング手段
８  プリエンプトスケジューリング手段
９  ラウンドロビンスケジューリング手段
１０  タスク情報登録手段
１１  タスク情報管理手段
【図１】
0004292705.tif 000002
【図２】
0004292705.tif 000003
【図３】
0004292705.tif 000004
【図４】
0004292705.tif 000005
【図５】
0004292705.tif 000006
【図６】
0004292705.tif 000007
【図７】
0004292705.tif 000008
【図８】
0004292705.tif 000009
【図９】
0004292705.tif 000010
【図１０】
0004292705.tif 000011
【図１１】
0004292705.tif 000012
【図１２】
0004292705.tif 000013
【図１３】
0004292705.tif 000014
【図１４】
0004292705.tif 000015
【図１５】
0004292705.tif 000016
【図１６】
0004292705.tif 000017
【図１７】
0004292705.tif 000018
【図１８】
0004292705.tif 000019
【図１９】
0004292705.tif 000020
【図２０】
0004292705.tif 000021
【図２１】
0004292705.tif 000022