JP2011523142A - プロセス内のスケジューラインスタンス - Google Patents

プロセス内のスケジューラインスタンス Download PDF

Info

Publication number
JP2011523142A
JP2011523142A JP2011512497A JP2011512497A JP2011523142A JP 2011523142 A JP2011523142 A JP 2011523142A JP 2011512497 A JP2011512497 A JP 2011512497A JP 2011512497 A JP2011512497 A JP 2011512497A JP 2011523142 A JP2011523142 A JP 2011523142A
Authority
JP
Japan
Prior art keywords
tasks
scheduler instance
scheduler
execution
instance
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2011512497A
Other languages
English (en)
Other versions
JP5597196B2 (ja
Inventor
リングセス ポール
フェルナンデス ジェネヴィエーヴ
グスタフソン ニクラス
モロイ リック
パティル ラフル
ルシード フィリップ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2011523142A publication Critical patent/JP2011523142A/ja
Application granted granted Critical
Publication of JP5597196B2 publication Critical patent/JP5597196B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

1つのプロセスにおいて第1及び第2のスケジューラインスタンスを生成するコンピュータシステムのランタイム環境が提供される。スケジューラインスタンスの各々は、割り当てられたプロセスリソースを含み、実行のためにタスクのセットに割り当てられる。スケジューラインスタンスの各々は、割り当てられたプロセスリソースを用いた実行のためにタスクをスケジューリングしてプロセスの作業を実行する。

Description

コンピュータシステム内で実行されるプロセスは、しばしば、異なった優先度をもつタスクを有する。要求の通りに動作するため、プロセスは、かなりのオーバーヘッドを消費して、タスクの優先度に基づいて適切なプロセスリソースがタスクに割り当てられることを保証し得る。このオーバーヘッドは、コンピュータシステム内で実行するプロセスのタスクをスケジューリングするスケジューラの使用を含み得る。
単一のスケジューラを有するプロセスは、通常はプロセスによって生成された全てのタスク間においてプロセスリソースを共有し、同一のスケジューリングポリシを全てのタスクに適用する。一般的に、プロセスは、タスクのサブセットに異なったスケジューリングポリシを適用することによって、タスクのサブセットに直接優先順位をつける能力を有していない。
開発者は、タスクのサブセットをパーティションに分けて当該パーティションをオペレーティングシステムによって提供された実行コンテキストに割り当てるが、この方法は、リソースが動的に割り当てられるコンピュータシステム内において最適ではないかもしれない複雑な基礎構造を設計することを開発者に強制するだろう。
この発明の概要は、発明を実施するための形態において以下でさらに説明されるコンセプトのいくつかを単純な態様で紹介するために提供される。この発明の概要は、本発明の重要な特徴または本質的な特徴を特定することを目的としておらず、また、本発明の範囲を限定するために使用されることも目的としていない。
プロセス内で複数のスケジューラインスタンスを生成するコンピュータシステムのランタイム環境が提供される。スケジューラインスタンスの各々は、割り当てられたプロセスリソースを含み、かつ実行タスクのセットを割り当てられる。スケジューラインスタンスは、割り当てられたプロセスリソースを用いて実行タスクをスケジューリングして、プロセスの作業を実行する。さらに、1つのスケジューラインスタンス内のタスクは、ネストされているスケジューラインスタンスを生成し得る。
添付の図面は、実施形態のさらなる理解をもたらすために含まれ、本明細書の一部に包含されかつ本明細書の一部を構成する。添付の図面は実施形態を示し、かつ本発明の説明と共に本発明の原理を明らかにする。他の実施形態及び実施形態の多くの意図された利点は、以下の発明を実施するための形態を参照することによってさらに良く認識されて容易に理解されるだろう。添付の図面の要素は、必ずしも互いに正しい縮尺で示されていない。同一の参照符号は対応する同様の部分を指す。
複数のスケジューラインスタンスを含むプロセスを有するランタイム環境の実施形態を示すブロック図である。 プロセス内で複数のスケジューラインスタンスを生成する方法の実施形態を示すフロー図である。 実行コンテキストをプロセス内のスケジューラインスタンスに割り当てる方法の実施形態を示すフロー図である。 プロセス内でネストされているスケジューラインスタンスの実施形態を示すブロック図である。 プロセス内でネストされているスケジューラインスタンスの実施形態を示すブロック図である。 プロセス内でネストされているスケジューラインスタンスを生成する方法の実施形態を示すフロー図である。 スケジューラ内で使用するスケジュールグループの実施形態を示すブロック図である。 複数のスケジューラインスタンスを含むプロセスを有するランタイム環境を実装するコンピュータシステムの実施形態を示すブロック図である。
以下の発明を実施するための形態において、添付の図面が参照され、これらは本明細書の一部を形成し、かつこれらにおいて例示の目的で本発明が実施され得る特定の実施形態が示される。これに関し、方向の用語の「上」、「下」、「前」、「後」、「先頭」、「最後」等は、説明されている図面(単数または複数)の配向を基準にして使用される。実施形態の構成要素が様々に異なった配向で配され得る故に、方向の用語は、例示の目的で使用され、決して限定をするものではない。他の実施形態が使用されてもよく、かつ構造的または論理的変更が本発明の範囲から逸脱することなくなされ得る。従って、以下の詳細な説明は、限定するものとして理解されるべきではなく、本発明の範囲は添付の特許請求の範囲によって画定される。
本明細書に記載されている様々な例示の実施形態の特徴は、特に言及しなくとも、互いに組み合わせられ得ると理解されるべきである。
図1は、プロセス12Aを有するランタイム環境10の実施形態を示すブロック図である。プロセス12Aは、複数のスケジューラインスタンス22(1)−22(N)を含み、ここでNは2以上の整数であり、N番目のスケジューラインスタンス22(N)を示す。
ランタイム環境10は、図7に示されかつ以下でさらに詳細に説明されるコンピュータシステム100等のコンピュータシステム内の動作のランタイムモードを示しており、ここにおいてコンピュータシステムは命令を実行している。コンピュータシステムは、図7に示されかつ以下でさらに詳細に説明されるランタイムプラットフォーム122等のランタイムプラットフォームからランタイム環境10を生成する。
ランタイム環境10は、少なくとも1つの開始されているプロセス12A、リソースマネージメントレイヤ14、及びハードウェアスレッド16(1)−16(M)のセットを含み、ここでMは1以上の整数でありかつM番目のハードウェアスレッド16(M)を示す。ランタイム環境10は、リソースマネージメントレイヤ14及びハードウェアスレッド16(1)−16(M)を使用して、プロセス12Aと共存する任意の他のプロセスからのタスク(図示せず)とともに、プロセス12Aからのタスクが実行されることを可能とする。ランタイム環境10は、リソースマネージメントレイヤ14とともに動作して、プロセス12Aがコンピュータシステムのプロセッサ及び他のリソース(例えば、ハードウェアスレッド16(1)−16(M))を取得することを許可する。また、ランタイム環境10は、リソースマネージメントレイヤ14とともに動作して複数のスケジューラインスタンス22(1)−22(N)がプロセス12A内に共存することを許可する。
ランタイム環境10は、スケジューラインスタンス22の各々を生成するスケジューラ機能を含む。1つの実施形態において、スケジューラ機能は、スケジューラアプリケーションプログラミングインタフェース(API)として実装される。他の実施形態において、スケジューラ機能は、適切なプログラムミング構成を用いて実装されてもよい。起動されると、スケジューラ機能は、プロセス12Aまたは他の共存するプロセス内のスケジューラインスタンス22を生成し、各々のスケジューラインスタンス22が動作して1つまたは複数のハードウェアスレッド16(1)−16(M)による実行のためにプロセス12Aのタスクをスケジューリングする。ランタイム環境10は、スケジューラ機能がもたらす機能を認識している付随ツールを用いてアプリケーションまたはライブラリ開発者がプログラム(例えばプロセス12A)の中で表現する非常に細かい同時並行性を利用し得る。
プロセス12Aは、1つまたは複数の実行コンテキスト(すなわち、スレッド)をホストする(host)処理リソース及び他のリソースの割り当てを含む。プロセス12Aは、コンピュータシステム内の処理リソース及び他のリソース(例えば、ハードウェアスレッド16(1)−(M))へのアクセス権をリソースマネージメントレイヤ14から取得する。プロセス12Aは、処理リソース及び他のリソースを使用してタスクを実行させる。
プロセス12Aは、様々な長さのタスクにおける作業を生成し、ここでタスクの各々はスケジューラインスタンス22内の実行コンテキストと関連付けられる。タスクの各々は、コンピュータシステムによって実行される際に作業の単位を実行する一連の命令を含む。実行コンテキストの各々は、割り当てられた処理リソース上で関連付けられたタスクを実行するスレッド(または子プロセス等の類似のOS概念)を生成する。実行コンテキストの各々は、プログラム状態情報及びマシン状態情報を含む。実行コンテキストは、実行すべく出されるタスクがもはや無い場合に終了してもよい。タスクの各々に関して、ランタイム環境10及び/もしくはプロセス12Aは、実行のためにスケジューリングされるスケジューラインスタンス22にタスクを割り当てるか、さもなければスケジューラインスタンス22を使用しないでタスクを実行させる。
プロセス12Aは、スタックモデルまたはインタープリタモデル等の任意の適切な実行モデルに基づいてコンピュータシステム内で動作するように構成されてもよく、アプリケーション、ライブラリ機能、またはオペレーティングシステムサービス等の適切なタイプのコードを表してもよい。プロセス12Aは、画定されているメモリアドレス空間を含む割り当てられたリソースのセットに関連付けられているプログラム状態及びマシン状態を有する。プロセス12Aは、ランタイム環境10内の任意の共存するプロセスから自立してまたは実質的に自立的して実行されてもよい。従って、プロセス12Aは、共存するプロセスのプログラム状態または共存するプロセスに割り当てられた任意のリソースのマシン状態を不利には変更しない。同様に、共存するプロセスは、プロセス12Aのプログラム状態またはプロセス12Aに割り当てられた任意のリソースのマシン状態を不利には変更しない。
リソースマネージメントレイヤ14は、1つまたは複数のハードウェアスレッド16をプロセス12Aに割り当てることによってプロセスリソースをプロセス12Aに割り当てる。リソースマネージメントレイヤ14は、図1の実施形態において、コンピュータシステム(図1には図示せず)のオペレーティングシステムから分離して存在する。他の実施形態において、リソースマネージメントレイヤ14またはリソースマネージメントレイヤ14のいくつかもしくは全ての機能は、オペレーティングシステム内に含まれてもよい。
ハードウェアスレッド16は、コンピュータシステムのプロセッサパッケージのセットの実行コア内または1つもしくは複数のプロセッサパッケージ(例えば、図7にしめされかつ以下にさらに詳細に説明されるプロセッサパッケージ)の実行コア内に存在している。ハードウェアスレッド16は、他の実行コアから独立してかまたは実質的に独立して命令を実行するように構成されており、かつマシン状態を含む。ハードウェアスレッド16は、単一のプロセッサパッケージ内に含まれていてもよく、複数のプロセッサパッケージに亘って分散させられていてもよい。プロセッサパッケージ内の実行コアの各々は、1つまたは複数のハードウェアスレッド16を含んでいてもよい。
プロセス12Aは、非明示的にまたは明示的に、スケジューラインスタンス22(1)−22(N)をランタイム環境10によって提供されているスケジューラ機能を介して生成させる。スケジューラインスタンス22は、プロセス12Aがコンピュータシステム内またはプログラミング言語特性内で利用可能なAPIを使用する際に、非明示的に生成されてもよい。APIまたはプログラム言語特性に対応して、ランタイム環境10は、デフォルトポリシ37を有するスケジューラインスタンス22を生成する。スケジューラインスタンス22を明示的に生成するために、プロセス12Aは、ランタイム環境10によって提供されたスケジューラ機能を起動してもよく、かつスケジューラインスタンス22に関する1つまたは複数のポリシ37を特定してもよい。プロセス12Aは、その実行を通して、開始されたスケジューラインスタンス22の数を増加させるかまたは減少させてもよい。
スケジューラインスタンス22の各々は、リソースマネージメントレイヤ14とやりとりを行って、プロセス12に透過的な態様にてコンピュータシステムのプロセス及び他のリソースを取り決める。リソースマネージメントレイヤ14は、スケジューラインスタンス22の供給及び需要並びに任意のポリシに基づいて、ハードウェアスレッド16をスケジューラインスタンス22に割り当てる。
図1に示される実施形態において、スケジューラインスタンス22は、潜在ハードウェアスレッド16の抽象概念を生成する仮想プロセッサ32を生成することによって処理リソースを管理する。スケジューラインスタンス22の各々は、仮想プロセッサ32(1)−32(P)のセットを含み、ここでPの各々は1以上の整数であり、かつスケジューラインスタンス22の中でP番目の仮想プロセッサ32(P)を示している。スケジューラインスタンス22の各々は、プロセス12Aの実行において様々なポイントにある同数または異なった数の仮想プロセッサ32を有してもよい(すなわち、P(1)−P(M)の各々は、プロセス12Aの実行の間、任意の他のP(1)−P(M)よりも小さいか、大きいか、または等しくてもよい)。スケジューラインスタンス22の各々は、仮想プロセッサ32の各々をハードウェアスレッド16にマッピングすることによって、仮想プロセッサ32をハードウェアスレッド16上に多重化する。スケジューラインスタンス22の各々は、2以上の仮想プロセッサ32を特定のハードウェアスレッド16上にマッピングするが、1のハードウェアスレッドのみを仮想プロセッサ32の各々にマッピングしてもよい。他の実施形態において、スケジューラインスタンス22の各々は、他の適切な方法でプロセスリソースを管理して、ハードウェアスレッド16によってプロセス12の命令を実行させる。
スケジューラインスタンス22の実行コンテキストのセットは、各々が、関連付けられているタスク36(1)−36(P)を有する実行コンテキスト34(1)−34(P)のセットを含み、タスク36(1)−36(P)は、仮想プロセッサ32(1)−32(P)の各々によって、かつプロセス12Aの実行の間の任意のポイントにおいて0以上の実行コンテキスト38のセットによって実行される。実行コンテキスト34及び38の各々は、実行コンテキスト34または38が実行されているか、実行可能(例えば、ロックが解除されるかまたはスケジューラインスタンス22に追加されることに応じて)か、またはブロックされているかどうかを示す状態情報を含む。実行されている実行コンテキスト34は、仮想プロセッサ32に付随させられており、現在実行されている。実行可能な実行コンテキスト38は、関連付けられているタスク40を含み、利用可能な仮想プロセッサ32によって実行される準備ができている。ブロックされている実行コンテキスト38も。関連付けられているタスク40を含み、他の実行コンテキスト34によって生成されているかまたは他の実行コンテキスト38によって生成されるだろうデータ、メッセージまたはイベントを待っている。
仮想プロセッサ32上で実行されている実行コンテキスト34の各々は、その実行の過程で、任意の適切な方法で構成された追加タスク42を生成してもよい(例えば、作業キュー(図1には図示せず)に追加される)。作業は、ランタイム環境10によって提供されるアプリケーションプログラミングインタフェース(API)か、または1つの実施形態においてプログラミング言語特性及び対応するツールを使用することによって生成されてもよい。プロセスリソースがスケジューラインスタンス22に利用可能である場合、タスクは実行コンテキスト34または38に割り当てられ、実行コンテキスト34または38は、新しいタスクを取得する前に、仮想プロセッサ32上での完了またはブロッキングポイント(例えば、完了のためにメッセージまたは奪われた子タスクを待つ)まで当該タスクを実行する。タスクがブロッキングされない場合、当該タスクは再スケジューリングされて、最適に再利用され得るデータをメモリ階層(すなわちキャッシュ階層)が既に含むことを期待して、可能ならばブロッキング前にタスクが実行されたハードウェアスレッド16上の仮想プロセッサ32の選択に与えられた優先度を有する利用可能な仮想プロセッサ上で実行される。仮想プロセッサ32上で実行される実行コンテキスト34は、他の実行コンテキスト38によって使用されるデータ、メッセージまたはイベントを生成することによって他の実行コンテキスト38を非ブロック化してもよい。
スケジューラインスタンス22の各々の中のタスクの各々は実現されてもよく(例えば、実現タスク36及び40)、このことは、実行コンテキスト34または38が当該タスクに付随させられていたか付随するだろうこと及び当該タスクの実行準備ができていることを示す。実現されるタスクは、通常は、非ブロック化された実行コンテキスト及びスケジューリングされたエージェントを含む。実現されていないタスクは、未実現と称される。未実現タスク(例えば、タスク42)は、親タスクの実行によって生成された子タスクとして生成されてもよく、並行構成(例えば、並行、何かに対して並行、開始、及び終了)で生成されてもよい。スケジューラインスタンス22の各々は、以下で説明される図6の実施形態に示されるように、従属タスク(すなわち、未実現タスク)に関する作業奪取キューのリストと共に、実行コンテキストを有する論理的に独立したタスク(すなわち、実現タスク)に関して同期化されたコレクション(collection)(例えば、スタック及び/またはキュー)内に組織化され得る。
仮想プロセッサ32上で実行されている実行コンテキスト34に関連付けられているタスク36の完了、ブロッキング、または他の中断(例えば、明示的な放棄または強制された無効)において、仮想プロセッサ32は、他の実現されるタスク40または未実現タスク42を実行可能となる。スケジューラインスタンス22は、実行可能実行コンテキスト38または未実現タスク42を検索して、任意の適切な方法にて、実行のために利用可能な仮想プロセッサ32に付随させる。例えば、スケジューラインスタンス22は、未実現タスク42を検索して実行する前に、最初に実行可能実行コンテキスト38を検索して実行する。スケジューラインスタンス22の各々は、スケジューラインスタンス22の全てのタスク及び実行コンテキスト38が実行されるまで、実行のために利用可能な仮想プロセッサ32に実行コンテキスト38を付随させ続ける。
スケジューラインスタンス22は、異なったタイプの実行コンテキストを有し得る。プロセス12Aがウィンドウズプロセスであるウィンドウズオペレーティングシステムを含むコンピュータシステムの実施形態において、ウィンドウズプロセス内の異なったスケジューラインスタンス22は、スレッド実行コンテキスト及びファイバ実行コンテキスト(fiber execution context)を含み得る。従って、スレッド実行コンテキスト及びファイバ実行コンテキストは、同一のウィンドウズズプロセス内に存在し得る。
タスクの実行の前に、スケジューラインスタンス22の各々は、ランタイム環境10またはオペレーティングシステム(例えば、図7のOS120)から実行コンテキスト34及び38を取得する。利用可能な仮想プロセッサ32は、実行コンテキスト34を検索して実行し、タスクの実行を開始する。仮想プロセッサ32は、実行コンテキスト34に関連付けられているタスクの完了、ブロッキング、または他の中断に応じて、再度利用可能となる。仮想プロセッサ32が利用可能になった際、現在の実行コンテキスト34によって実行されている前のタスク36が完了した場合、仮想プロセッサ32は、現在の実行コンテキストの延長として、実行可能実行コンテキスト38に切換えるかまたは次のタスク40もしくは42を実行する。
1つの実施形態において、スケジューラインスタンス22は、互いに自立して動作しかつ下方の共通のリソースマネージメントレイヤ14と通信する。他の実施形態において、スケジューラインスタンス22は、リソースマネージメントレイヤ14と通信しかつ互いに通信し、スケジューラインスタンス22の1つのインスタンスにおいてスケジューリングされた作業が、他のスケジューラインスタンス22においてスケジューリングされた作業と連携することを可能とする。
スケジューラインスタンス22は、各々同一のまたは異なったポリシ37を有してもよい。ランタイム環境10及び/またはプロセス12Aは、スケジューラインスタンス22が開始された場合、スケジューラインスタンス22に対するポリシ37を特定する。各々のスケジューラインスタンス22のポリシ37は、
1)割り当てられる処理リソースの数(例えば、最小数、所望数、及び/または最大数)
2)共有タイプ(例えば、排他的または共有可能)
3)優先度タイプ(例えば、高度、中度、または低度)
4)フェアネスタイプ(fairness type)(例えば、キャッシュローカル性の向上またはフェアネスの向上)
5)動作タイプ(例えば、不正作業(rogue chore)閾値、アイドル閾値、フラグメンテーション閾値、及び/または他のリソース再割り当て動作)
6)実行順序タイプ(例えば、ラストインファーストアウト(LIFO)順序、ファーストインファーストアウト(FIFO)順序、またはサービスの品質または順序保証のためのデフォルト順序)、及び
7)トポロジータイプ(すなわち、特定のローカル特性を指定する情報(例えば、コンピュータシステム内の関連するプロセスリソースのセット)及び/または特定のリソース特性を指定する情報(例えば、コンピュータシステム内で選択されたチップセット機能を有するプロセスリソースのセット))
のうちの1つまたは複数を特定してもよい。
プロセス12Aに加えて、ランタイム環境10内の他の共存プロセス(図示せず)が、0以上のスケジューラインスタンス22を含んでもよく、これらのスケジューラインスタンス22はプロセスの実行を通して増加または減少してもよい。
図2は、プロセス12A内の複数のスケジューラインスタンス22を生成する方法の実施形態を示すフロー図である。図2の方法は、1つの実施形態においてコンピュータシステム内のプロセス12A及び/またはランタイム環境10によって非明示的または明示的に実行され得る。
少なくとも第1及び第2のスケジューラインスタンス22(1)及び22(2)が、ブロック52に示されているようにプロセス12A内で生成される。スケジューラインスタンス22(1)及び22(2)は、各々コンピュータシステムによって実行可能な命令を含み、ランタイム環境10及び/またはプロセス12Aによって割り当てられた1つまたは複数のタスクをプロセスリソースのサブセットの各々において実行させる。プロセスリソースのセットは、ハードウェアスレッド16を含み、1つの実施形態において、リソースマネージメントレイヤ14によって割り当てられた仮想プロセッサ32も含む。リソースマネージメントレイヤ14が仮想プロセッサ32のセットをスケジューラインスタンス22(1)及び22(2)に割り当てる場合、仮想プロセッサ32のセットは、コンピュータシステムのプロセッサリソース(すなわち、ハードウェアスレッド16)のサブセットの各々を示す。従って、リソースマネージメントレイヤ14は、仮想プロセッサ32のセットの各々をハードウェアスレッド16の個別のセットにマッピングする。
上述のように、スケジューラインスタンス22(1)及び22(2)は、ランタイム環境10のスケジューラ機能を使用して、非明示的または明示的にランタイム環境10及び/またはプロセス12Aによって開始されてもよい。スケジューラインスタンス22(1)及び22(2)は、プロセス12Aの実行の間に、同時に開始されてもよいし(例えば、プロセス12Aが開始された時)、別の時間に実行されてもよい。さらに、スケジューラインスタンス22(1)及び22(2)は、同一または異なったポリシ37を有してもよい。
ランタイム環境10及び/またはプロセス12Aは、実行のために1つまたは複数のタスクのセットをスケジューラインスタンス22(1)に割り当て、実行のために1つまたは複数のタスクをスケジューラインスタンス22(2)に割り当てる。ランタイム環境10及び/またはプロセス12Aは、図3を参照して以下にさらに詳細に説明されるスケジューラインスタンス22(1)及び22(2)の各々のポリシ37に基づいて、または他の基準に基づいて、タスクのセットを割り当ててもよい。
図2を参照すると、タスクの第1のセットが、ブロック54において示されているようにスケジューラインスタンス22(1)によって実行のためにスケジューリングされる。スケジューラインスタンス22(1)の仮想プロセッサ32が利用可能になると、スケジューラインスタンス22(1)は、実行コンテキスト34を当該利用可能な仮想プロセッサ32に付随させ、スケジューラインスタンス22(1)内のタスクのセットからのタスクを実行コンテキスト34に関連付けて、下部にあるハードウェアスレッド16を介して仮想プロセッサ32によってタスクを実行させる。スケジューラインスタンス22(1)は、スケジューラインスタンス22(1)内の全てのタスクが実行されるまで、タスクのセットからのタスクの実行を継続する。
同様に、タスクの第2のセットは、ブロック56において示されるように、スケジューラインスタンス22(2)によって実行のためにスケジューリングされる。スケジューラインスタンス22(2)の仮想プロセッサ32が利用可能になると、スケジューラインスタンス22(2)は、実行コンテキスト34を当該利用可能な仮想プロセッサ32に付随させ、スケジューラインスタンス22(2)内のタスクのセットからのタスクを実行コンテキスト34に関連付けて、下部にあるハードウェアスレッド16を介して仮想プロセッサ32によってタスクを実行させる。スケジューラインスタンス22(2)は、スケジューラインスタンス22(2)内の全てのタスクが実行されるまで、タスクのセットからのタスクの実行を継続する。
ここで、図2の方法の使用例が1つの実施形態に従って説明される。この例において、プロセス12Aは、オーディオ及びビデオ処理を実行するアプリケーションであり、オーディオ処理がビデオ処理に優先する。従って、プロセス12Aは、多数のプロセスリソースを有する第1のスケジューラインスタンス22(1)を開始して、オーディオ処理を実行し、少数のプロセスリソースを有する第2のスケジューラインスタンス22(2)を開始して、ビデオ処理を実行する。ランタイム環境10は、オーディオ処理に関連するタスクのセットを、プロセス12Aによって指定されているようにスケジューラインスタンス22(1)に割り当て、ビデオ処理に関連するタスクのセットをプロセス12Aによって指定されているようにスケジューラインスタンス22(2)に割り当てる。プロセス12Aに割り当てられるプロセスリソースの数が変わる場合、ランタイム環境10はスケジューラインスタンス22(1)及び/または22(2)に割り当てられているプロセスリソースの数を調整して、スケジューラインスタンス22(1)が高い優先度のオーディオ処理に十分なプロセスリソースを有することを保証してもよい。
図3は、1つまたは複数のタスクのセットをプロセス12A内のスケジューラインスタンス22に割り当てる方法の実施形態を示すフロー図である。ランタイム環境10及び/またはプロセス12Aが、タスクのセットが実行のためにスケジューラインスタンス22に割り当てられるべきと判定する場合、ランタイム環境10及び/またはプロセス12Aは、ブロック62に示されているように全てのスケジューラインスタンス22のポリシ37を識別し、ブロック64に示されているように当該タスクのセットをポリシ37に基づいてスケジューラインスタンス22に割り当てる。
ランタイム環境10は、プロセス12Aによって特定される1つまたは複数のポリシに厳密に適合した1つまたは複数のポリシ37を有するスケジューラインスタンス22を要求する能力をプロセス12Aにもたらす。ランタイム環境10は、プロセス12A内のスケジューラインスタンス22を検索して、設定され得る予め定義されているヒューリスティクスに基づいてスケジューラインスタンス22を選択する。
上述の例を再度参照すると、プロセス12Aがオーディオ及びビデオ処理を実行する場合、ランタイム環境10は、スケジューラインスタンス22(1)及び22(2)のポリシ37の各々から、スケジューラインスタンス22(1)がスケジューラインスタンス22(2)よりも多いプロセスリソースを有するように設定されていることを判定し得る。従って、ランタイム環境10は、プロセス12Aによって特定されているように、より高い優先度のオーディオ処理タスクをスケジューラインスタンス22(1)に割り当ててもよく、プロセス12Aによって特定されているように、より低い優先度のビデオ処理をスケジューラインスタンス22(2)に割り当ててもよい。
図1−3を参照して上述された複数のスケジューラインスタンス22の使用は、プロセス12A内の作業の区分におけるポリシ制限の特定方法を有利に提供し得る。プロセス開発者は、プロセス内の各々が異なったポリシ37を有するいくつかのスケジューラインスタンス22を生成することを選択してもよく、かつ作業の単位を当該作業の性質に依存して適切なスケジューラインスタンス22上に持ってきてもよい。開発者は、スケジューラインスタンス22のポリシ37のパラメータを調整して、要望通りにプロセスのスループットまたは応答性を変化させてもよい。
スケジューラインスタンス22に割り当てられるタスクのセットに加えて、プロセス12Aは、スケジューラインスタンス22に割り当てられているプロセスリソースから分離されているプロセスリソースへのアクセス権を取得してもよい。例えば、ランタイム環境10は、スケジューラインスタンス22に割り当てられるプロセス12Aに加えて、リソースマネージメントレイヤ14が提供する仮想プロセッサ32に割り当てられるプロセス12Aを許容してもよい。ランタイム環境10及び/またはプロセス12Aは、タスクの選択されたセットを、これらの分離されているプロセスリソースにおいて実行させて、選択された実行コンテキスト34をスケジューラインスタンス22を使用しないで実行させてもよい。
図4A−4B及び5の実施形態に示されているように、ランタイム環境10は、実行コンテキスト34が、既存のスケジューラインスタンス22(1)内に新しいスケジューラインスタンス22(2)を動的にネストすることも可能にする。既存のスケジューラインスタンス22(1)内の実行コンテキスト34(2)上で実行されているタスク36(2)は、ランタイム環境10のスケジューラ機能を起動してスケジューラインスタンス22(2)の新しいインスタンスを生成してもよい。図4A−4Bは、プロセス12B内で並列して存在するスケジューラインスタンス22(1)及び22(2)の実施形態を示すブロック図であり、スケジューラインスタンス22(1)の実行コンテキスト34(2)は、スケジューラインスタンス22(1)内にスケジューラインスタンス22(2)をネストしている。図5は、プロセス12Bにおいて最初はスケジューラ22(1)に属している実行コンテキスト34上でネストされるスケジューラインスタンス22(2)を生成する方法の実施形態を示すフロー図である。
図4A及び図5を参照すると、ブロック72に示されているように、第1のスケジューラインスタンス22(1)がプロセス12B内で生成される。図4Aの例において、スケジューラインスタンス22(1)は、実行コンテキスト34(1)及び34(2)を各々実行する仮想プロセッサ32(1)及び32(2)のセットを含む。スケジューラインスタンス22(1)は、実行されるのを待っている実行コンテキスト38及びポリシ37のプールも含んでいる。実行コンテキスト34(1)−34(2)及び38の各々は、スケジューラインスタンス22(1)を特定するデータ44(1)を含む。データ44(1)は、実行コンテキスト34(1)−34(2)及び38の各々がスケジューラインスタンス22(1)に割り当てられた結果、実行コンテキスト34(1)−34(2)及び38の各々とともに保存される。データ44(1)は、実行コンテキスト34(1)−34(2)及び38の各々のローカル記憶領域内のスタック内に保存されて、1つの実施形態において当該スタック上に持ってこられている第1のエントリを示してもよい。
プロセス12Bにおけるスケジューラインスタンス22(1)内の実行コンテキスト34(2)上で実行されているタスク36(2)は、ブロック74で示されるように第2のスケジューラインスタンス22(2)を生成させてもよい。スケジューラインスタンス22(2)のポリシ37は、スケジューラインスタンス22(1)と異なっていてもよく、スケジューラインスタンス22(1)及び22(2)に異なった動作特性を有するタスクの様々なセットを実行することを許容する。図4A及び4Bの例において、実行コンテキスト34(2)において実行されているタスク36(2)は、スケジューラインスタンス22(2)をポリシ37と共に生成させ、それによって実行コンテキスト34(2)内にスケジューラインスタンス22(2)を動的にネストする。スケジューラインスタンス22(2)内の仮想プロセッサ32(1)は、実行のために実行コンテキスト34(2)を取得する。スケジューラインスタンス22(1)において、以前に実行コンテキスト34(2)に割り当てられた仮想プロセッサ32(2)は、スケジューラ22(1)内の他のタスクを実行することが可能になる。従って、スケジューラインスタンス22(1)内の仮想プロセッサ32(2)は、タスク40(1)を実行するために実行コンテキスト38(1)を取得する。
実行コンテキスト34(2)がスケジューラインスタンス22(2)に移動させられた結果、スケジューラインスタンス22(2)を特定するデータ44(2)は、実行コンテキスト34(2)とともに保存される。データ44(2)は、実行コンテキスト34(2)のローカルの記憶領域内のスタック内に保存されてもよく、1つの実施形態においてデータ44(1)を含むスタック内の第1のエントリの上部に持ってこられる。スタックのエントリの上部は、実行コンテキスト34の各々に関する現在のスケジューラインスタンス22を示す。
ネストされているスケジューラインスタンス22(2)は、図4Bの例において示されているように、仮想プロセッサ32(2)等の追加の仮想プロセッサと共に生成されてもよい。
スケジューラインスタンス22(1)及び22(2)の各々は、ブロック76に示されているように、仮想プロセッサ32のセットの各々を使用する実行のためにタスクのセットの各々をスケジューリングする。
スケジューラインスタンス22(1)は、スケジューラインスタンス22(1)の仮想プロセッサ32(1)及び32(2)における実行のために、スケジューラインスタンス22(1)のタスクのスケジューリングを継続し、スケジューラインスタンス22(2)の仮想プロセッサ32(1)及び32(2)における実行のために、スケジューラインスタンス22(2)が、実行コンテキスト34(2)におけるタスク36(2)によって生成されるスケジューラインスタンス22(1)のタスクをスケジューリングする。
ランタイム環境10及び/またはプロセス12Bは、実行のために実行コンテキスト34及び38によって取得されるスケジューラインスタンス22(1)にタスクの追加のセットを割り当て続けてもよい。スケジューラインスタンス22(1)を示すデータ44(1)は、スケジューラインスタンス22(1)に割り当てられている任意の追加の実行コンテキストとともに保存される。
しかし、ランタイム環境10及び/またはプロセス12Bは、実行コンテキスト34(2)においてタスク36(2)によって生成されたタスクのみが、ネストされたスケジューラインスタンス22(2)に割り当てられることを可能とする。図4Bの例において、実行コンテキスト34(3)におけるタスク36(3)が仮想プロセッサ32(2)によって実行されており、実行コンテキスト38のプールがスケジューラインスタンス22(2)による実行を待っている。スケジューラインスタンス22(2)を示しているデータ44(2)は、スケジューラインスタンス22(2)内の実行コンテキスト34(2)−34(3)及び38とともに保存される。
ブロック78に示されているように、実行コンテキスト34(2)は、結果的に、スケジューラインスタンス22(1)に戻されてもよい。そうするために、データ44(2)は、実行コンテキスト34(2)から除去されて、データ44(1)が、実行コンテキスト34(2)がスケジューラインスタンス22(1)に属することを示す。データ44(1)及び44(2)がスタックとして保存される場合、データ44(2)は当該スタックの上部から出され、データ44(1)はスタックの上部に戻る。スケジューラ22(1)の仮想プロセッサ32は、実行のために実行コンテキスト34(2)を取得する。
図5の方法を使用すると、スケジューラインスタンス22の各々が他のスケジューラインスタンス22のポリシ37と異なり得る所望のポリシ37を含む実行コンテキスト34において、任意の数のスケジューラインスタンス22がスタックされ得るかまたはネストされ得る。実行コンテキストの各々は、割り当てられたスケジューラインスタンス22を特定するデータ44を含む。新しいスケジューラインスタンス22を示す新しいデータ44は、実行コンテキストが新しいスケジューラインスタンス22に移動する各々の時に実行コンテキストに加えられる(例えば、スタック上に)。
他の実施形態において、ネストされているスケジューラインスタンス22は、親スケジューラインスタンス22にさらに厳密に一体化されて、親スケジューラインスタンス22とネストされているスケジューラインスタンス22との間のリソース共有が潜在的に可能とされてもよい。
図5の方法を使用すると、ライブラリ開発者は、選択されたスケジューラポリシまたはポリシ優先傾向と共にスケジューラインスタンス22をネストするライブラリを有利に生成可能である。このことは、ライブラリ開発者に、ライブラリにおけるライブラリ機能が、後順位プロセス(overlying process)のスケジューラポリシに関わらずに当該機能に対して最も適切なスケジューラポリシとともに実行されることを保証することを可能とさせてもよい。例えば、実行コンテキスト34(2)におけるタスク36(2)が、図4A−Bの例においてプロセス12Bによって呼び出されるライブラリ機能を表してもよい。スケジューラインスタンス22(2)を使用することによって、実行コンテキスト34(2)は、スケジューラインスタンス22(1)によって実行された場合よりもさらに効果的に実行され得る。
1つの実施形態において、プロセス12A及び12Bは、タスクを1つまたは複数のスケジュールグループ90に組織化し、スケジュールグループ90をスケジューラインスタンス22に示す。図6は、スケジューラインスタンス22(1)において使用するスケジュールグループ90の実施形態を示すブロック図である。
スケジュールグループ90は、実行可能コレクション92、実現タスクコレクション93、作業コレクション94、及び0以上の作業奪取キュー96を含む。実行可能コレクション92は、ブロックされていない実行コンテキスト38のリストを含む。スケジューラインスタンス22は、実行コンテキストがブロック解除された場合に、実行可能コレクション92に実行コンテキスト38を追加する。実現タスクコレクション93は、関連付けられている実行コンテキスト38を有するかまたは有さなくともよい実現されるタスク40(例えば、未開始エージェント)のリストを含む。スケジューラインスタンス22は、新しい実行可能タスクがプロセス12によってスケジューラインスタンス22にもたらされている場合に、実現されるタスクを実現タスクコレクション93に追加する。作業コレクション94は、矢印98によって示されているように作業奪取キュー96のリストを含み、作業奪取キュー96からのタスクを実行する実行コンテキスト34を追跡する。作業奪取キュー96の各々は、1つまたは複数の未実現タスク42を含む。
図6の実施形態を使用すると、スケジューラインスタンス22は、スケジューラインスタンス22内のスケジュールグループ90の各々の実行可能コレクション92内のブロックされていない実行コンテキスト38を最初に検索し得る。その後、スケジューラインスタンス22は、スケジュールグループ90の作業奪取キュー96内の未実現タスクを検索する前に、スケジューラインスタンス22内の全てのスケジュールグループ90の実現タスクコレクション93内の実現されるタスクを検索してもよい。
1つの実施形態において、利用可能になる仮想プロセッサ32は、利用可能仮想プロセッサ32が最近に実行コンテキスト38を取得したスケジュールグループ90(すなわち、現在のスケジュールグループ90)内で、実行可能コレクション92内の実行可能実行コンテキスト38、または実現タスクコレクション93内の実現されるタスク40の検索を試行してもよい。その後、利用可能仮想プロセッサ32は、スケジューラインスタンス22の残りのスケジュールグループ90内で、ラウンドロビン(round-robin)または他の適切な順序にて、実行可能コレクション92内の実行可能実行コンテキスト38、または実現タスクコレクション93内の実現されるタスク40の検索を試行してもよい。実行可能実行コンテキスト38が見つからない場合、利用可能仮想プロセッサ32は、スケジューラインスタンス22の残りのスケジュールグループ90内でラウンドロビンまたは他の適切な順序にて作業奪取キュー96を検索する前に、現在のスケジュールグループ90の作業奪取キュー96内で、未実現タスク42の検索を試行してもよい。
図7は、プロセス12Aまたは12B内に複数のスケジューラインスタンス22を有するランタイム環境10を実装するように構成されているコンピュータシステム100の実施形態を示すブロック図である。コンピュータシステム100は、1つまたは複数のプロセッサパッケージ102、メモリシステム104、0以上の入力/出力デバイス106、0以上の表示デバイス108、0以上の周辺機器デバイス110、及び0以上のネットワークデバイス112を含む。プロセッサパッケージ102、メモリシステム104、入力/出力デバイス106、表示デバイス108、周辺機器デバイス110、及びネットワークデバイス112は、コントローラ、バス、インタフェース及び/または他の有線もしくは無線接続の任意の適切なタイプ、数及び構成を含む相互接続114のセットを用いて通信する。
コンピュータシステム100は、一般用途または特定用途のために構成された任意の適切な処理デバイスを表している。コンピュータシステム100の例には、サーバ、パーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、PDA(personal digital assistant)、携帯電話、及びオーディオ/ビデオデバイスが含まれる。コンピュータシステム100のコンポーネント(すなわち、プロセッサパッケージ102、メモリシステム104、入力/出力デバイス106、表示デバイス108、周辺機器デバイス110、ネットワークデバイス112、及び相互接続114)は、共通のハウジング(図示せず)または任意の適切な数の別個のハウジング(図示せず)内に収容されていてもよい。
プロセッサパッケージ102は、ハードウェアスレッド16(1)−16(M)を含む。プロセッサパッケージ102内のハードウェアスレッド16の各々は、メモリシステム104内に保存されている命令にアクセスしてそれを実行するように構成されている。この命令は、基本入出力システム(BIOS)もしくはファームウェア(図示せず)、オペレーティングシステム(OS)120、ランタイムプラットフォーム122、アプリケーション124、及びリソースマネージメントレイヤ14(図1にも示されている)を含んでもよい。ハードウェアスレッド16の各々は、入力/出力デバイス106、表示デバイス108、周辺機器デバイス110、及び/またはネットワークデバイス112から受信された情報と共にまたはそれに応答して命令を実行してもよい。
コンピュータシステム100は、OS120をブートして実行する。OS120は、ハードウェアスレッド16によって実行可能な命令を含んで、コンピュータシステム100のコンポーネントを管理しかつアプリケーション124が当該コンポーネントにアクセスしてそれを使用することを可能とする機能のセットを提供する。1つの実施形態において、OS120は、ウィンドウズオペレーティングシステムである。他の実施形態において、OS120は、コンピュータシステム100とともに使用するのに適した他のオペレーティングシステムである。
リソースマネージメントレイヤ14は、OS120とともに実行可能な命令を含んで、図1を参照して上述されたようにハードウェアスレッド16を含むコンピュータシステム100のリソースを割り当てる。リソースマネージメントレイヤ14は、1つまたは複数のアプリケーション124に利用可能な機能のライブラリとしてまたはOS120の統合部分としてコンピュータシステム100内に含まれてもよい。
ランタイムプラットフォーム122は、OS120と共に実行可能な命令及びリソースマネージメントレイヤ14を含んで、ランタイム環境10を生成してランタイム機能をアプリケーション124に提供する。これらのランタイム機能は、図1を参照してさらに詳細に説明されているようにスケジューラ機能を含む。ランタイム機能は、アプリケーション124の一部として、1つまたは複数のアプリケーション124に利用可能な機能のライブラリとして、またはOS120及び/またはリソースマネージメントレイヤ14の統合部分としてコンピュータシステム100内に含まれてもよい。
アプリケーション124の各々は、所望の動作をコンピュータシステム100によって実行させるためにOS120、リソースマネージメントレイヤ14、及び/またはランタイムプラットフォーム122と共に実行可能である命令を含む。アプリケーション124の各々は、上述のプロセス12A及び12B等の1つまたは複数のプロセスを表し、当該プロセスは、OS120、リソースマネージメントレイヤ14、及び/またはランタイムプラットフォーム122によって提供される複数のスケジューラインスタンス22と共に実行される。
メモリシステム104は、命令及びデータを保存するように構成されている任意の適切なタイプ、数及び構成の揮発性記憶デバイスまたは不揮発性記憶デバイスを含む。メモリシステム104の記憶デバイスは、OS120、リソースマネージメントレイヤ14、ランタイムプラットフォーム122、及びアプリケーション124を含むコンピュータ実行可能命令を保存するコンピュータ可読記憶媒体を表す。命令は、本明細書に記載のOS120、リソースマネージメントレイヤ14、ランタイムプラットフォーム122、及びアプリケーション124の機能及び方法を実行するためにコンピュータシステムによって実行可能である。メモリシステム104内の記憶デバイスの例には、ハードディスクドライブ、RAM(random access memory)、ROM(read only memory)、フラッシュメモリドライブ及びカード、並びに磁気及び光学ディスクが含まれる。
メモリシステム104は、プロセッサパッケージ102、入力/出力デバイス106、表示デバイス108、周辺機器デバイス110、ネットワークデバイス112から受信される命令及びデータを保存する。メモリシステム104は、保存されている命令及びデータを、プロセッサパッケージ102、入力/出力デバイス106、表示デバイス108、周辺機器デバイス110、ネットワークデバイス112に提供する。
入力/出力デバイス106は、ユーザからの命令またはデータをコンピュータシステム100に入力しかつコンピュータシステム100からの命令またはデータをユーザに出力するように構成されている任意の適切なタイプ、数、及び構成の入力/出力デバイスを含む。入力/出力デバイス106の例には、キーボード、マウス、タッチパッド、タッチスクリーン、ボタン、ダイアル、ノブ、及びスイッチが含まれる。
表示デバイス108には、テキスト及び/またはグラフィック情報をコンピュータシステム100のユーザに出力するように構成されている任意の適切なタイプ、数、及び構成の表示デバイスが含まれる。表示デバイス108の例には、モニタ、ディスプレイスクリーン、及びプロジェクタが含まれる。
周辺機器デバイス110には、コンピュータシステム100において1つまたは複数の他のコンポーネントと共に動作して一般的なまたは特別な処理機能を実行するように構成されている任意の適切なタイプ、数、及び構成の周辺機器デバイスが含まれる。
ネットワークデバイス112には、コンピュータシステム100に1つまたは複数のネットワーク(図示せず)を介して通信することを可能とするように構成された任意の適切なタイプ、数、及び構成のネットワークデバイスが含まれる。ネットワークデバイス112は、任意の適切なネットワークプロトコル及び/または構成に従って動作して、情報がコンピュータシステムによってネットワークに伝送されるかまたはネットワークからコンピュータシステムによって受信されることを可能としてもよい。
本明細書において、特定の実施形態が図示されかつ説明されてきたが、本発明の範囲から逸脱することなく、様々な代替実装例及び/または均等実装例が、図示及び説明されている特定の実施形態と置換され得ることが本技術分野の当業者には明らかであろう。本出願は、本明細書内で説明される特定の実施形態の任意の新用途への適合例または変更例をカバーすることを目的としている。従って、本発明が特許請求の範囲及びその均等例のみによって限定されることが意図されている。

Claims (15)

  1. コンピュータシステム(100)によって実行される際に、方法を実行するコンピュータ実行可能命令を保持するコンピュータ可読記憶媒体(104)であって、前記方法は、
    前記コンピュータシステムによって実行可能な命令を有する第1のスケジューラインスタンス(22)を生成してプロセス(12)のタスク(36/40/42)の第1のセットを前記コンピュータシステムによって実行させるステップと、
    前記コンピュータシステムによって実行可能な命令を有する第2のスケジューラインスタンス(22)を生成して前記プロセスのタスク(36/40/42)の第2のセットを前記コンピュータシステムによって実行させるステップとを備えることを特徴とするコンピュータ可読記憶媒体。
  2. 前記方法は、
    仮想プロセッサ(32)の第1のセットを前記第1のスケジューラインスタンスに割り当てて前記コンピュータシステムのプロセッサリソースの第1のサブセットを示すステップと、
    仮想プロセッサ(32)の第2のセットを前記第2のスケジューラインスタンスに割り当てて前記コンピュータシステムのプロセッサリソースの第2のサブセットを示すステップとをさらに備えることを特徴とする請求項1に記載のコンピュータ可読記憶媒体。
  3. 前記方法は、
    前記仮想プロセッサの第1のセットをハードウェアスレッド(16)の第1のセットにマッピングして前記タスクの第1のセットを前記ハードウェアスレッドの第1のセットに実行させるステップと、
    前記仮想プロセッサの第2のセットをハードウェアスレッド(16)の第2のセットにマッピングして前記タスクの第2のセットを前記ハードウェアスレッドの第2のセットに実行させるステップとをさらに備えることを特徴とする請求項2に記載のコンピュータ可読記憶媒体。
  4. 前記第2のスケジューラインスタンスを生成するステップは、
    前記タスクの第1のセットのうちの1つを実行する実行コンテキスト(34)を前記第1のスケジューラインスタンスから前記第2のスケジューラインスタンスに移動するステップと、
    前記タスクの第2のセットのうちの1つとして前記タスクの第1のセットのうちの前記1つを実行するステップとを含むことを特徴とする請求項1に記載のコンピュータ可読記憶媒体。
  5. 前記第2のスケジューラインスタンスを生成するステップは、
    前記タスクの第2のセットのうちの1つとして前記タスクの第1のセットのうちの前記1つを実行するステップに先立って、前記実行コンテキストを有する前記第1のスケジューラインスタンスを特定するデータ(44)を保存するステップをさらに含むことを特徴とする請求項4に記載のコンピュータ可読記憶媒体。
  6. プロセス(12)内の第1のスケジューラインスタンス(22)及び第2のスケジューラインスタンス(22)を開始するステップであって、前記第1のスケジューラインスタンス及び前記第2のスケジューラインスタンスがプロセスリソースのセットからのプロセスリソースの第1のサブセット及び第2のサブセットへのアクセス権を各々有し、かつ前記プロセスからのタスク(36/40/42)の第1のセット及びタスク(36/40/42)の第2のセットへのアクセス権を各々有するステップと、
    前記プロセスリソースの第1のサブセットのうちの1つによる実行のために、前記第1のスケジューラインスタンスを用いて前記タスクの第1のセットの最初の1つをスケジューリングするステップと、
    前記プロセスリソースの第2のサブセットのうちの1つによる実行のために前記タスクの第2のセットのうちの1つを前記第2のスケジューラインスタンスを用いてスケジューリングするステップとを備えることを特徴とする方法。
  7. 前記第1のスケジューラインスタンスに割り当てられた仮想プロセッサ(32)の第1のセットのうちの1つにおいて前記タスクの第1のセットのうちの前記1つを第1の実行コンテキスト(34)に関連付けることによる前記プロセスリソースの第1のサブセットのうちの前記1つによる実行のために前記タスクの第1のセットの最初の1つをスケジューリングするステップと、
    前記第2のスケジューラインスタンスに割り当てられた仮想プロセッサ(32)の第2のセットのうちの1つにおいて前記タスクの第2のセットのうちの前記1つを第1の実行コンテキスト(34)に関連付けることによる前記プロセスリソースの第2のサブセットのうちの前記1つによる実行のために前記タスクの第2のセットの前記1つをスケジューリングするステップとをさらに備え、
    前記プロセスリソースの第1のサブセット及び前記プロセスリソースの第2のサブセットは、前記仮想プロセッサの第1のセット及び前記仮想プロセッサの第2のセットを各々含むことを特徴とする請求項6に記載の方法。
  8. 前記タスクの第1のセットのうちの最初の1つの実行のために前記仮想プロセッサの第1のセットのうちの前記1つを第1のハードウェアスレッド(16)にマッピングするステップと、
    前記タスクの第2のセットのうちの1つの実行のために前記仮想プロセッサの第2のセットのうちの前記1つを第2のハードウェアスレッド(16)にマッピングするステップとを備え、
    前記プロセスリソースのセットは、前記第1のハードウェアスレッド及び前記第2のハードウェアスレッドを含むことを特徴とする請求項7に記載の方法。
  9. 前記第1のスケジューラインスタンス内の前記プロセスリソースの第1のサブセットの前記1つにおける第1の実行コンテキスト(34)上の前記タスクの第1のセットの前記1つの実行に応じて前記第2のスケジューラインスタンスを開始するステップと、
    前記第2のスケジューラインスタンスを開始して前記第1の実行コンテキストを含めるステップとをさらに備えることを特徴とする請求項6に記載の方法。
  10. 前記第1のスケジューラインスタンスを特定する第1のデータ(44)を前記第1の実行コンテキストとともに保存するステップをさらに備えることを特徴とする請求項9に記載の方法。
  11. 前記第1のスケジューラインスタンスを特定する第2のデータ(44)を第1のスケジューラインスタンス内の第2の実行コンテキスト(34)とともに保存するステップと、
    前記第2のスケジューラインスタンスを特定する第3のデータ(44)を前記第1の実行コンテキストとともに保存するステップとをさらに備えることを特徴とする請求項10に記載の方法。
  12. 前記第1のデータ及び前記第3のデータをスタックとして保存するステップをさらに備えることを特徴とする請求項11に記載の方法。
  13. 前記第2のスケジューラインスタンス内の前記第1の実行コンテキストを前記第1のスケジューラインスタンスに戻すステップをさらに備えることを特徴とする請求項9に記載の方法。
  14. 前記第2のスケジューラインスタンスの開始の後に前記プロセスリソースの第1のサブセットの前記1つによる実行のために前記タスクの第1のセットの次の1つをスケジューリングするステップをさらに備えることを特徴とする請求項9に記載の方法。
  15. 前記プロセスは、アプリケーション、ライブラリ機能、オペレーティングシステムサービスのうちの1つであることを特徴とする請求項6に記載の方法。
