JP2516915B2 - 共通領域参照制御方法 - Google Patents

共通領域参照制御方法

Info

Publication number
JP2516915B2
JP2516915B2 JP61005318A JP531886A JP2516915B2 JP 2516915 B2 JP2516915 B2 JP 2516915B2 JP 61005318 A JP61005318 A JP 61005318A JP 531886 A JP531886 A JP 531886A JP 2516915 B2 JP2516915 B2 JP 2516915B2
Authority
JP
Japan
Prior art keywords
variable
array
task
address
child task
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 - Lifetime
Application number
JP61005318A
Other languages
English (en)
Other versions
JPS62163148A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP61005318A priority Critical patent/JP2516915B2/ja
Publication of JPS62163148A publication Critical patent/JPS62163148A/ja
Application granted granted Critical
Publication of JP2516915B2 publication Critical patent/JP2516915B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】 〔概 要〕 共通領域を参照する複数タスクのある、マルチタスク
の環境のプログラムをFORTRAN等で記述可能にするため
の制御方法。共通領域を持つタスクが子タスクを起動す
るとき、その領域アドレスを通知できるようにし、子タ
スクでは自領域内に基点アドレスを持ち共通領域を含む
配列を仮定して、自領域内の配列データのようにして共
通領域の参照を指定する。この方法により、FORTRAN等
の通常の配列参照機能により、他プログラムにある共通
領域の参照を記述できるようになる。
〔産業上の利用分野〕
本発明は、計算機システムにおける、共通領域を参照
する複数タスクによる、マルチタスク環境で実行するプ
ログラムを、FORTRANプログラミング言語等で記述する
ことを可能にするための制御方法に関する。
公知のように、いわゆるオンライン処理システム等に
おいては、関連する処理を複数のいわゆるタスクで分担
し、それら複数のタスクを並行に実行させることが一般
に行われる。
こゝでタスクとは、公知のようにシステムの管理プロ
グラムの制御下で、それぞれ所定のプログラムを実行す
るために起動され、実行待ち又は実行中の状態にある各
対象を指す語として使用される。
そのようなシステムが科学技術分野の処理を行うシス
テムの場合には、FORTRAN等の科学技術分野向け高級プ
ログラミング言語を使用して、プログラムを作成するこ
とが望まれる。
〔従来の技術と発明が解決しようとする問題点〕
第3図は、処理を分担する2タスクが起動されている
状態を、記憶領域上の構成によって説明する図である。
図で、1は最初に起動される親タスク、2は親タスク
1のプログラム実行により、システムの制御プログラム
を介して親タスク1から起動される子タスクとする。
各タスクは、例えばそれぞれのプログラム領域3又は
4、及びデータ領域5又は6を有し、公知のようにシス
テムの制御プログラムの実行によって、制御を渡された
とき、それぞれのプログラム領域3又はプログラム領域
4のプログラムを実行する。
子タスク2は、親タスク1の処理を分担しているの
で、しばしば親タスク1との間にデータを授受する必要
が生じる。
このために、例えば親タスク1のデータ領域5内に、
両タスクの共通領域7を設ける。
各タスクは基本的に、それぞれ個別に完結した独立の
プログラムとして作成され、それぞれ自身の領域のみを
参照するようにされる。
しかし、共通領域7のような領域については、例えば
アセンブラ言語によってプログラムを記述する場合に
は、他プログラムの領域を、予め両プログラム間で取り
決めた、いわゆるラベルによって表されるアドレス名に
より、例えばその領域の先頭アドレスを指定することが
でき、又該先頭アドレスからの相対変位アドレスを直接
指定することができるので、他プログラムにある必要な
領域の参照は自由に指定することができる。
しかし、例えばFORTRANプログラミング言語のような
いわゆる高級言語では、公知のように、通常そのような
マルチタスク構成をサポートすることを考慮していない
ので、前記のように、個別に完結して作成された独立な
プログラム間では、他ブログラムの領域をラベル等によ
って指定する機能は無い。
又、計算機の構成に依存しない、抽象化したプログラ
ム空間の利点を第1に考慮しているので、他プログラム
はもとより、自プログラム領域内についても、領域内の
相対アドレスを直接に数値で指定することはできない。
このために、FORTRAN言語等によって作成するプログ
ラム(以下においてFORTRANプログラムという)におい
て、前記のような共通領域を設け、これを他のFORTRAN
プログラムから参照する場合には、そのような領域の定
義および参照を含む処理部分については、例えばアセン
ブラ言語によって作成して、本体のFORTRANプログラム
に結合しなければならないので、プログラミングに両言
語の知識を必要とし、プログラム開発の生産性を阻害す
るという問題がある。
〔問題点を解決するための手段〕
第1図は、本発明の処理の流れ図である。
図において、10〜16は処理ステップを示し、処理ステ
ップ10、11、12は親タスクから子タスクへ共通領域のア
ドレス値を通知する処理ステップ、処理ステップ13、1
4、15は子タスク内に基点アドレスをとり共通領域を含
む配列を設定して、共通領域を配列要素とした場合の添
字値を算出する処理ステップ、処理ステップ16は配列と
して該共通領域を参照する処理ステップである。
〔作 用〕
第1のタスクである親タスクは、共通領域を配列とし
て持っており、処理ステップ10において、アドレス設定
ルーチンを呼ぶことにより、配列の先頭アドレスを指定
の変数値として設定する。
処理ステップ11において、該変数値をパラメータの1
つに指定して、子タスク起動ルーチンを呼ぶことによ
り、システムの制御プログラムを介して第2のタスクで
ある子タスクを起動する。
子タスクでは、処理ステップ12でパラメータ取り出し
ルーチンを呼び、親タスクからの起動パラメータを指定
の変数に設定することにより、親タスクの共通領域のア
ドレス値を所定の第1の変数値として受け取る。
処理ステップ13でアドレス設定ルーチンを呼び、所要
の配列の先頭アドレスを基点アドレスとする第2の変数
値として設定する。
処理ステップ14で第1と第2の変数値として設定され
ているアドレス値の差を求め、処理ステップ15でそのア
ドレス差から、共通領域を指すべき配列の添字値を算出
する。
処理ステップ16において、配列の求めた添字値で指定
される要素にアクセスする方法で共通領域を参照する。
以上により、他プログラムの共通領域を参照するプロ
グラムを、FORTRANプログラム等において直接記述する
ことができるようになる。このためには前記アドレス設
定ルーチン、子タスク起動ルーチン及びパラメータ取り
出しルーチンの3サブプログラムを、FORTRAN等のシス
テムに追加するのみでよい。
〔実施例〕
第2図は記憶領域上のタスクの構成を説明する図であ
り、20は第1のタスクである親タスク、21は第2のタス
クである子タスクを示す。そして、この両タスクともに
相互に独立したプログラムとして完結するように作成さ
れている。
親タスク20にはプログラム領域22、データ領域23があ
り、データ領域23内に共通領域24がとられ、親タスクの
プログラムにおいて、共通領域24は配列Pとして宣言さ
れている。
子タスク21にはプログラム領域25、データ領域26があ
り、子タスクのプログラムにおいては、データ領域26内
に、後述のようにして構成する共通領域24を含む配列の
基点27とするための配列Qが宣言されている。
第1図において、処理ステップ10、11は親タスク20の
プログラムのステップであり、処理ステップ12〜16は子
タスク21のプログラムのステップであるものとする。
親タスク20は、処理ステップ10において、例えばFORT
RAN言語における、公知の「CALL」機能により、アドレ
ス設定ルーチンを呼ぶことにより、共通領域24である配
列Pの先頭アドレスを指定の変数PAの値として設定す
る。
上記のアドレス設定ルーチンは、第4図に示す如く、
主要な処理ステップ部分をアセンブラで記述されたサブ
ルーチンプログラムである。この第4図を説明すると、 (i)行目;各タスク内に記述される「CALL」文であ
り、アドレス設定ルーチン「¥FADRES」を、二つの実引
数(IBUFNM,IADRES)を付与して呼び出す。
親タスク・・・CALL ¥FADRES(P,PA) 子タスク・・・CALL ¥FADRES(Q,QA) (ii)行目;FORTRANの副プログラム宣言文であり、名称
が「¥FADRES」であって、二つの仮引数「IBUFNM,IADRE
S」を有する。この仮引数はCALL文で呼び出された時の
実引数によって置換される。
(iii)行目;上記(2)のFORTRAN副プログラム内に記
述される「CALL」文であり、アセンブラで記述されてい
るアドレス設定ルーチン「¥F1ADR」を、二つのパラメ
ータ「IBUFNM,IADRES」を付与して呼び出す。
(iv)行目;以降がアセンブラで記述されているアドレ
ス設定ルーチン「¥F1ADR」の本体部分であり、コモン
セクションとしてメモリ内に配置される。
(iv−1)行目;上記(2)のFORTRAN副プログラムか
らCALL文で呼び出されて処理を終了したときに、呼び出
し元のFORTRAN副プログラムを再開させる復帰位置をレ
ジスタに設定する。
(iv−2)行目;仮引数(IBUFNM,IADRES)のアドレス
を格納したパラメータリストの先頭アドレスがレジスタ
01に入っており、そのレジスタ01の内容をローカル領域
に格納する。
(iv−3)行目;レジスタ01にIADRESの先頭アドレスを
ロードする。
(iv−4)行目;レジスタ00にIBUFNMの先頭アドレスを
ロードする。
(iv−5)行目;IBUFNMの先頭アドレスをIADRESに格納
する。
(iv−6)行目;上記(2)のFORTRAN副プログラムに
復帰する。
となっている。
そして、親タスクからCALL文では、実引数として(P,
PA)を付与して、配列変数Pの先頭の記憶アドレスを変
数PAに設定し、子タスクからのCALL文では、実引数とし
て(Q,QA)を付与して、配列変数Qの基点となる記憶ア
ドレスを変数QAに設定する機能を持つものである。
処理ステップ11において、アドレス設定ルーチンで変
数PAに設定した親タスク内の配列変数Pの先頭アドレス
をパラメタとして、CALLにより子タスク起動ルーチンを
システム制御プログラムを介して呼ぶことにより、子タ
スクを起動する。
子タスク起動ルーチンは、第5図に示す如く、主要な
処理ステップ部分をアセンブラで記述されたサブルーチ
ンプログラムである。この第5図を説明すると、 (i)行目;親タスクプログラムは、子タスク起動ルー
チン「¥MATCH」を、CALL文により呼び出す。パラメタ
として、起動する子タスク名であるTASK及び、親タスク
内の共通領域の先頭アドレスであるPAを設定する。
(ii)行目;以降がアセンブラで記述されている子タス
ク起動ルーチン「¥MATCH」である。
(ii−1)行目;上記のようにCALL文で呼び出されて処
理を終了したときに、呼出し元への復帰位置をレジスタ
に設定する。
(ii−2)行目;引数(TASK,PA等)のアドレスを格納
したパラメータリストの先頭アドレスがレジスタ01に入
っており、そのレジスタ01の内容をローカル領域に格納
する。
(ii−3)行目;起動タスク名が格納されているローカ
ル領域のアドレスをレジスタ2に設定する。
(ii−4)行目:パラメータとして渡された共通領域の
先頭アドレスをレジスタ00に設定し、子タスク起動時に
参照するIECB領域に格納する。
(ii−5)行目;起動タスク名が格納されているレジス
タ2、及び共通領域の先頭アドレスを指定するIECB領域
を設定し、ATTACHマクロを発行し、子タスクを起動す
る。ATTACHマクロはパラメータとしてECB領域を使用す
るため、子タスクに通知する共通領域の先頭アドレスを
格納するIECB領域のアドレスをECB領域中に設定してお
く。
(ii−6)行目;FORTRAN主プログラムに復帰する。
となっている。
子タスク21では、処理ステップ12でパラメータ取り出
しルーチンを呼び、親タスク20からの起動パラメータを
指定の各変数に設定する。こゝで、前記親タスク20の変
数PAの値を、例えば変数TTOPを指定して受け取ることに
より、共通領域24の先頭の記憶アドレス値が変数TTOPの
値として設定されることになる。
処理ステップ13では、親タスク20の場合と同じサブル
ーチンのアドレス設定ルーチンを呼び、基点アドレスと
して使用するために、配列Qの先頭の記憶アドレスを変
数QAに設定する。
処理ステップ14で変数TTOPの値から変数QAの値を引い
て差Nを求める。差Nは第2図に示すように、記憶領域
上における配列Qの先頭から配列Pの先頭までの距離を
示すアドレス差である。
処理ステップ15では、配列Qが基点27を先頭アドレス
とする、第2図に点線で囲むような仮想の配列28である
とした場合の、配列Pの先頭に位置する配列要素の添字
値を、上記の距離を使って算出する。
即ち、この計算機システムが例えばバイトアドレスを
使用する構成のシステムであるとし、配列P、Qを、例
えば4バイト語の大きさの要素からなる配列として宣言
してあるものとすると、バイトアドレスで表現されるア
ドレス差Nから、添字値Mは、M=N/4+1により決定
する。
処理ステップ16において、添字値Mを使用して配列Q
の第M要素のデータQ(M)を参照することにより、共
通領域24の先頭の4バイトにアクセスする。言うまでも
なく、Mをベースとして添字値を増加させることによ
り、共通領域24である配列Pの任意の語にアクセスする
ことができる。
〔発明の効果〕
以上の説明から明らかなように、本発明によれば、比
較的簡単な3種のサブプログラムをFORTRAN等のシステ
ムに追加するのみで、計算機システムの、他プログラム
にある共通領域を参照するプログラムを、FORTRAN言語
等によって直接記述することができるので、オンライン
処理プログラム等をFORTRANプログラム等で作成するこ
とが容易になり、経済的に、プログラム開発の効率を向
上するという著しい工業的効果がある。
【図面の簡単な説明】
第1図は本発明の処理の流れ図、 第2図は本発明のタスクの構成を説明する図、 第3図は従来のタスクの構成を説明する図 第4図はアドレス設定ルーチンの要部ステップ図、第5
図は子タスク起動ルーチンの要部ステップ図である。 図において、 1、20は親タスク、2、21は子タスク、 3、4、22、25はプログラム領域、 5、6、23、26はデータ領域、 7、24は共通領域、10〜16は処理ステップ、 27は基点、28は仮想の配列 を示す。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特公 昭54−1540(JP,B1) 江村,「オペレーティング・システム への構造的アプローチ(下巻)」,5版 昭和57年7月10日,日本コンピュータ 協会,P.836−843

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】少なくとも配列変数と配列参照命令文とサ
    ブルーチンプログラムを呼び出す呼出命令文を含んで構
    成される親タスクと子タスク間で、前記親タスクに含ま
    れる第1の配列変数を前記タスクが共用する制御方法で
    あって、 前記親タスク及び子タスク内から、配列変数と変数を割
    り当てられた態様で前記呼出命令文によって呼び出さ
    れ、当該配列変数に割り当てられた記憶領域の先頭アド
    レスを当該変数に割り当てて返す配列アドレス設定サブ
    ルーチンプログラムと、 前記親タスク内から呼び出され、前記子タスクを起動す
    る子タスク起動サブルーチンプログラムと、 前記子タスク内から呼び出され、前記子タスクの起動時
    に指定されたパラメータの値を所定の変数に取得するパ
    ラメータ取出サブルーチンプログラムとを有し、 前記親タスクは、前記配列アドレス設定サブルーチンプ
    ログラムを前記呼出命令文によって呼び出し、第1の配
    列変数の先頭アドレスを第1の変数に取得するステップ
    と、 取得した前記第1の変数をパラメータとして、前記子タ
    スク起動サブルーチンプログラムを前記呼出命令文によ
    って呼び出すステップとから構成し、 前記子タスクは、前記呼出命令文によって、前記パラメ
    ータ取出サブールチンプログラムを呼び出して、前記パ
    ラメータから前記第1の配列変数の先頭アドレスを前記
    所定の変数に取得し、且つ、前記配列アドレス設定サブ
    ルーチンプログラムを呼出命令文によって呼び出し、前
    記子タスク内に設けた第2の配列変数の基点アドレスを
    第2の変数に取得するステップと、 取得した基点アドレスを示す前記第2の変数と、第1の
    配列変数の先頭アドレスを示す前記所定の変数との差に
    基づいて、前記子タスク内で参照する第2の配列変数の
    添字値を、前記第2の配列変数の基点アドレスを基点と
    した前記第1の配列変数の配列要素の位置に換算して参
    照するステップと、 から構成したことを特徴とする共通領域参照制御方法。
