JPH076043A - マルチスレッド・サーバ - Google Patents

マルチスレッド・サーバ

Info

Publication number
JPH076043A
JPH076043A JP6034742A JP3474294A JPH076043A JP H076043 A JPH076043 A JP H076043A JP 6034742 A JP6034742 A JP 6034742A JP 3474294 A JP3474294 A JP 3474294A JP H076043 A JPH076043 A JP H076043A
Authority
JP
Japan
Prior art keywords
thread
processing
priority
sample data
semaphore
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.)
Pending
Application number
JP6034742A
Other languages
English (en)
Inventor
Ichiro Mizunuma
一郎 水沼
Hiromitsu Shimakawa
博光 島川
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 JP6034742A priority Critical patent/JPH076043A/ja
Publication of JPH076043A publication Critical patent/JPH076043A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

(57)【要約】 【目的】 受信したサンプルデータをメモリに格納中で
あっても、要求メッセージに対する処理を可能にして、
要求メッセージに対する処理の高速化を図ることができ
るとともに、要求メッセージの欠損を防止できるマルチ
スレッド・サーバを得ることを目的とする。 【構成】 第2の受信部16・17により保持された要
求メッセージを順次取り出し、その要求メッセージの内
容に応じた処理を第1の受信部11が受信してメモリ1
3・15に格納したサンプルデータに基づいて行うよう
にしたものである。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、外部装置からの要求
メッセージに対し、リアルタイムに応答できるマルチス
レッド・サーバに関するものである。
【0002】
【従来の技術】図22は従来のマルチスレッド・サーバ
を示す構成図であり、図において、1はプラント、2は
クライアント、3はネットワーク(バックプレーンバス
でもよい)であり、クライアント2及びネットワーク3
から外部装置が構成されている。4はプラント1からサ
ンプルデータを受信するとともに、外部装置から要求メ
ッセージを受信するレシーバ、5はレシーバ4により受
信された要求メッセージの内容に応じてチャイルドスレ
ッド6,7,8のいずれかを起動するとともに、レシー
バ4がサンプルデータを受信した場合にはそのサンプル
データをメモリ9に格納するマザースレッド、6,7,
8は外部装置から送られる要求メッセージに応じた処理
をメモリ9に格納されたサンプルデータに基づいて行う
チャイルドスレッドであり、チャイルドスレッド6,
7,8は起動時にマザースレッド5によって生成され
る。9はサンプルデータを格納するメモリ、10はチャ
イルドスレッド6,7,8の処理結果を一時的に保持す
るFIFOキュー、20はFIFOキュー10に保持さ
れた処理結果を、保持された順に取り出して外部装置へ
送信するトランスミッタである。
【0003】次に動作について説明する。まず、レシー
バ4は、プラント1からサンプルデータまたは外部装置
から要求メッセージを受信する。そして、マザースレッ
ド5は、レシーバ4がプラント1からサンプルデータを
受信した場合には、そのサンプルデータをメモリ9に格
納し、レシーバ4が外部装置から要求メッセージを受信
した場合には、その要求メッセージの内容に応じてチャ
イルドスレッド6,7,8のいずれかを生成して起動す
る。
【0004】例えば、マザースレッド5によりチャイル
ドスレッド6が起動された場合には、チャイルドスレッ
ド6は、要求メッセージに応じた処理をメモリ9に格納
されたサンプルデータに基づいて行う。そして、チャイ
ルドスレッド6の処理結果がFIFOキュー10に送信
され、一時的に保持される。そして、トランスミッタ2
0はFIFOキュー10に保持された処理結果を、保持
された順に取り出して外部装置へ送信する。即ち、図2
3に示すように、FIFOキュー10に先に保持された
処理結果が、後に保持された処理結果より優先度が低い
場合でも、優先度の低い先に保持された処理結果から送
信される。なお、チャイルドスレッド6,7,8はそれ
ぞれ並列的に処理を行うことができるが、メモリ9に対
するアクセスは同時に行うことができない。
【0005】
【発明が解決しようとする課題】従来のマルチスレッド
・サーバは以上のように構成されているので、プラント
1等からのサンプルデータも外部装置からの要求メッセ
ージもレシーバ4が受信してマザースレッド5がその後
の処理を決定しなければならず、従って、例えば、受信
した要求メッセージに応答する処理を行っている途中
で、サンプルデータを受信した場合、その処理が終了す
るまでそのサンプルデータをメモリ9に格納することが
できず、その結果、そのサンプルデータの格納が次のサ
ンプルデータの到着までに終了しないと、サンプルデー
タの欠測が起こる事態が発生する問題点があった。
【0006】また、レシーバ4は、複数の要求信号等を
保持する機能がないので、マザースレッド5が、レシー
バ4により受信された要求メッセージ等(便宜上、旧要
求メッセージという)を取り込む前に、他の要求メッセ
ージ等を外部装置から送られてしまうと、旧要求メッセ
ージが欠損してしまう問題点があった。
【0007】また、トランスミッタ20は、FIFOキ
ュー10に保持された順に取り出して送信するので、先
に保持された処理結果より後から保持された処理結果の
方が高速性を要求されていても、先に保持された処理結
果を送信するまで後に保持された処理結果は待たされて
しまい、外部装置の要求を十分満足することができない
問題点があった。
【0008】また、トランスミッタ20は、送信以外の
他の処理を行うスレッド(図3参照)の存在を確認せず
に処理結果を送信してしまうので、トランスミッタ20
の送信処理より当該スレッドの処理の方が高速性を要求
されていても、トランスミッタ20の送信処理が終わる
まで当該スレッドの処理が待たされてしまう問題点があ
った。
【0009】また、マザースレッド5は、要求メッセー
ジに応答する処理を実行する際に、チャイルドスレッド
6,7,8を生成する毎にチャイルドスレッド6,7,
8の処理に必要なメモリ領域を確保しなければならず、
従って、徐々にメモリ空間上に不要となったメモリ領域
が増えていくためガベージコレクションを行う必要が生
じ、その間要求メッセージに対する応答ができなくなる
問題点があった。
【0010】また、マザースレッド5は、要求メッセー
ジに応答する処理を実行する際に、その都度チャイルド
スレッド6,7,8を生成する必要があるが、スタック
領域が不足しているような場合には生成することができ
ず、スタック領域が解放されるまで処理を待機しなけれ
ばならない問題点があった。
【0011】さらに、チャイルドスレッド6,7,8は
それぞれ並列的に処理を行うことができるが、メモリ9
に対するアクセスは同時に行うことができないので、並
列処理の効率が低下し、高速処理ができないなどの問題
点もあった。
【0012】請求項1の発明は上記のような問題点を解
消するためになされたもので、受信したサンプルデータ
をメモリに格納中であっても、要求メッセージに対する
処理を可能にして、要求メッセージに対する処理の高速
化を図ることができるとともに、要求メッセージの欠損
を防止できるマルチスレッド・サーバを得ることを目的
とする。
【0013】請求項2の発明は、上記目的に加え、高速
性の要求される処理結果から順次送信できるようにし
て、外部装置の要求を十分満足できるマルチスレッド・
サーバを得ることを目的とする。
【0014】請求項3の発明は、処理結果を外部装置へ
送信する処理よりも、高速性の要求される処理がある場
合には、その高速性の要求される処理を優先して処理が
できるマルチスレッド・サーバを得ることを目的とす
る。
【0015】請求項4の発明は、要求メッセージの欠損
を防止できるとともに、高速性の要求される要求メッセ
ージに対する処理から行うことができるマルチスレッド
・サーバを得ることを目的とする。
【0016】請求項5の発明は、ガベージコレクション
を行う必要をなくし、要求メッセージに対する応答を妨
げられることのないマルチスレッド・サーバを得ること
を目的とする。
【0017】請求項6の発明は、スタック領域の不足を
理由に、要求メッセージに対する処理が遅延するのを防
止できるマルチスレッド・サーバを得ることを目的とす
る。
【0018】請求項7の発明は、並列処理の効率を向上
させ、高速に処理を行うことができるマルチスレッド・
サーバを得ることを目的とする。
【0019】請求項8の発明は、周期的に処理を行う周
期起動型スレッドのリアルタイム性を確保できるマルチ
スレッド・サーバを得ることを目的とする。
【0020】請求項9及び請求項10の発明は、タイマ
スレッドの待ち時間をできるだけ短くできるマルチスレ
ッド・サーバを得ることを目的とする。
【0021】
【課題を解決するための手段】請求項1の発明に係るマ
ルチスレッド・サーバは、第2の受信部により保持され
た要求メッセージを順次取り出し、その要求メッセージ
の内容に応じた処理を第1の受信部が受信してメモリに
格納したサンプルデータに基づいて行うようにしたもの
である。
【0022】請求項2の発明に係るマルチスレッド・サ
ーバは、処理実行部の処理結果を一時的に保持するとと
もに、複数の処理結果を保持した場合には優先度の高い
処理結果から順次外部装置に対して送信するようにした
ものである。
【0023】請求項3の発明に係るマルチスレッド・サ
ーバは、処理実行部の処理結果を外部装置に対して送信
する処理を行う際に、他の処理と競合する場合、該他の
処理より優先度が高いときのみ処理を行うようにしたも
のである。
【0024】請求項4の発明に係るマルチスレッド・サ
ーバは、第2の受信部が複数の要求メッセージを保持し
ている場合、優先度の高い要求メッセージから順次取り
出すようにしたものである。
【0025】請求項5の発明に係るマルチスレッド・サ
ーバは、各スレッドが処理を実行する際に必要となるメ
モリ領域を各スレッド毎に予め確保しておき、各スレッ
ドに処理を実行させる際に対応するメモリ領域を割り当
てるようにしたものである。
【0026】請求項6の発明に係るマルチスレッド・サ
ーバは、処理に必要となるスレッドを予め生成し、待機
状態にしておくようにしたものである。
【0027】請求項7の発明に係るマルチスレッド・サ
ーバは、第1の受信部により受信されたサンプルデータ
をメモリに格納中に、処理実行部から所定のアドレスに
格納されているサンプルデータの読み込み要求があった
場合、その読み込み要求に係るアドレスが、現在サンプ
ルデータを格納しているアドレスと一致するときのみそ
の読み込み要求を却下するようにしたものである。
【0028】請求項8の発明に係るマルチスレッド・サ
ーバは、所定の起動周期毎に周期起動型スレッドを起動
させるとともに、その周期起動型スレッドが起動後所定
時刻経過しても処理を終了しない場合には、その処理を
中断させて獲得している資源を解放させるタイマスレッ
ドを設けたものである。
【0029】請求項9の発明に係るマルチスレッド・サ
ーバは、タイマスレッドより優先度の低いスレッドがセ
マフォを獲得しているためにそのタイマスレッドが待ち
状態になっている場合、一時的にその優先度の低いスレ
ッドの優先度をそのタイマスレッドの優先度と同一にす
る優先度継承機能をそのセマフォに持たせたものであ
る。
【0030】請求項10の発明に係るマルチスレッド・
サーバは、共有資源を使用しているか否かを示すフラグ
及びそのフラグを読み書きするためのセマフォを各スレ
ッド毎に設けるとともに、タイマスレッドより優先度の
低いスレッドが当該セマフォを獲得しているためにその
タイマスレッドが待ち状態になっている場合、一時的に
その優先度の低いスレッドの優先度をそのタイマスレッ
ドの優先度と同一にする優先度継承機能をそのセマフォ
に持たせたものである。
【0031】
【作用】請求項1の発明におけるマルチスレッド・サー
バは、要求メッセージを保持する第2の受信部を設けた
ことにより、要求メッセージの欠損が防止され、また、
第2の受信部により保持された要求メッセージを順次取
り出し、その要求メッセージの内容に応じた処理を第1
の受信部が受信してメモリに格納したサンプルデータに
基づいて行う処理実行部を設けたことにより、第2の受
信部から要求メッセージを受信中でも、第1の受信部か
らサンプルデータを受信してメモリに格納することがで
きる。
【0032】請求項2の発明におけるマルチスレッド・
サーバは、処理実行部の処理結果を一時的に保持すると
ともに、複数の処理結果を保持した場合には優先度の高
い処理結果から順次外部装置に対して送信する送信部を
設けたことにより、高速性の要求される処理結果から順
次送信できるようになる。
【0033】請求項3の発明におけるマルチスレッド・
サーバは、処理実行部の処理結果を外部装置に対して送
信する処理を行う際に、他の処理と競合する場合、該他
の処理より優先度が高いときのみ処理を行う送信部を設
けたことにより、処理結果を外部装置へ送信する処理よ
りも、高速性の要求される処理がある場合には、その高
速性の要求される処理から優先して処理される。
【0034】請求項4の発明におけるマルチスレッド・
サーバは、第2の受信部が複数の要求メッセージを保持
している場合、優先度の高い要求メッセージから順次取
り出す処理実行部を設けたことにより、要求メッセージ
の欠損を防止され、また、高速性の要求される要求メッ
セージに対する処理から行なえる。
【0035】請求項5の発明におけるマルチスレッド・
サーバは、各スレッドが処理を実行する際に必要となる
メモリ領域を各スレッド毎に予め確保しておき、各スレ
ッドに処理を実行させる際に対応するメモリ領域を割り
当てる処理実行部を設けたことにより、ガベージコレク
ションを行う必要がなくなる。
【0036】請求項6の発明におけるマルチスレッド・
サーバは、処理に必要となるスレッドを予め生成し、待
機状態にしておく処理実行部を設けたことにより、スタ
ック領域の不足を理由に、要求メッセージに対する処理
が遅延するのを防止される。
【0037】請求項7の発明におけるマルチスレッド・
サーバは、第1の受信部により受信されたサンプルデー
タをメモリに格納中に、処理実行部から所定のアドレス
に格納されているサンプルデータの読み込み要求があっ
た場合、その読み込み要求に係るアドレスが、現在サン
プルデータを格納しているアドレスと一致するときのみ
その読み込み要求を却下するようにしたことにより、同
じデータを同時に読み書きすることによって生じるデー
タ内容の矛盾を防止しつつデータの読み書きの並列処理
が可能になる。
【0038】請求項8の発明におけるマルチスレッド・
サーバは、所定の起動周期毎に周期起動型スレッドを起
動させるとともに、その周期起動型スレッドが起動後所
定時刻経過しても処理を終了しない場合には、その処理
を中断させて獲得している資源を解放させるタイマスレ
ッドを設けたことにより、他の周期起動型スレッドを所
定の起動周期毎に確実に起動できるようになる。
【0039】請求項9の発明におけるマルチスレッド・
サーバは、タイマスレッドより優先度の低いスレッドが
セマフォを獲得しているためにそのタイマスレッドが待
ち状態になっている場合、一時的にその優先度の低いス
レッドの優先度をそのタイマスレッドの優先度と同一に
する優先度継承機能をそのセマフォに持たせたことによ
り、優先度の低いスレッドがセマフォを獲得していて
も、その優先度の低いスレッドの処理が速やかに行われ
るため、タイマスレッドがセマフォを獲得するまでの待
ち時間が短縮される。
【0040】請求項10の発明におけるマルチスレッド
・サーバは、共有資源を使用しているか否かを示すフラ
グ及びそのフラグを読み書きするためのセマフォを各ス
レッド毎に設けるとともに、タイマスレッドより優先度
の低いスレッドが当該セマフォを獲得しているためにそ
のタイマスレッドが待ち状態になっている場合、一時的
にその優先度の低いスレッドの優先度をそのタイマスレ
ッドの優先度と同一にする優先度継承機能をそのセマフ
ォに持たせたことにより、優先度の低いスレッドがセマ
フォを獲得していても、その優先度の低いスレッドの処
理が速やかに行われるため、タイマスレッドがセマフォ
を獲得するまでの待ち時間が短縮される。
【0041】
【実施例】
実施例1.以下、この発明の一実施例を図について説明
する。図1はこの発明の実施例1によるマルチスレッド
・サーバを示す構成図であり、図において、従来のもの
と同一符号は同一または相当部分を示すので説明を省略
する。11はプラント1からサンプルデータを受信する
FIFOキュー(第1の受信部)、12はFIFOキュ
ー11が受信したサンプルデータを一定周期でリングバ
ッファ13に書き込む周期起動型スレッド、13はその
サンプルデータを格納するリングバッファ(メモリ)、
14は周期起動型スレッド12が現在書き込み中である
リングバッファ13のインデックス(アドレス)より少
し過去のサンプルデータをいくつかまとめてディスク1
5へ一定周期で書き込む周期起動型スレッド、15はデ
ィスク(メモリ)である。
【0042】また、16はクライアント2からネットワ
ーク3を介して要求メッセージを受信するレシーバ、1
7はレシーバ16が受信したその要求メッセージを保持
するFIFOキューであり、レシーバ16及びFIFO
キュー17から第2の受信部が構成されている。
【0043】また、18はFIFOキュー17により保
持された要求メッセージを順次取り出し、その要求メッ
セージの内容に応じてチャイルドスレッド6,7,8の
いずれかを起動することにより、その要求メッセージの
内容に応じた処理をリングバッファ13及びディスク1
5に格納されたサンプルデータに基づいて行うマザース
レッドであり、マザースレッド18及びチャイルドスレ
ッド6,7,8から処理実行部が構成されている。
【0044】また、19はチャイルドスレッド6,7,
8の処理結果を一時的に保持するFIFOキュー、20
はFIFOキュー19により保持されたその処理結果を
ネットワーク3を介してクライアント2に対して送信す
るトランスミッタであり、FIFOキュー19及びトラ
ンスミッタ20から送信部が構成されている。
【0045】次に動作について説明する。まず、サンプ
ルデータは、例えば、10msec毎にプラント1から
送信され、FIFOキュー11がこれを受信する。そし
て、FIFOキュー11に受信されたサンプルデータ
は、周期起動型スレッド12によって周期的にリングバ
ッファ13に格納される。また、リングバッファ13に
ある程度サンプルデータが蓄積されていくと、周期起動
型スレッド14によってサンプルデータをいくつかまと
めてディスク15に格納される。なお、リングバッファ
13及びディスク15にサンプルデータを格納する際、
いつサンプルされたサンプルデータであるか分かるよう
に時刻情報もいっしょに格納される。
【0046】一方、要求メッセージは、不定期にクライ
アント2からネットワーク3を介して送信され、レシー
バ16がこれを受信する。そして、レシーバ16に受信
された要求メッセージは、一時的にFIFOキュー17
に格納される。そして、FIFOキュー17に格納され
た要求メッセージを、マザースレッド18が順次取り込
み、その要求メッセージの内容に応じてチャイルドスレ
ッド6,7,8のいずれかを生成して起動する(チャイ
ルドスレッド6,7,8を起動する際、処理に必要なメ
モリ領域を動的に確保する。詳細は後述する。)。ここ
で、要求メッセージには、下記に示すようなものがあ
る。 あるイベントが起こった場合にそのイベントの発生
を通知 現在時刻のサンプルデータの周期転送 過去のある時刻からある時刻までのサンプルデータ
の一斉転送
【0047】そして、マザースレッド18により起動さ
れたチャイルドスレッド6,7,8は、要求メッセージ
の内容に応じた処理をリングバッファ13及びディスク
15に格納されているサンプルデータに基づいて行う
(必要とするサンプルデータがリングバッファ13に格
納されていない場合、ディスク15とアクセスする)。
例えば、要求メッセージの内容が、上記の内容であれ
ば、イベントの起動があった旨の通知をクライアント2
に対して送信する処理を行う。また、要求メッセージの
内容が、上記の内容であれば、リングバッファ13
等から該当するサンプルデータを読み込んでクライアン
ト2に対して送信する処理を行う。
【0048】そして、チャイルドスレッド6,7,8の
処理結果はFIFOキュー19に送信され、一時的に保
持される。なお、チャイルドスレッド6,7,8は並列
処理が可能であるため、FIFOキュー19に複数の処
理結果が保持されることがある。そして、FIFOキュ
ー19に保持された処理結果は、トランスミッタ20が
順次取り込んでネットワーク3を介してクライアント2
に対して送信し、一連の処理を終了する。
【0049】このように、実施例1では、要求メッセー
ジを受信するレシーバ16の他に、プラント1から送信
されるサンプルデータを受信する専用のFIFOキュー
11を設けるようにしているので、要求メッセージの処
理と別個独立にサンプルデータのサンプル処理を行うこ
とができるようになり、従って、要求メッセージの処理
によってサンプル処理が妨げられる事態が発生すること
がなくなり、サンプル処理をその時間上の制約を保って
行うことができる。また、要求メッセージを一時的に保
持するFIFOキュー17を設けているので、前に送ら
れた要求メッセージに対する処理が終了する前に他の要
求メッセージが複数個クライアント2から送信されてき
たとしても、要求メッセージが欠損するという事態は発
生しない。因に、この実施例1は請求項1の発明に対応
している。
【0050】実施例2.上記実施例1では、FIFOキ
ュー19に複数の処理結果を保持された場合、FIFO
キュー19に保持された順にその処理結果を送信するも
のについて説明したが、図2に示すように、複数の処理
結果を保持した場合には優先度の高い処理結果から順次
クライアント2に対して送信するようにしてもよい。図
2において、19a、19b、19cはFIFOキュー
19の構成要素であり、それぞれチャイルドスレッド
6,7,8の処理結果を一時的に保持する。また、21
はFIFOキュー19が複数の処理結果を保持した場合
には優先度の高い処理結果から順次クライアント2に対
して送信するトランスミッタ(送信部)である。
【0051】次に動作について説明する。まず、要求メ
ッセージは、上記のごとく内容がそれぞれ異なってお
り、従って、それぞれクライアント2に対して応答する
に際して時間上の制約に関係した優先度が存在する。例
えば、チャイルドスレッド6は、上記の要求メッセー
ジに対する処理を行うものである場合、かかる処理は、
イベント発生に対するクライアント2の対応が間に合う
ように、ある時間以内にクライアント2に送信される必
要があるので極めて高い優先度Pmq2 を有している。ま
た、チャイルドスレッド7は、上記の要求メッセージ
に対する処理を行うものである場合、かかる処理は、ク
ライアント2がまだ最新のサンプルデータとして利用す
る価値のある時間以内に送信される必要があるので、チ
ャイルドスレッド6の処理に次いで高い優先度Pmq1
有する。また、チャイルドスレッド8は、上記の要求
メッセージに対する処理を行うものである場合、かかる
処理は、送信が多少遅れても支障が少ないのでチャイル
ドスレッド6,7の処理より低い優先度Pmq0 を有して
いる。 Pmq0 <Pmq1 <Pmq2
【0052】この場合において、チャイルドスレッド8
から優先度Pmq0 の処理結果がFIFOキュー19cに
送信されて格納された後、直ちにチャイルドスレッド6
から優先度Pmq2 の処理結果がFIFOキュー19aに
送信されて格納されたとする。実施例1では、FIFO
キュー19に格納された順に送信するので、チャイルド
スレッド8の処理結果を先に送信することになるが、実
施例2では、処理結果の優先度を考慮して送信するの
で、優先度の高いチャイルドスレッド6の処理結果を先
に送信することになる。これにより、クライアント2の
要求に則した処理が可能になる。因に、この実施例2は
請求項2の発明に対応している。
【0053】実施例3.上記実施例2では、トランスミ
ッタ21は、送信以外の他の処理を行うスレッド22の
存在を確認せずに処理結果を送信するものについて説明
したが、図3に示すように、チャイルドスレッド6,
7,8の処理結果をクライアント2に対して送信する処
理を行う際に、送信以外の他の処理を行うスレッド22
と競合する場合、スレッド22の処理の優先度Petc
り高い優先度をトランスミッタ21の送信スレッドが有
するときのみ送信処理を行うようにしてもよい。図にお
いて、21a、21b、21cはトランスミッタ21の
送信スレッド、22は送信以外の他の処理を行うスレッ
ド、23はセマフォである。
【0054】次に動作について説明する。例えば、送信
スレッド21a,21b,21cの優先度をそれぞれP
tr2 ,P tr1 ,Ptr0 とし、優先度の高さの関係は下記
のようにあるとする。 Ptr0 <Ptr1 <Petc <Ptr2
【0055】この場合において、送信スレッド21aが
送信処理を行うときは、送信スレッド21aの優先度P
tr2 は、スレッド22の優先度Petc より高いので、ス
レッド22が存在していても直ちに送信処理が行われ
る。一方、送信スレッド21cが送信処理を行うとき
は、送信スレッド21cの優先度Ptr0 は、スレッド2
2の優先度Petc より低いので、スレッド22の処理が
終了するまで送信処理が待機される。
【0056】なお、セマフォ23は、複数の送信スレッ
ド21a,21b,21cが同時にネットワーク3へ送
信するのを避けるために設けられている。セマフォ23
を獲得できる送信スレッドは1つであり、セマフォ23
を獲得している送信スレッド(図3の例では送信スレッ
ド21aが獲得している)のみがネットワーク3に対し
て送信することができる。
【0057】ここで、セマフォ23を設けた場合下記の
不具合がある。即ち、低い優先度を有する送信スレッド
21cがセマフォ23を獲得した後に、高い優先度を有
する送信スレッド21aがFIFOキュー19aに格納
されたような場合、低い優先度を有する送信スレッド2
1cがセマフォ23を獲得しているので、高い優先度を
有する送信スレッド21aは送信スレッド21cの送信
処理を待たなければならいが、送信スレッド21cの優
先度はスレッド22の優先度より低いので、送信スレッ
ド21cはスレッド22の処理が終了するまで待機状態
になる。従って、スレッド21aは高い優先度を有して
いるのにもかかわらず、結果として、スレッド22及び
送信スレッド21cの処理が終了するまで送信処理を行
うことができない不具合がある。
【0058】そこで、セマフォ23に優先度継承機能
(送信スレッドの優先度変更機能)を持たせることによ
り上記不具合を解消することができる。即ち、一時的に
送信スレッド21cの優先度を送信スレッド21aの優
先度まで高めることにより、送信スレッド21cの送信
処理をスレッド22に優先させる。送信スレッド21c
の処理が終了すれば、送信スレッド21aがセマフォ2
3を獲得し、送信スレッド21aの優先度はスレッド2
2の優先度より高いので、送信スレッド21aはスレッ
ド22の処理を待たずに送信が可能になる。従って、送
信スレッド21aの待ち時間を短縮することができる。
因に、この実施例3は請求項3の発明に対応している。
【0059】実施例4.上記実施例1では、要求メッセ
ージがFIFOキュー17に保持された順に、マザース
レッド18が取り出して処理するものについて説明した
が、図4に示すように、要求メッセージに優先度を持た
せ、FIFOキュー17に先に格納された要求メッセー
ジの優先度より、後に格納された要求メッセージの優先
度が高い場合、後に格納された要求メッセージからマザ
ースレッド18が取り込んで処理するようにしてもよ
い。これにより、高速性の要求される要求メッセージに
対する処理から行うことができるようになる。因に、こ
の実施例4は請求項4の発明に対応している。
【0060】実施例5.上記実施例1では、要求メッセ
ージの内容に応じてマザースレッド18がチャイルドス
レッド6,7,8のいずれかを生成して起動する際、処
理に必要なメモリ領域を動的に確保するものについて説
明したが、図5に示すように、各チャイルドスレッド
6,7,8が処理を実行する際に必要となるメモリ領域
を各スレッド6,7,8毎に予め確保しておき、各スレ
ッド6,7,8に処理を実行させる際に対応するメモリ
領域を割り当てるようにしてもよい。また、上記実施例
1では、マザースレッド18がその都度チャイルドスレ
ッド6,7,8を生成するようにしていたが、チャイル
ドスレッド6,7,8を予め生成して待機状態にしてお
いてもよい。
【0061】以下、図5について詳細に説明する。図5
において、31はスレッドプール、32,33,34は
それぞれチャイルドスレッド6,7,8が処理を行う際
に必要となるメモリ領域であり、スレッドを実行すべき
関数へのポインタ、その関数への引数、スレッドの優先
度、周期起動型スレッドの場合には、周期及びデッドラ
イン、イベント起動型スレッドの場合には、待つべきイ
ベント(以下、起動イベントという)の種類などの情報
が格納される。なお、各チャイルドスレッド6,7,8
は初期化時には待機状態にある。
【0062】また、35はスレッドプール31を管理す
るスレッドプール管理テーブル、36は管理テーブルセ
マフォ、37は待機中のチャイルドスレッド6,7,8
の数を格納する領域、38はマザースレッド18の起動
要求をスレッドプール31に対して知らせる要求セマフ
ォ、39は起動要求を受けつけたチャイルドスレッド
6,7,8のスレッドIDを格納する領域、40はスレ
ッドプール31からマザースレッド18へ要求の受領を
知らせるための受領セマフォ、41はマザースレッド1
8からスレッドプール31へ起動命令を伝えるための起
動セマフォである。また、42はマザースレッド18以
外にスレッドプール31を用いるスレッドである。
【0063】次に動作について説明する。まず、マザー
スレッド18は、スレッドプール管理テーブル35への
アクセス権を得るために管理テーブルセマフォ36にロ
ックをかける(動作1)。そして、管理テーブルセマフ
ォ36へのロックに失敗した場合には、一定時間後に再
度ロックを試みる。管理テーブルセマフォ36へのロッ
クに成功した場合には、領域37に格納されている待機
中のスレッドを確認し(動作2)、“0”であれば起動
不可能として例外処理を行うか、あるいは、一定時間後
に再度起動を試みる。“1”以上であれば要求セマフォ
38に対してシグナルを送信する(動作3)。
【0064】また、待機中のチャイルドスレッド6,8
はすべて要求セマフォ38からのシグナルの到着を待っ
ており、マザースレッド18からのシグナルは、これら
の待機中のチャイルドスレッド6,8のいずれか1つに
よって受信される。この例の場合では、チャイルドスレ
ッド6によって受信されたものとする。
【0065】チャイルドスレッド6は、起動を受領した
スレッドが自分であることをマザースレッド18に知ら
せるため、自分のスレッドIDを領域39に書き込み
(動作5)、その後、受領セマフォ40にシグナルを送
信し(動作6)、起動セマフォ41へのシグナルの到着
を待つ。
【0066】一方、マザースレッド18は、動作3の終
了後、受領セマフォ40へのシグナルの到着を待ってお
り、チャイルドスレッド6からのシグナルを受信すると
(動作7)、領域39から要求を受領したスレッドID
を読み取る(動作8)。
【0067】ここで、マザースレッド18は、予め確保
されているメモリ領域32に対して起動に必要な情報を
書き込み(動作9)、書き込みが完了すると、起動セマ
フォ41へシグナルを送信する(動作10)。チャイル
ドスレッド6は、起動セマフォ41からシグナルを受信
すると(動作11)、領域37の待機中のスレッドの数
を“1”減らし(動作12)、管理テーブルセマフォ3
6へのロックを解除する(動作13)。
【0068】このように、予め各チャイルドスレッド
6,7,8が実行時に必要となるメモリ領域32,3
3,34を確保しておくことにより、メモリ領域確保の
繰り返しを原因とするメモリ空間上の不要なメモリが増
加していくという事態は発生しなくなる。従って、ガベ
ージコレクションを行う必要もなくなる。また、予め各
チャイルドスレッド6,7,8を初期化時に生成してお
くことにより、スタック領域の不足を原因とするチャイ
ルドスレッド6,7,8の生成不可という事態は発生し
なくなる。従って、スタック領域が解放されるまで処理
を待機しなければならないという従来の問題点は解消さ
れる。因に、この実施例5は請求項5及び請求項6の発
明に対応している。
【0069】次に、リアルタイム性を要求されないチャ
イルドスレッドのスレッドプール31内の構成及び動作
について説明する。図6はスレッドプール31内のチャ
イルドスレッドが有する起動情報の構成図である。実行
すべき関数へのポインタ、その関数への起動要求をだし
たマザースレッド18からの引数、実行の優先度が含ま
れている。また、図7はスレッドプール31内のチャイ
ルドスレッドの動作を示すフローチャートであり、マザ
ースレッド18、あるいは他のスレッド42から終了の
割り込みがかかると、ステップST11に制御を移す。
【0070】次に、周期起動型スレッドのスレッドプー
ル31内の構成及び動作について説明する。図8はスレ
ッドプール31内のチャイルドスレッドが有する起動情
報の構成図である。一周期ごとに実行すべき関数へのポ
インタ、その関数への起動要求をだしたマザースレッド
18からの引数、実行の優先度、起動の周期、一周期あ
たりの処理のデッドラインが含まれている。また、図9
はスレッドプール31内のチャイルドスレッドの動作を
示すフローチャートであり、マザースレッド18、ある
いは他のスレッド42が実行中の周期起動型スレッドを
停止させる場合には、各周期起動型スレッドの持つ終了
フラグを立てる。各周期起動型スレッドはその一周期ご
とに終了フラグをチェックし、それが立っていれば処理
を終了し、待機状態に戻る。
【0071】次に、イベント起動型スレッドのスレッド
プール31内の構成及び動作について説明する。図10
はスレッドプール31内のチャイルドスレッドが有する
起動情報の構成図である。イベントが発生したときに実
行すべき関数へのポインタ、その関数への起動要求をだ
したマザースレッド18からの引数、実行の優先度、起
動イベントに関する情報、処理のデッドラインが含まれ
ている。また、図11はスレッドプール31内のチャイ
ルドスレッドの動作を示すフローチャートである。マザ
ースレッド18、あるいは他のスレッド42がイベント
待ちをしているイベント起動型スレッドを待機状態にす
る場合には、そのスレッドに対して終了イベントを送信
する。終了イベントを受信したスレッドは待機状態に戻
る。
【0072】スレッドプール31内の各チャイルドスレ
ッド6,7,8に、リアルタイム性を要求されないスレ
ッド、周期起動型スレッド、イベント起動型スレッドの
いずれの動作をも行わせるようにすることができる。マ
ザースレッド18からスレッドプール31内の各チャイ
ルドスレッド6,7,8へ受け渡す起動情報の中に起動
するスレッドの種類を含ませる。スレッドプール31内
のチャイルドスレッド6,7,8はこの情報に基づき行
う処理を決定する。また、図12はスレッドプール31
内の各チャイルドスレッド6,7,8がもつ起動情報の
構成図であり、図13はスレッドプール31内の各チャ
イルドスレッドの動作を示すフローチャートである。
【0073】ここで、スレッドプール31内の数をnと
する。クライアント2から送られるスレッドの起動要求
(要求メッセージ)によってこれらのスレッドに処理が
受け渡される。あるイベントが生じた場合の緊急通知を
行うスレッドの数の上限をn1 、現在起動されている数
をi1 、サンプルデータの周期的な転送を行うスレッド
の数の上限をn2 、現在起動されている数をi2 、ある
イベントが生じた場合の任意期間のサンプルデータの転
送を行うスレッドの数の上限をn3 、現在起動されてい
る数をi3 とする。また、下記の関係があるとする。 n1 +n2 +n3 >n n1 ≦n n2 ≦n n3 ≦n
【0074】この場合において、i1 ,i2 が小さく、
下記の関係がある場合には、任意期間のサンプルデータ
の転送を行うスレッドを最大数n3 まで起動することが
できる。 i1 +i2 +i3 ≦n ・・・(1) そして、緊急通知を行うスレッドや周期転送を行うスレ
ッドの起動要求がクライアント2から送られて式(1)
の関係を満たさなくなった場合には、これを満たすよう
に任意期間のサンプルデータの転送を行うスレッドのい
くつかを中断あるいは終了させる。
【0075】実施例6.図14はリングバッファ13及
びディスク15に対して複数のスレッドが書き込み及び
読み出しを行う動作を説明する構成図である。以下、リ
ングバッファ13等をアクセスするスレッドの機能に応
じて説明する。
【0076】 書き込みスレッド まず、周期起動型スレッド12(書き込みスレッド)
は、リングバッファ13へ周期ごとに書き込みを行う。
書き込まれるリングバッファ13のインデックスは書き
込みごとに一つずつ移動する。ここで、周期起動型スレ
ッド12が現在書き込みを行っているインデックス(図
中、×で示してあるインデックス)を格納する領域51
が予め用意されている。また、領域51は複数のスレッ
ドからアクセスされるため、領域51の相互排除のため
セマフォ52が設けられている。
【0077】そして、周期起動型スレッド12は書き込
み中に、他のスレッドが書き込み中のインデックスにア
クセスするのを防止すべく、書き込むインデックスを変
えるごとに、領域51にそのインデックスを書き込む。
なお、各スレッドの領域51へのアクセスに要する時間
は小さく、またセマフォ52に優先度承継機能を持たせ
ているので、各スレッドがセマフォ52の獲得のために
長い時間待たされることはない。
【0078】 バックアップスレッド 周期起動型スレッド14(バックアップスレッド)はリ
ングバッファ13上のサンプルデータを、それらが失わ
れないうちにディスク15へ格納する。ディスク15上
にはバックアップ用のファイルがいくつか用意され、各
スレッドからは図に示すように、リング状に配置されて
いるように見ることができる。周期起動型スレッド14
は、リングバッファ13上に対して周期起動型スレッド
12が書き込んでいるインデックスのサンプルデータよ
りある程度遅れた時刻のサンプルデータを一度にいくつ
かまとめてディスクに転送する。
【0079】周期スレッド12及び周期スレッド14が
アクセスするリングバッファ13上のインデックスの移
動の速度は等しく、また、周期スレッド14は周期スレ
ッド12が書き込みを行っているインデックスから十分
はなれたインデックスを読み出すので、周期スレッド1
2及び周期スレッド14が同じインデックスを同時にア
クセスすることはない。また、ディスク15上のファイ
ルには、各ファイルに定められた容量まで書き込み、そ
の容量に達するとそのファイルをクローズし、次のファ
イルへの書き込みを始める。
【0080】ここで、ディスク15に対しても、現在書
き込みを行っているファイルに関する領域53を用意す
るとともに、領域53の相互排除のためセマフォ54を
設けている。領域53の格納する情報は、現在書き込み
が行われているファイルの番号とそのファイル上にある
最も過去のサンプルデータの時刻である。従って、周期
起動型スレッド14は、現在書き込みを行っているファ
イルの番号を領域53に書き込むようにしている。ま
た、新しいファイルに書き込みを始める際には、そのフ
ァイルに書き込んだ最初のサンプルデータの時刻を領域
53に書き込むようにしている。
【0081】 周期的な読み出しを行うスレッド 例えば、チャイルドスレッド7が周期起動型スレッドの
場合、チャイルドスレッド7は、一周期ごとに、リング
バッファ13上に格納されている最新のサンプルデータ
を読み出す。チャイルドスレッド7はその周期ごとに領
域51の内容を読み出し、現在周期起動型スレッド12
が書き込みを行っているインデックスの1つ手前のイン
デックス(図中、○で示してあるインデックス)の内容
を読み出す。
【0082】 任意期間の読み出しを行うスレッド 例えば、チャイルドスレッド8が任意期間の読み出しを
行うスレッドの場合、チャイルドスレッド8は、任意時
刻から任意時刻までのサンプルデータを任意の間隔で読
み出す。要求されたサンプルデータのうちリングバッフ
ァ13及びディスク15上にないものがある場合には、
リングバッファ13及びディスク15上にあるサンプル
データのみを読み出しに先行して、そのサンプルデータ
をリングバッファ13から読み出すべきか、ディスク1
5から読み出すべきかを決定する。
【0083】領域53に格納されている現在書き込まれ
ているファイル上の最も過去のサンプルデータの時刻
と、読み出すべきサンプルデータの時刻を比較する。後
者の方が過去のものであれば、既にディスク15上から
失われているほどの過去のサンプルデータでない限り、
ディスク15から読み出す。後者が前者と同じ、あるい
は後者の方が前者より新しい時刻であれば、領域51の
示すインデックスに格納されているサンプルデータより
新しい時刻でない限り、リングバッファ13から読み出
す(図中、△で示してあるインデックス)。
【0084】このように、実施例6によれば、FIFO
キュー11により受信されたサンプルデータをリングバ
ッファ13に格納中に、チャイルドスレッド7,8から
所定のアドレスに格納されているサンプルデータの読み
込み要求があった場合、現在サンプルデータを格納して
いるアドレスよりも手間のアドレスの内容に限り読み出
せるようにしているので、即ち、読み込み要求に係るア
ドレスが現在サンプルデータを格納しているアドレスと
一致するときはその読み込み要求を却下するようにして
いるので、同じデータを同時に読み書きすることによっ
て生じるデータ内容の矛盾を防止しつつデータの読み書
きの並列処理が可能になり、その結果、高速に処理を行
うことができる効果がある。因に、この実施例6は請求
項7の発明に対応している。
【0085】実施例7.上記実施例1〜6では、周期起
動型スレッドの処理の終了については特に言及しなかっ
たが、周期起動型スレッドが起動後所定時刻経過しても
処理を終了しない場合には、その処理を中断させて獲得
している資源を解放させるようにしてもよい。これによ
り、上記実施例1〜6であれば、ある周期起動型スレッ
ドの処理が複雑である等のため処理時間内に処理が終了
しない場合には、リアルタイム性を要求される他の周期
起動型スレッドの処理の開始が遅れる等の不具合があっ
たが、他の周期起動型スレッドを所定の起動周期毎に確
実に起動できるようになる。
【0086】図15はこの発明の実施例7によるマルチ
スレッド・サーバを示す構成図であり、図において、6
1はマザースレッド18が生成するチャイルドスレッド
6,7,8等のうち、周期的に起動される周期起動型ス
レッド7,12,14の起動及び終了を管理するタイマ
スレッドであり、そのタイマスレッド61は所定の起動
周期毎にその周期起動型スレッド7,12,14を起動
させるとともに、その周期起動型スレッド7,12,1
4が起動後、所定時刻(デッドライン)経過しても処理
を終了しない場合には、その処理を中断させて獲得して
いる資源を解放させる機能を有している。62は各スレ
ッドの情報を格納するスレッド管理テーブル(資源)で
ある(図16参照)。
【0087】次に動作について説明する。まず、スレッ
ド管理テーブル62には、図16に示すように、当該ス
レッドが周期起動型スレッドであるか否かを示すUフラ
グ、当該スレッドが周期毎の処理を実行中であるか否か
を示すEフラグ、当該スレッドの起動時刻までの時間を
タイマスレッド61の起動回数(例えば、タイマスレッ
ド61の起動周期が100msであって、スレッドの起
動時刻までの時間が200msであれば、起動回数は2
回となる)で示すUSフィールド(既に起動されている
場合には負の値になる)、当該スレッドの次の起動まで
の時間をタイマスレッド61の起動回数で示すUWフィ
ールド、当該スレッドのデッドラインまでの時間をタイ
マスレッド61の起動回数示すUDフィールド、当該ス
レッドの周期を格納する周期フィールド、当該スレッド
のデッドラインを格納するデッドラインフィールドが記
憶されている。
【0088】そして、スレッド管理テーブル62に記憶
されている各スレッドの情報は、マザースレッド18が
管理しており、具体的には、マザータスク18が要求メ
ッセージにしたがってチャイルドスレッドを生成等する
ときに、そのチャイルドスレッドの情報をスレッド管理
テーブル62に登録する。一方、当該スレッドの消滅、
停止要求等を受けるとそのスレッドの登録を抹消する。
【0089】従って、スレッド管理テーブル62の記憶
内容を解読すれば、どのスレッドが周期起動型のスレッ
ドであるか否か、当該スレッドの起動周期、当該スレッ
ドのデッドライン等の情報を得ることができることにな
るので、タイマスレッド61は、周期起動型スレッドの
起動周期に比べて極めて短い周期毎にスレッド管理テー
ブル62の記憶内容を解読する。
【0090】そして、タイマスレッド61は、ある周期
起動型スレッドが起動時刻に到達していれば、その周期
起動型スレッドに対して起動シグナルを通知することに
より、その周期起動型スレッドを起動させる。また、そ
の周期起動型スレッドが起動してから所定時刻経過して
も処理が終了しない場合には、その周期起動型スレッド
にタイムアウトを通知することにより、その周期起動型
スレッドの処理を強制的に中断させるとともに、他の周
期起動型スレッドの処理を妨げないために、その周期起
動型スレッドが獲得している資源を解放させるなどの必
要なタイムアウト処理を実行させる。
【0091】このように、実施例7によれば、タイマス
レッド61が、周期起動型スレッドが起動後所定時刻経
過しても処理を終了しない場合には、その処理を中断さ
せて獲得している資源を解放させるようにしているの
で、ある周期起動型スレッドの処理が複雑である等のた
め処理時間内に処理が終了しない場合でも、他の周期起
動型スレッドの起動に影響が及ぶことがなく、周期起動
型スレッドのリアルタイム性を確保することができる。
因に、この実施例7は請求項8の発明に対応している。
【0092】実施例8.上記実施例7では、各スレッド
間の共有資源であるスレッド管理テーブル62に対する
読み書きの相互排除について特に言及しなかったが、ス
レッド管理テーブル62は各スレッド間の共有資源であ
るため、複数のスレッドが同一のデータを同時に読み書
きする場合が考えられる。そして、同一データの同時読
み書きがなされた場合には、その影響でデータ内容に矛
盾が生じる場合があるので、読み書きに対して相互排除
の必要性がある。例えば、タイマスレッド61がスレッ
ド管理テーブル62の内容を読み込み中に、周期起動型
スレッド等がスレッド管理テーブル62の内容を書き換
えてしまうと、タイマスレッド61は正しいデータが得
られなくなる場合がある。
【0093】そこで、相互排除の方法として、スレッド
がセマフォを獲得した場合に限りスレッド管理テーブル
62に対して読み書きできるようにする手法が考えられ
るが、単にセマフォの獲得だけを読み書きできる条件と
すると、例えば下記に示すような不具合を生じる場合が
ある。即ち、タイマスレッド61より優先度の低いスレ
ッド7等がセマフォを獲得しているためにそのタイマス
レッド61が待ち状態になっている場合、タイマスレッ
ド61がセマフォを獲得して起動するためには、その優
先度の低いスレッド7等が処理を終了してセマフォを解
放しなければならないが、そのスレッド7等は優先度が
低いために、他のスレッドの処理が終了するのを待つ待
機状態になる場合があり、この場合、スレッド7等は処
理を終了することができないためセマフォを解放するこ
とができず、その結果、タイマスレッド61が起動でき
ないという不具合を生じることがある。因に、タイマス
レッド61は、他のスレッドの起動等を管理するスレッ
ドであるため、マザースレッド18や周期起動型スレッ
ド等よりも優先度が高く設定されている。
【0094】この実施例8は、上記のような不具合を解
消しつつスレッド管理テーブル62に対する読み書きの
相互排除を行うものであり、実施例8の構成を下記に示
す。即ち、この実施例8では、図16に示すように、ス
レッド管理テーブル62に対する読み書きの相互排除を
行うためにセマフォ63,64を設けるとともに、タイ
マスレッド61より優先度の低いスレッド7等がそのセ
マフォ63,64を獲得しているためにそのタイマスレ
ッド61が待ち状態になっている場合、一時的にその優
先度の低いスレッド7等の優先度をそのタイマスレッド
61の優先度と同一にする優先度継承機能をセマフォ6
3,64に持たせるようにしたものである。
【0095】これにより、本来優先度の低いスレッド7
等の優先度が、優先度の高いタイマスレッド61の優先
度と一時的に同一になるため、優先度の関係で他のスレ
ッドの処理の実行に伴ってスレッド7等が待機状態にな
る場合がほとんどなくなり、その結果、スレッド7等の
処理が速やかに行われてセマフォ63,64が解放され
るので、タイマスレッド61は速やかにセマフォ63,
64を獲得できるようになる。従って、周期起動型スレ
ッドのリアルタイム性を確保できるとともに、装置の信
頼性が向上する。
【0096】ここで、図17はタイマスレッド61の動
作を示すフローチャートであり、その動作を簡単に説明
すると、タイマスレッド61は、周期起動型スレッドの
起動時刻、周期、デッドラインを表す時間の粒度(最小
単位)を周期として起動される。例えば、起動時刻、周
期、デッドラインがすべて100ms単位で表されるも
のであれば、タイマスレッド61は、100ms周期で
起動する。そして、タイマスレッド61は各周期毎に起
動され、ステップST51でUフラグを読み取るために
セマフォ63を獲得し、ステップST67及びステップ
ST72でEフラグを読み取るためのセマフォ64を獲
得する。また、ステップST53でセマフォ63を解放
し、ステップST69及びステップST74でセマフォ
64を解放する。
【0097】次に、図18はマザースレッド18がスレ
ッド管理テーブル62に周期起動型スレッドを登録する
動作を示すフローチャートであり、その動作を簡単に説
明すると、ステップST81でセマフォ63を獲得した
のちステップST82でUフラグの読み取りを行い、ス
テップST83でセマフォ63を解放する(以下、ステ
ップST81〜83の間をクリティカルセクションU1
という)。また、ステップST86でセマフォ63を獲
得したのちステップST87でUフラグの書き込み読み
を行い、ステップST88でセマフォ63を解放する
(以下、ステップST86〜88の間をクリティカルセ
クションU2という)。
【0098】次に、図19はマザースレッド18がスレ
ッド管理テーブル62から周期起動型スレッドの登録を
削除する動作を示すフローチャートであり、その動作を
簡単に説明すると、ステップST91でセマフォ63を
獲得したのちステップST92でUフラグの書き込みを
行い、ステップST93でセマフォ63を解放する(以
下、ステップST91〜93の間をクリティカルセクシ
ョンU3という)。
【0099】次に、図20は各周期起動型スレッドの動
作を示すフローチャートであり、その動作を簡単に説明
すると、ステップST103でセマフォ64を獲得した
のちステップST104でEフラグの書き込みを行い、
ステップST105でセマフォ64を解放する(以下、
ステップST103〜105の間をクリティカルセクシ
ョンE1という)。また、ステップST111でセマフ
ォ64を獲得したのちステップST112でEフラグの
書き込み読みを行い、ステップST113でセマフォ6
4を解放する(以下、ステップST111〜113の間
をクリティカルセクションE2という)。
【0100】以上で明らかなように、タイマスレッド6
1が起動時に、優先度の低いスレッド(マザースレッド
18、周期起動型スレッド)によって待たされる時間
は、セマフォ63,64が優先度継承機能を有している
ので、最も待たされる場合でも、クリティカルセクショ
ンU1,U2,U3のうちの何れか1つを実行するのに
要する時間と、クリティカルセクションE1,E2のう
ちの何れか一方の実行に要する時間とを加えた時間に限
られる。また、その加えた時間は、高々フラグ2個の読
み書きに要する時間であって、タイマスレッド61が行
うすべての処理に比べて極めて短い時間であり、無視で
きる程度の時間である。因に、この実施例8は請求項9
の発明に対応している。
【0101】実施例9.上記実施例8では、Uフラグま
たはEフラグの全体にセマフォ63,64を設けたもの
について示したが、図21に示すように、スレッド管理
テーブル62を使用しているか否かを示すSフラグ及び
そのSフラグを読み書きするためのセマフォ65を各ス
レッド毎に設け、そして、タイマスレッド61より優先
度の低いスレッド7等が当該セマフォ65を獲得してい
るためにそのタイマスレッド61が待ち状態になってい
る場合、一時的にその優先度の低いスレッド7等の優先
度をそのタイマスレッド61の優先度と同一にする優先
度継承機能をセマフォ65に持たせるようにしてもよ
く、上記実施例8と同様の効果を奏する。因に、この実
施例9は請求項10の発明に対応している。
【0102】
【発明の効果】以上のように、請求項1の発明によれ
ば、第2の受信部により保持された要求メッセージを順
次取り出し、その要求メッセージの内容に応じた処理を
第1の受信部が受信してメモリに格納したサンプルデー
タに基づいて行うように構成したので、要求メッセージ
を受信している途中であっても、サンプルデータを受信
してメモリに格納できるようになり、その結果、サンプ
ル処理をその時間上の制約を保って行うことができる効
果がある。
【0103】請求項2の発明によれば、処理実行部の処
理結果を一時的に保持するとともに、複数の処理結果を
保持した場合には優先度の高い処理結果から順次外部装
置に対して送信するように構成したので、高速性の要求
される処理結果から順次送信できるようになり、その結
果、外部装置の要求を十分満足できるようになる効果が
ある。
【0104】請求項3の発明によれば、処理実行部の処
理結果を外部装置に対して送信する処理を行う際に、他
の処理と競合する場合、該他の処理より優先度が高いと
きのみ処理を行うように構成したので、処理結果を外部
装置へ送信する処理よりも、高速性の要求される処理が
ある場合には、その高速性の要求される処理を優先して
処理ができるようになる効果がある。
【0105】請求項4の発明によれば、第2の受信部が
複数の要求メッセージを保持している場合、優先度の高
い要求メッセージから順次取り出すように構成したの
で、要求メッセージの欠損を防止できるとともに、高速
性の要求される要求メッセージに対する処理から行うこ
とができる効果がある。
【0106】請求項5の発明によれば、各スレッドが処
理を実行する際に必要となるメモリ領域を各スレッド毎
に予め確保しておき、各スレッドに処理を実行させる際
に対応するメモリ領域を割り当てるように構成したの
で、ガベージコレクションを行う必要がなくなり、その
結果、ガベージコレクションを原因とする要求メッセー
ジに対する応答が妨げられるという事態が発生しなくな
る効果がある。
【0107】請求項6の発明によれば、処理に必要とな
るスレッドを予め生成し、待機状態にしておくように構
成したので、スタック領域の不足を理由に、要求メッセ
ージに対する処理が遅延するのを防止できる効果があ
る。
【0108】請求項7の発明によれば、第1の受信部に
より受信されたサンプルデータをメモリに格納中に、処
理実行部から所定のアドレスに格納されているサンプル
データの読み込み要求があった場合、その読み込み要求
に係るアドレスが、現在サンプルデータを格納している
アドレスと一致するときのみその読み込み要求を却下す
るように構成したので、同じデータを同時に読み書きす
ることによって生じるデータ内容の矛盾を防止しつつデ
ータの読み書きの並列処理が可能になり、その結果、高
速に処理を行うことができる効果がある。
【0109】請求項8の発明によれば、所定の起動周期
毎に周期起動型スレッドを起動させるとともに、その周
期起動型スレッドが起動後所定時刻経過しても処理を終
了しない場合には、その処理を中断させて獲得している
資源を解放させるタイマスレッドを設けるように構成し
たので、他の周期起動型スレッドを所定の起動周期毎に
確実に起動できるようになり、周期起動型スレッドのリ
アルタイム性を確保できる効果がある。
【0110】請求項9の発明によれば、タイマスレッド
より優先度の低いスレッドがセマフォを獲得しているた
めにそのタイマスレッドが待ち状態になっている場合、
一時的にその優先度の低いスレッドの優先度をそのタイ
マスレッドの優先度と同一にする優先度継承機能をその
セマフォに持たせるように構成したので、同じデータを
同時に読み書きすることによって生じるデータ内容の矛
盾を防止しつつ、タイマスレッドが速やかにセマフォを
獲得できる結果、周期起動型スレッドのリアルタイム性
を確保できるとともに、装置の信頼性が向上する効果が
ある。
【0111】請求項10の発明によれば、共有資源を使
用しているか否かを示すフラグ及びそのフラグを読み書
きするためのセマフォを各スレッド毎に設けるととも
に、タイマスレッドより優先度の低いスレッドが当該セ
マフォを獲得しているためにそのタイマスレッドが待ち
状態になっている場合、一時的にその優先度の低いスレ
ッドの優先度をそのタイマスレッドの優先度と同一にす
る優先度継承機能をそのセマフォに持たせるように構成
したので、同じデータを同時に読み書きすることによっ
て生じるデータ内容の矛盾を防止しつつ、タイマスレッ
ドが速やかにセマフォを獲得できる結果、周期起動型ス
レッドのリアルタイム性を確保できるとともに、装置の
信頼性が向上する効果がある。
【図面の簡単な説明】
【図1】この発明の実施例1によるマルチスレッド・サ
ーバを示す構成図である。
【図2】実施例2における送信部の詳細を示す構成図で
ある。
【図3】実施例3における送信部の詳細を示す構成図で
ある。
【図4】実施例4における第2の受信部の詳細を示す構
成図である。
【図5】スループット機構の構成を示す構成図である。
【図6】スレッドプール31内のチャイルドスレッドが
有する起動情報の構成図である。
【図7】スレッドプール31内のチャイルドスレッドの
動作を示すフローチャートである。
【図8】スレッドプール31内のチャイルドスレッドが
有する起動情報の構成図である。
【図9】スレッドプール31内のチャイルドスレッドの
動作を示すフローチャートである。
【図10】スレッドプール31内のチャイルドスレッド
が有する起動情報の構成図である。
【図11】スレッドプール31内のチャイルドスレッド
の動作を示すフローチャートである。
【図12】スレッドプール31内のチャイルドスレッド
が有する起動情報の構成図である。
【図13】スレッドプール31内のチャイルドスレッド
の動作を示すフローチャートである。
【図14】リングバッファ13及びディスク15に対し
て複数のスレッドが書き込み及び読み出しを行う動作を
説明する構成図である。
【図15】この発明の実施例7によるマルチスレッド・
サーバを示す構成図である。
【図16】スレッド管理テーブルの内容を説明する説明
図である。
【図17】タイマスレッドの動作を示すフローチャート
である。
【図18】マザースレッドがスレッド管理テーブルに周
期起動型スレッドを登録する動作を示すフローチャート
である。
【図19】マザースレッドがスレッド管理テーブルから
周期起動型スレッドの登録を削除する動作を示すフロー
チャートである。
【図20】各周期起動型スレッドの動作を示すフローチ
ャートである。
【図21】スレッド管理テーブルの内容を説明する説明
図である。
【図22】従来のマルチスレッド・サーバを示す構成図
である。
【図23】従来の送信部の詳細を示す構成図である。
【符号の説明】
1 プラント 2 クライアント(外部装置) 3 ネットワーク(外部装置) 6、7、8 チャイルドスレッド(処理実行部) 11 FIFOキュー(第1の受信部) 13 リングバッファ(メモリ) 15 ディスク(メモリ) 16 レシーバ(第2の受信部) 17 FIFOキュー(第2の受信部) 18 マザースレッド(処理実行部) 19 FIFOキュー(送信部) 20、21 トランスミッタ(送信部) 21a、21b、21c 送信スレッド(送信部) 32、33、34 メモリ領域 61 タイマスレッド 62 スレッド管理テーブル(資源) 63〜65 セマフォ

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 プラント等からサンプルデータを受信す
    る第1の受信部と、上記第1の受信部により受信された
    サンプルデータを格納するメモリと、外部装置から要求
    メッセージを受信するとともに、その要求メッセージを
    保持する第2の受信部と、上記第2の受信部により保持
    された要求メッセージを順次取り出し、その要求メッセ
    ージの内容に応じた処理を上記メモリに格納されたサン
    プルデータに基づいて行う処理実行部と、上記処理実行
    部の処理結果を一時的に保持したのち、その処理結果を
    上記外部装置に対して送信する送信部とを備えたマルチ
    スレッド・サーバ。
  2. 【請求項2】 プラント等からサンプルデータを受信す
    る第1の受信部と、上記第1の受信部により受信された
    サンプルデータを格納するメモリと、外部装置から要求
    メッセージを受信するとともに、その要求メッセージを
    保持する第2の受信部と、上記第2の受信部により保持
    された要求メッセージを順次取り出し、その要求メッセ
    ージの内容に応じた処理を上記メモリに格納されたサン
    プルデータに基づいて行う処理実行部と、上記処理実行
    部の処理結果を一時的に保持するとともに、複数の処理
    結果を保持した場合には優先度の高い処理結果から順次
    上記外部装置に対して送信する送信部とを備えたマルチ
    スレッド・サーバ。
  3. 【請求項3】 上記送信部は、上記処理実行部の処理結
    果を上記外部装置に対して送信する処理を行う際に、他
    の処理と競合する場合、該他の処理より優先度が高いと
    きのみ処理を行うことを特徴とする請求項1または請求
    項2記載のマルチスレッド・サーバ。
  4. 【請求項4】 上記処理実行部は、上記第2の受信部が
    複数の要求メッセージを保持している場合、優先度の高
    い要求メッセージから順次取り出すことを特徴とする請
    求項1または請求項2記載のマルチスレッド・サーバ。
  5. 【請求項5】 上記処理実行部は、各スレッドが処理を
    実行する際に必要となるメモリ領域を各スレッド毎に予
    め確保しておき、各スレッドに処理を実行させる際に対
    応するメモリ領域を割り当てることを特徴とする請求項
    1または請求項2記載のマルチスレッド・サーバ。
  6. 【請求項6】 上記処理実行部は、処理に必要となるス
    レッドを予め生成し、待機状態にしておくことを特徴と
    する請求項1または請求項2記載のマルチスレッド・サ
    ーバ。
  7. 【請求項7】 上記メモリは、上記第1の受信部により
    受信されたサンプルデータを格納中に、上記処理実行部
    から所定のアドレスに格納されているサンプルデータの
    読み込み要求があった場合、その読み込み要求に係るア
    ドレスが、現在サンプルデータを格納しているアドレス
    と一致するときのみその読み込み要求を却下することを
    特徴とする請求項1または請求項2記載のマルチスレッ
    ド・サーバ。
  8. 【請求項8】 上記処理実行部が生成するスレッドの
    ち、周期的に起動される周期起動型スレッドの起動及び
    終了を管理するタイマスレッドを設け、そのタイマスレ
    ッドは所定の起動周期毎にその周期起動型スレッドを起
    動させるとともに、その周期起動型スレッドが起動後所
    定時刻経過しても処理を終了しない場合には、その処理
    を中断させて獲得している資源を解放させることを特徴
    とする請求項1または請求項2記載のマルチスレッド・
    サーバ。
  9. 【請求項9】 上記処理実行部が生成するスレッドと上
    記タイマスレッド間の共有資源に対する読み書きの相互
    排除を行うためにセマフォを設けるとともに、上記タイ
    マスレッドより優先度の低いスレッドがそのセマフォを
    獲得しているためにそのタイマスレッドが待ち状態にな
    っている場合、一時的にその優先度の低いスレッドの優
    先度をそのタイマスレッドの優先度と同一にする優先度
    継承機能を上記セマフォに持たせたことを特徴とする請
    求項8記載のマルチスレッド・サーバ。
  10. 【請求項10】 上記処理実行部が生成するスレッドと
    上記タイマスレッド間の共有資源に対する読み書きの相
    互排除を行うために、当該共有資源を使用しているか否
    かを示すフラグ及びそのフラグを読み書きするためのセ
    マフォを各スレッド毎に設けるとともに、上記タイマス
    レッドより優先度の低いスレッドが当該セマフォを獲得
    しているためにそのタイマスレッドが待ち状態になって
    いる場合、一時的にその優先度の低いスレッドの優先度
    をそのタイマスレッドの優先度と同一にする優先度継承
    機能を上記セマフォに持たせたことを特徴とする請求項
    8記載のマルチスレッド・サーバ。
