JP2681929B2 - プログラム起動方式 - Google Patents

プログラム起動方式

Info

Publication number
JP2681929B2
JP2681929B2 JP62154854A JP15485487A JP2681929B2 JP 2681929 B2 JP2681929 B2 JP 2681929B2 JP 62154854 A JP62154854 A JP 62154854A JP 15485487 A JP15485487 A JP 15485487A JP 2681929 B2 JP2681929 B2 JP 2681929B2
Authority
JP
Japan
Prior art keywords
program
relocator
stored
memory device
address
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
JP62154854A
Other languages
English (en)
Other versions
JPS63317824A (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 JP62154854A priority Critical patent/JP2681929B2/ja
Priority to CA000569438A priority patent/CA1305798C/en
Priority to US07/206,827 priority patent/US5029078A/en
Priority to GB08814223A priority patent/GB2206224A/en
Priority to KR1019880007241A priority patent/KR910008383B1/ko
Priority to DE3821088A priority patent/DE3821088A1/de
Publication of JPS63317824A publication Critical patent/JPS63317824A/ja
Application granted granted Critical
Publication of JP2681929B2 publication Critical patent/JP2681929B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation

Description

【発明の詳細な説明】 〔産業上の利用分野〕 この発明は電子計算機内のメモリに実行可能なプログ
ラムを配置し、メモリの固定アドレスに別の実行可能な
プログラムを配置し、プログラムを起動させるプログラ
ム起動方式に関するものである。 〔従来の技術〕 第14図は例えば広く一般に使用されている従来のプロ
グラム起動方式を説明するためのブロック図である。図
において、1はプログラムをファイルとして格納するフ
ァイル格納装置、2はオペレーティングシステムやプロ
グラムなどを実行時に格納しておくメモリのマップ、3
はこのマップ2上のオペレーティングシステム(OS)、
4はこのオペレーティングシステム3の下で動作する実
行可能なプログラム、7はそのプログラム4のプログラ
ム本体、6はプログラム本体7のリロケーション情報や
本体7の実行開始アドレスなどが格納されリンク作業時
に作成されるプログラムのヘッダ、5aは実行可能なプロ
グラムがメモリにロードされた時にオペレーティングシ
ステム3が付加する実行可能なプログラムに渡す実行環
境情報やユーザの入力したパラメータ文字列などの入っ
たヘッダである。 第13図に示すステップS6〜S10は従来から広く一般に
知られているプログラム作成手続きを示すフローチャー
トである。 第4図は従来から広く一般に使用されている電子計算
機システムを示すブロック図である。図において、1は
実行可能なプログラムなどを格納・保存しておくファイ
ル格納装置、1aはファイル格納装置1とシステムバス30
とのデータ送受を行うファイルコントローラ、24はシス
テムバス30を利用し所定の演算・制御を行うCPU(中央
処理装置)、25はファイルコントローラ1aからのファイ
ルをプログラムとして格納するメモリ装置、26はこのシ
ステムの実行結果やユーザなどからの入力結果を表示す
る表示装置、26aは表示装置26を制御すると共に表示デ
ータを表示装置26に送る表示コントローラである。27は
このシステムの制御データをユーザが送るために操作す
るキーボード装置、27aはキーボード装置27からのデー
タをシステムバス30に送るキーボードコントローラ、28
は実行結果を出力するプリンタ装置、28aはプリンタ装
置28にデータを送るプリンタコントローラ、29はその他
の入出力を行う入出力装置、29aは入出力装置29を制御
する入出力コントローラである。 次に、従来のプログラム起動方式の動作について説明
する。第13図に示すステップS6のプログラム作成処理に
入り、ステップS7でソースプログラムを作成し、ステッ
プS8でそのソースプログラムをアセンブルしてオプジェ
クトプログラムに変換してステップS9でリンクし、ステ
ップS10で実行可能なプログラムが作成される。 なお、ステップS10の実行可能なプログラムはステッ
プS11の既存のプログラムによっても作成可能である。
この実行可能なプログラムは、第14図に示すファイル格
納装置1にファイルとして格納され、ユーザの指定によ
ってオペレーティングシステム3が起動し、このオペレ
ーティングシステム3の機能によりプログラム4として
ヘッダ5aが付加されてメモリマップ2のエリアへ格納さ
れる。その後再びオペレーティングシステム3の機能に
よりプログラムのヘッダ6にあるリロケーション情報が
プログラム本体7にセットされ、オペレーティングシス
テム3からプログラムの実行開始アドレスへ実行の制御
が移行され、プログラム本体7が起動する。 〔発明が解決しようとする問題点〕 従来のプログラム起動方式は以上のように動作するの
で、例えばメモリ装置の固定アドレスの内、空記憶エリ
アでないアドレスに別のプログラムが配置された場合、
そのアドレスにあった元のプログラムが破壊され、電子
計算機が予期していない処理過程で停止するハングアッ
プなどが発生するという問題点があった。すなわち、メ
モリ装置上の特定の固定アドレス空間(固定位置)に実
行可能なプログラムAがすでに配置されていて、その
後、上記固定アドレス空間にしか格納(ローディング)
できない別の実行可能なプログラムBをこの固定アドレ
ス空間に格納しようとする場合、このプログラムBがこ
の固定アドレス空間に格納されると、すでに配置されて
いるプログラムAが破壊されてしまう事態,つまり、プ
ログラムBによるプログラムAの競合メモリエリア破壊
が生じてしまう。 この発明は上記のような問題点を解消するためになさ
れたもので、元のプログラムの破壊を防止し、電子計算
機のハングアップの発生を防止することができるプログ
ラム起動方式を提供することを目的とする。 〔問題点を解決するための手段〕 この発明に係るプログラム起動方式は、プログラムの
情報のチェックやメモリ装置25の記憶領域のサイズのチ
ェックなどを行うとともに、オペレーティングシステム
3から制御を渡されると、オペレーティングシステム3
が付加したユーザの指定するアドレス情報等を有するヘ
ッダ5内のスタートアドレス情報を基にして、実行可能
な第1のプログラム4の再格納アドレスを取得し、かつ
この取得した再格納アドレス空間に当該第1のプログラ
ム4を再配置するためのリロケータ4aを、第1のプログ
ラム4に付加して成るリロケータ付きプログラム4a+4
としてファイル化しておき、このリロケータ4a付きの第
1のプログラム4+4aをユーザの指示によりメモリ装置
25にロードするときには、上記リロケータ4aが第1のプ
ログラム4を再配置するようにしたことを特徴とするも
のである。 〔作用〕 まず、前準備としてリロケータ4aが実行可能なプログ
ラム4(第1のプログラム)に付加される。このリロケ
ータ付きのプログラム4a+4はファイル格納装置1にフ
ァイルとして格納される。ユーザによりキーボード装置
27が操作され、リロケータ付きのプログラム4a+4がス
タートアドレス情報(第11図の31内)とともに指定され
ると、リロケータ付きのプログラム4a+4は、オペレー
ティングシステム3によりヘッダ5が付加されて、オペ
レーティングシステム3が通常実施するプログラムの格
納位置に格納される。上記ヘッダ5には上記スタートア
ドレス情報も格納されている。その後、オペレーティン
グシステム3からリロケータ4aに制御が移ると、リロケ
ータ4aは、ヘッダ5内のスタートアドレス情報を基にし
て、プログラム4の再格納アドレスを決定(演算)し、
この決定した再格納アドレスにプログラム4を再格納す
る。これにより、メモリ装置25上の上記固定アドレス空
間にしか格納できない実行可能な別のプログラム9(第
2のプログラム)のための固定アドレス空間が確保され
るので、その後、プログラム9がメモリ装置25上の固定
アドレス空間に格納される。このようにプログラム4は
変更されずにメモリ装置25上の固定アドレス以外の空間
に再格納され、プログラム9はメモリ装置25上の固定ア
ドレス空間に格納される。 〔発明の実施例〕 以下、この発明の一実施例を図面に基づいて説明す
る。この実施例のプログラム起動方式が適用される計算
機システムの構成は第4図に示す。第1図はこの発明の
実施例に係るプログラム起動方式によるプログラムの再
配置可能でない場合を示すブロック図である。第1図に
おいて、第14図に示す構成要素に対応するものには同一
の参照符を付し、その説明を省略する。第1図におい
て、4aは実行可能なプログラムの再配置(再格納)やユ
ーザからプログラム本体7へ渡される情報のチェックや
メモリサイズのチェックなどを行うリロケータ、5はフ
ァイルをメモリ装置25にロードする時にオペレーティン
グシステムが付加するヘッダ、8はリロケータの本体を
示す。 第2図はこの実施例によるプログラムの再配置可能な
場合を示すブロック図である。第2図において、第1図
に示す構成要素に対応するものには同一の参照符を付
し、その説明を省略する。第2図において、9は実行可
能なプログラムをリロケータ4aが再配置した以降にある
固定アドレスに置かれた別の実行可能なプログラムを示
す。また、4はアドレスが固定したプログラム本体を示
す。すなわち、第1図では、メモリ装置25の再格納アド
レスの指定値が空記憶エリアのサイズを越えていて、実
行可能なプログラム4を再配置していない場合の状態図
であり、第2図は、メモリ装置25の再格納アドレスの指
定値が空記憶エリアのサイズを越えていなくて、実行可
能なプログラム4をリロケータ4aで再配置して固定アド
レス空間を解放し、さらに、この解放された固定アドレ
ス空間に別の実行可能なプログラム9が配置された状態
を示す図である。 別の言い方をすれば、第1図は、リロケータ4a付きの
プログラム4+4aがメモリ装置25にローディングされ
て、リロケータ4aが再配置の処理を実行する直前のメモ
リ装置25上の配置例を示す図であり、第2図は、リロケ
ータ4aの処理実行後、さらに、解放された固定アドレス
空間に、別のプログラム9が配置された状態のメモリ装
置25上の配置例を示す図である。 第3図はこの実施例におけるリロケータの実行の流れ
を示すフローチャートである。第5図は第3図のステッ
プN1のサブルーチン、第6図は第3図のステップN3のサ
ブルーチン、第7図は第3図のステップN5のサブルーチ
ン、第8図は第3図のステップN6のサブルーチン、第9
図は第3図のステップN7のサブルーチン、第10図
(a),(b),(c)は第3図のステップN0,N8,N9の
処理を示すフローチャートである。第11図はコマンドラ
インとヘッダ内の操作とを説明するための図、第12図
(a),(b),(c)は使用テーブルレジスタとプロ
グラムのヘッダとを説明するための図である。第11図の
31は表示装置上にオペレーティングシステムにより出力
するプロンプト(Prompt)とユーザが指定するコマンド
ラインを示し、32はヘッダ5内をステップN1のサブルー
チンにより変更した前のパラメータ情報を示し、33はス
テップN1のサブルーチンにより変更した後のパラメータ
情報を示す。また、第12図の34はリロケータ内に用意し
たテーブルを示し、35はCPU24のレジスタの内、リロケ
ータが使用するレジスタを示し、36はプログラムのヘッ
ダ情報を示す。 次にこの実施例のプログラム起動方式の動作について
説明する。プログラムを実行させる前準備として、第13
図に示すステップS1のリロケータ作成処理に入り、ステ
ップS2でソースプログラムを作成し、ステップS3でその
ソースプログラムをアセンブルしてオブジェクトプログ
ラムに変換してステップS4でリンクし、ステップS5でリ
ロケータ4aが作成される。また、ステップS6のプログラ
ム作成処理に入り、ステップS7でソースプログラムを作
成し、ステップS8でそのソースプログラムをアセンブル
してオブジェクトプログラムに変換してステップS9でリ
ンクし、ステップS10で実行可能なプログラム4が作成
される。なお、ステップS10の実行可能なプログラム4
はステップS11の既存のプログラムによっても作成可能
である。ステップS5のリロケータ4aとステップS10の実
行可能なプログラム4とは、ステップS12においてリロ
ケータ4aが実行可能なプログラム4に付加され、ステッ
プS13でリロケータ付きの実行可能なプログラム4a+4
となる。すなわち、ステップS1〜S5の処理により作成さ
れたリロケータ4aに、ステップS6〜S10の処理により作
成された実行可能なプログラム4をステップS12の処理
により付加し、ステップS13の一つの実行可能なプログ
ラム4a+4とする。このプログラム4a+4は、ファイル
として第1図に示すファイル格納装置1に格納される。
このファイルがユーザの指定によってオペレーティング
システム3により起動され、このリロケータ4aが付加さ
れた実行可能なプログラム4a+4に、オペレーティング
システム3の機能によりヘッダ5が付加されてメモリマ
ップ2のエリアへ格納される。その後オペレーティング
システム3からリロケータ本体8に実行の制御が渡され
る。なお、このような処理はCPU24の演算や制御に基づ
いて行われるものである。 次に、第3図に示すフローチャートを参照して動作に
ついて説明する。 第3図はプログラムのMAIN(メイン)ルーチンであ
る。まず、ステップN0のイニシャル処理で第10図(a)
にある通り、スタックをリロケータ内にスタック用レジ
スタの値を変更することによって取り込み、次にリロケ
ータ内の各テーブルの値をerrorメッセージ文字列テー
ブルを除いてゼロクリアすることを行い、次にステップ
N1のコマンドラインのパラメータチェックでコマンドラ
インのパラメータチェックやユーザの指定するスタート
アドレス情報の文字列データをアドレス値に変換するサ
ブルーチンを呼び、ステップN2の判定でステップN1から
のフラグ情報によりパラメータerror(誤り)か否かを
判断する。そして、キャリーフラグがセットされていた
場合ステップN3のパラメータerror処理サブルーチンを
呼んでステップN4でOS3の機能を使って制御をOS3に戻
し、又キャリーフラグがセットされていなかった場合、
ステップN5のメモリ容量チェックサブルーチンを呼んで
プログラムが動作可能なメモリサイズをチェックし、ス
テップN6のプログラムのメモリ装置25内の位置設定でプ
ログラムをユーザの指定するスタートアドレス情報の位
置に展開してメモリ装置25内の位置を設定するサブルー
チンを呼んで、ステップN2aでステップN2と同じ処理を
し、ステップN7のプログラム本体7のアドレス値固定処
理でプログラム本体7のアドレス値未決の箇所をリロケ
ート項目数分設定するサブルーチンを呼んで、ステップ
N8の終了処理で第10図(b)にある通り、ステップN7の
サブルーチンで設定されるプログラムのスタック部アド
レス用テーブルの値をスタック用レジスタにストアする
ことによってスタックをプログラムに渡し、ステップN1
のサブルーチンより変更している各種ポインタ用レジス
タをヘッダ5の先頭アドレスの値に変更し、ステップN9
で第10図(c)の通り、ステップN7のサブルーチンで設
定されているプログラムの実行開始アドレス先へJMP
(ジャンプ)し、制御をプログラムへ移行して、リロケ
ータとしての一連のプロセスを終了し、リロケータの目
的と完了する。 第5図は第3図に示すステップN1のコマンドラインの
パラメータチェック用サブルーチンである。まず、OS3
の機能により第11図に示す31の表示装置上のコマンドラ
インの内、実行可能なプログラム23のファイル名を除い
たユーザの指定したコマンドラインのパラメータとその
情報の長さが第11図に示す32のヘッダ5にセットされて
いるので、ステップNS01でヘッダ5のパラメータ長情報
のアドレス値をポインタ用レジスタへストアし、ステッ
プNS02でヘッダ5の中のパラメータ長情報をデータ用レ
ジスタへストアする。ステップNS03でポインタ用レジス
タの値+データ用レジスタの値+1のアドレス位置にパ
ラメータの終端の情報としてゼロのデータをストアし、
ステップNS04でパラメータ長情報の値をカウンタ用レジ
スタへストアする。ステップNS05でポインタ用レジスタ
にパラメータの先頭アドレスをストアし、ステップNS06
でポインタ用レジスタの示すアドレスのデータをデータ
用レジスタへストアし、ステップNS07でデータ用レジス
タの値がスタートアドレス情報かを判断する。ここで、
スタートアドレス情報の場合、ステップNS08でスタート
アドレス情報を第12図(a)に示す34のスタートアドレ
ス情報用テーブルへストアし、ステップNS09でスタート
アドレス情報のパラメータに誤りがあればステップNS10
でキャリーフラグをセットしてステップNS20で第3図の
メインルーチンへ戻り、誤りがなければステップNS11で
第12図(a)に示す34のスタートアドレス情報有無フラ
グ用テーブルにFFH(16進数)をストアし、ステップNS1
2でスタートアドレス情報用テーブルの値をメモリ装置2
5の対応するアドレス値に変換して第12図(a)に示す3
4のスタートアドレス用テーブルへストアする。ステッ
プNS13でポインタ用レジスタの値にスタートアドレス情
報の長さの値−1を加え、ステップNS14でヘッダ5のパ
ラメータ長情報をスタートアドレス情報の長さの値分減
じ、ステップNS17へ制御を移行する。一方ステップNS07
でスタートアドレス情報でない場合、ステップNS15で、
他のパラメータに誤りがあるかを判断し、誤りがあれば
ステップNS10へ制御を移行し、誤りがなければステップ
NS16でポインタ用レジスタの示すアドレスへデータ用レ
ジスタの値をストアし、ステップNS17でカウンタ用レジ
スタ=0又はデータ用レジスタ=0を判断し、真でなけ
ればステップNS18でポインタ用レジスタの値に1を加え
て制御をステップNS06へ移行する。ステップNS17におい
て真ならばステップNS19でキャリーフラグをリセットし
てステップNS20へ制御を移行し、ステップNS20で第3図
のメインルーチンへ戻る。なお、ヘッダ5のパラメータ
情報は、この操作により第11図に示す32の状態から33の
状態となり、実行可能なプログラム4で必要な情報のみ
が残る。 第6図は第3図に示すステップN3のパラメータerror
処理用サブルーチンである。ここでは、ステップN3S01
で第12図(a)に示す34のerrorメッセージ文字列テー
ブルのerrorメッセージ文字列をOS3の機能を使って表示
装置26へ出力し、ステップN3S02で第3図のメインルー
チンへ戻る。 第7図は第3図に示すステップN5のメモリ容量チェッ
ク用サブルーチンである。まず、ステップN5S01でリロ
ケータ4aの高アドレス側に付加してあるプログラム本体
の現在の先頭アドレス値を第12図(a)に示す34のベー
スアドレス用テーブルへストアし、ステップN5S02でヘ
ッダ5の先頭から現在使用可能なメモリサイズ情報をOS
3からデータ用レジスタに受け取り、ステップN5S03でプ
ログラムの使用するメモリサイズをCPU内蔵のデータ用
レジスタに設定して、これをOS3に要求し、ステップN5S
04でメモリ装置25の先頭からヘッダ5の先頭までのサイ
ズをステップN5S03でのデータを保持しているデータ用
レジスタの値に加えて、データ用レジスタの値を第12図
(a)に示す34のメモリの最大値用テーブルへストア
し、ステップN5S05で第3図のメインルーチンへ戻る。 第8図は第3図に示すステップN6のプログラムのメモ
リ装置内位置設定用サブルーチンである。まず、ステッ
プN6S01で第12図に示す34のベースアドレス用テーブル
の値をポインタ用レジスタへストアし、ステップN6S02
で実行可能なプログラム4のリンク時に作成されている
プログラムのヘッダの中から、第12図(c)に示す36の
a〜eのプログラムの起動情報を第12図(a)に示す34
の各テーブルへストアする。この内aのプログラムのペ
ージサイズは、メモリ装置内の実際のサイズに直して34
のプログラムサイズ用テーブルへストアし、cのプログ
ラムのヘッダのサイズは、34のベースアドレス用テーブ
ルの値を加えてプログラム本体の先頭アドレス用テーブ
ルへストアする。そして、ステップN6S03で第12図
(a)に示す34のスタートアドレス有無フラグ用テーブ
ルがゼロの場合、ステップN6S04で現在のプログラムの
スタートアドレスを第12図(a)に示す34のスタートア
ドレス用テーブルへストアし、ステップN6S05でキャリ
ーフラグをリセットしてステップN6S14で第3図のメイ
ンルーチンへ戻り、ゼロ以外の場合、ステップN6S06へ
制御を移行する。ステップN6S06では、第12図(a)の
テーブル34に示すスタートアドレス用テーブルの値が、
{(最大値用テーブルの値)−(プログラムサイズ用テ
ーブルの値)}の値以下で、さらに、現在のプログラム
のスタートアドレス値(すなわち、第1図のプログラム
本体7の先頭アドレス値)以上であるという条件を満た
せば、プログラムをスタートアドレス情報の位置から展
開可能であるので、ステップN6S08に制御を移し、再配
置を実行するための処理を進めるわけである。言い換え
れば、ステップN6S06では、リロケータ4aにより指定さ
れるスタートアドレス値が、プログラム本体7の容量を
引いたメモリ装置25の容量を示す値(すなわち、プログ
ラム4をメモリ装置25内の最も高アドレス側に再配置す
ることができる、プログラム本体7の先頭アドレス値)
以下で、現在のプログラムのスタートアドレス値以上で
あるかどうかという条件を判定しているわけである。こ
の条件が満たされない場合は、再配置を実行しない。つ
まり、上記リロケータ4aにより指定されるスタートアド
レス値が、上述したプログラム本体7の容量を引いたメ
モリ装置25の容量を示す値より大きい場合、または、現
在のプログラムのスタートアドレス値より小さい場合
は、再配置を実行しない。すなわち、ステップN6S07で
キャリーフラグをセットして第3図のメインルーチンへ
戻る。ステップN6S08で34のプログラム本体の先頭アド
レス用テーブルの値をポインタ用レジスタへストアして
34のプログラムサイズ用テーブルの値をポインタ用レジ
スタに加え、ステップN6S09で34のスタートアドレス用
テーブルの値を第2ポインタ用レジスタへストアして34
のプログラムサイズ用テーブルの値を第2ポインタ用レ
ジスタに加え、ステップN6S10で32のプログラムサイズ
用テーブルの値をカウンタ用レジスタへストアし、ステ
ップN6S11でポインタ用レジスタの示すアドレスのデー
タを第2ポインタ用レジスタの示すアドレスへストア
し、ステップN6S12でカウンタ用レジスタ及び各ポイン
タレジスタを1減じ、ステップN6S13でカウンタ用レジ
スタがゼロでない場合、制御をステップN6S11へ移行
し、カウンタ用レジスタがゼロの場合、ステップN6S05
でキャリーフラグをリセットし、ステップN6S14で第3
図に示すメインルーチンへ戻る。 第9図は第3図に示すステップN7のプログラム本体の
アドレス値固定用サブルーチンである。 まずステップN7S01で第12図(a)に示す34のリロケ
ート項目数用テーブルの値をカウンタ用レジスタへスト
アし、ステップN7S02で34のスタートアドレス用テーブ
ルの値をデータ用レジスタへストアし、ステップN7S03
で第12図(c)に示す36のプログラムヘッダの中のリロ
ケート項目のならびの先頭アドレスをポインタ用レジス
タへストアし、ステップN7S04でポインタ用レジスタの
示すアドレスのデータを第2ポインタ用レジスタへスト
アし、ステップN7S05でデータ用レジスタの値を第2ポ
インタ用レジスタに加え、ステップN7S06でデータ用レ
ジスタの値を第2ポインタ用レジスタの示すアドレスの
値に加え、ステップN7S07でポインタ用レジスタにリロ
ケート項目1つ分のサイズを加え、ステップN7S08でカ
ウンタ用レジスタを1減ずる。ステップN7S09でカウン
タ用レジスタがゼロでない場合、制御をステップN7S04
へ移行し、カウンタ用レジスタがゼロの場合、制御をス
テップN7S10へ移行する。ステップN7S10で第12図(a)
に示す34のプログラムの実行開始アドレス用テーブルに
データ用レジスタの値を加え、ステップN7S11で34のプ
ログラムのスタック部アドレス用テーブルにデータ用レ
ジスタの値を加え、第3図のメインルーチンへ戻る。 以上のような処理により、プログラム本体7が起動さ
れた後、別の実行可能なプログラム9がメモリ2の固定
アドレスに配置されてもハングアップせずに実行を続け
ることが可能となる。 なお、上記実施例ではリロケータの特筆すべき処理項
目をあげているが、プログラム本体に合わせ、他の処理
項目を追加してもよい。また、上記実施例では開始アド
レスのデフォルト値を設けていなかったが、ユーザがパ
ラメータを何も指定しない時はデフォルトのアドレスに
実行可能なプログラムが再配置されるようにしてもよ
い。 〔発明の効果〕 以上のように本発明によれば、オペレーティングシス
テムにより決定されるメモリ装置上の領域で動作する第
1のプログラム4にリロケータ4aを付加した第1のプロ
グラム4+4aをファイル化しておき、ユーザがこのリロ
ケータ付第1のプログラム4+4aをメモリ装置上にロー
ドするように指示すると、リロケータ4aが上記第1のプ
ログラム4を再配置するようにして、第2のプログラム
のためにメモリ装置上の固定アドレスを確保するように
したので、これにより元のプログラムの破壊を防止する
ことができ、電子計算機のハングアップの発生を防止す
ることができるという効果が得られる。
【図面の簡単な説明】 第1図はこの発明の一実施例に係るプログラム起動方式
によるプログラムの再配置可能でない場合を示すブロッ
ク図、第2図はこの実施例のプログラム起動方式による
プログラムの再配置可能な場合を示すブロック図、第3
図はこの実施例の動作を説明するためのフローチャー
ト、第4図は電子計算機システムの構成を示すブロック
図、第5図は第3図のステップN1のサブルーチンを示す
フローチャート、第6図は第3図のステップN3のサブル
ーチンを示すフローチャート、第7図は第3図のステッ
プN5のサブルーチンを示すフローチャート、第8図は第
3図のステップN6のサブルーチンを示すフローチャー
ト、第9図は第3図のステップN7のサブルーチンを示す
フローチャート、第10図(a),(b),(c)は第3
図のステップN0,N8,N9の処理を示すフローチャート、第
11図はこの実施例におけるコマンドラインとヘッダ内の
操作とを説明するための図、第12図(a)(b)(c)
はこの実施例における使用テーブル・レジスタとプログ
ラムのヘッダとを説明するための図、第13図は従来およ
び実施例におけるプログラム作成手続きを説明するため
のフローチャート、第14図は従来のプログラム起動方式
の動作を説明するためのブロック図である。 1……ファイル格納装置、4……リロケータ付きの実行
可能なプログラム、4a……リロケータ、9……別の実行
可能なプログラム、24……中央処理装置、25……メモリ
装置、27……キーボード装置。

Claims (1)

  1. (57)【特許請求の範囲】 1.実行可能なプログラムなどをファイルとして格納・
    保存しておくファイル格納装置と、このファイル格納装
    置からのファイルをプログラムとして格納するメモリ装
    置と、ユーザが情報を入力するためのキーボード装置
    と、所定の演算・制御を行う中央処理装置とを含み構成
    される計算機システムであって、作成された実行可能な
    プログラムを上記ファイル格納装置にファイルとして格
    納し、ユーザが上記キーボード装置を操作して上記中央
    処理装置を起動させ、そのファイルをプログラムとして
    上記メモリ装置に格納し、その後そのメモリ装置からプ
    ログラムを読み出して起動させるプログラム起動方式に
    おいて、 プログラムの情報のチェックや上記メモリ装置の記憶領
    域のサイズのチェックなどを行うとともに、オペレーテ
    ィングシステムから制御を渡されると、オペレーティン
    グシステムが付加したユーザの指定するアドレス情報等
    を有するヘッダ内のスタートアドレス情報を基にして、
    実行可能な第1のプログラムの再格納アドレスを取得
    し、かつこの取得した再格納アドレス空間に当該第1の
    プログラムを再配置するためのリロケータを、上記第1
    のプログラムに付加して成るリロケータ付きプログラム
    を有し、ユーザが上記リロケータ付きプログラムのメモ
    リ装置上への格納を上記キーボード装置を使用して指示
    すると、上記リロケータにより第1のプログラムを再配
    置することにより、固定アドレス空間にしか格納できな
    い第2のプログラムのためにメモリ装置上の固定アドレ
    ス空間を確保するようにしたことを特徴とするプログラ
    ム起動方式。 2.上記第1のプログラムを上記リロケータ・モジュー
    ルのデータとして、このモジュールの高アドレス側に付
    加し、情報を格納するファイル上ではそのリロケータを
    一つの実行可能なプログラムとしたことを特徴とする特
    許請求の範囲第1項記載のプログラム起動方式。 3.ユーザから上記第1のプログラムへ渡される情報を
    チェックし、不正な情報は第1のプログラムへ渡さない
    ようにしたことを特徴とする特許請求の範囲第1項記載
    のプログラム起動方式。 4.上記リロケータにより指定されるスタートアドレス
    値が、上記第1のプログラムの本体の容量を引いたメモ
    リ装置の容量を示す値より大きい場合、または、現在の
    第1のプログラムのスタートアドレス値より小さい場合
    は、第1のプログラムの再配置を実行しないことを特徴
    とする特許請求の範囲第1項記載のプログラム起動方
    式。
JP62154854A 1987-06-22 1987-06-22 プログラム起動方式 Expired - Lifetime JP2681929B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP62154854A JP2681929B2 (ja) 1987-06-22 1987-06-22 プログラム起動方式
CA000569438A CA1305798C (en) 1987-06-22 1988-06-14 Program starting system
US07/206,827 US5029078A (en) 1987-06-22 1988-06-15 Program loading method with relocation address
GB08814223A GB2206224A (en) 1987-06-22 1988-06-15 Program starting system
KR1019880007241A KR910008383B1 (ko) 1987-06-22 1988-06-16 프로그램 기동 방식
DE3821088A DE3821088A1 (de) 1987-06-22 1988-06-22 Verfahren zum starten eines rechnerprogrammes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP62154854A JP2681929B2 (ja) 1987-06-22 1987-06-22 プログラム起動方式

Publications (2)

Publication Number Publication Date
JPS63317824A JPS63317824A (ja) 1988-12-26
JP2681929B2 true JP2681929B2 (ja) 1997-11-26

Family

ID=15593357

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62154854A Expired - Lifetime JP2681929B2 (ja) 1987-06-22 1987-06-22 プログラム起動方式

Country Status (6)

Country Link
US (1) US5029078A (ja)
JP (1) JP2681929B2 (ja)
KR (1) KR910008383B1 (ja)
CA (1) CA1305798C (ja)
DE (1) DE3821088A1 (ja)
GB (1) GB2206224A (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0291747A (ja) * 1988-09-29 1990-03-30 Hitachi Ltd 情報処理装置
US5479623A (en) * 1989-03-20 1995-12-26 Fujitsu Limited Starting system for multiple resident processes under DOS
EP0429252B1 (en) * 1989-11-17 1998-01-14 Digital Equipment Corporation System and method for storing firmware in relocatable format
US5193180A (en) * 1991-06-21 1993-03-09 Pure Software Inc. System for modifying relocatable object code files to monitor accesses to dynamically allocated memory
DE59108956D1 (de) * 1991-09-30 1998-04-23 Siemens Ag Verfahren zur Erstellung einer ablauffähigen Konfiguration eines in einen Systemspeicherbereich eines Prozessorsystems ladbaren Systemprogramms
US5659744A (en) * 1991-10-15 1997-08-19 International Computers Limited Data file store system with means for efficiently managing freeing of data blocks
US5475753A (en) * 1993-11-12 1995-12-12 Matsushita Electric Corporation Of America Apparatus and method for certifying the delivery of information
US5581697A (en) * 1994-01-28 1996-12-03 Sun Microsystems, Inc. Method and apparatus for run-time error checking using dynamic patching
US5613063A (en) * 1994-07-01 1997-03-18 Digital Equipment Corporation Method and apparatus for checking validity of memory operations
WO1996008763A2 (en) * 1994-09-16 1996-03-21 Philips Electronics N.V. Method, apparatus and instruction for performing a double jump register indirect operation transfer in a microcontroller
US6209127B1 (en) * 1997-06-05 2001-03-27 Matsushita Electrical Industrial Co., Ltd Terminal device capable of remote download, download method of loader program in terminal device, and storage medium storing loader program
DE19843850A1 (de) * 1998-09-24 2000-03-30 Ibm Verfahren zum optimierten Verteilen von Prozessen auf vorhandene Systemresourcen
GB9920916D0 (en) * 1999-09-03 1999-11-10 Sgs Thomson Microelectronics A relocation format for linking
US6442660B1 (en) 2001-03-21 2002-08-27 Sharp Laboratories Of America, Inc. Dynamic system relocation based on availability of system memory
CN102750157A (zh) * 2011-04-20 2012-10-24 中兴通讯股份有限公司 一种应用程序加载的方法及装置
CN106716366A (zh) * 2015-01-07 2017-05-24 松下知识产权经营株式会社 话筒用微型计算机

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4024504A (en) * 1973-12-21 1977-05-17 Burroughs Corporation Firmware loader for load time binding
US4403283A (en) * 1980-07-28 1983-09-06 Ncr Corporation Extended memory system and method
JPS57199060A (en) * 1981-05-30 1982-12-06 Toshiba Corp Address controlling device
US4511964A (en) * 1982-11-12 1985-04-16 Hewlett-Packard Company Dynamic physical memory mapping and management of independent programming environments
JPS6180338A (ja) * 1984-09-27 1986-04-23 Fanuc Ltd システムプログラムロ−デイング方法
JPS61184650A (ja) * 1985-02-13 1986-08-18 Nec Corp 電子計算機システムにおける主記憶装置割当て方式

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
アスキー出版局編 「標準MS−DOSハンドブック」 第1版 (昭60−10−5) 株式会社アスキー P.210−217

Also Published As

Publication number Publication date
JPS63317824A (ja) 1988-12-26
KR910008383B1 (ko) 1991-10-15
CA1305798C (en) 1992-07-28
KR890000972A (ko) 1989-03-17
DE3821088A1 (de) 1989-01-05
GB8814223D0 (en) 1988-07-20
GB2206224A (en) 1988-12-29
US5029078A (en) 1991-07-02

Similar Documents

Publication Publication Date Title
JP2681929B2 (ja) プログラム起動方式
US4654783A (en) Unique process for loading a microcode control store in a data processing system
US5504901A (en) Position independent code location system
JPH06324849A (ja) オペレーティング・システム環境の起動方法およびシステム
JP2539913B2 (ja) デ―タ処理システム
JPH07311740A (ja) コンピュータ
JP3586943B2 (ja) プログラムロード装置と方法
JPH07281986A (ja) 拡張ボード及び該ボードを用いた情報処理装置とその周辺装置の制御方法
JP2841363B2 (ja) 外部モジュール獲得方式
JP2001256055A (ja) プログラムダウンロード方式
EP0915416A2 (en) System for allowing a two word instruction to be executed in a single cycle and method therefor
KR100436003B1 (ko) 디바이스드라이버적재방법
JP2883488B2 (ja) 命令処理装置
JPS5856051A (ja) アクセス割込みによるアドレス・コンペア方式
JP2883489B2 (ja) 命令処理装置
JPS63198129A (ja) プロシジヤ中の入力デ−タ処理方式
JPS6250945A (ja) プログラムロ−デイング方式
JPH02133833A (ja) インサーキツトエミユレータ制御装置
JPH0651857A (ja) 音声および画像の出力方法
JPH01128130A (ja) オーバレイ領域の自動ローディング方式
JPH11272516A (ja) ダンプ出力制御方式
JPH0640311B2 (ja) レジスタ保存方法
JPH0287227A (ja) データ処理装置
JPH03225422A (ja) 自動実行コマンドカタログ制御方式
JPS62184540A (ja) マイクロプログラムロ−ド回路