(57)【要約】【課題】マルチプロセッサシステムの資源を有効利用し、並列処理の効率化，高速化を図ること。【解決手段】ＭａｉｎＣＰＵ１０１が、メモリ１０７に記憶される、並行処理可能なスケジューリング対象の実行単位（スレッド等）をタスク毎にグループ化し、各タスクに、ＳｕｂＣＰＵ１０２ａ〜１０２ｎを割り当てるスケジューリング処理を行う。このスケジューリング処理では、前記実行単位に対して処理の緊急度を判断し、前記グループ内の緊急度を有する実行単位の数に応じて、前記各グループに割り当てる実行手段の数を制御することを特徴とする。【選択図】図１
2009211604.tif 000002
【特許請求の範囲】
【請求項１】
データ処理を分割した処理の１つに当たる実行単位を実行する複数の実行手段と、
前記複数の実行手段が実行する実行単位の処理データを記憶する記憶手段と、
前記記憶手段に記憶される、並行処理可能なスケジューリング対象の実行単位をグループ化し、各グループに前記実行手段を割り当てるスケジューリング手段と、を有し、
前記スケジューリング手段は、前記実行単位に対して処理の緊急度を判断し、前記グループ内の緊急度を有する実行単位の数に応じて、前記各グループに割り当てる実行手段の数を制御する、ことを特徴とする情報処理装置。
【請求項２】
前記グループ毎に、割り当てられる実行手段の最大数と最小数を設定する設定手段を有し、
前記スケジューリング手段は、前記各グループに割り当てられる実行手段の最大数と最小数の範囲内で、前記各グループに割り当てる実行手段の数を制御することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記スケジューリング手段は、前記各グループに割り当てられる実行手段の最大数と最小数を、前記各グループ内の緊急度を有する実行単位の数に応じて変更設定する、ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記スケジューリング手段は、前記グループ毎に割り当てられる実行手段の最大数と最小数を、前記グループ内の緊急度を有する実行単位の数と該グループに割り当てられる実行手段の最大数との差に応じて変更設定する、ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
データ処理を分割した処理の１つに当たる実行単位を実行する複数の実行手段と、前記複数の実行手段が実行する実行単位の処理データを記憶する記憶手段とを有する情報処理装置における情報処理方法であって、
スケジューリング手段が、前記記憶手段に記憶される、並行処理可能なスケジューリング対象の実行単位をグループ化し、各グループに前記実行手段を割り当てるスケジューリングステップを有し、
前記スケジューリングステップは、前記実行単位に対して処理の緊急度を判断し、前記グループ内の緊急度を有する実行単位の数に応じて、前記各グループに割り当てる実行手段の数を制御する、ことを特徴とする情報処理方法。
【請求項６】
設定手段が、前記グループ毎に、割り当てられる実行手段の最大数と最小数を設定する設定ステップを有し、
前記スケジューリングステップは、前記グループ毎に割り当てられる実行手段の最大数と最小数の範囲内で、前記各グループに割り当てる実行手段の数を制御することを特徴とする請求項５に記載の情報処理方法。
【請求項７】
前記スケジューリングステップは、前記グループ毎に割り当てられる実行手段の最大数と最小数を、前記グループ内の緊急度を有する実行単位の数に応じて変更設定する、ことを特徴とする請求項６に記載の情報処理方法。
【請求項８】
前記スケジューリングステップは、前記グループ毎に割り当てられる実行手段の最大数と最小数を、前記グループ内の緊急度を有する実行単位の数と該グループに割り当てられる実行手段の最大数との差に応じて変更設定する、ことを特徴とする請求項７に記載の情報処理方法。
【請求項９】
請求項５乃至８のいずれか１項に記載の情報処理方法をコンピュータに実行させるためのプログラム。
【請求項１０】
請求項５乃至８のいずれか１項に記載の情報処理方法をコンピュータに実行させるためのプログラムを記録したコンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムに対応した情報処理装置、情報処理方法、プログラム、及び、記憶媒体
【背景技術】
【０００２】
最近のマルチタスクをサポートするオペレーティングシステム（ＯＳ）は、複数のプロセスを同時に実行することができるマルチプロセス環境を実現する。さらに、この種のＯＳは、これらのプロセスがプロセス内部で複数のスレッドを生成して並行処理を行うことのできるマルチスレッド技術を搭載している。
【０００３】
なお、プロセスは、実行時に固有のリソースやアドレス空間が割り当てられ、他のプロセスの領域にアクセスすることはできない。
【０００４】
これに対してスレッドは、プロセスの内部で生成される実行単位であり、各スレッドはプロセス内の領域に互いに自由にアクセスすることができる。なお、スレッドは、ＯＳがＣＰＵの実行時間を割り当てる基本的な単位となる。
【０００５】
スレッドをＣＰＵに割り当てるスレッドスケジューリング方式として、待ち行列に入っているスレッドを一定時間毎に順番に選んで実行する単純なラウンドロビン方式や、スレッドの優先度の順に実行するプライオリティ方式などがある。
【０００６】
ラウンドロビン方式では、待ち行列にあるスレッドが一定時間ごとに公平にＣＰＵに割り当てられて実行される。
【０００７】
プライオリティ方式では、優先度毎に設けられた待ち行列に各優先度のスレッドがキューイングされ、優先度の高い待ち行列から順にスレッドが選択されＣＰＵに割り当てられて実行される。
【０００８】
また、１つのシステム内に複数のプロセッサを搭載したマルチプロセッサシステムでは、並列に処理を実行して処理全体の高速化を図ることができる。
【特許文献１】特開２００３−１７８０４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上記のマルチプロセッサシステムにおいて、マルチスレッド環境を実現する場合、スレッドをいずれかのプロセッサに割り当てて実行することになり、スレッドの実行順序によって、プロセスの実行速度やメモリ消費量などの性能が変わってくる。
【００１０】
このような、マルチプロセッサシステムにおけるスレッドスケジューリングでは、プロセッサ資源の利用の効率化や、スレッド間のデータの受け渡しや通信の効率化などについても配慮する必要がある。
【００１１】
このように、マルチプロセッサシステムにおけるスレッドスケジューリングは、シングルプロセッサシステムにおけるスレッドスケジューリングとは違った工夫が必要となる。このため、従来のシングルプロセッサシステムにおける技術では、マルチプロセッサシステムの資源を有効利用し、並列処理の高速化を図ることが困難であった。
【００１２】
本発明は、上記の問題点を解決するためになされたものである。本発明の目的は、マルチプロセッサシステムの資源を有効利用し、並列処理の効率化，高速化を図る仕組みを提供することである。
【課題を解決するための手段】
【００１３】
本発明は、データ処理を分割した処理の１つに当たる実行単位を実行する複数の実行手段と、前記複数の実行手段が実行する実行単位の処理データを記憶する記憶手段と、前記記憶手段に記憶される、並行処理可能なスケジューリング対象の実行単位をグループ化し、各グループに前記実行手段を割り当てるスケジューリング手段と、を有し、前記スケジューリング手段は、前記実行単位に対して処理の緊急度を判断し、前記グループ内の緊急度を有する実行単位の数に応じて、前記各グループに割り当てる実行手段の数を制御することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、マルチプロセッサシステムの資源を有効利用し、並列処理の効率化，高速化を図ることができる等の効果を奏する。
【発明を実施するための最良の形態】
【００１５】
本発明の一実施形態を示す情報処理装置について、図面を参照して説明する。
【００１６】
＜図１の説明＞
図１は、本発明の一実施形態を示すマルチプロセッサシステムで動作する情報処理装置の構成の一例を示すブロック図である。
【００１７】
図１において、１００は、本発明の情報処理装置に対応するプロセッサシステムであり、マルチプロセッサシステム割込み制御方式が採用されるバス共有型マルチプロセッサシステムで動作する。
【００１８】
ＭａｉｎＣＰＵ１０１、ＳｕｂＣＰＵ１０２ａ，・・・，１０２ｎは中央処理装置（プロセッサ）であり、データ処理を行うための演算及び制御を行う。マルチプロセッサシステム１００は、図示しないＲＯＭやハードディスク（ＨＤ）等の記憶媒体を有する。そして、該記憶媒体に格納されるオペレーティングシステム（ＯＳ）や各種アプリケーションプログラムを、ＣＰＵ１０１，１０２ａ，・・・，１０２ｎが読み出して実行することにより各種機能を実現することができる。
【００１９】
１０４はメモリコントローラ（ＭＣ）であり、ＣＰＵ１０１，１０２ａ，・・・，１０２ｎの動作に必要なデータ（処理データ）を格納する共有メモリ（Ｍｅｍｏｒｙ）１０７を制御する。
【００２０】
１０５は割込みコントローラ（内部ＩＣ）であり、マルチプロセッサ１００内のＣＰＵ１０１〜１０３の割込みを制御したり、外部デバイス（Ｉ／Ｏ１０９〜１１１）からの割込みを制御したりする。
【００２１】
１０６はバスコントローラ（ＢＣ）であり、マルチプロセッサシステム１００内及び内部外部のバス１１２通信を制御する。
【００２２】
１０８は外部割込みコントローラ（外部ＩＣ）であり、マルチプロセッサシステム１００に接続されている外部デバイス１０９〜１１１からの割込みを制御し、バスコントローラ１０６を経由し、割込みコントローラ１０５に通知する。
【００２３】
なお、ＭａｉｎＣＰＵ１０１は、データ処理を分割した処理の１つに当たる実行単位（スレッド等）を、ＳｕｂＣＰＵ１０２ａ，・・・，１０２ｎに割り当てるスケジューリングを行う。そして、ＳｕｂＣＰＵ１０２ａ，・・・，１０２ｎは、ＭａｉｎＣＰＵ１０１により割り当てられた実行単位を実行する。なお、ＳｕｂＣＰＵ１０２ａ，・・・，１０２ｎの数は任意である。
【００２４】
＜図２の説明＞
図２は、本発明におけるプロセッサ割り当ての一例を示す図である。詳細には、送信タスク、受信タスク、内部状態通知タスク、その他の処理を処理しているマルチプロセッサに対して、本発明のスケジューリング方法を実施した際の、プロセッサの割り当てを示す。特に、並行処理可能なスケジューリング対象の複数の実行単位に対するプロセッサの割り当てを示す。なお、それぞれのタスクの詳細については後述する図６で説明する。
【００２５】
また、図２に示す例では、マルチプロセッサシステム１００は、１０２ａ〜１０２ｈの８個のＳｕｂＣＰＵを有するものとする。なお、図２では、本発明のマルチプロセッサシステムが８個のＳｕｂＣＰＵを備える例を示しているが、本発明はＳｕｂＣＰＵの数で限定されるものではない。
【００２６】
図２に示すように、受信タスク２０１、状態通知タスク２０２、送信タスク２０３には、それぞれ割り当て可能なプロセッサの最大数（ＭＡＸ）、最少数（ＭＩＮ）を定める。なお、前記割り当て可能なプロセッサの最大数，最少数は、メモリ１０７又は不図示のＨＤに記憶されている。
【００２７】
ここで、状態１（２０５）では、各々のタスクに１個のプロセッサが割り当てられており、余ったプロセッサに関してはその他の処理に用いられている。
【００２８】
次に、受信タスク２０１，送信タスク２０３へ緊急度の高い処理が入力され、状態２（２０６）へ遷移すると、ＭａｉｎＣＰＵ１０１は、その他の処理に用いられているプロセッサを受信タスク２０１，送信タスク２０３へと割り振るように制御する。なお、実行単位の「緊急度」は、その実行単位の生成時に付けられるものとする。なお、この緊急度は、変更されないものであってもよいし、ＯＳ等により変更されるものであってもよい。
【００２９】
以下、状態１（２０５）から状態２（２０６）への遷移を詳細に説明する。
【００３０】
ＭａｉｎＣＰＵ１０１は、受信タスク２０１に、２個のＳｕｂＣＰＵ（１０２ｃ，１０２ｇ）を割り当てる。また、ＭａｉｎＣＰＵ１０１は、送信タスク２０３に、３個のＳｕｂＣＰＵ（１０２ａ，１０２ｅ，１０２ｆ）を割り当てる。なお、状態通知タスク２０２に関しては、緊急度の高い処理を持っていないため、ＭａｉｎＣＰＵ１０１は、１個のＳｕｂＣＰＵ（１０２ｂ）を割り当てたままにしている。
【００３１】
以上に示したように、本マルチプロセッサシステム１００は、並行処理可能なスケジューリング対象の複数の実行単位をタスク毎にグループ化し、各グループ（即ち各タスク）に上記複数のＳｕｂＣＰＵを割り当てるスケジューリング処理を行うものである。
【００３２】
＜図３の説明＞
図３Ａ，図３Ｂ，図３Ｃは、本発明におけるスケジューリング方法を実施した際のプロセッサの割り当てを詳細に示した図である。
【００３３】
特に、送信タスク、受信タスク、内部状態通知タスク、その他の処理を処理しているマルチプロセッサに対して、本発明のスケジューリング方法を実施した際の、プロセッサの割り当てを示す。
【００３４】
なお、図３Ａ〜図３Ｃに示す例では、マルチプロセッサシステム１００は、１０２ａ〜１０２ｆの６個のＳｕｂＣＰＵを有するものとする。なお、図３Ａ〜図３Ｃでは、本発明のマルチプロセッサシステムが６個のＳｕｂＣＰＵを備える例を示しているが、本発明はＳｕｂＣＰＵの数で限定されるものではない。
【００３５】
図３Ａに示す状態１において、受信タスク２０１に割り当て可能なプロセッサの最大数は２個（ＭＡＸ２）、最少数は１個（ＭＩＮ１）と設定されているものとする。
【００３６】
状態通知タスク２０２に割り当て可能なプロセッサの最大数は１個（ＭＡＸ１）、最少数は１個（ＭＩＮ１）と設定されているものとする。
【００３７】
送信タスク２０３に割り当て可能なプロセッサの最大数は３個（ＭＡＸ３）、最少数は１個（ＭＩＮ１）と設定されているものとする。なお、これらのタスクに設定された最大数，最小数は、それぞれのタスクの負荷に応じて変更可能である。
【００３８】
まず、状態１（３３１）として、受信タスク２０１は、実行単位ａ１（３０５）、ａ２（３０６）、ａ３（３０７）を持っている（タスク毎のキュー内に格納されている）。ここで、実行単位ａ２（３０６）は、緊急度の高い実行単位である。
【００３９】
また、状態通知タスク２０２は、実行単位ｂ１（３０８）、ｂ２（３０９）を持っている。ここで、実行単位ｂ２（３０９）は、緊急度の高い実行単位である。
【００４０】
さらに、送信タスク２０３は、実行単位ｃ１（３１０）、ｃ２（３１１）、ｃ３（３１２）を持っている。また、その他の処理２０４は、実行単位ｏ１（３１３）、ｏ２（３１４）、ｏ３（３１５）を持っている。
【００４１】
ここで、受信タスク２０１には、緊急度の高い実行単位ａ２（３０６）が入力されている（タスク毎のキュー内に格納されている）ため、２個のＳｕｂＣＰＵ１０２ａ，１０２ｂが割り当てられている。
【００４２】
状態通知タスク２０２には、緊急度の高い実行単位ｂ２（３０９）が入力されているが、状態通知タスク２０２に割り当て可能なプロセッサの最大数は１個であるため、１個のＳｕｂＣＰＵ１０２ｃが割り当てられている。
【００４３】
また、送信タスク２０３には、実行単位ｃ１（３１０）、ｃ２（３１１）、ｃ３（３１２）の３個の実行単位が入力されているが、いずれも緊急度の高い実行単位ではないため、１個のＳｕｂＣＰＵ１０２ｄが割り当てられている。
【００４４】
また、残りのＳｕｂＣＰＵ１０２ｅ，１０２ｆには、その他の処理２０４が割り当てられている。
【００４５】
次に、送信タスク２０３に緊急度の高い実行単位Ｃ４（３１６）が入力され、状態２（３３２）に遷移する。
【００４６】
ここで、図３Ｂに示す状態２（３３２）において、ＭａｉｎＣＰＵ１０１は、緊急度の高い実行単位Ｃ４（３１６）が送信タスク２０３に入力された為、送信タスク２０３に割り当てられるＳｕｂＣＰＵの数を、１個から２個へ増加するように制御する。ＳｕｂＣＰＵ１０２ｅには、その他の処理２０４が割り当てられ、実行単位ｏ１（３１３）が実行されていたが、実行単位ｏ１（３１３）が終了したと同時に、送信タスク２０３にＳｕｂＣＰＵ１０２ｅを割り当てるようにＭａｉｎＣＰＵ１０１が制御する。
【００４７】
このため状態２（３３２）では、受信タスク２０１に、ＳｕｂＣＰＵが２個（１０２ａ、１０２ｂ）、状態通知タスクにＳｕｂＣＰＵが１個（１０２ｃ）、送信タスク（２０３）にＳｕｂＣＰＵが２個（１０２ｄ、１０２ｅ）割り当てられている。
【００４８】
残りのＳｕｂＣＰＵ（１０２ｆ）には、その他の処理が割り当てられる。
【００４９】
次に、受信タスク２０１の持つ緊急度の高い実行単位ａ２（３０６）が終了すると、状態３（３３３）へ遷移する。
【００５０】
図３Ｃに示す状態３（３３３）では、受信タスク２０１は、実行単位ａ２（３０６）が終了したため、緊急度の高い実行単位を持たなくなる。この為、ＭａｉｎＣＰＵ１０１は、受信タスク２０１に割り当てるＳｕｂＣＰＵを最小数である１個となるように制御する。
【００５１】
このため状態３（３３３）では、受信タスク２０１にＳｕｂＣＰＵが１個（１０２ａ）、状態通知タスク２０２にＳｕｂＣＰＵが１個（１０２ｃ）、送信タスク２０３にＳｕｂＣＰＵが２個（１０２ｄ、１０２ｅ）割り当てられている。残りのＳｕｂＣＰＵ（１０２ｂ、１０２ｆ）には、その他の処理が割り当てられる。
【００５２】
＜図４の説明＞
図４は、本発明のスケジューリング方法における各タスクへのプロセッサの割り当て最大数、最小数の変更方法の一例を示した図である。
【００５３】
本発明のスケジューリング方法では、緊急度の高い実行単位が１個入力されると、そのタスクに割り当てられるサブプロセッサを１個増やすように制御するものとする。
【００５４】
受信タスク２０１、状態通知タスク２０２、送信タスク２０３において、それぞれに割り当て可能なプロセッサ数が、初期状態４２０として定められている。
【００５５】
ここで状態通知タスク２０２は、実行単位ｂ２（４１０）、ｂ３（４１１）を持っている。実行単位ｂ２（４１０），ｂ３（４１１）は、いずれも緊急度の高い実行単位である。
【００５６】
このため、状態通知タスク２０２は、３個のプロセッサの割り当てを必要とするが、初期状態４２０では、状態通知タスク２０２に割り当て可能な最大プロセッサ数は１個（ＭＡＸ１）と設定されている。
【００５７】
この時、スケジュール対象外のその他の処理に割り当てられているサブプロセッサ（ＳｕｂＣＰＵ）が存在していれば、ＭａｉｎＣＰＵ１０１は、状態通知タスク２０２に、割り当てが必要なプロセッサ数を増加するように制御する。
【００５８】
このケースでは、その他の処理に割り当てられているプロセッサが１個あるものとする。よって、ＭａｉｎＣＰＵ１０１は、次状態４２１のように、状態通知タスク２０２への割り当て可能な最大プロセッサ数を１個増やするように制御する。即ち、状態通知タスク２０２への割り当て可能な最大プロセッサ数を２個にする。
【００５９】
そして、状態通知タスク２０２の持つ緊急度の高い実行単位の処理が終了すると、ＭａｉｎＣＰＵ１０１は、割り当て可能な最大プロセッサ数を初期状態４２０に戻すように制御する。
【００６０】
なお、割り当てが必要なプロセッサ数と、割り当て可能な最大プロセッサ数との差がどの程度開いた時に割り当て可能な最大プロセッサ数を増加するかを示すしきい値、タスク毎に予め設定しておき、メモリ１０７又は図示しないＨＤ等の記憶媒体内に記憶さておいてもよい。この場合、ＭａｉｎＣＰＵ１０１は、割り当て可能な最大プロセッサ数から割り当て可能な最大プロセッサ数を減算した値が、上記設定されたしきい値を越えている場合に、対象タスクへの割り当て可能な最大プロセッサ数を増加させるように制御する。
【００６１】
＜図５の説明＞
以下、図５のフローチャートを参照して、本発明におけるスケジューリング処理、即ち各タスクが持つキュー内（実体はメモリ１０７内の記憶領域）にある実行単位をＭａｉｎＣＰＵ１０１がどのＳｕｂＣＰＵ１０２ａ〜１０２ｈへ割り当てるかを説明する。
【００６２】
図５は、本発明においてプロセッサへ実行単位を割り当てるスケジューリング処理の一例を示すフローチャートである。なお、このフローチャートの処理は、図示しないＨＤ等の記憶媒体に格納されるプログラムを、ＣＰＵ１０１が読み出して実行することにより実現される。なお、図中、Ｓ７０１〜Ｓ７０６は各ステップを示す。
【００６３】
また、このフローチャートの処理は、新たな実行単位が生成されたタイミングや実行単位の実行が終了したタイミング等で実行されるものとする。
【００６４】
まず、ＭａｉｎＣＰＵ１０１は、スケジューリング対象の実行単位を持つタスクが、使用可能なＳｕｂＣＰＵの最大数（割り当て可能な最大プロセッサ数（ＭＡＸ））を既に使用しているかどうかを判断する（Ｓ７０１）。
【００６５】
そして、対象の実行単位を持つタスクが既に使用可能なＣＰＵ全てを使用していると判断した場合（Ｓ７０１でＹｅｓ）、対象の実行単位をプロセッサへ割り当てることができないため、ＭａｉｎＣＰＵ１０１はＳ７０１に処理を戻し、待ち状態となる。
【００６６】
一方、上記対象の実行単位を持つタスクが使用可能なＳｕｂＣＰＵのうちまだ使用していないＣＰＵがあると判断した場合（Ｓ７０１でＮｏ）、ＭａｉｎＣＰＵ１０１は、対象の実行単位を持つタスクのキュー内の緊急度の高い実行単位の総数を調べる。
【００６７】
次に、ＭａｉｎＣＰＵ１０１は、緊急度の高い実行単位の総数と対象の実行単位を持つタスクが使用しているＳｕｂＣＰＵの数を比較する（Ｓ７０２）。
【００６８】
そして、緊急度の高い実行単位の総数と対象の実行単位を持つタスクが使用しているＳｕｂＣＰＵの数が等しい場合（Ｓ７０２でＹｅｓ）、対象の実行単位をプロセッサへ割り当てることができないため、ＭａｉｎＣＰＵ１０１は、待ち状態となる。
【００６９】
一方、緊急度の高い実行単位の総数と対象の実行単位を持つタスクが使用しているＳｕｂＣＰＵの数が等しくない場合（Ｓ７０２でＮｏ）、ＭａｉｎＣＰＵ１０１は、空き状態のＳｕｂＣＰＵがあるかを調べる（Ｓ７０３）。
【００７０】
そして、空き状態のＳｕｂＣＰＵがあると判断した場合（Ｓ７０３でＹｅｓ）、ＭａｉｎＣＰＵ１０１は、対象の実行単位を、上記空き状態のＳｕｂＣＰＵに割り当てる（Ｓ７０６）。そして、本フローチャートの処理を終了する。
【００７１】
一方、空き状態のＳｕｂＣＰＵが無いと判断した場合（Ｓ７０３でＮｏ）、ＭａｉｎＣＰＵ１０１は、本スケジューリング対象ではないその他の処理２０４のタスクが使用しているＳｕｂＣＰＵが空き状態となるのを待つ（Ｓ７０４）
そして、本スケジューリング対象ではないその他の処理２０４のタスクが使用しているＳｕｂＣＰＵが空き状態となると、ＭａｉｎＣＰＵ１０１は、該空き状態となったＳｕｂＣＰＵに対して、対象の実行単位を割り当てる（Ｓ７０５）。そして、本フローチャートの処理を終了する。
【００７２】
＜図６の説明＞
図６は、本発明のスケジューリング方法を画像形成装置に対して実施した際の概念図である。なお、この画像形成装置は、図１に示したマルチプロセッサシステム１００に対応しており、送信タスク２０３、受信タスク２０１、状態通知タスク２０２を持っている。
【００７３】
図６に示すように、画像形成装置は、接続されているＰＣ等から機器の状態等の問い合わせ（５０１〜５０３）を受信タスク２０１にて受け取る。即ち、これらの受信処理に対応する実行単位が受信タスク２０１のキューに格納され、該キュー内の実行単位を受信タスク２０１に割り当てられているＳｕｂＣＰＵが実行する。この時、問い合わせ５０２は、緊急度の高い問い合わせとする。
【００７４】
また、緊急度の高い問い合わせの例としては、機器が印刷不可能になった際のエラー状態に対する問い合わせ等が挙げられる。
【００７５】
受信タスク２０１が問い合わせ（５０１〜５０３）を受け取ると、画像処理装置は、問い合わせに応じた処理（５１３）を行う。なお、上記問い合わせに対応する処理５１３の例としては、印刷不可能になった際のエラー状態に対する問い合わせに対して、画像形成装置が、自身のエラー状態を確認して送信タスク２０３へ応答結果を送る処理等が挙げられる。
【００７６】
また、状態通知タスク２０２も、送信タスク２０３へジョブ制御５１４が検知した機器の状態変化を送る処理を行う。即ち、この処理に対応する実行単位が状態通知タスク２０２のキューに格納され、該キュー内の実行単位を状態通知タスク２０２に割り当てられているＳｕｂＣＰＵが実行する。
【００７７】
さらに、状態通知タスク２０２は、上記ジョブ制御５１４が検知した機器の状態変化を内部状態の変化を状態変化通知（５１０〜５１２）としてＵＩ５１５へも伝える処理を行う。即ち、これらの処理に対応する実行単位が状態通知タスク２０２のキューに格納され、該キュー内の実行単位を状態通知タスク２０２に割り当てられているＳｕｂＣＰＵが実行する。
【００７８】
問い合わせの応答結果や状態変化通知を受け取った送信タスク２０３は、それらを通知情報（５０７〜５０９）として、画像形成装置に接続されている機器へ送信する処理を行う。即ち、これらの送信処理に対応する実行単位が送信タスク２０３のキューに格納され、該キュー内の実行単位を送信タスク２０３に割り当てられているＳｕｂＣＰＵが実行する。
【００７９】
なお、画像形成装置のＭａｉｎＣＰＵ１０１は、上述した処理が行われている間も、スケジュール対象のタスクのキューに積まれた実行単位の緊急度を判断して、各タスクに割り当てるＳｕｂＣＰＵの数を制御している。
【００８０】
即ち、ＭａｉｎＣＰＵ１０１は、受信タスク２０１、状態通知タスク２０２、送信タスク２０３に緊急度の高い入力があると、図５に示したスケジューリング処理を実行する。即ち、ＭａｉｎＣＰＵ１０１は、緊急度の高い入力があったタスクに割り当てられるプロセッサ（ＳｕｂＣＰＵ）の数を増加するように制御する。
【００８１】
この際、ＭａｉｎＣＰＵ１０１は、タスク毎に設定される割り当て可能なプロセッサの最大数と最小数の範囲内で、各タスクに割り当てるプロセッサの数を制御する。
【００８２】
また、ＭａｉｎＣＰＵ１０１は、タスク毎に設定される割り当て可能なプロセッサの最大数と最小数を、各タスクの緊急度を有する実行単位の数に応じて変更設定する。例えば、タスク内の緊急度を有する実行単位の数と該タスクに割り当て可能なプロセッサの最大数との差に応じて、該タスクに設定される割り当て可能なプロセッサの最大数を変更設定する。
【００８３】
＜図７の説明＞
図７は、図２における送信タスク、受信タスク、状態通知タスクの詳細例を示す図である。
【００８４】
デバイス６０２は、図１に示したマルチプロセッサシステム１００に対応しており、送信タスク２０３、受信タスク２０１、状態通知タスク２０２が実装されている。
【００８５】
ＰＣ６０１は、デバイス６０２へ対して、印刷可能かどうかといった機器状態に関する問い合わせ６０３を行う。この時、この問い合わせの受信処理を、デバイス６０２の受信タスク２０１が行う。即ち、この受信処理に対応する実行単位が受信タスク２０１のキューに格納され、該キュー内の実行単位を、受信タスク２０１に割り当てられているＳｕｂＣＰＵが実行する。
【００８６】
また、上記機器状態に関する問い合わせ６０３を受信すると、デバイス６０２は、自身が印刷可能状態かどうか確認する等の自身の状態確認を行い、機器状態に関する問い合わせ６０３に対する機器状態の返答６０４をＰＣ６０１に送信する処理を行う。即ち、この処理に対応する実行単位が対応するタスクのキューに格納され、該キュー内の実行単位を、その他の処理２０４に割り当てられているＳｕｂＣＰＵが実行する。
【００８７】
また、デバイス６０２内で、機器故障のような内部状態の変化６０５が発生すると、デバイス６０２は、自身が持つパネルなどの表示手段を用いて、内部状態の変化６０５を表示する処理を行う（６０６）。この時この内部状態変化の表示処理に対応する実行単位が状態通知タスク２０２のキューに格納され、該キュー内の実行単位を、状態通知タスク２０２に割り当てられているＳｕｂＣＰＵが実行する。
【００８８】
また、デバイス６０２を上記内部状態の変化６０５を、ＰＣ６０１に対しても通知する（６０７）。この時、ＰＣ６０１に対する内部状態変化の通知処理に対応する実行単位が送信タスク２０３のキューに格納され、該キュー内の実行単位を送信タスク２０３に割り当てられているＳｕｂＣＰＵが実行する。
【００８９】
なお、デバイス６０２のＭａｉｎＣＰＵ１０１は、上述した処理が行われている間も、スケジュール対象のタスクのキューに積まれた実行単位の緊急度を判断して、各タスクに割り当てるＳｕｂＣＰＵの数を制御している。
【００９０】
即ち、ＭａｉｎＣＰＵ１０１は、受信タスク２０１、状態通知タスク２０２、送信タスク２０３に緊急度の高い入力があると、図５に示したスケジューリング処理を実行する。即ち、ＭａｉｎＣＰＵ１０１は、緊急度の高い入力があったタスクに割り当てられるプロセッサ（ＳｕｂＣＰＵ）の数を増加するように制御する。
【００９１】
この際、ＭａｉｎＣＰＵ１０１は、タスク毎に設定される割り当て可能なプロセッサの最大数と最小数の範囲内で、各タスクに割り当てるプロセッサの数を制御する。
【００９２】
また、ＭａｉｎＣＰＵ１０１は、タスク毎に設定される割り当て可能なプロセッサの最大数と最小数を、各タスクの緊急度を有する実行単位の数に応じて変更設定する。例えば、タスク内の緊急度を有する実行単位の数と該タスクに割り当て可能なプロセッサの最大数との差に応じて、該タスクに設定される割り当て可能なプロセッサの最大数を変更設定する。
【００９３】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
【００９４】
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【００９５】
以下、図８に示すメモリマップを参照して、本発明に係る情報処理装置で読み取り可能な各種データ処理プログラムを格納する記憶媒体のメモリマップの構成について説明する。
【００９６】
図８は、本発明に係る情報処理装置で読み取り可能な各種データ処理プログラムを格納する記憶媒体（記録媒体）のメモリマップを説明する図である。
【００９７】
なお、特に図示しないが、記憶媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報，作成者等も記憶され、かつ、プログラム読み出し側のＯＳ等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【００９８】
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、各種プログラムをコンピュータにインストールするためのプログラムや、インストールするプログラムが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
【００９９】
本実施形態における図５に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、ＣＤ−ＲＯＭやフラッシュメモリやＦＤ等の記憶媒体により、あるいはネットワークを介して外部の記憶媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
【０１００】
以上のように、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【０１０１】
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１０２】
したがって、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【０１０３】
プログラムを供給するための記憶媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤなどを用いることができる。
【０１０４】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１０５】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のプログラムそのものをハードディスク等の記憶媒体にダウンロードすることによっても供給できる。また、該ホームページから圧縮され自動インストール機能を含むファイルをハードディスク等の記憶媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバやＦＴＰサーバ等も本発明の請求項に含まれるものである。
【０１０６】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布する。さらに、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。さらに、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０１０７】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、以下のような構成も含まれることは言うまでもない。例えば、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１０８】
さらに、記憶媒体から読み出されたプログラムコードを、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込む。そして、該メモリに書き込まれたプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１０９】
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記憶媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０１１０】
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施形態の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。
【０１１１】
本発明の様々な例と実施形態を示して説明したが、当業者であれば、本発明の趣旨と範囲は、本明細書内の特定の説明に限定されるのではない。
【０１１２】
なお、上述した各実施形態及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
【０１１３】
以上説明したように、本実施形態では、ＭａｉｎＣＰＵ１０１が複数の並行処理可能なスケジューリング対象の実行単位（スレッド）をタスク毎にグループ化し、各グループにＳｕｂＣＰＵ１０２ａ〜１０２ｎを割り当てるスケジューリング処理を行う。このスケジューリング処理では、実行単位に対して処理の緊急度を判断し、前記グループ内の緊急度を有する実行単位の数に応じて、前記各グループに割り当てるＳｕｂＣＰＵ１０２の数を制御する。
【０１１４】
また、グループ毎に、割り当てられるＳｕｂＣＰＵ１０２の最大数と最小数を設定しておく。そして、前記スケジューリング処理では、前記各グループに割り当てられるＳｕｂＣＰＵ１０２の最大数と最小数の範囲内で、前記各グループに割り当てるＳｕｂＣＰＵ１０２の数を制御する。
【０１１５】
また、前記スケジューリング処理において、前記グループ毎に割り当てられるＳｕｂＣＰＵ１０２の最大数と最小数を、前記グループ内の緊急度を有する実行単位の数と該グループに割り当てられる実行手段の最大数との差に応じて変更設定する。
【０１１６】
このような構成によれば、マルチプロセッサシステムの資源を有効利用し、並列処理の効率化，高速化を図ることができる。
【図面の簡単な説明】
【０１１７】
【図１】本発明の一実施形態を示すマルチプロセッサシステムで動作する情報処理装置の構成の一例を示すブロック図ある。
【図２】本発明におけるプロセッサ割り当ての一例を示す図である。
【図３Ａ】本発明におけるスケジューリング方法を実施した際のプロセッサの割り当てを詳細に示した図である。
【図３Ｂ】本発明におけるスケジューリング方法を実施した際のプロセッサの割り当てを詳細に示した図である。
【図３Ｃ】本発明におけるスケジューリング方法を実施した際のプロセッサの割り当てを詳細に示した図である。
【図４】本発明のスケジューリング方法における各タスクへのプロセッサの割り当て最大数、最小数の変更方法の一例を示した図である。
【図５】本発明においてプロセッサへ実行単位を割り当てるスケジューリング処理の一例を示すフローチャートである。
【図６】本発明のスケジューリング方法を画像形成装置に対して実施した際の概念図ある。
【図７】図２における送信タスク、受信タスク、状態通知タスクの詳細例を示す図である。
【図８】本発明に係る情報処理装置で読み取り可能な各種データ処理プログラムを格納する記憶媒体（記録媒体）のメモリマップを説明する図である。
【符号の説明】
【０１１８】
１００    マルチプロセッサシステム
１０１    ＭａｉｎＣＰＵ
１０２ａ〜１０２ｎ    ＳｕｂＣＰＵ
１０７    メモリ
【図１】
2009211604.tif 000003
【図２】
2009211604.tif 000004
【図３Ａ】
2009211604.tif 000005
【図３Ｂ】
2009211604.tif 000006
【図３Ｃ】
2009211604.tif 000007
【図４】
2009211604.tif 000008
【図５】
2009211604.tif 000009
【図６】
2009211604.tif 000010
【図７】
2009211604.tif 000011
【図８】
2009211604.tif 000012