JP61005318A 1986-01-14 1986-01-14 共通領域参照制御方法 Expired - Lifetime JP2516915B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP61005318A JP2516915B2 (ja) 1986-01-14 1986-01-14 共通領域参照制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP61005318A JP2516915B2 (ja) 1986-01-14 1986-01-14 共通領域参照制御方法

Publications (2)

Publication Number Publication Date
JPS62163148A JPS62163148A (ja) 1987-07-18
JP2516915B2 true JP2516915B2 (ja) 1996-07-24

Family

ID=11607905

Family Applications (1)

Application Number Title Priority Date Filing Date
JP61005318A Expired - Lifetime JP2516915B2 (ja) 1986-01-14 1986-01-14 共通領域参照制御方法

Country Status (1)

Country Link
JP (1) JP2516915B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5093916A (en) * 1988-05-20 1992-03-03 International Business Machines Corporation System for inserting constructs into compiled code, defining scoping of common blocks and dynamically binding common blocks to tasks
JPH0267638A (ja) * 1988-09-01 1990-03-07 Meidensha Corp プログラミング言語のデータ処理方式
JP2527223B2 (ja) * 1988-12-12 1996-08-21 富士通株式会社 タスク間通信用メッセ―ジ領域制御方式
JPH0827728B2 (ja) * 1989-03-08 1996-03-21 富士通株式会社 データ処理装置
JPH07129416A (ja) * 1993-10-29 1995-05-19 Nec Corp プロセス間通信方法および装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS541540A (en) * 1977-06-07 1979-01-08 Kobashi Kogyo Kk Tractor

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
江村,「オペレーティング・システムへの構造的アプローチ(下巻)」,5版昭和57年7月10日,日本コンピュータ協会,P.836−843

