JP2013200666A - プログラム処理方法およびそのシステム - Google Patents
プログラム処理方法およびそのシステム Download PDFInfo
- Publication number
- JP2013200666A JP2013200666A JP2012068033A JP2012068033A JP2013200666A JP 2013200666 A JP2013200666 A JP 2013200666A JP 2012068033 A JP2012068033 A JP 2012068033A JP 2012068033 A JP2012068033 A JP 2012068033A JP 2013200666 A JP2013200666 A JP 2013200666A
- Authority
- JP
- Japan
- Prior art keywords
- task
- function
- program
- timer
- interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 82
- 230000008569 process Effects 0.000 claims abstract description 20
- 230000006870 function Effects 0.000 claims description 178
- 238000012545 processing Methods 0.000 claims description 32
- 230000000903 blocking effect Effects 0.000 claims description 8
- 230000000737 periodic effect Effects 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 25
- 238000013461 design Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 9
- 238000011161 development Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 125000002015 acyclic group Chemical group 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000011056 performance test Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【解決手段】周期的にプログラムを駆動する、Timer interrupt、Timer Signal(POSIX/UNIX/Linux)、Timer Event (Windows)、などを利用することにより、プログラムをクロック駆動する。本発明のプログラムがタイマーにより駆動されると、定められた一定の処理を実行し、それが終了すると、次にタイマーによりプログラムが駆動されるまで休む。これにより、高速マシンおよび低速マシンのいずれを用いても、時間当たりの実行ステップ数は同じになる。従って、性能はハードウェアには依存せずに同一になる。
【選択図】図18
Description
図1は、本発明の一実施形態に係るネットワーク構成を示す図である。複数のプログラム処理システム101a、101b、・・・、101n(以下、プログラム処理システム101と呼ぶ)が、インターネット102を介して、複数のクライアントコンピュータ103a、103b、・・・、103n(以下、クライアントコンピュータ103と呼ぶ)と相互に通信可能に接続される。
CDPは、イベント駆動プログラミング(EDP)の一部である。従って、CDPは、EDPをサポートする任意のプログラミング言語、およびOSで実践できる。本実施形態では、C言語、およびWindowsを用いるが、これに限定されるものではない。
本発明のCDPのタスクを、図2のプログラム記述例に基づいて説明する。本発明では、CDPのタスクを以下の要素を用いて定義する。
内部変数:ステート間で値を引継ぐために使用する1以上の変数
インタフェース関数:内部変数を他のタスクが参照または更新するための0以上の関数
リセット関数:内部変数を初期化するための関数
タスク本体関数:タイマーイベントハンドラーによって呼び出される関数
図2の行番号L18に示されるように、taskAはstateがfreeである場合のみ、計算要求を受け入れる。つまり、taskAが先行する計算要求を受け入れ、計算を実行している間は、他のタスクからの計算要求を受け入れることはできない。そこで、同時に複数の計算要求を処理したい場合には、同一機能を持つ複数のタスクを用意するために、タスクを配列化したタスク配列を定義する。図4に、図2に記載のtaskAを配列化したタスク配列のプログラム記述例を示す。
タスクを記述したら、次にタスク間の先行関係を把握しPERT図を作成する。タイマーイベントハンドラーが呼び出すのは、タスク本体関数であり、タスク間の先行関係とは、タスク本体関数間の先行関係である。あるタスクは、そのタスク本体関数において、他のタスクのインタフェース関数を呼び出して、他のタスクの処理結果を取得する。例えば、図3に示すtaskBは、タスク本体関数において、taskAのget_resultメソッドを呼び出して、taskAの処理結果F(x)yを取得する。このインタフェース関数の静的呼び出し関係を示したものが、図5のコールグラフである。
R(f) ∩ W(g) = φ・・・(1)
R(g) ∩ W(f) = φ・・・(2)
W(f) ∩ W(g) = φ・・・(3)
同時実行され得るタスクがBernstein’s conditionsを満たさない場合、書き替え技法を用いてプログラムを修正する必要がある。代表的な3つの書き換え技法を以下で紹介する。
PERT図が得られたら、次にスケジュールを作成する。スケジュールは、どのタイミングでどのリソースにタスクを割り当てるかを、PERT図で与えられた先行関係を満たすように定めたものである。利用可能なリソースの制約の元で、完了時間が最小となるスケジュールを作成することが望ましい。図14に示すPERT図に基づいて、スケジュールを作成する。
逐次実行する場合、PERT図を既知のアルゴリズムでトポロジカルソートすることにより、容易にスケジュールを作成することができる。図14のPERT図の場合、以下の3つのスケジュールが作成される。taskX、taskY、taskZ、taskWのタスク本体関数が、それぞれ、taskX_CLK()、taskY_CLK()、taskZ_CLK()、taskW_CLK()であるものとする。
スケジュール1=taskX_CLK(); taskY_CLK(); taskW_CLK(); taskZ_CLK();
スケジュール2=taskX_CLK(); taskY_CLK(); taskZ_CLK(); taskW_CLK();
スケジュール3=taskX_CLK(); taskZ_CLK(); taskY_CLK(); taskZ_CLK();
並列実行する場合、タスク間の先行関係は同期プリミティブを用いて実現する。本実施形態では、同期プリミティブとして、Windowsの提供するEvent Objectを用いる。Event Objectは、2つの状態(シグナル状態/非シグナル状態)を持つ。SetEvent(e)を呼び出すことにより、引数eのハンドルにより特定されるEvent Objectはシグナル状態になる。WaitForSingleObject(e)を呼び出すと、引数eのハンドルにより特定されるEvent Objectが非シグナル状態である場合、シグナル状態になるまでWaitForSingleObject(e)の呼び出し側スレッドは待機し続ける。他のスレッドによりSetEvent(e)が呼ばれ、eにより特定されるEvent Objectがシグナル状態になると、制御が戻され、呼び出し側スレッドは後続の処理を実行することができる。
スケジュール4−0=taskX_CLK(); SetEvent(e1); SetEvent(e2);
スケジュール4−1=WaitForSingleObject(e1); taskZ_CLK();
スケジュール4−2=WaitForSingleObject(e2); taskY_CLK(); SetEvent(e3);
スケジュール4−3=WaitForSingleObject(e3); taskW_CLK();
タスク配列内の各タスク間に先行関係は存在しない。そのため、各タスクをどのような順序でスケジューリングしてもよい。また、タスク配列は、コードは全て同じで、内部変数の場所だけが異なるので、タスク配列内の各タスクの平均の実行時間は、同一であることが期待できる。従って、タスクの多重度がm、利用可能なCPU数がnである場合、各CPUにm/n個ずつタスクを分配する。
スケジュール5−0=taskX_CLK(); SetEvent(e1); SetEvent(e21); SetEvent(e22);
スケジュール5−1=WaitForSingleObject(e1); taskZ_CLK();
スケジュール5−2=WaitForSingleObject(e21); taskY_CLK(0); taskY_CLK(2);
SetEvent(e31);
スケジュール5−3=WaitForSingleObject(e22); taskY_CLK(1); taskY_CLK(3);
SetEvent(e32);
スケジュール5−4=WaitForSingleObject(e31); WaitForSingleObject(e32);
taskW_CLK();
上述のCDPプログラムの性能は、プログラムを代表するタスクのスループットP(tps)として、以下の式で求めることができる。
次に、図18のフローチャートを参照して、本実施形態に係る周期的なタイマーによりプログラムを処理する工程を説明する。周期的なタイマーによりプログラムを処理するための事前準備として、前述したCDPプログラムを作成し、当該CDPプログラムを処理するコンピュータのメモリに格納する必要がある。CDPプログラムは、(タスクの記述)の章で詳述したタスクプログラムと、(スケジュールの作成)の章で詳述した実行プログラムとを含む。
Claims (9)
- クロック駆動プログラミング(CDP)プログラムを格納するメモリを有するコンピュータが、周期的なタイマーによりプログラムを処理する方法であって、前記CDPプログラムは、内部変数、インタフェース関数、リセット関数、タスク本体関数を記述するタスクプログラムと、前記タスク本体関数を周期的に実行するためのタイマーを有する実行プログラムとを含み、前記コンピュータは、
前記リセット関数の呼び出しを前記実行プログラムから受け取り、前記タスクプログラムの前記内部変数を初期化するステップと、
前記タイマーの周期、および第1の関数を含むタイマー設定要求を前記実行プログラムから受け取り、前記実行プログラムのタイマーの周期を前記タイマー設定要求に含まれる周期に設定し、前記実行プログラムのタイマーのタイマーイベントハンドラーとして前記タイマー設定要求に含まれる前記第1の関数を登録するステップであって、前記第1の関数は、前記タスクプログラムの前記タスク本体関数の呼び出しを含む、ステップと、
前記タイマーの周期で前記第1の関数を呼び出すことにより、前記タスク本体関数を呼び出すステップであって、前記タスク本体関数において、前記内部変数のうち当該タスクプログラムの状態を示す状態内部変数に基づいて、当該タスクプログラムの状態に対応する処理を実行し、当該対応する処理の実行の進捗に応じて、前記状態内部変数を更新する、ステップと、
前記タスクプログラムに処理結果を要求する前記インタフェース関数の呼び出しを前記実行プログラムから受け取り、前記状態内部変数に基づいて処理結果要求を受け入れるか否かを判定する、ステップと
を含むことを特徴とする方法。 - 前記タスクプログラムは複数であり、前記第1の関数において、複数のタスクプログラムの各タスク本体関数を呼び出すスケジュールを指定することを特徴とする請求項1に記載の方法。
- 前記複数のタスクプログラムから同時に呼び出され得るインタフェース関数は、Bernstein’s conditionを満たすことを特徴とする請求項2に記載の方法。
- 前記タスクプログラムは配列化されており、前記第1の関数において、配列化されたタスクプログラムの各タスク本体関数を呼び出すスケジュールを指定することを特徴とする請求項1に記載の方法。
- 前記インタフェース関数、前記リセット関数、および前記タスク本体関数は、不定回数ループを含まないことを特徴とする請求項1に記載の方法。
- 前記インタフェース関数、前記リセット関数、および前記タスク本体関数において、Blocking I/Oを用いないことを特徴とする請求項1に記載の方法。
- クロック駆動プログラミング(CDP)プログラムを格納するメモリと、
プロセッサと
を備えたプログラム処理システムであって、
前記CDPプログラムは、内部変数、インタフェース関数、リセット関数、タスク本体関数を記述するタスクプログラムと、前記タスク本体関数を周期的に実行するためのタイマーを有する実行プログラムとを含み、
前記プロセッサは、
前記リセット関数の呼び出しを前記実行プログラムから受け取り、前記タスクプログラムの前記内部変数を初期化するステップと、
前記タイマーの周期、および第1の関数を含むタイマー設定要求を前記実行プログラムから受け取り、前記実行プログラムのタイマーの周期を前記タイマー設定要求に含まれる周期に設定し、前記実行プログラムのタイマーのタイマーイベントハンドラーとして前記タイマー設定要求に含まれる前記第1の関数を登録するステップであって、前記第1の関数は、前記タスクプログラムの前記タスク本体関数の呼び出しを含む、ステップと、
前記タイマーの周期で前記第1の関数を呼び出すことにより、前記タスク本体関数を呼び出すステップであって、前記タスク本体関数において、前記内部変数のうち当該タスクプログラムの状態を示す状態内部変数に基づいて、当該タスクプログラムの状態に対応する処理を実行し、当該対応する処理の実行の進捗に応じて、前記状態内部変数を更新する、ステップと、
前記タスクプログラムに処理結果を要求する前記インタフェース関数の呼び出しを前記実行プログラムから受け取り、前記状態内部変数に基づいて処理結果要求を受け入れるか否かを判定する、ステップと
を実行するよう構成されることを特徴とするプログラム処理システム。 - クロック駆動プログラミング(CDP)プログラムを格納するメモリを有するコンピュータが、前記CDPプログラムをチェックする方法であって、前記CDPプログラムは、内部変数、インタフェース関数、リセット関数、タスク本体関数を記述する、複数のタスクプログラム、および前記タスク本体関数を周期的に実行するためのタイマーを有する実行プログラムを含み、前記メモリは、前記複数のタスクプログラムの先行関係を示す情報を格納し、
前記インタフェース関数、前記リセット関数、および前記タスク本体関数において、不定回数ループを含むか否かを判定するステップと、
前記インタフェース関数、前記リセット関数、および前記タスク本体関数において、Blocking I/Oが用いられているか否かを判定するステップと、
前記先行関係を示す情報に基づいて、複数のタスクプログラムから同時に呼び出され得るタスクプログラムの第1のインタフェース関数および第2のインタフェース関数を識別するステップと、
前記第1のインタフェース関数および前記第2のインタフェース関数がBernstein’s conditionを満たすか否かを判定するステップと
を含むことを特徴とする方法。 - クロック駆動プログラミング(CDP)プログラムを格納するメモリと、
プロセッサと
を備えたプログラムチェックシステムであって、
前記CDPプログラムは、内部変数、インタフェース関数、リセット関数、タスク本体関数を記述する、複数のタスクプログラム、および前記タスク本体関数を周期的に実行するためのタイマーを有する実行プログラムを含み、
前記メモリは、前記複数のタスクプログラムの先行関係を示す情報を格納し、
前記プロセッサは、
前記インタフェース関数、前記リセット関数、および前記タスク本体関数において、不定回数ループを含むか否かを判定するステップと、
前記インタフェース関数、前記リセット関数、および前記タスク本体関数において、Blocking I/Oが用いられているか否かを判定するステップと、
前記先行関係を示す情報に基づいて、複数のタスクプログラムから同時に呼び出され得るタスクプログラムの第1のインタフェース関数および第2のインタフェース関数を識別するステップと、
前記第1のインタフェース関数および前記第2のインタフェース関数がBernstein’s conditionを満たすか否かを判定するステップと
を実行するよう構成されることを特徴とするプログラムチェックシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012068033A JP5465745B2 (ja) | 2012-03-23 | 2012-03-23 | プログラム処理方法およびそのシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012068033A JP5465745B2 (ja) | 2012-03-23 | 2012-03-23 | プログラム処理方法およびそのシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013200666A true JP2013200666A (ja) | 2013-10-03 |
JP5465745B2 JP5465745B2 (ja) | 2014-04-09 |
Family
ID=49520879
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012068033A Active JP5465745B2 (ja) | 2012-03-23 | 2012-03-23 | プログラム処理方法およびそのシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5465745B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107153626A (zh) * | 2017-04-14 | 2017-09-12 | 河南思维轨道交通技术研究院有限公司 | 一种低速总线器件的访问方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06103082A (ja) * | 1992-04-24 | 1994-04-15 | Nec Corp | 同期型入出力文解析処理方式 |
JP2002268879A (ja) * | 2001-03-07 | 2002-09-20 | Mitsubishi Electric Corp | プログラム設計支援装置、プログラム設計支援方法及びプログラム設計支援方法をコンピュータに実行させるためのプログラム。 |
WO2006043480A1 (ja) * | 2004-10-19 | 2006-04-27 | Winz Corporation | コンピュータプログラム、プログラム実行装置、プログラム生成処理プログラム、状況表示処理プログラム等 |
-
2012
- 2012-03-23 JP JP2012068033A patent/JP5465745B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06103082A (ja) * | 1992-04-24 | 1994-04-15 | Nec Corp | 同期型入出力文解析処理方式 |
JP2002268879A (ja) * | 2001-03-07 | 2002-09-20 | Mitsubishi Electric Corp | プログラム設計支援装置、プログラム設計支援方法及びプログラム設計支援方法をコンピュータに実行させるためのプログラム。 |
WO2006043480A1 (ja) * | 2004-10-19 | 2006-04-27 | Winz Corporation | コンピュータプログラム、プログラム実行装置、プログラム生成処理プログラム、状況表示処理プログラム等 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107153626A (zh) * | 2017-04-14 | 2017-09-12 | 河南思维轨道交通技术研究院有限公司 | 一种低速总线器件的访问方法 |
Also Published As
Publication number | Publication date |
---|---|
JP5465745B2 (ja) | 2014-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9690630B2 (en) | Hardware accelerator test harness generation | |
Rolia et al. | The method of layers | |
CN113535367B (zh) | 任务调度方法及相关装置 | |
Nichols et al. | Pthreads programming: A POSIX standard for better multiprocessing | |
US9009711B2 (en) | Grouping and parallel execution of tasks based on functional dependencies and immediate transmission of data results upon availability | |
JP5116442B2 (ja) | ロックフリー同時fifoキュー、キューを実装する方法、装置およびコンピュータ・プログラム | |
US5551041A (en) | Wait for service request in an iconic programming system | |
US20070033640A1 (en) | Generic context service in a distributed object environment | |
CN112925587B (zh) | 用于初始化应用的方法和装置 | |
WO2020121292A1 (en) | Efficient data processing in a serverless environment | |
US20120304195A1 (en) | Dynamic attribute resolution for orchestrated management | |
US11422847B2 (en) | Synchronous business process execution engine for action orchestration in a single execution transaction context | |
US7539992B2 (en) | Scheduling method, program product for use in such method, and task scheduling apparatus | |
JP5465745B2 (ja) | プログラム処理方法およびそのシステム | |
JP5480322B2 (ja) | 性能制御方法、そのシステムおよびプログラム | |
Lázaro-Muñoz et al. | A tasks reordering model to reduce transfers overhead on GPUs | |
Subramonian et al. | Reusable models for timing and liveness analysis of middleware for distributed real-time and embedded systems | |
JP2023544911A (ja) | 並列量子コンピューティングのための方法及び装置 | |
EP0508632B1 (en) | Wait for service request in an iconic programming system | |
JP5486034B2 (ja) | スケジュール作成方法、そのシステムおよびプログラム | |
De Munck et al. | Design and performance evaluation of a conservative parallel discrete event core for GES | |
US20120158651A1 (en) | Configuration of asynchronous message processing in dataflow networks | |
Isovic | Handling sporadic tasks in real-time systems: Combined offline and online approach | |
Ganty et al. | Analyzing real-time event-driven programs | |
Choi et al. | Scheduling of real-time tasks with complex constraints |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130827 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131010 |
|
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: 20140107 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140122 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5465745 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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |