JP2866241B2 - コンピュータシステムおよびスケジューリング方法 - Google Patents
コンピュータシステムおよびスケジューリング方法Info
- Publication number
- JP2866241B2 JP2866241B2 JP4015120A JP1512092A JP2866241B2 JP 2866241 B2 JP2866241 B2 JP 2866241B2 JP 4015120 A JP4015120 A JP 4015120A JP 1512092 A JP1512092 A JP 1512092A JP 2866241 B2 JP2866241 B2 JP 2866241B2
- Authority
- JP
- Japan
- Prior art keywords
- lock
- thread
- threads
- status variable
- waiting
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Description
におけるスケジューリング方式に関し、特に複数のスレ
ッドあるいはプロセス間の相互排除を共有変数を用いて
実現するコンピュータシステムにおいてそれら複数のス
レッドあるいはプロセスの処理順を決定するためのスケ
ジューリング方式に関する。
オペレーティングシステムによって行われるスケジュー
リングは、各プロセス、各ユーザ間に、なるべく公平に
CPUタイムを割り振るような方針で行われていた。し
かし、近年、マルチプロセッサシステムが開発され、ス
レッドプログラミングを代表とする並行/並列プログラ
ミングが大きく取り上げられるに伴い、従来のスケジュ
ーリング方法では十分良い効率が得られないという問題
を生じ、新しいスケジューリング手法の開発が望まれて
いる。
には従来の典型的なオペレーティングシステム(例え
ば、Unix)におけるプロセスのメモリ空間の構成が
示されている。なお、図中の黒丸印は実行単位(CPU
割り当ての単位)を示す。
別のテキスト、データ、スタック空間を有し、互いに参
照し合うことはできない。プロセス間の通信、同期はシ
ステムコールを使わざるを得ず、オーバーヘッドが大き
い。この構成だと複数のプロセッサが協調して効率よく
1つの処理を行うようなプログラミングは困難である。
そこで考え出されたのがスレッドプログラミングであ
る。図11にスレッドのメモリ空間構成を示す。
レッド間で同一のテキスト空間、データ空間、スタック
空間を共有することができる。このため、データ空間に
共有している変数を使うことにより、システムコールを
使わずに高速なスレッド間の通信および同期を実現で
き、マルチプロセッサシステムにおけるプログラミング
に適している。なお、同一空間を共有するスレッドをま
とめてタスクと呼ぶ。
いるように、従来のプロセスに共有メモリを導入するこ
とも行われている。共有メモリは複数のプロセス間で共
有できる特別なデータ空間であり、やはりマルチプロセ
ッサシステムにおける高速なプロセス間通信、同期に利
用することができる。以降、スレッドに関して話を進め
るが、プロセス間の通信/同期に共有メモリを使う場合
についてもスレッドの場合と同様である。
数のスレッド間で共有する変数をスレッド間の同期(相
互排除)に用いる。以降、この様な変数を共有変数、あ
るいは、ロック変数と呼ぶ。
は、タクス1のスレッド1、2、3、4が、ロック変数
Sを用いて、スレッド間で排他的に特定の処理を行って
いる。ロック変数Sの値が1の時は、ある1つのスレッ
ド(この図ではスレッド3)が排他的な処理を実行中で
あること(ロック状態)を示し、他のスレッド1、2、
4はその処理を実行することができない。
処理の流れをフローにして示す。図中、ステップS1,
S2,S3はロックを確保するときの処理の流れであ
り、ステップS4はロックを解除するときの処理の流れ
である。
は。テストアンドセット命令(test & set)
のように参照と変更が不可分に行われるプロセッサ命令
で行う必要がある。
可分の単一機会命令として、指定されたロック変数から
値“0”を読み出した後、“1”の値をロック変数に書
き戻すものであり、最初に“0”(ロックがオフ)を受
け取るスレッドだけがロックを確保して処理を実行で
き、それ以外のスレッドはすべて“1”(ロックがオ
ン)を受け取ることにより実行を待たされる。この場
合、“1”を受け取った各スレッドは、ロック変数が
“0”になるまで繰り返しテストを行い、ロック解除さ
れまで待つ。この状態は、繁忙待機(busy wai
t)、またはスピンループと称されている。
実現する方法はプログラミングが容易で、かつ確実にス
レッドの同期を取ることができる。しかし、複数のスレ
ッドが頻繁にロック変数による同期を行う際には実行効
率が悪化する場合がある。例えば、あるスレッドがロッ
クの解除を待ってスピンループしている途中で実行が止
まっていた(CPUが取り上げられていた)状態であ
り、かつそのスレッドが次の実行の候補に選ばれたとき
にロックがまだ解除されていないような場合、そのスレ
ッドを実行しても無駄にスピンループをするだけで実質
的に処理は進まない。このようなロック待ちでスピンル
ープしているスレッドを頻繁に選択し、実行するほどシ
ステム全体の効率は悪化する。
中のスレッドを決められた時間(単位実行時間、タイム
クオンタムということがある)連続して実行したとき、
あるいは、そのスレッドがI/O待ちなどでそれ以上実
行を継続できなくなったときに、そのスレッドからCP
Uを取り上げ、スケジューリングを行い、次の実行時間
(CPU割り当て時間)において実行すべきスレッドを
新たに選び直す。
テムが再スケジューリングして、次の実行時間に実行す
べきスレッドを、実行可能なスレッドの候補の中から選
択しようとしている場合を考える。
り、この他に直接これら4つのスレッドと関係の無いス
レッドX、Y、Zがやはり同じように実行可能でスケジ
ュールの対象になっているとする。なお、話を簡単にす
るためこれら7つのスレッドの実行優先度はみな等しい
と仮定する。
ケジューラはどのスレッドを実行することもできる。し
かし、次に実行すべきスレッドの選び方によっては、処
理効率は大きく異なってくる。
Uが1つ)の場合を考える。タスク1について考える
と、スレッド1、2、4が選択されても、これらはどれ
もロック待ちであるのでスピンループするだけである。
しかし、スレッド3を選択して実行した場合は、4つの
スレッド全体の効率がよい。すなわち、スレッド3の処
理が進めば、それだけ早く排他的な処理を終えることが
でき、ロックを解放し、他のスレッド1、2、4のいず
れかがそのロックを確保して排他的な処理を実行するこ
とができるからである。
ロック待ちになっていない)スレッドX、Y、Zを実行
する場合も、CPUは有効に使用される。すなわち、こ
の場合の結論としては、
類1)を選択するのはCPUの実行時間の浪費、2)ロ
ックを確保しているスレッド3(分類2)を実行する場
合は効率がよい、3)ロックとは関係の無いスレッド
X、Y、Z(分類3)を実行する場合もCPUを有効に
使える、ということがいえる。
ーラはスレッドがロック待ちかどうか判断することがで
きないので、分類1,2,3のようにスレッドを区別す
ることができない。従って、通常は、スレッドの実行優
先度だけでスレッドを選んでしまうので、必ずしも分類
2、3に属すスレッドを選択することができず、ロック
待ちのスレッドを選んでしまう場合が生じる。
ッドを選び効率悪くスレッドを実行する際のCPUの稼
働状態の一例を示す。ここでは、ロックをかけて処理す
る部分の時間を実行処理単位時間(以降Tと表す)のほ
ぼ1.5倍と仮定している。
3がロック状態である場合に、ロック待ちのスレッド
1,2,4の順でCPUを割り当てると、時間t1から
t4までの期間は処理は実行されず、スピンループによ
ってCPUが無駄に使用される。
レッド3のロック状態が解放されて初めて、スレッド1
は、次の時間t5 からの実行期間Tにおいてロックを確
保でき、排他的に処理を行うことができる。この図15
に示した範囲では、CPU使用率は半分以下であり、非
常に効率が悪い。マルチプロセッサシステムの場合も同
様の問題が生じる。やはりロック待ちのスレッドを選択
すると無駄なスピンループでCPUを消費する。
CPU構成のマルチプロセッサシステムにおいて、効率
が悪いスレッド実行順序の一例が示されている。ロック
待ちのスレッド1,2,4は、ロック状態のスレッド3
の処理が進んでそのロックが解放されるまでスピンルー
プしている。このため、この例においても、図に示した
範囲でCPUの利用率は全体の約半分であり効率が悪
い。
かし従来のUnixオペレーティングシステムのように
優先度に基づく多重レベルのラウンドロビンスケジュー
リングのみではこの様な現象が発生してしまい、システ
ム全体が無駄なスピンループにより効率が悪化するとい
う問題が生ずる。
問題は、スレッド間での排他制御処理の場合のみなら
ず、複数のプロセス間で共有メモリ上の同期変数を用い
て排他制御を行う場合でも全く同様に生じるものであ
る。
来のスケジューリング方式では、スケジューラは、その
スレッドがロック待ちか、ロックを確保しているか、ロ
ックとは関係の無いものかを区別できない。そのため
に、通常は、スレッドの実行優先度だけでスレッドを選
んでしまうので、必ずしもロックを確保しているか、ロ
ックとは関係の無いものを選択できず、ロック待ちのス
レッドを選択して、スレッドの実行の効率が悪化し、C
PUの実行時間が浪費される欠点があった。
ものであり、スケジューラ内に、実行候補として選択し
たスレッドあるいはプロセスが、ロックを必要としない
スレッドあるいはプロセスか否か、またはスレッドある
いはプロセスがロック待ち状態か否か、およびロック待
ち状態であればそのロック待ちの対象となっていた選択
したスレッドあるいはプロセスが属するタスク空間内の
スレッドあるいはプロセス間の排他制御に用いられるユ
ーザ空間上の共有変数のロックが既に開放されているか
否かを参照できる手段を設け、この手段に基づいてスケ
ジューリングを実行できるようにし、CPUの利用効率
を向上させることができるコンピュータシステムおよび
スケジューリング方法を提供することを目的とする。
複数のスレッドあるいはプロセス間の相互排除を共有変
数を用いて実現するコンピュータシステムにおいて、オ
ペレーティングシステムのカーネル空間内に、複数のタ
スク内の複数のスレッドあるいはプロセスの処理順を所
定時間間隔で順次決定するスケジューリング手段を具備
し、前記複数のスレッドは、当該複数のスレッド毎に前
記カーネル空間内とは異なるタスク内のユーザ空間にあ
り当該タスク内のスレッドあるいはプロセス間の排他制
御に用いられる少なくとも一つのユーザ空間共有変数の
ロック待ち状態になる際のアドレスまたはロック待ち状
態ではない場合は所定の値とするステイタス変数を格納
するステイタス変数格納手段を具備し、前記スケジュー
リング手段は、前記複数のスレッド毎に対応する前記ス
テイタス変数を参照するステイタス変数ポインタを登録
し、前記ユーザ空間共有変数による実行許可判断が不要
のスレッドの場合は前記ステイタス変数ポインタを登録
しないステイタス変数ポインタ登録手段と、実行候補の
複数のスレッドあるいはプロセスの中から1つのスレッ
ドあるいはプロセスを選択する手段と、前記選択したス
レッドあるいはプロセスに対応するステイタス変数ポイ
ンタが前記ステイタス変数ポインタ登録手段に登録され
ているか否かを判別する手段と、前記選択したスレッド
あるいはプロセスに対応するステイタス変数ポインタが
登録されていた場合、当該選択したスレッドあるいはプ
ロセスがロック確保中であるか、ロック待ち状態である
かを当該ステイタス変数ポインタにより対応するステイ
タス変数を参照して判別する手段と、前記選択したスレ
ッドあるいはプロセスがロック待ち状態のときは、当該
選択したスレッドあるいはプロセスが属するタスク内の
当該選択したスレッドあるいはプロセスがロック待ちの
対象としている前記ユーザ空間共有変数を参照してその
ロック状態が既に解放されているか否かを判別する手段
とを具備し、ロックを必要としないスレッドあるいはプ
ロセス、またはロック確保中のスレッドあるいはプロセ
ス若しくはロック解除された前記ユーザ空間共有変数を
ロック待ちの対象としていたスレッドあるいはプロセス
に対してCPUが優先的に割り当てられるように前記複
数のスレッドあるいはプロセスの処理順を決定すること
を特徴とする。
行候補のスレッドあるいはプロセスの中で、ロックを必
要としないスレッドあるいはプロセス、またはロック待
ち状態に無いスレッドあるいはプロセス、つまりロック
確保中のスレッドあるいはプロセス若しくはロック解除
された実行候補のスレッドあるいはプロセスが属するタ
スク空間内のスレッドあるいはプロセス間の排他制御に
用いられるユーザ空間上の共有変数をロック待ちの対象
としていたスレッドあるいはプロセス、に対してCPU
が優先的に割り当てられるようにスケジューリングが行
われる。このため、ロック待ちによってスピンループし
ている無駄な時間が少なくなり、CPUの利用効率を向
上させることができる。
明する。
例に係わるスケジューリング方式の原理を説明する。オ
ペレーティングシステムのカーネル10内に存在するス
ケジューラ100は、排他制御下で実行処理される複数
のスレッドの処理順を決定するために、参照パス109
を介して、そのスレッドが属するタスク空間内のユーザ
空間上のロック変数106〜108を参照して次にCP
Uを割り当てる候補となった実行候補のスレッド(ここ
では、スレッド101〜105)がロック状態かロック
待ち状態かを調べ、その結果を実際にCPUをそのスレ
ッドに割り当てるか否かの判断に使う。以下、ロック変
数とは、そのスレッドが属するタスク空間内のユーザ空
間上のロック変数を指すものとする。
ド、または解除されたロック変数を待っていたスレッド
を優先的に選択し実行することが可能となる。従って、
従来のようにロック待ちのスレッドが頻繁に選択・実行
され、CPUが無駄に使用される事を避けることがで
き、システム全体として効率の良いCPU割り当てが実
現できる。図2には、スケジューラ100がロック変数
を参照するための具体的な構成の一例が示されている。
が用意されている。1つはタスク20の空間内の変数で
あり、ここでは「ステイタス変数」と呼ぶ。もう1つは
カーネル空間10内のデータであり、ここでは「ステイ
タス変数ポインタ」と呼ぶ。これらは、いずれもポイン
タ変数である。
めスレッド101,102の空間に静的に宣言してお
き、スレッド101,102がロックを取れずロック待
ち状態になる際にそのロック変数106のアドレス(L
1)を格納する。また、ロック待ちでないとき、各スレ
ッド101,102は自分のステイタス変数201,2
02に“0”という値を入れておく。なお、ここでは、
ロック変数106,109,110のアドレスは“0”
以外の値になることが保証されていると仮定する。
は、生成されたスレッド101、102に対応してそれ
ぞれ用意される。但し、ロック変数を利用した実行許可
判断が不要であるスレッドの場合は、ステイタス変数ポ
インタは登録されない。各スレッド101、102は、
あらかじめこのステイタス変数ポインタ301、302
のフィールドに、自分のステイタス変数201、202
のアドレス(A、B)をセットする。また、このための
特別なシステムコールStatus−variable
declare( )を用意しており、ステイタス変
数201、202のアドレス(A、B)を引数に指定
し、このシステムコールを発行すればカーネル空間10
内のステイタス変数ポインタ301、302にそのアド
レス(A、B)がセットされるようになっている。
のステイタス変数201,202の初期化、および、オ
ペレーティングシステムのカーネル空間10に対する登
録は、図3のフローチャートのように行われる。ここで
は、C言語を用いて記述している。スレッドの数は10
個とし、ステイタス変数は10個用意するものとして、
説明する。まず、long status[10];
[i]を“0”に初期化する(ステップS11,S1
2)。スレッド0のステイタス変数のアドレスはsta
tus[0]、スレッド1はstatus[1]、…
…、スレッド9はstatus[9]、と対応する。次
に、これらステイタス変数のアドレスをシステムコール
status−variable−declare(
)でカーネル10に通知し、それぞれのステイタス変
数ポインタにアドレスをセットする(ステップS1
3)。
レッド(スレッド0〜9)と、そのスレッドのステイタ
ス変数のアドレス(status[0]〜status
[9])を対応付けするテーブルがカーネル内に作られ
る。このテーブルは、図2のステイタス変数ポインタ3
01,302,…によって実現されるものにほかならな
い。
ロック変数106をアクセスする際の手順を図5のフロ
ーチャートで説明する。また、図6には、C言語でコー
ディングした例が示されている。但し、図6では、アド
レスL1のロック変数106はロックがかかっていない
時、値OK(=0)を示し、また、関数tas( )は
test & setを行う関数であり、戻り値がOK
の時は引数に指定したロック変数が取得できたことを示
している。
に、各スレッド101、102は、アドレスL1のロッ
ク変数106の値からそのロック変数106がロックさ
れているか否かを調べ(ステップS21)、ロックされ
てなければ、自分のステイタス変数201、202に値
“0”を入れる(ステップS22)。次いで、スレッド
101、102は、test&set命令等によってロ
ック変数106のロック確保を試みる(ステップS2
3)。
が可能であるので、ステップS24でロック確保を認識
したスレッド、例えばスレッド101は、ロック状態に
なり排他的に処理を実行する。また、ステップS24で
ロック確保出来なかったスレッド、例えばスレッド10
2は、自分のステイタス変数202にロック変数106
のアドレスL1を入れ(ステップS25)、そして、ス
テップS21に戻ってスピンループする。次に、図7の
フローチャートを参照して、スケジューラ100による
スケジューリングの際の処理手順を説明する。
ジューリング手法により、例えば待ち行列にキューイン
グされている複数のスレッドの中から予め定められた優
先度にしたがって最も優先順位の高いスレッドを候補と
して1つ選ぶ(ステップS31)。
間10内にあるそのスレッドのステイタス変数ポインタ
を参照して、そのスレッドに対応するステイタス変数ポ
インタが登録されているか否かを調べる(ステップS3
2)。もし、登録されていなければ、ロック変数を利用
した実行許可判断が不要であると認識して、そのスレッ
ドにCPUを割り当てる(ステップS38)。一方、候
補として選ばれたスレッドに対応するステイタス変数ポ
インタが登録されていれば、ロック変数を利用した実行
許可判断を行うために、ステップS33〜S37の処理
に進む。
プS31で実行候補として選んだスレッドに対応するス
テイタス変数ポインタを参照することによってそのスレ
ッドに対応するステイタス変数のアドレスを求め(この
際必要に応じて、アドレス値の正当性のチェック、論理
アドレスから物理アドレスへの変換、あるいは二次記憶
装置から主記憶へのページの転送、等を行い)、実行候
補のスレッドのステイタス変数に登録されている値を読
み取る(ステップS33)。
ば(ステップS34)、その実行候補のスレッドはロッ
ク待ちの状態でないことが分かるので、スケジューラ1
00はステップS38に進んでCPUをそのスレッドに
割り当てて実行する。
ないときは(ステップS34)、このスレッドは前回実
行時にロック待ちであったことを意味している。この場
合は、ステイタス変数の値はそのスレッドが待っている
ロック変数のアドレスなので、スケジューラ100は、
そのスレッドが属すタスク空間内のロック変数を直接参
照し(この際も必要に応じて、アドレス値の正当性のチ
ェック、論理アドレスから物理アドレスへの変換、ある
いは二次記憶装置から主記憶へのページの転送、等を行
い)、ロックが解除されているかどうかを判断する(ス
テップS35,36)。
ック変数=“0”)、スケジューラ100はステップS
38に進んでCPUをそのスレッドに割り当てて実行す
る。一方、ロックが解除されていなければ(ロック変数
=“1”)、このスレッドの実行を見送り、次の候補と
して他のスレッドを選択する(ステップS37)。この
手順を実行スレッドが決まるまで繰り返す。
てスケジューリングを行うことにより、ロック待ちのプ
ロセスを選び無駄にCPU時間を消費することを避ける
ことができる。
ューリングを行った場合のCPUの稼働状況の一例が示
されている。図8はシングルプロセッサシステムの場合
に相当し、また図9は4台のCPUから成るマルチプロ
セッサシステムの場合に相当するものである。
述したようにスレッド3がロック状態であり、スレッド
1,2,4がロック待ち状態で、さらにスレッドX,
Y,Zがロックに関係しない場合を想定している。
おいてスレッド3がロック状態である場合に、そのロッ
ク状態のスレッド3に対して優先的に次の実行期間(時
間t0 からTの期間)にCPUが割り当てられ、その期
間Tにおいてスレッド3のロックが解除されると、その
ロック解除を待っていたスレッド1にCPUが割り当て
られる。図9のマルチプロセッサシステムの場合も同様
にして、ロック状態のスレッドS3、またはロックに関
係しないスレッドY,Y,Zが優先的に実行される。
PUを割り当てることによって、CPU利用率は100
パーセントになり、無駄なスピンループを大幅に減少す
ることができる。
ケジューラ100がスケジューリングの際に、必要に応
じて実行候補のスレッドに対応するロック変数を参照
し、そのスレッドがすぐにロックを確保できるかどうか
を調べ、CPUを割り当てるか否かの判断の参考とす
る。この結果、ロック待ち状態にないスレッド、つまり
解除されたロック変数を待っていたスレッド、またはロ
ック状態のスレッド、を優先的に選んで実行できるの
で、スピンループによるCPUタイムの無駄な消費が少
なくなり、効率よい処理が実現できる。
除を共有変数を用いて実現するシステムについてのみ説
明したが、この発明によるスケジューリングは、図12
に示したような共有メモリを持ち複数のプロセス間の相
互排除を共有変数を用いて実現するシステムについても
同様に適用できる。
に、ロックされているロック変数を待っている状態のス
レッドは選択していない。しかし、マルチプロセッサシ
ステムにおいて、プロセッサ数が多く、スケジューリン
グ時にプロセッサが余っている場合や、ロックをかけて
いるスレッドがすでに実行中である(従って比較的早く
ロックが解除される見込みがある)場合には、ロック解
除されていないロック変数を待つスレッドにCPUを割
り当てるようなスケジューリング方針も有効である。こ
の様なスケジューリングも本発明を適用することにより
実現することができる。
スレッドまたはプロセスがロック待ち状態か否かに基づ
いてスケジューリングを実行できるようになり、CPU
の利用効率を向上させることができる。
方式の原理を示すブロック図。
図。
録動作を説明するフローチャート。
レッドとステイタス変数との対応関係を示すテーブルを
示す図。
明するフローチャート。
プログラム文を示す図。
するフローチャート。
グロプロセッサシステムで実行した際のCPUの稼働状
況を示す図。
チプロセッサシステムで実行した際のCPUの稼働状況
を示す図。
間を示す図。
のブロック図。
ステム内での排他制御の動作手順を説明するフローチャ
ート。
セッサシステムで実行した際のCPUの稼働状況を示す
図。
ッサシステムで実行した際のCPUの稼働状況を示す
図。
ケジューラ、101〜105…スレッド、106〜10
8,109,110…ロック変数、201,202…ス
テイタス変数、301,302…ステイタス変数ポイン
タ。
Claims (2)
- 【請求項1】 複数のスレッドあるいはプロセス間の相
互排除を共有変数を用いて実現するコンピュータシステ
ムにおいて、オペレーティングシステムのカーネル空間内に、複数の
タスク内の 複数のスレッドあるいはプロセスの処理順を
所定時間間隔で順次決定するスケジューリング手段を具
備し、前記複数のスレッドは、当該複数のスレッド毎に前記カ
ーネル空間内とは異なるタスク内のユーザ空間にあり当
該タスク内のスレッドあるいはプロセス間の排他制御に
用いられる少なくとも一つのユーザ空間共有変数のロッ
ク待ち状態になる際のアドレスまたはロック待ち状態で
はない場合は所定の値とするステイタス変数を格納する
ステイタス変数格納手段を具備し、 前記スケジューリング手段は、前記複数のスレッド毎に対応する前記ステイタス変数を
参照するステイタス変数ポインタを登録し、前記ユーザ
空間共有変数による実行許可判断が不要のスレッドの場
合は前記ステイタス変数ポインタを登録しないステイタ
ス変数ポインタ登録手段と、 実候補の複数のスレッドあるいはプロセスの中から1つ
のスレッドあるいはプロセスを選択する手段と、前記選択したスレッドあるいはプロセスに対応するステ
イタス変数ポインタが前記ステイタス変数ポインタ登録
手段に登録されているか否かを判別する手段と、 前記選択したスレッドあるいはプロセスに対応するステ
イタス変数ポインタが登録されていた場合、当該選択し
たスレッドあるいはプロセスがロック確保中であるか、
ロック待ち状態であるかを当該ステイタス変数ポインタ
により対応するステイタス変数を参照して判別する手段
と、 前記選択したスレッドあるいはプロセスがロック待ち状
態のときは、当該選択したスレッドあるいはプロセスが
属するタスク内の当該選択したスレッドあるいはプロセ
スがロック待ちの対象としている前記ユーザ空間共有変
数を参照してそのロック状態が既に解放されているか否
かを判別する手段とを具備し、ロックを必要としないスレッドあるいはプロセス、また
は ロック確保中のスレッドあるいはプロセス若しくはロ
ック解除された前記ユーザ空間共有変数をロック待ちの
対象としていたスレッドあるいはプロセスに対してCP
Uが優先的に割り当てられるように前記複数のスレッド
あるいはプロセスの処理順を決定することを特徴とする
コンピュータシステム。 - 【請求項2】 複数のスレッドあるいはプロセス間の相
互排除を共有変数を用いて実現するコンピュータシステ
ムにおいてオペレーティングシステムのカーネル空間内
で、複数のタスク内の複数のスレッドあるいはプロセス
の処理順を所定時間間隔で順次決定するスケジューリン
グ方法であって、前記複数のスレッドは、当該複数のスレッド毎に前記カ
ーネル空間内とは異なるタスク内のユーザ空間にあり当
該タスク内のスレッドあるいはプロセス間の排他制御に
用いられる少なくとも一つのユーザ空間共有変数のロッ
ク待ち状態になる際のアドレスまたはロック待ち状態で
はない場合は所定の値とするステイタス変数を格納し、 前記オペレーティングシステムのカーネル空間内では、 前記複数のスレッド毎に対応する前記ステイタス変数を
参照するステイタス変数ポインタを登録し、前記ユーザ
空間共有変数による実行許可判断が不要のスレッドの場
合は前記ステイタス変数ポインタを登録せず、 実行候補の複数のスレッドあるいはプロセスの中から1
つのスレッドあるいはプロセスを選択し、前記選択したスレッドあるいはプロセスに対応するステ
イタス変数ポインタが前記ステイタス変数ポインタ登録
手段に登録されているか否かを判別する手段と、 前記選択したスレッドあるいはプロセスに対応するステ
イタス変数ポインタが登録されていた場合、当該選択し
たスレッドあるいはプロセスがロック確保中であるか、
ロック待ち状態であるかを当該ステイタス変数ポインタ
により対応するステイタス変数を参照して判別し、 前記選択したスレッドあるいはプロセスがロック待ち状
態のときは、当該選択したスレッドあるいはプロセスが
属するタスク内の当該選択したスレッドあるい はプロセ
スがロック待ちの対象としている前記ユーザ空間共有変
数を参照してそのロック状態が既に解放されているか否
かを判別し、ロックを必要としないスレッドあるいはプロセス、また
は ロック確保中のスレッドあるいはプロセス若しくはロ
ック解除された前記ユーザ空間共有変数をロック待ちの
対象としていたスレッドあるいはプロセスに対してCP
Uが優先的に割り当てられるように前記複数のスレッド
あるいはプロセスの処理順を決定することを特徴とする
スケジューリング方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4015120A JP2866241B2 (ja) | 1992-01-30 | 1992-01-30 | コンピュータシステムおよびスケジューリング方法 |
US08/011,142 US5524247A (en) | 1992-01-30 | 1993-01-29 | System for scheduling programming units to a resource based on status variables indicating a lock or lock-wait state thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4015120A JP2866241B2 (ja) | 1992-01-30 | 1992-01-30 | コンピュータシステムおよびスケジューリング方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH05204675A JPH05204675A (ja) | 1993-08-13 |
JP2866241B2 true JP2866241B2 (ja) | 1999-03-08 |
Family
ID=11879967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP4015120A Expired - Fee Related JP2866241B2 (ja) | 1992-01-30 | 1992-01-30 | コンピュータシステムおよびスケジューリング方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5524247A (ja) |
JP (1) | JP2866241B2 (ja) |
Families Citing this family (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0784851A (ja) * | 1993-09-13 | 1995-03-31 | Toshiba Corp | 共有データ管理方法 |
US5715395A (en) * | 1994-09-12 | 1998-02-03 | International Business Machines Corporation | Method and apparatus for reducing network resource location traffic in a network |
JP3231571B2 (ja) * | 1994-12-20 | 2001-11-26 | 日本電気株式会社 | 順序付きマルチスレッド実行方法とその実行装置 |
US5822588A (en) * | 1995-06-09 | 1998-10-13 | Sun Microsystem, Inc. | System and method for checking the use of synchronization locks in a multi-threaded target program |
US5796954A (en) * | 1995-10-13 | 1998-08-18 | Apple Computer, Inc. | Method and system for maximizing the use of threads in a file server for processing network requests |
US6192388B1 (en) * | 1996-06-20 | 2001-02-20 | Avid Technology, Inc. | Detecting available computers to participate in computationally complex distributed processing problem |
US6289410B1 (en) * | 1996-07-18 | 2001-09-11 | Electronic Data Systems Corporation | Method and system for maintaining consistency of shared objects based upon instance variable locking |
US5887166A (en) * | 1996-12-16 | 1999-03-23 | International Business Machines Corporation | Method and system for constructing a program including a navigation instruction |
US6223204B1 (en) * | 1996-12-18 | 2001-04-24 | Sun Microsystems, Inc. | User level adaptive thread blocking |
US6073159A (en) * | 1996-12-31 | 2000-06-06 | Compaq Computer Corporation | Thread properties attribute vector based thread selection in multithreading processor |
US6418460B1 (en) * | 1997-02-18 | 2002-07-09 | Silicon Graphics, Inc. | System and method for finding preempted threads in a multi-threaded application |
US6026427A (en) * | 1997-11-21 | 2000-02-15 | Nishihara; Kazunori | Condition variable to synchronize high level communication between processing threads |
US6947987B2 (en) * | 1998-05-29 | 2005-09-20 | Ncr Corporation | Method and apparatus for allocating network resources and changing the allocation based on dynamic workload changes |
US6622155B1 (en) | 1998-11-24 | 2003-09-16 | Sun Microsystems, Inc. | Distributed monitor concurrency control |
US6295611B1 (en) | 1998-12-14 | 2001-09-25 | Sun Microsystems, Inc.. | Method and system for software recovery |
US6874144B1 (en) | 1999-04-05 | 2005-03-29 | International Business Machines Corporation | System, method, and program for implementing priority inheritance in an operating system |
US7483967B2 (en) * | 1999-09-01 | 2009-01-27 | Ximeta Technology, Inc. | Scalable server architecture based on asymmetric 3-way TCP |
US6493741B1 (en) | 1999-10-01 | 2002-12-10 | Compaq Information Technologies Group, L.P. | Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit |
US6810422B1 (en) | 2000-01-14 | 2004-10-26 | Lockheed Martin Tactical Defense Systems | System and method for probabilistic quality of communication service determination |
US6671795B1 (en) * | 2000-01-21 | 2003-12-30 | Intel Corporation | Method and apparatus for pausing execution in a processor or the like |
US7792923B2 (en) * | 2000-10-13 | 2010-09-07 | Zhe Khi Pak | Disk system adapted to be directly attached to network |
WO2002071218A2 (en) * | 2001-03-05 | 2002-09-12 | Koninklijke Philips Electronics N.V. | Method of and system for withdrawing budget from a blocking task |
US7783761B2 (en) * | 2001-07-16 | 2010-08-24 | Zhe Khi Pak | Scheme for dynamically connecting I/O devices through network |
US20050149682A1 (en) * | 2001-10-09 | 2005-07-07 | Han-Gyoo Kim | Virtual multiple removable media jukebox |
US7363474B2 (en) * | 2001-12-31 | 2008-04-22 | Intel Corporation | Method and apparatus for suspending execution of a thread until a specified memory access occurs |
JP3813930B2 (ja) | 2002-01-09 | 2006-08-23 | 松下電器産業株式会社 | プロセッサ及びプログラム実行方法 |
US7831974B2 (en) * | 2002-11-12 | 2010-11-09 | Intel Corporation | Method and apparatus for serialized mutual exclusion |
JP4750350B2 (ja) | 2003-03-13 | 2011-08-17 | パナソニック株式会社 | タスク切換装置、方法及びプログラム |
US7278141B2 (en) * | 2003-04-23 | 2007-10-02 | International Business Machines Corporation | System and method for adding priority change value corresponding with a lock to a thread during lock processing |
US7457880B1 (en) * | 2003-09-26 | 2008-11-25 | Ximeta Technology, Inc. | System using a single host to receive and redirect all file access commands for shared data storage device from other hosts on a network |
CA2442800A1 (en) * | 2003-09-26 | 2005-03-26 | Ibm Canada Limited - Ibm Canada Limitee | Transforming locks in software loops |
US7664836B2 (en) * | 2004-02-17 | 2010-02-16 | Zhe Khi Pak | Device and method for booting an operation system for a computer from a passive directly attached network device |
US20050193017A1 (en) * | 2004-02-19 | 2005-09-01 | Han-Gyoo Kim | Portable multimedia player/recorder that accesses data contents from and writes to networked device |
US20060069884A1 (en) * | 2004-02-27 | 2006-03-30 | Han-Gyoo Kim | Universal network to device bridge chip that enables network directly attached device |
GB2412761C (en) * | 2004-04-02 | 2011-01-05 | Nokia Corp | Improvements in or relating to an operating system for a computing device |
US7496918B1 (en) * | 2004-06-01 | 2009-02-24 | Sun Microsystems, Inc. | System and methods for deadlock detection |
US8046760B2 (en) * | 2004-07-09 | 2011-10-25 | Hewlett-Packard Development Company, L.P. | Lock contention pinpointing |
US7746900B2 (en) * | 2004-07-22 | 2010-06-29 | Zhe Khi Pak | Low-level communication layers and device employing same |
US7860943B2 (en) * | 2004-08-23 | 2010-12-28 | Zhe Khi Pak | Enhanced network direct attached storage controller |
US20060067356A1 (en) * | 2004-08-23 | 2006-03-30 | Han-Gyoo Kim | Method and apparatus for network direct attached storage |
US20060075404A1 (en) * | 2004-10-06 | 2006-04-06 | Daniela Rosu | Method and system for scheduling user-level I/O threads |
US7849257B1 (en) | 2005-01-06 | 2010-12-07 | Zhe Khi Pak | Method and apparatus for storing and retrieving data |
US20070011687A1 (en) * | 2005-07-08 | 2007-01-11 | Microsoft Corporation | Inter-process message passing |
US7823158B2 (en) * | 2005-08-18 | 2010-10-26 | International Business Machines Corporation | Adaptive scheduling and management of work processing in a target context in resource contention |
US7831960B2 (en) * | 2006-06-08 | 2010-11-09 | Oracle America, Inc. | Configuration tool with multi-level priority semantic |
US7818722B2 (en) * | 2006-06-09 | 2010-10-19 | International Business Machines Corporation | Computer implemented method and system for accurate, efficient and adaptive calling context profiling |
US20090063881A1 (en) * | 2007-08-31 | 2009-03-05 | Mips Technologies, Inc. | Low-overhead/power-saving processor synchronization mechanism, and applications thereof |
TWI462011B (zh) * | 2007-12-28 | 2014-11-21 | Accton Technology Corp | 程序之執行緒群組管理方法 |
JP4857325B2 (ja) * | 2008-10-31 | 2012-01-18 | パナソニック株式会社 | タスク切換装置、方法及びプログラム |
JP2010113574A (ja) * | 2008-11-07 | 2010-05-20 | Panasonic Corp | マルチプロセッサにおける資源の排他制御方法、排他制御システムおよびその関連技術 |
JP2010140290A (ja) * | 2008-12-12 | 2010-06-24 | Panasonic Corp | マルチプロセッサシステム及びその排他制御の調停方法 |
US9086922B2 (en) | 2009-10-26 | 2015-07-21 | Microsoft Technology Licensing, Llc | Opportunistically scheduling and adjusting time slices |
EP2850555B1 (en) * | 2012-05-16 | 2022-11-30 | Nokia Technologies Oy | Method in a processor, an apparatus and a computer program product |
JP5990139B2 (ja) * | 2013-08-01 | 2016-09-07 | 日本電信電話株式会社 | 実行制御装置及び実行制御方法 |
US10203995B2 (en) * | 2013-11-22 | 2019-02-12 | Excalibur Ip, Llc | Method or system for access to shared resource |
JP6443125B2 (ja) * | 2015-02-25 | 2018-12-26 | 富士通株式会社 | コンパイラプログラム、コンピュータプログラム及びコンパイラ装置 |
US10705875B2 (en) | 2017-08-09 | 2020-07-07 | Servicenow, Inc. | Systems and methods for recomputing services |
JP7014010B2 (ja) * | 2018-03-30 | 2022-02-01 | 日本電気株式会社 | ジョブ実行管理システム、およびジョブ実行管理方法 |
JP7360194B2 (ja) * | 2021-05-19 | 2023-10-12 | 株式会社ユニバーサルエンターテインメント | 遊技機 |
JP7345878B2 (ja) * | 2021-05-19 | 2023-09-19 | 株式会社ユニバーサルエンターテインメント | 遊技機 |
JP7345879B2 (ja) * | 2021-05-19 | 2023-09-19 | 株式会社ユニバーサルエンターテインメント | 遊技機 |
JP7270280B2 (ja) * | 2021-05-19 | 2023-05-10 | 株式会社ユニバーサルエンターテインメント | 遊技機 |
JP7270281B2 (ja) * | 2021-05-19 | 2023-05-10 | 株式会社ユニバーサルエンターテインメント | 遊技機 |
JP7345877B2 (ja) * | 2021-05-19 | 2023-09-19 | 株式会社ユニバーサルエンターテインメント | 遊技機 |
JP7345880B2 (ja) * | 2021-05-19 | 2023-09-19 | 株式会社ユニバーサルエンターテインメント | 遊技機 |
JP7270282B2 (ja) * | 2021-05-19 | 2023-05-10 | 株式会社ユニバーサルエンターテインメント | 遊技機 |
JP7345881B2 (ja) * | 2021-05-19 | 2023-09-19 | 株式会社ユニバーサルエンターテインメント | 遊技機 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5422738A (en) * | 1977-07-21 | 1979-02-20 | Nec Corp | Lock control device |
US4989133A (en) * | 1984-11-30 | 1991-01-29 | Inmos Limited | System for executing, scheduling, and selectively linking time dependent processes based upon scheduling time thereof |
JPH07120299B2 (ja) * | 1986-01-10 | 1995-12-20 | 株式会社日立製作所 | マルチプロセッサシステムの試験方法 |
US5274809A (en) * | 1988-05-26 | 1993-12-28 | Hitachi, Ltd. | Task execution control method for a multiprocessor system with enhanced post/wait procedure |
JP2650965B2 (ja) * | 1988-05-27 | 1997-09-10 | 株式会社日立製作所 | 計算機システムおよびそのタスクスケジュール方法 |
JPH02204838A (ja) * | 1989-02-03 | 1990-08-14 | Hitachi Ltd | タスク優先順位管理方式 |
JPH031244A (ja) * | 1989-05-29 | 1991-01-07 | Nec Corp | タスクディスパッチ方式 |
JPH0365732A (ja) * | 1989-08-03 | 1991-03-20 | Matsushita Electric Ind Co Ltd | 資源管理方法 |
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 |
-
1992
- 1992-01-30 JP JP4015120A patent/JP2866241B2/ja not_active Expired - Fee Related
-
1993
- 1993-01-29 US US08/011,142 patent/US5524247A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US5524247A (en) | 1996-06-04 |
JPH05204675A (ja) | 1993-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2866241B2 (ja) | コンピュータシステムおよびスケジューリング方法 | |
US10241831B2 (en) | Dynamic co-scheduling of hardware contexts for parallel runtime systems on shared machines | |
US4779194A (en) | Event allocation mechanism for a large data processing system | |
US6269391B1 (en) | Multi-processor scheduling kernel | |
US5485626A (en) | Architectural enhancements for parallel computer systems utilizing encapsulation of queuing allowing small grain processing | |
US5333319A (en) | Virtual storage data processor with enhanced dispatching priority allocation of CPU resources | |
US4796178A (en) | Special purpose processor for off-loading many operating system functions in a large data processing system | |
US6622155B1 (en) | Distributed monitor concurrency control | |
JP2829078B2 (ja) | プロセス分散方法 | |
US5452459A (en) | Method and apparatus for allocating server access in a distributed computing environment | |
US5586318A (en) | Method and system for managing ownership of a released synchronization mechanism | |
US5010482A (en) | Multi-event mechanism for queuing happened events for a large data processing system | |
KR20120042654A (ko) | 누마-어웨어 시스템 태스크 매니지먼트 방법 및 장치 | |
JP2005284749A (ja) | 並列処理コンピュータ | |
JPH1115793A (ja) | 資源の保全性を保護する方法 | |
US6662364B1 (en) | System and method for reducing synchronization overhead in multithreaded code | |
WO2012036791A1 (en) | Run-time parallelization of computer software using data associated tokens | |
Takada et al. | A novel approach to multiprogrammed multiprocessor synchronization for real-time kernels | |
EP0362903B1 (en) | A special purpose processor for off-loading many operating system functions in a large data processing system | |
Michael et al. | Relative performance of preemption-safe locking and non-blocking synchronization on multiprogrammed shared memory multiprocessors | |
US11301304B2 (en) | Method and apparatus for managing kernel services in multi-core system | |
US6701429B1 (en) | System and method of start-up in efficient way for multi-processor systems based on returned identification information read from pre-determined memory location | |
JP7346649B2 (ja) | 同期制御システムおよび同期制御方法 | |
JP2804478B2 (ja) | タスク制御方式及びオンライン・トランザクション・システム | |
Wani | Operating System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071218 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081218 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091218 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091218 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101218 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101218 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111218 Year of fee payment: 13 |
|
LAPS | Cancellation because of no payment of annual fees |