Also Published As

Publication number Publication date
JPS62163148A (ja) 1987-07-18

Similar Documents

Publication Publication Date Title
Hauck et al. Burroughs' B6500/B7500 stack mechanism
US5923882A (en) Cross-module optimization for dynamically-shared programs and libraries
US5097533A (en) System and method for interfacing computer application programs written in different languages to a software system
EP0538817B1 (en) High-speed processor capable of handling multiple interrupts
US5553286A (en) System and method for preparing a computer program for execution
JPH03179528A (ja) 位置独立形コード・ロケーション・システム
JPH06266563A (ja) 複数同時オブジェクト・バージョンをサポートする効率的ルータ
JP2681929B2 (ja) プログラム起動方式
JP2516915B2 (ja) 共通領域参照制御方法
JPS5835295B2 (ja) マスタ・スレ−ブ・システムにおけるデ−タ転送方式
JPS55102064A (en) Backup system in composite computer system
JP2865291B2 (ja) モジュール結合制御方式
EP0915416A2 (en) System for allowing a two word instruction to be executed in a single cycle and method therefor
JP3120434B2 (ja) プログラム動作解析方法
JPS62168497A (ja) 交換処理プログラムにおけるデ−タベ−ス処理方式
JP2841363B2 (ja) 外部モジュール獲得方式
JP3293821B2 (ja) 動的リンクシステム
JP3085309B2 (ja) デバッグシステム
JPS6168643A (ja) インタプリタ方式言語機能の拡張方式
JPS63168762A (ja) マルチプロセツサ起動装置
JPH02125333A (ja) プログラムメモリ
JPH0511336B2 (ja)
JPH02118727A (ja) システムサブルーチン呼出し方式
Adamovich cT: an imperative language with parallelizing features supporting the computation model “autotransformation of the evaluation network”
Cholerton Ada for closely coupled multiprocessor targets

Legal Events

Date Code Title Description
EXPY Cancellation because of completion of term