JPH06214803A - 仮想空間ブロック配置方式 - Google Patents

仮想空間ブロック配置方式

Info

Publication number
JPH06214803A
JPH06214803A JP2165993A JP2165993A JPH06214803A JP H06214803 A JPH06214803 A JP H06214803A JP 2165993 A JP2165993 A JP 2165993A JP 2165993 A JP2165993 A JP 2165993A JP H06214803 A JPH06214803 A JP H06214803A
Authority
JP
Japan
Prior art keywords
block
virtual space
blocks
frequency use
procedure
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
JP2165993A
Other languages
English (en)
Inventor
Atsushi Goto
淳 後藤
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2165993A priority Critical patent/JPH06214803A/ja
Publication of JPH06214803A publication Critical patent/JPH06214803A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 使用頻度が高いと予想される手続き/関数/
テーブルに対応するブロックを仮想空間上の特定のペー
ジにまとめて配置することを可能とし、そのような手続
き/関数/テーブルを有するプログラムの実行時におけ
るページング処理の回数を抑制する。 【構成】 コンパイラ1は、高頻度使用指定4の対象と
なっているソースユニット3内の手続き/関数/テーブ
ルに対応する高頻度使用ブロックと高頻度使用指定4の
対象となっていない手続き/関数/テーブルに対応する
通常ブロックとの識別情報をオブジェクトモジュール5
に付加する。リンカ2は、当該識別情報に基づいて高頻
度使用ブロックおよび通常ブロックの各々を別個に蓄積
し、その蓄積に基づいて高頻度使用ブロックの全てを仮
想空間上に連続して配置する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、計算機システムにおい
てオブジェクトモジュールを生成するコンパイル処理と
複数のオブジェクトモジュールを連結編集して実行可能
なロードモジュールを生成するリンク処理とに関し、特
にデマンドページングによる仮想記憶機能を持つ計算機
システムにおけるコンパイル処理およびリンク処理に関
与する仮想空間ブロック配置方式に関する。
【0002】
【従来の技術】デマンドページングによる仮想記憶機能
を持つ計算機システムにおいては、あるプログラムの実
行の準備段階において、そのプログラムに係るソースユ
ニット内の手続き/関数/テーブルを示す機械語イメー
ジ(手続きもしくは関数を示す機械語命令列またはテー
ブルを示す機械語データ列(初期値を持たない領域を含
む))を有する初期値ブロック(以下、単にブロックと
いう)が仮想空間上に配置される。
【0003】デマンドページングを実現するためには、
上述のようにして仮想空間上に配置されたブロック群が
仮想空間の先頭から特定サイズを有するページ単位に分
割され、各ページに配置(配分)されたブロックの機械
語イメージが当該ページのページイメージ(ページの内
容)としてファイルに格納される(ページ単位に参照可
能な形態で各ページイメージがファイルに格納され
る)。
【0004】これに加えて、各ページとファイル上のペ
ージイメージとを対応させるためのテーブル(ページテ
ーブル)が生成され、これによってそのプログラムの実
行の準備が整う。
【0005】以上のような仮想空間上へのブロックの配
置,ページイメージの生成(各ブロックのページへの配
置やページイメージのファイルへの格納),およびペー
ジテーブルの生成は、実行時にローダによって行われる
他に、オブジェクトモジュールを入力しロードモジュー
ルを生成するリンク処理の際にリンカによっても行われ
る。本発明は、このようなリンカによる仮想空間上への
ブロックの配置に関するものである。
【0006】従来技術(従来の仮想空間ブロック配置方
式)においては、手続き/関数/テーブルに対応するブ
ロックの仮想空間上への配置が行われる際に、配置の順
序は特に考慮されることがなかった(手続き/関数/テ
ーブルの入力順にその手続き/関数/テーブルに対応す
るブロックが配置されるのが一般的であった)。
【0007】
【発明が解決しようとする課題】デマンドページングに
よる仮想記憶機能を持つ計算機システムにおいては、プ
ログラムの実行時に、あるページが必要になった時点
(「あるページが必要になった時点」とは、そのページ
に含まれるアドレスに対して参照を行う機械語命令が実
行された時点(そのページ上の機械語命令が実行された
時点をも含む)をいう)でそのページが実記憶上に存在
しない場合には、そのページのページイメージがファイ
ルから実記憶上に読み込まれ(ページング処理が行わ
れ)、その読込み後にそのページに対する参照が行われ
る(なお、その機械語命令の実行は必要なページが実記
憶上に読み込まれるまで停止される)。
【0008】このようなページング処理の際にページイ
メージの読込みが可能なサイズの領域が実記憶上に存在
しない場合には、すでに実記憶上に読込み済みのページ
の領域が解放され、その解放によって空いた領域がペー
ジング処理のための領域に充てられる。このような場合
に、解放される実記憶上の読込み済みのページを選択す
るアルゴリズムは多数存在するが、一般には「最近の参
照頻度が最も低いページを選択する」というアルゴリズ
ム(LRU(Least RecentlyUsed)
アルゴリズム)が採用される。
【0009】上述のように、ページング処理において
は、ファイルに対するI/O(Input/Outpu
t)処理が発生する。一般に、ファイルに対するI/O
処理の実行は、命令の実行に比較して非常に大きな時間
を要する。このために、ページング処理が多くなるほ
ど、プログラムの実行に要する時間は長大になる。すな
わち、プログラムの実行性能が低下する。
【0010】ところで、あるページに対する参照が多い
ほどそのページが実記憶上に常駐する可能性が増大する
ために、使用頻度が高い手続き/関数/テーブルに対応
するブロックを含むページほど実記憶上に常駐する可能
性が増大する。
【0011】したがって、使用頻度が高い手続き/関数
/テーブルに対応するブロックが複数存在し、それらが
異なるページに配置された場合には、実記憶に常駐する
可能性が高いページの個数が多くなる。実記憶に常駐す
る可能性が高いページの個数が多くなると、そのような
ページが実記憶の領域を消費し、その結果として比較的
使用頻度が低い手続き/関数/テーブルに対応するブロ
ックを含むページに対するページング処理が多発するこ
とになる。
【0012】上述した従来の仮想空間イメージ配置方式
では、各ブロック(手続き/関数/テーブルに対応する
ブロック)を仮想空間に配置する際に配置の順序は特に
考慮されることがないので、使用頻度が高い手続き/関
数/テーブルに対応するブロックを含むページが多数存
在することとなる可能性が生じ、その場合に上述のよう
な理由によってページング処理が多発するおそれが大き
くなり、プログラムの実行性能の低下を招くおそれが生
じるという問題点があった。
【0013】なお、仮想記憶機能を持つ計算機システム
におけるページング処理の効率化(1回のページング処
理によって関連ある複数のページをまとめてロードする
考え方等)に関する技術としては、「特開平2−199
44(仮想記憶管理のページイン方式)」に係る特許出
願や「特開平1−150936(プログラム実行方
式)」に係る特許出願等が存在する。しかし、それらの
方式においても、上述のような問題点に対する考慮はな
されていなかった。
【0014】本発明の目的は、上述の点に鑑み、使用頻
度が高いと予想される手続き/関数/テーブルに対応す
るブロックを仮想空間上の特定のページにまとめて配置
することを可能とし、そのような手続き/関数/テーブ
ルを有するプログラムの実行時にページング処理の回数
を抑制することができる仮想空間ブロック配置方式を提
供することにある。
【0015】
【課題を解決するための手段】本発明の仮想空間ブロッ
ク配置方式は、ソースユニット内の手続き/関数/テー
ブルを示す機械語イメージを有するブロックをオブジェ
クトモジュール内に出力しその出力の際に高頻度使用指
定の対象となっている手続き/関数/テーブルに対応す
るブロックである高頻度使用ブロックと高頻度使用指定
の対象となっていない手続き/関数/テーブルに対応す
るブロックである通常ブロックとの識別情報をオブジェ
クトモジュールに付加するコンパイラと、このコンパイ
ラによって生成されたオブジェクトモジュールを入力し
てロードモジュールを生成する際に前記コンパイラによ
ってオブジェクトモジュールに付加された識別情報に基
づいて前記コンパイラによってオブジェクトモジュール
内に出力された高頻度使用ブロックおよび通常ブロック
の各々を別個に蓄積しその蓄積に基づいて高頻度使用ブ
ロックの全てを仮想空間上に連続して配置するリンカと
を有する。
【0016】
【実施例】次に、本発明について図面を参照して詳細に
説明する。
【0017】図1は、本発明の仮想空間ブロック配置方
式の一実施例の構成を示すブロック図である。本実施例
の仮想空間ブロック配置方式は、ソースユニット3およ
び高頻度使用指定4を入力しオブジェクトモジュール5
を出力するコンパイラ1と、複数のオブジェクトモジュ
ール5を入力しロードモジュール6を出力するリンカ2
と、ソースユニット3と、高頻度使用指定4と、オブジ
ェクトモジュール5と、ロードモジュール6とを含んで
構成されている。
【0018】リンカ2は、オブジェクトモジュール入力
手段21と、リンク手段22と、仮想空間配置手段23
と、ロードモジュール生成手段24とを含んで構成され
ている。
【0019】高頻度使用指定4は、ソースユニット3に
含まれる手続き/関数/テーブルの中で特に使用頻度が
高いと利用者等が判断した手続き/関数/テーブルの名
前が指定されている情報である。
【0020】図2は、仮想空間配置手段23の処理を示
す流れ図である。この処理は、配置対象ブロック残存判
定ステップ201と、配置対象ブロック高頻度使用ブロ
ック判定ステップ202と、通常ブロックチェーン連結
ステップ203と、高頻度使用ブロックチェーン連結ス
テップ204と、高頻度使用ブロック配置ステップ20
5と、通常ブロック配置ステップ206とからなる。
【0021】次に、このように構成された本実施例の仮
想空間ブロック配置方式の動作について説明する。
【0022】コンパイラ1は、ソースユニット3とソー
スユニット3に対応する高頻度使用指定4とを入力し、
オブジェクトモジュール5を出力する。すなわち、他の
種々の情報(各手続き/関数/テーブルの名前等の付加
情報等)と共に、ソースユニット3内の各手続き/関数
/テーブルを示す機械語イメージを有するブロック(先
に述べたように初期値ブロックに該当するブロック)を
オブジェクトモジュール5内に出力する。
【0023】この際に、コンパイラ1は、高頻度使用指
定4で名前が指定されている手続き/関数/テーブルに
対応するブロックを、高頻度使用指定4で名前が指定さ
れていない手続き/関数/テーブルに対応するブロック
と区別して、オブジェクトモジュール5内に出力する。
すなわち、高頻度使用指定4の対象となっている手続き
/関数/テーブルに対応するブロック(高頻度使用ブロ
ック)と高頻度使用指定4の対象となっていない手続き
/関数/テーブルに対応するブロック(通常ブロック)
との識別情報(例えば、高頻度使用ブロックの属性情報
の1つとして高頻度使用ブロックに与えられる「高頻度
使用である旨」の情報)をオブジェクトモジュール5に
付加する。
【0024】リンカ2は、複数のオブジェクトモジュー
ル5を入力し、実行可能な形式のロードモジュール6を
生成し出力する。
【0025】リンカ2内のオブジェクトモジュール入力
手段21は、オブジェクトモジュール5を入力し、リン
カ2の処理に必要な情報を作業領域に展開する。また、
リンク手段22は、複数のオブジェクトモジュール5の
間の定義/参照情報の解決/処理を行う。オブジェクト
モジュール入力手段21およびリンク手段22による処
理は、従来技術における処理と同様のものである。
【0026】仮想空間配置手段23は、オブジェクトモ
ジュール5内の各ブロックを仮想空間上に配置し、その
結果としてページイメージおよびページテーブルを生成
する(仮想空間上への各ブロックの配置後における各ブ
ロックのページへの配置,その配置に基づくページイメ
ージのファイルへの格納,およびページテーブルの生成
は、従来技術と同様の態様で行われる)。
【0027】以下に、図2を参照して、仮想空間配置手
段23の詳細な処理について説明する。ここで、「高頻
度使用ブロックチェーン」とは高頻度使用ブロックのみ
を連結するチェーンをいい、「通常ブロックチェーン」
とはそれ以外のブロック(通常ブロック)を連結するチ
ェーンをいう。これらのチェーンは後述するように高頻
度使用ブロックの全てを仮想空間上に連続して配置する
ために利用されるが、何らかの方法で高頻度使用ブロッ
クと通常ブロックとを別個に蓄積することができる方法
であれば「チェーンを利用する方法」に限らず「テーブ
ルを利用する方法」等によっても本発明を実現すること
は可能である(「チェーンを利用する方法」によると上
述の蓄積の処理等に必要な領域が少なくてすむので他の
方法に比べて好ましい)。
【0028】仮想空間に配置すべきブロックが残ってい
るか否か(全ての配置すべきブロックに関する処理が終
了していないかどうか)を判定する(ステップ20
1)。
【0029】ステップ201で「配置すべきブロックが
残っている」と判定した場合には、残っている配置すべ
きブロックの中の1つを抽出し、コンパイラ1によって
上述のようにして付加された識別情報に基づいてそのブ
ロックが高頻度使用ブロックであるか否かを判定する
(ステップ202)。
【0030】ステップ202で「そのブロックが高頻度
使用ブロックである」と判定した場合には、そのブロッ
クを高頻度使用ブロックチェーンに連結し(ステップ2
04)、ステップ201の判定に戻る。
【0031】ステップ202で「そのブロックが高頻度
使用ブロックでない」と判定した場合には、そのブロッ
クを通常ブロックチェーンに連結し(ステップ20
3)、ステップ201の判定に戻る。
【0032】ステップ201で「配置すべきブロックが
残っていない」と判定した場合には、高頻度使用ブロッ
クチェーンをに連結されたブロック(高頻度使用ブロッ
ク)の全てを仮想空間上に連続して(任意のページ境界
(一般的には仮想空間の先頭)から連続して)配置する
(ステップ205)。なお、「配置すべきブロックが残
っていない」と判定された時点においては、全ての配置
すべきブロックの蓄積(高頻度使用ブロックチェーンま
たは通常ブロックチェーンへの連結)が完了しており、
オブジェクトモジュール5内に散在していた高頻度使用
ブロックは全て集められて高頻度使用ブロックチェーン
に連結されている。
【0033】ステップ205の処理が終了すると、通常
ブロックチェーンに連結されたブロック(通常ブロッ
ク)の仮想空間上への配置(ステップ205における配
置領域を除く領域への配置)を行い(ステップ20
6)、図2に示す一連の処理を終了する。
【0034】以上のような仮想空間配置手段23による
処理によって、高頻度使用ブロックは仮想空間上の連続
した領域(一般的には、仮想空間上の先頭からの連続し
た領域)に集められて配置される。これによって、高頻
度使用ブロックを含むページの個数を可能な限り削減す
ることができる。
【0035】最後に、ロードモジュール生成手段24
は、仮想空間配置手段23による仮想空間上へのブロッ
クの配置を反映してロードモジュール6を生成し、その
ロードモジュール6を出力する。これによって、リンカ
2の処理が終了する。
【0036】従来技術においては、ブロックをチェーン
に連結するという考え方が導入されたとしても、上述の
ような高頻度使用ブロックチェーンと通常ブロックチェ
ーンとの区別は行われておらず、チェーンは1つのみで
あった。そして、そのチェーンに連結された各ブロック
の仮想空間上への配置位置は一般に各ブロックの入力の
順番によって決定されていた(仮想空間上での配置位置
に対する有意の操作は行われていなかった)。これに対
して、本実施例の仮想空間ブロック配置方式では、仮想
空間配置手段23における上述のような機能が設けられ
ているので、使用頻度が高い手続き/関数/テーブルに
対応するブロックが多くのページに分散して存在すると
いう事態を回避することが可能になる。
【0037】
【発明の効果】以上説明したように本発明は、使用頻度
が高いと予想される手続き/関数/テーブルに対応する
ブロックを仮想空間上の特定のページにまとめて(連続
して集めて)配置することにより、そのような手続き/
関数/テーブルを有するプログラムの実行時におけるペ
ージング処理の回数を抑制することが可能になり、当該
プログラムの実行に要する時間を削減することができる
(当該プログラムの実行性能を向上させることができ
る)という効果がある。
【図面の簡単な説明】
【図1】本発明の一実施例の構成を示すブロック図であ
る。
【図2】図1中の仮想空間配置手段の処理を示す流れ図
である。
【符号の説明】 1 コンパイラ 2 リンカ 3 ソースユニット 4 高頻度使用指定 5 オブジェクトモジュール 6 ロードモジュール 21 オブジェクトモジュール入力手段 22 リンク手段 23 仮想空間配置手段 24 ロードモジュール生成手段

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 ソースユニット内の手続き/関数/テー
    ブルを示す機械語イメージを有するブロックをオブジェ
    クトモジュール内に出力し、その出力の際に高頻度使用
    指定の対象となっている手続き/関数/テーブルに対応
    するブロックである高頻度使用ブロックと高頻度使用指
    定の対象となっていない手続き/関数/テーブルに対応
    するブロックである通常ブロックとの識別情報をオブジ
    ェクトモジュールに付加するコンパイラと、 このコンパイラによって生成されたオブジェクトモジュ
    ールを入力してロードモジュールを生成する際に、前記
    コンパイラによってオブジェクトモジュールに付加され
    た識別情報に基づいて前記コンパイラによってオブジェ
    クトモジュール内に出力された高頻度使用ブロックおよ
    び通常ブロックの各々を別個に蓄積し、その蓄積に基づ
    いて高頻度使用ブロックの全てを仮想空間上に連続して
    配置するリンカとを有することを特徴とする仮想空間ブ
    ロック配置方式。
  2. 【請求項2】 高頻度使用ブロックを連結する高頻度使
    用ブロックチェーンと通常ブロックを連結する通常ブロ
    ックチェーンとを利用して高頻度使用ブロックおよび通
    常ブロックの各々を別個に蓄積する処理を実現する前記
    リンカを有することを特徴とする請求項1記載の仮想空
    間ブロック配置方式。
