JP3746798B2 - 協調型のタスク・グループを有する横取り型のマルチ・タスキング方法およびデータ処理システム - Google Patents

協調型のタスク・グループを有する横取り型のマルチ・タスキング方法およびデータ処理システム Download PDF

Info

Publication number
JP3746798B2
JP3746798B2 JP22493194A JP22493194A JP3746798B2 JP 3746798 B2 JP3746798 B2 JP 3746798B2 JP 22493194 A JP22493194 A JP 22493194A JP 22493194 A JP22493194 A JP 22493194A JP 3746798 B2 JP3746798 B2 JP 3746798B2
Authority
JP
Japan
Prior art keywords
group
task
tasks
executed
scheduling
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.)
Expired - Fee Related
Application number
JP22493194A
Other languages
English (en)
Other versions
JPH07152587A (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 JPH07152587A publication Critical patent/JPH07152587A/ja
Application granted granted Critical
Publication of JP3746798B2 publication Critical patent/JP3746798B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Mobile Radio Communication Systems (AREA)

Description

【0001】
【産業上の利用分野】
この発明は、一般に、データ処理システムに関し、より詳細には、データ処理システムにおけるタスクのスケジューリングに関する。
【0002】
【従来の技術】
ワシントンのレドモンドにあるマイクロソフト社により販売されているマイクロソフトWINDOWS バージョン3.1 オペレーティング・システムは、メッセージ駆動型のオペレーティング・システムである。オペレーティング・システム上を実行される各プログラムは、そのプログラムのある部分に向けられた入力メッセージを保持するメッセージ・キューを備えている。メッセージは、プログラムによって生成されたウィンドウへ向けられていることがよくある。プログラムによって生成された各ウィンドウは、関連するプロシジャを備えている。つまり、メッセージは、ウィンドウそれ自体には送られず、むしろ関連するプロシジャに送られる。
【0003】
メッセージは、「メッセージ・ループ」として知られているコードのブロックの実行により、関連するプログラムによってメッセージ・キューから取り出され、処理される。図1は、メッセージ・ループによって実行される処理の流れを示すフローチャートである。これらの処理は、プログラムがアクティブである間、ループ処理により繰り返し実行される。
【0004】
まず、GetMessage関数が呼び出され、キューからメッセージが一つ取り出される(ステップ10)。GetMessage関数は、キューからメッセージを一つ(一つ存在するならば)取り出す機能をもつ。
【0005】
メッセージが、キューから一度取り出されると、(必要ならば)TranslateMessage関数が呼び出され、このメッセージは使用可能なフォーマットに変換される(ステップ12)。この関数は、あるキーボード変換を行う。
【0006】
メッセージが一度変換されると、DispatchMessage 関数が呼び出され、このメッセージは適切なプロシジャにディスパッチされる(ステップ14)。このメッセージは、行き先のウィンドウを識別する情報を含んでいる。この情報は、メッセージを適切にディスパッチするために使用される。
【0007】
また、上述したGetMessage関数は、マイクロソフトWINDOWS バージョン3.1 オペレーティング・システムにおけるタスクのスケジューリングにおいても役割を担う。このオペレーティング・システムは、非横取り型(非プリエンプティブ)、すなわち協調型のマルチタスキングのアプローチを採用する。タスクは、サブルーチンまたはプログラムのように、独立に実行することができる一つのコードの集まりである。
【0008】
協調型マルチタスキングとは、タスク相互間でプロセッサ上の制御を自発的に渡す(譲渡する(“yielding”))ことにより、タスクが互いに協調することをいう。これとは対照的に、横取り型のマルチタスキングでは、スケジューラがどのタスクにプロセッサの使用を認めるべきかを決定し、典型的には、実行のために与えられたタイム・スロットを各タスクに提供する。GetMessage関数は、オペレーティング・システムにおける協調型マルチタスキングを実行するための媒体の一例である。オペレーティング・システムが提供する他の関数であって、協調型マルチタスキングを実行するのに役立つ関数には、PeekMessage 、Yield およびWaitMessage 関数が含まれる。GetMessage関数およびこれらの他の名前をもつ関数群が協調型マルチタスキングにおいてどのように機能するかを理解するために、GetMessage関数の処理をより詳しく見ることが有効である。
【0009】
図2は、複数のアクティブなタスクを有する状況において、GetMessage関数が第1のタスク(例えば、プログラム)から呼び出されたときに、GetMessage関数によって実行される処理の流れを示すフローチャートである。
【0010】
まず、GetMessage関数は、呼出し側タスクのメッセージ・キューが空かどうかを判定する(ステップ16)。呼出し側タスクのメッセージ・キューが空の場合には、このタスクは、空でないメッセージ・キューをもつ第2のタスクにプロセッサを譲る(すなわち、この第1のタスクはプロセッサの制御を放棄する)(ステップ18)。時間が少し経過した時点において、メッセージが第1のタスクのメッセージ・キューで利用可能になる(ステップ20)。第2のタスクがもう一つのタスクに制御を譲るまで、第2のタスクはプロセッサの制御を維持する。最終的に、あるタスクが制御を第1のタスクに戻すことになる(ステップ22)。一般的には、他のタスクの一つのメッセージ・キューが空であり、かつ、第1のタスクのメッセージ・キューが空でないときに、この他のタスクが第1のタスクに制御を戻す。続いて、第1のタスクのメッセージ・キューのメッセージが、メッセージ・キューから取り出される(ステップ24)。一方、ステップ16において、第1のタスクのメッセージ・キューが空でないと判定された場合には、メッセージ・キューからのメッセージの取出し処理(ステップ24)が、ステップ18、20および22の実行後ではなく、直接実行される。
【0011】
【発明が解決しようとする課題】
マイクロソフトWINDOWS バージョン3.1 オペレーティング・システムの協調型マルチタスキングのアプローチの難点の一つは、あるタスクが、他のタスクに制御を譲ることを拒否することにより、プロセッサを占有することである。タスクがそのメッセージ・キューにメッセージを持っている限り、タスクは、制御を譲る必要がない。
【0012】
【課題を解決するための手段】
この発明の第1の特徴によると、タスク群を実行する少なくとも一つのプロセッサを備えたデータ処理システムにおいて、一方法が実行される。これらのタスク群は、独立したタスク・グループに論理的に分割される。各タスク・グループにプロセッサ上で実行されるためのタイム・スロットが割り当てられるように、タスク・グループは横取り型(プリエンプティブ)にスケジューリングされ、実行される。各グループ内で実行されるタスク群は、非横取り型(非プリエンプティブ)にスケジューリングされ、これらのタスク群は、グループに割り当てられたタイム・スロットの時間中に実行される。
【0013】
この発明の第2の特徴によると、コード・モジュールを記憶する少なくとも一つの記憶装置と、タスク群を実行する少なくとも一つのプロセッサとを備えたデータ処理システムにおいて、一方法が実行される。各タスクの実行中に、少なくとも一つのコード・モジュールが実行される。この方法では、タスク従属リストが各タスク用に設けられる。このタスク従属リストは、タスクがプロセッサ上で実行されるときに呼び出される候補のモジュールを列挙したものである。
【0014】
この方法は、各コード・モジュール用のモジュール従属リストを設けるための付加的な処理(ステップ)を含んでいる。各モジュール従属リストは、そのリストに関連したコード・モジュールに相互に従属するコード・モジュール群を列挙したものである。このような場合に、各タスクのタスク従属リストは、タスクがプロセッサ上で実行されるときに呼び出される候補のモジュール従属リストに列挙されたモジュール群の論理的な結合を行うことにより生成される。タスク従属リストは、タスクを、相互に従属するグループ内に論理的に分割するように調べられる。タスク・グループは、横取り型(プリエンプティブ)にスケジューリングされ、実行される。このスケジューリングは、各タスク・グループに、そのグループのタスク群がプロセッサ上で実行される一サイクル中の一つのタイム・スロットが与えられるように行われる。各タスク・グループごとに、グループ内のタスク群は、非横取り型にスケジューリングされ、そのグループに割り当てられたタイム・スロットの時間中に実行される。
【0015】
この発明の第3の特徴によると、データ処理システムは、相互に従属するタスク群からなるグループにタスク群を分割するための分割メカニズムを含んでいる。また、このデータ処理システムは、タスクを実行するための実行メカニズムも含んでいる。横取り型スケジューラは、タスク・グループを横取り型にスケジューリングする。このスケジューリングは、各グループのタスク群の一つを実行するための一つのタイム・スロットが、各グループに与えられるように行われる。また、非横取り型スケジューラは、各グループのタスク群を非横取り型にスケジューリングするためにデータ処理システムに設けられる。
【0016】
【実施例】
この発明の好ましい実施例は、横取り型マルチタスキングと協調型マルチタスキングを組み合わせ、オペレーティング・システムにおけるタスク群のスケジューリングを最適化する。特に、タスク群は、論理的には、相互に従属するタスク・グループに分けられる。
【0017】
以下に詳細に説明されるように、相互に従属するタスク(相互従属タスク)が非同期にスケジューリングされると、コード・シェアリング(コードの共有)およびデータ・シェアリング(データの共有)の問題が発生するように、相互従属タスクは関連している。
【0018】
プロセッサ時間のタイム・スロットは、各グループに与えられる。しかし、そのグループ内におけるスケジューリングは、ワシントンのレドモンドにあるマイクロソフト社によって販売されているマイクロソフトWINDOWS バージョン3.1 オペレーティング・システムによって実行されるように、協調型の方法で行われる。グループが、横取り型でスケジュールされているので、一つのタスクが、プロセッサを占有することはなく、すべてのタスクの実行を遅くすることはない。一般に、タスク完了の応答時間は、この発明により改善される。また、一つのタスクが停止(ハング)しても、スケジューラは、全てのタスクが停止しないように、もう一つのグループに切り換える。
【0019】
さらに、互換性のために、この発明は、タスク間の従属性が無視されないことを確実にする。
【0020】
マイクロソフトWINDOWS オペレーティング・システムの早期のバージョンは、協調型のマルチタスキングを使用していた。したがって、このオペレーティング・システムの早期バージョン用に記述されたアプリケーションは、横取り型スケジューリングには向いていない。また、そのようなアプリケーションが、横取り型でスケジュールされた環境において実行されるときに、従属性の問題が生じる。これらの従属性を認識することに失敗すると、純粋に横取り型でスケジューリングされた環境において種々の問題が発生する。
【0021】
この発明の好ましい実施例は、図3に示すように、データ処理システム26において実現される。図3に示すデータ処理システム26は、単一のプロセッサ・システムであるが、この技術分野の専門家ならば、この発明が分散システムのようなマルチ・プロセッサ・システムにおいても実現されることを理解するであろう。図3のデータ処理システム26は、システムの処理を制御する中央処理装置(CPU)27を備えている。データ処理システム26は、ファイルおよびデータを記憶するためのメモリ28およびディスク記憶装置30も備えている。メモリ28は、RAM、ROMまたは他のよく知られたタイプのメモリ・デバイスを含む複数のタイプのメモリ・デバイスのいずれであってもよい。データ処理システム26は、さらに、キーボード32、マウス34およびビデオ・ディスプレイ36も備えている。追加の、または他のタイプの入出力装置をデータ処理システム26に備えることができるのはいうまでもない。
【0022】
メモリ28は、オペレーティング・システム40とコード・モジュール38とのコピーを保持する。オペレーティング・システムは、ここに示される好ましい実施例をサポートするための、マイクロソフトWINDOWS バージョン3.1 オペレーティング・システムの改良バージョンであってもよい。オペレーティング・システム40は、CPU28上でのタスクの実行をスケジューリングする機能をもつスケジューラ42を含んでいる。この発明の好ましい実施例の大部分は、このスケジューラ42によって実行される。
【0023】
図4は、この発明の好ましい実施例におけるタスクのスケジューリングで実行される処理の流れを示す高レベルのフローチャートである。
【0024】
まず、タスク群は、相互従属関係にあるタスク群の論理的なグループに組織される(ステップ44)。これらのタスク群は、別々のタイム・スロットで実行できないように相互従属性を有している。例えば、これらのタスク群は、共通の動的リンク・ライブラリ(DLL)・モジュールまたは他の共通のモジュールを呼び出すかもしれない。このようなタスク群が別々のタイム・スロットで実行されると、データ共有問題が発生する。これらのタスク群の一つが、DDLのデータを不注意に変化させると、他のタスクに有害な影響を与える。タスク群を論理的なグループに組織する処理は、オペレーティング・システム40によって実行される。この組織する処理については、後に詳述する。
【0025】
以下では、まず、この発明の横取り型スケジューリングの点に焦点を合わせ、後に、この発明の協調型スケジューリングの点に焦点を合わせて説明する。
【0026】
オペレーティング・システム40上を実行される様々なタスク・グループは、横取り型でスケジューリングされ、各グループに、CPU28上での実行のために、プロセッサ時間のある特定のタイム・スロットが与えられる(図4のステップ46)。図5は、4つのタイム・スロット(グループ1、グループ2、グループ3およびグループ4)が存在する場合に、タイム・スロットがどのように割り当てられるかを示している。図5に示す例では、グループ1は、サイクル1のタスク1に割り当てられ、次のサイクル2ではタイム・スロット5に割り当てられている。また、図5に示す例では、グループ2はサイクル1のタイム・スロット2に、グループ3はサイクル1のタイム・スロット3に、グループ4はサイクル1のタイム・スロット4にそれぞれ割り当てられている。各グループは、次のサイクルにおいて対応するタイム・スロットにそれぞれ割り当てられている。すなわち、グループ1はサイクル2のタイム・スロット5に、グループ2はサイクル2のタイム・スロット6に、グループ3はサイクル2のタイム・スロット7に、グループ4はサイクル2のタイム・スロット8にそれぞれ割り当てられている。
【0027】
スケジューリングが動的であり、時間の経過とともにグループの追加および削除の双方またはいずれか一方が行われるかもしれないので、タイム・スロットのシーケンスは、固定されている必要はない。むしろスケジューリングは、時間の経過とともに変化する。しかしながら、スケジューラ42は、アクティブな各グループが、各サイクルでタイム・スロットを得られることを確実にする。
【0028】
各グループ内におけるタスク群のスケジューリングは、横取り型で行われず、むしろ協調型で行われる(図4のステップ48)。上述したように、協調型のマルチ・タスキングでは、あるタスクが別のタスクに自発的に制御を譲ることが必要とされる。GetMessage関数に焦点を置いた従来技術の項で説明した例では、GetMessage関数がタスク間で制御を譲る媒体として機能する。一般に、グループ内で行われる協調型マルチ・タスキングは、マイクロソフトWINDOWS バージョン3.1 オペレーティング・システムで行われるスケジューリングと同様にして行われる。以下に詳述するように、この発明は、タスクを非ブロック化する前に、従属性のチェックを付加的に行う。GetMessage、PeekMessage 、Yield およびWaitMessage のようなAPIは、アプリケーションに同じグループ内の他のタスクに従属することを許容する。
【0029】
まとめると、各グループには、各サイクルにおいて、プロセッサ時間の一つのタイム・スロットが与えられる。グループに割り当てられたタイム・スロットにおいて、どのタスクを実行するかは、そのグループ内のタスクの協調型スケジューリングに依存する。したがって、あるグループにおいて現在実行されているタスクは、そのタスクがGetMessage関数のような媒体によってそのグループ内の他のタスクに制御を渡すまで、そのグループに割り当てられたタイム・スロットの期間中、連続的に実行され続けるであろう。
【0030】
オペレーティング・システム40は、どのタスクが各グループにあるかを監視するためのデータ構造を有する。このための最初のデータ構造は、グループ・リスト50(図6)である。グループ・リスト50は、メモリ28におけるオペレーティング・システム40のデータ領域に記憶することができる。グループ・リスト50は、そのグループに含まれる各タスク用に、それぞれのエントリ52A 、52B 、52C および52D を含んでいる。各エントリ52A 、52B 、52C および52D は、そのグループの一部であるタスク用のハンドルを保持する。ハンドルとは、システム26のタスク群において一つのタスクをユニークに識別するための番号である。図6に示す例では、グループ・リスト50には、タスク1、タスク2、タスク7およびタスク8の4つのタスクのエントリ52A 、52B 、52C および52D が含まれている。
【0031】
グループ・リストに含まれるタスクは、時間の経過とともに変化する。図7は、グループを併合するために実行される処理の流れを示すフローチャートである。
【0032】
まず、一つのタスクが、それ自身のグループ内で起動する(ステップ54)。このタスクの実行中に、このタスクは、DDLにリンクを行うために、APIコール(例えば、LoadLibrary 、LoadModule、WinExec 、またはSendMessage のある形態)を行う(ステップ56)。オペレーティング・システム40は、データ共有問題を回避するために、同じDDLを用いる他のアプリケーション(タスク)を有するグループに、このタスクを移動させる(ステップ58)。
【0033】
図8は、図7のステップ58の処理を詳細に示すフローチャートである。このフローチャートでは、あるタスクを、他のタスクを有するグループに移動する処理がどのようにして行われるかが示されている。
【0034】
第1のグループから第2のグループに移動されるべきタスク(アプリケーション)は、LoadLibrary またはLoadModuleのAPIから直接返される(リターンされる)のではなく、停止状態に置かれる(ステップ60)。第1のグループは、この時点で、「同期状態」(シンキング・アップ状態)にある。オペレーティング・システム40は、第2のグループのアプリケーション・コードのいずれもが実行されなくなるまで待つ(ステップ62)。すなわち、オペレーティング・システム40は、第2のグループのタスクのそれぞれが、GetMessage、WaitMessage またはYield のようなAPIを呼び出すまで待つ。その後、第1のグループからのタスクは、第2のグループに加えられ(ステップ64)、続いて、そのタスクは実行のためにスケジューリングされる(ステップ66)。
【0035】
スケジューラ42がグループにタイム・スロットを適切に割り当てるために、スケジューラ42は、各グループの現在の状態と、たとえあるとしても、どのタスクが、そのグループに与えられた次のタイム・スロットで実行されるようにスケジューリングされているかを知らなければならない。図9に示すように、グループ・ステータス・テーブル68が、オペレーティング・システム40によってメモリ28に記憶され、スケジューラ42が様々なグループからのタスクを横取り型でスケジューリングするのを助ける。
【0036】
図9に示す例では、システム26は、現在、4つのアクティブなタスク・グループを有している。個別のエントリ70A 、70B 、70C および70D が、各グループに提供される。これらのエントリ70A 、70B 、70C および70D のそれぞれには、ステータス・フィールド72A 、72B 、72C および72D がそれぞれ含まれている。ステータス・フィールド72A 、72B 、72C および72D は、各グループのタスクのいずれが次のタイム・スロットで実行されるようにスケジューリングされているか、またはそのグループが「同期状態」(以下に詳述する)にあるかを詳細に示すステータス情報を保持する。ステータス情報は、ステータス・フィールド72A 、72B 、72C および72D 内のビットの集合として符号化されているであろう。また、各エントリ70A 、70B 、70C および70D には、タスク・ネーム・フィールド74A 、74B 、74C および74D がそれぞれ含まれている。このタスク・ネーム・フィールド74A 、74B 、74C および74D は、そのグループの次の利用可能なタイム・スロットで実行されるタスクのタスク・ネーム(タスク名)を保持する。したがって、エントリト70A がグループ1のステータス情報を保持するならば、このタスク・ネーム・フィールド74A は、実行されるグループ1のタスクのタスク名(またはハンドル)を保持する。
【0037】
オペレーティング・システム40は、モジュール群38のそれぞれについてのモジュール従属リストも有している。このモジュール従属リストは、新しいタスクまたはモジュールがグループに追加されたとき、およびタスクがどのグループに追加されるかを決定するときに、タスク/モジュールをグループに割り当てる役割をもつ。モジュール従属リストは、タスクが割り当てられるべきグループを決定するために調べられる。横取り型にスケジューリングされたグループ群は、常に、共通の要素を持たないモジュール従属リストを有する。タスク/モジュールは、それ自身のグループまたは相互に従属するタスク/モジュールを有するグループ内に置かれる。
【0038】
図10には、モジュール従属リスト76の一例が示されている。各タスクは、一つのモジュールまたは複数のモジュールを含んでいてもよい。モジュール従属リスト76は、関連するモジュールから呼び出され、またはロードされる候補モジュール群を列挙したものである。列挙されたモジュール群および関連するモジュールは、相互に従属する関係を有している。エントリ64A 、64B および64C は、各モジュール用のハンドルを保持する。このモジュール従属リスト76は、このリストに関連したモジュールから呼び出されまたはロードされるモジュールのそれぞれのエントリ78A 、78B および78C を備えている。図10では、このモジュールは、モジュール1、DDL1およびDDL2を呼び出しまたはロードする。
【0039】
モジュール従属リストは静的ではなく、むしろこのリストは時間の経過とともに変化する。図11は、関連したモジュールが実行されているときに、モジュール従属リスト76を更新するために行われる処理の流れを示すフローチャートである。
【0040】
まず、モジュール従属リストは、各モジュール用に保持される(ステップ80)。続いて、そのリストに関連したモジュールに関係する従属関係を追加する処理が実行される(ステップ82)。この処理には、例えば、ライブラリ・モジュールのロード、DDLモジュールのロード、アプリケーション・モジュールの実行、またはエクスポートされるDDLモジュールのアドレスの獲得処理が含まれる。マイクロソフトWINDOWS(登録商標) バージョン3.1 オペレーティング・システムでは、LoadLibrary、LoadModule、GetProcAddressおよびWinExec のようなAPIコールは、モジュールに関係する従属関係を追加する。続いて、このようなAPIコールによってロードされ、実行され、またはエクスポートされる新しいモジュールは、モジュール従属リストに追加される(ステップ84)。このようにして、モジュール従属リストは、関連したモジュールの実行中に、動的に変化(成長)する。
【0041】
いずれのタスクも複数のモジュールを含むので、タスクのモジュール従属リストをどのようにして生成するかという問題がある。図12は、タスクの従属リストを生成するために実行される処理の流れを示すフローチャートである。まず、タスクが生成される(ステップ86)。続いて、このタスクのタスク従属リストが、このタスクのモジュール群からなるモジュール従属リストを結合することにより生成される(ステップ88)。このようにして、この発明の好ましい実施例は、タスクをグループに割り当てるときに、タスクの全ての従属関係が考慮されることを確実にする。
【0042】
スケジューラ42によって実行されるスケジューリングの内容を、ここでまとめておくことはおそらく有益であろう。このスケジューラ42は、アクティブなグループのそれぞれにタイム・スロットを割り当てる。また、スケジューラ42は、グループ内のどのタスクが実行されるべきか、またはそのグループが同期状態にあるかどうかを判定しなければならない。現在実行されているタスクは、グループ・ステータス・テーブル68のエントリ70A 、70B 、70C および70D のタスク・ネーム・フィールド74A 、74B 、74C および74D (図9)内に示される。APIのGetMessage、PeekMessage 、Yield およびWaitMessage が、この発明の好ましい実施例においては改良され、制御を渡すときおよびブロック化するときに、グループ・ステータス・テーブルを更新する。このようにして、グループ・ステータス・テーブル68は現在の情報を備え、各グループの適切なタスクがスケジューリングされる。
【0043】
この発明について、好ましい実施例を参照しながら説明したが、この技術分野における専門家ならば、特許請求の範囲に記載された発明の範囲内で、様々な変更ないし修正を加えることが可能なことを理解するであろう。例えば、この発明は分散システムにおける使用によく適している。また、この発明は、マイクロソフトWINDOWS バージョン3.1 オペレーティング・システム以外の環境下でも実行することができる。さらに、この発明においては、単一のスケジューラだけでなく、むしろ複数のスケジューラを共同で使用することもできる。
【図面の簡単な説明】
【図1】マイクロソフトWINDOWS バージョン3.1 オペレーティング・システムのメッセージ・ループにより実行される処理の流れを示すフローチャートである。
【図2】図1のメッセージ・ループのGetMessage関数によって実行される処理の流れを示すフローチャートである。
【図3】この発明の好ましい実施例を実行するのに適したデータ処理システムを示すブロック図である。
【図4】タスク実行のスケジューリングにおいて、この発明の好ましい実施例によって実行される処理の高レベルの流れを示すフローチャートである。
【図5】この発明の好ましい実施例におけるグループの横取り型スケジューリングの一例を示すブロック図である。
【図6】この発明の好ましい実施例において使用されるグループ・リストの一例を示す。
【図7】この発明の好ましい実施例において、タスク群を、一つの併合されたグループに併合するために実行される処理の流れを示すフローチャートである。
【図8】この発明の好ましい実施例において、同じDDLを用いる他のタスクを有するグループに、あるタスクを移動させるために実行される詳細な処理の流れを示すフローチャートである。
【図9】この発明の好ましい実施例において使用されるグループ・ステータス・テーブルの一例を示す。
【図10】この発明の好ましい実施例において使用されるモジュール従属リストの一例を示す。
【図11】この発明の好ましい実施例におけるモジュール従属リストを変化(成長)させるために実行される処理の流れを示すフローチャートである。
【図12】この発明の好ましい実施例におけるタスク従属リストを生成するために実行される処理の流れを示すフローチャートである。
【符号の説明】
26 データ処理システム
27 CPU
28 メモリ
30 ディスク記憶装置
32 キーボード
34 マウス
36 ビデオ・ディスプレイ
38 モジュール群
40 オペレーティング・システム
42 スケジューラ
50 グループ・リスト
52A 、52B 、52C 、52D エントリ
68 グループ・ステータス・テーブル
70A 、70B 、70C 、70D エントリ
72A 、72B 、72C 、72D ステータス・フィールド
74A 、74B 、74C 、74D タスク・ネーム・フィールド
76 モジュール従属リスト
78A 、78B 、78C エントリ

Claims (14)

  1. 実行が少なくとも一つのコード・モジュールの実行を含むタスク群を実行し、1つのオペレーティング・システムを実行する少なくとも一つのプロセッサを有するデータ処理システムにおいて、前記オペレーティング・システムによって実行される方法であって
    2つのタスクが共通のコード・モジュールを呼び出すかどうかに基づいた相互に従属する関係にあるタスク群からなるグループに、タスクを論理的に分割するステップと
    従属する関係にあるタスク群からなる前記グループそれぞれが、そのグループのタスク群が前記プロセッサ上で実行する一サイクルの一つのタイム・スロットに割り当てられるように、実行されるべき、相互に従属する関係にあるタスク群からなる前記各グループを横取り型にスケジューリングするステップと
    各グループごとに、前記グループに割り当てられた前記タイム・スロット内で実行されるべきそれぞれの前記グループ内の前記タスク非横取り型にスケジューリングするステップと
    前記グループ前記タスク群の相互従属する関係における変を反映するために相互従属するタスクのグループにタスク前記分割を動的に更新するステップと、
    グループの前記横取り型スケジューリングを更新するステップと
    各グループ内のタスクの協調的なスケジューリングを更新するステップと
    を備えることを特徴とする方法。
  2. 前記データ処理システム少なくとも一つの記憶装置を含み、前記方法は、各グループのグループ・リストを前記記憶装置に記憶するステップをさらに備え、各グループ・リストは、当該グループリストに関連付けられたグループにおけるタスクの識別情報を含むことを特徴とする請求項1に記載の方法。
  3. 各グループごとのステータス情報で、実行中のタスクをそのグループが有しているかどうかを示し、かつ、実行中の任意のタスクについての識別情報を保持するステータス情報を格納するステップをさらに備えることを特徴とする請求項1に記載の方法。
  4. タスク群を前記相互に従属する関係にあるタスク群からなるグループに論理的に分割する前記ステップ
    最初に、各タスクをそれ自身のグループに配置するステップと、
    その後、前記最初に配置されたタスクが他のグループの一つのタスクによって呼び出されたモジュールを呼び出す場合には、前記最初に配置されたタスクを、タスク群からなる前記他のグループに移動するステップ
    を備えることを特徴とする請求項1に記載の方法。
  5. コード・モジュール格納する少なくとも一つの記憶装置、および各実行が少なくとも一つのコード・モジュールの実行を含むタスクを実行する少なくとも一つのプロセッサを備えたデータ処理システムにおいて、
    タスクが前記プロセッサ上の実行されるときに呼び出されるモジュールを列挙したタスク従属リストを各タスクごとに提供するステップと
    記タスク従属リストに関連付けられたタスクによってモジュールが呼び出された際におけるに基づいて前記タスク従属性リストを動的に更新するステップと
    前記タスク群の実行中、各タスクの前記タスク従属性リストに基づいて、前記タスク群を、相互に従属する関係にあるタスク群からなるグループ群に動的に、1つのタスクによって呼び出された1つのコード・モジュールと、他のタスクによって呼び出された他のコード・モジュールとの間の従属に基づいて、分割するステップと、
    そのグループのタスク群が前記プロセッサ上で実行することが可能な一サイクル内の一つのタイム・スロットを、タスク群からなる各グループに与えられるように、実行されるべきタスク群からなる前記グループ群を横取り型にスケジューリングするステップと、
    タスク群からなる各グループごとに、当該グループに割り当てられた前記タイム・スロットの期間に、各グループ内で実行されるタスクを非横取り型にスケジューリングするステップ
    を備えることを特徴とする方法。
  6. 記グループに含まれるタスクの識別情報を保持するグループ・リストを各グループごとに格納するステップをさらに備えることを特徴とする請求項5に記載の方法。
  7. 各グループごとのステータス情報で、実行中のタスクを前記グループが有しているということを示し、かつ、実行中の任意のタスクについての識別情報を保持するステータス情報を格納するステップをさらに備えることを特徴とする請求項5に記載の方法。
  8. コード・モジュールを格納する少なくとも一つの記憶装置、および各実行が少なくとも一つのコード・モジュールの実行を含むタスク群を実行する少なくとも一つのプロセッサを備えたデータ処理システムにおいて、
    関連付けられたコード・モジュールからなる相互に従属する関係にあるコード・モジュールを列挙したモジュール従属リストを、前記各関連したコード・モジュールごとに提供するステップと、
    タスクが前記プロセッサ上で実行されるときにロードされ、あるいはスポートされるモジュール群からなる前記モジュール従属リストに列挙されたモジュール群について論理的な結合を行うことにより、各タスクごとにタスク従属リストを生成するステップと
    前記タスク従属リストを調べ、前記タスクを、相互に従属する関係にあるタスク群からなるグループに論理的に分割するステップと
    そのグループのタスク群が前記プロセッサ上で実行することが可能な一サイクルの一つのタイム・スロットを、タスク群からなる各グループに与えられるように、実行されるべきタスク群からなる記グループ群を横取り型にスケジューリングするステップと、
    スク群からなる各グループごとに、当該グループに割り当てられた前記タイム・スロットの期間に、各グループ内で実行されるタスクを非横取り型にスケジューリングするステップ
    備えることを特徴とする方法。
  9. 前記各グループに含まれるタスクの識別情報を保持するグループ・リストを各グループごとに格納するするステップをさらに備えることを特徴とする請求項8に記載の方法。
  10. 各グループごとのステータス情報で、実行中のタスクを前記グループが有しているということを示し、かつ、実行中の任意のタスクについての識別情報を保持するステータス情報を格納するステップをさらに備えることを特徴とする請求項8に記載の方法。
  11. 各実が少なくとも一つのコード・モジュールの実行を含むタスク群を実行し、1つのオペレーティングシステムを実行する少なくとも1つのプロセッサを有するデータ処理システムにおいて、前記オペレーティング・システムによって実行される方法であって、
    相互に従属する関係にあるタスク群からなるグループ群に、タスク、前記タスク群によって呼び出されるコード・モジュール群に基づいて、論理的に分割するステップと、
    従属する関係にあるタスク群からなるグループそれぞれが、そのグループのタスク群が前記プロセッサ上で実行する一サイクルの一つのタイム・スロット与えられるように、実行されるべき、相互従属する関係にあるタスク群からなる前記グループを横取り型にスケジューリングするステップと、
    各グループごとに、前記グループに割り当てられた前記タイム・スロット期間、各グループ内で実行されるタスクを非横取り型にスケジューリングするステップと
    前記コード・モジュールが前記タスクによって呼び出された際の変化を反映するために相互従属する関係にあるタスク群からなるグループタスク前記分割を動的に更新するステップと
    グループの前記横取り型スケジューリングを更新するステップと、
    各グループ内のタスク前記非横取り型なスケジューリングを更新するステップ
    備えることを特徴とする方法。
  12. 前記オペレーティング・システムは、さらに、
    最初に、各タスクをそれ自身のグループに配置するステップと、
    その後、前記最初に配置されたタスクが他のグループの1つ以上のタスクによって呼び出されたモジュールを呼び出す場合には、前記最初に配置されたタスクをタスク群からなる他のグループに移動するステップ
    さらに実行することを特徴とする請求項11に記載の方法。
  13. コードモジュールを格納する少なくとも1つの記憶装置と、各実行が少なくとも一つのコード・モジュールの実行を含むタスク群を実行する少なくとも一つのプロセッサとを備えたデータ処理システムにおける方法であって、
    前記タスクが前記プロセッサ上で実行される際にロードされ、あるいはスポートされるモジュールを列挙する、各タスクごとのタスク従属リストを提供するステップと、
    前記タスク従属リストを動的に更新しかつ検査するステップと
    前記タスクの実行中、前記タスク従属性リストの検査に基づいて、相従属する関係にあるタスク群からなるグループに動的に分割するステップと
    スク群からなる各グループが、そのグループのタスク群が前記プロセッサ上で実行することが可能な一サイクルの一つのタイム・スロットに与えられるように、実行されるべきタスク群からなる記グループを横取り型にスケジューリングするステップと
    タスク群からなる各グループごとに、前記グループに割り当てられた前記タイム・スロット期間、各グループ内で実行されるべきタスクを非横取り型にスケジューリングするステップ
    備えることを特徴とする方法。
  14. コード・モジュールを格納する少なくとも一つの記憶装置と、および各実行が少なくとも一つのコード・モジュールの実行を含むタスク群を実行する少なくとも一つのプロセッサを備えたデータ処理システムにおける方法であって、
    関連付けられたコード・モジュールからなる相互に従属する関係にあるコード・モジュールを列挙したモジュール従属リストを、前記各関連したコード・モジュールごとに提供するステップと
    タスクが前記プロセッサ上で実行されるときにロードされ、あるいはスポートされるモジュール群からなる前記モジュール従属リストに列挙されたモジュール群についての論理的な結合を行うことにより、各タスクごとにタスク従属リストを生成するステップと
    前記タスク従属リストを検査するステップと
    前記タスク従属リストの前記検査に基づいて、前記タスクを相互に従属する関係にあるタスク群からなるグループに論理的に分割するステップと
    そのグループのタスク群が、前記プロセッサ上で実行することが可能な一サイクルの一つのタイム・スロットタスク群からなる各グループに与えられるように、実行されるべき、タスク群からなる前記グループ群を横取り型にスケジューリングすること
    タスク群からなる記グループごとに、当該グループに割り当てられた前記タイム・スロットの期間に、各グループ内で実行されるタスクを非横取り型にスケジューリングするステップ
    備えることを特徴とする方法。
JP22493194A 1993-09-21 1994-09-20 協調型のタスク・グループを有する横取り型のマルチ・タスキング方法およびデータ処理システム Expired - Fee Related JP3746798B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12593093A 1993-09-21 1993-09-21
US08/125930 1993-09-21

Publications (2)

Publication Number Publication Date
JPH07152587A JPH07152587A (ja) 1995-06-16
JP3746798B2 true JP3746798B2 (ja) 2006-02-15

Family

ID=22422115

Family Applications (1)

Application Number Title Priority Date Filing Date
JP22493194A Expired - Fee Related JP3746798B2 (ja) 1993-09-21 1994-09-20 協調型のタスク・グループを有する横取り型のマルチ・タスキング方法およびデータ処理システム

Country Status (5)

Country Link
US (1) US6052707A (ja)
EP (1) EP0644484B1 (ja)
JP (1) JP3746798B2 (ja)
CA (1) CA2131406C (ja)
DE (1) DE69424610T2 (ja)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6424989B1 (en) * 1991-09-20 2002-07-23 Venson M. Shaw Object-oriented transaction computing system
US6948172B1 (en) * 1993-09-21 2005-09-20 Microsoft Corporation Preemptive multi-tasking with cooperative groups of tasks
DE69622832T2 (de) * 1995-05-05 2003-04-10 Apple Computer Vorrichtung und verfahren für kooperative unterbrechungen in einer preemptiven prozessablauffolgeplanungsumgebung
US6571215B1 (en) * 1997-01-21 2003-05-27 Microsoft Corporation System and method for generating a schedule based on resource assignments
JP3037182B2 (ja) * 1997-02-17 2000-04-24 日本電気株式会社 タスク管理方式
KR20010072477A (ko) * 1998-08-13 2001-07-31 썬 마이크로시스템즈, 인코포레이티드 가상 머신 환경에서 네이티브 코드를 변환하고 실행하는방법 및 장치
US6910210B1 (en) * 1998-11-24 2005-06-21 Microsoft Corp. System and method for terminating applications
GB2348306B (en) 1999-03-25 2003-07-30 Ibm Data processing systems and method for processing tasks in such systems
US6754690B2 (en) * 1999-09-16 2004-06-22 Honeywell, Inc. Method for time partitioned application scheduling in a computer operating system
JP2001125797A (ja) * 1999-10-25 2001-05-11 Seiko Epson Corp マルチタスクシステム及びそのプログラムを記録した記録媒体並びに加工装置
US6789132B2 (en) * 2000-02-09 2004-09-07 Seagate Technology Llc Modular disc drive architecture
US6757897B1 (en) * 2000-02-29 2004-06-29 Cisco Technology, Inc. Apparatus and methods for scheduling and performing tasks
US7111297B1 (en) * 2000-05-02 2006-09-19 Microsoft Corporation Methods and architectures for resource management
US7058947B1 (en) 2000-05-02 2006-06-06 Microsoft Corporation Resource manager architecture utilizing a policy manager
US6799208B1 (en) * 2000-05-02 2004-09-28 Microsoft Corporation Resource manager architecture
WO2002069174A1 (fr) * 2001-02-28 2002-09-06 Fujitsu Limited Procede d'execution en parallele de processus et ordinateur a processeurs multiples
GB2377283B (en) * 2001-04-10 2004-12-01 Discreet Logic Inc Initialising modules
JP3813930B2 (ja) 2002-01-09 2006-08-23 松下電器産業株式会社 プロセッサ及びプログラム実行方法
EP1489508B1 (en) * 2002-03-22 2008-01-09 Toyota Jidosha Kabushiki Kaisha Task management device and method, operation judgment device and method, and program to be judged
GB2411751A (en) * 2002-04-25 2005-09-07 Livedevices Ltd Improvements relating to reduced-overhead context-saving in static priority scheduled operating systems
WO2003091878A2 (en) * 2002-04-25 2003-11-06 Livedevices Limited Reduced overhead context-saving in static priority scheduled operating systems
AU2003222977A1 (en) * 2002-04-30 2003-11-17 Livedevices Limited Dispatch in priority pre-emptive real-time operating systems
GB2388213A (en) * 2002-04-30 2003-11-05 Innovation Ct Improvements relating to task dispatch in priority pre-emptive real-time operating systems
JP4750350B2 (ja) 2003-03-13 2011-08-17 パナソニック株式会社 タスク切換装置、方法及びプログラム
JP4028444B2 (ja) * 2003-06-27 2007-12-26 株式会社東芝 スケジューリング方法およびリアルタイム処理システム
JP3920818B2 (ja) * 2003-07-22 2007-05-30 株式会社東芝 スケジューリング方法および情報処理システム
JP4682513B2 (ja) * 2003-12-05 2011-05-11 トヨタ自動車株式会社 タスク管理システム
US7444621B2 (en) * 2004-02-20 2008-10-28 Microsoft Corporation Method and system for providing a common operating system
WO2005085994A2 (en) * 2004-02-24 2005-09-15 Koninklijke Philips Electronics N.V. Multi-tasking data processing system
US7496912B2 (en) * 2004-02-27 2009-02-24 International Business Machines Corporation Methods and arrangements for ordering changes in computing systems
US8782654B2 (en) 2004-03-13 2014-07-15 Adaptive Computing Enterprises, Inc. Co-allocating a reservation spanning different compute resources types
US8413155B2 (en) 2004-03-13 2013-04-02 Adaptive Computing Enterprises, Inc. System and method for a self-optimizing reservation in time of compute resources
JP4325466B2 (ja) * 2004-03-31 2009-09-02 トヨタ自動車株式会社 タスク実行システム
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US8176490B1 (en) 2004-08-20 2012-05-08 Adaptive Computing Enterprises, Inc. System and method of interfacing a workload manager and scheduler with an identity manager
WO2006053093A2 (en) 2004-11-08 2006-05-18 Cluster Resources, Inc. System and method of providing system jobs within a compute environment
US8863143B2 (en) 2006-03-16 2014-10-14 Adaptive Computing Enterprises, Inc. System and method for managing a hybrid compute environment
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
WO2006107531A2 (en) 2005-03-16 2006-10-12 Cluster Resources, Inc. Simple integration of an on-demand compute environment
CA2603577A1 (en) 2005-04-07 2006-10-12 Cluster Resources, Inc. On-demand access to compute resources
US20130312006A1 (en) * 2005-04-07 2013-11-21 Adaptive Computing Enterprises, Inc. System and method of managing job preemption
CN100377091C (zh) * 2006-03-16 2008-03-26 浙江大学 嵌入式操作系统分组硬实时任务调度的实现方法
US8694999B2 (en) * 2006-12-07 2014-04-08 Wind River Systems, Inc. Cooperative scheduling of multiple partitions in a single time window
JP4912927B2 (ja) * 2007-03-14 2012-04-11 関西電力株式会社 タスク割当装置、及びタスク割当方法
JP2009020692A (ja) * 2007-07-11 2009-01-29 Toshiba Corp タスク管理装置、タスク管理方法及びタスク管理プログラム
US8041773B2 (en) 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US8621475B2 (en) * 2007-12-06 2013-12-31 International Business Machines Corporation Responsive task scheduling in cooperative multi-tasking environments
US20090165015A1 (en) * 2007-12-21 2009-06-25 Schlumberger Technology Corporation Managing dependencies among applications using satisfiability engine
US9304831B2 (en) * 2008-09-29 2016-04-05 Microsoft Technology Licensing, Llc Scheduling execution contexts with critical regions
EP2282264A1 (en) 2009-07-24 2011-02-09 ProximusDA GmbH Scheduling and communication in computing systems
US8458136B2 (en) * 2009-07-27 2013-06-04 International Business Machines Corporation Scheduling highly parallel jobs having global interdependencies
US10877695B2 (en) 2009-10-30 2020-12-29 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
CN102654843A (zh) * 2011-03-04 2012-09-05 北京国科环宇空间技术有限公司 嵌入式处理器中非抢占式容错调度方法及嵌入式处理器
US9575803B2 (en) * 2015-02-13 2017-02-21 International Business Machines Corporation Determining an ordering to use to open and close programs that call other programs
US9948760B2 (en) 2015-06-26 2018-04-17 Honda Motor Co., Ltd. System and method for controlling vehicle network functions with version control
CN107566460B (zh) * 2017-08-16 2020-06-05 微梦创科网络科技(中国)有限公司 分布式部署计划任务的方法和系统
US11726823B2 (en) * 2020-02-06 2023-08-15 Samsung Electronics Co., Ltd. Electronic device having heterogeneous processors and method of processing task using the heterogeneous processors
JP7322797B2 (ja) * 2020-04-28 2023-08-08 株式会社デンソー リアルタイム演算処理装置
JP7331768B2 (ja) * 2020-04-28 2023-08-23 株式会社デンソー リアルタイム演算処理装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4658351A (en) * 1984-10-09 1987-04-14 Wang Laboratories, Inc. Task control means for a multi-tasking data processing system
US4980824A (en) * 1986-10-29 1990-12-25 United Technologies Corporation Event driven executive
US5311461A (en) * 1988-12-30 1994-05-10 International Business Machines Corp. Programmable priority and selective blocking in a compute system
JP3039953B2 (ja) * 1989-04-28 2000-05-08 株式会社日立製作所 並列化装置
JPH0460843A (ja) * 1990-06-29 1992-02-26 Hitachi Ltd マルチプロセッサシステムにおけるタスクスケジュール方式
FR2696259A1 (fr) * 1992-09-30 1994-04-01 Apple Computer Organisation en tâches et en modules d'une exécution dans un processeur.
US5432941A (en) * 1992-10-13 1995-07-11 Microsoft Corporation Method and system for dynamically configuring a software system using configuration groups
US5437032A (en) * 1993-11-04 1995-07-25 International Business Machines Corporation Task scheduler for a miltiprocessor system
US5745778A (en) * 1994-01-26 1998-04-28 Data General Corporation Apparatus and method for improved CPU affinity in a multiprocessor system
US5909559A (en) * 1997-04-04 1999-06-01 Texas Instruments Incorporated Bus bridge device including data bus of first width for a first processor, memory controller, arbiter circuit and second processor having a different second data width

Also Published As

Publication number Publication date
EP0644484A3 (ja) 1995-04-26
CA2131406C (en) 2002-11-12
CA2131406A1 (en) 1995-03-22
JPH07152587A (ja) 1995-06-16
EP0644484A2 (en) 1995-03-22
DE69424610D1 (de) 2000-06-29
DE69424610T2 (de) 2000-09-28
US6052707A (en) 2000-04-18
EP0644484B1 (en) 2000-05-24

Similar Documents

Publication Publication Date Title
JP3746798B2 (ja) 協調型のタスク・グループを有する横取り型のマルチ・タスキング方法およびデータ処理システム
US7721286B2 (en) Preemptive multi-tasking with cooperative groups of tasks
EP0473444B1 (en) Scheduling method for multiprocessor operating system
EP0667011B1 (en) Data processing system and operating system
US8505014B2 (en) Process attachable virtual machines
US6738846B1 (en) Cooperative processing of tasks in a multi-threaded computing system
GB2304944A (en) Support for application programs in a distributed environment
JPH10502473A (ja) リアルタイム非同期ソフトウェア・アプリケーションにおいて階層呼び出し構造を実施する方法
JPS6155695B2 (ja)
US7823158B2 (en) Adaptive scheduling and management of work processing in a target context in resource contention
US10761904B2 (en) Method and system for synchronizing and joining multiple calls to the same asynchronous code segment
Pazzaglia et al. Optimal memory allocation and scheduling for DMA data transfers under the LET paradigm
CN112346835B (zh) 一种基于协程的调度处理方法及系统
JP2693916B2 (ja) タスクスケジュール方法
US5386586A (en) System and method for construction of lists of deferred service requests
US7111288B2 (en) Method and system for minimizing the cycle time when compiling a program in a processing system
Wolfe et al. RapidSched: Static scheduling and analysis for Real-Time CORBA
US9304831B2 (en) Scheduling execution contexts with critical regions
WO1992003794A1 (en) Dual level scheduling of processes
Burgess et al. BED: a multithreaded kernel for embedded systems
US8683432B2 (en) Providing execution context in continuation based runtimes
Silberschatz Cell: a distributed computing modularization concept
Olsson et al. Rendezvous
Sims An enhanced Ada run-time system for real-time embedded processors
KR980007172A (ko) 분산시스템에서 동적 동기화를 위한 다단계 스케줄링 구조 및 그 방법

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050308

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050608

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20050608

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050613

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050908

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051125

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091202

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101202

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111202

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111202

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121202

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121202

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131202

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees