JPH02231640A - タスクのデイスパツチングを同期化する方法 - Google Patents

タスクのデイスパツチングを同期化する方法

Info

Publication number
JPH02231640A
JPH02231640A JP2019392A JP1939290A JPH02231640A JP H02231640 A JPH02231640 A JP H02231640A JP 2019392 A JP2019392 A JP 2019392A JP 1939290 A JP1939290 A JP 1939290A JP H02231640 A JPH02231640 A JP H02231640A
Authority
JP
Japan
Prior art keywords
thread
layer
task
resource
queue
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
Application number
JP2019392A
Other languages
English (en)
Other versions
JPH0563821B2 (ja
Inventor
Steven H Goldberg
ステイブン・ヒーシユ・ゴールドバーグ
Gerald W Holten
ジエラルド・ウエイン・ホルテン
Jr Jerome A Mouton
ジエローム・アンソニイー・モートン、ジユニア
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH02231640A publication Critical patent/JPH02231640A/ja
Publication of JPH0563821B2 publication Critical patent/JPH0563821B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/458Synchronisation, e.g. post-wait, barriers, locks

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 A.産業上の利用分野 本発明はマルチタスキングオペレーティングシステム(
OS )と、OS!モデルを利用する層構造(ないしは
階層式)通信サブシステムを有するCPUに関し、さら
に詳しくいえば、CPUに基づく1以上のアプリケーシ
ョンによって指定されるような通信サブシステム機能の
実行においてオペレーティングシステムのタスクを最大
にディスパツチする方法に関する。
B.従来の技術及びその課題 (1)  マルチタスキング タスクは作業又は計算のアクテイビテイについてのOS
のダイスパッチ可能な単位である。マルチタスキングを
遂行することによって、すなわちタスク間の切替えを行
うことによって、OSは対話式にかつバッチ処理でCP
Uのアクセス権を分配すること、及びCPUのスルーグ
ット及び利用度の向上の両方が可能とある。
各アプリケーションは、CPUで走行する場合、1以上
のOSタスクによって明示される。すなわち、OSは有
限個のタスクを1つのアプリケーション又は複数のアプ
リケーションによって指定される対応する機能に割当て
てデイスパツチする。
普通、タスクの数は現に実行すべきアプリケーションに
よって求められる機能の数よりもずっと少ない。
タスク(プロセスともいう)は実行中の1つのプログラ
ムである。タスクは実行に応じてその状態を変える。タ
スクの状態は現在のアクテイビテイ(新、アクティブ、
待機、停止)によって定義される。タスクの状態ベクト
ル表示は9タスク制御ブロック(TCB )”と呼ばれ
る構成を有する。
CPUの利用度を最大にするためには、タスクは常に走
行させておくべきである。直列的なマシンの場合、これ
は待ち行列化されたアクセスによって達成される。換言
すれば、実行の準備を完了し待機しているタスクは作業
又はタスク準備完了待ち行列と呼ばれるリストで保存さ
れる。OSスケジューラ/ディスパッチャは準備完了し
ている待ち行列中のタスクが次にCPUへのアクセス権
が与えられるものかどうかを周期的に判断する。
走行しているタスクはそれが終了するか、待ち状態に入
るか(たとえばI/Oの遂行によシ引き起こされる)、
有効期限を過ぎたか、又は先取りされるまでは実行を継
続する。CPUのスケジューリングに関するさらなる詳
細はPeterson及びSt lberschatz
による”Operating SystemConce
pts”(Adison−Wesley社)の第91頁
ないし第129頁を参照されたい。
(2)層構造(ないしは階層式)通信サブシステム共有
メモリの利益のないCPU間通信はそのアクテイビテイ
を互いに調整するための基準としてメッセージの受渡し
によっている。これは、しばしば、′分散式同期“と呼
ばれている。コンピュータ及びそれらのアプリケーショ
ンは、メッセージを交換することによって通信するとき
、通信が行われる様式を管理するための確立されたプロ
トコルのセットが存在しなければならない。プロトコル
の1つのセットはOSIアーキテクチャの1つのモデル
に関するISOの国際標準7498であらわされる。
ISO標準によれば、6開放型システム”は1レイヤ”
又は機能の階層的構造としてネットワークのノードをあ
らわす。各1レイヤ”は階層におけるそれよりも上位の
1レイヤ”でアクセス可能であり、使用できる関連する
機能の集合である。
さらに、1開放型システム間相互接続”は2位の開放型
システム間の通信のために用いられるプロトコルのセッ
トのことをいう。
ISOの標準OS■モデルは7つのレイヤを記述してい
る。これらのレイヤは、上位から下位の順に、(7)ア
プリケーションレイヤ、(6)プレゼンテーションレイ
ヤ、(5)セッションレイヤ、(4)}?yスポートレ
イヤ、(3)ネットワークレイヤ、(2)データリンク
レイヤ、及び(1)物理レイヤである。実際的には、こ
れらのレイヤは多様に併合され又は削除される。たとえ
ば、レイヤ(1)ないし(3)は生のビットストリーム
の伝送と、送信点及び受信点の間の電気的協同と、自動
エラ一検出及び回復と、パケット及び経路指定管理とを
含む1つの通信レイヤとして組み合わせることができる
。さらに、レイヤ(6)ないし(7)は情報の表示及び
使用を主目的とするよう単一のアプリケーションレイヤ
として組み合わせることができる。
OSIは、多重レイヤアーキテクチャとして、確実な通
信を確立し、メッセージがその送信と同じ順序で受信さ
れることを保証する。OSIでは、各レイヤはサービス
提供者としてみることができる。すなわち、各レイヤは
そのレイヤ又はそれよシ上位のユーザにサービスを提供
し、これによシそのユーザは他のノードと対等に通信す
ることができる。
1つのレイヤは最下位すなわち物理レイヤに到達するま
でその階層Kおけるすぐ下のレイヤとの接続を確立する
ことKよってこれらのサービスを提供する。このとき、
メッセージにはその宛先への物理的な経路に関する情報
が与えられる。宛先ノードでは、逆の順序で同じプロセ
スが繰返される。分散式プロセス管理についてのさらに
詳細な説明が必要であれば、Maekawaらによる”
Operating Systems−Advance
d Concepts”( Be n j ami n
/Cummi nga社)の第177頁ないし第206
頁を参照されたい。
起点ホストノードにおいてメッセージがレイヤを垂直下
方に通過すること、物理的な経路又はレイヤを介して宛
先ノードに向かって水平的に伝送されること、及びその
宛先ノードヘ向かって垂直的に進むことについては従来
技術においてよく説明されている。しかしながら、従来
技術で指摘されている問題のほとんどは水平的な、すな
わち、対等な側面を強調する通信k関するものである。
たとえば、セッションの確立、経路指定及びノイズの存
在下又は可変の帯域幅の存在下における同期の維持など
である。このような技術を開示するものとしては、米国
特許第4736369号がある。
実際、従来技術の立場から通信サブシステムの!成’!
tKマルチタスキングマネジメントを接続するというア
プローチは、寛大にいえば、記載されていないわけでは
ない。たとえば、M.Purserによる″Data 
Communications  forProgra
mmers”(Addiso Wesley社)、第5
章第72ないし第92頁には、同期的サブシステムレベ
ルで可用度に基づいてOSのタスクのディスパッチを行
うことが記載されている。同様に、M.Stella 
Atkinsによる” Experimentsin 
 SR  with Different  Upca
llProgram Structures  、AC
M Transactionsof  Compute
r  Systems、第6巻第4号、1988年11
月は、階層式通信サブシステムのOSマネジメントを開
示するものとして参照すべきである。
1988年12月9日付けの米国特許出願第28240
9号には、第1のCPUにおけるアプリケーションが通
信サブシステムを介して他のCPUにデータを送る場合
、“スレッド(thread)”と呼ばれる構造を用い
てデータ送信コマンドを表わすということが開示されて
いる。スレッドは対応するレイヤの関連する機能への一
連の呼出しを記述する。すなわち、各スレッドは対応す
るレイヤによって遂行すべき作業についての一連の要求
を含む。
各スレッドはサブシステムの資源についての1つの要求
を構成し、タスクがOSに対して有するのと同じように
、サブシステムに対して一定の関係を有する。したがっ
て、各スレッドは1組の状態のうちの1つを呈する(新
、アクティブ、待機又は停止)。とこに、通信サブシス
テムの目的は,,そのスループット及び利用度を高める
ため同時に複数のスレッドを生成し管理することである
レイヤ、タイ、スレッド及びタスク 前掲の米国特許出願にも記載されるように、′コネクシ
ョン制御ブロック(CCB)”は階層式通信サブシステ
ムにおける各レイヤのコネクション制御状態を定義する
ために用いられる1つの構造である。各レイヤは対応す
るスレッド釦おける原始によって呼出すことのできるC
PUで結び付けられるトランザクション指向のサブルー
チンを複数個有している。
レイヤ間の相互関係は対応するレイヤに関連するCCB
間の優先度を確立したコネクションによって定義される
。CCB間の関係は”タイ(tie)”と呼ばれ、結合
されたCCBの定義されたセットは”タイグループ(t
ie  group)”と呼ばれる。
タイを生成する仁とにより、一定の環境において走行す
る場合に同じレイヤ内で結合された全てのCCBを介す
る作業の直列化が可能となる。すなわち、タイグループ
は通信サブシステム資源とみなすことができる。したが
って、1つのOSのタスクを1つのCPUの資源に結合
するととと、1つのスレッドを1つのタイプグループに
結合することとの間Kは類似性がある。
本発明の目的はCPUに基づくマルチタスキングオペレ
ーティングシステムのディスパッチングと、1以上のア
プリケーションによってCPUに存在する階層式通信サ
ブシステムに置かれた同時的ないしは並行的な要求とを
同期化する方法を提供することである。
本発明の他の目的はOS及び通信サブシステムのレベル
におけるCPUのスループット及び利用度を高めること
である。
C.課題を解決するための手段 この目的を達成するため、本発明の方法は、CPUに基
づく第1のマルチタスキングオペレーティングシステム
からのタスクのデイスパンチングと、呼出し可能な資源
のセットを含むCPUに基づく第2のマルチタスキング
オペレーティングシステムによって適時にディスパツチ
される機能呼出しのスレッドとを同期化する下記の(a
)ないし(C)のステップを有する。
(a)  下記の(イ)ないし(ハ)の条件で、スレッ
ドによる所有権を、そのスレッドにおける機能呼出しに
よって指名される第2のマルチタスキングオペレーティ
ングシステムの資源のうちの1つに結び付けるステップ
(イ)そのスレッドはその資源に対してエンキュ一され
た唯一のスレッドであるとと。
(口)そのスレッドは他のいかなる資源も所有しないこ
と。
(ハ)上記(イ)及び(口)でないときは、その資源に
おける機能呼出しによって指名される各資源に対して資
源をエンキューすること。
(b)  タスクに対して資源を所有するスレッドをエ
ンキューし、次に利用可能なタスクをタスクのスレッド
の待ち行列における最初のスレッドに結び付けて、結び
付けられたタスクによって最初のスレッドの機能呼出し
のうちの所定の1つを実行するステップ。
(c)  実行の後、最初に結び付けられたスレッドに
対しその資源の所有権を解放させ、その同じ資源に対し
て待ち行列化された次のスレッドをその資源の所有者と
してタスクに対してエンキューするステップ。
以下、本発明の作用を実施例とともに説明する。
D.実施例 はじめに本発明の実施例を概説する。本発明の実施例は
以下のことを前提とする。
第1に、1つのOSのタスクは1つのスレッドが処理中
であるレイヤ内において1つのタイグループについて所
有権のある間、そのスレッドに結び付けるべきである。
第2に、スレッドはそのスレッドのサービス要求が既に
ちょうど1つのタイグループに結び付けられている場合
にのみ、タスクに結び付けるためスレッドの作業待ち行
列で利用可能となる。
本発明によれば、各タスクは、作業のために準備完了な
場合、スレッドの作業待ち行列から最高優先順位のスレ
ッドを取得しそれを実行する。作業待ち行列上のいかな
るスレッドも、1つのタイグループにつき1つのスレッ
ドだけが一時に実行できるという制限を満たすことがわ
かっている。
さらに、それは、スレッドが最初K1つのタイグループ
の所有者となるまで(結び付けられるまで)、作業待ち
行列に置く仁とができない場合である。
同じタイグループについての付加的なスレッドはタイグ
ループ制御ブロックで待ち行列化される。
本発明に基づく方法がサービス要求を実行する場合、そ
れを処理したスレッドに対し、そのタイグループの所有
権を解放させる。ζれによれば、そのタイグループに対
して待ち行列化された待機中の次のスレッドがそのタイ
グループの所有者となシ、利用可能なスレッドの作業待
ち行列に置かれる。
スレッドについてのサービス要求が実行されると、それ
はそのスレッドから削除される。付加的なサービス要求
があれば、そのスレッドは対応するタイグループで待ち
行列化される。そのスレッドがタイグループの待ち行列
の最初のものであるときは、それはそのタイグループの
所有者となシ、作業待ち行列に置く必要なしに、現タス
クによって実行する仁とができる。この特徴によれば、
1つのアプリケーションからの単一のデータ要求はシス
テム内でコネクションが存在しない場合に同じタスクを
用いて通信レイヤを通過することが可能となる。もしそ
のスレッドがタイグループの待ち行列において最初のも
のでなかったとすれば、そのタスクは当該スレッドの処
理を停止して作業待ち行列からの別のスレッドの取得を
試行するととになろう。この放棄されたスレッドはタイ
グループの待ち行列に残って、そのスレッドがタイグル
ープの所有者になる場合に同じタスクによって作業待ち
行列に置かれる。
以下、図面を参照しながら、実施例を詳細に説明する。
前掲の米国特許出願において指摘されるように、OSは
通信サブシステムのレイヤを構成する機能が有限状態機
械との一貫性を保つように遂行される通信サブシステム
のための走行時間の環境を提供する。すなわち、典型的
なレイヤは自己のCCBK訃いて状態遷移テーブルを含
む。さらに、典型的なレイヤは自己のCCBにおいて各
コネクションの現在の状態を保有している。あるコネク
ションについての作業の1単位を遂行するために1つの
レイヤが呼出されたとき(この意味では、1つのサービ
スを提供する1つのレイヤK対する各要求は作業の1単
位とみることができる)、そのレイヤはその要求を処理
するソフトウエアをみつけるためのパラメータとして、
現在の状態、サービス要求入力及び状態遷移テーブルを
取得する。
もちろん、探知されたソフトウエアの実行によって、そ
のコネクション及びレイヤの状態は変化し、出力が生成
される場合もある。
前述の如く、1つのサービスを提供する1つのレイヤに
対する各要求は作業の1単位とみなされる。さらに、前
述したように1つのレイヤは関連する呼出し可能な機能
のセットを有する。したがって、そのオペレーティング
システムは、そのようなシステムの全てがするように、
その要求K応答してそのレイヤを呼出して、関連するプ
ロセス又は機能が完了したときにそこから戻る。各要求
すなわち作業の単位は特定のCCBと関連している。
現に実行中のレイヤが別のレイヤに存在する1つの機能
を呼出す場合、その要求又は呼出しの次の走行がスケジ
ュールされる。同じCCB(レイヤ)について発行され
る全ての要求は発行された順序で実行する仁とが必要で
ある。
ISOのOSI参照モデル 第1図について説明する。第1図には7つのレイヤのI
SO  OSI参照モデルが示されている。
前述の如く、階層式通信の原理に違反しないで複数のレ
イヤをいっしょにすることができる。この原理は各レイ
ヤが他のレイヤとは無関係に実行可能であるが所定の順
序で走行されるいわゆる原始( primitive)
によって呼出される機能のセントを構成するというもの
である。これらの機能のうち幾つかは隣接するレイヤに
存する機能を呼出すことがある。すなわち、レイヤNに
おけるある機能がレイヤN−1におけるある機能を呼出
すととがある。とれらの2つのレイヤ間のインターフェ
ースはサービスアクセス点を介して命令するζとができ
゛る。よシ下位のレイヤは概念的にはより上位へのサー
ビス提供者である。よシ下位のレイヤの立場からは、そ
の上位のレイヤはサービスユーザである。
OSIのレイヤ及びメッセージ処理 第2図について説明する。第2図にはデータ構造及びそ
れについて行われる変更が示されている。
これらの変更はアクションがアプリケーションレイヤか
ら物理レイヤに垂直下方に通る際に様々なレイヤにおけ
る機能によって行われる。アプリケーションレイヤ及び
プレゼンテーションレイヤはユーザ間通信を定義し(ユ
ーザ相互間通信プロトコル)、セッションレイヤ及ヒト
ランスホートレイヤはプロセス間通信を定義し(プロセ
ス相互間通信プロトコル)、ネットワークレイヤ、デー
タリンクレイヤ及び物理レイヤは実際のデータ伝送を定
義する(コンピュータ相互間通信プロトコル)。
図示されるように、CPUAが3つのレイヤ(すなわち
、アプリケーションレイヤ、中間レイヤ及び通信レイヤ
)を介してメッセージMをCPUBに送シたいものと仮
定する。連続的なレイヤを構成する各プロセスが呼出さ
れるとき、各プロセスはそのメッセージに対して作用す
る。し念がつて、メッセージMがアプリケーションレイ
ヤによって生成された場合、中間レイヤはそのメッセー
ジをK1(M)となるように変更する。次に、通信装置
レイヤがその結果をK2(K1(M))に変更する。こ
の合成メッセージはネットワークを介して送られ、宛先
のCPUBでK2(K1(M))として受信される。こ
の合成メッセージは逆のレイヤの頴序で分解されるので
、論証上、各レイヤは対等に通信することができるとい
える。したがって、CPUBのアプリケーションレイヤ
がもとのままの原メッセージMを受信する唯一のレイヤ
であることを維持しながら、中間のレイヤAはメッセー
ジK1(M)を中間のレイヤBへ送る。
コネクション、制御ブロック及びレイヤ意味のある作業
を遂行するため、一方の終点のユーザはターゲットの終
点との1コネクション”を確立する。このアクションは
呼出し(calling又はiHv6king)をした
ユーザに必要なサービスを提供する適切なレイヤを介す
る経路をたどる。
1コネクション制御ブロック(CCB)”と呼ばれる構
造は1つのレイヤが別のレイヤのサービスを要求する場
合に2つのシステムの終点間の全体的なコネクションの
1部を表わしている。これは次のことを意味する。すな
わち、1つのCCBはレイヤ間の各境界に存在し、各シ
ステム内の“コネクション”は関連するCCBの連鎖に
よって定義される。
コネクション、CCB及びレイヤの間の対話の例第3図
について説明する。第3図には、9つの異なるタイグル
ープK属する複数個のCCBが示されている。これはタ
スクへのスレッドを設定する通信サブシステムであるこ
とを思い出されたい。
さらに、1つのレイヤにつき複数の呼出しが許される。
また、1つのタイグループにつき一時に1つの呼出しだ
けが許される。
サブシステムがスレッドの実行について3つの利用可能
なタスクを持っていると仮定する。
例−1 同一レイヤの複数の吐出し C・CB1、CCB2及びCCB3によって表わされる
3つのアプリケーションが同時にデータを送るものと想
定する。このサブシステムは各アプリケーションの送信
をサービスするためタスクを割振るので、タイグループ
Ti、T2及びT3のためにそれぞれ1つ、すなわち、
レイヤ6の3つの同時的な呼出しが存在することになる
。レイヤ5に進むと、T4、T5及びT6について5つ
の同時的な呼出しが存在する。レイヤ4に進むと、T7
及びT8のためにそれぞれ1つ、すなわち、レイヤ4の
同時的な呼出しは2つだけである。CCB4及びCCB
5からの要求は順次的に処理され、1つのタスクがアイ
ドル状態となる。
例−2 同一のコネクションについての複数の呼出し 1つのタスクがアイドル状態になるときにCCB1によ
って表わされるアプリケーションについてネットワーク
を介してデータを到着させることによって例1を続けて
みよう。レイヤ4がCCE4及びCCB 5のために呼
出される一方で、タスクがCCB7についてレイヤ3を
呼出すのに使用される。CCB4及びCCB7はCCB
 1によつて表わされるコネクションのためのものなの
で、レイヤ3において1つ及びレイヤ4において1つ、
すなわち、同一のアプリケーションコネクションについ
て2つの同時的な呼出しが存在する。
例−3 レイヤ間においてタスクの切替えがない場合 6つのアプリケーションがデータ送信要求を発行する前
に例−2のネットワークを介するデータの到着が行われ
ると仮定する。1つのタスクは入力データを処理すべく
、T9VCついてレイヤ3を、次にT7についてレイヤ
4を次にT4についてレイヤ5を呼出すのに使用される
。これらのアプリケーションがデータを送信すると、レ
イヤ5がCCB4について呼出される一方でレイヤ6が
CCB1及びCCB2について呼出される。CCB3に
ついてのレイヤ6の呼出しは3つ全てがアクティブなの
で使用可能なタスクを待たなければならない。同じコネ
クションのうちの1つについてレイヤ5の呼込みが存在
する一方で、異なるコネクションについてレイヤ6の2
つの呼出しが存在する。しかしながら、レイヤの境界を
越えたというだけでタスクの切替えは必要ない。
本発明に基づく方法を実行するためのホス}CPUの環
境 本発明はマルチタスキングオペレーティングシステムを
有する汎用コンピュータにおいて好都合に実現すること
ができる。そのようなコンピュータは、たとえば、タイ
ムシェアリング機能(TSO)を有するIBM  MV
S  オペレーティングシステムを用いるIBM/36
0又は670のアーキテクチャによるCPUである。I
BM/360のアーキテクチャによるCPUは米国特許
第3400371号に開示されている。
TSOを有するMVSオペレーティングシステムはIB
M社の刊行物GC28−1 1 50″’MVS/Ex
tended Architecture  Syst
@mProgramming Library : S
ystem Macrosand Facilitie
a”第1巻で説明されている。
OSIモデルに従う階層式通信サブシステムは1988
年9月20日に発表されたIBM開放型システム間相互
接続、バージョン1、リリース1によって示されている
。このサブシステムの動作の原理はIBM社の刊行物で
あるGL23−0184″System/370  M
VS  and  VM  OSI/Communic
ation  Subsystem GeneralI
nformation manual”に教示されてい
る。
標準的なMVSや、ロック管理、割込みもしくは監視K
よるサブシステムの呼出しならびにタスクの記入及び待
機などのその他のオペレーティングシステムサービスに
ついては、当業者には周知であるので、詳細な説明は省
略する。
PASCALによるインプリメンテーション以下の表は
本発明に基づく方法をPASCALでインプリメントし
た例を示すものである。PASCALの場合、データ構
造、サブルーチン機能及びグロシージャは明示的に宣言
する必要がある。
構造的にいうと、シンタックスは構造及び変数の各々の
定義、サブルーテン機能又はプロシージャの各々の記述
で始まク、主グロシージャで終る。
サブルーチン機能又はプロシージャの前の記述の程度に
応じて、主プログラムは上記機能及びプロシージャに対
する呼出しにすぎない場合もある。
主プログラムは呼出しの順序、条件及び繰返しを定義す
る。
シンタックスは次のように表わすζとができる。
第1表 Program (名前〉 Type  <大域構造の定義〉 Mar   (大域変数〉 Procedure  (名前1〉 くパラメータ/値
〉Type <ローカル構造〉 Var  <ローカル変数〉 Begin End  ; Begin     (“主プロシージャ*)Whil
g<条件)Do I3egin gamel; End End . Lock UnLock Wait Post InvokeLayer EnqTie DeqTie EnqWork Ge t Wo r k GetNext タスク直列化の要求 タスク直列化の解放 非アクティブ期間中のタスクの延期 タスク実行の再開 指定された通信レイヤへの制御権 の移転 タイグループ待ち行列へのスレッ ドの付加 タイグループ待ち行列からのスレ ッドの削除 作業待ち行列へのスレッドの付加 実行準備の完了の最高優先頴位の スレッドの取得 次のサービス要求へのスレッドの 進行 Execute   作業のデイスノくツチングを制御
するメインルーチン このルーチンは通信サブシステムにおいてタスクの実行
ごとに実行される。
Start Thread新スレッドの開始\ \ \ \ \ \ \ 一品ギ \ \ \ \ \ \ \ \ \ \ ComSys 第2表について説明する。プログラム又はセグメントは
ComSysと記してある。ComSysはPASCA
L言語のシンタックスに従っている。
先にリストしたようK,OSのサービスについての参照
を含む全てのグロシージャは主グロシージャExacu
te に先行する。また、プロシージャStart  
Threadが識別される。StartThreadは
選択されたComSysサブルーチンと交差接続される
。さらに、Start  ThreadはCPUホスト
に基づくデータ送信を行うアプリケーション又は遠隔の
ホストアプリケーションからネットワークを介して到着
するデータによって外部からの呼出しが可能である。
セグメン}ComSysの開始についていうと、主要な
構造の各々は制御ブロックによって表わされることがわ
かる。これらは、タイグループブロック、スレッドブロ
ック、作業要求ブロック及びコネクション制御ブロック
(CCB)である。ロックブロック及び最も重要な作業
待ち行列も表わされている。これらの全ての構造はPA
SCALのレコードタイプを使用している。このタイプ
によれば、1つのフォーム内における異種データタイプ
の原始の連関が可能となる。
プロシージャExecuteは各作業タスクの主処理ル
ープである。基本ループはWHI LE−Doタイプで
、プール条件″RUNNING″が真である限り継続す
る。
次に、プロシージャExecuteに続くグロシージャ
Start  Threadについて説明する。新しい
スレッドはCPUに基づくデータ送信を行っているアプ
リケーション又は遠隔のホストに基づくアプリケーショ
ンからネットワークを介して到着するデータなどのよう
な通信サブシステムへの外部からの刺激によって生成さ
れる。さらに、これらの通信サブシステム自身は自己の
通常の処理期間中に付加的なスレッドを生成する場合が
ある。
したがって、グロシージャStart  Thread
はプロシージャExecuteによっては直接的には呼
出されない。
Start Thsadは指定されたサービス又は作業
要求を含む新しいスレッドを生成する。スレッドは、そ
れが形成された後、そのサービス又は作業要求において
指定されたCCBによって示されるような適切なタイグ
ループに待ち行列化される。
そのスレッドがタイグループの所有者である場合、それ
は使用可能なタスクがそれをみつけることができる作業
待ち行列に付加される。そのスレッドがタイグループの
所有者でない場合には、このときには作業待ち行列に置
かれない。しかしながら、そのスレッドがタイグループ
の所有者となるときは、グロシージャExecuteに
よって作業待ち行列に置かれる。
グロシージャExscuteは通信サブシステムにおい
てスレッドを処理する各タスクによって実行される。各
タスクは作業の準備が完了したとき、作業待ち行列から
最高優先順位のスレッドを取得し、それを実行する。作
業待ち行列上のスレッドは一時に1タイグループにつき
1つのスレッドだけが実行できるという制限を満たすこ
とがわがつている。というのは、スレッドはそれが最初
にタイグループの所有者になるまでは作業待ち行列に置
くことができないからである。同じタイグループについ
ての付加的なスレッドはタイグループ制御ブロックで待
ち行列化される。WHILE−RUNNING−DOル
ープで最初に呼出される機能はGetWorkであるこ
とに留意されたい。プロ’/−ジャGetWorkは1
つのロックを作業待ち行列に置いてその作業待ち行列を
テストする。
それは1つのスレッドを取得しそのスレッド及びそのロ
ックの両方を待ち行列から除去する。
次に、プロシージャExeeateはそのスレッドによ
って指定されたサービス要求を実行する。スレッドがな
い場合にはこのときは作業は遂行されず、グロシージャ
Exscuteは1つのスレッドが生成され作業待ち行
列に置かれるまで、待ち状態にされる。WHI LE−
RUNNING−DOループ内でネストされた最初のW
HILE−Doループについて言及すると、作業はグロ
シージャInvoke Layer によって指定され
た通信レイヤに制御権を移すことによって遂行される。
プロシージャInvoke Layer  は関連する
CCHにおいて指名されたレイヤを呼出すことによって
指定されたスレッドについてトップサービス要求を実行
する。このレイヤは処理のため作業要求及びCCBに渡
される。通信レイヤは通常は有限状態機械として記述さ
れる。そのCCBは入力として現在の状態及び作業要求
を含む。そのレイヤのプロセスは付加的なサービス要求
を生成することがあるので、状態遷移を表わすためのC
CBを更新する。
付加的にいえば、Invoke Layer, Loc
k,Unlock,Wait及びPost のような多
くの定義された機能は明示コードを記述しないが、これ
らは標準的なオペレーティングシステムサービスを要求
する。
Invoke Layerルーチンによってサービス要
求が実行されると、そのタイグループの所有権は解放さ
れる。これはプロシージャDeqTieによって実現さ
れる。グロシージャpsq ’ri 13 hソoタイ
グループに関連するFIFO待ち行列から1つのスレッ
ドを削除する。その待ち行列における次の最初のスレッ
ドは、もしあれば、次のタイグループの所有者になる。
新しい所有者はその作業待ち行列に置かれるので、それ
を実行すべキタスクについての探索を継続することかで
きる。
もし付加的なサービス又は作業要求が存在するなら、そ
のスレッドは自己のタイグループで待ち行列化される。
もしそのスレッドが待ち行列における最初のものであれ
ば、このスレッドがタイグループの所有者となり、作業
待ち行列に置く必要なしに、現タスクによって実行でき
る。この特徴によれば、アプリケーションからの単一の
データ要求を、システム内でコネクションが存在しない
ときに、同じタスクを用いて通信レイヤを通すことが可
能となる。仮シにそのスレッドがタイグループの待ち行
列の最初のものでないとすれば、そのタスクはこのスレ
ッドの処理を停止して、作業待ち行列から別のスレッド
を取得しなければならなかったであろう。放棄されたス
レッドはタイグループの待ち行列に残って、そのスレッ
ドがタイグループの所有者になったとき何らかのタスク
によって作業待ち行列に置かれる。
グロシージャExecute内では、それは、実行され
たばかりの作業要求を除去し同じスレッドについて次の
作業要求を取得するグロシージャGetNextへの呼
出しである。別の作業要求がそのスレッドについて存在
すれば、タイグループに関連する待ち行列にそのスレッ
ドを付加するため、プロシージャEnq Tieが呼出
される。その待ち行列において最初のものであれば、こ
のスレッドはタイグループの所有者となシ、グロシージ
ャExecuteはネストされたWHILE−DOルー
プ内に残って、同じスレッドについての次の作業要求を
処理する。もしこのスレッドがタイグループの所有者で
ないなら、プロシージャExecuteは他のWHI 
LE−RUNNING−Doループに残って、グロシー
ジャGetWorkへの呼出シを介して別のスレッドを
選択する。
E.発明の効果 以上説明したように、本発明によれば、1以上のCPU
に基づくアプリケーションによって指定されるような通
信サブシステムの実行においてオペレーティングシステ
ムのディスパッチングを最大に行うことができる。
【図面の簡単な説明】
第1図は1つのホスト内のメッセージ処理の垂直方向の
動き及びホスト間の水平方向の動きを強調して示した複
数のレイヤを有するISO  OSI参照モデルを表わ
す図、第2図はデータ構造及びそれについて行われる変
更を示す図、第5図は本発明に基づくタイグループカテ
ゴリの要約した表現を示す図である。

Claims (1)

  1. 【特許請求の範囲】 CPUに基づく第1のマルチタスキングオペレーティン
    グシステムからのタスクのディスパッチングと、呼出し
    可能な資源のセットを含むCPUに基づく第2のマルチ
    タスキングオペレーティングシステムによつて適時にデ
    ィスパッチされる機能呼出しのスレツドとを同期化する
    下記の(a)ないし(c)のステップを有する方法。 (a)下記の(イ)ないし(ハ)の条件で、スレツドに
    よる所有権を、そのスレツドにおける機能呼出しによつ
    て指名される第2のマルチタスキングオペレーティング
    システムの資源のうちの1つに結び付けるステップ。 (イ)そのスレツドはその資源に対してエンキューされ
    た唯一のスレツドであること。 (ロ)そのスレツドは他のいかなる資源も所有しないこ
    と。 (ハ)上記(イ)及び(ロ)でないときは、その資源に
    おける機能呼出しによつて指名される各資源に対して資
    源をエンキューすること。 (b)タスクに対して資源を所有するスレツドをエンキ
    ューし、次に利用可能なタスクをタスクのスレツドの待
    ち行列における最初のスレツドに結び付けて、結び付け
    られたタスクによつて最初のスレツドの機能呼出しのう
    ちの所定の1つを実行するステップ。 (c)実行の後、最初に結び付けられたスレツドに対し
    その資源の所有権を解放させ、その同じ資源に対して待
    ち行列化された次のスレツドをその資源の所有者として
    タスクに対してエンキユーするステップ。
JP2019392A 1989-01-31 1990-01-31 タスクのデイスパツチングを同期化する方法 Granted JPH02231640A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US30474089A 1989-01-31 1989-01-31
US304740 1989-01-31

Publications (2)

Publication Number Publication Date
JPH02231640A true JPH02231640A (ja) 1990-09-13
JPH0563821B2 JPH0563821B2 (ja) 1993-09-13

Family

ID=23177778

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019392A Granted JPH02231640A (ja) 1989-01-31 1990-01-31 タスクのデイスパツチングを同期化する方法

Country Status (3)

Country Link
US (1) US5319782A (ja)
EP (1) EP0381655A3 (ja)
JP (1) JPH02231640A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001331391A (ja) * 2000-05-22 2001-11-30 Nec Miyagi Ltd Osiエージェントにおけるcmip要求の並列処理方式

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247675A (en) * 1991-08-09 1993-09-21 International Business Machines Corporation Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system
US5553305A (en) * 1992-04-14 1996-09-03 International Business Machines Corporation System for synchronizing execution by a processing element of threads within a process using a state indicator
US5892944A (en) * 1993-07-20 1999-04-06 Kabushiki Kaisha Toshiba Program execution and operation right management system suitable for single virtual memory scheme
US5586318A (en) * 1993-12-23 1996-12-17 Microsoft Corporation Method and system for managing ownership of a released synchronization mechanism
JP2856681B2 (ja) * 1994-01-27 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 外部事象を処理する方法およびシステム
US5675796A (en) * 1994-04-08 1997-10-07 Microsoft Corporation Concurrency management component for use by a computer program during the transfer of a message
US6148325A (en) * 1994-06-30 2000-11-14 Microsoft Corporation Method and system for protecting shared code and data in a multitasking operating system
SE9404294D0 (sv) * 1994-12-09 1994-12-09 Ellemtel Utvecklings Ab sätt och anordning vid telekommunikation
US6182108B1 (en) 1995-01-31 2001-01-30 Microsoft Corporation Method and system for multi-threaded processing
US6732138B1 (en) 1995-07-26 2004-05-04 International Business Machines Corporation Method and system for accessing system resources of a data processing system utilizing a kernel-only thread within a user process
JPH09511858A (ja) * 1995-08-18 1997-11-25 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン Osiエージェントにおける要求の並列実行
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
GB2308040A (en) * 1995-12-09 1997-06-11 Northern Telecom Ltd Telecommunications system
US5946463A (en) * 1996-07-22 1999-08-31 International Business Machines Corporation Method and system for automatically performing an operation on multiple computer systems within a cluster
US6195764B1 (en) 1997-01-30 2001-02-27 Fujitsu Network Communications, Inc. Data encoder/decoder for a high speed serial link
US5907702A (en) * 1997-03-28 1999-05-25 International Business Machines Corporation Method and apparatus for decreasing thread switch latency in a multithread processor
TW405090B (en) * 1997-04-04 2000-09-11 Ibm Predictive cache loading by program address discontinuity history
US6119170A (en) * 1997-12-29 2000-09-12 Bull Hn Information Systems Inc. Method and apparatus for TCP/IP multihoming on a host system configured with multiple independent transport provider systems
US7143410B1 (en) * 2000-03-31 2006-11-28 Intel Corporation Synchronization mechanism and method for synchronizing multiple threads with a single thread
US6834385B2 (en) * 2001-01-04 2004-12-21 International Business Machines Corporation System and method for utilizing dispatch queues in a multiprocessor data processing system
US7007244B2 (en) * 2001-04-20 2006-02-28 Microsoft Corporation Method and system for displaying categorized information on a user interface
FI114663B (fi) * 2001-12-20 2004-11-30 Nokia Corp Menetelmä ja järjestelmä käyttöjärjestelmätoimintojen suorittamiseksi sekä elektroniikkalaite
US20080195447A1 (en) * 2007-02-09 2008-08-14 Eric Bouillet System and method for capacity sizing for computer systems
US9032484B2 (en) 2011-10-31 2015-05-12 International Business Machines Corporation Access control in a hybrid environment
US9053141B2 (en) 2011-10-31 2015-06-09 International Business Machines Corporation Serialization of access to data in multi-mainframe computing environments
US9722908B2 (en) 2013-10-17 2017-08-01 International Business Machines Corporation Problem determination in a hybrid environment
DE102021104420A1 (de) * 2021-02-24 2022-08-25 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum Betreiben eines Bordnetzes, Bordnetz, und Steuergerät

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1054725A (ja) * 1964-04-06
US4369494A (en) * 1974-12-09 1983-01-18 Compagnie Honeywell Bull Apparatus and method for providing synchronization between processes and events occurring at different times in a data processing system
US4387427A (en) * 1978-12-21 1983-06-07 Intel Corporation Hardware scheduler/dispatcher for data processing system
US4380798A (en) * 1980-09-15 1983-04-19 Motorola, Inc. Semaphore register including ownership bits
DE3173549D1 (en) * 1981-03-16 1986-03-06 Ibm Improvements to digital data processing apparatus
US4553202A (en) * 1982-05-06 1985-11-12 International Business Machines Corporation User controlled dialog resource switching in a multi-tasking word processor
US4800521A (en) * 1982-09-21 1989-01-24 Xerox Corporation Task control manager
US4604694A (en) * 1983-12-14 1986-08-05 International Business Machines Corporation Shared and exclusive access control
US4736318A (en) * 1985-03-01 1988-04-05 Wang Laboratories, Inc. Data processing system having tunable operating system means
US4719569A (en) * 1985-10-11 1988-01-12 Sun Microsystems, Inc. Arbitrator for allocating access to data processing resources
US4736369A (en) * 1986-06-13 1988-04-05 International Business Machines Corp. Adaptive session-level pacing
US4965719A (en) * 1988-02-16 1990-10-23 International Business Machines Corporation Method for lock management, page coherency, and asynchronous writing of changed pages to shared external store in a distributed computing system
US5003470A (en) * 1988-12-09 1991-03-26 International Business Machines Corporation Method for tying and untying path access in a CPU-based, layered communications system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001331391A (ja) * 2000-05-22 2001-11-30 Nec Miyagi Ltd Osiエージェントにおけるcmip要求の並列処理方式

Also Published As

Publication number Publication date
JPH0563821B2 (ja) 1993-09-13
EP0381655A2 (en) 1990-08-08
US5319782A (en) 1994-06-07
EP0381655A3 (en) 1992-12-02

Similar Documents

Publication Publication Date Title
JPH02231640A (ja) タスクのデイスパツチングを同期化する方法
US5659701A (en) Apparatus and method for distributed program stack
US6167423A (en) Concurrency control of state machines in a computer system using cliques
US7827559B1 (en) Framework for executing multiple threads and sharing resources in a multithreaded computer programming environment
WO2021088419A1 (zh) 一种多业务请求进程调用fpga设备的方法及相关装置
KR100958303B1 (ko) 멀티코어 시스템 환경에서 내부 코어 간 통신채널을 이용한 모듈 디바이스의 동적 적재 및 실행을 통한 부하 균등화 시스템 및 방법
US9052957B2 (en) Method and system for conducting intensive multitask and multiflow calculation in real-time
EP1150208A2 (en) Multiprocessor object control
JP5516398B2 (ja) マルチプロセッサシステム、マルチプロセッサシステムのos間デバイス共有方法
EP0817017A2 (en) Application program interface system
US8161484B2 (en) Prevention of deadlock in a distributed computing environment
US6470346B2 (en) Remote computation framework
JP2002505471A (ja) 遠隔処理の中断および継続の方法と装置
US20140068165A1 (en) Splitting a real-time thread between the user and kernel space
US6101533A (en) Multiple interface data communication system and method utilizing multiple connection library interfaces with buffer and lock pool sharing
JP4183712B2 (ja) マルチプロセッサシステムにおいてプロセッサタスクを移動するデータ処理方法、システムおよび装置
JP4489958B2 (ja) イベントベースシステムの同時処理
KR20010098904A (ko) 멀티프로세서 객체 제어
Ayres et al. Stage: Python with actors
US6934953B2 (en) Deferred procedure call in interface description language
Wang et al. COTS simulation package (CSP) interoperability-a solution to synchronous entity passing
US5392426A (en) Method and apparatus for use in program operation, control and control block management and storage
EP0509946A2 (en) Apparatus and method for implementing a distributed program stack
Ii An overview of real-time ANSAware 1.0
Li Distributing Real-Time Objects: Some Early Experiences