JP2165993A 1993-01-18 1993-01-18 仮想空間ブロック配置方式 Pending JPH06214803A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2165993A JPH06214803A (ja) 1993-01-18 1993-01-18 仮想空間ブロック配置方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2165993A JPH06214803A (ja) 1993-01-18 1993-01-18 仮想空間ブロック配置方式

Publications (1)

Publication Number Publication Date
JPH06214803A true JPH06214803A (ja) 1994-08-05

Family

ID=12061175

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2165993A Pending JPH06214803A (ja) 1993-01-18 1993-01-18 仮想空間ブロック配置方式

Country Status (1)

Country Link
JP (1) JPH06214803A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000038054A1 (fr) * 1998-12-22 2000-06-29 Fujitsu Limited Appareil et procede de generation d'objet d'optimisation
JP2000322315A (ja) * 1999-04-23 2000-11-24 Internatl Business Mach Corp <Ibm> データを管理する方法及び装置
JP2006079338A (ja) * 2004-09-09 2006-03-23 Fujitsu Ltd プログラムセクションレイアウト方法およびレイアウト処理プログラム
US7765535B2 (en) 2003-10-23 2010-07-27 Fujitsu Limited Software development tool program
CN112579096A (zh) * 2020-12-18 2021-03-30 北京百度网讯科技有限公司 小程序启动文件的编译、加载方法、装置、设备和介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03125223A (ja) * 1989-10-09 1991-05-28 Hitachi Ltd オブジェクト・モジュール生成方式
JPH03184126A (ja) * 1989-12-13 1991-08-12 Hitachi Ltd コンパイラおよびプログラムの命令コードの配置方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03125223A (ja) * 1989-10-09 1991-05-28 Hitachi Ltd オブジェクト・モジュール生成方式
JPH03184126A (ja) * 1989-12-13 1991-08-12 Hitachi Ltd コンパイラおよびプログラムの命令コードの配置方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000038054A1 (fr) * 1998-12-22 2000-06-29 Fujitsu Limited Appareil et procede de generation d'objet d'optimisation
JP2000322315A (ja) * 1999-04-23 2000-11-24 Internatl Business Mach Corp <Ibm> データを管理する方法及び装置
US7765535B2 (en) 2003-10-23 2010-07-27 Fujitsu Limited Software development tool program
JP2006079338A (ja) * 2004-09-09 2006-03-23 Fujitsu Ltd プログラムセクションレイアウト方法およびレイアウト処理プログラム
JP4592367B2 (ja) * 2004-09-09 2010-12-01 富士通セミコンダクター株式会社 プログラムセクションレイアウト方法およびレイアウト処理プログラム
CN112579096A (zh) * 2020-12-18 2021-03-30 北京百度网讯科技有限公司 小程序启动文件的编译、加载方法、装置、设备和介质
CN112579096B (zh) * 2020-12-18 2024-03-19 北京百度网讯科技有限公司 小程序启动文件的编译、加载方法、装置、设备和介质

Similar Documents

Publication Publication Date Title
JP5733860B2 (ja) 依存問題の効率的並列計算
JP2011527788A5 (ja)
US8266416B2 (en) Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system
US6175935B1 (en) Software debugging method and recording medium to which debugging program has been recorded
JPH1185526A (ja) プログラムロード方法
JPH06214803A (ja) 仮想空間ブロック配置方式
US20080184213A1 (en) Compiler device, method, program and recording medium
US6625806B1 (en) Language processing method and language processing system improving use efficiency of cache memory
JP3515810B2 (ja) ソート処理方法および装置
JP2005107816A (ja) 最適化コンパイラ、コンパイラプログラム、及び記録媒体
JP2003271394A (ja) 関数と基本ブロックの配置割付装置および割付最適化プログラム
US20040172624A1 (en) Compiler apparatus and method for determining locations for data in memory area
US20120042129A1 (en) Arrangement method of programs to memory space, apparatus, and recording medium
CN111880803A (zh) 一种应用于多平台的软件构建方法及装置
JP3430635B2 (ja) 定数参照最適化処理装置
US7130857B2 (en) Method for accessing a memory unit in which sequences of notes are stored, corresponding memory unit and corresponding program
JP2021018711A (ja) タスク実行管理装置、タスク実行管理方法、および、タスク実行管理プログラム
JP7168731B1 (ja) メモリアクセス制御装置、メモリアクセス制御方法、及び、メモリアクセス制御プログラム
US20240176488A1 (en) Memory allocation for microcontroller execution
JP3686261B2 (ja) 計算機、プログラム変換装置及びプログラム記録媒体
JP3223530B2 (ja) データ転送命令生成処理方法
JP2932812B2 (ja) 言語処理プログラム実行装置
KR19990011346A (ko) 압축된 부팅 롬 생성 방법
JP3237591B2 (ja) コンパイル装置、コンパイル方法およびコンパイラを記録した記録媒体
JPH11265290A (ja) プログラムロード方法