JP2011512497A 2008-06-02 2009-05-01 プロセス内のスケジューラインスタンス Expired - Fee Related JP5597196B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/131,135 US8650570B2 (en) 2008-06-02 2008-06-02 Method of assigning instructions in a process to a plurality of scheduler instances based on the instruction, in which each scheduler instance is allocated a set of negoitaited processor resources
US12/131,135 2008-06-02
PCT/US2009/042609 WO2009148738A2 (en) 2008-06-02 2009-05-01 Scheduler instances in a process

Publications (2)

Publication Number Publication Date
JP2011523142A true JP2011523142A (ja) 2011-08-04
JP5597196B2 JP5597196B2 (ja) 2014-10-01

Family

ID=41381482

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011512497A Expired - Fee Related JP5597196B2 (ja) 2008-06-02 2009-05-01 プロセス内のスケジューラインスタンス

Country Status (9)

Country Link
US (1) US8650570B2 (ja)
EP (1) EP2300910B1 (ja)
JP (1) JP5597196B2 (ja)
KR (1) KR101555529B1 (ja)
CN (1) CN102047218B (ja)
BR (1) BRPI0910531A2 (ja)
CA (1) CA2722670C (ja)
RU (1) RU2530345C2 (ja)
WO (1) WO2009148738A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10768984B2 (en) 2015-06-11 2020-09-08 Honeywell International Inc. Systems and methods for scheduling tasks using sliding time windows

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101644800B1 (ko) * 2010-01-07 2016-08-02 삼성전자주식회사 컴퓨팅 시스템 및 방법
US8392920B2 (en) * 2010-01-27 2013-03-05 Microsoft Corporation Parallel query engine with dynamic number of workers
KR101658035B1 (ko) * 2010-03-12 2016-10-04 삼성전자주식회사 가상 머신 모니터 및 가상 머신 모니터의 스케줄링 방법
KR101859188B1 (ko) * 2011-09-26 2018-06-29 삼성전자주식회사 매니코어 시스템에서의 파티션 스케줄링 장치 및 방법
US20130132962A1 (en) * 2011-11-22 2013-05-23 Microsoft Corporation Scheduler combinators
CN103136047B (zh) * 2011-11-30 2016-08-17 大唐联诚信息系统技术有限公司 一种多线程管理方法及架构
ES2439803B1 (es) * 2012-04-19 2014-10-29 Universitat Politècnica De Catalunya Procedimiento, sistema y pieza de código ejecutable para controlar el uso de recursos de hardware de un sistema informático
CN102693156A (zh) * 2012-05-07 2012-09-26 清华大学 一种基于可配置策略的进程调度方法
CN102685228A (zh) * 2012-05-10 2012-09-19 苏州阔地网络科技有限公司 一种云会议的消息处理方法及系统
JP6017260B2 (ja) * 2012-10-17 2016-10-26 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ
US10108445B2 (en) 2014-09-22 2018-10-23 The Boeing Company Parallelization in virtual machine operation
US9582298B2 (en) 2015-03-20 2017-02-28 Amazon Technologies, Inc. Executing commands within virtual machine instances
CN106502787B (zh) * 2016-09-30 2019-11-26 华为技术有限公司 一种调度方法及装置
CN107741878A (zh) * 2016-11-01 2018-02-27 研祥智能科技股份有限公司 任务调度方法、装置及系统
US10552212B2 (en) * 2016-11-28 2020-02-04 Arm Limited Data processing
CN109426556B (zh) * 2017-08-31 2021-06-04 大唐移动通信设备有限公司 一种进程调度方法和装置
CN107451469A (zh) * 2017-09-14 2017-12-08 郑州云海信息技术有限公司 一种进程管理系统及方法
CN110968401A (zh) * 2018-09-28 2020-04-07 北京国双科技有限公司 基于Quartz的任务调度方法及装置
US11138213B2 (en) 2019-04-10 2021-10-05 Snowflake Inc. Internal resource provisioning in database systems

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07200314A (ja) * 1993-12-28 1995-08-04 Nec Corp 並列ジョブの協調スケジューリング方式
JPH0954699A (ja) * 1995-08-11 1997-02-25 Fujitsu Ltd 計算機のプロセススケジューラ
US20060095908A1 (en) * 2004-11-01 2006-05-04 Norton Scott J Per processor set scheduling

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5394547A (en) 1991-12-24 1995-02-28 International Business Machines Corporation Data processing system and method having selectable scheduler
US6269391B1 (en) 1997-02-24 2001-07-31 Novell, Inc. Multi-processor scheduling kernel
EP0996887B1 (en) 1997-07-25 2002-10-09 BRITISH TELECOMMUNICATIONS public limited company Scheduler for a software system
US6661794B1 (en) 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6839748B1 (en) 2000-04-21 2005-01-04 Sun Microsystems, Inc. Synchronous task scheduler for corba gateway
US7234139B1 (en) * 2000-11-24 2007-06-19 Catharon Productions, Inc. Computer multi-tasking via virtual threading using an interpreter
US20020073129A1 (en) * 2000-12-04 2002-06-13 Yu-Chung Wang Integrated multi-component scheduler for operating systems
US6901405B1 (en) 2000-12-20 2005-05-31 Microsoft Corporation Method for persisting a schedule and database schema
GB0212176D0 (en) 2002-05-27 2002-07-03 Radioscape Ltd Stochasitc scheduling in CVM
US8165148B2 (en) 2003-01-13 2012-04-24 Qualcomm Incorporated System and method for rate assignment
US7251815B2 (en) * 2003-04-29 2007-07-31 International Business Machines Corporation Multiple virtual machines sharing processor and work queue in memory having program/dispatch functions for assigning and accessing work items while the virtual machine was not idle
US20050076339A1 (en) * 2003-10-03 2005-04-07 Nortel Networks Limited Method and apparatus for automated negotiation for resources on a switched underlay network
US7457886B1 (en) * 2004-02-03 2008-11-25 Apple Inc. System and method for input/output scheduling
US8271976B2 (en) 2004-06-30 2012-09-18 Microsoft Corporation Systems and methods for initializing multiple virtual processors within a single virtual machine
US7600101B2 (en) 2005-01-13 2009-10-06 Hewlett-Packard Development Company, L.P. Multithreaded hardware systems and methods
US7613904B2 (en) * 2005-02-04 2009-11-03 Mips Technologies, Inc. Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
FR2882169B1 (fr) 2005-02-14 2007-05-25 Cofluent Design Sarl Procede de simulation d'un systeme complexe incluant une hierarchie d'ordonnanceurs, produit programme d'ordinateur et moyen de stockage correspondants
US8245230B2 (en) * 2005-03-14 2012-08-14 Qnx Software Systems Limited Adaptive partitioning scheduler for multiprocessing system
US7802256B2 (en) 2005-06-27 2010-09-21 Microsoft Corporation Class scheduler for increasing the probability of processor access by time-sensitive processes
US20070083735A1 (en) * 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US20070074217A1 (en) 2005-09-26 2007-03-29 Ryan Rakvic Scheduling optimizations for user-level threads
US20070204268A1 (en) * 2006-02-27 2007-08-30 Red. Hat, Inc. Methods and systems for scheduling processes in a multi-core processor environment
US8656403B2 (en) * 2008-04-30 2014-02-18 International Business Machines Corporation Negotiation management in data processing systems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07200314A (ja) * 1993-12-28 1995-08-04 Nec Corp 並列ジョブの協調スケジューリング方式
JPH0954699A (ja) * 1995-08-11 1997-02-25 Fujitsu Ltd 計算機のプロセススケジューラ
US20060095908A1 (en) * 2004-11-01 2006-05-04 Norton Scott J Per processor set scheduling

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNG200100215007; 北口 修一: 'ユーザレベルスレッドライブラリPPLにおける柔軟なスケジューリング機構' 情報処理学会論文誌 第40巻,第6号, 19990615, pp.2585-2595, 社団法人情報処理学会 *
JPN6013038868; 北口 修一: 'ユーザレベルスレッドライブラリPPLにおける柔軟なスケジューリング機構' 情報処理学会論文誌 第40巻,第6号, 19990615, pp.2585-2595, 社団法人情報処理学会 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10768984B2 (en) 2015-06-11 2020-09-08 Honeywell International Inc. Systems and methods for scheduling tasks using sliding time windows
US11507420B2 (en) 2015-06-11 2022-11-22 Honeywell International Inc. Systems and methods for scheduling tasks using sliding time windows

