JP5465067B2 - スケジューリング装置、スケジューリング方法およびスケジューリングプログラム - Google Patents

スケジューリング装置、スケジューリング方法およびスケジューリングプログラム Download PDF

Info

Publication number
JP5465067B2
JP5465067B2 JP2010093412A JP2010093412A JP5465067B2 JP 5465067 B2 JP5465067 B2 JP 5465067B2 JP 2010093412 A JP2010093412 A JP 2010093412A JP 2010093412 A JP2010093412 A JP 2010093412A JP 5465067 B2 JP5465067 B2 JP 5465067B2
Authority
JP
Japan
Prior art keywords
time
unit
event
event record
buffer
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
JP2010093412A
Other languages
English (en)
Other versions
JP2011221962A (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2010093412A priority Critical patent/JP5465067B2/ja
Publication of JP2011221962A publication Critical patent/JP2011221962A/ja
Application granted granted Critical
Publication of JP5465067B2 publication Critical patent/JP5465067B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、例えば、タスクやイベントをスケジューリングして実行するスケジューリング装置、スケジューリング方法およびスケジューリングプログラムに関するものである。
コンピュータにより所定の時刻にタスク(所定の情報源からの情報取得など)を実行させる場合や、離散事象(イベント)のシミュレーションを行う場合、タスクやイベントとその実行時刻(生起時刻)を対応付けて管理するために、優先度付き待ち行列と呼ばれるデータ構造が用いられる。優先度付き待ち行列は、イベントを挿入する操作、及び実行時刻が最も小さいイベントを取り出す操作を効率的に実現するデータ構造であるのが望ましい。
シミュレーションにおいては、非特許文献1のCalendar Queueと呼ばれるデータ構造が用いられることが一般的である。この構造はイベントを実行時刻順に整列して保持する代わりに、実行時刻に対応する固定数のタイムスロットにイベントを振り分けて格納する。これにより、イベント数によらない挿入コストを実現している。実行時刻を所定の時間分解能で表現した場合に実行時刻が同一となるイベントは同一のタイムスロットに格納される。現在時刻と実行時刻との差が「単位時間×タイムスロット数」を超えない場合、タイムスロット内の実行時刻は全て同一となる。しかし、一般にはタイムスロット数を小さく設定し、「単位時間×タイムスロット数」を法として実行時刻とタイムスロットの割り当てを行う。すなわち、タイムスロット内には異なる実行時刻のイベントが混在し、現在時刻に対応しないイベントはスキップされる。
有限の時間分解能を設定しない方法として、浮動小数点数の実行時刻にハッシュ関数を適用し、ハッシュ値に基づいてタイムスロットを割り当てる方法が特許文献1に開示されている。この場合もタイムスロット内には異なる実行時刻のイベントが混在することになる。
特開2001−60241号公報、第9頁、図3
Calendar Queues:A Fast O(1) Priority Queue Implementation for the Simulation Event Set Problem、Communications of the ACM、第31巻、第10号 ロバート・セジウィック著、野下ほか訳、「アルゴリズムC++」、ISBN 978−4764902220
従来のスケジューリングに用いられてきた優先度付き待ち行列は、コンピュータの主記憶上に全てのイベントが格納できることを前提としており、主記憶の容量を超えるような大量のイベントを扱うことは想定されていない。
しかし、100億以上存在するWebページの内容をそれぞれに固有の周期で繰り返し収集するような場合においては、個々のWebページに対する収集イベントを主記憶上に保持するには大量の主記憶が必要となって実現コストが増大してしまう。
また、主記憶の容量が極めて限られた組み込み機器等においては、二次記憶を活用することでより多くのイベントを扱えるようにすることが求められる。
Calendar Queueを単純に二次記憶上で実現した場合、タイムスロット数が少ないと同一タイムスロット内に実行時刻が異なるイベントが多数混在し、タイムスロットの内容を読み出す際に不要なデータ転送が発生して処理時間が増大してしまう。
一方、実行時刻の混在が起こらない程度にタイムスロット数を増加させると、タイムスロットごとに割り当て可能な書き込みバッファの容量が減少し、二次記憶に対する小規模な書き込みが多数発生して実効的な転送速度が低下してしまう。
この課題は、タイムスロットの時間分解能を小さくしてスケジューリングの精度を上げようとすると特に顕著となる。単位時間の減少に伴い、実行時刻の混在を避けるために必要なタイムスロット数(=最大スケジューリング期間/単位時間)が増加するためである。
本発明は、例えば、タイムスロット数を削減せずに書き込みバッファ数のみを削減し、少ないハードウェアリソースで大量のイベントを効率的に処理できるようにすることを目的とする。
本発明のスケジューリング装置は、
処理の開始予定時刻が定められたイベントレコードを入力するイベント入力部と、
前記イベント入力部がイベントレコードを入力した入力時刻から前記イベントレコードの開始予定時刻までの時間を開始待ち時間として算出し、算出した開始待ち時間が長いほど長い時間を単位時間として特定する単位時間特定部と、
前記単位時間特定部により特定された単位時間に基づいて前記イベントレコードの開始予定時刻を前記単位時間を単位とする時刻に変換し、変換して得られた時刻を開始判定時刻として特定する開始判定時刻特定部と、
前記開始判定時刻特定部により特定された開始判定時刻に基づいて前記開始判定時刻に対応付けた記憶領域を所定の記憶装置に確保し、確保した記憶領域に前記イベントレコードを記憶するスケジューリング部と、
前記開始判定時刻に前記開始判定時刻に対応する記憶領域に記憶されている前記イベントレコードを参照し、前記イベントレコードを参照した参照時刻と前記イベントレコードの開始予定時刻とに基づいて前記イベントレコードの処理を開始するか否かを判定し、前記イベントレコードの処理を開始すると判定した場合に前記イベントレコードの処理を開始し、前記イベントレコードの処理を開始しないと判定した場合に前記イベントレコードを前記イベント入力部に入力するイベント処理部とを備える。
本発明によれば、例えば、タイムスロット数を削減せずに書き込みバッファ数(記憶領域数)のみを削減し、少ないハードウェアリソースで大量のイベントを効率的に処理できるようにすることを目的とする。
実施の形態1におけるスケジューリングシステム100の機能構成図。 実施の形態1におけるイベントレコード200のフォーマットを示す図。 実施の形態1におけるバッファ記憶部130とバケット記憶部140との概要図。 実施の形態1におけるバッファ群300のデータ構造を示す図。 実施の形態1におけるバッファヘッダ329のフォーマットを示す図。 実施の形態1における実行部110のイベント実行処理を示すフローチャート。 実施の形態1におけるスケジュール部120のイベントスケジュール処理を示すフローチャート。 実施の形態1における格納先バッファ決定処理(S220)を示すフローチャート。 実施の形態1における実行間隔xと第2の単位時間vとの関係を表したグラフの一例を示す図。 実施の形態1におけるスケジューリングシステム100のハードウェア資源の一例を示す図。 実施の形態2におけるスケジューリングシステム100の機能構成図。 実施の形態2におけるバッファ群300のデータ構造を示す図。 実施の形態2におけるバッファヘッダ370のフォーマットを示す図。 実施の形態2におけるスケジュール部120のイベントスケジュール処理を示すフローチャート。 実施の形態2におけるバッファヘッダ数制限処理(S280)を示すフローチャート。
実施の形態1.
イベントレコードの入力時刻からイベントレコードの開始予定時刻までの開始待ち時間(後述する実行間隔x)に基づいてイベントレコードをスケジューリングする形態について説明する。
図1は、実施の形態1におけるスケジューリングシステム100の機能構成図である。
実施の形態1におけるスケジューリングシステム100の機能構成について、図1に基づいて以下に説明する。
スケジューリングシステム100(スケジューリング装置の一例)は、実行部110、スケジュール部120、バッファ記憶部130およびバケット記憶部140を備える。
スケジュール部120は、イベント入力部121、格納先バッファ決定部122およびイベント格納部123を備える。
イベント入力部121は、処理の開始予定時刻が定められたイベントレコード200を入力する。
後述する「実行時刻210」は「開始予定時刻」の一例である。
格納先バッファ決定部122(単位時間特定部の一例)は、イベント入力部121がイベントレコード200を入力した入力時刻からイベントレコード200の開始予定時刻までの時間を開始待ち時間として算出する。格納先バッファ決定部122は、算出した開始待ち時間が長いほど長い時間を単位時間として特定する。
格納先バッファ決定部122(開始判定時刻特定部の一例)は、特定した単位時間に基づいてイベントレコード200の開始予定時刻を前記単位時間を単位とする時刻に変換し、変換して得られた時刻を開始判定時刻として特定する。
後述する「実行間隔x」「第2の単位時間v」「開始時刻」は、それぞれ上記した「開始待ち時間」「単位時間」「開始判定時刻」の一例である。
イベント格納部123(スケジューリング部の一例)は、格納先バッファ決定部122により特定された開始判定時刻に基づいて、開始判定時刻に対応付けた記憶領域(バッファ)をバッファ記憶部130に確保する。イベント格納部123は、確保した記憶領域にイベントレコード200を記憶する。
例えば、イベント格納部123は、イベント入力部121が入力したイベントレコード200を入力イベントとして記憶する記憶領域をバッファ記憶部130に確保できる場合、入力イベントの開始予定時刻に対応付けた記憶領域をバッファ記憶部130に確保する。イベント格納部123は確保した記憶領域に入力イベントを記憶する。入力イベントを記憶する記憶領域をバッファ記憶部130に確保できない場合、イベント格納部123は、バッファ記憶部130に確保されている記憶領域のうち少なくともいずれかの記憶領域を解放領域として特定する。イベント格納部123は、特定した解放領域に記憶されているイベントレコード200を解放領域の開始判定時刻に対応付けてバケット記憶部140に記憶し、解放領域を入力イベントの開始予定時刻に対応付けて確保し、確保した解放領域に入力イベントを記憶する。
例えば、イベント格納部123は、入力イベントを記憶する記憶領域をバッファ記憶部130に確保できない場合、バッファ記憶部130に確保されている記憶領域のうち所定の領域サイズ(ページ数)より大きい領域サイズを有する記憶領域を解放領域として特定する。
または、イベント格納部123は、入力イベントを記憶する記憶領域をバッファ記憶部130に確保できない場合、バッファ記憶部130に確保されている記憶領域のうち所定の領域サイズより大きい領域サイズを有する記憶領域であって入力イベントの入力時刻から所定時間後の時刻以降の開始判定時刻に対応する記憶領域を解放領域として特定する。
または、イベント格納部123は、入力イベントを記憶する記憶領域をバッファ記憶部130に確保できない場合、バッファ記憶部130に確保されている記憶領域のうち入力イベントの入力時刻から所定時間後の時刻以降の開始判定時刻に対応する記憶領域を解放領域として特定する。
実行部110(イベント処理部の一例)は、開始判定時刻に開始判定時刻に対応する記憶領域に記憶されているイベントレコードを参照する。
実行部110は、イベントレコード200を参照した参照時刻とイベントレコード200の開始予定時刻とに基づいてイベントレコード200の処理を開始するか否かを判定する。
実行部110は、イベントレコード200の処理を開始すると判定した場合にイベントレコード200の処理を開始し、イベントレコード200の処理を開始しないと判定した場合にイベントレコード200をイベント入力部121に入力する。
例えば、実行部110は、特定の開始判定時刻にバッファ記憶部130に記憶されているイベントレコード200のうち特定の開始判定時刻に対応する記憶領域に記憶されているイベントレコード200を参照する。さらに、実行部110は、バケット記憶部140に記憶されているイベントレコード200のうち特定の開始判定時刻に対応する記憶領域に記憶されているイベントレコード200を参照する。
例えば、実行部110は、イベントレコード200の開始予定時刻を含んだ開始許容時間帯であって所定の時間長(例えば、後述する時刻許容誤差220)を有する開始許容時間帯にイベントレコード200の参照時刻が含まれる場合にイベントレコード200の処理を開始する。開始許容時間帯にイベントレコード200の参照時刻が含まれない場合、実行部110はイベントレコード200をイベント入力部121に入力する。
または、実行部110は、イベントレコード200を参照した参照時刻とイベントレコード200の開始予定時刻とに関わらず開始判定時刻にイベントレコード200の処理を開始する。
バッファ記憶部130(第1の記憶装置の一例)は、イベントレコード200の開始判定時刻に対応付けた記憶領域(バッファ)を確保し、確保した記憶領域にイベントレコード200を記憶する。
バケット記憶部140(第2の記憶装置の一例)は、バッファ記憶部130に確保された特定の記憶領域に記憶されているイベントレコード200をイベントレコード200の開始判定時刻に対応する記憶領域(バケット)に記憶する。
図2は、実施の形態1におけるイベントレコード200のフォーマットを示す図である。
実施の形態1におけるイベントレコード200について、図2に基づいて説明する。
イベントレコード200には、実行時刻210、時刻許容誤差220および実行内容230が予め設定される。
実行時刻210は、処理を開始する予定時刻を示す。
時刻許容誤差220は、実行時刻210に対する許容時間を示す。
実行内容230は、処理の実行に必要な情報を示す。例えば、実行内容230は、起動するプログラムの名称とプログラムの引数との組み合わせや、呼び出すサブルーチンの名称とサブルーチンのパラメータとの組み合わせを示す。
イベントレコード200に対する処理は、実行時刻210を基準時刻にして時刻許容誤差220の期間内に開始する必要がある。つまり、イベントレコード200の処理が開始される処理開始時刻Tは実行時刻Tと時刻許容誤差Tαとを用いて「T−Tα≦T≦T+Tα」で表される。
例えば、実行時刻210が「2010年1月28日16時35分30秒」であり、時刻許容誤差220が「1時間」である場合、イベントレコード200の処理は「2010年1月28日15時35分30秒」から「2010年1月28日17時35分30秒」までの間に開始される。
以下、イベントレコード200の処理を開始できる期間を「処理可能期間」という。
図3は、実施の形態1におけるバッファ記憶部130とバケット記憶部140との概要図である。
実施の形態1におけるバッファ記憶部130とバケット記憶部140との概要について、図3に基づいて以下に説明する。
バッファ記憶部130はバケット記憶部140に比べて記憶容量が小さいが、データに対するアクセスが速く、データアクセスに要する遅延時間が小さい。
例えば、バッファ記憶部130をランダムアクセスメモリ(RAM)で、バケット記憶部140を磁気ディスク装置で実装する。
バッファ記憶部130とバケット記憶部140には、処理前のイベントレコード200が記憶される。
バッファ記憶部130には、複数のバッファBF(バッファ群300)が設けられる。
複数のバッファBFはそれぞれに異なる開始時刻(t,t+u,・・・)に対応付けられている。
イベントレコード200は、バッファBFに記憶されるときに実行時刻210までの時間の長さ(以下、「実行間隔」という)に応じて第2の単位時間を決められ、実行時刻210が第2の単位時間で丸められ、丸められた実行時刻210に対応するバッファBFに記憶される。
例えば、実行時刻210が「2010年1月28日16時35分30秒」であり、単位時間が「30分」である場合、イベントレコード200は「2010年1月28日16時30分00秒」に対応するバッファBFに記憶される。
第2の単位時間は、実行間隔が長いほど大きい単位の時間になり、実行間隔が短いほど小さい単位の時間になる。例えば、実行間隔が「10分」であれば第2の単位時間を「1分」とし、実行間隔が「1時間」であれば第2の単位時間を「4分」とし、実行間隔が「1日」であれば第2の単位時間を「1時間」とする。
第2の単位時間は、所定の第1の単位時間(例えば「1分」)を最小の単位として定められる。つまり、第2の単位時間は第1の単位時間の整数倍の時間である。
第1の単位時間を「u」、イベントレコード200をスケジュールする最長の期間を「最大スケジュール期間D」とすると、現在時刻TにおいてバッファBFの開始時刻tBFは「T−u<tBF<T+D」の範囲内の時刻になる。
バッファBFはイベントレコード200が記憶される場合にのみ確保される。
例えば、図3では、バッファBFt+4u、BFt+6u、BFt+8u〜BFt+10uは確保されていない。
バケット記憶部140には、バッファBFの開始時刻tBFになり得る全ての開始時刻に対応付けて複数のバケットBT(バケット群)が設けられる。
例えば、図3では、最も早い開始時刻tから第1の単位時間u毎にバケットBTが設けられている。
例えば、開始時刻をファイル名に含んだファイルがバケットBTとして生成される。
空き容量不足によりバッファ記憶部130にイベントレコード200を記憶できない場合、バッファ記憶部130の少なくともいずれかのバッファBFが選択される。選択されたバッファBFに記憶されているイベントレコード200はバッファBFと同じ開始時刻に対応するバケットBTに記憶される。そして、バッファBFが解放され、バッファ記憶部130の空き容量が増加する。
例えば、図3においてバッファBFt+11uが選択された場合、バッファBFt+11uに記憶されている2つのイベントレコード200がバケットBTt+11uに記憶されている4つのイベントレコード200の後ろに記憶され、バッファBFt+11uが解放される。
バッファBFに記憶されたイベントレコード200はバッファBFの開始時刻に読み出され、読み出された時刻(開始時刻)がイベントレコード200を処理できる処理可能期間内の時刻であればイベントレコード200は処理される。
同様に、バケットBTに記憶されたイベントレコード200はバケットBTの開始時刻に読み出され処理可能期間内の時刻であれば処理される。
読み出された時刻が処理可能期間内の時刻でない場合、バッファBFまたはバケットBTから読みだされたイベントレコード200は再スケジュールされて特定のバッファBFに記憶される。
図4は、実施の形態1におけるバッファ群300のデータ構造を示す図である。
実施の形態1におけるバッファ群300のデータ構造について、図4に基づいて以下に説明する。
バッファ群300は、開始指標310、バッファヘッダ配列320、ポインタ配列330およびバッファ399を有する。
バッファヘッダ配列320はバッファヘッダ329を要素とする配列であり、バッファヘッダ329は開始時刻321に対応付けられている。バッファヘッダ配列320の要素数Nはバッファヘッダ329が取り得る開始時刻の数に等しく、最大スケジュール期間Dと第1の単位時間uとを用いて「[D/u]+1」で与えられる。[X]はX以下の最大の整数を表す。
開始時刻321に対応するバッファ399が確保された場合、バッファヘッダ329にはポインタ配列アドレス325が設定される。ポインタ配列アドレス325はポインタ配列330の先頭アドレスを示す。開始時刻321に対応するバッファ399が確保されていない場合、バッファヘッダ329にポインタ配列アドレス325は設定されない。
ポインタ配列330は割り当てられたページの先頭アドレスを要素とする配列であり、先頭の要素から順に使用される。割り当てられたページにはイベントレコード200が記憶される。ページは固定長の記憶領域である。例えば、最初に割り当てられたページの先頭アドレスがポインタ配列330の0番目の要素に設定される。ページに空き容量が無くなった場合、新たにページが割り当てられ、新たに割り当てられたページの先頭アドレスがポインタ配列330の1番目に要素に設定される。
以下、空き容量が無くなったページを「充填済みページ340」といい、空き容量が残っているページを「未充填ページ350」という。また、割り当てられたページ(充填済みページ340、未充填ページ350)を「バッファ399」という。図中の充填済みページ340および未充填ページ350は開始時刻tに対応するバッファ399である。
バッファ399を構成する各ページは論理的に連続した領域を表し、イベントレコード200は複数ページに跨って記憶される場合もある(例えば、図中の「イベントレコードD」)。
開始指標310は、最も早い開始時刻321に対応するバッファヘッダ329の要素番号(配列の添え字)を示す。
図4では、開始指標310は開始時刻tに対応するバッファヘッダ329の要素番号「2」を示す。要素番号「2」のバッファヘッダ329に関連付けられたバッファ399が開始時刻tに処理され又は再スケジュールされた場合、バッファ399およびポインタ配列330は解放され、開始指標310には次の要素番号「3」が設定される。要素番号「2」のバッファヘッダ329は新たに開始時刻「t+N・u」に対応付けられる。「N」はバッファヘッダ配列320の要素数であり、「u」は第1の単位時間である。
図5は、実施の形態1におけるバッファヘッダ329のフォーマットを示す図である。
実施の形態1におけるバッファヘッダ329について、図5および図4に基づいて以下に説明する。
バッファヘッダ329には、開始時刻321、最大ページ数322、使用ページ数323、空き容量324およびポインタ配列アドレス325が設定される。
ポインタ配列アドレス325はポインタ配列330の先頭アドレスを示す。バッファ399が割り当てられていない場合、ポインタ配列アドレス325は無効アドレス(例えば「0」)を示す。
最大ページ数322はポインタ配列330の要素数、つまり、割り当てることができるページ数を示す。
使用ページ数323はポインタ配列330の要素のうち使用されている要素の数、つまり、割り当てられているページ数を示す。
空き容量324はポインタ配列330に関連付けられている未充填ページ350の空き容量を示す。
図6は、実施の形態1における実行部110のイベント実行処理を示すフローチャートである。
実施の形態1における実行部110のイベント実行処理について、図6に基づいて以下に説明する。
まず、イベント実行処理の概要について説明する。
実行部110は、バッファ群300およびバケット群に対応する次の開始時刻tを特定し(S110)、開始時刻tまで待機する(S111)。
実行部110は、開始時刻tに対応するバッファ(t)に未選択のイベントレコード200が残っているか否かを判定する(S120)。
バッファ(t)に未選択のイベントレコード200が残っている場合(S120「YES」)、実行部110は、バッファ(t)から未選択のイベントレコード200を1つ選択し(S121)、選択したイベントレコード200を処理可能な時刻であるか否かを判定する(S122)。
選択したイベントレコード200を処理可能な時刻である場合(S122「YES」)、実行部110は、選択したイベントレコード200の処理を実行する(S123)。
選択したイベントレコード200を処理可能な時刻でない場合(S122「NO」)、実行部110は、選択したイベントレコード200をスケジュール部120に入力する(S124)。
バッファ(t)に未選択のイベントレコード200が残っていない場合(S120「NO」)、実行部110は、バッファ(t)を解放する(S125)。
その後、実行部110は、開始時刻tに対応するバケット(t)をバッファ(t)と同様に処理する(S130〜S135)。
次に、イベント実行処理の詳細について説明する。
S110において、実行部110は、バッファ記憶部130の開始指標310を参照し、開始指標310に指定されているバッファヘッダ329を参照し、バッファヘッダ329に設定されている開始時刻tを特定する。
S110の後、S111に進む。
S111において、実行部110はS110で特定した開始時刻tまで待機する。
S111の後、S120に進む。
S120において、実行部110は、開始時刻tのバッファヘッダ329に設定されているポインタ配列アドレス325を参照し、ポインタ配列アドレス325で特定されるポインタ配列330を参照する。
実行部110は、ポインタ配列330に設定されているアドレスで特定されるページを参照し、選択していないイベントレコード200がページ内に残っているか否かを判定する。
以下、開始時刻tに対応するバッファを「バッファ(t)」といい、選択していないイベントレコード200を「未選択イベント」という。
バッファ(t)内に未選択イベントが残っている場合(YES)、S121に進む。
バッファ(t)内に未選択イベントが残っていない場合(NO)、S125に進む。
S121において、実行部110は、バッファ(t)から未選択イベントを一つ選択する。
以下、選択した未選択イベントを「選択イベント」という。
S121の後、S122に進む。
S122において、実行部110は、選択イベントの実行時刻210と時刻許容誤差220に基づいて、選択イベントを処理できる時刻であるか否かを判定する。
現在時刻Tが実行時刻Tと時刻許容誤差Tαとに対して「T−Tα≦T≦T+Tα」の関係を満たせば、現在時刻Tは選択イベントを処理できる時刻である。
選択イベントを処理できる時刻である場合(YES)、S123に進む。
選択イベントを処理できない時刻である場合(NO)、S124に進む。
S123において、実行部110は、選択イベントの実行内容230に指定された処理を実行する。
S123の後、S120に戻る。
S124において、実行部110は、選択イベントをスケジュールし直すため選択イベントをスケジュール部120に入力する。
S124の後、S120に戻る。
S125において、実行部110は、バッファ(t)内の全てのイベントレコード200に対してS121〜S124を処理したためバッファ(t)を解放する。
バッファ(t)のページとバッファ(t)のポインタ配列330とをバッファ記憶部130に返却し、開始時刻tに対応するバッファヘッダ329を初期化し、開始指標310を更新することにより、バッファ(t)を解放することができる。
バッファ(t)を解放することによりバッファ(t)のページが空きページになり、バッファ記憶部130に空きページが増える。空きページは任意のバッファに割り当てられる。
実行部110は、開始時刻tに対応するバッファヘッダ329を以下のようにして初期化する。以下、開始時刻tに対応するバッファヘッダ329を「バッファヘッダ(t)」という。
実行部110は、バッファヘッダ配列320内のバッファヘッダ329それぞれに対応する開始時刻のうち最も遅い開始時刻を最終開始時刻Eとして特定し、最終開始時刻Eに第1の単位時間uを加えた時刻をバッファヘッダ(t)の開始時刻321に設定する。最終開始時刻Eはバッファヘッダ配列320の要素数Nと第1の単位時間uとを用いて「E=t+((N−1)×u)」で表され、バッファヘッダ(t)の開始時刻321には「t+(N×u)」が設定される。
実行部110は、バッファヘッダ(t)の最大ページ数322、使用ページ数323および空き容量324に「0」を設定する。
実行部110は、バッファヘッダ(t)のポインタ配列アドレス325に無効アドレス(例えば「0」)を設定する。
実行部110は、開始指標310に「1」を加えて開始指標310を更新する。但し、開始指標310に「1」を加えた値が開始指標310の最大数「N−1」を超える場合、実行部110は開始指標310に「0」を設定する。「N」はバッファヘッダ配列320の要素数である。
S125の後、S130に進む。
S130〜135において、実行部110は、バッファ(t)に対する処理(S120〜S125)と同様に、バケット(t)を処理する。バケット(t)は開始時刻tに対応するバケットを示す。
つまり、バケット(t)に未選択イベントが残っている場合(S130「YES」)、未選択イベントを選択し(S131)、選択イベントを処理可能な時刻であるか否かを判定する(S132)。
選択イベントを処理可能な時刻であれば選択イベントを実行し(S133)、選択イベントを処理可能な時刻でなければ選択イベントをスケジュール部120に入力する(S134)。
バケット(t)から未選択イベントが無くなった場合(S130「NO」)、バケット(t)を解放する(例えば、ファイルを削除する)(S135)。
実行部110は、バケット(t)を解放した後(S135)、S110に戻り次の開始時刻に対応するバッファおよびバケットを処理する。
図7は、実施の形態1におけるスケジュール部120のイベントスケジュール処理を示すフローチャートである。
実施の形態1におけるスケジュール部120のイベントスケジュール処理について、図7に基づいて以下に説明する。
まず、イベントスケジュール処理の概要について説明する。
イベント入力部121は外部または実行部110からイベントレコード200を入力する(S210)。
格納先バッファ決定部122はイベントレコード200の実行時刻および現在時刻に基づいてイベントレコード200の格納先バッファを決定する(S220)。
イベント格納部123は格納先バッファにイベントレコード200を記憶する空き容量が有るか否かを判定する(S230)。
格納先バッファに空き容量が有る場合(S230「YES」)、イベント格納部123はイベントレコード200を格納先バッファに記憶する(S270)。
格納先バッファに空き容量が無い場合(S230「NO」)、イベント格納部123はイベントレコード200を記憶する空きページがバッファ記憶部130に有るか否かを判定する(S240)。
バッファ記憶部130に空きページが有る場合(S240「YES」)、イベント格納部123は格納先バッファに空きページを割り当て(S260)、イベントレコード200を格納先バッファに記憶する(S270)。
バッファ記憶部130に空きページが無い場合(S240「NO」)、イベント格納部123は時刻閾値とページ閾値とを初期設定し(S250)、開始時刻が時刻閾値以降で且つ使用ページ数がページ閾値以上であるバッファを検索する(S251)。
該当バッファが無い場合(S252「NO」)、イベント格納部123はページ閾値および時刻閾値を変更し(S256)、変更後のページ閾値および時刻閾値に対応する該当バッファを検索する(S251)。
該当バッファが有る場合(S252「YES」)、イベント格納部123は該当バッファ内のイベントレコード200をバケット記憶部140に移動し(S253)、該当バッファ内の使用ページを解放し(S254)、バッファ記憶部130に空きページを確保できたか否かを判定する(S255)。
バッファ記憶部130に空きページを確保できた場合(S255「YES」)、イベント格納部123は格納先バッファに空きページを割り当て(S260)、イベントレコード200を格納先バッファに記憶する(S270)。
まだ、バッファ記憶部130に空きページを確保できない場合(S255「NO」)、イベント格納部123はページ閾値および時刻閾値を変更し(S256)、変更後のページ閾値および時刻閾値に対応する該当バッファを検索する(S251)。
次に、イベントスケジュール処理の詳細について説明する。
S210において、イベント入力部121は、実行部110が再スケジュールのために出力したイベントレコード200を入力する。
また、イベント入力部121は、新たに発生したイベントレコード200を入力する。例えば、イベント入力部121は、ユーザが入力装置(キーボード、マウスなど)を用いて指定したイベントレコード200を入力する。また例えば、特定の端末装置からネットワークを介して送信されたイベントレコード200をスケジューリングシステム100の通信装置が受信し、受信されたイベントレコード200を入力する。
以下、入力したイベントレコード200を「入力イベント」という。
S210の後、S220に進む。
S220において、格納先バッファ決定部122は、入力イベントを記憶するバッファを決定する。
以下、決定するバッファを「格納先バッファ」という。
格納先バッファの決定方法については後述する。
S220の後、S230に進む。
S230において、イベント格納部123は、格納先バッファに入力イベントを記憶する空き容量が有るか否かを判定する。格納先バッファのバッファヘッダ329に設定されている空き容量324が入力イベントのレコード長以上であれば、格納先バッファに入力イベントを記憶する空き容量が有る。また、格納先バッファにポインタ配列330が割り当てられていない場合(バッファヘッダ329のポインタ配列アドレス325に無効アドレスが設定されている場合)、格納先バッファに入力イベントを記憶する空き容量が無い。
格納先バッファに入力イベントを記憶する空き容量が有る場合(YES)、S270に進む。
格納先バッファに入力イベントを記憶する空き容量が無い場合(NO)、S240に進む。
S240において、イベント格納部123は、入力イベントを記憶する空きページがバッファ記憶部130に有るか否かを判定する。入力イベントのレコード長から格納先バッファの空き容量324を差し引いたサイズ分の空きページがバッファ記憶部130に有れば、入力イベントを記憶する空きページがバッファ記憶部130に有る。
入力イベントを記憶する空きページがバッファ記憶部130に有る場合(YES)、S260に進む。
入力イベントを記憶する空きページがバッファ記憶部130に無い場合(NO)、S250に進む。
S250において、イベント格納部123は、解放するバッファを特定するための時刻閾値とページ閾値とを初期設定する。
時刻閾値は近いうちにイベント実行処理(図6参照)されるバッファを除外するための閾値であり、ページ閾値は使用ページ数が少ないバッファを除外するための閾値である。
例えば、現在時刻Tに「n×u」を加えた値を時刻閾値の初期値にする。「n」は正の整数であり、「u」は第1の単位時間である。また、バッファヘッダ329に設定される最大ページ数322の初期値をページ閾値の初期値にする。
S250の後、S251に進む。
S251において、イベント格納部123は、バッファヘッダ329に時刻閾値以降の開始時刻321とページ閾値以上の使用ページ数323が設定されているバッファをバッファ記憶部130内で検索する。
例えば、イベント格納部123は、開始指標310によって特定されるバッファヘッダ329から開始時刻321の昇順または降順にバッファヘッダ配列320を検査し、条件に合うバッファを検索する。
以下、条件に合うバッファを「該当バッファ」という。
S251の後、S252に進む。
S252において、該当バッファが有った場合(YES)、S253に進む。
S252において、該当バッファが無かった場合(NO)、S256に進む。
S253において、イベント格納部123はバケット記憶部140内のバケットのうち該当バッファと同じ開始時刻に対応するバケットを特定する。以下、特定したバケットを「対応バケット」という。
イベント格納部123は、該当バッファのページに記憶されているイベントレコード200を対応バケットの最後に追加して記憶する。例えば、イベント格納部123は充填済みページ340に記憶されている複数のイベントレコード200をページ単位で対応バケットに記憶する。また、イベント格納部123は未充填ページ350に記憶されている1つ又は複数のイベントレコード200をレコード単位で対応バケットに記憶する。
イベント格納部123は、全ての該当バッファについて上記の処理を行う。
S253の後、S254に進む。
S254において、イベント格納部123は、該当バッファを解放するために該当バッファのページと該当バッファのポインタ配列330とをバッファ記憶部130に返却し、該当バッファのバッファヘッダ329を初期化する。イベント格納部123は、最大ページ数322と使用ページ数323と空き容量324とに「0」を設定し、ポインタ配列アドレス325に無効アドレス(例えば「0」)を設定して該当バッファのバッファヘッダ329を初期化する。
イベント格納部123は、全ての該当バッファについて上記の処理を行う。
該当バッファを解放することにより、割り当て可能な空きページが増える。
S254の後、S255に進む。
S255において、イベント格納部123は、入力イベントを記憶する空きページがバッファ記憶部130に有るか否かをS240と同じく判定する。
入力イベントを記憶する空きページがバッファ記憶部130に有る場合(YES)、S260に進む。
入力イベントを記憶する空きページがバッファ記憶部130に無い場合(NO)、S256に進む。
S256において、イベント格納部123は、ページ閾値を小さくし、また時刻閾値を小さくする。ページ閾値と時刻閾値とのいずれかのみを変更しても構わない。
例えば、ページ閾値が「16」である場合にイベント格納部123は4分の1の値「4(=16/4)」をページ閾値に新たに設定する。
また例えば、イベント格納部123はページ閾値が「0」である場合、全てのバッファを解放対象にするために現在時刻を時刻閾値に設定する。
S256の後、S251に戻る。
S260において、イベント格納部123は、入力イベントを記憶するための空きページを格納先バッファに以下のように割り当てる。
イベント格納部123は、格納先バッファにポインタ配列330が割り当てられていない場合(バッファヘッダ329のポインタ配列アドレス325が無効アドレスである場合)、格納先バッファにポインタ配列330を割り当てる。イベント格納部123は、割り当てたポインタ配列330のアドレスをバッファヘッダ329のポインタ配列アドレス325に設定する。
イベント格納部123は、格納先バッファに空きページを割り当て、割り当てた空きページのアドレスをポインタ配列330内の未使用の要素に設定する。ポインタ配列330内に未使用の要素が足りず空きページのアドレスを設定できない場合、イベント格納部123は最大ページ数322が大きいポインタ配列330を格納先バッファに新たに割り当てる。イベント格納部123は、元のポインタ配列330に設定されているアドレスを新たなポインタ配列330にコピーし、元のポインタ配列330をバッファ記憶部130に返却する。イベント格納部123は、バッファヘッダ329の最大ページ数322に新たなポインタ配列330の要素数を設定し、ポインタ配列アドレス325に新たなポインタ配列330のアドレスを設定する。ポインタ配列330内に未使用の要素が足りない場合とは、「最大ページ数322−使用ページ数323」が割り当てる空きページ数より小さい場合である。
イベント格納部123は、割り当てた空きページのページ数をバッファヘッダ329の使用ページ数323に加算する。
S260の後、S270に進む。
S270において、イベント格納部123は、入力イベントを格納先バッファの未充填ページ350に記憶し、バッファヘッダ329の空き容量324を更新する。
S270により、イベントスケジュール処理は終了する。
図8は、実施の形態1における格納先バッファ決定処理(S220)を示すフローチャートである。
実施の形態1における格納先バッファ決定処理(S220)(図7参照)について、図8に基づいて以下に説明する。
S221において、格納先バッファ決定部122は、現在時刻から入力レコードの実行時刻までの時間を算出する。
以下、算出する時間を「実行間隔」という。
S221の後、S222に進む。
S222において、格納先バッファ決定部122は、実行間隔に基づいて第2の単位時間を特定する。
第2の単位時間は実行間隔が短いほど短く、実行間隔が長いほど長い。
例えば、格納先バッファ決定部122は、以下の単調増加関数式により第2の単位時間vを算出する。「u」は第1の単位時間、「x」は実行間隔、「k」は第2の単位時間vと実行間隔xとのおおよその比を定める値である。「Max(a,b)」はaとbとのうち大きい値を示す。「exp(X)」はXの指数関数であり、「log(X)」はXの自然対数である。「[X]」はX以下の最大のを示す。
v(x)=Max(u,[k・exp([log(x)])/u]・u)
図9は、実施の形態1における実行間隔xと第2の単位時間vとの関係を表したグラフの一例を示す図である。
上記の式において「k=1/12」、「u=60[秒]」とした場合、実行間隔xと第2の単位時間vとは図9に示すような関係になる。
実行間隔xが「約50分(3000秒)」までは第2の単位時間は第1の単位時間u(=60秒)と同じであるが、実行間隔が「1時間」「1日」「1年」と長くなるにつれて第2の単位時間は「4分」「1時間23分」「23.3日」と長くなる。
但し、格納先バッファ決定部122は、上記以外の式や実行間隔と第2の単位時間とを対応付けた対応表などに基づいて第2の単位時間を特定しても構わない。
図8に戻り、格納先バッファ決定処理(S220)の説明を続ける。
S222の後、S223に進む。
S223において、格納先バッファ決定部122は、入力イベントの実行時刻210を第2の単位時間を単位とする時刻に変換し、変換して得られた時刻を格納先バッファの開始時刻として特定する。
例えば、入力イベントの実行時刻210が「2010年1月28日16時35分30秒」であり、第2の単位時間が「1分」である場合、実行時刻210の「1分」未満の時刻「30秒」を切り捨てて「2010年1月28日16時35分00秒」を格納先バッファの開始時刻とする。
また、第2の単位時間が「4分」である場合、実行時刻210の「4分」未満の時刻「3分30秒」を切り捨てて「2010年1月28日16時32分00秒」を格納先バッファの開始時刻とする。
また、第2の単位時間が「1時間」であれば「2010年1月28日16時00分00秒」、第2の単位時間が「1日」であれば「2010年1月28日00時00分00秒」、第2の単位時間が「1月」であれば「2010年1月1日00時00分00秒」を格納先バッファの開始時刻とする。
S223により、格納先バッファ決定処理(S220)は終了する。
図10は、実施の形態1におけるスケジューリングシステム100のハードウェア資源の一例を示す図である。
図10において、スケジューリングシステム100は、CPU911(Central・Processing・Unit)(マイクロプロセッサ、マイクロコンピュータともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、通信ボード915、表示装置901、キーボード902、マウス903、ドライブ装置904、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。ドライブ装置904は、FD(Flexible・Disk・Drive)、CD(Compact Disc)、DVD(Digital・Versatile・Disc)などの記憶媒体を読み書きする装置である。
通信ボード915は、有線または無線で、LAN(Local Area Network)、インターネット、電話回線などの通信網に接続している。
磁気ディスク装置920には、OS921(オペレーティングシステム)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923には、実施の形態において「〜部」として説明する機能を実行するプログラムが含まれる。プログラムは、CPU911により読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
ファイル群924には、実施の形態において説明する「〜部」で使用される各種データ(入力、出力、判定結果、計算結果、処理結果など)が含まれる。
実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
実施の形態1において、バッファ内でイベントレコード200の格納領域を固定長のページを単位として拡張するので、バッファごとの要求に応じてバッファ記憶部130を効率良く使用することができる。また、各バッファの格納領域(複数のページ)は物理的に連続している必要はないため、領域の拡張の際に既存領域の内容を新たな領域にコピーする処理は発生しない。
第2の単位時間vは、実行時刻と現在時刻との差(実行間隔)の単調増加関数に基づいて設定する。その理由は、動的に発生するイベントにおいては、その実行時刻よりも実行間隔が重要であることが多く、実行間隔に対する相対誤差を一定とすると実行間隔が大きいほど大きな単位時間を用いることが許容されると考えられるためである。つまり、実行時刻210が遅いイベントレコード200ほど大きな時刻許容誤差220が設定されると考えられるためである。
実行間隔xに対して単調増加する第2の単位時間vを用いると、開始時刻の取り得る値の種類を大幅に減少させることができる。例えば、最大スケジュール期間Dを「1年」、第1の単位時間uを「60秒」とすると、第1の単位時間uを単位とする開始時刻の数は1年を60秒で割って525,600個である。しかし、図9のように第2の単位時間vを用いると、開始時刻の数は235個に減少する。これに伴ってバッファ数も減少するのでバッファ当たりの割り当て可能なページ数が増加する。そして、バッファからバケットへのイベントレコード200の書き込みを大きな単位で行うことが可能になる。
例えば、バッファのページにイベントレコード200が一つしか記憶されていなければレコード単位でバケットに書き込みを行うことになるが、バッファのページに多くのイベントレコード200が記憶されていればページ単位でバケットに書き込みを行うことができる。バケット記憶部140は磁気ディスク装置によって実装されることが想定されるため、書き込みの単位を大きくすることでランダムアクセスの発生が抑制され、磁気ディスク装置の性能低下の防止につながる。小さい単位で多くの書き込みを行うと磁気ディスク装置の性能が低下することが知られている。
第2の単位時間vの整数倍に丸めた(切り捨てた)開始時刻は、第1の単位時間uの整数倍に丸めた開始時刻より小さくなる。すなわち、バケット内にはより大きな実行時刻を持つイベントレコード200が格納されることになる。その結果、図6のステップS132の条件が不成立になり、ステップS134における再スケジュールが実行される可能性が生じる。この場合、バケット記憶部140のバケットから当該イベントレコード200を読み出すのに要した時間が無駄になり、読み出しの効率低下につながる。このように、第2の単位時間vの導入はバケット記憶部140に対する書き込みと読み出しとで反対の効果を持つが、読み出しに対する効率低下の影響は実質的に問題にならないと考えられる。なぜなら、バッファやバケットの開始時刻が固定されているため、適用される第2の単位時間vの値(実行時刻のばらつき)が現在時刻の経過と共に減少するからである。また、第2の単位時間vが大きいという条件下では上記のように実行時刻に対する許容誤差も大きいと考えられ、イベントレコード200の時刻許容誤差220が大きな値を持ち、ステップS132の条件が不成立になる割合が小さいと言える。
ステップS220は、イベントレコード200をバケットに書き込むまで一時的に格納するバッファを実行時刻と現在時刻との差に応じて増加する第2の単位時間vを用いて最大スケジュール期間Dを不均等に分割した時刻に対応させる。これにより、バッファの細分化によるバッファ記憶部130の利用効率の低下を防ぎ、スケジューリング精度を向上するためにより小さな第1の単位時間uを使用することが可能になる。
また、ステップS240は、バッファの個別の容量ではなく、バッファ記憶部130の全体の空き容量に応じてバケットへの書き込みを起動する。これにより、イベントレコード200の実行時刻の分布によらず、バッファ記憶部130を有効に利用することができる。
また、ステップS251は十分なページ数を持つバッファのみを書き込み対象とするので、バケット記憶部140に対して小さな単位で書き込みを行うことを可能な限り避け、書き込み速度の低下を抑制することができる。
また、ステップS251は、現在時刻からn単位時間以内の開始時刻を持つバッファを書き込み対象外とするので、短時間の内に処理されるイベントレコード200をバケットへ書き込んでバケットから読み出すということを回避し、処理時間を短縮することができる。
また、ステップS124およびステップS134は時刻許容誤差を満たさないイベントレコード200を再スケジュールするので、大きな実行間隔を持つイベントレコード200を高い時間精度で実行することが可能である。
イベント実行処理(図6参照)において、実行時刻210から時刻許容誤差220の期間内の時刻ではなく実行時刻210から所定の許容時間内の時刻をイベントレコード200の処理可能な時刻としても構わない(S122)。
また、実行部110は、処理可能な時刻であるか否かの判定(S122)を行わずに選択イベントの処理を実行しても構わない(S123)。つまり、イベントレコード200は現在時刻T、実行時刻210および時刻許容誤差220に関わらず開始時刻に処理されても構わない。
イベントスケジュール処理(図7参照)において、ページ閾値と時刻閾値とのいずれかに基づいて該当バッファの条件を定めてもよい(S251)。つまり、開始時刻321に関わらず使用ページ数323がページ閾値以上であるバッファを該当バッファとしてもよい。また、使用ページ数323に関わらず開始時刻321が時刻閾値以降であるバッファを該当バッファとしてもよい。
実施の形態1において、例えば、以下のようなスケジューリングシステム100について説明した。
スケジューリングシステム100は、処理部(実行部110)、第1の記憶部(バケット記憶部140)、第2の記憶部(バッファ記憶部130)およびスケジューリング部(スケジュール部120)を備える。
処理部は、実行時刻と実行内容とを記述したイベントレコードに従って処理を実行する。
第1の記憶部は、実行時刻を第1の単位時間の整数倍で表した値である第1の開始時刻に基づいて複数の領域(バケット)に分けてイベントレコードを記憶する。
第2の記憶部は、実行時刻と現在時刻との差(実行間隔)の大きさに応じて変化する第2の単位時間の整数倍で実行時刻を表した値である第2の開始時刻に基づいて複数の領域(バッファ)に分けてイベントレコードを記憶する。
スケジューリング部は、イベントレコードを第2の記憶部の領域の1つに一時的に記憶させた後に、当該第2の記憶部の領域の第2の開始時刻と一致する第1の開始時刻を持つ第1の記憶部の領域に記憶させる。
第2の単位時間は、実行時刻と現在時刻との差の単調増加関数に従う。
スケジューリング部は、イベントレコードを記憶させるのに十分な容量が第2の記憶部に存在しない場合に以下の処理をする。
スケジューリング部は、第2の記憶部の各領域に記憶されたイベントレコードを第2の開始時刻の順に第2の記憶部の領域の第2の開始時刻と一致する第1の開始時刻を持つ第1の記憶部の領域に書き込む。
スケジューリング部は、当該第2の記憶部の領域を空にする。
スケジューリング部は、第2の記憶部にイベントレコードを記憶させるのに十分な容量が存在しない場合に以下の処理をする。
スケジューリング部は、第2の記憶部の各領域のうちイベントレコードを記憶している容量が所定の値以上である領域に記憶されたイベントレコードを、第2の開始時刻の順に、第2の記憶部の領域の第2の開始時刻と一致する第1の開始時刻を持つ第1の記憶部の領域に書き込む。
スケジューリング部は、当該第2の記憶部の領域を空にする。
なおもイベントレコードを記憶させるのに十分な容量が第2の記憶部に存在しない場合にのみ、スケジューリング部は以下の処理をする。
スケジューリング部は、第2の記憶部の各領域のうちイベントレコードを記憶している容量が所定の値に満たない領域に記憶されたイベントレコードを、第2の開始時刻の順に、第2の記憶部の領域の第2の開始時刻と一致する第1の開始時刻を持つ第1の記憶部の領域に書き込む。
スケジューリング部は、当該第2の記憶部の領域を空にする。
スケジューリング部は、イベントレコードを記憶させるのに十分な容量が第2の記憶部に存在しない場合に以下の処理をする。
スケジューリング部は、第2の記憶部の各領域のうち現在時刻との差が所定の値を超える第2の開始時刻を持つ領域に記憶されたイベントレコードを、第2の開始時刻の順に、第2の記憶部の領域の第2の開始時刻と一致する第1の開始時刻を持つ第1の記憶部の領域に書き込む。
スケジューリング部は、当該第2の記憶部の領域を空にする。
なおもイベントレコードを記憶させるのに十分な容量が第2の記憶部に存在しない場合にのみ、スケジューリング部は以下の処理をする。
スケジューリング部は、第2の記憶部の各領域のうち現在時刻との差が所定の値に満たない第2の開始時刻を持つ領域に記憶されたイベントレコードを、第2の開始時刻の順に、第2の記憶部の領域の第2の開始時刻と一致する第1の開始時刻を持つ第1の記憶部の領域に書き込む。
スケジューリング部は、当該第2の記憶部の領域を空にする。
処理部は、現在時刻に対応する第1の開始時刻を持つ第1の記憶部の領域からイベントレコードを読み出し、読み出したイベントレコードの実行時刻に関わらず当該イベントレコードの処理を実行する。
処理部は、現在時刻に対応する第1の開始時刻を持つ第1の記憶部の領域からイベントレコードを読み出す。
処理部は、読み出したイベントレコードの実行時刻が現在時刻より1単位時間以上大きい場合、当該イベントレコードの処理を実行しない。
スケジューリング部は、当該イベントレコードを第2の記憶部の領域の1つに一時的に記憶させた後に、当該第2の記憶部の領域の第2の開始時刻と一致する前記第1の開始時刻を持つ第1の記憶部の領域に当該イベントレコードを記憶する。
イベントレコードは時刻許容誤差の値を含む。
処理部は、現在時刻に対応する第1の開始時刻を持つ第1の記憶部の領域からイベントレコードを読み出す。
処理部は、読み出したイベントレコードの実行時刻と現在時刻との差が時刻許容誤差を超えている場合、当該イベントレコードの処理を実行しない。
スケジューリング部は、当該イベントレコードを第2の記憶部の領域の1つに一時的に記憶させた後に、当該第2の記憶部の領域の第2の開始時刻と一致する第1の開始時刻を持つ第1の記憶部の領域に当該イベントレコードを記憶する。
処理部は、現在時刻に対応する第2の開始時刻を持つ第2の記憶部の領域からイベントレコードを読み出し、読み出したイベントレコードの実行時刻に関わらず当該イベントレコードの処理を実行する。
処理部は、第2の記憶部の領域からイベントレコードを全て読み出した後に、現在時刻に対応する第1の開始時刻を持つ第1の記憶部の領域からイベントレコードを読み出し、読み出したイベントレコードの実行時刻に関わらず当該イベントレコードの処理を実行する。
処理部は、現在時刻に対応する第2の開始時刻を持つ第2の記憶部の領域からイベントレコードを読み出す。
処理部は、読み出したイベントレコードの実行時刻が現在時刻より1単位時間以上大きい場合、当該イベントレコードの処理を実行せず、スケジューリング部に当該イベントレコードを第2の記憶部の領域の1つに記憶させる。
処理部は、第2の記憶部の領域からイベントレコードを全て読み出した後に、現在時刻に対応する第1の開始時刻を持つ第1の記憶部の領域からイベントレコードを読み出す。
処理部は、読み出したイベントレコードの実行時刻が現在時刻より1単位時間以上大きい場合に当該イベントレコードの処理を実行せず、スケジューリング部に当該イベントレコードを第2の記憶部の領域の1つに記憶させる。
イベントレコードは時刻許容誤差の値を含む。
処理部は、現在時刻に対応する第2の開始時刻を持つ第2の記憶部の領域からイベントレコードを読み出す。
処理部は、読み出したイベントレコードの実行時刻と現在時刻との差が時刻許容誤差を超えている場合に当該イベントレコードの処理を実行せず、スケジューリング部に当該イベントレコードを第2の記憶部の領域の1つに記憶させる。
処理部は、第2の記憶部の領域からイベントレコードを全て読み出した後に、現在時刻に対応する第1の開始時刻を持つ第1の記憶部の領域からイベントレコードを読み出す。
処理部は、読み出したイベントレコードの実行時刻と現在時刻との差が時刻許容誤差を超えている場合に当該イベントレコードの処理を実行せず、スケジューリング部に当該イベントレコードを第2の記憶部の領域の1つに記憶させる。
スケジューリングシステム100は、現在時刻と実行時刻との差に対応して書き込みバッファの時間分解能を変化させることで、タイムスロット数を削減せずに書き込みバッファ数のみを削減し、少ないハードウェアリソースで大量イベントを効率的に処理することを可能にする。
実施の形態2.
木構造でバッファ群300を管理する形態について説明する。
また、バッファ数が所定数を超えている場合、特定バッファに記憶されているイベントレコード200をバケット記憶部140に移動し、特定バッファを解放する形態について説明する。
図11は、実施の形態2におけるスケジューリングシステム100の機能構成図である。
実施の形態2におけるスケジューリングシステム100の機能構成について、図11に基づいて以下に説明する。
スケジュール部120は、実施の形態1の構成(図1参照)に加えて、バッファヘッダ数制限部124を備える。
バッファヘッダ数制限部124(記憶領域数制限部の一例)は、バッファ記憶部130に確保されている記憶領域の数が所定数を超えている場合、バッファ記憶部130に確保されている記憶領域のうち少なくともいずれかの記憶領域を解放領域として特定する。バッファヘッダ数制限部124は、特定した解放領域に記憶されているイベントレコード200を解放領域の開始判定時刻に対応付けてバケット記憶部140に記憶し、バッファ記憶部130の解放領域を解放する。
スケジューリングシステム100のその他の構成は実施の形態1と同じである。
但し、バケット記憶部140はバッファ群300を木構造で管理する。
図12は、実施の形態2におけるバッファ群300のデータ構造を示す図である。
図13は、実施の形態2におけるバッファヘッダ370のフォーマットを示す図である。
実施の形態2におけるバッファ群300のデータ構造について、図12および図13に基づいて以下に説明する。
図12に示すように、バッファ群300は、実施の形態1で説明した配列構造(図4参照)ではなく、木構造で管理される。
バッファヘッダ木311は、木構造の根の部分に位置するバッファヘッダ329aのアドレスを示す。
図13に示すように、バッファヘッダ329には開始時刻321、最大ページ数322、使用ページ数323、空き容量324、左子ノードアドレス326、右子ノードアドレス327およびポインタ配列アドレス325が設定される。
開始時刻321〜ポインタ配列アドレス325は実施の形態1(図5参照)と同じである。
左子ノードアドレス326と右子ノードアドレス327とはそれぞれ他のバッファヘッダ329のアドレスを示す。
図12において、バッファヘッダ329a〜gの位置は開始時刻321に応じて定まる。
例えば、バッファヘッダ329aの右子ノードアドレス327に関連付けられたバッファヘッダ329bはバッファヘッダ329aより後の開始時刻321を示す。また、バッファヘッダ329aの左子ノードアドレス326に関連付けられたバッファヘッダ329eはバッファヘッダ329aより前の開始時刻321を示す。つまり、バッファヘッダ329aの開始時刻321はバッファヘッダ329bより早い時刻であってバッファヘッダ329eより遅い時刻である。同様に、バッファヘッダ329bの開始時刻321はバッファヘッダ329cより早い時刻であってバッファヘッダ329dより遅い時刻である。
このような木構造は赤黒木、二色木または二分木などと呼ばれる。
木構造の基本操作は公知技術であるため、バッファヘッダ329の挿入や削除など木構造の基本操作については説明を省略する。例えば、木構造の基本操作については非特許文献2に開示されている。
図14は、実施の形態2におけるスケジュール部120のイベントスケジュール処理を示すフローチャートである。
実施の形態2におけるスケジュール部120のイベントスケジュール処理について、図14に基づいて以下に説明する。
実施の形態2におけるイベントスケジュール処理では、実施の形態1で説明した処理(図7参照)に加えて、バッファヘッダ数制限処理(S280)を実行する。
バッファヘッダ数制限処理(S280)において、バッファヘッダ数制限部124は、バッファヘッダ数が多い場合に特定バッファ内のイベントレコード200をバケット記憶部140に移動し、特定バッファを解放する。
以下に、バッファヘッダ数制限処理(S280)の詳細について説明する。
図15は、実施の形態2におけるバッファヘッダ数制限処理(S280)を示すフローチャートである。
実施の形態2におけるバッファヘッダ数制限処理(S280)について、図15に基づいて以下に説明する。
S128aにおいて、バッファヘッダ数制限部124は、木構造内に格納先バッファのバッファヘッダ329が有るか否かを判定する。
格納先バッファのバッファヘッダ329が有る場合(YES)、S282に進む。
格納先バッファのバッファヘッダ329が無い場合(NO)、S281bに進む。
S281bにおいて、バッファヘッダ数制限部124は、格納先バッファのバッファヘッダ329を生成し、格納先バッファの開始時刻に基づいて木構造内でのバッファヘッダ329の挿入位置を決定し、決定した位置にバッファヘッダ329を挿入する。そして、バッファヘッダ数制限部124は、バッファヘッダ329の各項目を設定する。
S281bの後、S282に進む。
S282において、バッファヘッダ数制限部124は、木構造内のバッファヘッダ数を所定のヘッダ数閾値と大小比較する。
バッファヘッダ数がヘッダ数閾値より大きい場合(YES)、S283に進む。
バッファヘッダ数がヘッダ数閾値以下の場合(NO)、バッファヘッダ数制限処理(S280)は終了する。
S283〜S289において、バッファヘッダ数制限部124は、イベントスケジュール処理(図7、図14参照)のS250〜S256と同様に、開始時刻が時刻閾値以降で且つ使用ページ数がページ閾値以上である該当バッファを解放する。
但し、バッファヘッダ数制限部124は、該当バッファを解放したことによりバッファヘッダ数がヘッダ数閾値以下になった場合にバッファヘッダ数制限処理(S280)を終了する。
バッファヘッダ数制限部124は該当バッファを以下のように解放する。
バッファヘッダ数制限部124は開始時刻が時刻閾値以降で且つ使用ページ数がページ閾値以上である該当バッファを検索する(S285)。
バッファヘッダ数制限部124は該当バッファに記憶されているイベントレコード200を該当バッファと同じ開始時刻321に対応するバケットに記憶する(S286)。バッファヘッダ数制限部124は該当バッファをバッファ記憶部130に返却し、該当バッファのバッファヘッダ329を木構造から削除する(S287)。
実施の形態2によれば、任意個のバッファヘッダ329を木構造として保持するので、不要なバッファヘッダ329に記憶領域を割り当てる必要がなくなり、バッファ記憶部130をより効率的に使用できる。
また、ステップS282はバッファヘッダ数に上限を設けるので、多数で小容量のバッファが長期間存続してバッファ記憶部130の空き領域が減少してしまうことを避け、性能低下を防ぐことができる。
実施の形態1のイベントスケジュール処理(図7参照)において、実施の形態2と同様に格納先バッファに空き容量が有るか否か(S230)およびバッファ記憶部130に空きページが有るか否か(S240)に関わらず、特定のバッファを解放してもよい。
例えば、バッファ群全体の使用ページ数が所定のページ数を超えている場合に時刻閾値とページ閾値との条件を満たすバッファを解放してもよい。
また、バッファ群全体のバッファ数(ポインタ配列330の数、バッファヘッダ配列320に設定されているポインタ配列アドレス325の数)が所定のバッファ数を超えている場合に時刻閾値とページ閾値との条件を満たすバッファを解放してもよい。
実施の形態2において、例えば、以下のようなスケジューリングシステム100について説明した。
スケジューリング部(スケジュール部120)は、少なくとも1つのイベントレコード200が記憶されたバッファ記憶部130の領域(バッファ)の数が所定の値を超える場合に、イベントレコード200を記憶させるのに十分な容量がバッファ記憶部130に存在しない場合と同様の処理を行う。
100 スケジューリングシステム、110 実行部、120 スケジュール部、121 イベント入力部、122 格納先バッファ決定部、123 イベント格納部、124 バッファヘッダ数制限部、130 バッファ記憶部、140 バケット記憶部、200 イベントレコード、210 実行時刻、220 時刻許容誤差、230 実行内容、300 バッファ群、310 開始指標、311 バッファヘッダ木、320 バッファヘッダ配列、321 開始時刻、322 最大ページ数、323 使用ページ数、324 空き容量、325 ポインタ配列アドレス、326 左子ノードアドレス、327 右子ノードアドレス、329 バッファヘッダ、330 ポインタ配列、340 充填済みページ、350 未充填ページ、399 バッファ、901 表示装置、902 キーボード、903 マウス、904 ドライブ装置、911 CPU、912 バス、913 ROM、914 RAM、915 通信ボード、920 磁気ディスク装置、921 OS、922 ウィンドウシステム、923 プログラム群、924 ファイル群。

Claims (10)

  1. 処理の開始予定時刻が定められたイベントレコードを入力するイベント入力部と、
    前記イベント入力部がイベントレコードを入力した入力時刻から前記イベントレコードの開始予定時刻までの時間を開始待ち時間として算出し、算出した開始待ち時間が第一の時間未満の時間である場合に第一の単位時間を前記イベントレコードの開始予定時刻を変換するための単位時間として特定し、算出した開始待ち時間が前記第一の時間以上第二の時間未満の時間である場合に第二の単位時間を前記イベントレコードの開始予定時刻を変換するための単位時間として特定する単位時間特定部と、
    前記単位時間特定部により特定された単位時間に基づいて前記イベントレコードの開始予定時刻を前記単位時間を単位とする時刻に変換し、変換して得られた時刻を開始判定時刻として特定する開始判定時刻特定部と、
    前記開始判定時刻特定部により特定された開始判定時刻に基づいて前記開始判定時刻に対応付けた記憶領域を所定の記憶装置に確保し、確保した記憶領域に前記イベントレコードを記憶するスケジューリング部と、
    前記開始判定時刻に前記開始判定時刻に対応する記憶領域に記憶されている前記イベントレコードを参照し、前記イベントレコードを参照した参照時刻と前記イベントレコードの開始予定時刻とに基づいて前記イベントレコードの処理を開始するか否かを判定し、前記イベントレコードの処理を開始すると判定した場合に前記イベントレコードの処理を開始し、前記イベントレコードの処理を開始しないと判定した場合に前記イベントレコードを前記イベント入力部に入力するイベント処理部と
    を備えることを特徴とするスケジューリング装置。
  2. 前記スケジューリング装置は、第1の記憶装置と第2の記憶装置とを備え、
    前記スケジューリング部は、前記イベント入力部が入力したイベントレコードを入力イベントとして記憶する記憶領域を前記第1の記憶装置に確保できる場合、前記入力イベントの開始予定時刻に対応付けた記憶領域を前記第1の記憶装置に確保し、確保した記憶領域に前記入力イベントを記憶し、前記入力イベントを記憶する記憶領域を前記第1の記憶装置に確保できない場合、前記第1の記憶装置に確保されている記憶領域のうち少なくともいずれかの記憶領域を解放領域として特定し、特定した解放領域に記憶されているイベントレコードを前記解放領域の開始判定時刻に対応付けて前記第2の記憶装置に記憶し、前記解放領域を前記入力イベントの開始予定時刻に対応付けて確保し、確保した解放領域に前記入力イベントを記憶し、
    前記イベント処理部は、特定の開始判定時刻に前記第1の記憶装置に記憶されているイベントレコードのうち前記特定の開始判定時刻に対応する記憶領域に記憶されているイベントレコードを参照すると共に前記第2の記憶装置に記憶されているイベントレコードのうち前記特定の開始判定時刻に対応する記憶領域に記憶されているイベントレコードを参照する
    ことを特徴とする請求項1記載のスケジューリング装置。
  3. 前記スケジューリング部は、前記入力イベントを記憶する記憶領域を前記第1の記憶装置に確保できない場合、前記第1の記憶装置に確保されている記憶領域のうち所定の領域サイズより大きい領域サイズを有する記憶領域を前記解放領域として特定する
    ことを特徴とする請求項2記載のスケジューリング装置。
  4. 前記スケジューリング部は、前記入力イベントを記憶する記憶領域を前記第1の記憶装置に確保できない場合、前記第1の記憶装置に確保されている記憶領域のうち所定の領域サイズより大きい領域サイズを有する記憶領域であって前記入力イベントの入力時刻から所定時間後の時刻以降の開始判定時刻に対応する記憶領域を前記解放領域として特定することを特徴とする請求項3記載のスケジューリング装置。
  5. 前記スケジューリング部は、前記入力イベントを記憶する記憶領域を前記第1の記憶装置に確保できない場合、前記第1の記憶装置に確保されている記憶領域のうち前記入力イベントの入力時刻から所定時間後の時刻以降の開始判定時刻に対応する記憶領域を前記解放領域として特定する
    ことを特徴とする請求項2記載のスケジューリング装置。
  6. 前記イベント処理部は、前記イベントレコードの開始予定時刻を含んだ開始許容時間帯であって所定の時間長を有する開始許容時間帯に前記イベントレコードの参照時刻が含まれる場合に前記イベントレコードの処理を開始し、前記開始許容時間帯に前記イベントレコードの参照時刻が含まれない場合に前記イベントレコードを前記イベント入力部に入力する
    ことを特徴とする請求項1〜請求項5いずれかに記載のスケジューリング装置。
  7. 前記単位時間特定部は、前記単位時間を意味するvと、前記イベントレコードの入力時刻を意味するtと前記イベントレコードの開始予定時刻を意味するsと所定時間を意味するuと定数を意味するkと、aとbとのうち大きい方の値を意味するMax(a,b)と、x以下の最大の整数を意味する[x]と、xの指数関数を意味するexp(x)と、xの自然対数を意味するlog(x)とを用いた式であり、
    前記式は、v=Max(u,[k・exp([log(s−t)])/u]・u)である
    ことを特徴とする請求項1〜請求項6いずれかに記載のスケジューリング装置。
  8. 前記スケジューリング装置は、さらに、
    前記第1の記憶装置に確保されている記憶領域の数が所定数を超えている場合、前記第1の記憶装置に確保されている記憶領域のうち少なくともいずれかの記憶領域を解放領域として特定し、特定した解放領域に記憶されているイベントレコードを前記解放領域の開始判定時刻に対応付けて前記第2の記憶装置に記憶し、前記第1の記憶装置の解放領域を解放する記憶領域数制限部を備える
    ことを特徴とする請求項2記載のスケジューリング装置。
  9. イベント入力部が、処理の開始予定時刻が定められたイベントレコードを入力し、
    単位時間特定部が、前記イベント入力部がイベントレコードを入力した入力時刻から前記イベントレコードの開始予定時刻までの時間を開始待ち時間として算出し、算出した開始待ち時間が第一の時間未満の時間である場合に第一の単位時間を前記イベントレコードの開始予定時刻を変換するための単位時間として特定し、算出した開始待ち時間が前記第一の時間以上第二の時間未満の時間である場合に第二の単位時間を前記イベントレコードの開始予定時刻を変換するための単位時間として特定し、
    開始判定時刻特定部が、前記単位時間特定部により特定された単位時間に基づいて前記イベントレコードの開始予定時刻を前記単位時間を単位とする時刻に変換し、変換して得られた時刻を開始判定時刻として特定し、
    スケジューリング部が、前記開始判定時刻特定部により特定された開始判定時刻に基づいて前記開始判定時刻に対応付けた記憶領域を所定の記憶装置に確保し、確保した記憶領域に前記イベントレコードを記憶し、
    イベント処理部が、前記開始判定時刻に前記開始判定時刻に対応する記憶領域に記憶されている前記イベントレコードを参照し、前記イベントレコードを参照した参照時刻と前記イベントレコードの開始予定時刻とに基づいて前記イベントレコードの処理を開始するか否かを判定し、前記イベントレコードの処理を開始すると判定した場合に前記イベントレコードの処理を開始し、前記イベントレコードの処理を開始しないと判定した場合に前記イベントレコードを前記イベント入力部に入力する
    ことを特徴とするスケジューリング方法。
  10. 処理の開始予定時刻が定められたイベントレコードを入力するイベント入力処理と、
    前記イベント入力処理がイベントレコードを入力した入力時刻から前記イベントレコードの開始予定時刻までの時間を開始待ち時間として算出し、算出した開始待ち時間が第一の時間未満の時間である場合に第一の単位時間を前記イベントレコードの開始予定時刻を変換するための単位時間として特定し、算出した開始待ち時間が前記第一の時間以上第二の時間未満の時間である場合に第二の単位時間を前記イベントレコードの開始予定時刻を変換するための単位時間として特定する単位時間特定処理と、
    前記単位時間特定処理により特定された単位時間に基づいて前記イベントレコードの開始予定時刻を前記単位時間を単位とする時刻に変換し、変換して得られた時刻を開始判定時刻として特定する開始判定時刻特定処理と、
    前記開始判定時刻特定処理により特定された開始判定時刻に基づいて前記開始判定時刻に対応付けた記憶領域を所定の記憶装置に確保し、確保した記憶領域に前記イベントレコードを記憶するスケジューリング処理と、
    前記開始判定時刻に前記開始判定時刻に対応する記憶領域に記憶されている前記イベントレコードを参照し、前記イベントレコードを参照した参照時刻と前記イベントレコードの開始予定時刻とに基づいて前記イベントレコードの処理を開始するか否かを判定し、前記イベントレコードの処理を開始すると判定した場合に前記イベントレコードの処理を開始し、前記イベントレコードの処理を開始しないと判定した場合に前記イベントレコードを前記イベント入力処理に入力するイベント処理と
    をコンピュータに実行させるためのスケジューリングプログラム。
JP2010093412A 2010-04-14 2010-04-14 スケジューリング装置、スケジューリング方法およびスケジューリングプログラム Expired - Fee Related JP5465067B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010093412A JP5465067B2 (ja) 2010-04-14 2010-04-14 スケジューリング装置、スケジューリング方法およびスケジューリングプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010093412A JP5465067B2 (ja) 2010-04-14 2010-04-14 スケジューリング装置、スケジューリング方法およびスケジューリングプログラム

Publications (2)

Publication Number Publication Date
JP2011221962A JP2011221962A (ja) 2011-11-04
JP5465067B2 true JP5465067B2 (ja) 2014-04-09

Family

ID=45038845

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010093412A Expired - Fee Related JP5465067B2 (ja) 2010-04-14 2010-04-14 スケジューリング装置、スケジューリング方法およびスケジューリングプログラム

Country Status (1)

Country Link
JP (1) JP5465067B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5791478B2 (ja) * 2011-11-29 2015-10-07 三菱電機株式会社 情報処理装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06282447A (ja) * 1993-03-29 1994-10-07 Mitsubishi Electric Corp 待ち行列管理方式
EP1061463B1 (en) * 1999-06-18 2007-07-25 Synopsys, Inc. Scheduling non-integral simulation time for mixed-signal simulation
WO2002086736A1 (fr) * 2001-04-19 2002-10-31 International Business Machines Corporation Serveur, systeme informatique, procede de gestion d'objet, procede de commande de serveur, programme informatique

Also Published As

Publication number Publication date
JP2011221962A (ja) 2011-11-04

Similar Documents

Publication Publication Date Title
US9244617B2 (en) Scheduling requests in a solid state memory device
TW470912B (en) A method and system for ordering priority commands on a commodity disk drive
US7305537B1 (en) Method and system for I/O scheduler activations
KR100524763B1 (ko) 개선된 edf 스케쥴링 방법
JPH0635728A (ja) 装置の割り当てのグローバルな最適化方法とシステム
JP6885193B2 (ja) 並列処理装置、ジョブ管理方法、およびジョブ管理プログラム
US7681196B2 (en) Providing optimal number of threads to applications performing multi-tasking using threads
JP2008140046A (ja) 画像処理装置、画像処理プログラム
US20060047874A1 (en) Resource management apparatus
US20200201763A1 (en) Memory hierarchy-aware processing
CN112799606B (zh) Io请求的调度方法及装置
CN114615338A (zh) 一种边缘环境中基于层共享的微服务部署方法及装置
JP5521610B2 (ja) 入出力制御装置、入出力制御方法
JP2002202894A (ja) 複数の処理システムのコンピューター資源の使用を見積もるシステムおよび方法
JP5465067B2 (ja) スケジューリング装置、スケジューリング方法およびスケジューリングプログラム
JP2003256067A (ja) 省電力制御方式及び省電力制御方法及びプログラム及び記録媒体
CN106537321B (zh) 存取文件的方法、装置和存储系统
JP2000148515A (ja) メモリスケジューリング方法及びメモリスケジューリングプログラムを格納する記憶媒体
JP2001125749A (ja) 外部記憶装置ドライバプログラムを記録した記録媒体、及び外部記憶装置アクセス機能を有する計算機
JP2016114967A (ja) キャッシュ装置、キャッシュシステム、キャッシュ方法、及びキャッシュプログラム
CN111290856B (zh) 数据处理装置和方法
JP2009199367A (ja) 計算機システム、i/oスケジューラ及びi/oスケジューリング方法
WO2020031675A1 (ja) スケジューリング装置、スケジューリングシステム、スケジューリング方法、プログラム及び非一時的コンピュータ可読媒体
JP2924725B2 (ja) バッファ割り当て制御システム
US7827556B2 (en) Method for equitable resource sharing between local and network filesystems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121119

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131008

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131203

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140121

R150 Certificate of patent or registration of utility model

Ref document number: 5465067

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees