(57)【特許請求の範囲】
【請求項１】
複数のアプリケーションプログラムが属するジョブを実行する情報処理装置であって、
前記アプリケーションプログラムの実行のために利用されるメモリと、
前記ジョブに属するアプリケーションプログラムの実行を管理するアプリケーションプログラム実行管理手段と、
前記アプリケーションプログラム毎に、前記アプリケーションプログラムのために割り当てるメモリ領域を、該アプリケーションプログラムが属するジョブと、割り当てた前記メモリ領域を特定するためのメモリ領域情報とに関連付けて保持するテーブルを用いて管理するメモリアクセス管理手段とを備え、
前記メモリアクセス管理手段は、前記ジョブが完了した際に、当該完了したジョブに属するアプリケーションプログラムのメモリ領域情報であって、前記テーブルで保持されている他のジョブに属していないメモリ領域情報を前記テーブルから削除する
ことを特徴とする情報処理装置。
【請求項２】
前記メモリアクセス管理手段は、さらに、
前記アプリケーションプログラムについて割り当てたメモリ領域を解放するか否かを判定し、
該メモリ領域を解放する場合に前記メモリ領域情報を前記テーブルから削除し、解放しない場合に前記メモリ領域情報を前記テーブルに残す
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記メモリアクセス管理手段は、前記メモリ領域を解放するか否かを、該メモリ領域が割り当てられたアプリケーションプログラムからの解放要求を受信したか否かに基づいて判定することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記アプリケーションプログラムに対してメモリ領域の割当てを行うメモリ管理手段をさらに備え、
前記メモリアクセス管理手段は、前記テーブルに登録されているメモリ領域情報を該テーブルから削除する場合に、削除しようとするメモリ領域情報に対応するメモリ領域の前記割当ての解除を前記メモリ管理手段に指示することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
複数のアプリケーションプログラムが属するジョブを実行し、前記アプリケーションプログラムの実行のために利用されるメモリを備える情報処理装置の制御方法であって、
アプリケーションプログラム実行管理手段が、前記ジョブに属するアプリケーションプログラムの実行を管理するアプリケーションプログラム実行管理工程と、
メモリアクセス管理手段が、前記アプリケーションプログラム毎に、前記アプリケーションプログラムのために割り当てるメモリ領域を、該アプリケーションプログラムが属するジョブと、割り当てた前記メモリ領域を特定するためのメモリ領域情報とに関連付けて保持するテーブルを用いて管理するメモリアクセス管理工程とを有し、
前記メモリアクセス管理工程において、
前記ジョブが完了した際に、当該完了したジョブに属するアプリケーションプログラムのメモリ領域情報であって、前記テーブルで保持されている他のジョブに属していないメモリ領域情報を、前記テーブルから削除する
ことを特徴とする情報処理装置の制御方法。
【請求項６】
複数のアプリケーションプログラムが属するジョブを実行する情報処理装置であって、
前記アプリケーションプログラムの実行のために利用されるメモリと、
前記ジョブに属するアプリケーションプログラムの実行を管理するアプリケーションプログラム実行管理手段と、
前記アプリケーションプログラム毎に、前記アプリケーションプログラムのために割り当てるメモリ領域を、該アプリケーションプログラムが属するジョブと、割り当てた前記メモリ領域を特定するためのメモリ領域情報とに関連付けて保持するテーブルを用いて管理するメモリアクセス管理手段とを備え、
前記メモリアクセス管理手段は、前記ジョブが完了した際に、当該完了したジョブに属するアプリケーションプログラムのメモリ領域情報を前記テーブルから削除することでメモリ解放を実施する
ことを特徴とする情報処理装置。
【請求項７】
複数のアプリケーションプログラムが属するジョブを実行し、前記アプリケーションプログラムの実行のために利用されるメモリを備える情報処理装置の制御方法であって、
アプリケーションプログラム実行管理手段が、前記ジョブに属するアプリケーションプログラムの実行を管理するアプリケーションプログラム実行管理工程と、
メモリアクセス管理手段が、前記アプリケーションプログラム毎に、前記アプリケーションプログラムのために割り当てるメモリ領域を、該アプリケーションプログラムが属するジョブと、割り当てた前記メモリ領域を特定するためのメモリ領域情報とに関連付けて保持するテーブルを用いて管理するメモリアクセス管理工程とを有し、
前記メモリアクセス管理工程において、
前記ジョブが完了した際に、当該完了したジョブに属するアプリケーションプログラムのメモリ領域情報を、前記テーブルから削除することでメモリ解放を実施する
ことを特徴とする情報処理装置の制御方法。
【請求項８】
コンピュータに請求項５又は７に記載の制御方法を実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、その制御方法、及びコンピュータプログラムに関し、特にシステムのメモリリークの検出によるシステム支援に関する。
【背景技術】
【０００２】
半導体はシリコンのインゴットの切断、洗浄、成膜、レジストコーティング、露光、現像、エッチング、レジスト剥離、洗浄、組立、検査などの工程を経て作られる。この工程の中で半導体の集積度を決定付ける最も重要な技術が、微細な回路パターンをウェハに焼き込む露光技術であり、半導体露光装置がその役割を担う。そのため、半導体露光装置は、集積度の増加に伴い、装置上の各駆動機構や、電子制御部品等が複雑かつ高精度なものになっており、組み込まれるソフトウェアの規模が拡大している。
【０００３】
ソフトウェアプログラミングにおいて、一時的な作業領域やデータ保存領域としてメモリ領域を確保し、不要になった時点で再びメモリ領域を解放するといったことがしばしば行われる。アプリケーションプログラムが確保したメモリ領域の解放を忘れていると、そのメモリ領域はどこからも使用されることなく、システムのメモリ資源を無駄に占有し続けることになる。このメモリ領域の解放漏れをメモリリークと呼ぶ。メモリリークは、小規模もしくは、連続稼動時間が短いシステムにおいては、ほとんど大きな問題にはならない。
【０００４】
しかし、半導体露光装置においては、システムの規模が大きく、且つ、数週間程度連続で稼動し続けることが一般的である。そのため、メモリリークが発生すると、メモリ資源を次々と消費し続けシステムのパフォーマンスを落とすことになり、最悪の場合には、システムが停止する場合も有り得る。半導体露光装置が停止すると、半導体製造工程の全体に大きな影響を与えてしまう。そこで、メモリリークを解消する必要がある。
【０００５】
メモリリークを解消するため、プログラミング言語（Ｊａｖａ（登録商標）やＣ＃など）によってはメモリ解放をオペレーティングシステムに委ねるガベージコレクションが取り入れられている。また、Ｃ言語のようなガベージコレクションが組み込まれていないプログラミング言語においても、メモリリークを解消する様々な手法が提案されている。
【０００６】
例えば、特許文献１には、メモリリーク領域を判定しオペレータに提示する方法が提案されている。この方法ではまず、アプリケーションプログラムがメモリ領域を確保する際、確保したメモリ領域情報を保存する。そして、メモリ領域を解放する際には、該当するメモリ領域情報を削除し、アプリケーションプログラム終了時に、確保したメモリ領域情報が残っている場合は、そのメモリ領域をメモリリーク領域と判定する。
【０００７】
また、特許文献２では、アプリケーションプログラムが獲得したメモリ領域の最大生存時間を管理し、この時間を過ぎても解放されないメモリ領域をメモリリーク領域と判定し、その領域を解放することでメモリリークを防止する方法が提案されている。
【特許文献１】特許第３７３５４８４号公報
【特許文献２】特開２００２−１０８６９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
半導体露光装置においては、予めオペレータ等が露光処理の処理手順及び露光パラメータを記述したレシピ（Ｒｅｃｉｐｅ）と呼ばれる設定ファイルとウェハ枚数などの情報とを用いてジョブを実行する。これにより、レチクルとウェハとが半導体露光装置内にロードされて処理が行われ、レシピ内に記述された処理が指定ウェハ枚数分終了した時点でジョブは完了する。レシピ内に記述された処理を実現するために、半導体露光装置では、複数のアプリケーションプログラムが協調して動作することが一般的である。
【０００９】
しかし、特許文献１に開示されている方法では、個別のアプリケーションプログラムのメモリリークを検出することができるが、複数のアプリケーションプログラム間で同一のメモリ領域を共有して使用する場合においては、メモリリークを解消できない。
【００１０】
例えば、アプリケーションプログラムＡが確保したメモリ領域をアプリケーションプログラムＢも参照して使用しているとする。先にアプリケーションプログラムＡが終了する場合、このメモリ領域を解放してしまうと、アプリケーションプログラムＢに影響を与えてしまう。そこで、アプリケーションプログラムＡを終了しても半導体露光装置はこのメモリ領域を解放しないでおく。しかし、アプリケーションプログラムＢが終了したときにもこのメモリ領域を解放しないと、このメモリ領域はメモリリークとして、どのアプリケーションプログラムも使用できなくなる。
【００１１】
このような場合にアプリケーションプログラムＡにこの方法を適用すると、確かに解放していないメモリ領域を検出することはできる。しかし、いつメモリリーク領域を解放してよいかをこの方法だけでは判断できない。また、アプリケーションプログラムＢにこの方法を適用しても、アプリケーションプログラムＢにとって対象のメモリ領域は自ら確保した領域ではないため、メモリリーク領域としては検出されない。
【００１２】
以上の理由から、特許文献１に開示されている方法を、複数のアプリケーションプログラム間で同一のメモリ領域を共有して使用する場合がある半導体露光装置のメモリリークの解消に適用することは困難である。
【００１３】
一方、特許文献２に開示されている方法では、アプリケーションプログラムが獲得したメモリ領域の最大生存時間を管理し、この時間を過ぎても解放されないメモリ領域をメモリリーク領域と判定する。そのため、複数のアプリケーションプログラム間でメモリ領域を共有して使用する場合においても、メモリリークを検出し、そのメモリリーク領域を解放することができる。しかし、連続稼動時間が長い半導体露光装置において最大生存時間を見積もることは難しく、特許文献２に開示されている方法を半導体露光装置のメモリリークの解消に適用することは困難である。
【００１４】
本発明は、上記実状に鑑みてなされたもので、半導体露光装置におけるメモリリークを検出し、さらにそのメモリリーク領域を解放することを可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明に係る情報処理装置は、複数のアプリケーションプログラムが属するジョブを実行する情報処理装置であって、前記アプリケーションプログラムの実行のために利用されるメモリと、前記ジョブに属するアプリケーションプログラムの実行を管理するアプリケーションプログラム実行管理手段と、前記アプリケーションプログラム毎に、前記アプリケーションプログラムのために割り当てるメモリ領域を、該アプリケーションプログラムが属するジョブと、割り当てた前記メモリ領域を特定するためのメモリ領域情報とに関連付けて保持するテーブルを用いて管理するメモリアクセス管理手段とを備え、前記メモリアクセス管理手段は、前記ジョブが完了した際に、当該完了したジョブに属するアプリケーションプログラムのメモリ領域情報であって、前記テーブルで保持されている他のジョブに属していないメモリ領域情報を前記テーブルから削除することを特徴とする。本発明に係る別の情報処理装置は、複数のアプリケーションプログラムが属するジョブを実行する情報処理装置であって、前記アプリケーションプログラムの実行のために利用されるメモリと、前記ジョブに属するアプリケーションプログラムの実行を管理するアプリケーションプログラム実行管理手段と、前記アプリケーションプログラム毎に、前記アプリケーションプログラムのために割り当てるメモリ領域を、該アプリケーションプログラムが属するジョブと、割り当てた前記メモリ領域を特定するためのメモリ領域情報とに関連付けて保持するテーブルを用いて管理するメモリアクセス管理手段とを備え、前記メモリアクセス管理手段は、前記ジョブが完了した際に、当該完了したジョブに属するアプリケーションプログラムのメモリ領域情報を前記テーブルから削除することでメモリ解放を実施することを特徴とする。
【発明の効果】
【００１６】
本発明により、メモリリークを確実に検出し、検出されたメモリリーク領域を解放することができるため、メモリリークが原因による半導体露光装置のシステムダウンを防止し、半導体製造の生産性を向上させることができる。また、個々のジョブのアプリケーションプログラムごとに、メモリリーク量とメモリ利用最大値とを保持するため、半導体製造装置ソフトウェアのメンテナンス性を向上させることができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施形態を添付の図面を参照しつつ説明する。しかし、実施形態は本発明の技術的範囲を限定するものではない。
【００１８】
＜第１の実施形態＞
まず、図１を用いて本発明に係る半導体露光装置の構成を説明する。図１は、本発明の実施形態に係る半導体露光装置の一例を示すブロック図である。
【００１９】
半導体露光装置メインアプリケーションプログラム１３０は、半導体露光装置１０に対して複数のジョブを投入する。複数のジョブは、半導体露光装置に連続して投入されてもよいし、同時に投入されてもよい。ジョブは、一つ以上のアプリケーションプログラム１１０で構成される。アプリケーションプログラム１１０は、常駐型アプリケーションプログラム１１１と非常駐型アプリケーションプログラム１１２とに分類される。両者の違いは後述する。
【００２０】
本発明の実施形態に係るシステム支援装置１００は、アプリケーションプログラム実行管理機構１０１、メモリアクセス管理テーブル１０２、メモリアクセス管理機構１０３、及びメモリ利用管理テーブル１０４から構成される。
【００２１】
アプリケーションプログラム実行管理機構１０１は、半導体露光装置メインアプリケーションプログラム１３０から与えられるジョブ管理情報に基づき、アプリケーションプログラム１１０を実行する。各アプリケーションプログラム１１０は、直列に実行されてもよいし、並列に実行されてもよい。また、アプリケーションプログラム１１０同士がメモリ１２０上の同一のメモリ領域を共有して使用してもよい。ただし、異なるジョブに属するアプリケーション同士がメモリ１２０上の同一のメモリ領域を共有して使用することはないものとする。異なるジョブに属するアプリケーション同士にメモリ１２０上の同一のメモリ領域を共有して使用させたい場合は、それらのジョブをまとめた一つのジョブを定義すればよい。
【００２２】
メモリアクセス管理テーブル１０２は、各アプリケーションプログラム１１０に対して割り当てられたメモリ領域を特定する情報を保持する。このメモリ領域を特定する情報を、以下ではメモリ領域情報をいう。
【００２３】
メモリアクセス管理機構１０３は、アプリケーションプログラム１１０に対するメモリ１２０のメモリ領域の割当てを管理し、メモリアクセス管理テーブル１０２をメモリ領域の割当て状況に応じて更新する。例えば、あるアプリケーションプログラム１１０に対して新規のメモリ領域を割り当てた場合に、メモリアクセス管理テーブル１０２に割り当てたメモリ領域情報を追加する。また、あるアプリケーションプログラム１１０に対して割り当てていたメモリ領域を解放する場合には、メモリアクセス管理テーブル１０２から、対応したメモリ領域情報を削除する。
【００２４】
メモリアクセス管理機構１０３はさらに、ジョブが完了した後もメモリアクセス管理テーブル１０２にそのジョブで実行したアプリケーションプログラム１１０に割り当てたメモリ領域情報が残存している場合は、そのメモリ領域をメモリリーク領域と判断する。すでにジョブは完了しているため、このメモリリーク領域を解放したとしても、そのジョブに含まれるアプリケーションプログラム１１０に影響をあたえることはない。また、他のジョブに含まれるアプリケーションプログラム１１０は、このメモリリーク領域を使用していることはないため、解放してもやはり影響を受けない。そこで、メモリリーク領域に相当するメモリ領域情報をメモリアクセス管理テーブル１０２から削除することにより、該メモリリーク領域を解放して、このジョブによるメモリリークを完全に解消する。
【００２５】
メモリ利用管理テーブル１０４は、ジョブごとに各アプリケーションプログラム１１０のメモリリーク量とメモリ最大使用量とを保持する。メモリ最大使用量を算出することで、例えば、現在のメモリ１２０の容量で、同時に何個までのジョブを実行できるかを求めることができる。また、アプリケーションに対して割り当てるべきメモリ領域のサイズを決定することができる。
【００２６】
図７は半導体露光装置１０の構成例を示すブロック図である。なお、図７は、本発明の実施形態に対応する図１の構成を実現するための最小限の構成を示しており、半導体露光処理に係わるその他の機構については説明の簡単のために省略している。
【００２７】
マイクロプロセッサであるＣＰＵ７０１は、ＲＯＭ７０３、ハードディスク（ＨＤ）７１２、外部メモリドライブ７１１にセットされた記憶メディアに記憶されたプログラムやデータなどに基づき、半導体露光装置１０を制御する。
【００２８】
ＲＡＭ７０２は、ＣＰＵ７０１のワークエリアとして機能し、ＲＯＭ７０３やＨＤ７１２等に格納されたプログラムを保持する。ＲＡＭ７０２は、図１のメモリ１２０としても機能する。
【００２９】
ＲＯＭ７０３、外部メモリドライブ７１１にセットされた記憶メディア或いは、ＨＤ７１２には、後述するフローチャートに示されるような、ＣＰＵ７０１により実行されるプログラムなどが記憶されている。また、アプリケーションプログラム１１０、半導体露光装置メインアプリケーションプログラム１３０、ジョブ管理テーブル等も格納する。
【００３０】
７０５はキーボードコントローラ（ＫＢＣ）で、キーボード（ＫＢ）７０９や図示しないマウスなどのポインティングデバイスからの入力を制御する。７０６はディスプレイコントローラ（ＤＰＣ）で、ディスプレイ７１０の表示を制御する。７０７はディスクコントローラ（ＤＫＣ）で、ＨＤ７１２および外部メモリドライブ７１１のアクセスを制御し、それらの記憶メディアに対して各種プログラム、並びに、フォントデータ、ユーザファイルおよび編集ファイルなどの各種データを読み書きする。７０８はプリンタコントローラ（ＰＲＴＣ）で、所定の双方向性インタフェイス７２１を介してプリンタ７２２に接続され、プリンタ７２２との間の通信制御を実行する。
【００３１】
なお、ＣＰＵ７０１は、例えばＲＡＭ７０２上に割り当てられた表示情報領域あるいは専用のビデオメモリ（ＶＲＡＭ）へのアウトラインフォントの展開（ラスタライズ）処理を実行し、ディスプレイ７１０上での表示を可能にする。また、ＣＰＵ７０１は、ディスプレイ７１０上のマウスカーソルなどにより指示されるコマンドに基づいて、登録された種々のウィンドウを開き、種々のデータ処理を実行する。
【００３２】
図４を用いて、実行ＩＤ４０１、ジョブＩＤ４０２、及び各種パラメータの説明をする。図４は、本発明の実施形態における半導体露光装置１０内のジョブ管理テーブル４００の一例である。
【００３３】
一般的に半導体露光装置１０では、図４のような、ジョブ実行時の実行条件値や装置状態値を含むジョブ管理情報を登録するジョブ管理テーブル４００を保持しており、実行ＩＤ４０１ごとにそれらの値を管理している。
【００３４】
実行ＩＤ４０１は、実行するジョブごとに一意に与えられた番号である。半導体露光装置メインアプリケーションプログラム１３０はジョブ管理テーブル４００にジョブを登録するたびに、ジョブに対して実行ＩＤ４０１を割り当てる。ジョブＩＤ４０２は、ジョブの種類ごとに一意に与えられた番号である。半導体露光装置１０は同じジョブＩＤ４０２を持つジョブを何回も実行することがあるため、それぞれのジョブを区別するために実行ＩＤ４０１が用いられる。例えば、図４では、実行ＩＤ４０１が００１のジョブと００３のジョブと、ジョブＩＤ４０２が０１の同じジョブを実行する。後述するが、メモリリーク領域を解放するときに、この実行ＩＤ４０１が必要となる。
【００３５】
レシピ名４０３とは、そのジョブで使用するレシピの名前である。ここで、レシピとは、予めオペレータ等が露光処理の処理手順及び露光パラメータを記述したファイルのことである。半導体露光装置１０では、レシピとウェハ枚数などの情報とを入力とするジョブを実行することで、処理が行われる。また、レシピ内に記述された処理が指定ウェハ枚数分終了した時点でジョブは完了する。
【００３６】
ジョブ管理テーブル４００に登録されるジョブ管理情報には、上記の他に、レシピに含まれる各パラメータや、レクチルＩＤ、ウェハ枚数、状態変数などを含むことができる。但し、これらはメモリリークを解消する本発明の本質的な技術的特徴とは直接には関係ないため、これ以上の説明は省略する。
【００３７】
次に、図２を用いて本実施形態におけるシステム支援装置１００の主処理を説明する。図２は、発明の実施形態におけるジョブの主処理の一例を説明するフローチャートである。このフローチャートによって示される処理は、半導体露光装置１０のＣＰＵ７０１がＲＡＭ７０２に格納されているプログラムを実行することにより実現される。
【００３８】
新規ジョブが開始される場合、ステップＳ２０１でアプリケーションプログラム実行管理機構１０１は、そのジョブの実行ＩＤを半導体露光装置メインアプリケーションプログラム１３０から受信する。実行ＩＤの受信方法は、例えば、メッセージ通信などで行えばよく、受信方法は特に規定しない。後述のステップにおいても同様に、受信方法は特に規定しない。
【００３９】
ステップＳ２０２で、アプリケーションプログラム実行管理機構１０１は、通知されたジョブの実行ＩＤ４０１に基づきジョブ管理テーブル４００からジョブ管理情報を取得し、実行すべきアプリケーションを特定する。アプリケーションプログラム実行管理機構１０１は、特定したアプリケーションプログラム１１０ごとにアプリケーションプログラムを実行させる。このアプリケーションプログラムの実行処理は、ジョブの実行ＩＤに対応するレシピの内容を満足するまで繰り返される。
【００４０】
ここで、図３に示すフローチャートを用いて、アプリケーションプログラム実行処理について説明する。図３は、本発明の実施形態におけるアプリケーションプログラム実行処理の一例を説明するためのフローチャートである。このフローチャートによって示される処理は、半導体露光装置１０のＣＰＵ７０１がＲＡＭ７０２に格納されているプログラムを実行することにより実現される。
【００４１】
ステップＳ３０１で、アプリケーションプログラム実行管理機構１０１は各アプリケーションプログラム１１０を開始し、そのアプリケーションプログラム１１０を実行するジョブのジョブＩＤを、アプリケーションプログラム１１０に通知する。前述のとおり、レシピ名４０３や各パラメータ値などの実行に必要な情報が与えられるため、アプリケーションプログラム実行管理機構１０１は、どのアプリケーションプログラム１１０をどのような条件で実行すればよいかがわかる。
【００４２】
ここで、開始されるアプリケーションプログラム１１０には、常駐型アプリケーションプログラム１１１と非常駐型アプリケーションプログラム１１２とがある。常駐型アプリケーションプログラム１１１とは、半導体露光装置１０の起動とともに起動させ、装置停止とともに終了させるアプリケーションプログラムのことである。常駐型アプリケーションプログラム１１１の処理実行は、時間の経過や他のアプリケーションプログラム１１０からのメッセージ受信などをトリガとして開始される。一方、非常駐型アプリケーションプログラム１１２とは、そのアプリケーションプログラムの処理実行開始時に起動され、処理実行終了時に終了するアプリケーションプログラム１１０のことである。非常駐型アプリケーションプログラム１１２の場合、処理を開始するためにアプリケーションプログラム１１０の起動が必要となる。
【００４３】
ステップＳ３０２で，アプリケーションプログラム実行管理機構１０１は、実行中のアプリケーションプログラム１１０の処理が終了するまでの間、メモリ使用状況を更新するための一連の処理（ステップＳ３０３〜Ｓ３０９）を繰り返す。アプリケーションプログラム１１０が常駐型の場合、処理終了メッセージを受け取ることで、アプリケーションプログラム１１０の処理終了が判断される。アプリケーションプログラム１１０が非常駐型の場合、それが終了することで、アプリケーションプログラム１１０の処理終了が判断される。
【００４４】
ステップＳ３０３では、メモリアクセス管理機構１０３が、アプリケーションプログラム１１０に対してメモリ１２０から新規にメモリ領域を割り当てたか否かを判定する。割り当てた場合（ステップＳ３０３で「Ｙｅｓ」）は、メモリ領域情報をメモリアクセス管理テーブル１０２に追加する一連の処理（ステップＳ３０４〜Ｓ３０７）を行う。
【００４５】
ここで、図５を用いてメモリアクセス管理テーブル１０２を説明する。図５は、本発明の実施形態におけるメモリアクセス管理テーブル１０２の一例である。メモリアクセス管理テーブル１０２には、実行ＩＤ５０１、アプリケーションプログラム名５０２、領域先頭アドレス５０３、及び領域サイズ５０４が登録される。
【００４６】
実行ＩＤ５０１は、実行しているジョブのＩＤである。この値はジョブ管理テーブル４００で保持している実行ＩＤ４０１に対応する。アプリケーションプログラム名５０２は、メモリ領域を割り当てているアプリケーションプログラム１１０の名称である。例えば、実行ＩＤ５０１が００１であるジョブは、「露光」と「ウェハ搬送」とにメモリ領域が割り当てられている。領域先頭アドレス５０３は、アプリケーションプログラム１１０が割り当てたメモリ領域の先頭アドレスである。領域サイズ５０４は、アプリケーションプログラム１１０が割り当てたメモリ領域のサイズである。本実施形態では、領域先頭アドレス５０３と領域サイズ５０４とでメモリ領域が特定されるため、これらがメモリ領域情報となる。なお、メモリ領域情報は、メモリ領域を特定できる情報であればどのようなものでもかまわない。
【００４７】
図３に戻り、メモリ領域情報をメモリアクセス管理テーブル１０２に追加する一連の処理を以下に説明する。
【００４８】
ステップＳ３０４でメモリアクセス管理機構１０３は、アプリケーションプログラム１１０に対して割り当てたメモリ領域を特定するための領域先頭アドレス５０３と領域サイズ５０４とを実行ＩＤと共にメモリアクセス管理テーブル１０２に追加する。メモリ領域をアプリケーションプログラム１１０に割り当てるときは、メモリアクセス管理テーブル１０２を参照して、すでに割り当てられているメモリ領域と重複しない領域を割り当てる。ジョブの実行ＩＤも同時に追加することにより、割り当てたメモリ領域のメモリ領域情報が実行ＩＤと関連付けてメモリアクセス管理テーブル１０２に登録される。なお、アプリケーションプログラム１１０はステップＳ３０１でジョブＩＤの通知を受けているので、メモリアクセス管理機構１０３にメモリ領域の割り当てを要求するときは、必要なサイズとともにこのジョブＩＤもメモリアクセス管理機構１０３に通知する。
【００４９】
ステップＳ３０５で、メモリアクセス管理機構１０３は、メモリアクセス管理テーブル１０２を参照し、該当アプリケーションプログラム１１０が使用しているメモリ量を算出する。具体的には実行ＩＤ５０１及びアプリケーションプログラム名５０２が共通であるメモリ領域情報の領域サイズ５０４を足し合わせる。
【００５０】
ステップＳ３０６で、メモリアクセス管理機構１０３は、算出したメモリ使用量がメモリ利用管理テーブル１０４に保持されている該当アプリケーションプログラム１１０のメモリ最大使用量を上回っているかどうかを判定する。上回っている場合（ステップＳ３０６で「ＹＥＳ」）は、ステップＳ３０７で、メモリ利用管理テーブル１０４のメモリ最大使用量を更新する。また、まだメモリ最大使用量が何も保存されていない場合は、算出したメモリ使用量をメモリ最大使用量として保存する。メモリ利用管理テーブル１０４については後述する。
【００５１】
つぎに、ステップＳ３０８で、メモリアクセス管理機構１０３は、アプリケーションプログラム１１０が自己に割り当てられたメモリ領域を解放する要求をしたかどうかを判定する。なお、アプリケーションは、自身に割り当てられたメモリ領域を他のアプリケーションが参照している場合には、当該メモリ領域の解放要求をメモリアクセス管理機構１０３に送信しない。これは、当該メモリ領域の解放により他のアプリケーションにおける処理がエラー終了することを防止するためである。従って、メモリ領域の解放要求をメモリアクセス管理機構１０３に送信しないまま、アプリケーションの処理が終了してしまう場合もある。本実施形態では、このような状況下において発生するメモリリークを解消することが出来る。
【００５２】
もし、該メモリ領域を解放する場合（ステップＳ３０８でＹＥＳ）は、ステップＳ３０９に移行する。ステップＳ３０９では、メモリアクセス管理テーブル１０２から、該処理の終了したアプリケーションプログラム１１０に対して割り当てたメモリ領域を示すメモリ領域情報を削除する。これにより、当該メモリ領域を、新たに割り当てを要求したアプリケーションプログラム１１０に割り当てることができるようになる。その後、アプリケーションにおける処理が終了している場合にはステップＳ３１０に移行する。アプリケーションにおける処理が終了していない場合には、ステップＳ３０３に戻って処理を継続する。
【００５３】
一方、メモリ領域を開放しない場合（ステップＳ３０８において「ＮＯ」）も、アプリケーションにおける処理が終了している場合にはステップＳ３１０に移行する。アプリケーションにおける処理が終了していない場合には、ステップＳ３０３に戻って処理を継続する。
【００５４】
ステップＳ３１０では、アプリケーションプログラム実行管理機構１０１は、アプリケーションプログラム１１０からの処理の終了メッセージを受信する。
【００５５】
図２に戻り、システム支援装置１００の主処理について説明を続ける。アプリケーションプログラム実行管理機構１０１は、ステップＳ２０２のアプリケーションプログラム実行処理が一つ完了するたびに、アプリケーションの終了メッセージをアプリケーションプログラム１１０から受信する。そこで、ステップＳ２０３において受信した終了メッセージの数に基づいて、実行しているジョブが完了したか否かを判定する。ここでの判定は、受信した終了メッセージの数が、ジョブ管理情報のレシピで特定されるアプリケーションの実行数に一致したか否かに基づいて行うことができる。もし、ジョブが完了したと判定された場合には（ステップＳ２０３において「ＹＥＳ」）、ステップＳ２０４に移行する。一方、ジョブが完了していないと判定された場合には（ステップＳ２０３において「ＮＯ」）、ステップＳ２０２に戻って、アプリケーションの実行処理を継続する。
【００５６】
ジョブの完了が確認されると、ステップＳ２０４においてメモリアクセス管理機構１０３は、完了したジョブの実行ＩＤ５０１に基づきメモリアクセス管理テーブル１０２内の情報からメモリリーク量を算出する。前述の通り、ジョブが完了したにもかかわらず、解放されていないメモリ領域がメモリリーク領域となる。解放されたメモリ領域のメモリ領域情報はメモリアクセス管理テーブル１０２から削除されているので、残存している当該実行ＩＤに関するメモリ領域情報がメモリリーク情報を表す。具体的には、完了したジョブの実行ＩＤ５０１について、アプリケーションプログラム１１０ごとに領域サイズ５０４を足し合わした値がメモリリーク量となる。
【００５７】
一方、メモリアクセス管理テーブル１０２に該当実行ＩＤに関する情報が残存していない場合は、メモリリークが発生していないことになる。この場合、メモリリーク量は“０”となる。
【００５８】
例えば、図５に示す例において、実行ＩＤ５０１が００１のジョブが完了しても、メモリ領域情報５０７が残存していた場合は、実行ＩＤ５０１が００１のジョブで実行した「ウェハ搬送」はメモリリークを引き起こしたことになる。このメモリ領域情報５０７が表すメモリ領域がメモリリーク領域となる。一方、実行ＩＤが００２のジョブが完了したときに、実行ＩＤが００２でアプリケーションプログラム名が「ウェハ搬送」であるメモリ領域情報がすべて削除されていれば、このジョブで実行した「ウェハ搬送」はメモリリークを発生しなかったことになる。
【００５９】
図２に戻りステップＳ２０５で、メモリアクセス管理機構１０３は、算出した各アプリケーションプログラム１１０のメモリリーク量をメモリ利用管理テーブル１０４に追加する。
【００６０】
メモリ利用管理テーブル１０４について、図６を用いて説明する。図６は、本発明の実施形態におけるメモリ利用管理テーブルの一例である。メモリ利用管理テーブルには、実行ＩＤ６０１、アプリケーションプログラム名６０２、メモリリーク量６０３、及びメモリ最大使用量６０４が登録される。実行ＩＤ６０１は実行されたジョブのＩＤである。前述までのジョブＩＤに対応する値である。アプリケーションプログラム名６０２は、実行されたアプリケーションプログラム１１０の名称である。
【００６１】
メモリリーク量６０３は、アプリケーションのジョブ単位のメモリリーク領域の合計サイズである。先ほどの例では、実行ＩＤが００１のジョブで実行した「ウェハ搬送」はメモリリークが発生しなかったため、このジョブの「ウェハ搬送」のメモリリーク量６０５には０が追加される。一方、実行ＩＤが００２のジョブで実行した「ウェハ搬送」は９６０バイトのメモリリークが発生したため、このジョブの「ウェハ搬送」のメモリリーク量６０６には９６０が追加される。
【００６２】
メモリ最大使用量６０４は、対応するアプリケーションプログラム１１０のために割り当てたメモリ領域のサイズの最大値である。前述の通りメモリ最大使用量はステップＳ３０７で逐次更新されるため、ジョブ完了までにアプリケーションプログラム１１０が使用したメモリ領域の最大値が記録されている。図６の例では、実行ＩＤ６０１が００１のジョブで実行した「ウェア搬送」の最大メモリ使用量６０７は５９３８２バイトであったことがわかる。
【００６３】
このように、メモリ利用管理テーブル１０４は、実行ＩＤ６０１ごとに、各アプリケーションプログラムのメモリリーク量６０３とメモリ最大使用量６０４を管理できればよく、管理内容は特に規定しない。
【００６４】
図２に戻り、メモリアクセス管理機構１０３はステップＳ２０６において、メモリリークが発生したか否かを判定する。もし、メモリリークが発生していた場合（ステップＳ２０６で「ＹＥＳ」）は、ステップＳ２０７を行う。発生していなかった場合（ステップＳ２０６で「ＮＯ」）は、システム支援装置１００の主処理を終了する。
【００６５】
ステップＳ２０７で、メモリアクセス管理機構１０３は、メモリアクセス管理テーブル１０２内のメモリ領域情報のうち、既に完了したジョブの実行ＩＤを有する情報をテーブルから削除する。例えば、前述の図６の例では２行目の実行ＩＤ６０１が００２の「ウェハ搬送」がメモリリークを起こしているので、メモリアクセス管理テーブル１０２における該当するメモリ領域情報をテーブルから削除する。その後、システム支援装置１００の主処理を終了する。
【００６６】
このように、各アプリケーションプログラム１１０終了時にメモリ領域を解放するのではなく、ジョブ実行完了時にメモリ領域を解放するため、複数のアプリケーションプログラム１１０で共有して使用しているメモリ領域を誤って解放してしまう心配はない。また、ジョブの実行により生じたメモリリーク領域は完全に解消される。
【００６７】
さらに、メモリアクセス管理テーブル１０２はジョブの実行ＩＤごとにメモリ領域情報を管理しているため、対象の実行ＩＤのジョブだけをアプリケーションプログラムのメモリ領域を解放することができる。したがって、他のジョブが実行中のアプリケーションプログラムのメモリ領域を誤って解放してしまう心配はない。
【００６８】
以上のように、本実施形態ではジョブの完了時にメモリリークを検出し、メモリリーク領域を解放することができるため、メモリリークが原因による半導体露光装置１０のシステムダウンを防止し、半導体製造の生産性を向上させることができる。また、個々のジョブのアプリケーションプログラムごとに、メモリリーク量とメモリ利用最大値とを保持するため、半導体製造装置ソフトウェアのメンテナンス性を向上させることができる。
【００６９】
＜第２の実施形態＞
第１の実施形態では、メモリアクセス管理機構１０３がメモリ１２０の割り当てを管理した。しかし、半導体露光装置１０がジョブを識別する機能を有しない既存のメモリ管理機構を有しているときは、それと連携して本発明を実施することも可能である。
【００７０】
この場合、アプリケーションプログラム１１０からメモリ割り当て要求を受けたメモリアクセス管理機構１０３は、既存のメモリ管理機構に対してそのメモリ割り当て要求を転送する。その応答であるメモリ領域情報を当該アプリケーションプログラム１１０に返すとともに、メモリアクセス管理テーブル１０２にメモリ領域情報を追加する。
【００７１】
一方、アプリケーションプログラム１１０から割り当てられたメモリ領域の解放要求を受けたメモリアクセス管理機構１０３は、既存のメモリ管理機構に対してそのメモリ解放要求を転送する。それとともに、メモリアクセス管理テーブル１０２からメモリ領域情報を削除する。
【００７２】
ジョブが完了したときに、メモリアクセス管理機構１０３は、メモリアクセス管理テーブル１０２に残っている当該ジョブのメモリ領域をメモリリーク領域とみなして、そのメモリ領域の解除を既存のメモリ管理機構に対して要求する。
【００７３】
以上により、メモリアクセス管理機構１０３が直接にメモリ１２０の割り当てを管理しない場合でも、既存のメモリ管理機構と連携して、メモリリーク領域を解放できるようになる。その結果、メモリリークが原因による半導体露光装置１０のシステムダウンを防止し、半導体製造の生産性を向上させることができる
［その他の実施形態］
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【００７４】
また、本発明の目的は、前述した機能を実現するコンピュータプログラムのコードを記録した記憶媒体を、システムに供給し、そのシステムがコンピュータプログラムのコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたコンピュータプログラムのコード自体が前述した実施形態の機能を実現し、そのコンピュータプログラムのコードを記憶した記憶媒体は本発明を構成する。また、そのプログラムのコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した機能が実現される場合も含まれる。
【００７５】
さらに、以下の形態で実現しても構わない。すなわち、記憶媒体から読み出されたコンピュータプログラムコードを、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。そして、そのコンピュータプログラムのコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行って、前述した機能が実現される場合も含まれる。
【００７６】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するコンピュータプログラムのコードが格納されることになる。  
【図面の簡単な説明】
【００７７】
【図１】本発明の第１の実施形態における構成の一例を示すブロック図である。
【図２】本発明の第１の実施形態におけるジョブの主処理の一例を説明するためのフローチャートである。
【図３】本発明の第１の実施形態におけるアプリケーションプログラム実行処理の一例を説明するためのフローチャートである。
【図４】本発明の第１の実施形態における半導体露光装置１０内のジョブ管理テーブルの一例である
【図５】本発明の第１の実施形態におけるメモリアクセス管理テーブルの一例である。
【図６】本発明の第１の実施形態におけるメモリ利用管理テーブルの一例である。
【図７】本発明の第１の実施形態におけるシステム支援装置の構成例を示すブロック図である。
【符号の説明】
【００７８】
１０：半導体露光装置
１００：システム支援装置
１０１：アプリケーションプログラム実行管理機構
１０２：メモリアクセス管理テーブル
１０３：メモリアクセス管理機構
１０４：メモリ利用管理テーブル
１１０：アプリケーションプログラム
１１１：常駐型アプリケーションプログラム
１１２：非常駐型アプリケーションプログラム
１２０：メモリ
１３０：半導体露光装置メインアプリケーションプログラム
【図１】
0005132339.tif 000002
【図２】
0005132339.tif 000003
【図３】
0005132339.tif 000004
【図４】
0005132339.tif 000005
【図５】
0005132339.tif 000006
【図６】
0005132339.tif 000007
【図７】
0005132339.tif 000008