JP5367816B2 - オペレーションの保護モードスケジューリング - Google Patents

オペレーションの保護モードスケジューリング Download PDF

Info

Publication number
JP5367816B2
JP5367816B2 JP2011516435A JP2011516435A JP5367816B2 JP 5367816 B2 JP5367816 B2 JP 5367816B2 JP 2011516435 A JP2011516435 A JP 2011516435A JP 2011516435 A JP2011516435 A JP 2011516435A JP 5367816 B2 JP5367816 B2 JP 5367816B2
Authority
JP
Japan
Prior art keywords
mode
scheduling
execution object
supervisor
protection
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.)
Active
Application number
JP2011516435A
Other languages
English (en)
Other versions
JP2011526040A (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 JP2011526040A publication Critical patent/JP2011526040A/ja
Application granted granted Critical
Publication of JP5367816B2 publication Critical patent/JP5367816B2/ja
Active 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
    • 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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、オペレーションの保護モードスケジューリングに関する。
コンピュータシステムおよび関連技術は、社会の多くの側面に影響を与える。実際、コンピュータシステムの情報を処理する能力は、我々が生活し、働く方法を変えた。コンピュータシステムは、コンピュータシステムが登場する前は手動で行われていた多くのタスク(例えば、ワードプロセッシング、データベース管理、会計など)を今では一般に実行する。最近になり、コンピュータシステムを相互に、および他の電子デバイスと結合して、それらのコンピュータシステムおよび他の電子デバイスが電子データを転送することができる有線コンピュータネットワークおよび無線コンピュータネットワークの双方を形成する。したがって、多くのコンピューティングタスクのパフォーマンスは、多数の様々なコンピュータシステムおよび/または多数の様々なコンピューティングコンポーネントにわたって分散される。
典型的には、コンピュータシステムをオンにし、あるいは「起動」すると、読み取り専用メモリ(例えば、フラッシュメモリチップ)から「BIOS」(基本入出力システム)が稼働される。このBIOSは、コンピュータシステムのオペレーションの準備をするための一連のアクティビティを実行する。その一連のアクティビティには、(起動がコールドブートであるかリブートであるかに応じて)カスタム設定用のCMOSセットアップをチェックすること、割り込みハンドラおよびデバイスドライバをロードすること、レジスタおよび電源管理を初期化すること、コンピュータシステムの様々なハードウェアコンポーネントが確実に正しく機能していることをテストすること(パワーオン・セルフテスト(Power on self test)、すなわち「POST」)、ならびに他のカード(例えば、SCSIカードやグラフィックスカード)上のBIOSチップをアクティブにすることが含まれ得る。CMOS設定から、BIOSは、ブート可能なデバイスを識別し、ブートストラップシーケンスを開始してオペレーティングシステムを起動することができる。
コンピュータシステムの動作中、BIOSは、例えばキーボード、マウス、ビデオディスプレイ、ポートなどの、様々なハードウェアデバイスとインタフェースするためにオペレーティングシステムが使用することができる、下位レベルのルーチンのセットも提供する。したがって、典型的なコンピューティングタスクを実行するために、オペレーティングシステムは、(アプリケーションプログラムまたはユーザのいずれかから)コマンドを受け取り、それらのコマンドを適切な物理リソースに転送する。それを受けて、その物理リソースは、下位レベルのオペレーションを実装してそのコンピューティングタスクを実行する。
オペレーティングシステムは、典型的に2つの互いに異なる動作モードを含む。すなわち、スーパーバイザーモード(supervisor mode)(「カーネルモードと呼ばれることもある)と、保護モード(protected mode)(「ユーザモード」と呼ばれることもある)とを含む。スーパーバイザーモードで動作するとき、プロセスは、すべてのリソースに対して無制限のアクセスを有しており、全ての命令を実行することができ、任意のメモリロケーションを参照することができる。一方、保護モードで動作するとき、リソースへのアクセスは制限され、一部の命令の実行は禁止され、一部のメモリロケーションの参照は禁止される。オペレーティングシステムは、典型的に、中央コンポーネント、すなわち、「カーネル」を有し、このカーネルはカーネルモードで動作するよう信頼されている。オペレーティングシステムの他の部分ならびに他のプログラムは信頼されておらず、特権的なリソースおよび命令に直接アクセスすることはできない。したがって、保護モードで動作するソフトウェアは、特権的なオペレーションを実行するために、(例えば、システムコールにより)カーネルの使用を要求しなければならない。
概して、オペレーティングシステムは、該オペレーティングシステムが含まれるコンピュータシステムが、柔軟であるが予測可能な方法で動作するように、ハードウェアリソースおよびソフトウェアリソースを管理する。典型的なコンピュータシステムでは、これらのリソースには、プロセッサ、メモリ、ディスクスペースなどが含まれ得る。オペレーティングシステムは、例えば、アプリケーションプログラムなどの他のソフトウェアを呼び出すための一貫性のあるアプリケーションも提供する。典型的には、アプリケーションプログラムは、実行されると、様々なコンピューティングタスクを実行するための1つまたは複数のプロセスを作成する。さらに、ほとんどのオペレーティングシステムは、1つのコンピュータシステム上で複数の独立したアプリケーションを同時に実行することを許可する。したがって、任意の所与の時点において、コンピュータシステムは、同時に実行される複数の様々なアプリケーションに対応する複数のプロセスを有することができる。
プロセスの作成は、実装するためにアプリケーションプログラムがカーネルを呼び出すことを必要とする特権的なオペレーションである。カーネルは、メモリをプロセスに割り当て、プログラムコードをディスクからロードし、そのプロセスの実行を開始することができる。
作成された複数のプロセスはそれぞれ、指定のコンピューティングタスクを実行するのに、プロセッサ(CPU)、入出力、メモリ、およびストレージリソースのうちの1つまたは複数を必要とすることがある。しかし一部のリソースは、1度に少量の限られた数のプロセスのためのタスク、およびしばしば1つのプロセスのためのタスクのみを実行する可能性がある。例えば、多くのCPUは、1度に1つのプロセスの命令を実行するよう制限される。したがって、多くのオペレーティングシステムは、マルチタスキングを使用して、複数のコンピューティングタスクを同時に実行しているように見せている。マルチタスキングは、複数のプロセスによって、例えばCPUなどの共通の処理リソースが共有される機構である。
一部のオペレーティングシステムでは、1つのプロセスが、実行のスレッド(もしくは単に「スレッド」)またはファイバ(fiber)と呼ばれることもある、多くのサブプロセスを含むことができる。スレッドまたはファイバは、1つのプロセスのコード内の別個の独立した実行シーケンスである、サブプロセスである。スレッドおよびファイバは、プロセスが、該プロセス自身を2つまたはそれ以上の同時に(または擬似同時的に)実行されるタスクに分岐(または分割)するための機構を提供する。スレッドおよびファイバ、ならびにプロセスは、オペレーティングシステムによって異なる。しかしながら、通常、スレッドまたはファイバはプロセスの中に含まれ、同じプロセス内の異なるスレッドまたはファイバは、一部のリソースを共有し、異なるプロセスはリソースを共有しない。しかしながら、スレッドおよびファイバは、特権的リソースへのアクセスをまだ有していない場合は、この特権的リソースへのアクセスを個別に要求することができる。スレッドとファイバは、典型的に、スレッドがプリエンプティブマルチタスキング(pre-emptive multitasking)を使用するのに対し、ファイバは共同マルチタスキング(cooperative multitasking)を使用する点で異なる。
典型的には、所望のタイプのマルチタスキングを実装するために、オペレーティングシステムカーネルは、スケジューラと呼ばれる1つのソフトウェアを含み、このスケジューラは、各プロセスおよび/またはスレッド(およびそれほどではないにせよ、それらの環境内のファイバ)が実行にどれだけの時間を費やすことができるか、および実行制御をどの順序で渡すべきかを決定する。プロセス/スレッドがCPUおよびメモリにアクセスすることを許可する制御は、カーネルによってプロセスおよび/またはスレッドに渡される。後の時点で、それらの他のプロセスおよび/またはスレッドがCPUおよびメモリにアクセスすることができるようにする制御は、何らかの機構を介してカーネルに返される。例えば、「BVT」(Borrowed-Virtual-Time)スケジューリング、マルチレベルフィードバックキュースケジューリング、インターバルスケジューリング、完全公平(completely fair)スケジューリングなど、CPUリソースを複数のプロセス/スレッド/ファイバに多重化するためにオペレーティングシステムカーネル内に実装することができる、様々な種類のスケジューリングアルゴリズムが存在する。
カーネルとプロセス/スレッド/ファイバとの間、およびその反対の間で制御を渡すことは、コンテキスト切り替え(context switching)と呼ばれることがある。コンテキスト切り替えは、複数のプロセスが単一のCPUリソースを共有することができるようにCPUの状態(コンテキスト)を記憶して復元(restore)することを含む。コンテキスト切り替えは、典型的に計算コストが高い。例えば、コンテキスト切り替えの間、実行中のプロセスが停止され、実行する機会は別のプロセスに与えられる。オペレーティングシステムのカーネルは、実行中のプロセスの実行を停止し、ハードウェアレジスタ内の値を、そのプロセス制御ブロック(「PCB」:process control block)にコピーして、新たなプロセスのPCBからの値を用いてハードウェアレジスタを更新する必要がある。PCBは、オペレーティングシステムに応じて様々な異なる情報を含むことができる。しかしながら、通常、PCBは、プロセス識別子(PID:process identifier)、そのプロセスのプログラムカウンタを含むレジスタ値、そのプロセスのアドレス空間、優先度、プロセスアカウント情報(例えば、そのプロセスが最後に実行されたのはいつか、そのプロセスがどれだけのCPU時間を累計したか等)、および次に実行すべきプロセスのPCBへのポインタを含む。この情報はすべて、コンテキスト切り替え毎に、現在のプロセスについてはアンロードし、新たなプロセスについてはロードする必要がある。
したがって、ほとんどのオペレーティングシステムにおいて、カーネルは、本質的に、システム全体のポリシーを実行するスレッドのための集中型レポジトリおよび機関(authority)として機能する。すなわち、カーネルは、すべてのスケジューリングおよびコンテキストの管理を行う。そのため、カーネルは、スケーラビリティを潜在的に制限するボトルネックとなる。大量のスレッドがアクティブであるとき、少なくとも部分的に実質的なコンテキストデータのロードおよびアンロードに起因して、パフォーマンスも潜在的に低下する。
さらに、オペレーティングシステムカーネルは、そのカーネルが使用すべき実行アブストラクション(例えばスレッド、ファイバ等)およびスケジューリングアルゴリズムの双方を定義する。したがって、オペレーティングシステムを実行するすべてのアプリケーションは、基本的に、その定義された実行アブストラクションおよびスケジューリングアルゴリズムを使用することを強いられる。一部のアプリケーションは、他の実行アブストラクションおよび/またはスケジューリングアルゴリズムとともに使用するのにより適していることがあるので、このことは最適ではないことがある。例えば、あるアプリケーションは、ToDos(実行アブストラクションの一種)およびマルチレベルフィードバックキュースケジューリングを使用するのにより適している可能性がある。しかし、カーネルが、BVTスケジューリングを用いるようにスレッドを定義している場合、そのアプリケーションは、それにもかかわらず、その組合せを使用することを強いられることとなる。
多くのアプリケーションは異なる要件を有するので、本質的に、すべてのアプリケーションに最適な単一の(または画一的)スケジューリングアルゴリズムを導き出すことは不可能である。例えば、ワードプロセッサアプリケーション、メディアプレイヤプリケーション、およびディスクバックアップアプリケーションは、それぞれ異なる最適なスケジューリングアルゴリズムを有する可能性がある。しかし、トレードオフを行って、様々なアプリケーションの間で、たとえ最適でなくとも少なくとも機能するスケジューリングアルゴリズムを定義することができる。
本発明は、オペレーションの保護モードスケジューリングに関する方法、システム、およびコンピュータプログラム製品に及ぶ。一部の実施形態では、コンピュータシステムが、プロセッサリソースのスケジューリングを保護(例えばユーザ)モードで行うように構成して、スケジューリングの責任をスーパーバイザー(例えばカーネル)モードから分散させる。このコンピュータシステムは、オペレーティングシステムの保護モードで動作する保護モードスケジューリングドメインを作成する。保護モードスケジューリングドメインを作成することには、仮想プロセッサを作成することが含まれる。この仮想プロセッサは、保護モードスケジューリングドメインの実行オブジェクトによる使用のために、物理プロセッサの少なくとも一部分をマップする。
この仮想プロセッサには、保護モード仮想プロセッサが含まれる。保護モード仮想プロセッサは、スーパーバイザーモードの通知を処理し、実行オブジェクトをディスパッチするように構成される。この仮想プロセッサには、スーパーバイザーモード仮想プロセッサも含まれる。スーパーバイザーモード仮想プロセッサは、物理プロセッサの少なくとも一部分を、保護モードスケジューリングドメインの実行オブジェクトによる使用のために予約するように構成される。
保護モードスケジューリングドメインを作成することには、デフォルトのスーパーバイザーモードスケジューリングポリシーとは異なる少なくとも1つの保護モードスケジューリングポリシーをロードすることも含まれる。この少なくとも1つの保護モードスケジューリングポリシーは、仮想プロセッサ上で、保護モードスケジューリングドメインの実行オブジェクトを多重化するためのものである。保護モードスケジューリングドメインを作成することには、保護モードスケジューリングドメインの実行オブジェクトの状態を記憶するように構成される実行オブジェクトストアを作成することも含まれる。この実行オブジェクトストアは、コンテキストを保護モードスケジューリングドメイン内の異なる実行オブジェクト間で切り替えることを容易にする。
他の実施形態では、コンピュータシステムが、プロセッサリソースの消費を保護モードでスケジュールして、スケジューリングの責任をスーパーバイザーモードから分散させる。このコンピュータシステムは、保護モードスケジューリングドメインにおいて、物理プロセッサリソースを、その保護モードスケジューリングドメインの第1の実行オブジェクトに割り当てる。この物理プロセッサリソースは、デフォルトのスーパーバイザーモードスケジューリングポリシーとは異なる保護モードスケジューリングポリシーに従って割り当てられる。このコンピュータシステムは、割り当てられた物理プロセッサリソースを用いて、第1の実行オブジェクト内で指示される完全な作業を分割する。
このコンピュータシステムは、第1の実行オブジェクト内で指示される作業を完全に完了する前に、保護モードスケジューリングポリシーに従って、物理プロセッサリソースの割当てを、保護モードスケジューリングドメイン内の第2の実行オブジェクトに遷移させることを決定する。このコンピュータシステムは、スーパーバイザーモードに遷移することなく保護モードにおいて、コンテキストを第1の実行オブジェクトから第2の実行オブジェクトに切り替える。
コンテキストを切り替えることには、第1の実行オブジェクトの状態を、保護モードスケジューリングドメイン内にある実行オブジェクトストアに保持することが含まれる。コンテキストを切り替えることには、第2の実行オブジェクトの状態を実行オブジェクトストアからロードすることも含まれる。このコンピュータシステムは、第2の実行オブジェクトにコンテキストを切り替えた後、保護モードスケジューリングドメインにおいて、物理プロセッサリソースをその保護モードスケジューリングドメインの第2の実行オブジェクトに割り当てる。このコンピュータシステムは、割り当てられた物理プロセッサリソースを用いて、第2の実行オブジェクト内で指示される完全な作業を分割する。
この発明の概要は、以下の発明を実施するための形態においてさらに説明する概念の選択を簡略化した形で紹介するために提供されている。この発明の概要は、特許請求される主題の主要な特徴または本質的な特徴を特定するようには意図されておらず、特許請求される主題の範囲を決定する際の助けとして使用されるようにも意図されていない。
本発明のさらなる特徴および利点は以下の記載で説明され、その説明から部分的に明らかになり、または本発明を実施することにより知ることができる。本発明の特徴および利点は、添付の特許請求の範囲の中で特に示される機器および組合せによって実現し、得ることができる。本発明のこれらのおよび他の特徴は、以下の説明および添付の特許請求の範囲からより完全に明らかになり、または本明細書で以下に記載するように本発明を実施することによって知ることができよう。
スケジューリングの責任をスーパーバイザーモードから分散させるために、プロセッサリソースのスケジューリングを保護モードで行うように構成することを助ける例示的なコンピュータキテクチャの一部を示す図である。 スケジューリングの責任をスーパーバイザーモードから分散させるために、プロセッサリソースの消費を保護モードでスケジュールする例示的なコンピュータキテクチャの一部を示す図である。 仮想プロセッサのさらなるコンポーネントを示す、例示的なコンピュータキテクチャの一部を示す図である。 保護モードスケジューリングドメイン内の複数の仮想プロセッサを示す、例示的なコンピュータキテクチャの一部を示す図である。 保護モードスケジューリングドメイン間で同期するためのコンポーネントを示す、例示的なコンピュータキテクチャの一部を示す図である。 保護モードスケジューリングドメインに機能を提供する、例示的なスーパーバイザーモードインフラストラクチャを示す図である。 保護モードスケジューリングドメインに機能を提供する、例示的なスーパーバイザーモードインフラストラクチャを示す図である。 ユーザモードスケジューリングアーキテクチャの一例を示す図である。 プロセッサリソースのスケジューリングを保護モードで行うように構成するための例示的な方法を示すフローチャートである。 保護モードでプロセッサリソースをスケジューリングするための例示的な方法のフローチャートである。
本発明の上記に挙げた利点および特徴ならびに他の利点および特徴が得られる方法を説明するために、上記に簡潔に述べた本発明のより詳細な説明は、添付の図面に図示される特定の実施形態を参照することによって提供される。これらの図面は本発明の典型的な実施形態を示しているに過ぎず、したがって本発明の範囲の限定とみなすべきでないことを理解されたい。添付の図面の使用を通じて本発明をさらに具体的かつ詳細に記載し、説明する。
本発明は、オペレーションの保護モードスケジューリングのための方法、システム、およびコンピュータプログラム製品に及ぶ。一部の実施形態では、コンピュータシステムは、プロセッサリソースのスケジューリングが保護(例えばユーザ)モードで行われるように構成し、スケジューリングの責任(responsibility)をスーパーバイザー(例えばカーネル)モードから分散させる。このコンピュータシステムは、オペレーティングシステムの保護モードで動作する、保護モードスケジューリングドメインを作成する。保護モードスケジューリングドメインを作成することには、仮想プロセッサを作成することが含まれる。この仮想プロセッサは、物理プロセッサの少なくとも一部分を、保護モードスケジューリングドメインの実行オブジェクトによる使用のためにマップする。
この仮想プロセッサには、保護モード仮想プロセッサが含まれる。保護モード仮想プロセッサは、スーパーバイザーモードの通知を処理し、実行オブジェクトをディスパッチするように構成される。この仮想プロセッサには、スーパーバイザーモード仮想プロセッサも含まれる。スーパーバイザーモード仮想プロセッサは、保護モードスケジューリングドメインの実行オブジェクトによる使用のために、物理プロセッサの少なくとも一部分を予約するように構成される。
保護モードスケジューリングドメインを作成することには、デフォルトのスーパーバイザーモードスケジューリングポリシーとは異なる、少なくとも1つの保護モードスケジューリングポリシーをロードすることも含まれる。この少なくとも1つの保護モードスケジューリングポリシーは、仮想プロセッサ上で、保護モードスケジューリングドメインの実行オブジェクトを多重化するためのものである。保護モードスケジューリングドメインを作成することには、保護モードスケジューリングドメインの実行オブジェクトの状態を記憶するように構成される実行オブジェクトストアを作成することも含まれる。この実行オブジェクトストアは、保護モードスケジューリングドメイン内の異なる実行オブジェクト間でコンテキストを切り替えることを容易にする。
他の実施形態では、コンピュータシステムは、プロセッサリソースの消費を保護モードでスケジュールして、スケジューリングの責任をスーパーバイザーモードから分散させる。このコンピュータシステムは、保護モードスケジューリングドメインにおいて、物理プロセッサリソースを、その保護モードスケジューリングドメインの第1の実行オブジェクトに割り当てる。この物理プロセッサリソースは、デフォルトのスーパーバイザーモードスケジューリングポリシーとは異なる保護モードスケジューリングポリシーに従って、割り当てられる。このコンピュータシステムは、割り当てられた物理プロセッサリソースを用いて、第1の実行オブジェクトで指示された完全な作業(complete work)を分割する。
このコンピュータシステムは、第1の実行オブジェクト内で指示される作業を完全に完了する前に、保護モードスケジューリングポリシーに従って、物理プロセッサリソースの割当てを、保護モードスケジューリングドメイン内の第2の実行オブジェクトに遷移させることを決定する。このコンピュータシステムは、保護モードの範囲内でかつスーパーバイザーモードへ遷移させることなく、コンテキストを第1の実行オブジェクトから第2の実行オブジェクトに切り替える。
コンテキストを切り替えることには、第1の実行オブジェクトの状態を、保護モードスケジューリングドメイン内にある実行オブジェクトストアに保持することが含まれる。コンテキストを切り替えることには、第2の実行オブジェクトの状態を、その実行オブジェクトストアからロードすることも含まれる。このコンピュータシステムは、コンテキストを第2の実行オブジェクトに切り替えた後、保護モードスケジューリングドメインにおいて、物理プロセッサリソースを、その保護モードスケジューリングドメインの第2の実行オブジェクトに割り当てる。このコンピュータシステムは、割り当てられた物理プロセッサリソースを用いて、第2の実行オブジェクトで指示される完全な作業を分割する。
本発明の実施形態は、以下により詳細に論じるように、コンピュータハードウェアを含む専用コンピュータまたは汎用コンピュータを備えること、または用いることができる。本発明の範囲内の実施形態には、コンピュータ実行可能命令および/またはデータ構造を搬送または記憶するための物理媒体および他のコンピュータ読取可能媒体も含まれる。そのようなコンピュータ読取可能媒体は、汎用コンピュータシステムまたは専用コンピュータシステムによってアクセスすることができる任意の利用可能な媒体とすることができる。コンピュータ実行可能命令を記憶するコンピュータ読取可能媒体は、物理記憶媒体である。コンピュータ実行可能命令を搬送するコンピュータ読取可能媒体は、伝送媒体である。したがって、限定ではなく例として、本発明の実施形態は少なくとも2つの明らかに異なる種類のコンピュータ読取可能媒体、すなわち物理記憶媒体と伝送媒体とを含むことがある。
物理記憶媒体には、RAM、ROM、EEPROM、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶装置、またはコンピュータ実行可能命令もしくはデータ構造の形で所望のプログラムコード手段を記憶するために使用することができ、汎用コンピュータまたは専用コンピュータによってアクセスすることができる他の任意の媒体が含まれる。
この説明および添付の特許請求の範囲に関して、「ネットワーク」は、コンピュータシステムおよび/またはモジュールおよび/または他の電子デバイスの間で電子データを転送できるようにする、1つまたは複数のデータリンクとして定義される。情報がネットワークまたは他の通信接続(有線、無線、または有線と無線の組合せ)を介してコンピュータに転送または提供されるとき、そのコンピュータは適切に、その接続を伝送媒体とみなす。伝送媒体には、搬送するために使用することができるネットワークおよび/またはデータリンク、あるいは汎用コンピュータまたは専用コンピュータによってアクセスすることができるコンピュータ実行可能命令またはデータ構造の形の所望のプログラムコード手段ネットワークおよび/またはデータリンクが含まれ得る。上記のものの組合せも、コンピュータ読取可能媒体の範囲内に含まれるべきである。
さらに、様々なコンピュータシステムコンポーネントに到達するとき、コンピュータ実行可能命令またはデータ構造の形のプログラムコード手段は、伝送媒体から物理記憶媒体に(または逆の場合も同様に)自動的に転送できることを理解されたい。例えば、ネットワークまたはデータリンクを介して受信されるコンピュータ実行可能命令もしくはデータ構造を、ネットワークインタフェースモジュール(例えば「NIC」)内のRAMにバッファし、その後、最終的にコンピュータシステムのRAMおよび/またはコンピュータシステムの揮発性がより低い物理記憶媒体に転送することができる。したがって、同様に(または主に)伝送媒体を利用するコンピュータシステムコンポーネント内に物理記憶媒体を含めることができることを理解すべきである。
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理デバイスに特定の機能もしくは機能群を実行させる命令およびデータを含む。このコンピュータ実行可能命令は、例えばバイナリ、アセンブリ言語などの中間形式命令、またはソースコードともすることができる。本主題を構造的特徴および/または方法論的アクトに特有の言語で説明してきたが、添付の特許請求の範囲において定義される本主題は、必ずしも上記に記載した特徴またはアクトに限定されないことを理解すべきである。むしろ、記載した特徴およびアクトは特許請求の範囲を実施する形態例として開示されているものである。
当業者には、本発明を、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、携帯電話、PDA、ポケットベル、ルータ、スイッチなどを含め、多くの種類のコンピュータシステム構成を有するネットワークコンピューティング環境において実装することができることが理解されよう。本発明は、ネットワークを介して(有線データリンク、無線データリンクにより、または有線と無線データリンクとの組合せによって)リンクされるローカルコンピュータシステムとリモートコンピュータシステムの双方がタスクを実行する、分散システム環境において実施することができる。分散システム環境では、プログラムモジュールを、ローカルメモリ記憶装置とリモートメモリ記憶装置の双方に配置することができる。
この説明および添付の特許請求の範囲において、「実行オブジェクト」は、プロセッサ上でリソースを消費し、時分割される(多重化される)ワークロードアブストラクションのインスタンスとして定義される。実行オブジェクトの例には、スレッド、雑事(chore)、ファイバ、プロミス(promise)、Todos等が含まれる。
この説明および添付の特許請求の範囲において、「スケジューラ」、「スケジューリングアルゴリズム」、および「スケジューリングポリシーアルゴリズム」は、プロセッサ上で実行オブジェクトを多重化するための1組のコンポーネントとして定義される。スケジューラ、スケジューリングアルゴリズム、およびスケジューリングポリシーアルゴリズムは、「BVT」(Borrowed-Virtual-Time)スケジューリング、「CFS」(完全公平スケジューリング)、様々な種類のラウンドロビンスケジューリング、キューベーススケジューリング(FIFO、マルチレベル等)、スタックベーススケジューリング(LIFO)、ギャングスケジューリング、インターバルスケジューリング、ターンディスパッチング(Turn Dispatching)等を含む、様々な異なる種類のスケジューリングを実施することができる。
図1Aは、スケジューリングの責任をスーパーバイザーモードから分散させるように、プロセッサリソースのスケジューリングが保護モードで行われるように構成することを容易にするコンピュータキテクチャ100の一部を図示している。図示されるように、コンピュータキテクチャ100は、プロセッサ109(および、場合によっては1つまたは複数の追加のプロセッサ)およびオペレーティングシステム101を含む。オペレーティングシステム101は、アプリケーションを保護モード102(例えばユーザモード)およびスーパーバイザーモード103(例えばカーネルモード)で実行することができる。保護モード102は、物理プロセッサ109のリソースへのプログラムアクセスを制限することができる。一方、スーパーバイザーモード103は、物理プロセッサ109のリソースに対する無制限のアクセスを有する。1つまたは複数の機能は、スーパーバイザーモード103へのアクセスをゲートによりコントロールして、保護モード102のプログラムを、物理プロセッサ109のリソースへのスーパーバイザーモード103に遷移することを可能にする。
したがって、オペレーティングシステム101内で実行されるプログラムは、プログラム命令に応じて、保護モード102からスーパーバイザーモード103に、およびスーパーバイザーモード103から保護モード102に遷移させることができる。スーパーバイザーモード103は、デフォルトのスーパーバイザーモードスケジューリングポリシー(例えば「BVT」スケジューリング)に従って時分割ベースで物理プロセッサ109のリソースを消費するデフォルトのスーパーバイザーモード実行オブジェクトフォーマット(例えばスレッド)を有する。
図4は、プロセッサリソースのスケジューリングが保護モードで行われるように構成するための方法400の一例の流れ図を示す。方法400を、図1Aに示すコンポーネントおよびデータに関して説明する。
方法400は、オペレーティングシステムの保護モードで動作する保護モードスケジューリングドメインを作成するアクトを含む(アクト401)。例えば、オペレーティングシステム101は、保護モード102内で保護モードスケジューリングドメイン104を作成することができる。
保護モードスケジューリングドメインを作成することには、仮想プロセッサを作成するアクトが含まれ、この仮想プロセッサは、物理プロセッサの少なくとも一部分を、保護モードスケジューリングドメインの実行オブジェクトによる使用にマップする(アクト402)。例えば、オペレーティングシステム101は、仮想プロセッサ108を作成することができる。通常、仮想プロセッサ108は、スーパーバイザーモード103のデフォルトの実行オブジェクトフォーマットおよびスケジューラを、保護モードスケジューリングドメイン104から抽出する。例えば、仮想プロセッサ108は、リソース割当て112(物理プロセッサ109のリソースの一部分)を、保護モードスケジューリングドメイン104内の実行オブジェクトによる使用にマップする。
仮想プロセッサ108は、保護モード仮想プロセッサ108Pを含む。保護モード仮想プロセッサ108は、スーパーバイザーモード103からのスーパーバイザーモード通知を処理し、保護モードスケジューリングドメイン104内の実行オブジェクトをディスパッチするように構成される。仮想プロセッサ108には、スーパーバイザーモード仮想プロセッサ108Sも含まれる。スーパーバイザーモード仮想プロセッサ108Sは、保護モードスケジューリングドメイン104の実行オブジェクトによる使用のために、物理プロセッサ109の少なくとも一部分(例えばリソース割当て112)を予約するように構成される。
保護モードスケジューリングドメインを作成することには、デフォルトのスーパーバイザーモードスケジューリングポリシーとは異なる少なくとも1つの保護モードスケジューリングポリシーをロードすることも含まれ、この少なくとも1つの保護モードスケジューリングポリシーは、仮想プロセッサ上で、保護モードスケジューリングドメインの実行オブジェクトを多重化するためのものである(アクト403)。例えば、オペレーティングシステム101は、保護モードスケジューリングドメイン104内の実行オブジェクトを多重化するためのスケジューリングポリシーアルゴリズム107をロードすることができる。スケジューリングポリシーアルゴリズム107は、スーパーバイザーモード103のデフォルトのスケジューリングポリシーとは異なる、例えばスケジューリング、マルチレベルフィードバックキュースケジューリング、インターバルスケジューリング、完全公平スケジューリングなどの、事実上任意のスケジューリングポリシーとすることができる。ポリシー状態116は、スケジューリングポリシーアルゴリズム107のポリシー状態を保持するためのデータ構造とすることができる。
保護モードスケジューリングドメインを作成することには、保護モードスケジューリングドメインの実行オブジェクトの状態を記憶して、保護モードスケジューリングドメイン内の様々な実行オブジェクト間のコンテキスト切り替えを容易にするように構成される、実行オブジェクトストアを作成することも含まれる(アクト404)。例えば、オペレーティングシステム101は、保護モードスケジューリングドメイン104の実行オブジェクトの状態を記憶して、保護モードスケジューリングドメイン104内のオブジェクト間の切り替えを容易にするための実行オブジェクトストア105を作成することができる。保護モードスケジューリングドメイン104の実行オブジェクト(例えばToDos)は、スーパーバイザーモード103で使用される実行オブジェクト(スレッド)と異なるものとすることができる。
保護モードスケジューリングドメイン104を構成した後、保護モードスケジューリングドメイン104内の様々な実行オブジェクトの間で、物理プロセッサ109のリソース(例えば、リソース割当て112)を多重化することができる。図1Bは、スケジューリングの責任をスーパーバイザーモードから分散させるために、プロセッサリソースの消費を保護モードでスケジュールするコンピュータキテクチャ100の一例の一部を図示している。
図1Bに図示するように、保護モードスケジューリングドメイン104は、同期モジュール114をさらに含む。通常、保護モードスケジューリングドメイン104のコンポーネントは、例えば、同期、放棄(yielding)、または強制終了によるブロッキング/ブロック解除などのスケジューリングオペレーション、およびコンテキスト切り替えがプロセス内で行われることを許可する。指定されたタイプの実行オブジェクトとともに使用するために同期モジュール114を構成することができる。同期オペレーションは、ポリシー状態116に影響を与える実行オブジェクトの状態遷移を引き起こす可能性があるので、同期モジュール114とスケジューリングポリシーアルゴリズム107との間には固有の関係(intrinsic relationship)が存在する可能性がある。使用すべき実行オブジェクトのタイプに少なくとも部分的に応じて、保護モードスケジューリングドメイン104の作成中または作成後に、同期モジュール114を生成/ロードすることができる。
図5は、保護モードでプロセッサリソースをスケジューリングするための例示的な方法500のフローチャートを図示している。方法500を、図1Bに示すコンポーネントおよびデータに関して説明する。
方法500は、保護モードスケジューリングドメインにおいて、物理プロセッサリソースを、その保護モードスケジューリングドメインの第1の実行オブジェクトに割り当てるアクトを含み、物理プロセッサリソースは、デフォルトのスーパーバイザーモードスケジューリングポリシーとは異なる保護モードスケジューリングポリシーに従って割り当てられる(アクト501)。例えば、オペレーティングシステム101は、スケジューリングポリシーアルゴリズム107に従って、リソース割当て112を実行オブジェクト131に割り当てることができる。方法500は、割り当てられた物理プロセッサリソースを用いて、第1の実行オブジェクトにおいて指示される完全な作業を分割するアクトを含む(アクト502)。例えば、実行オブジェクト131は、リソース割当て112を用いて、実行オブジェクト131において指示される完全な作業を分割することができる。
方法500は、第1の実行オブジェクトにおいて指示される作業を完全に完了する前に、保護モードスケジューリングポリシーに従って、物理プロセッサリソースの割当てを保護モードスケジューリングドメイン内の第2の実行オブジェクトに遷移させることを決定するアクトを含む(アクト503)。例えば、オペレーティングシステム101は、実行オブジェクト131において指示される作業を完了する前に、スケジューリングポリシーアルゴリズム107に従って、リソース割当て112を実行オブジェクト132に遷移させることを決定することができる。
方法500は、スーパーバイザーモードに遷移にすることなく保護モードにおいて、第1の実行オブジェクトから第2の実行オブジェクトにコンテキストを切り替えるアクトを含む(アクト504)。例えば、オペレーティングシステム101は、スーパーバイザーモード103に切り替えることなく、保護モードスケジューリングドメイン104内で、コンテキストを実行オブジェクト131から実行オブジェクト132に切り替えることができる。
コンテキストを切り替えることには、第1の実行オブジェクトの状態を、保護モードスケジューリングドメイン内にある実行オブジェクトストアに保持するアクトが含まれる(アクト505)。例えば、コンテキスト切り替えのときに、実行オブジェクト131はEO状態133を有する場合がある。同期モジュール114は、EO状態133を実行オブジェクトストア105内に保持することができる。コンテキストを切り替えることには、第2の実行オブジェクトの状態を実行オブジェクトストアからロードするアクトも含まれる(アクト506)。例えば、同期モジュール114は、EO状態134を実行オブジェクトストア105からロードすることができる。EO状態134は以前に、コンテキストが実行オブジェクト132から切り替えられたときに保持された可能性がある。
方法500は、第2の実行オブジェクトにコンテキストを切り替えた後、保護モードスケジューリングドメインにおいて、物理プロセッサリソースを保護モードスケジューリングドメインの第2の実行オブジェクトに割り当てるアクトを含む(アクト507)。例えば、オペレーティングシステム101は、コンテキストを実行オブジェクト132に切り替えた後、リソース割当て112を、保護モードスケジューリングドメイン104の実行オブジェクト132に割り当てることができる。方法500は、割り当てられた物理プロセッサリソースを用いて、第2の実行オブジェクト内で指示される完全な作業を分割するアクトを含む(アクト508)。例えば、リソース割当て112を用いて、実行オブジェクト132内で指示される作業を部分的に完了することができる。
通常、保護モード(例えば、ユーザモード)スケジューリングは、スケジューリングオペレーションをスーパーバイザーモード(例えば、カーネルモード)から分散させる。この分散化により、本質的に、スーパーバイザーモードからスケジューリングの負担のかなりの部分を除去する2つのレベルのスケジューリングインフラストラクチャがもたらされることになる。特権化されるかまたはシステム全体のリソースを必要とする基本的なオペレーション、例えば、予約に対して物理プロセッサを多重化すること、およびタイマー割り込みを処理することなどが、(スーパーバイザーモードの実行オブジェクトフォーマット/スケジューラを利用して)スーパーバイザーモードで提供される。例えば、スーパーバイザーモード仮想プロセッサは、スーパーバイザーモードで物理プロセッサリソースを予約することができる。保護モードスケジューリングドメインは、保護モードで実行され、仮想プロセッサ上で実行オブジェクトを多重化する。したがって、そうでなければスーパーバイザーモードで実行されるであろう、かなりの量のスケジューリングオペレーションを代わりに保護モードで実行する。
さらに、デフォルトの実行オブジェクトフォーマットスーパーバイザーモード103とは異なる実行オブジェクトを使用して、および/またはスーパーバイザーモード103のデフォルトのスケジューラとは異なるスケジューラを使用して、アプリケーションの作業を実行することができる。例えば、指定されたアプリケーションの作業により適したスケジューラおよび実行オブジェクトフォーマットを用いて、保護モードスケジューリングドメインを構成することができる。
本発明の実施形態は、スーパーバイザーモードの実行オブジェクトフォーマットおよび/またはスーパーバイザーモードのスケジューリングアルゴリズムを、保護されたスケジューリングドメインで使用することも含む。例えば、実行オブジェクト131および132は、スーパーバイザーモード103で使用される実行オブジェクトフォーマット(例えばスレッド)のフォーマットとすることができ、スケジューリングポリシーアルゴリズム107は、スーパーバイザーモード103で使用されるもの(例えば、BVT)とすることができる。この環境であっても、分散化スケジューリングは依然として、スケジューリングの負担の一部をスーパーバイザーモード103から軽減する。
図1Cは、仮想プロセッサのさらなるコンポーネントを示す、例示的なコンピュータキテクチャ100の一部を図示している。保護モード仮想プロセッサ108Pは、物理プロセッサ109の動作を本質的にシミュレートする。保護モード仮想プロセッサ108は、非同期イベントに関して2つの通知モデル、割り込みおよび完了ポート(completion port)パラダイムを使用することができる。コンテキスト切り替えは、スーパーバイザーモード103に対していかなる呼び出しも必要とせずに、ディスパッチャ126内で行われる。ディスパッチャ126は、コンテンツを、例えば、実行可能な(runable)キューの最上部にある実行オブジェクトに切り替えることができる。
通常、通知ハンドル(notification handle)は、例えばタイマーや保護モードスケジューリングドメイン104の外部の同期など、オペレーティングシステム101によって生成される通知要求を処理する役割を担う。保護モードスケジューリングドメイン104は、プリエンプションまたはワークロードのためのタイマーを設定することができる。スーパーバイザーモード103は、このタイマーが終了するとき、仮想割り込みを発生させることができる。タイマー通知ハンドラ123は、終了したタイマーに起因する仮想割り込みを処理する。保護モードスケジューリングドメイン104外部の同期イベントも、仮想割り込みを発生させる可能性がある。同期通知ハンドル124は、同期イベントに起因する仮想割り込みを処理することができる。
Binary Interface
非ブロッキングアプリケーションバイナリインタフェース(「ABI」:Application Binary Interface)呼び出しは、仮想プロセッサ108に、オペレーションが完了するのを待つことを停止させることができる。したがって、これらのタイプの呼び出しをスーパーバイザーモード103で発行して、完了時に割り込みを発生させることができる。コールバック通知ハンドル125は、非ブロッキングABI呼び出しに起因する仮想割り込みを処理することができる。
割り込みベクトル122は、タイマー通知ハンドル123、同期通知ハンドル124、およびコールバック通知ハンドラ125のメモリアドレスまたはインデックスを(メモリアドレスを含む)割り込みベクトルテーブル内に記憶する。したがって、仮想割り込みを受け取ると、コントローラ121は、割り込みベクトル122を参照して、その仮想割り込みに応答して適切なハンドラを実行することができる。スーパーバイザーモード仮想プロセッサ108Sは、仮想割り込みインタフェース136を介して、割り込みを保護モード仮想プロセッサ108Pに伝達することができる。
完了データを、スーパーバイザーモード仮想プロセッサ108Sから保護モードスケジューリングドメイン104に完了ポートインタフェース138を介して伝達することができる。完了ポートパラダイムを使用するとき、通知ハンドルは仮想割り込みを用いてディスパッチャ126に通知する。それに応答して、現在の実行オブジェクトの実行が停止され、制御がスケジューリングポリシーアルゴリズム107に渡される。非同期イベントが完了ポートインタフェース138に送られるように構成されたとき、そのイベントが完了すると、スーパーバイザーモード仮想プロセッサ108Sは、そのイベントを自身の通知キューにエンキューすることができる。
スケジューリングポリシーアルゴリズム107は、次の機会が生じるとき、そのキュー内の未処理の完了イベントを処理することができる。プリエンプションが起こらず、完了したイベントからの割り込みなく、実行中の実行オブジェクトの実行が継続される。プロセスの初期化中、スケジューリングポリシーアルゴリズム107は、この様々なタイプのイベントで用いられる通知機構を構成する。
したがって、スーパーバイザーモード仮想プロセッサ108Sは、非同期イベントが完了すると、コントローラ121へのK−VPを呼び出しまたはイベントを完了ポート内にエンキューすることができる。コントローラ121は、現在の実行オブジェクトのスタック内で効果的に実行される。次いで、スケジューリングポリシーアルゴリズム107は、通知が開始された後、そのスタックおよびコンテキスト切り替えを管理することができる。スケジューリングポリシーアルゴリズム107は、通知を処理する間または実行オブジェクトの状態変更コードを実行する間、仮想割り込みを無効化/有効化することができる。例外に対処するために、フォールトを2倍にする、および3倍にするための同様のモデルを実装することができる。
通常、予約物理プロセッサのスケジューリングは、仮想プロセッサを割り当てるために少なくとも2つの方法を処理する。プロセスは、(例えば、物理プロセッサ109の)物理プロセッサリソースを予約し、スーパーバイザーモード仮想プロセッサ(例えば108S)を実装する保護モードスケジューラスタブを付加することができる。この保護モードスケジューラスタブは、カーネルベースの実行オブジェクト(例えばスレッド)を作成し、その実行オブジェクトを仮想プロセッサ(例えば108)としてプロセスに公開する。さらに、この保護モードスケジューラスタブは、保護モード仮想プロセッサのコントローラ(例えば121)に通知するための仮想割り込みを生成する。仮想プロセッサは、予約に割り振られたリソースのすべてを消費する。したがって、予約利用パターン(reservation usage pattern)を使用して、単一の仮想プロセッサがスーパーバイザーモードによって公開される。
一部の実施形態では、高速予約(express reservation)は利用されず、仮想プロセッサがデフォルトの予約から代わりに要求される。これらの実施形態では、ポリシーに基づいて、スーパーバイザーモードのデフォルトのスケジューラを表すスーパーバイザーモード実行オブジェクト(例えばカーネルスレッド)にリソースが割り振られる。例えば、ラウンドロビンアルゴリズムを適用する場合、スーパーバイザーモード仮想プロセッサは、デフォルトの予約内で動作する他のすべてのスーパーバイザーモード実行オブジェクトおよびスーパーバイザーモード仮想プロセッサと、デフォルトの予約内で等しく共用することができる。スーパーバイザーモードのスケジューラポリシーは、例えばプロセスに仮想プロセッサを公開することや、仮想割り込みを生成することなど、保護モードスケジューラスタブ機能を組み込むように拡張することができる。
保護モードスケジューリングドメインは、複数の仮想プロセッサをカプセル化することができる。本出願の諸要件によれば、仮想プロセッサを、様々な物理プロセッサ、または同一のプロセッサに割り当てることができる。様々な予約オペレーションとともに様々な仮想プロセッサを割り当てることもできる。一部の実施形態では、ギャング予約(gang reservation)を使用して複数の仮想プロセッサが割り当てられる。この予約は、リソース要件に加え、同時実行要素(concurrency factor)を指定する。スーパーバイザーモードは、複数の物理プロセッサに対してリソースを予約して、それらのリソースを割り当てるため、仮想プロセッサがすべてのプロセスにおいて同時に実行される。しかし、デフォルトの予約の仮想プロセッサと、高速予約の仮想プロセッサとの組合せを割り当てることもできる。
図1Dは、保護モードスケジューリングドメイン内の複数の仮想プロセッサを示す、例示的なコンピュータキテクチャ100の一部を図示している。図示のように、保護モードスケジューリングドメイン104は、保護モード仮想プロセッサ108Pおよび128Pを含む。保護モード仮想プロセッサ108Pおよび128Pは、対応するスケジューリングポリシーアルゴリズム107および127をそれぞれ利用する。スケジューリングポリシーアルゴリズム107および127のそれぞれは、実行オブジェクトの状態を実行オブジェクトストア105内に保持し、その対応するポリシーの状態をポリシー状態116内に保持する。
保護モードスケジューリングドメイン104のセマンティクスを使用して、実行オブジェクトストア105およびポリシーストア116を編成し、情報をスケジューリングポリシーアルゴリズム107と127との間で共有することができる。例えば、あるポリシーが仮想プロセッサ間の動的負荷分散をサポートする場合、共通ストアを使用することができる。しかし、あるポリシーが複数の実行オブジェクトに対するグループ化(affinitization)をサポートする場合、別個のストアを使用することができる。ワークロードの要件に応じて、効果的に同じスケジューラが、すべての仮想プロセッサ上で実行されることがあり、あるいは専用のスケジューラが、様々な仮想プロセッサ上で実行されることもある。
図1Eは、保護モードスケジューリングドメイン間で同期するためのコンポーネントを示す、例示的なコンピュータキテクチャ100の一部を図示している。図示のようにプロセス181およびプロセス182が、保護モード102で実行中である。プロセス181は、保護モードスケジューリングドメイン104および144、保護モード仮想プロセッサ108Pおよび148P、ならびに同期レイヤ141を含む。プロセス182は、保護モードスケジューリングドメイン154、および保護モード仮想プロセッサ158Pを含む。スーパーバイザーモード103では、スーパーバイザーモード仮想プロセッサ108S、148S、および158Sが実行され、仮想プロセッサ108P、148P、および158Pにそれぞれ対応する。スーパーバイザーモード103は、同期レイヤ142も含む。
保護モードスケジューリングドメインにおける同期オペレーションは、スーパーバイザーモードが関与せずに、保護モードスケジューラによって処理される。例えば、外部の同期レイヤを参照することなく、保護モードスケジューリングドメイン104、144、または154における同期を処理することができる。一部の実施形態では、保護モードスケジューラ間の実行オブジェクトの同期も、スーパーバイザーモードの関与なしに実行される。例えば、保護モードスケジューリングドメイン104と保護モードスケジューリングドメイン144との間の同期を、プロセス182内の同期レイヤ141において処理することができる。
他の実施形態では、プロセス間の実行オブジェクトの同期も実行される。例えば、保護モードスケジューリングドメイン104および144のいずれかと保護モードスケジューリングドメイン154との間の同期を、スーパーバイザーモード103内の同期レイヤ142において処理することができる。
同期を容易にするために、チャネルイベントを使用することができる。チャネルイベントは、特定の保護モードスケジューリングドメインから2つの実行オブジェクトが参加するイベントである。例えば、プロセス181とプロセス182との間のチャネルでは、保護モードスケジューリングドメイン144からの実行オブジェクトと、保護モードスケジューリングドメイン154からの実行オブジェクトとが、プロセス間の通信をサポートするチャネルイベントに参加することができる。プロセス間のチャネルイベントを、スーパーバイザーモード103内の同期レイヤ142として実装することができる。チャネルイベントが信号で伝えられると、スーパーバイザーモード103はスーパーバイザーモード仮想プロセッサに通知し、それを受けてそのスーパーバイザーモード仮想プロセッサは、仮想割り込みを発生させて、保護モード仮想プロセッサ(例えば148または158)にそのイベントを通知する。
同様に、同じプロセス内の保護モードスケジューリングドメイン間で、同じオペレーションを行うことができる。例えば、保護モードスケジューリングドメイン104および保護モードスケジューリングドメイン144が、同期オペレーションを必要とすることがある。チャネルイベントを使用して、保護モードスケジューリングドメイン104と144との間で使用される潜在的に異なる実行オブジェクトのフォーマットを補償することができる。プロセス内チャネルイベントを、プロセス181内の同期レイヤ141として実装することができる。同期レイヤ141は、仮想プロセッサ(例えば108または148)内で、新たなイベントに関して通知される仮想割り込みを作成することができる。保護モードスケジューラは、自身の同期モデルのコンテキストでこのチャネルイベントを適用することができる。
スーパーバイザーモードスケジューリングインフラストラクチャは、保護モードスケジューリングドメインを作成するための適切な機能を保護モードに提供するために、様々な異なる方法で柔軟に実装され得る。図2Aおよび図2Bは、保護モードスケジューリングドメインに機能を提供する、例示的なスーパーバイザーモードインフラストラクチャ200および250を図示している。
図示のように、スーパーバイザーモードインフラストラクチャ200は、ディスパッチャ201、デフォルトスケジューリングポリシー202、スーパーバイザーモード仮想プロセッサ203、スーパーバイザーモードスケジューリングポリシー204、同期205、実行オブジェクトストア206、およびチャネルイベント同期207を含む。図示するコンポーネントのそれぞれは、スーパーバイザー(例えばカーネル)モード231で動作している。スーパーバイザーモード231は、デフォルトの実行オブジェクト(例えばスレッド)を使用してオペレーションを実行することができる。
スーパーバイザーモードインフラストラクチャ200は、専用予約を使用して、スーパーバイザーモード実行オブジェクト(例えばカーネルスレッド)を処理することができる。スーパーバイザーモードの実行オブジェクトストア206および同期205のオペレーションは、高速スーパーバイザーモードスケジューリングポリシー204に関連付けられている。一方、デフォルトスケジューリングポリシー202は、仮想プロセッサ203を割り当てて(例えばリソースの予約を行い)多重化するのに使用される。したがって、ディスパッチャ201は、デフォルトスケジューリングポリシー202を使用して、仮想プロセッサ203を割り当てて、これらの仮想プロセッサの間で多重化し、スーパーバイザーモードの実行オブジェクトストア206および同期205との通信を処理する。スーパーバイザーモードスケジューリングポリシー204を使用する。スーパーバイザーモードインフラストラクチャ200内で、スーパーバイザーモード231およびデフォルトスケジューリングポリシー202を特に、それぞれのワークロードの特性に合わせて設計することができる。
図示のように、スーパーバイザーモードインフラストラクチャ250は、ディスパッチャ201、デフォルトスケジューリングポリシー202、スーパーバイザーモード仮想プロセッサ203、同期205、実行オブジェクトストア206、およびチャネルイベント同期207を含む。図示されるコンポーネントのそれぞれは、スーパーバイザー(例えばカーネル)モード231で動作している。スーパーバイザーモードインフラストラクチャ250は、スーパーバイザーモード実行オブジェクトと、デフォルトの予約に割り当てられる仮想プロセッサとの双方を処理するために、デフォルトスケジューリングポリシー202を使用する。
図3は、例示的なユーザモードスケジューリングアーキテクチャ300を図示している。ユーザモードスケジューリングアーキテクチャ300は、コンピュータキテクチャ100内の様々なコンポーネントをどのように組み合わせて、ユーザモードスケジューリングを実行オブジェクトに提供することができるかの一例を示している。図示のように、ユーザモードスケジューラ304は、実行オブジェクトストア305、ポリシー状態316、アカウンティング309、ポリシーアルゴリズム307、および同期(ドメイン)308を含む。ユーザモードスケジュール304は、プロセッサリソースを、実行オブジェクト181または他の実行オブジェクトに割り当てることができる。同期(ドメイン)308は、ユーザモードスケジューラ304内で実行オブジェクト間の状態遷移を調整することができる。
ユーザ仮想プロセッサ321Uは、カーネルモード303からのカーネルモード通知を処理し、ユーザモードスケジューラ304内で実行オブジェクトをディスパッチするように構成される。ユーザ仮想プロセッサ321Uは、物理プロセッサ109の動作をシミュレートすることができる。ユーザ仮想プロセッサ321Uは、非同期イベントに関して2つの通知モデル、割り込みおよび完了ポートパラダイムのいずれかを使用することができる。コンテキスト切り替えは、スーパーバイザーモード103に対するいかなる呼び出しも必要とせず、ユーザモードディスパッチャ311内で行われる。ディスパッチャ311は、コンテンツを、実行可能なキューの最上部の実行オブジェクト(例えばToDos)に切り替えることができる。
通常、通知ハンドル312は、例えばタイマーやユーザモードスケジューラ304の外部の同期など、オペレーティングシステムによって生成される通知要求を処理する役割を担う。ユーザモードスケジューラ304は、プリエンプションまたはワークロードのためのタイマーを設定することができる。カーネルモード303は、このタイマーが終了するとき、仮想割り込みを発生させることができる。ユーザモードスケジューラ304外部の同期イベントが、仮想割り込みを発生させることもできる。非ブロッキング「ABI」(アプリケーションバイナリインタフェース)をカーネルモード303で発行して、完了時に割り込みを発生させる。通知ハンドル312は、これらのタイプの割り込みのうちの任意のものを処理することができる。
割り込みベクトル314は、メモリアドレスまたはインデックスを、通知ハンドル312の割り込みベクトルテーブル内(メモリアドレスを含む)に記憶する。したがって、仮想割り込みを受け取ると、仮想プロセッサコントローラ313は割り込みベクトル314を参照して、その仮想割り込みに応答して適切なハンドラを実行することができる。
カーネルディスパッチャ323は、カーネル仮想プロセッサ321Kとカーネルスレッドとの間で、(例えば、スーパーバイザーモードアーキテクチャ200および250にあるように)デフォルトスケジューリングポリシーに従って、またはデフォルトスケジューリングポリシーとカーネルスケジューリングポリシー324との組合せに従ってディスパッチすることができる。
チャネル同期(プロセス内)318は、ユーザモードスケジューラ304と、ユーザモードスケジューラ304と同じプロセス内の他のユーザモードスケジュールとの間で同期することができる。チャネル同期(プロセス間)328は、ユーザモードスケジューラ304と、別のプロセス内のユーザモードスケジュールとの間で同期することができる。
アカウンティング309およびシステムアカウント322は、相互に動作して、例えば物理プロセッサリソースの使用などのアカウンティング機能を管理する。
したがって、保護モード(例えばユーザモード)スケジューリングは、ワークロード固有の実行アブストラクションを使用することにより、ワークロードの要件をよりよく反映するプログラミングフレームワークを開発することを容易にすることができる。加えて、利用可能なハードウェアリソースの特性およびワークロードの要件に対してチューニングされたスケジューリングポリシーを定義する能力は、より優れたシステムスケーリング特性の可能性を有する。さらに、および前述した保護モードスケジューリングは、スケジューリング機能のかなりの部分をスーパーバイザーモード(例えばカーネルモード)からアプリケーションに移動させることにより、スケジューリングの責任を分散させる。
本発明は、その趣旨または本質的な特徴から逸脱することなく他の特定の形態で実施することができる。説明した諸実施形態は、あらゆる点で限定的でなく、単に例示的なものであるとみなわれるべきである。したがって本発明の範囲は、上記の説明ではなく、添付の特許請求の範囲によって示される。特許請求の範囲と等価の意味および範囲に含まれるすべての変更は、特許請求の範囲に包含されるべきである。

Claims (20)

  1. 物理プロセッサ(109)と、保護モード(102)およびスーパーバイザーモード(103)を有するオペレーティングシステム(101)とを含むコンピュータシステムにおいて、スケジューリングの責任を前記スーパーバイザーモードから分散させるために、プロセッサリソースのスケジューリングを保護モードで行うように構成するための方法であって、前記保護モード(102)は、該保護モード(102)で実行されるプログラムの物理プロセッサリソースへのプログラムアクセスを制限し、前記スーパーバイザーモード(103)は、物理プロセッサリソースに対する無制限のアクセスを有し、1つまたは複数の機能が、スーパーバイザーモード(103)へのアクセスをゲート制御して、保護モード(102)のプログラムが物理プロセッサリソースにアクセスするのにスーパーバイザーモード(103)に遷移することを許可し、前記オペレーティングシステム(101)内で実行されるプログラムは、プログラム命令に応じて保護モード(102)からスーパーバイザーモード(103)に遷移すること、およびスーパーバイザーモード(103)から保護モード(102)に遷移することができ、スーパーバイザーモード(103)は、デフォルトのスーパーバイザーモードスケジューリングポリシーに従って時分割ベースで物理プロセッサリソースを消費する、デフォルトのスーパーバイザーモード実行オブジェクトフォーマットを有し、前記方法は、
    前記オペレーティングシステム(101)の前記保護モード(102)で動作する保護モードスケジューリングドメイン(104)を作成する動作であって、
    前記物理プロセッサ(1120)の少なくとも一部分を、前記保護モードスケジューリングドメイン(104)の実行オブジェクトによる使用にマップし、
    スーパーバイザーモードの通知を処理し、実行オブジェクトをディスパッチするように構成される、保護モード仮想プロセッサ(108P)、および
    前記物理プロセッサの少なくとも一部分を、前記保護モードスケジューリングドメインの実行オブジェクトによる使用のために予約するように構成される、スーパーバイザーモード仮想プロセッサ(108S)
    を含む、仮想プロセッサ(108)を作成する動作と、
    前記仮想プロセッサ上において前記保護モードスケジューリングドメインの実行オブジェクトを多重化するための、前記デフォルトのスーパーバイザーモードスケジューリングポリシーとは異なる少なくとも1つの保護モードスケジューリングポリシー(107)をロードする動作と、
    前記保護モードスケジューリングドメイン(104)の実行オブジェクトの状態を記憶して、前記保護モードスケジューリングドメイン内で様々な実行オブジェクト間のコンテキスト切り替えを容易にするように構成される、実行オブジェクトストア(105)を作成する動作と
    を含む、保護モードスケジューリングドメイン(104)を作成する動作を含むことを特徴とする方法。
  2. 保護モードは、ユーザモードを含み、スーパーバイザーモードは、カーネルモードを含むことを特徴とする請求項1に記載の方法。
  3. 保護モードスケジューリングドメインを作成する前記動作は、前記オペレーティングシステムのユーザモードにおいてユーザモードスケジューリングドメインを作成する動作を含むことを特徴とする請求項1に記載の方法。
  4. 仮想プロセッサを作成する前記動作は、ユーザモードスケジューリングドメインの実行オブジェクトによる使用のために物理プロセスリソースをマップする、仮想プロセッサを作成する動作を含むことを特徴とする請求項1に記載の方法。
  5. ユーザモードスケジューリングドメイン内の実行オブジェクトによる使用のために物理プロセスリソースをマップする仮想プロセッサを作成する前記動作は、前記ユーザモードスケジューリングドメイン内のToDosによる使用のために物理プロセスリソースをマップする仮想プロセッサを作成する動作を含むことを特徴とする請求項2に記載の方法。
  6. 前記オペレーティングシステムの前記保護モードで動作する保護モードスケジューリングドメインを作成する前記動作は、1つまたは複数の他の保護モードスケジューリングドメインを既に含むプロセス内で、保護モードスケジューリングドメインを作成する動作を含むことを特徴とする請求項1に記載の方法。
  7. 前記保護モードスケジューリングドメインと前記1つまたは複数の他の保護モードスケジューリングドメインとの間にチャネルイベントを構成し、スーパーバイザーモードへ遷移させることなく前記プロセス内で、前記保護モードスケジューリングドメインのプロセス内同期を容易にする動作
    をさらに含むことを特徴とする請求項6に記載の方法。
  8. 前記デフォルトのスーパーバイザーモードスケジューリングポリシーとは異なる少なくとも1つの保護モードスケジューリングポリシーをロードする前記動作は、前記1つまたは複数の他の保護モードスケジューリングドメインとは異なる少なくとも1つの保護モードスケジューリングポリシーをロードする動作を含むことを特徴とする請求項6に記載の方法。
  9. 前記スーパーバイザーモード仮想プロセッサが、スーパーバイザーモードのデフォルトスケジューリングポリシーに従って前記物理プロセッサの前記少なくとも一部分を予約する動作をさらに含むことを特徴とする請求項1に記載の方法。
  10. 物理プロセッサ(109)と、保護モード(102)およびスーパーバイザーモード(103)を有するオペレーティングシステム(101)とを含むコンピュータシステムにおいて、スケジューリングの責任をスーパーバイザーモードから分散させるために、プロセッサリソースの消費を保護モードでスケジューリングするための方法であって、保護モード(102)は、該保護モード(102)で実行されるプログラムの物理プロセッサリソースへのプログラムアクセスを制限し、スーパーバイザーモード(103)は、物理プロセッサリソースに対する無制限のアクセスを有し、1つまたは複数の機能がスーパーバイザーモード(103)へのアクセスをゲートして、保護モード(102)のプログラムが、物理プロセッサリソースにアクセスするのにスーパーバイザーモード(103)に遷移することを許可し、前記オペレーティングシステム(101)内で実行されるプログラムは、プログラム命令に応じて保護モード(102)からスーパーバイザーモード(103)に遷移すること、およびスーパーバイザーモード(103)から保護モード(102)に遷移することができ、スーパーバイザーモード(103)は、デフォルトのスーパーバイザーモードスケジューリングポリシーに従って時分割ベースで物理プロセッサリソースを消費するデフォルトのスーパーバイザーモード実行オブジェクトフォーマットを有し、前記方法は、
    保護モードスケジューリングドメイン(104)内で、前記デフォルトのスーパーバイザーモードスケジューリングポリシーとは異なる保護モードスケジューリングポリシー(107)に従って、前記保護モードスケジューリングドメインの第1の実行オブジェクト(131)に物理プロセッサリソース(112)を割り当てる動作と、
    前記割り当てられた物理プロセッサ(112)リソースを利用して、前記第1の実行オブジェクト(131)内で指示される完全な作業を分割する動作と、
    前記保護モードスケジューリングポリシー(107)に従って、前記第1の実行オブジェクト(131)内で指示される前記作業を完全に完了する前に、物理プロセッサリソースの割当て(112)を前記保護モードスケジューリングドメイン内の第2の実行オブジェクト(132)に遷移させることを決定する動作と、
    スーパーバイザーモードに遷移することなく保護モードにおいて、コンテキストを前記第1の実行オブジェクトから前記第2の実行オブジェクトに切り替える動作であって、
    前記保護モードスケジューリングドメイン(104)内にある実行オブジェクトストア(105)に第1の実行オブジェクトの状態(133)を保持する動作と、
    前記実行オブジェクトストア(105)から前記第2の実行オブジェクトの状態(134)をロードする動作と
    を含む、動作と、
    前記第2の実行オブジェクト(132)にコンテキストを切り替えた後、保護モードスケジューリングドメイン(104)において、前記保護モードスケジューリングドメインの前記第2の実行オブジェクト(132)に物理プロセッサリソースを割り当てる(112)動作と、
    前記割り当てられた物理プロセッサリソース(112)を用いて、前記第2の実行オブジェクト内で指示される完全な作業を分割する動作と
    を含むことを特徴とする方法。
  11. 保護モードはユーザモードを含み、スーパーバイザーモードはカーネルモードを含むことを特徴とする請求項10に記載の方法。
  12. カーネルモードはスレッドを使用し、前記保護モードスケジューリングドメインは、スレッド以外の実行オブジェクトフォーマットを使用するユーザモードスケジューリングドメインであることを特徴とする請求項11に記載の方法。
  13. 前記保護モードスケジューリングドメイン内で、保護モードスケジューリングドメインの第1の実行オブジェクトに物理プロセッサリソースを割り当てる前記動作は、前記オペレーティングシステムのユーザモード内の実行オブジェクトに、物理プロセッサリソースを割り当てる動作を含むことを特徴とする請求項1に記載の方法。
  14. 第1の実行オブジェクトに物理プロセッサリソースを割り当てる動作は、カーネルモード仮想プロセッサによって予約された物理プロセッサリソースを割り当てる動作を含むことを特徴とする請求項1に記載の方法。
  15. 前記保護モードスケジューリングドメインと1つまたは複数の他の保護モードスケジューリングドメインとの間のチャネルイベントを使用し、スーパーバイザーモードに遷移することなくプロセス内において、前記保護モードスケジューリングドメインのプロセス内同期を容易にする動作をさらに含むことを特徴とする請求項1に記載の方法。
  16. 1つまたは複数の物理プロセッサと、
    システムメモリと、
    ユーザモードおよびカーネルモードを有するオペレーティングシステムを表すコンピュータ実行可能命令を記憶した1つまたは複数の物理記憶域媒体と
    を備えたコンピュータシステムであって、
    前記コンピュータ実行可能命令は、前記コンピュータシステムに、
    スケジューリングをカーネルモードから分散させるために、ユーザモードで動作するユーザモードスケジューリングドメインを作成する動作であって、
    前記ユーザモードスケジューリングドメイン内のユーザモード実行オブジェクトによる使用のために、前記1つまたは複数の物理プロセッサの少なくとも一部をマップし、および
    カーネルモード通知を処理し、実行オブジェクトをディスパッチするように構成された保護モード仮想プロセッサと、
    前記ユーザモード実行オブジェクトによる使用のために、前記1つまたは複数の物理プロセッサの少なくとも一部を予約するように構成された、スーパーバイザーモード仮想プロセッサと
    を含む、仮想プロセッサを作成することと、
    前記仮想プロセッサ上で前記ユーザモードスケジューリングドメイン内の実行オブジェクトを多重化するためのユーザモードスケジューリングポリシーをロードすることと、
    カーネルモードがユーザモード実行オブジェクトのコンテキスト情報を記憶することから解放されるように、ユーザモード実行オブジェクトの状態を記憶して、カーネルモードに遷移することなく前記ユーザモードスケジューリングドメインにおいて、様々なユーザモード実行オブジェクト間のコンテキスト切り替えを容易にするように構成される、ユーザモード実行オブジェクトストアを作成することと
    を含む、前記ユーザモードスケジューリングドメインを作成する動作と、
    前記ユーザモードスケジューリングドメインを作成した後に、
    前記ユーザモードスケジューリングポリシーに従って、前記カーネルモード仮想プロセッサによって予約された物理プロセッサリソースを第1のユーザモード実行オブジェクトに割り当てる動作と、
    前記割り当てられた物理プロセッサリソースを用いて、前記第1の実行オブジェクト内で指示される完全な作業を分割する動作と、
    前記ユーザモードスケジューリングポリシーに従って、前記第1のユーザモード実行オブジェクト内で指示される前記作業を完全に完了する前に、前記カーネルモード仮想プロセッサによって予約された物理プロセッサリソースの割当てを第2のユーザモード実行オブジェクトに遷移させることを決定する動作と、
    カーネルモードに遷移することなくユーザモードにおいて、前記第1のユーザモード実行オブジェクトから前記第2のユーザモード実行オブジェクトにコンテキストを切り替える動作であって、
    前記ユーザモード実行オブジェクトストア内に第1のユーザモード実行オブジェクトの前記状態を保持する動作と、
    前記ユーザモード実行オブジェクトストアから前記第2の実行オブジェクトの前記状態をロードする動作と
    を含む、前記コンテキストを切り替える動作と、
    前記第2の実行オブジェクトにコンテキストを切り替えた後、前記ユーザモードスケジューリングドメイン内で、前記第2のユーザモード実行オブジェクトに物理プロセッサリソースを割り当てる動作と、
    前記割り当てられた物理プロセッサリソースを利用して、前記第2のユーザモード実行オブジェクト内で指示される完全な作業を分割する動作と
    を実行させることを特徴とするコンピュータシステム。
  17. 前記ユーザモードのスケジューリングアルゴリズムは、カーネルモードのスケジューリングアルゴリズムと同じであり、ユーザモード実行オブジェクトはスレッドであることを特徴とする請求項16に記載のシステム。
  18. 前記ユーザモードのスケジューリングアルゴリズムは、カーネルモードのスケジューリングアルゴリズムと異なることを特徴とする請求項16に記載のシステム。
  19. カーネルモード実行オブジェクトはスレッドであり、前記ユーザモード実行オブジェクトはToDosであることを特徴とする請求項16に記載のシステム。
  20. 実行されると前記コンピュータシステムに、スーパーバイザーモードに遷移することなく前記プロセスにおいて、保護モードスケジューリングドメインのプロセス内同期を容易にするために、前記保護モードスケジューリングドメインと、前記保護モードスケジューリングドメインと同じプロセス内の1つまたは複数の他の保護モードスケジューリングドメインとの間のチャネルイベントを構成させるためのコンピュータ実行可能命令と、
    実行されるとき前記コンピュータシステムに、保護モードスケジューリングドメインのプロセス間同期を容易にするために、前記保護モードスケジューリングドメインと、他のプロセス内のさらなる1つまたは複数の他の保護モードスケジューリングドメインとの間のチャネルイベントを構成させるためのコンピュータ実行可能命令と
    をさらに備えることを特徴とする請求項16に記載のシステム。
JP2011516435A 2008-06-27 2009-06-12 オペレーションの保護モードスケジューリング Active JP5367816B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/163,726 2008-06-27
US12/163,726 US8276145B2 (en) 2008-06-27 2008-06-27 Protected mode scheduling of operations
PCT/US2009/047275 WO2009158220A2 (en) 2008-06-27 2009-06-12 Protected mode scheduling of operations

Publications (2)

Publication Number Publication Date
JP2011526040A JP2011526040A (ja) 2011-09-29
JP5367816B2 true JP5367816B2 (ja) 2013-12-11

Family

ID=41445221

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011516435A Active JP5367816B2 (ja) 2008-06-27 2009-06-12 オペレーションの保護モードスケジューリング

Country Status (7)

Country Link
US (1) US8276145B2 (ja)
EP (1) EP2316091B1 (ja)
JP (1) JP5367816B2 (ja)
CN (1) CN102077209B (ja)
CA (1) CA2724853C (ja)
ES (1) ES2659872T3 (ja)
WO (1) WO2009158220A2 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9588803B2 (en) 2009-05-11 2017-03-07 Microsoft Technology Licensing, Llc Executing native-code applications in a browser
US8650396B2 (en) * 2009-06-11 2014-02-11 Hewlett-Packard Development Company, L.P. Permission-based dynamically tunable operating system kernel
US8799912B2 (en) * 2009-07-22 2014-08-05 Empire Technology Development Llc Application selection of memory request scheduling
US8839255B2 (en) * 2009-07-23 2014-09-16 Empire Technology Development Llc Scheduling of threads by batch scheduling
EP2461248A4 (en) * 2009-07-31 2013-02-13 Nec Corp CONTROLLER, SERVICE DELIVERY SYSTEM, AND METHOD FOR PROVIDING A VIRTUAL INFRASTRUCTURE
US9323921B2 (en) * 2010-07-13 2016-04-26 Microsoft Technology Licensing, Llc Ultra-low cost sandboxing for application appliances
US9268611B2 (en) * 2010-09-25 2016-02-23 Intel Corporation Application scheduling in heterogeneous multiprocessor computing platform based on a ratio of predicted performance of processor cores
US9032146B2 (en) 2010-11-30 2015-05-12 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Dynamic use of raid levels responsive to workload requirements
US8565685B2 (en) * 2011-01-28 2013-10-22 Nokia Corporation Utilization-based threshold for choosing dynamically between eager and lazy scheduling strategies in RF resource allocation
US9495183B2 (en) 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
EP2530988B1 (en) * 2011-06-04 2015-09-16 Alcatel Lucent A scheduling concept
US9413538B2 (en) 2011-12-12 2016-08-09 Microsoft Technology Licensing, Llc Cryptographic certification of secure hosted execution environments
US9389933B2 (en) * 2011-12-12 2016-07-12 Microsoft Technology Licensing, Llc Facilitating system service request interactions for hardware-protected applications
JP5936041B2 (ja) * 2012-03-07 2016-06-15 日本電気株式会社 マルチプロセッサ装置、スケジューリング方法、および、スケジューリングプログラム
FR2997773B1 (fr) * 2012-11-06 2016-02-05 Centre Nat Rech Scient Procede d'ordonnancement avec contraintes d'echeance, en particulier sous linux, realise en espace utilisateur.
GB2519080B (en) 2013-10-08 2021-04-14 Arm Ip Ltd Scheduling function calls
GB2525596B (en) * 2014-04-28 2021-05-26 Arm Ip Ltd Access control and code scheduling
US9552223B2 (en) * 2014-09-30 2017-01-24 International Business Machines Corporation Post-return asynchronous code execution
US9367344B2 (en) * 2014-10-08 2016-06-14 Cisco Technology, Inc. Optimized assignments and/or generation virtual machine for reducer tasks
US9846589B2 (en) 2015-06-04 2017-12-19 Cisco Technology, Inc. Virtual machine placement optimization with generalized organizational scenarios
US10379904B2 (en) * 2016-08-31 2019-08-13 Intel Corporation Controlling a performance state of a processor using a combination of package and thread hint information
US11372649B2 (en) 2019-06-24 2022-06-28 Microsoft Technology Licensing, Llc Flow control for multi-threaded access to contentious resource(s)
US11029968B1 (en) * 2019-07-31 2021-06-08 Facebook Technologies, Llc Operating system with a single kernel stack per processor

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179702A (en) 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
US5522075A (en) * 1991-06-28 1996-05-28 Digital Equipment Corporation Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces
JPH0954699A (ja) 1995-08-11 1997-02-25 Fujitsu Ltd 計算機のプロセススケジューラ
US6766515B1 (en) 1997-02-18 2004-07-20 Silicon Graphics, Inc. Distributed scheduling of parallel jobs with no kernel-to-kernel communication
US20020046230A1 (en) * 1998-04-29 2002-04-18 Daniel J. Dieterich Method for scheduling thread execution on a limited number of operating system threads
US6076174A (en) 1998-02-19 2000-06-13 United States Of America Scheduling framework for a heterogeneous computer network
US7065762B1 (en) 1999-03-22 2006-06-20 Cisco Technology, Inc. Method, apparatus and computer program product for borrowed-virtual-time scheduling
JP2001117786A (ja) 1999-10-19 2001-04-27 Nec Corp プロセススケジューリング装置およびプロセススケジューリング方法
US20020073129A1 (en) 2000-12-04 2002-06-13 Yu-Chung Wang Integrated multi-component scheduler for operating systems
US7225446B2 (en) * 2001-02-20 2007-05-29 Pts Corporation Context preservation
US7089557B2 (en) * 2001-04-10 2006-08-08 Rusty Shawn Lee Data processing system and method for high-efficiency multitasking
US7234144B2 (en) * 2002-01-04 2007-06-19 Microsoft Corporation Methods and system for managing computational resources of a coprocessor in a computing system
US7222218B2 (en) 2002-10-22 2007-05-22 Sun Microsystems, Inc. System and method for goal-based scheduling of blocks of code for concurrent execution
US7346902B2 (en) 2002-10-22 2008-03-18 Sun Microsystems, Inc. System and method for block-based concurrentization of software code
US20040186876A1 (en) * 2003-03-18 2004-09-23 Hob Electronic Gmbh & Co. Kg Processor system operable in a supervisor mode and a user mode
US20040244003A1 (en) 2003-05-30 2004-12-02 Vidiator Enterprises Inc. Apparatus and method for task scheduling for media processing
US8205200B2 (en) 2005-11-29 2012-06-19 Intel Corporation Compiler-based scheduling optimization hints for user-level threads

Also Published As

Publication number Publication date
CA2724853A1 (en) 2009-12-30
WO2009158220A3 (en) 2010-04-15
US20090328058A1 (en) 2009-12-31
EP2316091A2 (en) 2011-05-04
WO2009158220A2 (en) 2009-12-30
ES2659872T3 (es) 2018-03-19
US8276145B2 (en) 2012-09-25
EP2316091A4 (en) 2014-08-27
CN102077209B (zh) 2013-11-20
CN102077209A (zh) 2011-05-25
EP2316091B1 (en) 2017-12-27
JP2011526040A (ja) 2011-09-29
CA2724853C (en) 2016-05-24

Similar Documents

Publication Publication Date Title
JP5367816B2 (ja) オペレーションの保護モードスケジューリング
US6732138B1 (en) Method and system for accessing system resources of a data processing system utilizing a kernel-only thread within a user process
US8161453B2 (en) Method and apparatus for implementing task management of computer operations
JP6294586B2 (ja) 命令スレッドを組み合わせた実行の管理システムおよび管理方法
KR20050000487A (ko) 스케줄링 방법 및 실시간 처리시스템
JP2005534116A (ja) 複数の消費者をもつコンピュータシステムで資源を動的に割当てて管理する方法
KR20050004688A (ko) 스케줄링 방법 및 정보처리시스템
KR102338849B1 (ko) 실시간 운영 체제에서 스택 메모리 관리를 제공하는 방법 및 시스템
KR20070090649A (ko) 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법
Parsons et al. Implementing multiprocessor scheduling disciplines
Hu et al. Real-time schedule algorithm with temporal and spatial isolation feature for mixed criticality system
Kumar et al. A systematic survey of multiprocessor real-time scheduling and synchronization protocol
Hofmeijer et al. Dcos, a real-time light-weight data centric operating system
Walters et al. Enabling interactive jobs in virtualized data centers
Gait Scheduling and process migration in partitioned multiprocessors
Wani Operating System
Nehmer Dispatcher primitives for the construction of operating system kernels
Li et al. Supporting distributed real-time objects
Bollella Slotted priorities: supporting real-time computing within general-purpose operating systems
Hofer Sloth: The Virtue and Vice of Latency Hiding in Hardware-Centric Operating Systems
Oikawa et al. Providing protected execution environments for embedded operating systems using a μ-kernel
Cooling et al. Task scheduler co-processor for hard real-time systems
Ramesh Principles of Operating Systems
CN116028462A (zh) 基于Bulkload的资源队列处理方法及装置
CN118093140A (zh) 一种内核级时间触发调度方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120424

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130712

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130719

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: 20130813

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130911

R150 Certificate of patent or registration of utility model

Ref document number: 5367816

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250