(57)【要約】【課題】簡素な構成で複数のプロセスによる処理を行うことが可能な、新規かつ改良された情報処理装置、情報処理方法及びプログラムを提供すること。【解決手段】プロセス管理表に基づいて複数のプロセスを処理する情報処理装置であって、第１プロセスのプロセス管理表に基づいて、第１プロセスを処理する第１プロセス処理部１０と、第１プロセスの処理後、第１プロセスのプロセス管理表のデータ領域情報を第２プロセスのプロセス管理表のデータ領域情報に複写して第２プロセスのプロセス管理表を更新するプロセス管理表更新部１６と、第１プロセスの処理後、更新された第２プロセスのプロセス管理表に基づいて、第２プロセスを処理する第２プロセス処理部１２と、を備える。【選択図】図２
2009031871.tif 000002
【特許請求の範囲】
【請求項１】
プロセス管理表に基づいて複数のプロセスを処理する情報処理装置であって、
第１プロセスの前記プロセス管理表に基づいて、前記第１プロセスを処理する第１プロセス処理部と、
前記第１プロセスの処理後、前記第１プロセスの前記プロセス管理表のデータ領域情報を第２プロセスの前記プロセス管理表のデータ領域情報に複写して前記第２プロセスのプロセス管理表を更新するプロセス管理表更新部と、
前記第１プロセスの処理後、更新された前記第２プロセスの前記プロセス管理表に基づいて、前記第２プロセスを処理する第２プロセス処理部と、を備え、
前記第１プロセスと前記第２プロセスとの間で、物理メモリ空間の情報の少なくとも一部を共有することを特徴とする、情報処理装置。
【請求項２】
プロセス間通信により、前記第１プロセスの前記プロセス管理表のデータ領域情報を前記第２プロセスの前記プロセス管理表へ送るプロセス間通信部を備えることを特徴とする、請求項１に記載の情報処理装置。
【請求項３】
前記第１プロセスの処理後の前記物理メモリ空間におけるデータ領域を前記第２プロセスの処理開始時に引き続き前記物理メモリ空間に配置することを特徴とする、請求項１に記載の情報処理装置。
【請求項４】
複数の演算処理部を備え、
前記第１プロセスの処理後、前記第１プロセスを処理した演算処理部の前記物理メモリ空間のプログラム領域に、前記第２プロセスのプログラムをロードして、前記第２プロセスを処理することを特徴とする、請求項１に記載の情報処理装置。
【請求項５】
プロセス管理表に基づいて複数のプロセスを処理する情報処理方法であって、
第１プロセスの前記プロセス管理表に基づいて、前記第１プロセスを処理するステップと、
前記第１プロセスの処理後、前記第１プロセスの前記プロセス管理表のデータ領域情報を第２プロセスの前記プロセス管理表のデータ領域情報に複写して前記第２プロセスのプロセス管理表を更新するステップと、
前記第１プロセスの処理後、更新された前記第２プロセスの前記プロセス管理表に基づいて、前記第１プロセスとの間で物理メモリ空間の情報の少なくとも一部を共有して前記第２プロセスを処理するステップと、
を備えることを特徴とする、情報処理方法。
【請求項６】
プロセス管理表に基づいて複数のプロセスを処理するためのプログラムであって、
第１プロセスの前記プロセス管理表に基づいて、前記第１プロセスを処理する手段、
前記第１プロセスの処理後、前記第１プロセスの前記プロセス管理表のデータ領域情報を第２プロセスの前記プロセス管理表のデータ領域情報に複写して前記第２プロセスのプロセス管理表を更新する手段、
前記第１プロセスの処理後、更新された前記第２プロセスの前記プロセス管理表に基づいて、前記第１プロセスとの間で物理メモリ空間の情報の少なくとも一部を共有して前記第２プロセスを処理する手段、
としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
コンピュータでは、複数のプログラムを動作させるため、プロセスと呼ばれる実行単位が複数存在できるようにしている。そして、アルゴリズムに従って各プロセスにＣＰＵを割り当てるため、プロセス管理が行われる。ＣＰＵ内のメモリ管理ユニット（MMU; Memory Management Unit）と、複数プロセスを同時起動できるオペレーティングシステム（ＯＳ）を有するシステムにおいて、複数プロセスを起動時に、ＯＳはそのプロセスのプロセス管理表を作成する。
【０００３】
ＯＳは、プロセスをプログラム領域（プログラムセグメント）とデータ領域（データセグメント）に分けてメモリ上に配置して管理する。このため、図９に示すように、プロセス管理表にはプログラム領域情報とデータ領域情報が登録されている。また、複数プロセスが同時に起動している場合には、各プロセスのプロセス管理表をそれぞれ別に管理し、プロセスの独立性を保っている。
【０００４】
ＯＳがプロセスＡ、プロセスＢを処理する際には、図１０に示すように、先ず、プロセスＡのプロセス管理表を作成し（ステップＳ１０１）、プロセスＡを起動する（ステップＳ１０２）。その後、プロセスＢのプロセス管理表を作成し（ステップＳ１０３）、プロセスＢを起動する（ステップＳ１０４）。図１１に示すように、プロセスＡ，プロセスＢは、起動された後、個々に処理が行われる。
【０００５】
起動されたプロセスがメモリアクセスする場合には、プロセス管理表に記載されているアドレス変換表によって論理アドレスから物理アドレスへ変換が行われる。図１２に示すように、プロセスＡがプログラム領域にアクセスする場合には、プロセスＡのプロセス管理表のプログラム領域情報のアドレス変換表を使用して、物理メモリ空間のプログラム領域にアクセスする。また、プロセスＡがデータ領域にアクセスする場合には、プロセスＡのプロセス管理表のデータ領域情報のアドレス変換表を使用して、物理メモリ空間のデータ領域にアクセスする。
【０００６】
【特許文献１】特開２００６−１８７０５号公報
【特許文献２】特開平９−５４６９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、１つの処理を複数プロセスで分担して処理するアプリケーションにおいては、あるプロセスで処理を開始する前に共有メモリ領域からデータを読み込み、処理後にデータを共有メモリ領域に書き出す必要がある。図１３に示すように、物理メモリ空間において、プロセスＡがデータ領域にアクセスする場合には、共有メモリ領域からデータを読み込んでプロセスＡのデータ領域にコピーし（ステップＳ１１０）、処理後にプロセスＡのデータ領域のデータを共有メモリ領域にコピーする処置が行われる（ステップＳ１１１）。同様に、プロセスＢがデータ領域にアクセスする場合には、共有メモリ領域からデータを読み込んでプロセスＢのデータ領域にコピーし（ステップＳ１１２）、処理後にプロセスＢのデータ領域のデータを共有メモリ領域にコピーする処置が行われる（ステップＳ１１３）。このため、１つのプロセスを実行するたびに、共有メモリとデータ領域との間でメモリコピーが発生し、処理が非常に煩雑になるという問題がある。
【０００８】
図１４は、プロセスＡ、プロセスＢのそれぞれの処理を示すフローチャートである。プロセスＡの処理では、ステップＳ１２１でメモリ空間にプロセスＡのデータ領域（データバッファ）の確保が行われる。ステップＳ１２２で共有メモリ領域からデータバッファへデータのコピーを行った後、ステップＳ１２３でプロセスＡの処理を行う。そして、ステップＳ１２４でデータバッファからプロセスＡの処理後のデータを共有メモリ領域へコピーする。ここで、ステップＳ１２２は図１３のステップＳ１１０に対応し、ステップＳ１２４は図１３のステップＳ１１１に対応している。
【０００９】
図１４において、プロセスＢの処理はプロセスＡと同様に行われる。ステップＳ１３１では、メモリ空間にプロセスＢのデータ領域（データバッファ）の確保が行われ、ステップＳ１３２で共有メモリ領域からデータバッファへデータのコピーが行われる。ステップＳ１３３では、プロセスＢの処理を行う。そして、ステップＳ１３４でデータバッファからプロセスＢの処理後のデータを共有メモリ領域へコピーする。ここで、ステップＳ１３２は図１３のステップＳ１１２に対応し、ステップＳ１３４は図１３のステップＳ１１３に対応している。
【００１０】
このように複数プロセスを処理する際には、メモリコピーが煩雑に発生するため、処理が複雑化してしまう。例えば、ＡＶ機器におけるマルチメディアストリームデータ処理をこのようなシステムで処理を行った場合、頻繁にメモリ間のデータコピーが発生し、メモリ転送量が増えてしまう問題がある。特に、ＴＶ用画像処理システムでは、表示画像サイズの大型に伴いメモリ転送量が増加し、システム上のメモリバンド幅を有効に活用する必要が生じている。
【００１１】
具体的には、ＴＶへの出力画像データの画像サイズが１９２０（ピクセル）×１０８０（ピクセル）のプログレッシブ方式であり、各ピクセルのデータ幅が１０bit、フレーム数が１２０フレーム／秒であったとする。ＯＳは、プログラム領域にプログラムバイナリをコピーし、プロセスを起動する。図１３に示すように、プロセスＡの処理では、先ず、１ピクセルあたり30bitのデータ量を確保するため、１９２０×１０８０ピクセルに対応する配列データをデータ領域（約８Mbytes）に確保し、共有メモリ領域からその配列にデータをコピーし（ステップＳ１１０）、プロセスＡの処理を行う。なお、処理簡略化のため、１ピクセルあたり32bitのデータ量を確保してもよい。そして、プロセスＡの処理完了後に配列データを共有メモリ領域にコピーする（ステップＳ１１１）。プロセスＡの処理が完了すると、プロセスＢの処理が同様に行われる。
【００１２】
この場合、プロセスＡ、プロセスＢの各処理では、１回のコピーで約８Mbytes程度のメモリコピーが発生するため、１フレーム処理毎にデータだけで約１６Mbytesのメモリコピーが発生し、１９２０Mbytes/s程度のメモリ転送量となる。組み込みシステムにおけるメモリバンド幅は約２００Mbytes／秒〜１２００Mbytes／秒程度の性能であるため、このメモリ転送はメモリバンド幅に比べて非常に大きいことが判る。更に、多数のプロセスでシーケンシャルにデータ処理を行う場合、メモリバンド幅への影響は増大してしまう。
【００１３】
従来のシステムでは、この問題に対処するために、より高速なメモリを多数並列に接続したり、複数のＣＰＵでプロセス実行を分散するなどしている。また、ＣＰＵによるソフトウエア処理ではなく、専用ハードウエアを開発して対処する手法も採られている。しかしながら、いずれの対処策を用いた場合も製造コストが上昇するという問題がある。
【００１４】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、簡素な構成で複数のプロセスによる処理を行うことが可能な、新規かつ改良された情報処理装置、情報処理方法及びプログラムを提供することにある。
【課題を解決するための手段】
【００１５】
上記課題を解決するために、本発明のある観点によれば、プロセス管理表に基づいて複数のプロセスを処理する情報処理装置であって、第１プロセスの前記プロセス管理表に基づいて、前記第１プロセスを処理する第１プロセス処理部と、前記第１プロセスの処理後、前記第１プロセスの前記プロセス管理表のデータ領域情報を第２プロセスの前記プロセス管理表のデータ領域情報に複写して前記第２プロセスのプロセス管理表を更新するプロセス管理表更新部と、前記第１プロセスの処理後、更新された前記第２プロセスの前記プロセス管理表に基づいて、前記第２プロセスを処理する第２プロセス処理部と、を備え、前記第１プロセスと前記第２プロセスとの間で、物理メモリ空間の情報の少なくとも一部を共有する情報処理装置が提供される。
【００１６】
上記構成によれば、プロセス管理表に基づいて複数のプロセスを処理する情報処理装置において、第１プロセスのプロセス管理表に基づいて、第１プロセスが処理された後、第１プロセスのプロセス管理表のデータ領域情報が第２プロセスのプロセス管理表のデータ領域情報に複写されて第２プロセスのプロセス管理表が更新される。そして、第１プロセスの処理後、更新された第２プロセスのプロセス管理表に基づいて、第２プロセスが処理される。従って、更新された第２プロセスのプロセス管理表を用いることで、第１プロセスのデータ領域情報に直接アクセスすることが可能となり、第１プロセスと第２プロセスとの間で、物理メモリ空間の情報の少なくとも一部を共有することができる。従って、複数プロセスを処理する際に、メモリコピーを最小限に抑えることが可能となる。
【００１７】
また、プロセス間通信により、前記第１プロセスの前記プロセス管理表のデータ領域情報を前記第２プロセスの前記プロセス管理表へ送るプロセス間通信部を備えるものであってもよい。かかる構成によれば、プロセス間通信により第１プロセスのプロセス管理表のデータ領域情報を第２プロセスの前記プロセス管理表へ送ることができるため、プロセス管理表の更新処理を簡素に行うことができる。
【００１８】
また、前記第１プロセスの処理後の前記物理メモリ空間におけるデータ領域を前記第２プロセスの処理開始時に引き続き前記物理メモリ空間に配置するものであってもよい。かかる構成によれば、第１プロセスの処理後の物理メモリ空間におけるデータ領域が第２プロセスの処理開始時に引き続き物理メモリ空間に配置されているため、更新された第２プロセスのプロセス管理表に基づいて第１プロセスの処理後のデータに直接アクセスすることが可能となる。
【００１９】
また、複数の演算処理部を備え、前記第１プロセスの処理後、前記第１プロセスを処理した演算処理部の前記物理メモリ空間のプログラム領域に、前記第２プロセスのプログラムをロードして、前記第２プロセスを処理するものであってもよい。かかる構成によれば、複数の演算処理部を備えた分散システムにおいて、第１プロセスの処理後、第１プロセスを処理した演算処理部の物理メモリ空間のプログラム領域に、第２プロセスのプログラムがロードされる。従って、更新された第２プロセスのプロセス管理表に基づいて、物理メモリ空間にロードされた第２プロセスのプログラムへのアクセスが可能になるとともに、物理メモリ空間に格納された第１プロセスの処理後のデータにアクセスすることが可能となる。
【００２０】
また、上記課題を解決するために、本発明の別の観点によれば、プロセス管理表に基づいて複数のプロセスを処理する情報処理方法であって、第１プロセスの前記プロセス管理表に基づいて、前記第１プロセスを処理するステップと、前記第１プロセスの処理後、前記第１プロセスの前記プロセス管理表のデータ領域情報を第２プロセスの前記プロセス管理表のデータ領域情報に複写して前記第２プロセスのプロセス管理表を更新するステップと、前記第１プロセスの処理後、更新された前記第２プロセスの前記プロセス管理表に基づいて、前記第１プロセスとの間で物理メモリ空間の情報の少なくとも一部を共有して前記第２プロセスを処理するステップと、を備える情報処理方法が提供される。
【００２１】
上記構成によれば、プロセス管理表に基づいて複数のプロセスを処理する情報処理方法において、第１プロセスのプロセス管理表に基づいて、第１プロセスが処理された後、第１プロセスのプロセス管理表のデータ領域情報が第２プロセスのプロセス管理表のデータ領域情報に複写されて第２プロセスのプロセス管理表が更新される。そして、第１プロセスの処理後、更新された第２プロセスのプロセス管理表に基づいて、前記第１プロセスとの間で物理メモリ空間の情報の少なくとも一部を共有して第２プロセスが処理される。更新された第２プロセスのプロセス管理表を用いることで、第１プロセスのデータ領域情報に直接アクセスすることが可能となり、第１プロセスと第２プロセスとの間で、物理メモリ空間の情報の少なくとも一部を共有することができる。従って、複数プロセスを処理する際に、メモリコピーを最小限に抑えることが可能となる。
【００２２】
また、上記課題を解決するために、本発明の別の観点によれば、プロセス管理表に基づいて複数のプロセスを処理するためのプログラムであって、第１プロセスの前記プロセス管理表に基づいて、前記第１プロセスを処理する手段、前記第１プロセスの処理後、前記第１プロセスの前記プロセス管理表のデータ領域情報を第２プロセスの前記プロセス管理表のデータ領域情報に複写して前記第２プロセスのプロセス管理表を更新する手段、前記第１プロセスの処理後、更新された前記第２プロセスの前記プロセス管理表に基づいて、前記第１プロセスとの間で物理メモリ空間の情報の少なくとも一部を共有して前記第２プロセスを処理する手段、としてコンピュータを機能させるためのプログラムが提供される。
【００２３】
上記構成によれば、プロセス管理表に基づいて複数のプロセスを処理するためのプログラムにおいて、第１プロセスのプロセス管理表に基づいて、第１プロセスが処理された後、第１プロセスのプロセス管理表のデータ領域情報が第２プロセスのプロセス管理表のデータ領域情報に複写されて第２プロセスのプロセス管理表が更新される。そして、第１プロセスの処理後、更新された第２プロセスのプロセス管理表に基づいて、前記第１プロセスとの間で物理メモリ空間の情報の少なくとも一部を共有して第２プロセスが処理される。更新された第２プロセスのプロセス管理表を用いることで、第１プロセスのデータ領域情報に直接アクセスすることが可能となり、第１プロセスと第２プロセスとの間で、物理メモリ空間の情報の少なくとも一部を共有することができる。従って、複数プロセスを処理する際に、メモリコピーを最小限に抑えることが可能となる。
【発明の効果】
【００２４】
本発明によれば、簡素な構成で複数のプロセスによる処理を行うことが可能な情報処理装置、情報処理方法及びプログラムを提供することが可能となる。
【発明を実施するための最良の形態】
【００２５】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００２６】
（第１の実施形態）
図１は、本発明の各実施形態に係る情報処理装置の機能ブロック構成を示す模式図である。図１に示すように、情報処理装置は、プロセスＡ処理部１０、プロセスＢ処理部１２、物理メモリ空間１４、プロセス管理表更新部１６、プロセス間通信部１８を有して構成されている。プロセスＡ処理部１０は、プロセスＡのプロセス管理表を含み、プロセスＢ処理部１２は、プロセスＢのプロセス管理表を含んでいる。情報処理装置は、ＣＰＵ（演算処理部）と、メモリ等の記憶部、及びこれに格納されたＯＳを有するコンピュータシステムから構成される。ＣＰＵは、物理メモリ空間を割り当てるためメモリ管理ユニット（MMU）を備えている。また、各実施形態の処理を実現するプログラムは、情報処理装置の内部のメモリ、又は外部の記録媒体に格納されることができる。本発明の各実施形態において、個々のプロセスＡ，Ｂの処理の際に物理メモリ空間にアクセスする基本的な動作は、図１２と同様に行われる。
【００２７】
図２は、本発明の第１の実施形態における、ＯＳによるプロセス管理表の更新を示す模式図である。本実施形態では、複数プロセスの逐次実行によってデータを処理する場合に、前段プロセス（プロセスＡ）によって処理されたデータをそのまま、後段プロセス（プロセスＢ）に受け渡す処理を行う。このため、図２に示すように、プロセスＡのプロセス管理表のデータ領域情報は、プロセスＢのデータ管理表に受け渡されて、プロセスＢのプロセス管理表に書き込まれる。これにより、プロセスＢのプロセス管理表が更新される。
【００２８】
以下、２つのプロセスＡ、プロセスＢを処理する場合について説明する。
【００２９】
図３（Ａ）は、ＯＳで行われる処理を示すフローチャートである。また、図３（Ｂ）は、プロセスＡの処理を示すフローチャートであり、図３（Ｃ）は、プロセスＢの処理を示すフローチャートである。また、図４は、図３の処理において、物理メモリ空間の状態を示す模式図である。図４において、左側に示す図は時刻ｔ＝０における物理メモリ空間の状態を示しており、右側に示す図は時刻ｔ＝αにおける物理メモリ空間の状態を示している。
【００３０】
図３（Ａ）に示す処理では、プロセスＡの処理を行うに際し、ＯＳは、プロセスＡのプロセス管理表を作成し、プロセスＡのバイナリプログラムをメモリ上のプログラム領域１００に配置し、プロセスＡを起動する（ステップＳ１）。
【００３１】
プロセスＡの処理では、図４に示すように、先ずメモリ内でプロセスＡのデータ領域１０２(=8Mbytes)を確保し、確保したデータ領域１０２に対して共有メモリ領域１０４(=8Mbytes)からデータをコピーする（ステップＳ２５）。そして、コピーしたデータに対してプロセスＡによる所定の処理を行う。
【００３２】
図４において、データ領域１０２の確保は、図３（Ｂ）のステップＳ１１における、データバッファ（１９２０×１０８０配列）の確保に相当している。そして、ステップＳ１２において、共有メモリ領域１０４からデータ領域（データバッファ）１０２へのコピーが行われる。そして、ステップＳ１３において、データ領域１０２へコピーしたデータに対して、プロセスＡのバイナリプログラムにより、プロセスＡによる所定の処理が行われる。
【００３３】
ステップＳ１３によるプロセスＡの処理完了時点では、データ領域１０２にはプロセスＡの処理済みのデータが格納されており、この時点でＯＳ処理は特に行われないため、図３（Ａ）のステップＳ２において、プロセスＡのデータ領域１０２の情報は結果的に開放されないこととなる。ステップＳ１３でプロセスＡの処理が完了すると、プロセスＡはＯＳに対してプロセスＡの処理完了通知を行う。
【００３４】
ＯＳは、プロセスＡから完了通知を受けると、図３（Ａ）のステップＳ３において、プロセスＢのプログラムをロードする。この際、図４のメモリ空間では、プロセスＢのプログラム領域１０６がＯＳによって割り当てられ、プロセスＢのバイナリプログラムが配置される。次のステップＳ４では、プロセスＡのプロセス管理表のデータ領域情報をプロセスＢのプロセス管理表に更新する。これにより、図２に示すように、プロセスＡのプロセス管理表のデータ領域情報がプロセスＢのプロセス管理表のデータ領域情報にコピーされ、プロセスＢのプロセス管理表において、データ領域情報がプロセスＡのデータ領域情報とされる。従って、この時点では、プロセスＢのプロセス管理表には、プロセスＢのプログラム領域情報とプロセスＡのデータ領域情報が記載されていることとなる。
【００３５】
その後、ステップＳ５でプロセスＢの起動が行われ、図３（Ｃ）に示すプロセスＢの処理が行われる。この際、ステップＳ２１で確保されるデータバッファは、図４のｔ＝αにおけるデータ領域１０２に相当し、プロセスＡの処理後のデータ領域１０２と同一である。ステップＳ２２のプロセスＢの処理において、ＯＳより起動されたプロセスＢでは、プログラム領域にアクセスするときはプロセス管理表のプロセスＢのプログラムセグメントにアクセスし、プロセスＢのプログラム領域１０６にアクセスする。一方、データ領域にアクセスするときには、プロセスＢのプロセス管理表にプロセスＡのデータ領域情報が記載されているため、プロセスＡの処理後のデータ領域１０２（時刻ｔ＝αの時点でのプロセスＢのデータ領域１０２）にアクセスすることが可能となる。
【００３６】
プロセスＢの処理後、データ領域１０２にはプロセスＢの処理済みのデータが格納される。次のステップＳ２３では、データ領域１０２に格納されたプロセスＢの処理済みのデータを共有メモリ領域１０４にコピーする。この処理は、図４のステップＳ２６の処理に対応している。これにより、プロセスＢの処理が完了する。プロセスＢは処理完了をＯＳに通知する。
【００３７】
以上説明したように本実施形態によれば、プロセスＡの完了後、プロセスＡのデータ領域情報がプロセスＢのプロセス管理表にコピーされる。これにより、プロセスＢの処理時に、プロセスＡの処理後のデータ領域１０２に直接アクセスすることが可能となる。従って、プロセスＡの完了後、プロセスＡのデータ領域から共有メモリへのコピーが不要となり、また、プロセスＢの起動の際に、共有メモリからプロセスＢのデータ領域へのコピーが不要となる。従って、プロセスＡ、プロセスＢの処理において、データ領域のコピーを最小限に抑えることができ、多数のプロセスでシーケンシャルにデータ処理を行う場合等において、メモリバンド幅への影響を低減することが可能となる。これにより、メモリ転送量を削減することでき、より少ないメモリ転送量のメモリシステムを採用することができ、システムの小型化、低コスト化が可能となる。また、従来の方法と比べてソフトウエア処理によるデータ処理の性能を向上させることができる。
【００３８】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。第１の実施形態では、ＯＳがプロセス切替時にプロセス管理表の変更を行うようにしたが、第２の実施形態は、プロセス間通信により、プロセス管理表のデータ領域情報の通知をプロセス間相互で行うものである。プロセス間通信は、図１に示すプロセス間通信部１６により行うことができる。これにより、ＯＳがプロセス切替時にプロセス管理表の変更を行わなくても、プロセス同士のプロセス通信によってデータ領域情報を通知することが可能となる。
【００３９】
例えば、プロセスＡの処理完了時に、プロセス通信でプロセスＢにプロセスＡのデータ領域情報を通知する。プロセスＢでは、処理開始前にプロセスＡから通知されたデータ領域情報により、プロセスＢ自身のプロセス管理表を更新する。この機能を実現するためには、プロセスからプロセス管理表にアクセス可能なＯＳコールが必要となる。
【００４０】
図５は、第２の実施形態において、プロセス間通信により、プロセスＡのプロセス管理表のデータ領域情報がプロセスＢのプロセス管理表にコピーされる状態を示す模式図である。プロセス間通信の結果、プロセスＢのプロセス管理表には、プロセスＢのプログラム領域情報とプロセスＡのデータ領域情報が登録されている。
【００４１】
図６は、第２の実施形態において、プロセスＡの処理とプロセスＢの処理を示すフローチャートである。プロセスＡの処理では、図６（Ａ）に示すように、先ずステップＳ３１において、図３（Ｂ）のステップＳ１２と同様に、共有メモリ領域からデータバッファ（データ領域１０２）へのコピーが行われる。図３（Ｂ）と同様に、データバッファへのコピーは、データバッファ（データ領域１０２）を確保した後に行われる。次のステップＳ３２では、データバッファへコピーしたデータに対して、プロセスＡによる所定の処理が行われる。
【００４２】
次のステップＳ３３では、プロセス間通信により、プロセスＡのデータ領域情報をプロセス通信によりプロセスＢに送信する。
【００４３】
プロセスＢの処理では、図６（Ｂ）に示すように、先ずステップＳ４１において、プロセス間通信により、プロセスＢからプロセスＡのデータ領域情報を受信する。次のステップＳ４２では、ステップＳ４１で受信した情報に基づいて、プロセスＢのプロセス管理表のデータ領域情報を更新する。これにより、図５に示すように、プロセスＢのプロセス管理表には、プロセスＢのプログラム領域情報とプロセスＡのデータ領域情報が記載された状態となる。
【００４４】
次のステップＳ４３では、プロセスＢの処理が行われる。この際、物理メモリ空間では、図４のｔ＝αの場合と同様に、データ領域１０２には、プロセスＡの処理後のデータが確保されている。次のステップＳ４４では、図３（Ｃ）のステップＳ２３と同様に、プロセスＢの処理済みのデータを共有メモリ領域１０２にコピーする。これにより、プロセスＢの処理が完了する。
【００４５】
第２の実施形態においては、プロセスＡのデータ領域情報をプロセス間通信によりプロセスＢへ通知するため、プロセスＡのデータ領域情報をプロセスＢのプロセス管理表にコピーすることができる。これにより、プロセスＢの処理時に、プロセスＡの処理後のデータ領域１０２に直接アクセスすることが可能となる。従って、プロセスＡの完了後、プロセスＡのデータ領域から共有メモリへのコピーが不要となり、また、プロセスＢの起動の際に、共有メモリからプロセスＢのデータ領域へのコピーが不要となる。従って、プロセスＡ、プロセスＢの処理において、データ領域のコピーを最小限に抑えることができ、多数のプロセスでシーケンシャルにデータ処理を行う場合等において、メモリバンド幅への影響を低減することが可能となる。
【００４６】
（第３の実施形態）
次に、本発明の第３の実施形態について説明する。第３の実施形態は、本発明を複数のＣＰＵを有する分散システムに適用したものである。
【００４７】
本実施形態は、複数ＣＰＵを有し、それぞれのＣＰＵが固有のローカルメモリを持ち、ローカルネットワークによって接続されている分散システムにおいて、各ＣＰＵにプロセスを割り当ててシーケンシャルにデータ処理を行うような場合に、メモリ転送量を軽減するものである。
【００４８】
図７は、第３の実施形態の比較例として、従来の処理を示す模式図であって、物理メモリ空間を示している。従来のシステムでは、図７に示すように、ＣＰＵ毎に別プロセスを処理する場合、ＣＰＵ Ａで行ったプロセスＡのデータ処理結果（データ領域１１２の情報）を、ＣＰＵ Ａのローカルメモリから共有メモリ１１４にメモリコピーする。そして、共有メモリ１１４から別ＣＰＵ（ＣＰＵ Ｂ）のローカルメモリのデータ領域１１６にメモリコピーする必要がある。この場合、搭載ＣＰＵの数が増えるほど、メモリコピーの回数が増え、内部のメモリバンド幅を大きくしないと複数ＣＰＵによる処理性能を向上することができない。
【００４９】
図８は、第３の実施形態による処理を示す模式図であって、物理メモリ空間を示している。第３の本実施形態では、図８に示すように、ＣＰＵ ＡでプロセスＡの処理を行った後、その処理結果のデータ領域１２２をＣＰＵ Ａのローカルメモリに保持した状態で、ＣＰＵ Ａのプログラム領域１２４のみをロードし、プログラム領域１２４にプロセスＢのプログラム領域情報をロードする。
【００５０】
プログラム領域１２４にプロセスＢのプログラム領域情報をロードした後は、ＣＰＵ ＡのローカルメモリのプロセスＢのプログラム領域情報１２４、およびプロセスＡのデータ領域情報１２２により、プロセスＢの処理を行う。これにより、図７で説明したような、ＣＰＵ Ａのローカルメモリのデータ領域から共有メモリへのコピー、及び共有メモリ１１４からＣＰＵ Ｂのローカルメモリへのコピーが不要となり、データのメモリコピーを大幅に削減できる。
【００５１】
プログラム領域１２４にプロセスＢのプログラム領域情報をロードしたことに伴い、図２と同様にプロセスＢのプログラム管理表の更新が行われる。これにより、ＣＰＵ ＡでプロセスＢの処理を行う際に、プロセスＢのプログラム領域情報１２４、およびプロセスＡのデータ領域情報１２２により、プロセスＢの処理を行うことができる。
【００５２】
通常、プログラムバイナリサイズは数１００bytesから数１００kbytes程度であり、そのサイズはデータ領域情報のデータサイズに比べて小さい。第３の実施形態では、ＣＰＵ Ａのプログラム領域にプロセスＢのプログラム領域情報をロードすることにより、データ領域情報をメモリコピーする場合よりもコピーするデータのサイズをより小さくすることができる。従って、大幅な内部メモリバンド幅の占有率を下げることが可能となる。更に、プロセス切替時に共有メモリへのデータコピーが不要となるため、共有メモリのサイズを軽減することも可能となる。また、分散システムにおいて内蔵ＣＰＵ数の増加に伴う内部メモリバンド幅の増加を確実に抑えることができる。
【００５３】
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明は係る例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【図面の簡単な説明】
【００５４】
【図１】本発明の各実施形態に係る情報処理装置の機能ブロック構成を示す模式図である。
【図２】第１の実施形態における、ＯＳによるプロセス管理表の更新を示す模式図である。
【図３】ＯＳで行われる処理、プロセスＡの処理、プロセスＢの処理を示すフローチャートである。
【図４】図２の処理において、物理メモリ空間の状態を示す模式図である。
【図５】第２の実施形態において、プロセス間通信により、プロセスＡのプロセス管理表のデータ領域情報がプロセスＢのプロセス管理表にコピーされる状態を示す模式図である。
【図６】第２の実施形態において、プロセスＡの処理とプロセスＢの処理を示すフローチャートである。
【図７】第３の実施形態の比較例として、従来の処理を示す模式図である。
【図８】メモリ空間において、第３の実施形態における処理を示す模式図である。
【図９】プロセス管理表にプログラム領域情報とデータ領域情報が登録された状態を示す模式図である。
【図１０】ＯＳによるプロセスＡ、プロセスＢの従来の処理を説明するためのフローチャートである。
【図１１】プロセスＡ，プロセスＢの処理が個別に行われる様子を示す模式図である。
【図１２】プロセスＡが物理メモリ空間のプログラム領域およびデータ領域にアクセスする様子を示す模式図である。
【図１３】メモリ空間において、プロセスＡ，Ｂの処理の開始時に共有メモリ領域からデータを読み込み、処理後にデータを共有メモリ領域に書き出す様子を示す模式図である。
【図１４】従来のシステムにおいて、プロセスＡ、プロセスＢのそれぞれの処理を示すフローチャートである。
【符号の説明】
【００５５】
１０    プロセスＡ処理部
１２    プロセスＢ処理部
１４    物理メモリ空間
１６    プロセス管理表更新部
１８    プロセス間通信部
【図１】
2009031871.tif 000003
【図２】
2009031871.tif 000004
【図３】
2009031871.tif 000005
【図４】
2009031871.tif 000006
【図５】
2009031871.tif 000007
【図６】
2009031871.tif 000008
【図７】
2009031871.tif 000009
【図８】
2009031871.tif 000010
【図９】
2009031871.tif 000011
【図１０】
2009031871.tif 000012
【図１１】
2009031871.tif 000013
【図１２】
2009031871.tif 000014
【図１３】
2009031871.tif 000015
【図１４】
2009031871.tif 000016