Also Published As

Publication number Publication date
CA2722670C (en) 2016-07-05
EP2300910A4 (en) 2012-10-10
WO2009148738A2 (en) 2009-12-10
EP2300910B1 (en) 2018-11-21
BRPI0910531A2 (pt) 2015-09-29
CN102047218B (zh) 2013-09-11
WO2009148738A3 (en) 2010-02-18
KR101555529B1 (ko) 2015-10-06
JP5597196B2 (ja) 2014-10-01
RU2530345C2 (ru) 2014-10-10
KR20110025745A (ko) 2011-03-11
CN102047218A (zh) 2011-05-04
US8650570B2 (en) 2014-02-11
CA2722670A1 (en) 2009-12-10
EP2300910A2 (en) 2011-03-30
US20090300637A1 (en) 2009-12-03
RU2010149255A (ru) 2012-06-10

Similar Documents

Publication Publication Date Title
JP5597196B2 (ja) プロセス内のスケジューラインスタンス
KR101618892B1 (ko) 스케줄러 내의 스케줄링 컬렉션
US8566830B2 (en) Local collections of tasks in a scheduler
US8291426B2 (en) Memory allocators corresponding to processor resources
US20100088704A1 (en) Meta-scheduler with meta-contexts
AU2009255464B2 (en) Regaining control of a processing resource that executes an external execution context
US8806180B2 (en) Task execution and context switching in a scheduler
US9304831B2 (en) Scheduling execution contexts with critical regions
US20100325636A1 (en) Interface between a resource manager and a scheduler in a process
US9384063B2 (en) Eliding synchronization in a concurrent data structure

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120213

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130701

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130716

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130718

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130807

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131107

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131114

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140207

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140304

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140704

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140711

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140801

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140808

R150 Certificate of patent or registration of utility model

Ref document number: 5597196

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees