(57)【要約】【課題】マルチプロセッサシステムにおいて、タスク削除時における割込み禁止区間を短縮化し、システムのリアルタイム性を向上させる。【解決手段】複数の処理をそれぞれ実行する複数のプロセッサを備える情報処理装置。プロセッサは、複数の処理のうちの少なくとも１つを終了させ、終了させる処理に対して割り当てられていた資源を特定する情報を記録する第１処理を、複数の処理のうちの１つとして実行する。プロセッサは、資源を特定する情報を取得し、特定された資源を解放する第２処理を、複数の処理のうちの１つとして実行する。【選択図】図１
2014182482.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理をそれぞれ実行する複数のプロセッサを備える情報処理装置であって、
前記複数の処理のそれぞれには、該処理で用いることができる前記情報処理装置内の資源が割り当てられており、
前記プロセッサは、
前記複数の処理のうちの少なくとも１つを終了させ、該終了させる処理に対して割り当てられていた資源を特定する情報を記録手段に記録する第１処理を、前記複数の処理のうちの１つとして実行し、
前記記録手段から前記資源を特定する情報を取得し、該特定された資源を解放する第２処理を、前記複数の処理のうちの１つとして実行する
ことを特徴とする情報処理装置。
【請求項２】
前記資源は、前記情報処理装置が備えるメモリ内のメモリ領域であることを特徴とする、請求項１に記載の情報処理装置。
【請求項３】
前記処理に割り当てられた前記メモリ領域は、前記処理において用いられるスタック領域であることを特徴とする、請求項２に記載の情報処理装置。
【請求項４】
前記処理に割り当てられた前記メモリ領域は、前記処理を管理するためのデータを格納する領域であることを特徴とする、請求項２に記載の情報処理装置。
【請求項５】
前記処理に割り当てられる前記メモリ領域は、前記情報処理装置が有するヒープ領域から確保されることを特徴とする、請求項２乃至４の何れか１項に記載の情報処理装置。
【請求項６】
前記複数の処理のそれぞれは、前記プロセッサにより実行されるタスク又はスレッドによって行われることを特徴とする、請求項１乃至５の何れか１項に記載の情報処理装置。
【請求項７】
前記第１処理と前記第２処理とは、互いに異なるタスク又はスレッドによって行われることを特徴とする、請求項６に記載の情報処理装置。
【請求項８】
前記第２処理を行うタスク又はスレッドは、前記複数のプロセッサのうちの何れかにおいてタスク又はスレッドが実行されていない場合に実行されることを特徴とする、請求項７に記載の情報処理装置。
【請求項９】
前記第２処理を行うタスク又はスレッドは、前記情報処理装置において最も優先して実行されるタスク又はスレッドであることを特徴とする、請求項７に記載の情報処理装置。
【請求項１０】
前記第１処理は、
前記第１処理を実行するプロセッサへの割込みを禁止する割込み禁止制御を行う工程と、
前記複数の処理の実行状態を管理する管理手段への、前記第１処理を実行するプロセッサ以外のアクセスを禁止する排他制御を行う工程と、
前記複数の処理のうちの少なくとも１つを終了させるように前記管理手段で管理されている実行状態を変更する工程と、
前記終了させる処理に対して割り当てられていた資源を特定する情報を前記記録手段に記録する工程と、
前記割込み禁止制御及び排他制御を解除する工程と、
を含むことを特徴とする、請求項１乃至９の何れか１項に記載の情報処理装置。
【請求項１１】
複数の処理をそれぞれ実行する複数のプロセッサを備える情報処理装置の制御方法であって、
前記複数の処理のそれぞれには、該処理で用いることができる前記情報処理装置内の資源が割り当てられており、
前記制御方法は、
前記複数の処理のうちの少なくとも１つを終了させ、該終了させる処理に対して割り当てられていた資源を特定する情報を記録手段に記録する第１処理を、前記複数の処理のうちの１つとして前記プロセッサに実行させることと、
前記記録手段から前記資源を特定する情報を取得し、該特定された資源を解放する第２処理を、前記複数の処理のうちの１つとして前記プロセッサに実行させることと、
を含むことを特徴とする、情報処理装置の制御方法。
【請求項１２】
複数の処理をそれぞれ実行する複数のプロセッサを備える情報処理装置を動作させるためのプログラムであって、
前記複数の処理のそれぞれには、該処理で用いることができる前記情報処理装置内の資源が割り当てられており、
前記プログラムは、
前記複数の処理のうちの少なくとも１つを終了させ、該終了させる処理に対して割り当てられていた資源を特定する情報を記録手段に記録する第１処理を、前記複数の処理のうちの１つとして前記プロセッサに実行させ、及び、
前記記録手段から前記資源を特定する情報を取得し、該特定された資源を解放する第２処理を、前記複数の処理のうちの１つとして前記プロセッサに実行させる
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、その制御方法及びプログラムに関する。
【背景技術】
【０００２】
近年、マルチプロセッサ対応のオペレーティングシステムが必要とされている。複数のプロセッサを制御するオペレーティングシステムにおいて、リアルタイム性は重要である。しかし、マルチプロセッシングではデッドロックを回避するために、処理を実行するプロセッサを、割込みを禁止する状態（割り込みを受け付けない状態）にして実行する必要のある処理がある。すなわち、従来シングルプロセッサのオペレーティングシステムでは割込みが可能な状態で行えた処理を、マルチプロセッサのオペレーティングシステムでは割込み禁止状態で行わざるを得ない場合が存在する。
【０００３】
特許文献１には、タスクが使用したスタック領域を再度別のタスクで利用することで、タスクを削除する際にスタック領域の解放処理を省略する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平４−２３１３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
割込み禁止区間が長くなることには、システムのリアルタイム性が低下しうるという課題がある。しかし、特許文献１のようにタスクが使用するスタックやタスクを管理するデータ領域を、タスク削除時に解放しようとすると、タスク削除時の割込み禁止区間が長くなってしまう。
【課題を解決するための手段】
【０００６】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。すなわち、
複数の処理をそれぞれ実行する複数のプロセッサを備える情報処理装置であって、
前記複数の処理のそれぞれには、該処理で用いることができる前記情報処理装置内の資源が割り当てられており、
前記プロセッサは、
前記複数の処理のうちの少なくとも１つを終了させ、該終了させる処理に対して割り当てられていた資源を特定する情報を記録手段に記録する第１処理を、前記複数の処理のうちの１つとして実行し、
前記記録手段から前記資源を特定する情報を取得し、該特定された資源を解放する第２処理を、前記複数の処理のうちの１つとして実行する
ことを特徴とする。
【発明の効果】
【０００７】
マルチプロセッサシステムにおいて、タスク削除時における割込み禁止区間を短縮化し、システムのリアルタイム性を向上させることができる。
【図面の簡単な説明】
【０００８】
【図１】各実施形態に係る情報処理装置の構成を示す概念図。
【図２】各実施形態に係る情報処理装置のハードウェア構成例を示すブロック図。
【図３】シングルプロセッサにおけるタスク削除処理を示すフローチャート。
【図４】各実施形態に係るタスク削除処理を示すフローチャート。
【図５】資源解放処理部１０５が行う処理を示すフローチャート。
【図６】資源管理機構１０４のデータ構造を示す図。
【発明を実施するための形態】
【０００９】
まず、割込みを禁止する状態（割り込みを受け付けない状態）にして実行する必要のある処理におけるシングルプロセッサとマルチプロセッサの違いについて、タスクの生成削除に関する処理を例として説明を補足する。シングルプロセッサのオペレーティングシステムでは、タスクの生成削除を行うＡＰＩ(Application Programming Interface)をタスクコンテキストからのみ呼び出せる仕様とすることができる。この場合、タスク生成又は削除を行っている状況で割込み処理が開始されても、さらにタスク生成又は削除が行われることはない。
【００１０】
一方、マルチプロセッサのオペレーティングシステムでは、タスク生成及び削除の仕様がシングルプロセッサと同じであっても、タスク生成又は削除を行っている際に他のプロセッサでタスク生成又は削除が行われる可能性がある。よって、データ構造などのコヒーレンスを保つためにプロセッサ間排他制御を行う必要がある。しかし、このプロセッサ間排他制御を割込み処理から行うことができる場合、タスク生成又は削除を行う際には、割込みを禁止するとともにプロセッサ間排他制御を行う必要がある。割込み禁止とプロセッサ間排他制御は同時に行えないことが多く、この場合割込みを禁止した後にプロセッサ間排他制御が行われる。
【００１１】
［第１の実施形態］
以下に、本発明の第１の実施形態について、図１〜図６を参照して説明する。図１は、第１の実施形態に係る情報処理装置上で動作するオペレーティングシステムの概念図である。図１のオペレーティングシステム１０１は、タスク削除処理部１０３、資源伝達機構１０４、及び資源解放処理部１０５を備える。オペレーティングシステム１０１の機能は、プロセッサ１０２がプログラムに従って動作することによって実現される。また、オペレーティングシステム１０１は複数のプロセッサ１０２を制御するとともに、アプリケーション１０６の実行を制御する。複数のプロセッサ１０２は、それぞれが複数の処理、例えばタスク又はスレッドを実行することができる。以下では、複数のプロセッサ１０２が、それぞれ複数のタスクを実行することができるものとする。
【００１２】
オペレーティングシステム１０１は、タスク削除処理部１０３、資源伝達機構１０４、及び資源解放処理部１０５により、処理を終了させる、すなわちタスクを削除する機能を提供する。より具体的には、タスク削除処理部１０３及び資源解放処理部１０５はそれぞれ、オペレーティングシステム１０１が実行するタスクの１つとして実現される。また、資源伝達機構１０４は、データ構造を記録する適切なメモリ、例えば後述するＲＡＭ２０２によって実現される。
【００１３】
タスク削除処理部１０３は、タスクを削除するために必要なオペレーティングシステム１０１における内部処理（第１処理）を行う。より具体的にはタスク削除処理部１０３は、タスクを削除するように、オペレーティングシステム１０１が各タスクの実行状態を管理するために保持している情報（タスクテーブル、管理手段）の内容を編集する。さらにタスク削除処理部１０３は、削除するタスクが保持している資源を示す資源情報を、資源伝達機構１０４へ伝える。より具体的にはタスク削除処理部１０３は、タスクに対して割り当てられていた資源を特定する情報を、資源伝達機構１０４に記録する。この情報は、削除するタスクに割り当てられていたメモリ領域のアドレスを示す情報であってもよい。またこの情報は、他の情報と組み合わせて削除するタスクに割り当てられていたメモリ領域のアドレスを特定できるような、削除するタスクを特定する情報であってもよい。
【００１４】
本実施形態において、それぞれのタスクには、タスクが用いることができる情報処理装置内の資源が割り当てられている。この資源は例えば、情報処理装置が備えるメモリ内（例えばＲＡＭ２０２内）のメモリ領域でありうる。より具体的には、それぞれのタスクに割り当てられる資源は、タスクにおいて用いられるスタック領域、又はタスクを管理するためのデータを格納する領域でありうる。
【００１５】
資源伝達機構１０４は、タスク削除処理部１０３から伝えられたタスクの資源情報を維持及び管理する。資源伝達機構１０４は、資源解放処理部１０５にタスクの資源情報を伝えることにより、タスクの資源情報の維持及び管理を終える。資源伝達機構１０４は、資源情報を必要に応じて追加及び削除しながら、複数のタスクの資源情報を維持及び管理する。資源伝達機構１０４による資源情報の維持及び管理は、例えばキュー構造などのデータ構造を用いて実現できる。
【００１６】
資源解放処理部１０５は、資源伝達機構１０４からタスクの資源情報を受け取り、その資源情報により特定される資源を解放する処理（第２処理）を行う。
【００１７】
アプリケーション１０６は、オペレーティングシステム１０１が提供するＡＰＩ(Application Programming Interface)を呼び出すことにより、タスクを削除することが可能である。この場合、ＡＰＩを呼び出したタスク自身を削除することもできるし、ＡＰＩを呼び出したタスクとは別のタスクを削除することもできる。またアプリケーション１０６は、タスク生成時に指定した、タスクが行う処理を記述した関数（アドレス）からリターンした際に、タスクを削除することも可能である。もっとも、本実施形態においてこれらのタスク削除方法の全てをオペレーティングシステム１０１が提供する必要はない。例えば、オペレーティングシステム１０１はいずれか１つのタスク削除方法を提供してもよい。
【００１８】
例えば、アプリケーション１０６がタスク削除ＡＰＩを呼び出すことにより、ＡＰＩを呼び出したタスク自身を削除する場合には、タスク削除処理部１０３がタスク削除の処理を行う。さらに、タスク削除処理部１０３から資源伝達機構１０４へと、削除されるタスクの資源情報が伝えられる。そして、資源解放処理部１０５は資源伝達機構１０４を介して削除されるタスクの情報を受け取り、資源を解放する処理を行う。上述のように、タスク削除処理部１０３及び資源解放処理部１０５はそれぞれ、オペレーティングシステム１０１が実行するタスクの１つとして実現される。すなわち、タスク削除処理部１０３の処理と資源解放処理部１０５の処理とは、互いに異なるタスクによって行われる。このような構成を有することにより、資源を解放する処理を割込み許可状態で行うことが可能となり、割込み禁止区間を短くすることができる。
【００１９】
以上、オペレーティングシステム１０１のタスク削除機能について説明した。ここで詳細を記さなかった点については、オペレーティングシステム１０１は一般のオペレーティングシステムと同様に動作しうる。
【００２０】
本実施形態においては、生成するタスクのスタックを確保する際には、オペレーティングシステム１０１はシステムに存在するヒープ領域から要求されたサイズ、又はデフォルトのサイズのメモリ領域を確保する。またオペレーティングシステム１０１は、タスクが削除される際には、メモリ領域を開放することにより、確保されたメモリ領域をヒープ領域へ戻す。オペレーティングシステム１０１は、オペレーティングシステムが用意したメモリ領域をタスクに与えるか、ユーザが用意したメモリ領域をタスクに与えるかを、選択してもよい。
【００２１】
一般的には、タスク削除のＡＰＩを呼び出してタスクを削除する際には、削除するタスクのタスクＩＤ番号が指定される。しかしながら本実施形態においては、このようなタスクＩＤ番号を用いたタスク指定方法を用いる必要はない。削除するタスクを一意に特定するための別の方法を用いることが可能であり、例えばマクロ定義などを利用することができる。
【００２２】
次に、本実施形態におけるオペレーティングシステム１０１を実現するためのハードウェア構成の一例を、図２を参照して説明する。オペレーティングシステム１０１を実現する情報処理装置２００は、複数のプロセッサ１０２と、ＲＯＭ２０１と、ＲＡＭ２０２と、バス２０３と、キャッシュコヒーレント機構２０４とを有する。複数のプロセッサ１０２のそれぞれは、キャッシュを保持している。プロセッサ１０２はキャッシュを介してメモリ操作を行う。複数のプロセッサ１０２の各々がキャッシュを介して行った、同一アドレスに対するメモリ操作は、キャッシュコヒーレント機構２０４によって一意性が保たれる。
【００２３】
複数のプロセッサ１０２は、ＲＯＭ２０１及びＲＡＭ２０２とバス２０３を介して接続されている。オペレーティングシステム１０１のプログラムコード及びデータは、ＲＯＭ２０１とＲＡＭ２０２とのいずれかに配置されている。複数のプロセッサ１０２がこのプログラムコード及びデータに従って動作することにより、オペレーティングシステム１０１の機能が実現される。
【００２４】
図２に示すハードウェア構成は、オペレーティングシステム１０１を実現するためのハードウェア構成の一例にすぎない。例えば、情報処理装置２００は３つ以上のプロセッサ１０２を有していてもよいし、キャッシュコヒーレント機構２０４の接続方法が異なっていてもよい。さらなるモジュールを図２に示すハードウェア構成と組み合わせて用いてもよく、例えばバス２０３に別のモジュールを接続することもできる。
【００２５】
次に、本実施形態におけるオペレーティングシステム１０１のタスク削除処理に関して説明する前に、シングルプロセッサ構成の場合のタスク削除処理を、図３を参照して説明する。シングルプロセッサの場合、タスクの生成削除を行うＡＰＩをタスクコンテキストからのみ呼び出せる仕様とすれば、タスク生成又は削除を行っている状況で割込み処理が開始されても、さらにタスク生成又は削除が行われることはない。したがって、割込み処理において操作できる一部データの変更を除いては、タスクのスイッチを禁止すれば、タスクの生成及び削除の処理を割込み禁止状態で行わなくとも、タスクに関係するデータ構造のコヒーレンスは保たれる。また、タスクのスイッチを禁止又は解除するＡＰＩをオペレーティングシステムが提供する際には、タスクのスイッチを禁止又は解除するＡＰＩもタスクコンテキストからのみ呼び出せるようにしてもよい。
【００２６】
ステップＳ３０１においてオペレーティングシステムは、タスクスイッチを禁止し、ステップＳ３０２へ進む。ステップＳ３０２においてオペレーティングシステムは、割込みを禁止し、ステップＳ３０３へ進む。ステップＳ３０３においてオペレーティングシステムは、タスクを削除するようにオペレーティングシステムが管理するデータ構造（タスクテーブル）を変更し、ステップＳ３０４へ進む。ステップＳ３０４においてオペレーティングシステムは、割込み禁止を解除し、ステップＳ３０５へ進む。
【００２７】
ステップＳ３０５においてオペレーティングシステムは、削除したタスクについて確保されていたスタックを、オペレーティングシステムが用意していたか否かを判定する。オペレーティングシステムがスタックを用意していた場合、ステップＳ３０６へ進む。また、オペレーティングシステムがスタックを用意していなかった場合、ステップＳ３０７へ進む。ステップＳ３０６においてオペレーティングシステムは、削除したタスクについてのスタック領域を開放し、ステップＳ３０７へ進む。
【００２８】
ステップＳ３０７においてオペレーティングシステムは、削除されるタスクが実行中であるか否かを判定する。削除されるタスクが実行中である場合、ステップＳ３０８へ進む。また削除されるタスクが実行中ではない場合、ステップＳ３０９へ進む。
【００２９】
ステップＳ３０８においてオペレーティングシステムは、次に実行すべきタスクへのタスクスイッチを行い、タスク削除処理を終了する。この際に、同時にタスクスイッチの禁止を解除することができる。ステップＳ３０９においてオペレーティングシステムは、タスクスイッチ禁止を解除し、タスク削除処理を終了する。
【００３０】
図３のフローチャートの処理は、オペレーティングシステム１０１が提供するタスク削除ＡＰＩをアプリケーション１０６が呼び出した際、又はタスク生成時に指定した、タスクが行う処理を記述した関数（アドレス）からリターンした際に、実行される。図３のフローチャートに示されるように、シングルプロセッサ構成においては、削除されるタスクについて確保されていたスタックを割込み可能状態で解放することができる。
【００３１】
次に、本実施形態におけるオペレーティングシステム１０１のタスク削除処理部１０３が行うタスク削除処理を、図４を参照して説明する。図４に示す処理によりタスク削除処理部１０３は、少なくとも１つのタスクを削除する。
【００３２】
ステップＳ４０１においてタスク削除処理部１０３は、割込み禁止制御を行い、及びプロセッサ間排他制御を行い、ステップＳ４０２へ進む。本明細書において割込み禁止制御とは、タスク削除処理部１０３の処理を行っているタスクを実行しているプロセッサにおける割込み処理を禁止することを意味する。また、本明細書においてプロセッサ間排他制御とは、ある資源に対して複数のプロセッサの１つしかアクセスできないように制御することを意味する。より具体的には、タスク削除処理部１０３の処理を行っているタスクを実行しているプロセッサ以外のプロセッサによる、タスクテーブルに対するアクセスが禁止される。
【００３３】
ステップＳ４０２においてタスク削除処理部１０３は、タスクを削除するようにオペレーティングシステム１０１が管理するデータ構造（タスクテーブル）を変更し、ステップＳ４０３へ進む。本実施形態では、割込み禁止制御の解除及びプロセッサ間排他制御の解除は後に行われる。この構成により、タスクテーブル上ではタスクが削除されているにもかかわらずこのタスクがプロセッサ上で動作しているという状態を、別プロセッサで動作しているタスクが検知することを避けることができる。
【００３４】
ステップＳ４０３においてタスク削除処理部１０３は、削除するタスクについて確保されていたスタックを、オペレーティングシステム１０１が用意していたか否かを判定する。オペレーティングシステム１０１がスタックを用意していた場合、ステップＳ４０４へ進む。また、オペレーティングシステムがスタックを用意していなかった場合、ステップＳ４０５へ進む。
【００３５】
ステップＳ４０４においてタスク削除処理部１０３は、削除するタスクについて確保されていたスタック領域を示す情報を資源伝達機構１０４へと伝達し、ステップＳ４０５へ進む。
【００３６】
ステップＳ４０５においてタスク削除処理部１０３は、削除するタスクを実行中であるか否かを判定する。削除されるタスクを実行中であればステップＳ４０６へ進み、削除されるタスクを実行中でなければステップＳ４０７へ進む。
【００３７】
ステップＳ４０６においてタスク削除処理部１０３は、次に実行すべきタスクへのタスクスイッチを行い、タスク削除処理を終了する。この際に、割込み禁止制御の解除及びプロセッサ間排他制御の解除を同時に行うことができる。ステップＳ４０７においてタスク削除処理部１０３は、割込み禁止制御の解除及びプロセッサ間排他制御の解除を行い、タスク削除処理を終了する。
【００３８】
図４に示す本実施形態に係る処理は、シングルプロセッサにおけるタスク削除にも応用できる。すなわち、ステップＳ３０１及びＳ３０９のタスクスイッチを禁止及び解除する処理は、ステップＳ４０１及びステップＳ４０７の割込み禁止及びプロセッサ間排他制御を開始及び解除する処理で置き換えることができる。また、この場合ステップＳ３０２及びステップＳ３０４は省略することができる。さらに、ステップＳ３０６についてもステップＳ４０４で置き換えることが可能である。このように、図４に示す処理に対応するプログラムコードを用いて、シングルプロセッサにおけるタスク削除とマルチプロセッサにおけるタスク削除との双方を行うことができる。
【００３９】
ここで、図３に示すシングルプロセッサにおけるタスク削除処理の場合と同様に、ステップＳ４０４においてスタック領域の解放処理を行うと、割込み禁止状態にて解放処理がなされることがわかる。
【００４０】
図４のフローチャートの処理は、オペレーティングシステム１０１が提供するタスク削除ＡＰＩをアプリケーション１０６が呼び出した際、又はタスク生成時に指定した、タスクが行う処理を記述した関数（アドレス）からリターンした際に、実行される。
【００４１】
次に、資源解放処理部１０５が行う資源解放処理について、図５のフローチャートを参照して説明する。
【００４２】
ステップＳ５０１において資源解放処理部１０５は、資源伝達機構１０４にタスクの資源情報が記録されているか否かを判定する。タスクの資源情報が記録されている場合、処理はステップＳ５０２に進む。タスクの資源情報が記録されていない場合には、資源解放処理を終了する。
【００４３】
ステップＳ５０２において資源解放処理部１０５は、資源伝達機構１０４からタスクの資源情報を取得し、取得した資源情報を資源伝達機構１０４から削除する。上述のようにこの資源情報は、削除するタスクについて確保されていたスタック領域を示す情報である。
【００４４】
ステップＳ５０３において資源解放処理部１０５は、取得した資源情報により示されるスタック領域を開放する。こうして、資源解放処理が終了する。
【００４５】
図５に示すフローチャートに従う資源解放処理部１０５の処理は、任意のタイミングで繰り返し行われうる。例えば資源解放処理部１０５による処理は、複数のプロセッサ１０２のうちのいずれかにおいてタスクが実行されていない場合に行われうる。また、資源解放処理部１０５による処理は、実行すべきユーザタスクがない場合に行われてもよい。
【００４６】
次に、資源伝達機構１０４のデータ構造の一例について図６を参照して説明する。図６において、６０１は資源伝達機構１０４のデータ構造を示す。資源伝達機構１０４は、ステップＳ４０４でタスク削除処理部１０３から伝達されるスタック領域の情報を、ステップＳ５０２で資源解放処理部１０５により取得されるまで保持する必要がある。これらの情報伝達は複数のタスクから並行かつ非同期に行われうるため、本実施形態において資源伝達機構は、スタック領域の情報をキュー構造にて管理する。
【００４７】
より具体的には、ステップＳ４０４でスタック領域の情報が伝達された場合、伝達されたスタック領域の情報はキューの末尾に接続される。また、ステップＳ５０２においては、キューの先頭に位置するスタック領域の情報が取得され、取得された情報は資源伝達機構１０４から削除される。
【００４８】
図６に示されるデータ構造は一例にすぎず、ステップＳ４０４におけるスタック領域情報の保持、及びステップＳ５０２におけるスタック領域情報の廃棄が可能な他のデータ構造を用いることもできる。例えば、配列構造又はＬＩＦＯ（Ｌａｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）などの構造を用いることができる。
【００４９】
以上のような本実施形態の構成を用いることにより、オペレーティングシステムにおいて、タスク削除を行う際の割込み禁止区間が短くなるという効果が得られる。
【００５０】
［第２の実施形態］
本発明の第２の実施形態について次に説明する。本実施形態に係る処理は、図１に示す、第１の実施形態に係る情報処理装置と同様の情報処理装置上で行われうる。タスク削除処理部１０３及び資源解放処理部１０５の構成及びその動作、並びに資源伝達機構１０４の構成は第１の実施形態と同様であるから、説明を省略する。
【００５１】
第１の実施形態と同様に、資源解放処理部１０５は、オペレーティングシステム１０１が実行するタスクの１つとして実現される。本実施形態において、図５に示す資源解放処理部１０５の処理は、システムの中で最も優先して実行されるタスクが行う。以下では、このタスクのことを資源解放タスクと呼ぶ。資源開放タスクは、オペレーティングシステム１０１の起動時にオペレーティングシステム１０１が生成し、オペレーティングシステム１０１が動作中は生存し続ける。
【００５２】
資源解放タスクは、図５に示す処理を断続的に実行する。例えば資源解放タスクは、一定の時間間隔で図５に示す処理を実行し、処理を実行していない時は待ち状態にあってもよい。ここで、時間間隔が長いほどスタック領域が解放される頻度が低くなるためにヒープ領域の使用効率がより低くなり、時間間隔が短いほどヒープ領域の使用効率はより高くなる。この時間間隔の長さは適宜設定することが可能である。例えば、オペレーティングシステム１０１の設定値としてユーザなどが設定することができる。また、オペレーティングシステム１０１が時間間隔を設定することも可能である。
【００５３】
本実施形態において、資源解放タスクの優先順位はシステムの中で最も高いものとした。しかしながら、優先順位は適宜変更することができる。この場合、優先順位が高いほどヒープ領域の使用効率がより高くなり、優先順位が低いほどより低くなる。この優先順位は、適宜設定することが可能である。例えば、オペレーティングシステム１０１の設定値としてユーザなどが設定することができる。また、オペレーティングシステム１０１が優先順位を設定することも可能である。
【００５４】
以上説明した第２の実施形態によれば、スタック領域を提供するヒープ領域の使用効率がより高くなるという効果が得られる。
【００５５】
（他の実施形態）
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムコードを読み出して実行する。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【図１】
2014182482.tif 000003
【図２】
2014182482.tif 000004
【図３】
2014182482.tif 000005
【図４】
2014182482.tif 000006
【図５】
2014182482.tif 000007
【図６】
2014182482.tif 000008