(57)【要約】      （修正有）【課題】限られたリソースを最大限利用するために、複数のプロセッサが必要な処理を効率的に実行することができるようにする。【解決手段】システムレベル管理部２４がシステム処理を発生させて処理要求をユーザレベル管理部のタスク割り当て部２６に行う（Ｓ２０）。タスク割り当て部２６は導入しているユーザレベルスケジューリングの手順に則りシステム処理をスケジューリングする（Ｓ２２）。システム処理を割り当てられた処理ユニット２２ｄは、アプリケーションのタスクを好適なタイミングで休止するか終了した時点で、システム処理が受け入れ可能である旨の通知を主処理ユニットに送信する（Ｓ２４）。システムレベル管理部２４は、実行期限までにＳ２４の通知を受けた場合、処理ユニット２２ｄにシステム処理を開始させる（Ｓ２８）。【選択図】図６
2010165259.tif 000002
【特許請求の範囲】
【請求項１】
プログラムのタスクを処理するタスク処理部と、
実行中のプログラムの外部プログラムが呼び出された場合に、当該外部プログラムのタスクに実行条件を付加して処理要求を発行する処理要求部と、
前記処理要求部が処理要求を発行した前記外部プログラムのタスクを前記タスク処理部におけるタスク処理のスケジュール制御に組み入れるタスク割り当て部と、
前記タスク処理部における前記外部プログラムのタスクの処理において、前記処理要求部が付加した実行条件に対する違反が生じたか否かを判定する実行監視部と、
前記実行監視部が実行条件違反が生じたと判定した際に、前記タスク処理部の処理を前記外部プログラムのタスクに切り替える実行制御部と、
を備えたことを特徴とする情報処理装置。
【請求項２】
前記処理要求部は、前記外部プログラムのタスクとしてシステムレベルのタスクに、実行条件を付加して処理要求を発行することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記処理要求部は、前記実行条件として、処理要求を発行してから実行開始までに許容される実行期限を設定することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記実行監視部は、前記タスク処理部から、前記外部プログラムのタスク処理を受け入れ可能である旨の通知が、前記実行期限以内になされなかった場合に、実行条件違反が生じたと判定することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記タスク割り当て部は、前記外部プログラムの処理内容の種別に対してあらかじめ設定された優先度、実行期限、動作周期、および実行時間、の少なくともいずれかの情報を特定し、特定した情報に基づき、前記タスク処理部の処理のスケジュールを決定することを特徴とする請求項１から３のいずれかに記載の情報処理装置。
【請求項６】
前記タスク割り当て部は、タスクの処理スケジュールを前記タスク処理部ごとに生成し、前記処理要求部が前記外部プログラムのタスクの処理要求を発行した際、当該外部プログラムのタスクを前記タスク処理部ごとの処理スケジュールのいずれかに挿入し、
前記タスク処理部は、前記タスク割り当て部が生成した処理スケジュールに則りタスクを処理することを特徴とする請求項１から３のいずれかに記載の情報処理装置。
【請求項７】
前記タスク割り当て部は、タスクをメモリのタスクキューに格納し、前記処理要求部が前記システムレベルのタスクの処理要求を発行した際、当該タスクに係る情報を、ユーザレベルのタスクと同様の情報に変換したうえ、前記メモリのタスクキューに格納し、
前記タスク処理部は、前記タスクキューに格納されたタスクから選択したタスクを処理することを特徴とする請求項２に記載の情報処理装置。
【請求項８】
前記タスク割り当て部は、前記システムレベルのタスクに係る情報をユーザレベルのタスクと同様の情報に変換する際、当該システムレベルのプログラムを呼び出したプログラムにおいて、当該システムレベルのプログラムのタスクに対し設定された優先度および割り当てることのできるタスク処理部の数の少なくともいずれかを、変換後の情報に付加することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記処理要求部は、実行中のプログラムにおいて、呼び出す外部プログラムのタスクを前記タスク処理部におけるタスク処理のスケジュール制御へ組み入れない旨の設定がなされていた場合、前記処理要求を発行せず、前記実行制御部は、いずれかの前記タスク処理部の処理を、呼び出された外部プログラムのタスクへ切り替えることを特徴とする請求項１に記載の情報処理装置。
【請求項１０】
実行すべきプログラムのタスクをプロセッサにおいて処理するステップと、
実行中のプログラム以外のシステムレベルのプログラムが呼び出された場合、実行中のプログラムのタスクについて行っていたユーザレベルのスケジュール制御に、当該システムレベルのプログラムのタスクを組み入れるステップと、
スケジュール制御に組み入れられた前記システムレベルのプログラムのタスクを前記プロセッサにおいて処理するステップと、
を含むことを特徴とする情報処理方法。
【請求項１１】
前記システムレベルのプログラムのタスクに実行条件を付加するステップと、
前記実行条件に違反が生じた場合に、いずれかのプロセッサにおけるタスクの処理を、前記システムレベルのプログラムのタスクに切り替えるステップと、
をさらに含むことを特徴とする請求項１０に記載の情報処理方法。
【請求項１２】
実行すべきプログラムのタスクを処理する機能と、
実行中のプログラム以外のシステムレベルのプログラムが呼び出された場合、実行中のプログラムのタスクについて行っていたユーザレベルのスケジュール制御に、当該システムレベルのプログラムのタスクを組み入れる機能と、
をコンピュータに実現させ、
前記タスクを処理する機能は、スケジュール制御に組み入れられた前記システムレベルのプログラムのタスクも処理することを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理技術に関し、特に複数の計算資源に処理を分散させてコンピュータプログラムを実行するための技術に関する。
【背景技術】
【０００２】
コンピュータゲームやウェブ検索ソフトをはじめとするソフトウェアの高機能化は、ハードウェアに対して大きな処理負荷をかけるようになってきている。このような状況に対処するためには、演算処理自体の高速化が必要であることはもちろんであるが、複数のプロセッサを導入し、タスク処理を効率的に行うことも重要である。このとき、いかに高い稼働率で個々のプロセッサを動作させるかが、処理の高速化に対し重要な鍵となる。
【０００３】
複数のプロセッサにタスク処理を並列に実行させるためには、一般的にはＯＳ（オペレーティングシステム）が、処理のタスクへの分割、各プロセッサへのタスクの割り当て、処理の切り替え、各プロセッサからメインメモリや入出力装置へのアクセスの制御などを行う場合が多い。一方で、ＯＳ上で動作するユーザレベルのタスクがスケジューリングなどのタスク処理の管理を行うユーザレベルスケジューリングの手法も提案されている。例えば、タスクをメインメモリのキューに格納しておき、タスクを実行するプロセッサが自ら当該キューからタスクを選択して実行する技術が提案されている（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−５２５１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述のように、複数のプロセッサがタスク処理を並列に実行することによってプログラムの処理速度を確保する技術は一般的なものになっている。一方で、高度な処理を高速に行うことに対するユーザのニーズは留まるところを知らず、限られたリソースを最大限利用するために処理を効率化できる技術が望まれている。
【０００６】
本発明はこのような課題に鑑みてなされたものであり、その目的は、複数のプロセッサが必要な処理を効率的に実行することのできる技術を提供することにある。
【課題を解決するための手段】
【０００７】
本発明のある態様は情報処理装置に関する。この情報処理装置は、プログラムのタスクを処理するタスク処理部と、実行中のプログラムの外部プログラムが呼び出された場合に、当該外部プログラムのタスクに実行条件を付加して処理要求を発行する処理要求部と、処理要求部が処理要求を発行した外部プログラムのタスクをタスク処理部におけるタスク処理のスケジュール制御に組み入れるタスク割り当て部と、タスク処理部における外部プログラムのタスクの処理において、処理要求部が付加した実行条件に対する違反が生じたか否かを判定する実行監視部と、実行監視部が実行条件違反が生じたと判定した際に、タスク処理部の処理を外部プログラムのタスクに切り替える実行制御部と、を備えたことを特徴とする。
【０００８】
ここで「外部プログラム」とは、一般的にはＯＳが提供する機能を実現するためのライブラリ、カーネルなどであるが、呼び出し元のプログラム以外のプログラムであればその種別や処理内容は限定されない。
【０００９】
本発明の別の態様は情報処理方法に関する。この情報処理方法は、実行すべきプログラムのタスクをプロセッサにおいて処理するステップと、実行中のプログラム以外のシステムレベルのプログラムが呼び出された場合、実行中のプログラムのタスクについて行っていたユーザレベルのスケジュール制御に、当該システムレベルのプログラムのタスクを組み入れるステップと、スケジュール制御に組み入れられたシステムレベルのプログラムのタスクをプロセッサにおいて処理するステップと、を含むことを特徴とする。
【００１０】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１１】
本発明によれば、複数のプロセッサによるタスクの並列処理を容易に効率化することができる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１を適用できる情報処理装置の構成例を示す図である。
【図２】一つの処理ユニットにのみシステム処理を行わせた場合の、処理ユニットにおけるタスク処理の推移を概念的に示す図である。
【図３】実施の形態１における、ユーザレベルスケジューラによってシステム処理をスケジューリングする場合の一態様として実現される、各処理ユニットにおけるタスク処理の推移の例を概念的に示す図である。
【図４】実施の形態１における処理ユニットの構成をより詳細に示す図である。
【図５】実施の形態１におけるシステム処理の発生から開始までの全体的な流れを示すフローチャートである。
【図６】実施の形態１においてシステム処理を実行するための処理手順を模式的に示す図である。
【図７】実施の形態１においてシステム処理要求部がタスク割り当て部にシステム処理要求を行う際に通知する、システム処理に係る情報のデータ構造例を示す図である。
【図８】実施の形態２で適用する自律的なユーザレベルスケジューリングの概要を説明するための図である。
【図９】実施の形態２においてワークロードのそれぞれに設定された割り当て条件の例を示す図である。
【図１０】実施の形態２において図９に示した割り当て条件を設定した際、処理ユニットが各ワークロードを選択し、処理する過程の例を模式的に示す図である。
【図１１】実施の形態２においてシステム処理を仮想ワークロードとして実行する際の処理手順を模式的に示す図である。
【図１２】実施の形態２においてタスク割り当て部が要求されたシステム処理を仮想ワークロードに変換する際に参照する変換テーブルの例を示す図である。
【図１３】実施の形態２において自律的なユーザレベルスケジューラを導入した際にシステム処理を実行する処理手順を示すフローチャートである。
【図１４】実施の形態２において実現できる、６つの処理ユニットにおける処理の推移の例を示す図である。
【図１５】実施の形態２において実現できる、６つの処理ユニットにおける処理の推移の例を示す図である。
【図１６】実施の形態２において実現できる、６つの処理ユニットにおける処理の推移の例を示す図である。
【発明を実施するための形態】
【００１３】
実施の形態１
図１は、本実施の形態を適用できる情報処理装置の構成例を示している。情報処理装置１０は、マイクロプロセッサユニット１８、入出力装置（Ｉ／Ｏ）４２、メインメモリ４４、補助記憶装置（ＨＤＤ）４６を備え、それぞれがバス４８を介して接続される。マイクロプロセッサユニット１８は、複数の処理ユニット２２ａ、２２ｂ、・・・、２２ｎがそれぞれ内部バス１９を介して接続する構成を有する。
【００１４】
処理ユニット２２ａ、２２ｂ、・・・、２２ｎはいずれも、演算装置、ローカルメモリなどを含む処理ユニットである。処理ユニット２２ａ、２２ｂ、・・・、２２ｎは、ＯＳや起動されたアプリケーションプログラム（以後、単に「アプリケーション」と呼ぶ）のタスクを処理する。入出力装置（Ｉ／Ｏ）４２、メインメモリ４４、補助記憶装置（ＨＤＤ）４６は、一般的な情報処理装置に設けられる入出力装置、メモリ、補助記憶装置で構成してよい。
【００１５】
図１に示したような構成の情報処理装置１０においては、処理ユニット２２ａ、２２ｂ、・・・、２２ｎの少なくともいずれかが、入出力装置４２やメインメモリ４４などのデバイスへのアクセスを要する処理など、システムレベルの処理を行う必要がある。以後、このような処理を「システム処理」と呼ぶ。これに対しアプリケーションなどユーザレベルのタスク処理はユーザ処理、と捉えることができる。システム処理を実行しない処理ユニットは、主にアプリケーションなどユーザレベルのタスクを並列に処理する。
【００１６】
このような場合、アプリケーションを高速処理するためには、ある処理ユニットにシステム処理のみを行わせるのでなく、処理の空き時間にアプリケーションのタスクも処理させることが望ましい。図２は処理ユニット２２ａをシステム処理を行う処理ユニットとした場合の、処理ユニット２２ａ、２２ｂ、・・・、２２ｎにおけるタスク処理の推移を概念的に示している。図中、横軸が時間であり、矩形で示された、各処理ユニットにおいて処理されるタスクのうち、白い矩形がアプリケーションのタスク、斜線網掛けの矩形がシステム処理のタスクとする。
【００１７】
処理ユニット２２ａではシステム処理のタスク２、３、５が処理され、その空き時間にアプリケーションのタスク４を処理している。一方、その他の処理ユニット２２ｂ、・・・、２２ｎでは常時、アプリケーションのタスク６を処理している。図では省略しているが、タスク６は当然、処理ユニットごとに処理が行われ、同じ処理ユニットでも適宜コンテキストスイッチを行っているものとする。
【００１８】
一般的にアプリケーションのタスクと比較して、システム処理は高い優先度を必要とする場合が多い。そのため図２に示したような態様において、処理ユニット２２ａがアプリケーションのタスク４を処理している途中でシステム処理のタスク５が発生すると、ユーザレベルのスケジューリングに関係なく、アプリケーションのタスク４は当該処理ユニット２２ａをシステム処理のタスク５に明け渡さざるを得なくなる。
【００１９】
アプリケーションを作成する段階で、システム処理がどのように発生するかを予測することは困難であるため、並列処理用にアプリケーションを作成したとしても、処理ユニット２２ａに割り当てるタスク４をどのように切り出すかは難しい問題である。例えば、処理ユニット２２ａがアプリケーションのタスクを処理できる時間が予測できないため、同じアプリケーションのタスク６を処理している処理ユニット２２ｂ、・・・、２２ｎと通信の必要が発生しても、当該通信処理を好適なタイミングで実行できる保障がない。またアプリケーションのタスク４を突然休止せざるを得ないため、保存すべきデータが多くなりコンテキストスイッチに要する時間７が長くなる。
【００２０】
本実施の形態では、このような状況を回避しつつ処理の高速化を実現するため、システム処理の処理スケジューリングをユーザレベルスケジューラに行わせることにより、ユーザレベルの処理スケジュールに組み入れる。図３はユーザレベルスケジューラによってシステム処理をスケジューリングする場合の一態様として実現される、処理ユニット２２ａ、２２ｂ、・・・、２２ｎにおけるタスク処理の推移の例を概念的に示している。図の示し方は図２と同様である。
【００２１】
同図に示すように、全ての処理ユニット２２ａ、２２ｂ、・・・、２２ｎは、基本的にアプリケーションのタスク８を実行する。そしてシステム処理のタスク２、３、５が発生したら、導入されているユーザレベルスケジューリングの手順に基づき、いずれかの処理ユニットが当該処理を実行するようにスケジューリングする。例えば優先度の低いアプリケーションのタスクを処理している処理ユニットや、他の処理ユニットが処理中のタスクと関連性の低いタスクを処理している処理ユニットなどを選択してシステム処理を割り当てる。このときシステム処理を割り当てられた処理ユニットは、自らが実行中のアプリケーションのタスクをコンテキストスイッチの観点で好適なタイミングで休止するか処理中のタスクが終了した時点でシステム処理を開始する。
【００２２】
このようにすることで、システム処理の負荷を分散させることができるとともに、アプリケーションのタスクが突然、システム処理のタスクによって休止させられるという状況を回避でき、システム処理とアプリケーションのタスクの双方を可能な限り進捗させることができる。このとき、上述した、一つの処理ユニットのみ、アプリケーションに必要な通信を行いづらい、といった状況を回避できるため、全ての処理ユニットを利用して並列に処理を行うプログラムを作成すればよく、プログラム作成が容易である。またコンテキストスイッチに要する時間を削減することができ、全体として処理速度が向上する。
【００２３】
図４は処理ユニット２２ａの構成をより詳細に示している。情報処理装置１０は図１に示すように処理ユニット２２ａ以外の処理ユニットを有していてよく、その数は限定しない。
【００２４】
処理ユニット２２ａは、システム処理のタスクを管理するシステムレベル管理部２４、アプリケーションのタスクなどユーザレベルのタスクを管理するユーザレベル管理部２５を含む。システムレベル管理部２４は、処理中のタスクにおいてシステム系のプログラムが呼び出された場合などシステム処理の必要が生じた際、システム処理要求をユーザレベル管理部２５に発行するシステム処理要求部２７、処理ユニットにおけるシステム処理の実行を監視する実行監視部２８、および、システム処理の実行条件に違反した際、処理ユニット２２ａ、２２ｂなどのいずれかにシステム処理を強制的に実行させる実行制御部３０を含む。ユーザレベル管理部２５は、主としてアプリケーションなどユーザレベルのプログラムをタスクに分割し、各処理ユニットに割り当てるタスク割り当て部２６を含む。
【００２５】
処理ユニット２２ａはさらに、割り当てられたタスクをスケジュールに則り処理するタスク処理部３２、システム処理が開始できる状態となった際、システムレベル管理部２４に通知する通信部３４、タスクの処理に必要なデータをメインメモリ４４から読み出し格納するローカルメモリ３６を含む。なおその他の処理ユニット２２ｂ、・・・、２２ｎは処理ユニット２２ａと同様の構成としてもよいし、例えばタスク処理部３２、通信部３４、およびローカルメモリ３６など、一部の機能ブロックのみ有する構成としてもよい。この場合、システムレベル管理部２４およびユーザレベル管理部２５を有する処理ユニットは、それらを持たない他の処理ユニットのタスク処理も管理してよい。
【００２６】
図４において、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、ＣＰＵ（Central Processing Unit）、メモリ、その他のＬＳＩで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。例えばユーザレベル管理部２５はタスク処理部３２で処理するタスクのひとつであってもよく、この場合、当該機能ブロックはタスク処理部３２の一部と考えることもできる。
【００２７】
システムレベル管理部２４のシステム処理要求部２７は、処理ユニット２２ａ、２２ｂなどにおいて処理されているタスクによってＯＳが提供するライブラリが呼び出された際などに、当該ライブラリに対応するシステム処理を発生させ、当該システム処理に係る情報をユーザレベル管理部２５のタスク割り当て部２６に通知することによりシステム処理の実行を要求する。
【００２８】
ここでタスク割り当て部２６に通知する、システム処理に係る情報には、当該システム処理を実行する条件を含ませる。実行条件としては例えば、システム処理が開始されるまでの許容時間である実行期限や、実行する処理ユニットなどが挙げられる。実行条件を違反した場合、例えば実行期限を超過してもシステム処理が実行されない場合は、後述するように、いずれかの処理ユニットにおけるアプリケーションのタスクを強制的に休止させてシステム処理を実行させる。実行条件の情報や処理要求発行タイミングなどの情報はシステムレベル管理部２４内で共有される。
【００２９】
実行監視部２８は、処理ユニット２２ａ、２２ｂなどのいずれかでシステム処理が実行期限内に実行されたかなど、実行条件が守られたか否かを監視する。実行期限が実行条件として指定されている場合、例えば実行監視部２８には図示しないタイマを設け、システム処理要求部２７がシステム処理の実行要求を発行させてからの経過時間を測定する。そして通信部３４からのシステム処理の受け入れ可能の通知が、タイマで測定した実行期限内になされなかった場合は、システム処理の実行条件に違反したと判定する。
【００３０】
実行制御部３０は、実行監視部２８によってシステム処理の実行条件違反が判定された場合に、処理ユニット２２ａ、２２ｂなどのいずれか、または全ての処理ユニット２２ａ、２２ｂ、・・・、２２ｎにおいて処理されているタスクを休止させ、当該システム処理を実行させる。この処理は、ＯＳのカーネルなどによる一般的なプリエンプション処理と同様に実現することができる。
【００３１】
実行制御部３０はさらに、システム処理を割り当てられた処理ユニットが、自らが処理していたアプリケーションのタスクを休止し、レジスタ値などの保存を行ったことを検知すると、当該処理ユニットにシステム処理を実行させる。
【００３２】
ユーザレベル管理部２５のタスク割り当て部２６は、ユーザが起動したアプリケーションのタスクを処理ユニット２２ａ、２２ｂなどに割り当てる。新たなタスクが発生すると、タスク割り当て部２６は、メインメモリ４４などに設けたタスクキューに、発生したタスクを順次格納していく。この場合、処理ユニット２２ａ、２２ｂなどは、処理中のタスクを休止、終了した際などに、当該タスクキューからタスクを順次取り出して処理する。あるいはタスク割り当て部２６は、タスクの優先度や必要な処理ユニットの数、処理時間などに基づき、処理ユニット２２ａ、２２ｂなどで既にスケジューリングされているタスクとの調整を行ったうえで、適当なタイミングで新たなタスクが処理されるように処理ユニット２２ａ、２２ｂなどにタスクを割り振る。このような処理は、マルチタスク対応のＯＳやユーザレベルＯＳなどで一般的に用いられている手法を適用することができる。
【００３３】
タスク割り当て部２６はさらに、システム処理要求部２７からシステム処理の実行要求を受けたら、当該システム処理もいずれかの処理ユニットに割り当てる。このとき、上述のタスクキューに、他のタスクとともにシステム処理の情報を格納する。あるいは、システム処理要求部２７から受け付けた情報には当該システム処理の実行条件が含まれているため、タスク割り当て部２６は、当該実行条件を満たすようにスケジューリングを行う。
【００３４】
タスク処理部３２は、タスク割り当て部２６が割り当てたアプリケーションおよびシステム処理のタスクをスケジュールに則り順次処理する。プログラムなどタスクの処理に必要なデータはメインメモリ４４からローカルメモリ３６に読み出しておく。またタスクを切り替える際は、それまで処理していたタスクのコンテキストをメインメモリ４４に保存し、次のタスクのコンテキストをリストアするコンテキストスイッチを行う。
【００３５】
タスク割り当て部２６がシステム処理を割り当てた際は、そのスケジュールに従い、タスク処理部３２がアプリケーションのタスクのコンテキストを保存したうえで、通信部３４が、システムレベル管理部２４にその旨を通知する。そしてシステムレベル管理部２４の実行制御部３０の制御のもと、システム処理を実行する。また上述のように実行条件に違反した場合は、その時点で実行制御部３０の制御のもと、タスク処理部３２は処理中のアプリケーションのタスクからシステム処理へコンテキストスイッチを行う。
【００３６】
次にこれまで述べた構成による本実施の形態の動作について説明する。図５は本実施の形態におけるシステム処理の発生から開始までの全体的な流れを示すフローチャートである。まず前提として、処理ユニット２２ａ、２２ｂ、・・・、２２ｎでは、ユーザが起動したアプリケーションのタスクなどがその時点でのスケジュールに則り処理されているとする。このような状況において処理中のタスクが、ＯＳが提供するライブラリを呼び出すなどした際に、システムレベル管理部２４のシステム処理要求部２７は、当該ライブラリに対応するシステム処理を発生させ、ユーザレベル管理部２５のタスク割り当て部２６に処理要求を行う（Ｓ１０）。
【００３７】
要求を受けたタスク割り当て部２６が、当該システム処理の割り当てをいずれの処理ユニットにも行わなかったり、割り当てたにも関わらず処理ユニットが何らかの理由でアプリケーションのタスクを休止しなかったりした場合などに、実行監視部２８は実行条件の違反を判定する（Ｓ１２のＹ）。そして実行制御部３０は、処理ユニット２２ａ、２２ｂ、・・・、２２ｎのいずれかまたは全ての処理を休止させ、システム処理用に使用するためのプリエンプション処理を行う（Ｓ１４）。このとき全ての処理ユニットを休止させた場合は、そのうち少なくとも一つの処理ユニットを使用してシステム処理を実行すればよい。また、複数の処理ユニット２２ａ、２２ｂ、・・・、２２ｎのいずれか少なくとも一つを休止させ、当該処理ユニットによりシステム処理を行う場合、休止させる処理ユニットはあらかじめ設定した優先度などの規則に従って選択してもよいし、任意に選択してもよい。
【００３８】
一方、タスク割り当て部２６がシステム処理の割り当てを行い、割り当てられた処理ユニットが当該処理のためにコンテキストスイッチを行った場合、実行監視部２８は実行条件の違反がないと判定する（Ｓ１２のＮ）。そして処理ユニットのタスク処理部３２はシステム処理を開始する（Ｓ１６）。Ｓ１４でプリエンプション処理を行った場合も同様に、システム処理を開始する（Ｓ１６）。
【００３９】
図６はシステム処理を実行するための処理手順を模式的に示している。このときシステム処理には実行期限が設定されているとする。図２と同様、横方向が時間軸であり、白い矩形はアプリケーションのタスク、斜線網掛けの矩形はシステム処理のタスクである。同図において６つの処理ユニット２２ａ、２２ｂ、・・・、２２ｆがそれぞれアプリケーションのタスクを処理している。この状況において、まず図５のＳ１０に示すように、システムレベル管理部２４のシステム処理要求部２７がシステム処理要求をタスク割り当て部２６に行う（Ｓ２０）。タスク割り当て部２６は、処理ユニット２２ｄに当該処理を割り当てる（Ｓ２２）。この処理ユニットの選択は、上述のように、処理しているタスクの優先度や他の処理ユニットが処理中のタスクとの関連性などに基づいて行う。またはシステム処理の情報をタスクキューに格納する。この場合、処理中のタスクを終了した処理ユニットが当該タスクキューからシステム処理の情報を読み出すことにより、実質的な割り当てが行われる。
【００４０】
システム処理を割り当てられた処理ユニット２２ｄは、アプリケーションのタスクを好適なタイミングで休止し、レジスタ値などをメインメモリ４４などに保存したうえ、システム処理が受け入れ可能である旨の通知をシステムレベル管理部２４に送信する（Ｓ２４）。システムレベル管理部２４の実行監視部２８は、Ｓ２０の処理要求からの経過時間を測定し、実行期限までにＳ２４の通知を受けた場合、実行制御部３０は処理ユニット２２ｄにシステム処理を開始させる（Ｓ２８）。
【００４１】
ここで何らかの原因でＳ２２のタスク割り当て処理がなされなかった場合、あるいは、処理ユニット２２ｄでシステム処理の受け入れができない場合など、Ｓ２４の受け入れ可能通知が実行期限までになされないと、実行監視部２８は実行条件違反と判定し、図５のＳ１４におけるプリエンプション処理が実行制御部３０により実行される。以上の処理をシステム処理が発生するたびに繰り返すことにより、図３に示したように、全ての処理ユニット２２ａ、２２ｂ、・・・、２２ｎをアプリケーションのために使用しつつ、必要なタイミングでシステム処理を実行する態様を実現できる。
【００４２】
図７はシステム処理要求部２７がタスク割り当て部２６にシステム処理要求を行う際に通知する、システム処理に係る情報のデータ構造例を示している。システム処理データ５０は、種別識別子５２、処理ＩＤ５４、実行期限５６、周期５８、実行時間６０を含む。種別識別子５２は、オーディオデコーダ、エコーキャンセラなど、システム処理の種別を識別するための識別情報であり、種別と識別子の対応はあらかじめ定めてメインメモリ４４などに格納しておく。タスク割り当て部２６は、要求されたシステム処理の種別識別子５２に基づき当該処理の種別を特定し、それぞれの種別に対しあらかじめ定めた優先度を特定したうえ、スケジューリングに反映させる。
【００４３】
処理ＩＤ５４は、要求するシステム処理ごとに一意に設定する識別情報である。処理ユニットがシステム処理を行う際、当該処理ＩＤに基づき、システム処理のプログラムをメインメモリ４４から読み出す。また、システム処理を割り当てられた処理ユニットの通信部３４が、当該システム処理を実行する準備が整ったことをシステムレベル管理部２４に通知する際にも、処理ＩＤを用いて他のシステム処理に係る通知と区別する。実行期限５６は例えばシステム処理の依頼発行から実行開始までの許容時間である。上述のとおりこの時間を過ぎても処理ユニットからシステム処理の受け入れ可能通知がなされない場合、実行制御部３０によるプリエンプション処理が行われる。複数のシステム処理が発生した場合、タスク割り当て部２６は当該実行期限５６を利用して、システム処理間での割り当て優先順位を定めてもよい。例えば最初に実行期限が到来するシステム処理を優先して処理ユニットに割り当てる。
【００４４】
周期５８はシステム処理の動作周期である。複数のシステム処理が発生した場合、タスク割り当て部２６は当該周期５８に基づき、例えばレートモノトニックスケジューリングなどの手法に則り、処理ユニットへの割り当てを定めてもよい。実行時間６０はシステム処理の実行時間である。複数のシステム処理が発生した場合、タスク割り当て部２６は当該実行時間６０に基づき処理ユニットへの割り当てを定めてもよい。また場合によっては、システム処理の実行が実行時間６０を経過したら、処理ユニットにおける当該システム処理を強制的に打ち切るようにしてもよい。
【００４５】
これまでの説明では、システムレベル管理部２４がシステム処理を発生させると、専らユーザレベル管理部２５のタスク割り当て部２６に処理要求を行うことにより、ユーザレベルのスケジューリングにシステム処理を組み入れる態様を実現した。一方で、同じ情報処理装置１０を用いて、システム処理をユーザレベルのスケジューリングに組み入れる態様と、図２について説明したようにシステム処理がユーザレベルスケジューリングと独立に実行される態様とを、アプリケーションなどのプログラムによって選択できるようにしてもよい。この場合、システムレベル管理部２４は、システム処理が発生した時点で、いずれの態様が指定されているかを実行中のアプリケーションのプログラムから判断する。
【００４６】
そしてシステム処理をユーザレベルのスケジューリングに組み入れる態様が指定されていれば、システムレベル管理部２４は、発生したシステム処理の要求をタスク割り当て部２６に対して発行する。システム処理をユーザレベルスケジューリングと独立に実行する態様が指定されていれば、システムレベル管理部２４は、タスク割り当て部２６に処理を要求せず、処理ユニットがユーザレベルのタスクを処理している場合は処理時間を横取りしてシステム処理を実行させる。このようにすることで、アプリケーションを作成する際に、必要となるシステム処理の種類や実行頻度などに応じて最適な態様を選択することができる。
【００４７】
以上述べた本実施の形態によれば、アプリケーションの処理の途中で発生するシステム処理をユーザレベルのスケジューリング処理に組み込む。これにより、ユーザレベルのスケジューリングポリシーに則りシステム処理を実行できる機会が生まれ、アプリケーションなどユーザレベルのタスクが予期しないタイミングで休止させられる可能性が低くなる。また、システム処理の負荷が複数の処理ユニットに分散し易いため、システム管理部によるプリエンプションをせずに実行期限までにシステム処理を実行できる可能性が高くなる。これにより、システム処理を割り当てられた処理ユニットは、自らが処理していたアプリケーションのタスクを、好適なタイミングで休止させることができ、システム処理を開始させるためのコンテキストスイッチによるオーバーヘッドを削減することができる。また、アプリケーションのタスク処理に偏りが発生しにくいため、特定の処理ユニットのみ処理ユニット間通信がしにくい、といった状況が回避でき、プログラムの並列化が容易である。
【００４８】
また、処理ユニットによるシステム処理が実行期限を超過するなど実行条件に違反した場合、主処理ユニットは処理ユニットの処理を強制的にシステム処理に切り替える。これにより、システム処理を確実に実行することができ、処理割り当てをユーザレベルのスケジューリングに則り行うことによってシステム処理が遅延するなどの悪影響を排除することができる。結果として、システム処理を確実に実行しながら、アプリケーションのタスクも高速に処理することが可能となる。
【００４９】
実施の形態２
実施の形態１は、優先度や実行時間などに基づき、ユーザレベル管理部２５のタスク割り当て部２６が各タスクを適宜処理ユニットに割り当てていくことによりスケジュールを生成していく態様であった。本実施の形態では、各処理ユニットが自律的にタスクを選択して実行する自律的なユーザレベルスケジューリングの機構において、実施の形態１の如く、システム処理をスケジュールに則った処理ユニットで実行させる。
【００５０】
このユーザレベルスケジューリングの例は、例えば特開２００７−５２５１１号公報などにおいて示されている。ここではその概要について説明する。図８は自律的なユーザレベルスケジューリングの概要を説明するための図である。なお以後の説明において実施の形態１と同じ機能ブロックを用いることができる場合、当該機能ブロックに実施の形態１で示したのと同じ符号を付す。また実施の形態１と同様の処理手順については適宜その説明を省略する。
【００５１】
図８において、処理ユニット２２ａは、アプリケーションなどユーザレベルのタスクを生成すると、それを情報処理装置１０に含まれる処理ユニットのグループのいずれかに割り当てる。具体的には、あらかじめ定めておいた一つまたは複数の処理ユニットのグループに対応するメインメモリ４４内の領域（タスクキュー）に、割り当てたタスクを実行するためのデータを格納する。図８の例では、４つの処理ユニット２２ａ、２２ｂ、２２ｃ、２２ｄが処理ユニットのグループを構成しているとし、当該グループに割り当てたタスク８０がメインメモリ４４の対応する領域に格納されている。
【００５２】
そして、処理ユニット２２ａ、２２ｂ、２２ｃ、２２ｄの各々のローカルメモリには、ユーザレベルスケジューリングを実行するカーネルのプログラムを格納しておく。処理ユニット２２ａ、２２ｂ、２２ｃ、２２ｄは、前のアプリケーションのタスクが完了したり休止状態となった場合、あるいは所定の周期が到来すると、カーネルの処理を開始し、メインメモリ４４に格納されたタスクから１つ選択して、当該タスクの実行に必要なプログラムなどのデータを自らのローカルメモリにコピーすることによって当該タスクの処理を開始する。
【００５３】
ここでメインメモリ４４に格納するタスクは、１つの処理ユニットにおいて１回の処理で実行される最小単位のタスクでもよいし、それらを所定の処理単位でまとめたタスクセット、あるいはジョブチェインの状態でもよい。以後、このように最小単位のタスクを１つ以上まとめた単位をワークロードと呼ぶ。１つの巨視的な処理、すなわち目的を達成するためのタスクの集合体をワークロードとして形成すれば、当該ワークロード単位で処理ユニットに割り当てを行うことにより、効率的な処理が可能となる。例えば、ワークロードの実行に複数の処理ユニットが必要な場合は、基本的にはその数の処理ユニットを同時に確保して実行させる。このため各ワークロードには、要求する処理ユニットの数、各処理ユニットにおける優先度、最大の処理ユニット割り当て数などの割り当て条件の情報を付加しておく。
【００５４】
処理ユニット２２ａ、２２ｂ、２２ｃ、２２ｄは、当該ワークロードに係る情報を読み出したうえ、処理ユニットごとの優先度などに基づき一つのワークロードを選択してタスクの処理を行う。図９は、４つのワークロードのそれぞれに設定された割り当て条件、ここでは各処理ユニットにおける優先度および最大の処理ユニット割り当て数を例示している。図９に示した割り当て条件テーブル９０の例では、ワークロード欄９２に示すように、物理演算のワークロードＰ、人工知能のワークロードＡ、グラフィックス処理のワークロードＧ、およびオーディオ処理のワークロードＭを処理対象のワークロードとしている。
【００５５】
そして各ワークロードに対し、各処理ユニットにおける４つのワークロードの優先順位、および割り当てることのできる処理ユニットの最大数が、優先度欄９４および最大処理ユニット数欄９６に記載されている。例えばワークロードＰの場合、処理ユニット２２ａ、２２ｂ、２２ｃ、２２ｄにおける優先順位はそれぞれ「１」、「０」、「２」、「２」と設定されている。また割り当てることのできる処理ユニットの最大数は「２」と設定されている。その他のワークロードも同様である。
【００５６】
同図の場合、優先度欄９４に記載された数値は、「０」を除き数が少ないほど優先順位が高いとする。例えば処理ユニット２２ａにおける優先順位はワークロードＰが高く次がワークロードＧである。数値が「０」の場合は、当該処理ユニットでは処理を行わない設定を意味する。割り当てることのできる処理ユニットの最大数を設定しない場合は最大処理ユニット数欄９６を空欄としてよい。このような設定はプログラム作成時にアプリケーションごとに行う。
【００５７】
図１０は、図９に示した割り当て条件を設定した際、処理ユニット２２ａ、２２ｂ、２２ｃ、２２ｄが各ワークロードを選択し、処理する過程の例を模式的に示している。同図において縦方向が時間軸であり、各処理ユニットの下に示される矩形がタスクあるいはワークロードの一つ一つの処理である。同図で示した時刻ｔ０付近では、各処理ユニット２２ａ、２２ｂ、２２ｃ、２２ｄが、それぞれにおいて最も高い優先順位を有するタスクの処理、すなわちワークロードＰ、ワークロードＡ、ワークロードＧ、ワークロードＧの処理をそれぞれ行っている。
【００５８】
例えば時刻ｔ１で、処理ユニット２２ｃ、２２ｄで処理されていたワークロードＧのタスクがデバイスアクセスのための待機状態となると、それらの処理ユニット２２ｃ、２２ｄは次に優先度の高いタスクであるワークロードＰを選択しようとする。ところがワークロードＰのタスクを処理できる処理ユニットの最大数は「２」であったため、処理ユニット２２ｃがワークロードＰを選択した場合、処理ユニット２２ｄはさらに次の優先度を有するワークロードＭを選択する。そしてデイバイスアクセスのための待機が時間Ｔで解消すると、処理ユニット２２ｃ、２２ｄは、それぞれのワークロードＰ、ワークロードＭを休止できるタイミングで、再びワークロードＧを選択して実行を開始する(時刻ｔ２）。
【００５９】
このように、アプリケーションにおいて指定された優先度および割り当て可能な処理ユニットの最大数、あるいは要求する処理ユニットの数などの割り当て条件に従い、各処理ユニットで動作するカーネルによって自律的にタスクの処理が進捗する。このとき各処理ユニットにおいて優先度の低いタスクは休止に好適なタイミングで優先度の高いタスクに処理時間を譲るため、コンテキストスイッチに要する時間を最小限に、優先度に従った処理の切り替えが可能となる。また処理ユニットごとに優先度を指定可能とすることで、処理ユニットへのタスクの割り振りが容易になる。なお図９、１０はあくまで例示であり、割り当て条件は優先度のみとしたり、その他のパラメータを指定してもよい。
【００６０】
本実施の形態では、このような自律的なユーザレベルスケジューラを導入した情報処理装置において、システム処理をユーザレベルスケジューリングに組み込む。具体的には、システム処理を仮想ワークロードとして発生させることにより、ユーザレベルスケジューラのスケジューリングにシステム処理を組み込む。この態様は、実施の形態１の図１および図４で示した情報処理装置１０と同様の構成によって実現できる。ただし本態様においてタスク割り当て部２６は、タスクを直接処理ユニットに割り当てるのでなく、上述のとおり、ワークロードを処理ユニットグループに割り当て、当該処理ユニットグループに対応するメインメモリ４４内の領域に処理に必要なデータや割り当て条件を格納する。
【００６１】
図１１は本実施の形態においてシステム処理を仮想ワークロードとして実行する際の処理手順を模式的に示している。図６と同様、白い矩形はアプリケーションのタスク（ワークロード）、斜線網掛けの矩形はシステム処理のタスク（仮想ワークロード）である。同図において処理ユニット２２ａ、２２ｂ、２２ｃ、２２ｄの４つの処理ユニットが処理ユニットグループを形成し、それぞれが、割り当てられたアプリケーションのワークロードを構成するタスクを処理している。この状況において、まずシステムレベル管理部２４のシステム処理要求部２７がシステム処理要求をタスク割り当て部２６に行う（Ｓ４０）。タスク割り当て部２６は、当該処理要求をあらかじめ定めた規則により仮想ワークロードに変換し、メインメモリ４４の該当領域に格納する（Ｓ４２）。
【００６２】
その後、処理ユニットグループのうち前のタスク処理を完了、または休止させた処理ユニット、図１１の例では処理ユニット２２ｄが、メインメモリ４４からシステム処理の仮想ワークロードを選択して自らのローカルメモリにロードする（Ｓ４４）。仮想ワークロードの処理が可能となった時点で処理ユニット２２ｄはその旨の通知をシステムレベル管理部２４に送信する（Ｓ４６）。
【００６３】
システムレベル管理部２４の実行監視部２８は、Ｓ４０の処理要求からの経過時間を測定し、実行期限までにＳ４６の通知を受けた場合、実行制御部３０は処理ユニット２２ｄにシステム処理を開始させる（Ｓ５０）。実行条件違反があった場合は、実施の形態１と同様、処理ユニット２２ａ、２２ｂ、２２ｃ、２２ｄのいずれか、または全てのタスク処理を休止させ、システム処理を実行させてよい。
【００６４】
次にタスク割り当て部２６が、システムレベル管理部２４から要求されたシステム処理を仮想ワークロードに変換する手法について説明する。図１２はタスク割り当て部２６が要求されたシステム処理を仮想ワークロードに変換する際に参照する変換テーブルの例である。変換テーブル１００はあらかじめ設定しておきメインメモリ４４などに格納しておく。変換テーブル１００は、グループ欄１０２、種別欄１０４、リソース割り当て単位欄１０８、およびユーザパラメータ欄１１０を含む。
【００６５】
タスク割り当て部２６は、実施の形態１の図７に示したシステム処理に係る情報と同様の情報をシステム処理要求部２７から受け取る。この情報のうち、種別識別子５２に基づき図１２の種別欄１０４から、要求されたシステム処理の種別を検索する。同図に示すように、各種別はグループ欄１０２に示したグループにまとめられ、それぞれのグループに対し、ワークロードとして必要なパラメータを設定する。
【００６６】
リソース割り当て単位欄１０８には、各グループを一つの単位として処理ユニットなどのリソースを割り当てるか、種別ごとに割り当てるかを設定する。図１２の例で「グループ」と記載されている場合は、１つのグループでリソースを共有する。「種別ごと」と記載されている場合は、種別欄１０４に記載した種別ごとにリソースを割り当てる。ユーザパラメータ欄１１０には、アプリケーションごとに設定が可能なパラメータ、例えば当該システム処理を割り当てる処理ユニットや、割り当てることのできる最大の処理ユニット数、あるいは処理ユニットごとの優先順位を定めた優先度テーブルの識別子などを設定する。優先度テーブルは識別子と対応づけてあらかじめ準備しておく。タスク割り当て部２６は、当該設定に基づき、図９の優先度欄９４、最大処理ユニット数欄９６に示すような数値を最終決定する。
【００６７】
次にこれまで述べた構成による本実施の形態の動作を説明する。図１３は自律的なユーザレベルスケジューラを導入した際にシステム処理を実行する処理手順を示すフローチャートである。まずタスク割り当て部２６は、アプリケーションの起動時や、システム処理をユーザレベルスケジューリングに則り行う態様が必要となった際、アプリケーションのワークロードと同様に、初期状態の仮想ワークロードをメインメモリ４４に登録しておく（Ｓ６０）。初期状態の仮想ワークロードでは、要求する処理ユニットの数を初期値０としておく。
【００６８】
このときアプリケーションのタスクは自律的なユーザレベルスケジューリングによって各処理ユニットで処理されているとする。このような状況において、ＯＳが提供するライブラリが呼び出されるなどした際に、システムレベル管理部２４のシステム処理要求部２７は、当該ライブラリに対応するシステム処理を発生させ、タスク割り当て部２６に処理要求を行う（Ｓ６２）。
【００６９】
要求を受けたタスク割り当て部２６は、要求に含まれる情報に従い、Ｓ６０において登録しておいた初期状態の仮想ワークロードを修正する（Ｓ６４）。例えばシステム処理の処理ＩＤに基づき、あらかじめ設定した当該処理に要する処理ユニットの数を特定し、仮想ワークロードにおける初期値０の設定を修正する。上述した優先度なども決定できる。各処理ユニットで動作するカーネルは、仮想ワークロードにおいて、要求する処理ユニットの設定数が１以上に変更されたことを受けて、仮想ワークロードの選択を開始する。これによりにより、実質、仮想ワークロードが要求数の処理ユニットに割り当てられる（Ｓ６６）。
【００７０】
すると仮想ワークロードを選択した処理ユニットは、あらかじめ準備しておいた仮想ワークロード用のプログラムを起動し、処理ＩＤに基づきメインメモリ４４からプログラムをロードしたうえ、システム処理を実行する（Ｓ６８）。
【００７１】
図１４〜１６は本実施の形態で実現できる、６つの処理ユニット２２ａ、２２ｂ、２２ｃ、２２ｄ、２２ｅ、２２ｆにおける処理の推移の例を示している。図の横方向が時間軸であり、ある単位処理時間中にどのタスクが処理されたかを処理ユニットごとに矩形で示している。同図において「Ｐ」、「Ａ」、「Ｇ」が記載されたタスクは、上述の物理演算のワークロードＰ、人工知能のワークロードＡ、グラフィックス処理のワークロードＧに対応するアプリケーションのタスクである。同図の例は、常に「Ａ」、「Ｐ」、「Ｇ」の順で処理が進捗するとする。
【００７２】
このようにアプリケーションのタスク処理がなされている環境において、時刻Ｔ０でノイズ除去、システムＢＧＭ、ＡＶチャット、レコーディング、のシステム処理が要求されたとする。図１４〜１６ではシステム処理を太線の矩形で示し、それぞれの処理を、「ノイズ除去」、「ＢＧＭ」、「ＡＶチャット」、「レコーディング」と記載して区別している。上述したように、図１２に示した変換テーブル１００によって、それぞれの処理が属するグループごとに割り当てる処理ユニットなどを設定することができる。
【００７３】
図１４は各システム処理をどの処理ユニットに割り当ててもよい、との設定がなされている場合の例である。割り当て可能な処理ユニットは、例えばビットマスクを利用して変換テーブルに対しユーザが指定できるようにする。同図の場合、各システム処理は、処理ユニット２２ｃ、２２ｄ、２２ｅ、２２ｆが時刻Ｔ０でそれぞれ開始している。その間に、アプリケーションのタスクのうち「Ａ」は、２つの処理ユニット２２ａ、２２ｂで処理されているため、このようにシステム処理が実行されても、アプリケーションの後続のタスクである「Ｐ」、「Ｇ」は大きく遅延することなく、最大限の数の処理ユニットを利用して処理を進捗させることができる。
【００７４】
図１５は、システム処理は処理ユニット２２ａにのみ割り当てるという設定がなされている場合の例である。この例では、時刻Ｔ０でアプリケーションのタスクのうち「Ａ」を開始しているが、処理ユニット２２ａにおいてはコンテキストスイッチに好適なタイミングでシステム処理「ノイズ除去」に処理が切り替わり、その後のシステム処理が処理ユニット２２ａで優先度などに従い進捗する。この場合、時刻Ｔ０からシステム処理へ切り替わるまでの時間、およびシステム処理が終了した後の時間は、全ての処理ユニットをアプリケーションのタスクに割り当てることが可能である。
【００７５】
図１６は、システム処理をどの処理ユニットに割り当ててもよいが、ユーティリティや高負荷サービスのグループに属するシステム処理の優先度を比較的低くした場合の例である。この場合、優先度が高い「ノイズ除去」、「ＢＧＭ」の処理は時刻Ｔ０で処理ユニット２２ｃ、２２ｄによって開始されるが、「レコーディング」、「ＡＶチャット」の処理は、アプリケーションのタスク「Ｇ」が終了した後に開始されている。
【００７６】
このように、システム処理をワークロードに変換する際に割り当てる処理ユニットなどの指定を可能としておくことにより、アプリケーションごとに最適な態様で処理を進捗させることができる。
【００７７】
以上述べた本実施の形態によれば、プログラムを分割して並列処理する際、処理ユニット自らが分割後のタスクを優先度などに基づき選択して実行する自律的なユーザレベルスケジューラを導入した環境において、システム処理を仮想ワークロードに変換する。これにより、本来はユーザレベルスケジューリングの対象外であったシステム処理を、ユーザレベルのタスクと同様に扱うことが可能となる。結果として、優先度ベースで行われている本来のスケジューリングの動作を阻害することなくシステム処理も進捗させることができる。
【００７８】
またアプリケーションにおいて、各システム処理の優先度や割り当てる処理ユニットを指定できるようにし、仮想ワークロードへ変換する際に当該指定に従った設定を行う。これによりアプリケーションごとにシステム処理を実行するタイミングや実行する処理ユニットを容易に変化させることができ、最適な処理態様を実現できる。さらに、アプリケーションのタスクと同様にシステム処理を扱えるため、アプリケーションの作成は従来と同様に行える。また実施の形態１と同様、システム処理の負荷を分散させ最大限の処理ユニットを稼働させることによって処理の高速化を実現できる。
【００７９】
以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【符号の説明】
【００８０】
１０  情報処理装置、  ２２ａ  処理ユニット、  ２４  システムレベル管理部、  ２５  ユーザレベル管理部、  ２６  タスク割り当て部、  ２７  システム処理要求部、  ２８  実行監視部、  ３０  実行制御部、  ３２  タスク処理部、  ３４  通信部、  ３６  ローカルメモリ、  ４４  メインメモリ。
【図１】
2010165259.tif 000003
【図２】
2010165259.tif 000004
【図３】
2010165259.tif 000005
【図４】
2010165259.tif 000006
【図５】
2010165259.tif 000007
【図６】
2010165259.tif 000008
【図７】
2010165259.tif 000009
【図８】
2010165259.tif 000010
【図９】
2010165259.tif 000011
【図１０】
2010165259.tif 000012
【図１１】
2010165259.tif 000013
【図１２】
2010165259.tif 000014
【図１３】
2010165259.tif 000015
【図１４】
2010165259.tif 000016
【図１５】
2010165259.tif 000017
【図１６】
2010165259.tif 000018