(57)【要約】【課題】メモリ管理機構に新たな機能を追加することなく、断片化を抑制しつつ、複数のページサイズにおいて単一の実行ファイルを使用可能とすることが難しい、という問題を解決すること。【解決手段】テキストセクションとデータセクションとを含むオブジェクトファイルを連結して実行ファイルを生成するリンク手段と、リンク手段が生成した実行ファイルと、プロセスが実行ファイルに使用するページのサイズであるページサイズと、に基づいて、テキストセグメントとデータセグメントとが異なるページに配置されるようテキストセグメントとデータセグメントの配置を決定する配置決定手段と、を有し、リンク手段は、データセグメントをテキストセグメントの下位アドレス側に配置した実行ファイルを生成し、配置決定手段は、データセグメントをページの上端側に配置するとともに、テキストセグメントをページの先頭側に配置する。【選択図】図１
2018092456.tif 000002
【特許請求の範囲】
【請求項１】
テキストセクションとデータセクションとを含むオブジェクトファイルを連結して、前記テキストセクションを含むテキストセグメントと前記データセクションを含むデータセグメントとを有する実行ファイルを生成するリンク手段と、
前記リンク手段が生成した前記実行ファイルと、プロセスが前記実行ファイルに使用するページのサイズであるページサイズと、に基づいて、前記テキストセグメントと前記データセグメントとが異なるページに配置されるよう当該テキストセグメントと当該データセグメントの配置を決定する配置決定手段と、
を有し、
前記リンク手段は、前記データセグメントを前記テキストセグメントの下位アドレス側に配置した前記実行ファイルを生成し、
前記配置決定手段は、前記データセグメントをページの上端側に配置するとともに、前記テキストセグメントをページの先頭側に配置する
動的リンク装置。
【請求項２】
請求項１に記載の動的リンク装置であって、
前記配置決定手段は、前記データセグメントと前記テキストセグメントとの間が、前記プロセスが使用可能なページサイズのうちの最小サイズ未満となるよう前記データセグメントと前記テキストセグメントとの配置を決定する
動的リンク装置。
【請求項３】
請求項１又は２に記載の動的リンク装置であって、
前記配置決定手段は、前記データセグメントを配置するページの上端から前記データセグメントのサイズを前記プロセスが使用可能なページサイズのうちの最小サイズで切り上げたサイズ分下位の位置から前記データセグメントを配置する
動的リンク装置。
【請求項４】
請求項３に記載の動的リンク装置であって、
前記配置決定手段は、前記プロセスが使用するページとして、前記データセグメントのサイズと前記テキストセグメントのサイズ以上のページサイズを有するページのうち、前記プロセスが使用可能な最も小さいページサイズを有するページを割り当てる
動的リンク装置。
【請求項５】
請求項１又は２に記載の動的リンク装置であって、
前記配置決定手段は、前記データセグメントのサイズを格納可能な最低限の数の最小サイズのページを割り当て、それぞれのページにデータセグメントの内容を配置する
動的リンク装置。
【請求項６】
請求項１乃至５のいずれかに記載の動的リンク装置であって、
前記リンク手段は、前記テキストセグメントの開始アドレスが、前記プロセスが使用可能なページサイズのうちの最大サイズの倍数となるように、前記テキストセグメントを配置する
動的リンク装置。
【請求項７】
請求項１乃至６のいずれかに記載の動的リンク装置であって、
前記リンク手段は、前記データセグメントの開始アドレスが、前記プロセスが使用可能なページサイズのうちの最小サイズの倍数となるように、前記データセグメントを配置する
動的リンク装置。
【請求項８】
請求項１乃至７のいずれかに記載の動的リンク装置であって、
前記リンク手段は、アラインメントを前記プロセスが使用可能なページサイズのうちの最小サイズの倍数とする
動的リンク装置。
【請求項９】
テキストセクションとデータセクションとを含むオブジェクトファイルを連結して、前記テキストセクションを含むテキストセグメントと前記データセクションを含むデータセグメントとを有する実行ファイルを生成し、
生成した前記実行ファイルと、プロセスが前記実行ファイルに使用するページのサイズであるページサイズと、に基づいて、前記テキストセグメントと前記データセグメントとが異なるページに配置されるよう当該テキストセグメントと当該データセグメントの配置を決定し、
前記データセグメントを前記テキストセグメントの下位アドレス側に配置した前記実行ファイルを生成し、
前記データセグメントをページの上端側に配置するとともに、前記テキストセグメントをページの先頭側に配置する
動的リンク方法。
【請求項１０】
情報処理装置に、
テキストセクションとデータセクションとを含むオブジェクトファイルを連結して、前記テキストセクションを含むテキストセグメントと前記データセクションを含むデータセグメントとを有する実行ファイルを生成するリンク手段と、
前記リンク手段が生成した前記実行ファイルと、プロセスが前記実行ファイルに使用するページのサイズであるページサイズと、に基づいて、前記テキストセグメントと前記データセグメントとが異なるページに配置されるよう当該テキストセグメントと当該データセグメントの配置を決定する配置決定手段と、
を実現させ、
前記リンク手段は、前記データセグメントを前記テキストセグメントの下位アドレス側に配置した前記実行ファイルを生成し、
前記配置決定手段は、前記データセグメントをページの上端側に配置するとともに、前記テキストセグメントをページの先頭側に配置する
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動的リンク装置、動的リンク方法、プログラムに関し、特に、複数のページサイズをサポートする環境を有する動的リンク装置、動的リンク方法、プログラムに関する。
【背景技術】
【０００２】
メモリを管理する際に、ＴＬＢ（Translation Lookaside Buffer）ミスによる性能劣化を抑制するなどの目的のため、ラージページを用いることがある。一方で、ページサイズを大きくすると、無駄に使用せざるを得ないメモリが増え、メモリの使用効率が劣化するおそれがある。
【０００３】
このように、スモールページやラージページにはそれぞれ利点や欠点がある。そこで、必要に応じた使い分けなどを可能とするため、複数のページサイズをサポートするプロセッサが知られている。
【０００４】
上記のような複数のページサイズをサポートするシステム上においては、ラージページサイズに合わせた実行ファイルを作成すると、スモールページサイズにおいて断片化が発生するおそれがある。このようなおそれに対しては、例えば、プロセスがラージページを使用するときでも実行ファイルを使用するページではスモールページを割り当てることで対処できることが知られている。なお、実行ファイルのページのみスモールページを割り当てることは、同一プロセス空間内で複数のページサイズを同時にサポートすれば可能である。このようなことは、例えば、ｘ８６−６４アーキテクチャのプロセッサなどで実現できる。
【０００５】
また、上記のような複数のページサイズをサポートするシステム上においては、ページ単位でメモリを管理・保護することが一般的である。そのため、例えばスモールページに合わせて作成した実行ファイルをラージページでマップする場合などにおいて、ラージページ領域内に異なるメモリ保護属性のページが混在してしまうおそれがある。このようなおそれに対処する技術として、例えば、特許文献１がある。特許文献１には、仮想ページを複数含んだ仮想メモリ領域をラージページでマップするステップとその他の仮想ページのメモリ保護属性と異なるメモリ属性を有する仮想ページに対応する物理ページを保護する物理メモリ保護情報を設定するステップとを含む、という方法が記載されている。特許文献１によると、このような方法により、仮想メモリの利用状況に応じて仮想メモリ領域をラージページでマップして、ラージページにマップした仮想メモリ領域内個別対応が必要な仮想ページに対応する物理ページを個別に処理することが出来る。これにより、仮想アドレスから物理アドレスへのアドレス変換を高速化することが出来る。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−１２８７８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、実行ファイルを使用するページでスモールページを割り当てるよう構成すると、実行ファイルをマップしているデータセグメントは必ずスモールページを使用することになる。そのため、ラージマップによる恩恵を受けることができない、という問題があった。
【０００８】
また、特許文献１に記載されているようにラージページ内の一部に対して異なるメモリ保護を設定するためには、仮想ページから物理ページへの変換機構以外の新たな機能をメモリ管理機構に追加することが必要となる。換言すると、特許文献１に記載されている技術の場合、メモリ管理機構に機能を追加することなく複数のページサイズをサポートすることが出来なかった。
【０００９】
このように、メモリ管理機構に新たな機能を追加することなく、断片化を抑制しつつ、複数のページサイズにおいて単一の実行ファイルを使用可能とすることが難しい、という問題が生じていた。
【００１０】
そこで、本発明の目的は、メモリ管理機構に新たな機能を追加することなく、断片化を抑制しつつ、複数のページサイズにおいて単一の実行ファイルを使用可能とすることが難しい、という問題を解決する動的リンク装置、動的リンク方法、プログラムを提供することにある。
【課題を解決するための手段】
【００１１】
かかる目的を達成するため本発明の一形態である動的リンク装置は、
テキストセクションとデータセクションとを含むオブジェクトファイルを連結して、前記テキストセクションを含むテキストセグメントと前記データセクションを含むデータセグメントとを有する実行ファイルを生成するリンク手段と、
前記リンク手段が生成した前記実行ファイルと、プロセスが前記実行ファイルに使用するページのサイズであるページサイズと、に基づいて、前記テキストセグメントと前記データセグメントとが異なるページに配置されるよう当該テキストセグメントと当該データセグメントの配置を決定する配置決定手段と、
を有し、
前記リンク手段は、前記データセグメントを前記テキストセグメントの下位アドレス側に配置した前記実行ファイルを生成し、
前記配置決定手段は、前記データセグメントをページの上端側に配置するとともに、前記テキストセグメントをページの先頭側に配置する
という構成を採る。
【００１２】
また、本発明の他の形態である動的リンク方法は、
テキストセクションとデータセクションとを含むオブジェクトファイルを連結して、前記テキストセクションを含むテキストセグメントと前記データセクションを含むデータセグメントとを有する実行ファイルを生成し、
生成した前記実行ファイルと、プロセスが前記実行ファイルに使用するページのサイズであるページサイズと、に基づいて、前記テキストセグメントと前記データセグメントとが異なるページに配置されるよう当該テキストセグメントと当該データセグメントの配置を決定し、
前記データセグメントを前記テキストセグメントの下位アドレス側に配置した前記実行ファイルを生成し、
前記データセグメントをページの上端側に配置するとともに、前記テキストセグメントをページの先頭側に配置する
という構成を採る。
【００１３】
また、本発明の他の形態であるプログラムは、
情報処理装置に、
テキストセクションとデータセクションとを含むオブジェクトファイルを連結して、前記テキストセクションを含むテキストセグメントと前記データセクションを含むデータセグメントとを有する実行ファイルを生成するリンク手段と、
前記リンク手段が生成した前記実行ファイルと、プロセスが前記実行ファイルに使用するページのサイズであるページサイズと、に基づいて、前記テキストセグメントと前記データセグメントとが異なるページに配置されるよう当該テキストセグメントと当該データセグメントの配置を決定する配置決定手段と、
を実現させ、
前記リンク手段は、前記データセグメントを前記テキストセグメントの下位アドレス側に配置した前記実行ファイルを生成し、
前記配置決定手段は、前記データセグメントをページの上端側に配置するとともに、前記テキストセグメントをページの先頭側に配置する
処理を実現させるためのプログラムである。
【発明の効果】
【００１４】
本発明は、以上のように構成されることにより、メモリ管理機構に新たな機能を追加することなく、断片化を抑制しつつ、複数のページサイズにおいて単一の実行ファイルを使用可能とすることが難しい、という問題を解決する動的リンク装置、動的リンク方法、プログラムを提供することが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施形態に係る情報処理装置の構成の一例を示すブロック図である。
【図２】図１で示すファイルシステムに含まれる情報の一例を示す図である。
【図３】図２で示すオブジェクトファイルの一例を示す図である。
【図４】図１のリンク手段の動作の一例を示すフローチャートである。
【図５】図１で示すリンク手段により出力される実行ファイルの一例を示す図である。
【図６】図１で示すリンク手段により出力される実行ファイルの一例を示す図である。
【図７】図１で示す配置決定手段とマップ手段の動作の一例を示すフローチャートである。
【図８】本発明の第１の実施形態によるマッピングの一例を示す説明図である。
【図９】本発明の第２の実施形態に係る動的リンク装置の構成の一例を示す概略ブロック図である。
【発明を実施するための形態】
【００１６】
［第１の実施形態］
本発明の第１の実施形態を図１乃至図８を参照して説明する。図１は、情報処理装置１の構成の一例を示すブロック図である。図２は、ファイルシステム２に含まれる情報の一例を示す図である。図３は、オブジェクトファイル２１の一例を示す図である。図４は、リンク手段３の動作の一例を示すフローチャートである。図５、図６は、リンク手段３により出力される実行ファイル２２の一例を示す図である。図７は、配置決定手段４２とマップ手段４３の動作の一例を示すフローチャートである。図８は、本発明の第１の実施形態によるマッピングの一例を示す説明図である。
【００１７】
第１の実施形態では、スモールページやラージページなど複数のページサイズをサポートするプロセッサを有する情報処理装置１（動的リンク装置）について説明する。後述するように、本実施形態における情報処理装置１は、リンク手段３と配置決定手段４２とを有している。このような構成により、リンク手段３は、データセグメントをテキストセグメントの下位アドレス側に配置して、実行ファイル２２を生成する。また、配置決定手段４２は、上記実行ファイル２２と、プロセスが使用するページのサイズと、に基づいて、テキストセグメントとデータセグメントとが異なるページに配置されるようテキストセグメント及びデータセグメントの配置を決定する。例えば、配置決定手段４２は、上記テキストセグメント及びデータセグメントの配置を決定する際に、データセグメントをページの上端側に配置するとともに、テキストセグメントをページの先頭側（下端側）に配置する。なお、本実施形態においては、値が小さい方を下位アドレスとし、値が大きい方を上位アドレスとして説明する。
【００１８】
図１は、本発明の第１の実施形態による情報処理装置１の構成の一例を示すブロック図である。図１を参照すると、情報処理装置１は、ファイルシステム２と、リンク手段３と、ロード手段４１と、配置決定手段４２と、マップ手段４３と、を備えている。また、情報処理装置１は、図示しないコンパイラやメモリなどの一般的な情報処理装置が有する構成を有している。
【００１９】
なお、上記各手段は、ハードウェアまたはハードウェアおよびソフトウェアの組み合わせとして実現可能である。典型的な例では、プロセッサなどの演算装置と、メモリ、ハードディスクなどの外部記憶装置と、それらを制御するオペレーティングシステムとその上で動作するローダプログラムによって実現する。換言すると、情報処理装置１は、例えば、プログラムを記憶するメモリなどの記憶装置とプロセッサなどの演算装置とを備えており、記憶装置が記憶するプログラムを演算装置が実行することで、上記各手段を実現する。
【００２０】
ファイルシステム２は、ファイルに対する読み込み書き込み機能を提供する。ファイルシステム２は、例えば、ｅｘｔ４（fourth extended file system）やＸＦＳなどである。図２を参照すると、ファイルシステム２は、例えば、オブジェクトファイル２１と、実行ファイル２２と、ライブラリ２３と、を含んでいる。
【００２１】
オブジェクトファイル２１は、例えば、情報処理装置１が有する図示しないコンパイラがソースコードをコンパイル処理することで生成される。オブジェクトファイル２１は、再配置可能なよう構成されている。オブジェクトファイル２１は、リンク手段３により読み込まれることになる。
【００２２】
オブジェクトファイル２１は、例えば図３で示すように、テキストセクションｔとデータセクションｄとを含んでいる。また、オブジェクトファイル２１は、再配置情報、シンボル一覧などリンクに必要な情報を含んでいる（図示せず）。
【００２３】
実行ファイル２２は、例えばバイナリ形式のファイルであり、メモリに読み込んで実行可能な形式のファイルである。後述するように、実行ファイル２２は、オブジェクトファイル２１などに基づいてリンク手段３により生成される。
【００２４】
ライブラリ２３には、例えばオブジェクトコードが格納されており、実行ファイル２２と連結して利用可能なよう構成されている。
【００２５】
リンク手段３（リンカ）は、オブジェクトファイル２１やライブラリ２３を連結して、実行ファイル２２を生成する。
【００２６】
例えば、リンク手段３は、ファイルシステム２からオブジェクトファイル２１を読み込む。続いて、リンク手段３は、オブジェクトファイル２１に含まれるテキストセクションｔをテキストセグメントに配置するとともに、データセクションｄをデータセグメントに配置する。また、リンク手段３は、オブジェクトファイル２１に含まれるシンボルに対する参照を解決する。さらに、リンク手段３は、アラインメントをスモールページのサイズにするとともに、テキストセグメントの開始をラージページのページサイズの倍数となるように再配置してオブジェクトファイル２１を結合する。この際、リンク手段３は、データセグメントをテキストセグメントの下位アドレス側に配置してオブジェクトファイル２１を結合する。その後、リンク手段３は、結合した結果を実行ファイル２２としてファイルシステム２に出力する。
【００２７】
ロード手段４１は、ファイルシステム２から実行ファイル２２を読み込む。ロード手段４１は、読み込んだ実行ファイル２２を配置決定手段４２に出力する。
【００２８】
配置決定手段４２は、ロード手段４１から取得した実行ファイル２２と、プロセスが実行ファイル２２に使用するページのサイズであるページサイズと、に基づいて、テキストセグメントとデータセグメントとが異なるページに配置されるようテキストセグメントとデータセグメントの配置を決定する。また、配置決定手段４２は、ページ上のオフセットを決定する。
【００２９】
例えば、配置決定手段４２は、プロセスが実行ファイル２２に使用するページのサイズであるページサイズを識別する。また、配置決定手段４２は、ロード手段４１によってロードした実行ファイル２２内のセグメントの持つ情報からテキストセグメントとデータセグメントを識別する。そして、配置決定手段４２は、各セグメントの配置と、現在のページサイズから、テキストセグメントとデータセグメントとが異なるページに配置されるようテキストセグメントとデータセグメントの配置を決定するとともに、ページ上のオフセットを決定する。このようにテキストセグメントとデータセグメントとを異なるページに配置することで、メモリ管理機構に機能を追加することなく、テキストセグメントに対して設定するアクセス許可属性とデータセグメントに対して設定するアクセス許可属性とを分けることが出来る。例えば、テキストセグメントは、通常更新は行わず、他プロセスとも共有することで物理メモリの消費を削減するため、読み込み専用でマップする。また、データセグメントは、プロセス毎に必要なため、読み書き可能なプライベートマッピングを使用する。また、配置決定手段４２は、上記配置の決定を行う際、データセグメントをページの上端側に配置するとともに、テキストセグメントをページの先頭（下端側）に配置する。これにより、後述するように、プロセスが用いるページサイズによらずオフセットを一定とすることが可能となる。
【００３０】
マップ手段４３は、配置決定手段４２により決定した位置に実行ファイル２２の各セグメントをマップする。
【００３１】
以上が、情報処理装置１が有する構成の一例についての説明である。続いて、上述した各手段の詳細について、動作の説明とともに説明する。まず、図３乃至図６を参照して、本実施形態におけるリンク手段３の動作の一例について説明する。
【００３２】
図４を参照すると、リンク手段３は、ファイルシステム２からオブジェクトファイル２１を読み込む（ステップＳ１０１）。例えば、リンク手段３は、図３で示すような、オブジェクトファイル２１ａとオブジェクトファイル２１ｂとを読み込む。
【００３３】
なお、図３で示すように、オブジェクトファイル２１ａにはテキストセクションｔａとデータセクションｄａとが含まれており、オブジェクトファイル２１ｂには、テキストセクションｔｂとデータセクションｄｂとが含まれている。また、オブジェクトファイル２１ａ、２１ｂにはそれぞれ、図示しない再配置情報、シンボル一覧などリンクに必要な情報が含まれており、再配置可能なよう構成されている。
【００３４】
続いて、リンク手段３は、オブジェクトファイル２１ａ、２１ｂ中のテキストセクションｔａ、ｔｂをテキストセグメントに、データセクションｄａ、ｄｂをデータセグメントに配置し（ステップＳ１０２）、未解決の外部参照のアドレスを解決する。また、この際、リンク手段３は、ページ境界を跨いだ際にオフセットが変わらぬよう、データセグメントをテキストセグメントの下位アドレス側に配置する（ステップＳ１０３）。
【００３５】
上記動作の結果、リンク手段３は、例えば図５で示すような実行ファイル２２を生成する。図５を参照すると、リンク手段３により生成される実行ファイル２２のデータセグメントには、データセクションｄａ、データセクションｄｂのデータと、グローバル変数などを含むＧＯＴ（Global Offset Table）とが含まれている。また、図５を参照すると、実行ファイル２２のテキストセグメントには、テキストセクションｔａとテキストセクションｔｂのテキストを再配置した内容が含まれている。このように、リンク手段３は、取得したオブジェクトファイル２１中に含まれるデータセクションｄをデータセグメントにまとめるとともに、テキストセクションｔをテキストセグメントにまとめる。また、リンク手段３は、データセグメントをテキストセグメントの下位アドレス側に配置する。
【００３６】
なお、より詳細には、リンク手段３は、テキストセグメントの開始アドレスがラージページのページサイズ（例えば、情報処理装置１がサポートする最大のページサイズ。つまり、プロセスが使用可能な最大サイズ）の倍数となるようにテキストセグメントを配置する。また、リンク手段３は、データセグメントの開始アドレスがスモールページのページサイズ（例えば、情報処理装置１がサポートする最小のページサイズ。つまり、プロセスが使用可能な最小サイズ）の倍数となるようデータセグメントを配置する。さらに、リンク手段３は、データセグメントとテキストセグメントとの間が、スモールページのページサイズ（例えば、情報処理装置１がサポートする、つまり、プロセスが使用可能なページサイズのうち最小サイズ）未満となるようデータセグメントを配置する。具体的には、例えば、リンク手段３は、データセグメントのサイズを格納できる最低限の数のスモールページのページサイズ分、テキストセグメントの開始アドレスから下位のアドレスをデータセグメントの開始アドレスとしてデータセグメントを配置する。
【００３７】
このような動作の結果、リンク手段３により生成される実行ファイル２２の一例を図６に示す。図６では、スモールページのサイズが０ｘ１０００バイト（＝４ＫＢ）であり、ラージページのサイズが０ｘ２０００００バイト（＝２ＭＢ）である情報処理装置１用の実行ファイル２２の一例を示している。
【００３８】
図６に示す例においては、実行ファイル２２は、ファイル上のオフセット０ｘ８０００から始まるサイズ０ｘ５ａ００のテキストセグメントと、オフセット０ｘ１０００から始まるサイズ０ｘ６ｅ００バイトのデータセグメントとからなる。
【００３９】
なお、図６のうちパーミションは、各セグメントに設定するアクセス許可属性を示している。図６の場合、Ｒが読み込みを示し、Ｗが書き込みを示し、Ｅが実行可能を示している。例えば、図６で示す場合では、テキストセグメントは読み込みと実行が可能で、書き込みが不可能であることを示している。また、図６で示す場合では、データセグメントは読み込みと書き込みが可能であることを示している。
【００４０】
また、図６のうちアラインメントは、各セグメントの配置に関する条件を表している。アラインメントは、例えば、リンク手段３によりスモールページのページサイズ（例えば、情報処理装置１がサポートする最小のページサイズ。つまり、プロセスが使用可能な最小サイズ）の倍数となるよう調整されている。上述したように、スモールページのページサイズは、例えば４ＫＢである。そのため、図６では、アラインメントを０ｘ１０００とし、各セグメントの開始位置を０ｘ１０００の倍数としている。
【００４１】
また、図６で示す場合では、上述したように、ラージページのページサイズが２ＭＢである。そこで、テキストセグメントの開始アドレスは、ラージページのページサイズの倍数となるように、０ｘ４０００００としている。また、データセグメントは、サイズ０ｘ６ｅ００を格納できる最小のスモールページ７ページ分テキストセグメントの下位のアドレスである０ｘ３ｆ９０００を開始アドレスとして配置している。
【００４２】
リンク手段３は、例えば、上記のように実行ファイル２２を生成する。そして、リンク手段３は生成した実行ファイル２２をファイルシステム２に出力する。続いて、図６乃至図８を参照して、配置決定手段４２によるマップの決定の動作（配置決定手段４２やマップ手段４３の動作）の一例について説明する。
【００４３】
図７を参照すると、配置決定手段４２は、プロセスが実行ファイル２２に使用するページサイズを識別する（ステップＳ２０１）。
【００４４】
プロセスが使用するページサイズがスモールページ（例えば、最小のページサイズ）の場合（ステップＳ２０２、スモールページ）、配置決定手段４２は、実行ファイル２２において指定された通りに各セグメントをマップさせることを決定する（ステップＳ２０３）。例えば、図６に示した実行ファイル２２の場合、配置決定手段４２は、データセグメント用に、データセグメントのサイズ０ｘ６ｅ００を格納可能な最低限のスモールページの数である７ページを割り当てる。そして、配置決定手段４２は、それぞれのページに実行ファイル２２のオフセット０ｘ１０００、０ｘ２０００、……、０ｘ７０００の内容をロードして、プロセスの論理アドレス０ｘ３ｆ９０００、０ｘ３ｆａ０００、……、０ｘ３ｆｆ０００、にマップさせることを決定する。また、配置決定手段４２は、テキストセグメント用に、テキストセグメントのサイズ０ｘ５ａ００を格納可能な最低限のスモールページの数である６ページを割り当てる。そして、配置決定手段４２は、それぞれのページに実行ファイル２２のオフセット０ｘ８０００、０ｘ９０００、……、０ｘｄ０００の内容をロードして、プロセスの論理アドレス０ｘ４０００００、０ｘ４０１０００、……、０ｘ４０５０００にマップさせることを決定する。このように構成することで、データセグメントとテキストセグメントとの間のサイズが例えば０ｘ２００バイトとなり、プロセスが使用可能なページサイズのうちの最小サイズ（つまり、スモールページのページサイズ＝０ｘ１０００バイト）以下となる。
【００４５】
一方、プロセスが使用するページサイズがラージページ（例えば、ページサイズが最小サイズよりも大きい）の場合（ステップＳ２０２、ラージページ）、配置決定手段４２は、各セグメントのサイズ以上の最小のラージページを割り当てる（ステップＳ２０４）。つまり、配置決定手段４２は、データセグメントのサイズとテキストセグメントのサイズ以上のページサイズを有するページのうち、プロセスが使用可能な最も小さいページサイズを有するページを割り当てる。そして、配置決定手段４２は、下位にマップするデータセグメントについては、ページの上端に揃えてロードする。例えば、図６に示した実行ファイル２２の場合、配置決定手段４２は、２ＭＢのラージページを割り当てる。その後、配置決定手段４２は、データセグメントにラージページ１ページを割り当てる。そして、配置決定手段４２は、ページ上端からデータセグメントのサイズ０ｘ６ｅ００をスモールページのサイズで切り上げた０ｘ７０００下位に当たるオフセット０ｘ１ｆ９０００に、実行ファイル２２のオフセット０ｘ１０００から０ｘ６ｅ００バイトをロードして、プロセスの論理アドレス０ｘ２０００００にマップさせることを決定する。つまり、配置決定手段４２は、データセグメントを配置するページの上端からデータセグメントのサイズを最小サイズで切り上げたサイズ分下位の位置からデータセグメントを配置する。また、配置決定手段４２は、テキストセグメントにラージページを１ページ割り当てる。そして、配置決定手段４２は、割り当てたページの先頭に、実行ファイルのオフセット０ｘ８０００から０ｘ５ａ００バイトをロードして、プロセスの論理アドレス０ｘ４０００００にマップさせることを決定する（ステップＳ２０５）。このように構成することで、データセグメントとテキストセグメントとの間のサイズが例えば０ｘ２００バイトとなり、プロセスが使用可能なページサイズのうちの最小サイズ（つまり、スモールページのページサイズ＝０ｘ１０００バイト）以下となる。
【００４６】
マップ手段４３は、配置決定手段４２が決定した配置に従ってプロセスへのページのマップと実行ファイル２２の内容の読み込みを行う（ステップＳ２０６）。
【００４７】
以上が、配置決定手段４２によるマップの決定の動作の一例である。
【００４８】
このように、本実施形態における情報処理装置１は、複数のページサイズをサポートしており、リンク手段３と配置決定手段４２とを有している。このような構成により、リンク手段３は、データセグメントをテキストセグメントの下位アドレス側に配置して、実行ファイル２２を生成する。また、配置決定手段４２は、上記実行ファイル２２と、プロセスが使用するページのサイズと、に基づいて、テキストセグメントとデータセグメントとが異なるページに配置されるようテキストセグメント及びデータセグメントの配置を決定する。具体的には、配置決定手段４２は、プロセスがラージページを使用する場合において、データセグメントを配置するページの上端からデータセグメントのサイズをスモールページのサイズで切り上げたサイズ分下位の位置からデータセグメントを配置する。これにより、データセグメントとテキストセグメントとの間が、プロセスが使用可能なページサイズのうち最小サイズであるスモールページ未満となり、プロセスがスモールページを用いる場合と同等となる。このように、配置決定手段４２は、スモールページを用いる場合とラージページを用いる場合において、データセグメントとテキストセグメントとの間のサイズが同一となるように、データセグメントとテキストセグメントを配置する。その結果、図８で示すように、プロセスがスモールページを用いる場合においても、ラージページを用いる場合においても、テキストセグメントとデータセグメントのオフセットを一定に配置することが可能となり、オフセットがページサイズにより変化しないことになる。これにより、メモリ管理機構に新たな機能を追加することなく、断片化を抑制しつつ、複数のページサイズにおいて単一の実行ファイル２２を使用可能とすることが可能となる。
【００４９】
なお、本実施形態においては、リンク手段３がオブジェクトファイル２１ａとオブジェクトファイル２１ｂとの２つのオブジェクトファイル２１を読み込む場合について説明した。しかしながら、リンク手段３が読み込むオブジェクトファイル２１の数は、２つに限定されない。リンク手段３は、３つ以上のオブジェクトファイル２１を読み込んで構わない。
【００５０】
また、図６では、スモールページのサイズが０ｘ１０００バイト（＝４ＫＢ）であり、ラージページのサイズが０ｘ２０００００バイト（＝２ＭＢ）である情報処理装置１用の実行ファイル２２の一例を示した。つまり、情報処理装置１が２種類のページサイズのページをサポートする場合について例示した。しかしながら、情報処理装置１がサポート可能なページサイズの数は、２つに限定されない。情報処理装置１は、ページサイズが３種類以上の場合でも、スモールページを最小サイズのページとみなし、ラージページを最大サイズのページとみなすことで、図６を用いて説明した場合と同様な処理を実現することが出来る。
【００５１】
［第２の実施形態］
次に、図９を参照して、本発明の第２の実施形態について説明する。第２の実施形態では、動的リンク装置５の構成の概要について説明する。
【００５２】
図９を参照すると、動的リンク装置５は、リンク手段５１と配置決定手段５２とを有している。動的リンク装置５は、図示しない演算装置とプログラムを記憶する記憶装置とを有しており、記憶装置が記憶するプログラムを演算装置が実行することで、上記各手段を実現する。
【００５３】
リンク手段５１は、テキストセクションとデータセクションとを含むオブジェクトファイルを連結して、テキストセクションを含むテキストセグメントとデータセクションを含むデータセグメントとを有する実行ファイルを生成する。具体的には、本実施形態におけるリンク手段５１は、データセグメントをテキストセグメントの下位アドレス側に配置した実行ファイルを生成する。
【００５４】
配置決定手段５２は、リンク手段５１が生成した実行ファイルと、プロセスが実行ファイルに使用するページのサイズであるページサイズと、に基づいて、テキストセグメントとデータセグメントとが異なるページに配置されるよう当該テキストセグメントと当該データセグメントの配置を決定する。より詳細には、配置決定手段は、データセグメントをページの上端側に配置するとともに、テキストセグメントをページの先頭側に配置する。
【００５５】
このように、本実施形態における動的リンク装置５は、リンク手段５１と配置決定手段５２とを有している。このような構成により、リンク手段５１は、データセクションを含むデータセグメントを、テキストセクションを含むテキストセグメントの下位アドレス側に配置した実行ファイルを生成することが出来る。また、配置決定手段５２は、データセグメントをページの上端側に配置するとともに、テキストセグメントをページの先頭側に配置することが出来る。これにより、テキストセグメントとデータセグメントとを異なるページに配置することが可能となる。また、ページサイズによらずに、テキストセグメントとデータセグメントのオフセットを一定に配置することが可能となる。その結果、モリ管理機構に新たな機能を追加することなく、断片化を抑制しつつ、複数のページサイズにおいて単一の実行ファイルを使用可能とすることが可能となる。
【００５６】
また、上述した動的リンク装置５は、当該動的リンク装置５（情報処理装置）に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、情報処理装置（動的リンク装置５）に、テキストセクションとデータセクションとを含むオブジェクトファイルを連結して、テキストセクションを含むテキストセグメントとデータセクションを含むデータセグメントとを有する実行ファイルを生成するリンク手段５１と、リンク手段５１が生成した実行ファイルと、プロセスが実行ファイルに使用するページのサイズであるページサイズと、に基づいて、テキストセグメントとデータセグメントとが異なるページに配置されるようテキストセグメントとデータセグメントの配置を決定する配置決定手段５２と、を実現させ、リンク手段５１は、データセグメントをテキストセグメントの下位アドレス側に配置した実行ファイルを生成し、配置決定手段５２は、データセグメントをページの上端側に配置するとともに、テキストセグメントをページの先頭側に配置する、という処理を実現させるためのプログラムである。
【００５７】
また、上述した動的リンク装置５により実行される動的リンク方法は、テキストセクションとデータセクションとを含むオブジェクトファイルを連結して、テキストセクションを含むテキストセグメントとデータセクションを含むデータセグメントとを有する実行ファイルを生成し、生成した実行ファイルと、プロセスが実行ファイルに使用するページのサイズであるページサイズと、に基づいて、テキストセグメントとデータセグメントとが異なるページに配置されるよう当該テキストセグメントと当該データセグメントの配置を決定し、データセグメントをテキストセグメントの下位アドレス側に配置した実行ファイルを生成し、データセグメントをページの上端側に配置するとともに、テキストセグメントをページの先頭側に配置する、という方法である。
【００５８】
上述した構成を有する、プログラム、又は、動的リンク方法、の発明であっても、上記動的リンク装置５と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
【００５９】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における動的リンク装置などの概略を説明する。但し、本発明は、以下の構成に限定されない。
【００６０】
（付記１）
テキストセクションとデータセクションとを含むオブジェクトファイルを連結して、前記テキストセクションを含むテキストセグメントと前記データセクションを含むデータセグメントとを有する実行ファイルを生成するリンク手段と、
前記リンク手段が生成した前記実行ファイルと、プロセスが前記実行ファイルに使用するページのサイズであるページサイズと、に基づいて、前記テキストセグメントと前記データセグメントとが異なるページに配置されるよう当該テキストセグメントと当該データセグメントの配置を決定する配置決定手段と、
を有し、
前記リンク手段は、前記データセグメントを前記テキストセグメントの下位アドレス側に配置した前記実行ファイルを生成し、
前記配置決定手段は、前記データセグメントをページの上端側に配置するとともに、前記テキストセグメントをページの先頭側に配置する
動的リンク装置。
（付記２）
付記１に記載の動的リンク装置であって、
前記配置決定手段は、前記データセグメントと前記テキストセグメントとの間が、前記プロセスが使用可能なページサイズのうちの最小サイズ未満となるよう前記データセグメントと前記テキストセグメントとの配置を決定する
動的リンク装置。
（付記３）
付記１又は２に記載の動的リンク装置であって、
前記配置決定手段は、前記データセグメントを配置するページの上端から前記データセグメントのサイズを前記プロセスが使用可能なページサイズのうちの最小サイズで切り上げたサイズ分下位の位置から前記データセグメントを配置する
動的リンク装置。
（付記４）
付記３に記載の動的リンク装置であって、
前記配置決定手段は、前記プロセスが使用するページとして、前記データセグメントのサイズと前記テキストセグメントのサイズ以上のページサイズを有するページのうち、前記プロセスが使用可能な最も小さいページサイズを有するページを割り当てる
動的リンク装置。
（付記５）
付記１又は２に記載の動的リンク装置であって、
前記配置決定手段は、前記データセグメントのサイズを格納可能な最低限の数の最小サイズのページを割り当て、それぞれのページにデータセグメントの内容を配置する
動的リンク装置。
（付記６）
付記１乃至５のいずれかに記載の動的リンク装置であって、
前記リンク手段は、前記テキストセグメントの開始アドレスが、前記プロセスが使用可能なページサイズのうちの最大サイズの倍数となるように、前記テキストセグメントを配置する
動的リンク装置。
（付記７）
付記１乃至６のいずれかに記載の動的リンク装置であって、
前記リンク手段は、前記データセグメントの開始アドレスが、前記プロセスが使用可能なページサイズのうちの最小サイズの倍数となるように、前記データセグメントを配置する
動的リンク装置。
（付記８）
付記１乃至７のいずれかに記載の動的リンク装置であって、
前記リンク手段は、アラインメントを前記プロセスが使用可能なページサイズのうちの最小サイズの倍数とする
動的リンク装置。
（付記９）
テキストセクションとデータセクションとを含むオブジェクトファイルを連結して、前記テキストセクションを含むテキストセグメントと前記データセクションを含むデータセグメントとを有する実行ファイルを生成し、
生成した前記実行ファイルと、プロセスが前記実行ファイルに使用するページのサイズであるページサイズと、に基づいて、前記テキストセグメントと前記データセグメントとが異なるページに配置されるよう当該テキストセグメントと当該データセグメントの配置を決定し、
前記データセグメントを前記テキストセグメントの下位アドレス側に配置した前記実行ファイルを生成し、
前記データセグメントをページの上端側に配置するとともに、前記テキストセグメントをページの先頭側に配置する
動的リンク方法。
（付記９−１）
付記９に記載の動的リンク方法であって、
前記データセグメントと前記テキストセグメントとの間が、前記プロセスが使用可能なページサイズのうちの最小サイズ未満となるよう前記データセグメントと前記テキストセグメントとの配置を決定する
動的リンク方法。
（付記９−２）
付記９又は９−１に記載の動的リンク装置であって、
前記データセグメントを配置するページの上端から前記データセグメントのサイズを前記プロセスが使用可能なページサイズのうちの最小サイズで切り上げたサイズ分下位の位置から前記データセグメントを配置する
動的リンク方法。
（付記１０）
情報処理装置に、
テキストセクションとデータセクションとを含むオブジェクトファイルを連結して、前記テキストセクションを含むテキストセグメントと前記データセクションを含むデータセグメントとを有する実行ファイルを生成するリンク手段と、
前記リンク手段が生成した前記実行ファイルと、プロセスが前記実行ファイルに使用するページのサイズであるページサイズと、に基づいて、前記テキストセグメントと前記データセグメントとが異なるページに配置されるよう当該テキストセグメントと当該データセグメントの配置を決定する配置決定手段と、
を実現させ、
前記リンク手段は、前記データセグメントを前記テキストセグメントの下位アドレス側に配置した前記実行ファイルを生成し、
前記配置決定手段は、前記データセグメントをページの上端側に配置するとともに、前記テキストセグメントをページの先頭側に配置する
プログラム。
（付記１０−１）
付記１０に記載のプログラムであって、
前記配置決定手段は、前記データセグメントと前記テキストセグメントとの間が、前記プロセスが使用可能なページサイズのうちの最小サイズ未満となるよう前記データセグメントと前記テキストセグメントとの配置を決定する
プログラム。
（付記１０−２）
付記１０又は１０−１に記載の動的リンク装置であって、
前記配置決定手段は、前記データセグメントを配置するページの上端から前記データセグメントのサイズを前記プロセスが使用可能なページサイズのうちの最小サイズで切り上げたサイズ分下位の位置から前記データセグメントを配置する
プログラム。
【００６１】
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【００６２】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
【符号の説明】
【００６３】
１  情報処理装置
２  ファイルシステム
２１  オブジェクトファイル
２２  実行ファイル
２３  ライブラリ
３  リンク手段
４１  ロード手段
４２  配置決定手段
４３  マップ手段
５  動的リンク装置
５１  リンク手段
５２  配置決定手段
【図１】
2018092456.tif 000003
【図２】
2018092456.tif 000004
【図３】
2018092456.tif 000005
【図４】
2018092456.tif 000006
【図５】
2018092456.tif 000007
【図６】
2018092456.tif 000008
【図７】
2018092456.tif 000009
【図８】
2018092456.tif 000010
【図９】
2018092456.tif 000011