JP6034742A 1993-03-05 1994-03-04 マルチスレッド・サーバ Pending JPH076043A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6034742A JPH076043A (ja) 1993-03-05 1994-03-04 マルチスレッド・サーバ

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP5-69055 1993-03-05
JP6905593 1993-03-05
JP6034742A JPH076043A (ja) 1993-03-05 1994-03-04 マルチスレッド・サーバ

Publications (1)

Publication Number Publication Date
JPH076043A true JPH076043A (ja) 1995-01-10

Family

ID=26373590

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6034742A Pending JPH076043A (ja) 1993-03-05 1994-03-04 マルチスレッド・サーバ

Country Status (1)

Country Link
JP (1) JPH076043A (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09319600A (ja) * 1996-03-05 1997-12-12 Internatl Business Mach Corp <Ibm> リモート・プロシージャ・コールを実行する方法及びトランザクション・マネージャ
JPH10320216A (ja) * 1997-05-14 1998-12-04 Sony Corp コンピュータ読み取り可能な記録媒体
JP2000155693A (ja) * 1998-11-18 2000-06-06 Fujitsu Ltd メッセージ制御装置
JP2000511321A (ja) * 1997-05-02 2000-08-29 ライブピクチャー,インコーポレイテッド サーバー−クライアントネットワークを介するオンライン対話性を改善する方法及びシステム
JP2000284980A (ja) * 1999-01-28 2000-10-13 Mitsubishi Electric Inf Technol Center America Inc マルチタスクシステムおよびマルチタスクシステムにおけるメッセージ伝送スケジューリング方法
US6261389B1 (en) 1997-04-30 2001-07-17 Nippon Piston Ring Co., Ltd. Synchronizer ring
JP2007058541A (ja) * 2005-08-24 2007-03-08 Matsushita Electric Ind Co Ltd プロセッサ、処理方法及び処理プログラム
JP2008522535A (ja) * 2004-12-02 2008-06-26 エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュート 携帯インターネットシステムの端末装置と端末装置でのアップリンクデータ伝送方法
JP2009151685A (ja) * 2007-12-21 2009-07-09 Fujitsu Ltd ディスクアレイ装置管理システム、ディスクアレイ装置、ディスクアレイ装置の制御方法および管理サーバ
JP2011181032A (ja) * 2010-03-04 2011-09-15 Nec Corp サーバ装置、情報処理方法、及び、プログラム
WO2018042644A1 (ja) * 2016-09-05 2018-03-08 三菱電機株式会社 組込みシステム、組込みシステム制御方法およびデータ整合性判定方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63129427A (ja) * 1986-11-20 1988-06-01 Toshiba Corp 割り込み応答論理変換回路
JPH0251740A (ja) * 1988-08-15 1990-02-21 Fujitsu Ltd プロセス割当制御方式
JPH03134732A (ja) * 1989-10-17 1991-06-07 Internatl Business Mach Corp <Ibm> バッファ制御装置
JPH04191934A (ja) * 1990-11-26 1992-07-10 Hitachi Ltd 機能別プログラム管理方法および装置
JPH0520102A (ja) * 1991-07-15 1993-01-29 Shikoku Nippon Denki Software Kk 資源獲得待処理の優先順位変更方式
JPH0535506A (ja) * 1991-07-25 1993-02-12 Fujitsu Ltd プログラムデイスパツチ処理方式

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63129427A (ja) * 1986-11-20 1988-06-01 Toshiba Corp 割り込み応答論理変換回路
JPH0251740A (ja) * 1988-08-15 1990-02-21 Fujitsu Ltd プロセス割当制御方式
JPH03134732A (ja) * 1989-10-17 1991-06-07 Internatl Business Mach Corp <Ibm> バッファ制御装置
JPH04191934A (ja) * 1990-11-26 1992-07-10 Hitachi Ltd 機能別プログラム管理方法および装置
JPH0520102A (ja) * 1991-07-15 1993-01-29 Shikoku Nippon Denki Software Kk 資源獲得待処理の優先順位変更方式
JPH0535506A (ja) * 1991-07-25 1993-02-12 Fujitsu Ltd プログラムデイスパツチ処理方式

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09319600A (ja) * 1996-03-05 1997-12-12 Internatl Business Mach Corp <Ibm> リモート・プロシージャ・コールを実行する方法及びトランザクション・マネージャ
US6261389B1 (en) 1997-04-30 2001-07-17 Nippon Piston Ring Co., Ltd. Synchronizer ring
JP2000511321A (ja) * 1997-05-02 2000-08-29 ライブピクチャー,インコーポレイテッド サーバー−クライアントネットワークを介するオンライン対話性を改善する方法及びシステム
JPH10320216A (ja) * 1997-05-14 1998-12-04 Sony Corp コンピュータ読み取り可能な記録媒体
JP2000155693A (ja) * 1998-11-18 2000-06-06 Fujitsu Ltd メッセージ制御装置
JP2000284980A (ja) * 1999-01-28 2000-10-13 Mitsubishi Electric Inf Technol Center America Inc マルチタスクシステムおよびマルチタスクシステムにおけるメッセージ伝送スケジューリング方法
US7944824B2 (en) 2004-12-02 2011-05-17 Samsung Electronics Co., Ltd. Terminal of portable internet system and method of transmitting uplink data in terminal
JP2008522535A (ja) * 2004-12-02 2008-06-26 エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュート 携帯インターネットシステムの端末装置と端末装置でのアップリンクデータ伝送方法
JP4763715B2 (ja) * 2004-12-02 2011-08-31 エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュート 携帯インターネットシステムの端末装置と端末装置でのアップリンクデータ伝送方法
JP2007058541A (ja) * 2005-08-24 2007-03-08 Matsushita Electric Ind Co Ltd プロセッサ、処理方法及び処理プログラム
JP2009151685A (ja) * 2007-12-21 2009-07-09 Fujitsu Ltd ディスクアレイ装置管理システム、ディスクアレイ装置、ディスクアレイ装置の制御方法および管理サーバ
JP2011181032A (ja) * 2010-03-04 2011-09-15 Nec Corp サーバ装置、情報処理方法、及び、プログラム
WO2018042644A1 (ja) * 2016-09-05 2018-03-08 三菱電機株式会社 組込みシステム、組込みシステム制御方法およびデータ整合性判定方法
JP6351901B1 (ja) * 2016-09-05 2018-07-04 三菱電機株式会社 組込みシステムおよび組込みシステム制御方法
CN109690490A (zh) * 2016-09-05 2019-04-26 三菱电机株式会社 嵌入***、嵌入***控制方法和数据匹配性判定方法

Similar Documents

Publication Publication Date Title
JP4170227B2 (ja) 多重処理環境における処理の実行
CA2200929C (en) Periodic process scheduling method
US5274809A (en) Task execution control method for a multiprocessor system with enhanced post/wait procedure
JP3549081B2 (ja) 優先度付きタスク実行制御方法及びデータ処理装置
US5390328A (en) Data processing system and method for providing notification in a central processor of state changes for shared data structure on external storage
US8245207B1 (en) Technique for dynamically restricting thread concurrency without rewriting thread code
US6006247A (en) Method and system for scheduling threads and handling exceptions within a multiprocessor data processing system
US5452452A (en) System having integrated dispatcher for self scheduling processors to execute multiple types of processes
EP0563624B1 (en) Method and apparatus for performing conditional operations on externally shared data
US20050015768A1 (en) System and method for providing hardware-assisted task scheduling
US8448179B2 (en) Processing architecture having passive threads and active semaphores
EP0532333A2 (en) A system and method for preventing deadlock in a multiprocessor environment
JPH1055284A (ja) スレッドをスケジュールする方法及びそのシステム
JP3010400B2 (ja) 共有メモリ制御方法及び共有メモリ制御装置
JPH09167145A (ja) メッセージ・キューのアクセス方法
US20100115518A1 (en) Behavioral model based multi-threaded architecture
US10331500B2 (en) Managing fairness for lock and unlock operations using operation prioritization
JPH076043A (ja) マルチスレッド・サーバ
US6721948B1 (en) Method for managing shared tasks in a multi-tasking data processing system
KR100617228B1 (ko) 실시간 운영체계 커널의 이벤트 전달 체계 구현방법
JP2001282558A (ja) マルチオペレーティング計算機システム
EP0343646B1 (en) Task execution control method for a multiprocessor system with enhanced post/wait procedure
JPH07141208A (ja) マルチタスク処理装置
JP2000502202A (ja) 命令プロセッサのジョブスケジューリング
CN112749020A (zh) 一种物联网操作***的微内核优化方法