(57)【要約】【課題】プロセスが生成される際の共有情報（共有するバイナリファイル等）を増加させ、物理メモリ使用量をより削減する。【解決手段】プロセス生成装置が、バイナリファイルの情報を記録する手段と、該記録されたバイナリファイルの情報を検索する手段と、該検索した結果、同じバイナリファイルを用いたプロセスがある場合、該プロセスのプロセス管理情報を元に新規プロセスを生成する手段とを備えることによって課題を解決する。【選択図】図４
2011076438.tif 000002
【特許請求の範囲】
【請求項１】
バイナリファイルの情報を記録する工程と、
該記録されたバイナリファイルの情報を検索する工程と、
該検索した結果、同じバイナリファイルを用いたプロセスがある場合、該プロセスのプロセス管理情報を元に新しいプロセスを生成する工程と
を備えることを特徴とするプロセス生成方法。
【請求項２】
同じバイナリファイルを用いたプロセスが複数ある場合、同じオプションが多いプロセスを選択する工程を更に備えることを特徴とする請求項１記載のプロセス生成方法。
【請求項３】
バイナリファイルの情報を記録する手段と、
該記録されたバイナリファイルの情報を検索する手段と、
該検索した結果、同じバイナリファイルを用いたプロセスがある場合、該プロセスのプロセス管理情報を元に新しいプロセスを生成する手段と
を備えることを特徴とするプロセス生成装置。
【請求項４】
バイナリファイルの情報を記録する工程と、
該記録されたバイナリファイルの情報を検索する工程と、
該検索した結果、同じバイナリファイルを用いたプロセスがある場合、該プロセスのプロセス管理情報を元に新しいプロセスを生成する工程と
をコンピュータに実施させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセス生成方法、プロセス生成装置、及びプログラムに関する。
【背景技術】
【０００２】
従来、伝統的なUnix（登録商標）ライクなオペレーティングシステム（以下、ＯＳと称する。）において、プロセスの生成では、親プロセスのプロセス管理情報等の資源を複製し、子プロセスに渡していた。しかしながら、親プロセスの全アドレス空間が複製されており、無駄が多かった。また、多くの場合、複製されたアドレス空間の情報は捨てられていた。
この問題に対し、近年のＯＳ、例えばLinux（商標）では、コピーオンライト（Copy On Write、以下、ＣＯＷと称する。）を用いて対処している（非特許文献１、非特許文献２参照）。ＣＯＷは、プロセス生成のときにコピーを行わず、書込みが発生したときに物理メモリを割り当て、そこで初めて親プロセスの資源を子プロセスにコピーする方法である。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】詳解Linuxカーネル第３版、発行/オライリー・ジャパン、発売/オーム社、ISBN978-4-87311-313-5
【非特許文献２】Linuxカーネル2.6解読室、発行/ソフトバンククリエイティブ、ISBN4-7973-3826-1
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、親と子のプロセスにおいて、異なるバイナリファイルを用いていても、親のプロセス管理情報を子プロセスが引き継ぐことになる。よって、プロセス管理情報のほとんどは書き換えられることとなり、無駄が発生し、新たに割り当てるメモリを多く要していた。
【０００５】
本発明はこのような問題点に鑑みなされたもので、新たに割り当てるメモリをより削減することを目的とする。
【課題を解決するための手段】
【０００６】
そこで、本発明は、バイナリファイルの情報を記録する工程と、該記録されたバイナリファイルの情報を検索する工程と、該検索した結果、同じバイナリファイルを用いたプロセスがある場合、該プロセスのプロセス管理情報を元に新しいプロセスを生成する工程とを備えることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、新たに割り当てるメモリをより削減できる。
【図面の簡単な説明】
【０００８】
【図１】装置の一例を示す図である。
【図２】環境の一例を示す図である。
【図３】実行中のバイナリファイルの情報を記録するリストの一例を示す図である。
【図４】実行中のプロセスを検索する処理に係るフローチャートを示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について図面に基づいて説明する。
【００１０】
装置１００の構成について、図１を参照して説明する。本実施形態では、後述する図２に示すプロセスが動作している環境において、新たにバイナリが生成されるときを例として説明する。
図１において、ＣＰＵ１０１は、装置１００全体を制御するCentral Processing Unit（ＣＰＵ）である。ＲＡＭ１０２は、外部装置等から供給されるプログラムやデータを一時記録するRandom Access Memory（ＲＡＭ）である。ＲＯＭ１０３は、プログラムやパラメータを格納するRead Only Memory（ＲＯＭ）である。本実施形態では、ＣＤ−Ｒ等の読み込みメディアもＲＯＭ１０３の一種である。
バス１０４は、各ユニットを通信可能に接続するシステムバスである。入力インターフェース１０５は、ユーザの操作を受け、データを入力するポインティングデバイス、キーボード、リモコン等の入力デバイスとのインターフェースである。出力インターフェース１０６は、装置１００が保持するデータや供給されたデータを表示するためのモニタ、ＴＶ等とのインターフェースである。記録装置１０７は、装置１００に固定して設置されたハードディスクやメモリカード等の読み書き可能な不揮発性の記録メディアである。
【００１１】
図２に、本実施形態を説明するための環境の一例を示す。図２は、装置１００上で起動しているプロセスの関連を示している。図２において、括弧内は、プロセスＩＤを示す。また、各プロセスの関連を線で結んで表現している。例えば、左端にある「init(1)」は、initプロセスがプロセスＩＤを「1」として起動していることを示す。init(1)から「login(100)」に線が結ばれているが、これは右端が左端から生成されたことを示す。同様に、「bash(101)」は、「login(100)」から生成されたことを示す。通常、プロセスＩＤは、生成された順に１つずつ加算された値が付与されるが、本実施形態では説明の便宜上、区別しやすい番号を用いている。
【００１２】
本実施形態では、各プロセスは、生成された際、各プロセスの情報（プロセス管理情報）が記録されるものとする。以下、図３に示す情報を「実行中バイナリリスト」と称する。実行中バイナリリストには、左から、起動しているプロセスのバイナリファイルへのパス、バイナリファイルが起動された際の引数、プロセスＩＤ等が記録されているものとする。例えば、図３の３行目は、バイナリファイル「/bin/login」が、引数「-u UserA」で起動されて実行中であり、プロセスＩＤが「100」であることを示す。
他に、該プロセスの実行権やユーザ、グループ情報等が実行中バイナリリストに含まれてもよい。また、パスは、バイナリファイルの一意性を示す必要があるために絶対パスが望ましいが、バイナリファイルを特定可能である場合には相対パスでもよい。また、引数の列に記載されている「NONE」は、引数がないことを示すものとする。「NONE」の代わりに空であってもよい。
図３は、図２で示したプロセスについて、プロセスの情報が記述された実行中バイナリリストである。本実施形態では、プロセス生成時、ＣＰＵ１０１がＲＡＭ１０２上に実行中バイナリリストを記録、保持する。なお、ＣＰＵ１０１は、記録装置１０７上に実行中バイナリリストを記録、保持してもよいが、実行速度の観点からＲＡＭ１０２上で管理するほうが望ましい。そこで、本実施形態では、実行中バイナリリストは、ＲＡＭ１０２に記録され、保持されるものとする。
【００１３】
図４に示すフローチャートを参照して、本実施形態におけるプロセス生成に係る処理について説明する。図４は、親プロセスの情報を子プロセスにコピーする既存のプロセス生成における処理（箇所）を置き換える処理を示している。
ここで、バイナリファイル「/bin/login」及び引数「-u UserB」とした新たなプロセスを、bash(101)の子プロセスとしてＣＰＵ１０１が生成する場合を例に挙げて図４を説明する。新たなプロセスには、プロセスＩＤとして「102」が与えられるものとする。
ステップＳ１０１において、親プロセスの情報（この例ではbash(101)の情報）を、子プロセス（この例ではlogin(102)）にコピーするだけの既知の処理に代え、図４に示す処理（同一バイナリプロセス検索処理）に処理が移行する。
ステップＳ１０２において、ＣＰＵ１０１は、ＲＡＭ１０２上に記録された、図３で示した実行中バイナリリストを検索する。検索キーは、新たなプロセスのパス及び引数である。本例の場合、パスは「/bin/login」となり、引数は「-u UserB」となる。なお、検索した結果は以降の処理で照合される。
ステップＳ１０３において、ＣＰＵ１０１は、図３で示す実行中バイナリリストに、同じバイナリファイルを用いたプロセスがあるか否かを判断する。本例の場合、図３の３行目とパスが同一となり、YESとなるので、ＣＰＵ１０１は、続いてステップＳ１０５の処理を行う。他方、実行中バイナリリストを検索し、同じバイナリファイルを用いた実行中のプロセスがない場合、NOとなり、ＣＰＵ１０１は、ステップＳ１０４の処理を行う。
【００１４】
ステップＳ１０４において、ＣＰＵ１０１は、同一のバイナリファイルを用いたプロセスが存在しないので、既存の処理（親プロセスの情報を子プロセスにコピー）を行う。ステップＳ１０４の処理が終了後、ＣＰＵ１０１は、生成したプロセスの情報を実行中バイナリリストに追加する（ステップＳ１０８）。その後、ステップＳ１０８からステップＳ１０９に処理が遷移し、本処理は終了となる。
ステップＳ１０５において、ＣＰＵ１０１は、同じバイナリファイルを用いた複数のプロセスのうちから、全く同じオプション（引数等）が用いられたプロセスがあるか否かを判断する。全く同じオプションを用いたプロセスがある場合、YESとなり、ＣＰＵ１０１は、ステップＳ１０７の処理を行う。他方、一部が同じ又は同じでない場合、NOとなり、ＣＰＵ１０１は、ステップＳ１０６の処理を行う。本例の場合、新たなプロセスのオプション（引数）は、「-u UserB」であるので、NOとなり、ＣＰＵ１０１は、ステップＳ１０６の処理を行う。
ステップＳ１０６において、ＣＰＵ１０１は、複数のオプションより、一致するオプションが多いプロセスを選択し、選択したプロセスの情報を新たに生成するプロセスの情報としてコピーする。１つのみの場合、ＣＰＵ１０１は、同じバイナリを用いたプロセスよりプロセスの情報をコピーする。本例では、仮にプロセスＩＤが「102」となる新たに生成されるプロセスとして、ＣＰＵ１０１は、図２におけるlogin(100)の情報をコピーする。コピー後、処理は、ステップＳ１０８に遷移し、その後、終了となる。
【００１５】
ここで、同じ物理メモリを指すポインタ、レジスタアドレス、構造体等がコピーされ、メモリ上の情報の共有がなされる。共有されたメモリに関しては、参照しているプロセス数を示すリファレンスカウントを用意し、ＣＰＵ１０１は、参照しているプロセス数が増加した場合、加算を行い、減少した場合減算を行う。なお、参照しているプロセスが削除されるまでリファレンスカウントは維持される。また、今まで参照していたプロセス（この例ではlogin(100)）でも、リファレンスカウントの処理が行われることになる。
ステップＳ１０５からステップＳ１０７に処理が遷移した場合、全く同じオプションを用いたプロセスがあることになるので、ＣＰＵ１０１は、全く同じオプションを用いたプロセスの情報を元として新しく生成されるプロセスにコピーする。コピー後、ステップＳ１０８において、ＣＰＵ１０１は、生成したプロセスの情報を実行中バイナリリストに追加する。ここでも、ステップＳ１０６と同様に、同じ物理メモリを指すポインタ、レジスタアドレス、構造体等がコピーされ、メモリ上の情報の共有がなされる。その後、ステップＳ１０８からステップＳ１０９に処理が遷移し、本処理は終了となる。
【００１６】
以上のようにして、新たに生成されるプロセスについては、ＣＰＵ１０１は、同じバイナリファイル、よりオプションが同一のバイナリファイルから情報を引き継ぐ。よって、物理メモリで共有される情報が多くなり、新たに物理メモリを割り当てることが少なくなり、物理メモリ使用量の削減となる。換言するならば、子プロセスにおける物理メモリの新規割り当てをより削減し、メモリ使用量をより削減できる。
本実施形態では、例えばLinux（商標）においては、execveシステムコールを処理するシーケンス内のflush_old_exec関数の箇所で処理が行われることで、複数プロセス間でのメモリ上の情報の共有が行われる。
なお、ＣＰＵ１０１が、記録装置１０７等に格納されたプログラムの手順に従って処理を行うことによって、装置１００における機能及びフローチャートに係る処理が実現されてもよい。
【００１７】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００１８】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００１９】
１００  装置、１０１  ＣＰＵ、１０２  ＲＡＭ、１０３  ＲＯＭ、１０４  バス、１０５  入力インターフェース、１０６  出力インターフェース、１０７  記録装置
【図１】
2011076438.tif 000003
【図２】
2011076438.tif 000004
【図３】
2011076438.tif 000005
【図４】
2011076438.tif 000006