JP2006331213A - システムリソース管理装置、システムリソース管理方法及びプログラム - Google Patents
システムリソース管理装置、システムリソース管理方法及びプログラム Download PDFInfo
- Publication number
- JP2006331213A JP2006331213A JP2005156048A JP2005156048A JP2006331213A JP 2006331213 A JP2006331213 A JP 2006331213A JP 2005156048 A JP2005156048 A JP 2005156048A JP 2005156048 A JP2005156048 A JP 2005156048A JP 2006331213 A JP2006331213 A JP 2006331213A
- Authority
- JP
- Japan
- Prior art keywords
- system resource
- task
- resource management
- release
- acquisition
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】
複数のタスクでリソースを保持する場合であってもシステムリソースの開放忘れを検出する。
【解決手段】
システムリソースの取得及び開放を実行する1以上のタスクからなるタスク群の各タスクを識別する識別情報をシステムリソース管理テーブル61のタスク群リンク62に登録し、システムリソース管理テーブル61に登録されたタスク群の処理が実行されると、各タスクにおけるシステムリソースの取得又は開放状況を検出し、この検出結果をシステムリソース管理テーブル61のシステムリソースリンク63に登録して更新する。タスク群の処理を終了する際、更新されたリソース管理テーブル61のシステムリソースリンク63に基づきシステムリソースの開放状況をチェックする。
【選択図】 図1
複数のタスクでリソースを保持する場合であってもシステムリソースの開放忘れを検出する。
【解決手段】
システムリソースの取得及び開放を実行する1以上のタスクからなるタスク群の各タスクを識別する識別情報をシステムリソース管理テーブル61のタスク群リンク62に登録し、システムリソース管理テーブル61に登録されたタスク群の処理が実行されると、各タスクにおけるシステムリソースの取得又は開放状況を検出し、この検出結果をシステムリソース管理テーブル61のシステムリソースリンク63に登録して更新する。タスク群の処理を終了する際、更新されたリソース管理テーブル61のシステムリソースリンク63に基づきシステムリソースの開放状況をチェックする。
【選択図】 図1
Description
本発明は、マルチタスクシステムのメモリ等のシステムリソースの取得および開放を管理するシステムリソース管理装置、システムリソース管理方法及びプログラムに関する。
図14は、従来のマルチタスクシステムの構成を説明する図である。従来システム100は、ハードウェアとして、プロセッサ101、メモリ及び他のハードウェアリソース102を有する。また、ソフトウェアとして、リアルタイムOSを動作させる基本プログラムであるリアルタイムOSカーネル111及びシステムの初期化を行なうシステムstartup処理部112を有する。リアルタイムOSカーネル111は、タスクを管理するためのタスク管理モジュール113、リソースを管理するためのリソース管理モジュール114などのモジュールと、各タスクが発行するシステムコールを処理するシステムコール処理部115とを有する。
更に、各ユーザタスクを動作させるプログラムであるアプリケーションタスク121及びアプリケーションタスクを処理するアプリケーションハンドラ122を有する。また、タスク管理モジュール113が管理する管理情報であるリアルタイムOSタスク管理情報131、リソース管理モジュール114が管理する管理情報であるリアルタイムOSリソース管理情報132、及びリアルタイムOSカーネルが使用するリソースデータであるリアルタイムOSリソース133、並びにアプリケーションが使用するアプリケーションデータ141等を有する。
上記システムにおいては、タスクの実行が開始され、そのタスク実行中にメモリ等のシステムリソースが必要になると、システムリソースを取得するためのシステムコールを発行する。取得したシステムリソースの使用が終了して不要となると、不要となったシステムリソースを解放するためのシステムコールを発行し、システムリソースの解放を行う。タスクの全処理が終了するとタスクが終了する。
従来、上記のように構成されたシステムにおいて、リアルタイムOS等のマルチタスクOSアプリケーションプログラムのシステムリソースの取得及び開放は、一般に必ず対で行うものである。しかし、アプリケーションが複雑化するとその対応付けが難しくなる。また、システムリソースを取得したタスクと開放するタスクが異なる場合もある。
システムリソース取得と開放の対応付けを誤ると、取得したシステムリソースが開放されず、それが蓄積されていくと空きメモリの枯渇につながり、システム動作が不安定になる場合もある。更に、プログラム領域を複数のタスク群で共有し、動的ロード機構を持ったシステムになると、上述の問題が解決されないまま、一層問題の検出が難しくなる。
そこで、特許文献1には、システムリソースの開放忘れを防止するためシステムリソースの管理を管理タスクで行うタスクリソース管理プログラムが開示されている。この特許文献1に記載の技術においては、アプリケーションタスクからリアルタイムOSへのタスク生成及び削除、タスク以外のシステムリソースの取得及び開放の要求は、管理タスクを経由して行う。それによりタスクの生成及び削除、タスク以外のシステムリソースの取得及び開放を一元管理することができる。
特開2002−358204号公報
しかしながら、かかる方法において、システムリソースがタスク別の管理となっているため、複数のタスクで保持するリソースの管理が十分に行えない。更には動的プログラムロード方式を伴うシステムの場合にはリソース管理を行うことができないという問題点もある。
本発明にかかるシステムリソース管理装置は、マルチタスクシステムにおけるシステムリソースの取得及び開放を管理するシステムリソース管理装置であって、前記システムリソースの取得及び開放を実行する1以上のタスクからなるタスク群を管理する管理タスクと、各タスクにおけるシステムリソースの取得又は開放状況を検出する取得開放検出部とを有し、前記取得開放検出部は、前記タスク群のリソース取得又は開放状況を登録するリソース管理テーブルを、その検出結果に基づき更新し、前記管理タスクは、前記リソース管理テーブルに基づき前記システムリソースの開放状況をチェックするものである。
本発明においては、取得開放検出部がタスク群のリソース取得又は開放状況を登録するシステムリソース管理テーブルを、タスクのシステムリソースの取得又は開放に基づき更新し、システムリソース管理タスクがこのシステムリソース管理テーブルをチェックすることで、開放状況をチェックし、開放忘れを検出することができる。
本発明にかかるシステムリソース管理方法は、マルチタスクシステムにおけるシステムリソースの取得及び開放を管理するシステムリソース管理方法であって、前記システムリソースの取得及び開放を実行する1以上のタスクからなるタスク群の各タスクを識別する識別情報をシステムリソース管理テーブルに登録し、前記システムリソース管理テーブルに登録されたタスク群の処理が実行されると、各タスクにおけるシステムリソースの取得又は開放状況を検出し、前記検出結果を前記システムリソース管理テーブルに登録して更新し、前記タスク群の処理を終了する際、更新されたリソース管理テーブルに基づき前記システムリソースの開放状況をチェックするものである。
本発明においては、タスク群の識別情報をシステムリソース管理テーブルに登録しておき、タスクが実行されると各タスクにおけるシステムリソースの取得又は開放状況の検出結果によりそのシステムリソース管理テーブルを更新し、この更新された管理テーブルに基づきシステムリソースの管理状況をチェックすることができ、例えばシステムデバック時などに極めて有効に使用することができる。
本発明にかかる他のシステムリソース管理方法は、マルチタスクシステムにおけるシステムリソースの取得及び開放を管理するシステムリソース管理方法であって、前記システムリソースの取得及び開放を実行する1以上のタスクからなるタスク群で構成されたプログラムをメモリにロードし、前記メモリにロードされたプログラムを構成するタスク群の各タスクを識別する識別情報をシステムリソース管理テーブルに登録し、前記システムリソース管理テーブルに登録されたタスク群で構成されるプログラムの処理が実行されると、各タスクにおけるシステムリソースの取得又は開放状況を検出し、前記検出結果を前記システムリソース管理テーブルに登録して更新し、前記プログラムを前記メモリからアンロードする際、更新されたリソース管理テーブルに基づき前記システムリソースの開放状況をチェックするものである。
本発明においては、タスク群を動的にロード及びアンロードするような複雑なシステムであっても、システムリソース管理テーブルによりシステムリソースの開放状況をチェックすることができ、システムリソースの取得及び開放を完全に管理することができる。
本発明によるシステムリソース管理装置、システムリソース管理方法及びプログラムによれば、複数のタスクでリソースを保持する場合であってもシステムリソースの開放忘れを検出することができる。また、動的プログラムロード方式を伴うシステムであっても、システムリソースの開放忘れを検出することができる。
実施の形態1.
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。図1は、本実施の形態にかかるマルチタスクシステムの構成を説明する図である。本システム10は、ハードウェアとして、プロセッサ1、メモリ及び他のハードウェアリソース2を有する。また、ソフトウェアとして、リアルタイムOSを動作させる基本プログラムであるリアルタイムOSカーネル11及びシステムの初期化を行なうシステムstartup処理部12を有する。リアルタイムOSカーネル11は、ユーザタスクを管理するためのタスク管理モジュール13、リソースを管理するためのリソース管理モジュール14などのモジュールと、各ユーザタスクが発行するシステムコールを処理するシステムコール処理部15とを有する。
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。図1は、本実施の形態にかかるマルチタスクシステムの構成を説明する図である。本システム10は、ハードウェアとして、プロセッサ1、メモリ及び他のハードウェアリソース2を有する。また、ソフトウェアとして、リアルタイムOSを動作させる基本プログラムであるリアルタイムOSカーネル11及びシステムの初期化を行なうシステムstartup処理部12を有する。リアルタイムOSカーネル11は、ユーザタスクを管理するためのタスク管理モジュール13、リソースを管理するためのリソース管理モジュール14などのモジュールと、各ユーザタスクが発行するシステムコールを処理するシステムコール処理部15とを有する。
更に、各ユーザタスクを動作させるプログラムであるアプリケーションタスク21及びアプリケーションタスク21を処理するアプリケーションハンドラ22を有する。また、タスク管理モジュール13が管理する管理情報であるリアルタイムOSタスク管理情報31、リソース管理モジュール14が管理する管理情報であるリアルタイムOSリソース管理情報32、及びリアルタイムOSカーネルが使用するリソースデータであるリアルタイムOSリソース33、並びにアプリケーションが使用するアプリケーションデータ41等を有する。
そして、本実施の形態においては、この構成に更に、システムリソース管理タスク51及びシステムリソース取得フック(hook)処理部及びシステムリソース開放フック処理部(以下、システムリソース取得/開放フック処理部という)52、並びにシステムリソース管理テーブル61を有する。
システムリソース管理タスク51は、複数のユーザタスクからなるタスク群を管理する管理タスクであり、タスク群登録要求処理部53及びタスク群終了要求処理部54を有する。タスク群とは、タスクの集合を示し、タスク群を構成するタスクはそこで取得したシステムリソースを共有可能とする。更にタスク群終了要求処理部54はシステムリソースチェック部55を含んでいる。システムリソース管理テーブル61は、タスク群リンク62及びシステムリソースリンク63を有し、タスク群を構成する各タスクの識別情報や、各タスクが取得又は開放したシステムリソースの使用状況などが登録される。
本実施の形態においては、システムリソース管理タスク51のタスク群登録要求処理部53により、タスク群がシステムリソースを取得する前に、タスク群からの登録要求により、タスク群毎に、当該タスク群を示すタスク群識別情報(タスク群ID)、各タスクを識別するタスク識別子などをシステムリソース管理テーブル61に登録する。図2は、システムリソース管理テーブル61を示す図である。
システムリソース管理テーブル61は可変長のテーブルとなっており、タスク群ID、一のタスク群に含まれる各タスクをリンクさせるためのリンク情報を示すタスク群リンク、及びタスク群が取得したシステムリソースを登録するシステムリソースリンクの3つの要素からなり、これら3つの要素がタスク群+1の数連続したものとなっている。
タスク群IDは、例えば1、2、・・等、タスク群を識別するための識別番号などである。タスク群リンクは、一のタスク群に含まれる各タスクをポインタによりリストでつないだものとなっており、例えばタスク群ID=1に含まれるタスクが、タスク識別子=task11、task12、task13・・の場合、ポインタを12、13・・などとすることができる。最後のタスク識別子ID=task1nにおける次へのポインタはNULLとして終端する。
なお、システムリソース管理テーブル61に登録するタスクは、システムリソースの取得又は開放を行うタスクだけでよい。また、タスク識別子及びポインタを有するタスク群リンクのメモリ領域は動的に割り当てが必要であるが、リアルタイムOSリソースとしてのメモリ資源を利用する必要はなく、予めメモリ領域を割り当てるようにしてもよい。
システムリソース取得/開放フック処理部52は、システムリソース管理テーブル61のタスク群リンク62にタスク識別情報が登録されたタスク群の処理が開始されると、各タスクのシステムリソースの取得及び開放状況をフックする。そして、その結果をシステムリソース管理テーブル61のシステムリソースリング63に登録する。すなわち、タスク群のシステムリソース取得又は開放状況を検出し、その検出結果に基づきシステムリソース管理テーブル61を更新する取得開放検出部として機能する。
システムリソースリンクには、システムリソースを取得又は開放したタスクが属するタスク群のシステムリソースリンクに、当該取得又は開放したシステムリソースが登録される。システムリソースリンクは、システムリソース識別、システムリソース識別子、及び各情報をリンクさせるためのポインタからなり、終端のポインタはNULLとして終端する。システムリソース種別としては、メモリブロックやタスクが必要とするメモリの提供・解放を行うメモリプールがある。また、同期・通信 待ち合わせ機構と通信手段として、タスク間の待ち合わせ機構であり、主に共有資源の待ち合わせに利用されるセマフォ、同じくタスク間の待ち合わせ機構であり、処理の完了などを通知する場合に利用されるイベントフラグ、及びタスク間のデータの送受信と待ち合わせ機構であり、メッセージ通信に利用されるメールボックス等がある。また、必要に応じて生成又は削除されるタスクをシステムリソースの一種として捉えることも可能である。
システムリソース識別子は、システムリソースにおける識別情報を示すもので、例えばシステムリソースがメモリブロックの場合はメモリブロックアクセスアドレス、セマフォの場合はセマフォID、イベントフラグの場合はイベントフラグIDなどとすることができる。
システムリソース取得/開放フック処理部52は、これらのシステムリソースの種別毎に用意された後述するシステムリソース取得フック関数及びシステムリソース開放フック関数を利用し、タスク群の処理が開始され、あるタスクがシステムリソース取得要求として、システムリソース取得システムコールを与えられたパラメータで発行するとこれをフックする。そして、当該システムリソース取得要求を発行した発行元のタスクが属するタスク群のシステムリソースリンク63に、当該システムリソースの取得情報を登録していく。こうして、システムリソース取得/開放フック処理部52は、タスクのシステムリソースの取得毎、開放毎にその情報(システムリソースの使用状況)をフックしてシステムリソースリンク63を更新する。
システムリソース管理タスク51のタスク群終了要求処理部54は、タスク群終了要求を受け取ると、当該終了要求を発行したタスク群のシステムリソース管理テーブル61を読み出す。タスク群終了要求処理部54に含まれるシステムリソースチェック部55は、このシステムリソース管理テーブル61のシステムリソースリンクに基づき、システムリソース開放忘れがないか否かをチェックし、必要に応じて当該開放忘れのシステムリソースを開放したり、ユーザに通知する処理を実行する。
このように、本実施の形態にかかるシステムリソース管理装置においては、システムリソース管理テーブルに各タスク群のシステムリソースリンクを有し、システムリソース取得毎、開放毎に更新して、タスク群が終了するタイミングで開放忘れのシステムリソースがあるか否かのチェック処理を行うことができるため、システムリソースの完全な管理を行うことができる。
次に、本実施の形態にかかるシステムリソース管理方法について詳細に説明する。図3は、本発明の実施の形態1にかかるシステム処理方法を示すフローチャートである。プロセッサ1の動作直後に、一般にリセット割り込みハンドラが起動し、その先のシステムstartup処理部12において、ハードウェアリソース2やソフトウェアの初期化を行う(ステップS100)。その後、リアルタイムシステムとして、予め登録してあるタスクを起動させる。
ここで、本実施の形態においては、初期登録のタスクからシステムリソース管理タスク51を起動する(ステップS101)。このため、システムリソース管理タスク51は他のユーザタスクよりも優先度を高く設定しておく。
システムリソース管理タスク51は、先ず、最初のタスク群の登録要求を処理する(ステップS102)。ここでは、最初のタスク群を登録する際のタスク群IDをgroup1とし、以下タスク群group1ということとする。ステップS102においては、タスク群group1を構成する全てのタスクをシステムリソース管理テーブル61に登録する。ここで、task11,task12,・・・,task1nはタスク群group1に登録すべきタスク識別子(タスクID)を示す。
次に、タスク群group1の処理を行う(ステップS103)。このステップS103の処理がタスク群group1の本体処理である。必要に応じて、ステップS102で登録済みのタスクを開始(生成)又は終了(削除)してもよい。リアルタイムOSのシステムコールやサービスコールなどのコマンドには、一般にシステムリソースの取得や、開放の機能がある。このステップS103におけるタスク群group1の処理本体では、これらの機能を利用して適宜システムリソースを取得しタスクを実行する。
タスク群group1の処理が終了すると、その終了要求を処理する(ステップS104)。タスク群group1の終了要求の処理が終わると、次のタスク群(タスク群group2)の処理を開始する。タスク群group2の処理も、タスク群group1と同様である。すなわち、システムリソース管理タスク51は、タスク群group2の登録要求を処理し(ステップS105)、タスク群group2は、その本体処理を実行し(ステップS106)、その後、システムリソース管理タスク51がタスク群group2の終了要求を処理する(ステップS107)。全てのタスク群の処理が終了した時点でシステム終了となる。
次に、システムリソース管理タスク51の登録処理、終了処理の処理方法について説明する。図4は、システムリソース管理タスク51の処理フローを示す図である。システムリソース管理タスク51は、上述したように、図3に示すステップS101で起動する。
システムリソース管理タスク51の起動直後に、システムリソース取得/開放フック処理部52が、システムリソース取得フックルーチンへのトラップ(trap)設定及びシステムリソース開放フックルーチンへのトラップ設定を行う(ステップS200)。システムリソース取得/開放フック処理部52のシステムリソース取得フック処理及び開放フック処理については後述する。
その後、システムリソース管理タスク51は、ユーザタスクからの要求を待つ(ステップS201)。要求には、タスク群登録要求とタスク群終了要求とがある。要求の待ち方としては、例えば上述のメールボックス等のシステムリソースを使用することができる。
要求が届くと、それがタスク群登録要求か否かを判定する(ステップS202)。要求がタスク群登録要求であれば、タスク群登録要求処理部53が、システムリソース管理テーブル61のタスク群(group)に対し、タスクを登録し(ステップS203)、ステップS201の要求待ちに戻る。タスクを登録する際には、上述のように、タスク識別子(タスクID)及びポインタを使用し、タスク群リンク62を生成する。
一方、要求がタスク群登録要求ではない場合(ステップS202:No)、要求がタスク群終了要求か否かを判定する(ステップS204)。要求がタスク群終了要求でなければ、存在しない要求のため、ステップS201の要求待ちに戻る。タスク群終了要求であれば、タスク群終了要求処理部54がシステムリソース管理テーブル61から、登録及び更新済みのタスク群groupに対応するシステムリソース管理テーブルを取得する(ステップS205)。
そして、次に、タスク群終了要求処理部54に含まれるシステムリソースチェック部55がシステムリソース管理テーブル61のシステムリソースリンク63に基づき、開放していないシステムリソースが存在するか否かを判定する(ステップS206)。開放していないシステムリソースが存在しない場合は、ステップS201の要求待ちに戻る。開放していないシステムリソースが存在する場合は、開放していないシステムリソース情報をログに残す(ステップS207)。次に、システムリソース管理タスク51をブレークさせ、ユーザに通知する(ステップS208)。最後にシステムを停止する。
次にシステムリソース取得/開放フック処理部52におけるシステムリソース取得フック処理について説明する。システムリソース取得フック処理には、システムリソース取得フック関数を使用することができる。システムリソース取得フック関数はシステムリソースの種別毎に用意される。ここでは、システムリソースとしてメモリブロックを取得する場合のフック処理について説明する。図5は、メモリブロックの取得フック処理を示すフローチャートである。
先ず、システムリソースを取得しようとするユーザタスクがメモリブロック取得システムコールを与えられたパラメータで発行する(ステップS301)。この際、実行可能状態、実行待ち状態、実行状態などのタスク状態に変更があっても構わない。次に、システム取得/開放フック処理部52が、発行元タスクがメモリブロックなどのシステムリソースとして取得に成功したか否かをチェックする(ステップS302)。発行元タスクがメモリブロックの取得に成功しなかった場合はメモリブロック取得フック関数を終える。
一方、発行元タスクがメモリブロックの取得に成功していれば、システム取得/開放フック処理部52は、発行元タスクをシステムリソース管理テーブル61のタスク群リンク62より検索する(ステップS303)。発行元タスクが発見できなければ(ステップS304:No)フック関数を終える。一方、発行元タスクを発見できたときは、発行元タスクが属するタスク群のシステムリソースリンクの末尾にメモリブロック情報を追加する(ステップS305)。こうして、システムリソース取得/開放フック処理部52は、各タスクがシステムリソースを取得する毎に、それをフックし、システムリソースリンクを更新していく。
次にシステムリソース取得/開放フック処理部52のシステムリソース開放フック処理について説明する。システムリソースの開放フック処理には、システムリソース開放フック関数を使用することができる。システムリソース開放フック関数もシステムリソースの種別毎に用意される。ここではシステムリソースとしてメモリブロックを開放する場合のフック処理について説明する。図6は、メモリブロックの開放フック処理を示すフローチャートである。
先ず、システムリソースを開放しようとするユーザタスクが、メモリブロック開放システムコールを与えられたパラメータで発行する(ステップS401)。この際、タスク状態に変更があっても構わない。次に、システム取得/開放フック処理部52が、発行元のユーザタスクがメモリブロックの開放に成功したか否かをチェックする(ステップS402)。発行元のタスクがメモリブロックの開放に成功しなかった場合はフック関数を終える。
一方、発行元のタスクがメモリブロックの開放に成功していれば、システム取得/開放フック処理部52は、発行元タスクをシステムリソース管理テーブル61のタスク群リンク62より検索する(ステップS403)。発行元タスクが発見できなければ(ステップS404:No)フック関数を終える。一方、発行元タスクを発見できたときは、システムリソース管理テーブル61において、該当するタスク群のシステムリソースリンク63からメモリブロックアクセスアドレスを検索する(ステップS405)。該当するメモリブロックアクセスアドレスが発見できなかった場合(ステップS406:No)はフック関数を終える。一方、発見できたときは、タスク群のシステムリソースリンク63からメモリブロック登録情報を削除する(ステップS407)。こうして、システム取得/開放フック処理部52は、各タスクがシステムリソースを開放する毎に、それをフックし、システムリソースリンクを更新していく。
次に、以上のシステムリソース管理方法について更に具体的に説明する。ここでは、タスク群group1がシステムリソース管理タスク51によって登録処理され、その後、タスク群group1がその処理を実行し、タスク群group1に含まれるタスクtask12がメモリブロックの開放を忘れたまま処理を終了した場合について説明する。タスク群登録要求として図3において、先ず、タスクを開始する(ステップS101)。上述のように、システムリソース管理タスク51の優先度が高く設定されているため、図2に示すシステムリソース管理タスク51が起動する。そして、システムリソース取得/開放フック処理部52がシステムリソースの取得と開放の各フックルーチンへのトラップ設定をそれぞれ行い(ステップS200)、その後、リソース要求待ちに入る(ステップS201)。
図1に戻り、タスク群group1(task11,task12,・・・,task1n)が登録要求する(ステップS102)。すると、図2のステップS201の要求が満たされ、システムリソース管理タスク51が、当該要求がタスク群登録要求か否かを判定する(ステップS202)。ここでは、タスク群登録要求であるので、要求どおり、システムリソース管理タスク51のタスク群登録要求処理部53が、システムリソース管理テーブル61のタスク群リンク62のタスク群group1に対して、登録要求しているtask11,task12,・・・,task1nを登録する。
次に、タスク群group1の処理において、例えばtask12よりメモリブロック取得システムコールを発行し、メモリブロックを取得する(ステップS103)。その際、図4に示すステップ200におけるトラップ設定において、メモリブロック取得フック関数が登録されているため、図5に示すメモリブロックの取得フック関数を呼ぶことになる。
先ず、メモリブロック取得を発行元のタスクがリアルタイムOSのシステムコールとして発行する(ステップS301)。このタスクのメモリブロック取得が成功したか否かを判定し(ステップS302)、正常にメモリブロックを取得できなければメモリブロックフック関数を終える。
正常にメモリブロックを取得できた場合について説明すると、発行元タスクを、システムリソース管理テーブルのタスク群リンク62より検索する(ステップS303)。本例ではtask12が発行元タスクであり、タスク群リンク62にtask12のタスク識別子は、登録されている。したがって、発行元タスクがタスク群リンク62に見つかるか否かを判定する(ステップS304)発行元タスクtask12の識別子がタスク群リンク62に登録されているため、タスクtask12が属するタスク群group1におけるシステムリソースリンク63の末尾にメモリブロック情報を追加する(ステップS305)。
上述したように、タスク群group1に登録されたタスクのリソース取得と開放の管理は、それに対応するシステムリソースリンク63により行う。システムリソースを取得すれば、そのシステムリソースの情報を該当するタスク群のシステムリソースリンクへ登録する。その際、システムリソース種別、その識別子、及び次の情報へのポインタにより登録する。こうして、本例においては、タスク群group1のタスクtask12が取得したシステムリソース(メモリブロック)が、システムリソースリンクに登録されることになる。このシステムリソースリンク63は、システムリソースを取得する度に登録され、開放すると登録から削除されることで更新されていく。
本例においては、タスクtask12が取得したメモリブロックを開放せずに、タスク群group1の処理を終え、タスク群group1の終了要求を行うことする(ステップS104)。この場合、図4のフローのS201の要求が満たされ、要求がタスク群終了要求と判断され、ステップ205に進む。ここで、タスク群終了要求処理部54は、登録済みのタスク群group1に対応するシステムリソース管理テーブルを得る(ステップS205)。こうして、本例においてはタスク群ID=1に対応するシステムリソースリンク63を得る。このタスク群ID=1に対応するシステムリソースリンク63に基づき、システムリソースチェック部55が開放していないシステムリソースがあるか否かを判断する(ステップS206)。本例においては、task12のシステム種別=メモリブロックのリソースが登録された状態である。
システムリソースチェック部55は、これを検出すると、このシステムリソース情報をログに残す(ステップS207)。本例では、開放忘れのシステムリソースの種別=メモリブロックと、メモリブロックのアクセスアドレスとをログに残すことになる。ログの場所は特に問わず、特定のメモリ領域や外部記憶等とすることができる。そして、タスクをブレークさせ、このシステムリソース開放忘れをユーザに通知する(ステップS208)。通知手段は特に問わず、デバッガ等のコンソール上に警告メッセージを出す等とすることができる。
本実施の形態においては、タスク群group1の登録要求でタスクを登録し、タスク群group1の構成タスク内でメモリブロックを取得し、そのメモリブロックを開放せずにタスク群group1の終了要求を行った場合には、そのメモリブロックの開放忘れを自動的に検出することができる。これは、システムリソース管理テーブル61にタスク群リンク62及びシステムリソースリンク63を有し、タスク群のシステムリソースリンク63をシステムリソース取得毎及び開放毎に更新し、タスク群が終了するタイミングで開放忘れのシステムリソースが存在するか否かのチェック処理を有するためであり、このことで完全にシステムリソース管理を行うことができる。
例えば、タスク群group1の終了要求の際に、システムリソースの開放忘れ防止のために、当該タスク群group1の処理にシステムリソースの開放処理を追加する等の処理が不要となり、システムリソースの取得又は開放毎に更新したシステムリソース管理テーブルにより、システムリソースの開放忘れを自動的に検出し、必要に応じてユーザに通知したり、システムリソースを開放する処理を実行したりすることが可能となる。また、本システムをシステムデバッグ時に用いると容易かつ正確にバグを取り除くことができる。
実施の形態2.
次に、本発明の実施の形態2について説明する。本実施の形態においては、実施の形態1の構成に加え、タスク群を動的にロード、アンロードする仕組みを付加し、システムが更に複雑化した場合について説明する。
次に、本発明の実施の形態2について説明する。本実施の形態においては、実施の形態1の構成に加え、タスク群を動的にロード、アンロードする仕組みを付加し、システムが更に複雑化した場合について説明する。
図7は、本実施の形態にかかるマルチタスクシステムの構成を説明する図である。なお、図7に示す本実施の形態及び後述する図12に示す実施の形態3にかかるマルチタスクシステムにおいて、図1に示す実施の形態1にかかるマルチタスクシステムと同一構成要素には同一の符号を付してその詳細な説明は省略する。本実施の形態にかかるシステム70においては、システムリソース管理タスク71及びシステムリソース取得/開放フック処理部72を有する。システムリソース管理タスク71は、プログラムロード要求処理部73、タスク群登録要求処理部74、及びプログラムアンロード要求処理部75を有し、プログラムアンロード要求処理部75は、システムリソースチェック部76を含んでいる。
図8は、本実施の形態にかかるシステムリソース管理方法を示すフローチャートである。先ず、実施の形態1と同様、プロセッサ1の動作直後に一般にリセット割り込みハンドラが起動し、その先のシステムstartup処理部12において、ハードウェアリソースやソフトウェアの初期化を行う(ステップS500)。その後、リアルタイムシステムとして、あらかじめ登録してあるタスクに起動がかかる。システムリソース管理タスク71は、他のユーザタスクよりも優先度を高く設定しておき、初期登録のタスクからシステムリソース管理タスク71を起動する(ステップS501)。
次に、プログラムロードを要求する(ステップS502)。動的プログラムは、function blockというロード単位でロードされる。要求を受け取るとプログラムロード要求処理部73は、メモリ又は外部記憶装置などのロードする装置識別子unit、アドレスやファイル名等を示すロードするファイル識別子file、ロードするプログラムメモリ領域areaなどを使用してプログラムをロードする。ここでは、プログラムロード要求により、プログラムメモリ領域area1にロード装置unit1のファイルfile1をロードする場合について説明する。
次に、タスク群の登録要求を行う(ステップS503)。このタスク群の登録処理では、ステップS502においてでロードしたプログラムを構成する全てのタスクを登録する。ここでは、ロードするプログラムメモリ領域をarea1とし、登録するタスク群をtask11,task12,・・・,task1nのタスク識別子(タスクID)で示される各タスクをタスク群group1に登録するものとする。このタスク群group1から動的プログラムfunction block1が構成される。
その後、タスク群group1、すなわち動的プログラムfunction block1の本体処理を行う(ステップS504)。ここで、各タスクがシステムリソース取得、開放の機能を利用する。必要に応じてステップS503にて登録済みのタスクを開始/終了してもよい。処理が終了すると、プログラムアンロードを要求する(ステップS505)。area1はアンロードするプログラムメモリ領域を示す。
更に、次の動的プログラムfunction block2以降も、ステップS502〜ステップS505と同様に、ステップS506〜ステップS509の処理がなされる。全てのfunction blockの実行が終了すると、システム終了となる。
次に、システムリソース管理タスク71の各処理について詳細に説明する。図9は、システムリソース管理タスク71の処理フローを示す図である。システムリソース管理タスク71は、図8に示すステップS501で起動される。
システムリソース管理タスク71の起動直後に、システムリソース取得/開放フック処理部72により、システムリソース取得フックルーチンへのトラップ設定及びシステムリソース開放フックルーチンへのトラップ設定を行う(ステップS600)。これらの処理については後述する。
次に、ユーザタスクからの要求を待つ(ステップS601)。本実施の形態においては、この要求には、プログラムロード要求、タスク群登録要求、プログラムアンロード要求がある。要求の待ち方は、リアルタイムOSのメールボックス等のシステムリソースを使用することができる。
要求が届けば、システムリソース管理タスク71は、当該要求がプログラムロード要求か否かを判定する(ステップS602)。要求がプログラムロード要求であれば、プログラムロード要求処理部73がプログラムメモリ領域areaに、ファイル装置unitの識別子fileで示すプログラムファイルをロードし(ステップS603)、ステップS601の要求待ちに戻る。
一方、要求がプログラムロード要求ではない場合、タスク群登録要求か否かを判定する(ステップS604)。要求がタスク群登録要求であれば、タスク群登録要求処理部74がプログラムメモリ領域areaに対し、タスク群を登録し(ステップS605)、ステップS601の要求待ちに戻る。タスク識別子としてタスクID等を使用する。ここでは、実施の形態1のシステムリソース管理テーブルの同様のタスク群リンクが生成される。
更に、要求がタスク群登録要求ではない場合、プログラムアンロード要求か否かを判定する(ステップS606)。なお、要求がプログラムアンロード要求でなければ、存在しない要求のため、ステップS601の要求待ちに戻る。要求がプログラムアンロード要求であれば、プログラムアンロード要求処理部75が登録済みのプログラムメモリ領域areaに対応するシステムリソース管理テーブルを得る(ステップS607)。
次に、プログラムアンロード要求処理部75のシステムリソースチェック部76が、取得したシステムリソース管理テーブルのシステムリソースリンクにおいて、開放していないシステムリソースが存在するか否かを判定する(ステップS608)。
開放していないシステムリソースが存在しない場合は、ステップS601の要求待ちに戻る。開放していないシステムリソースが存在する場合は、そのシステムリソース情報をログに残す(ステップS609)。次にシステムリソース管理タスク71をブレークさせ、ユーザに通知する(ステップS610)。最後にシステムを停止する。
次にシステムが使用するシステムリソース取得及び開放フック方法について説明する。本実施の形態におけるフック処理は、実施の形態1に示すそれと同様である。すなわち、システムリソース取得/開放フックには、それぞれシステムリソース取得/開放フック関数を使用することができ、システムリソース取得/開放フック関数はそれぞれシステムリソースの種別毎に用意される。ここでは、システムリソースとしてメモリブロックを取得及び開放する場合のフック処理について説明する。図10は、メモリブロックの取得フック処理を示すフローチャートである。図11は、メモリブロックの開放フック処理を示すフローチャートである。
先ず、システム取得開放フック処理においては、図10に示すように、システムリソースを取得しようとするユーザタスクがメモリブロック取得システムコールを与えられたパラメータで発行する(ステップS701)。この際、実行可能状態、実行待ち状態、実行状態などのタスク状態に変更があっても構わない。次に、システム取得/開放フック処理部72が、発行元タスクがメモリブロックの取得に成功したか否かをチェックする(ステップS702)。発行元タスクがメモリブロックの取得に成功しなかった場合はメモリブロック取得フック関数を終える。
一方、発行元タスクがメモリブロックの取得に成功していれば、システム取得/開放フック処理部72は、発行元タスクをシステムリソース管理テーブル61のタスク群リンク62より検索する(ステップS703)。発行元タスクが発見できなければ(ステップS704:No)フック関数を終える。一方、発行元タスクを発見できたときは、発行元タスクが属するタスク群のシステムリソースリンクの末尾にメモリブロック情報を追加する(ステップS705)。こうして、システム取得/開放フック処理部72は、各タスクがシステムリソースを取得する毎に、それをフックし、システムリソースリンクを更新していく。
次に、システム開放フック処理においては、図11に示すように、先ず、システムリソースを開放しようとするユーザタスクが、メモリブロック開放システムコールを与えられたパラメータで発行する(ステップS801)。この際、タスク状態に変更があっても構わない。次に、システム取得/開放フック処理部72が、発行元のユーザタスクがメモリブロックの開放に成功したか否かをチェックする(ステップS802)。発行元のタスクがメモリブロックの開放に成功しなかった場合はフック関数を終える。
一方、発行元のタスクがメモリブロックの開放に成功していれば、システム取得/開放フック処理部72は、発行元タスクをシステムリソース管理テーブル61のタスク群リンク62より検索する(ステップS803)。発行元タスクが発見できなければ(ステップS804:No)フック関数を終える。一方、発行元タスクを発見できたときは、システムリソース管理テーブル61において、該当するタスク群のシステムリソースリンク63からメモリブロックアクセスアドレスを検索する(ステップS805)。該当するメモリブロックアクセスアドレスが発見できなかった場合(ステップS806:No)はフック関数を終える。一方、発見できたときは、タスク群のシステムリソースリンク63からメモリブロック登録情報を削除する(ステップS807)。こうして、システム取得/開放フック処理部72は、各タスクがシステムリソースを開放する毎に、それをフックし、システムリソースリンクを更新していく。
次に、以上のシステムリソース管理方法について更に具体的に説明する。ここでは、プログラムfunction block1がプログラムロード要求し、このプログラムfunction block1を構成するタスク群group1を登録し、プログラムfunction block1を処理した際に、プログラムfunction block1を構成するタスク群group1に含まれるタスクtask12がメモリブロックを開放忘れした場合についての処理について説明する。
図8において、まず、システムリソース管理タスクを開始する(ステップS501)上述したように、システムリソース管理タスク71の優先度が高く設定されているため、図9に示すように、システムリソース管理タスク71が起動する。すると、システムリソース取得/開放フック処理部72がシステムリソースの取得と開放の各フックルーチンへのトラップ設定を行い(ステップS600)、リソース要求待ちに入る(ステップS601)。
図8に戻り、次にunit1のfile1で示されるプログラムfunction block1をプログラムメモリ領域area1にロード要求する(ステップS502)。これにより、図9のステップS601の要求が満たされる。要求がプログラムロード要求であると、プログラムロード要求処理部73が要求どおり、プログラムfunction block1を指定領域area1にロードし(ステップS603)、再びリソース要求待ちとなる(ステップS601)。
次に、図8に戻り、プログラムfunction block1を構成するタスク群group1=task11,task12,・・・,task1nを、プログラムメモリ領域area1にタスク群登録要求する(ステップS503)。これにより、図6のステップS601の要求が満たされ、要求がタスク群登録要求であると判定され(ステップS604:Yes)、タスク群登録要求処理部74は、要求どおりプログラムメモリ領域area1に対して、task11,task12,・・・,task1nを登録する。
次に図8に戻りプログラムfunction block1の処理を開始する。ここでは、例えばtask12よりメモリブロック取得システムコールを発行し、メモリブロックを取得する(ステップS504)。その際、図9に示すステップS600においてメモリブロック取得フック関数が登録されているため、図10に示すメモリブロックの取得フック関数を呼ぶことになる。
この場合、先ず、メモリブロック取得をリアルタイムOSのシステムコールとしてタスクtask12が発行する(ステップS701)。タスクtask12が正常にメモリブロック取得できれば、システムリソース取得/開放フック処理部72は、発行元タスク(タスクtask12)をタスク群登録リンクから検索する(ステップS703)。ここでは、発行元タスクtask12がタスク群リンクに登録されているので、当該タスクtask12が属するタスク群group1のシステムリソースリンクの末尾にメモリブロック情報を追加する(ステップS705)。
図8に戻り、次に、プログラムfunction block1の処理を終える。ここでは、取得したシステムリソースを開放しないままプログラムアンロード要求を行うとする(ステップS505)。これにより、図9に示すステップS601の要求が満たされる。ここで、要求がプログラムアンロード要求であるのでステップS606に進み、プログラムアンロード要求処理部75は、登録済みのプログラムメモリ領域area1に対応するシステムリソース管理テーブルを得る(ステップS607)。ここでは、タスク群ID=1に対応するシステムリソースリンクを得ることになる。
そして、システムリソースチェック部76は、このシステムリソースリンクに基づき開放していないシステムリソースが存在するか否かをチェックする(ステップS608)。本例においては、システム種別=メモリブロックのリソースが存在するため、このシステムリソース情報をログに残す(ステップS609)。つまり、当該のメモリブロックの種別と、メモリブロックのアクセスアドレスとをログに残すことになる。そして、システムリソース管理タスク71をブレークさせ、ユーザに通知し(ステップS610)。システムを停止する。ログの残し方、ユーザへの通知方法は実施の形態1と同様とすることができる。
本実施の形態においては、実施の形態1と同様に、極めて正確かつ容易にデバック処理を行うことができる。また、タスク群が動的にロードされるシステムにおいても、プログラムロード要求でfunction block1をロードし、function block1を構成するタスク群group1を登録する。登録したタスク群group1の構成タスク内でメモリブロックなどのシステムリソースを取得し、そのメモリブロックを開放せずにプログラムアンロード要求を行えば、システムリソースの取得又は開放毎に更新したシステムリソース管理テーブルによりメモリブロックなどのシステムリソース開放わすれを自動的に検出してユーザに通知するなどの措置をとることができる。
実施の形態3.
次に、本発明の実施の形態3について説明する。本実施の形態においては、実施の形態2の構成に加え、アンロードする際に解放忘れのシステムリソースを自動的に開放する機能を付加する。このことにより、例えばシステムの一部が故障などしても、システムの運転を続行することができ、よりフェイルソフトなシステムを提供することができる。
次に、本発明の実施の形態3について説明する。本実施の形態においては、実施の形態2の構成に加え、アンロードする際に解放忘れのシステムリソースを自動的に開放する機能を付加する。このことにより、例えばシステムの一部が故障などしても、システムの運転を続行することができ、よりフェイルソフトなシステムを提供することができる。
図12は、本実施の形態にかかるマルチタスクシステムの構成を説明する図である。図12に示すように、本実施の形態にかかるシステム80においては、システムソース管理タスク81は、実施の形態2と同様に、プログラムロード要求処理部83、タスク群登録要求処理部84及びプログラムアンロード登録要求処理部85を有する。そして、本実施の形態におけるプログラムアンロード登録要求処理部85は、システムリソースチェック部86にシステムリソース開放部87を含む。システムリソース開放部87は、システムリソースチェック部86にてシステムリソース開放忘れを検出した場合にこれを開放するものである。
本システムにおけるシステムリソース管理方法は、図8に示す実施の形態2と同様である。次に、システムリソース管理タスク81の各処理について詳細に説明する。図13は、システムリソース管理タスク81の処理フローを示す図である。システムリソース管理タスク81の起動直後のステップS900から、開放していないシステムリソースが存在するか否かをチェックするステップS908までの処理は、図9に示すステップS600からステップS608までの処理と同様である。
そして、ステップS908において、開放していないシステムリソースが存在する場合は、本実施の形態にかかるシステムリソースチェック部86は、そのシステムリソースはメモリブロックか否かの判定をする(ステップS909)。当該システムリソースがメモリブロックであれば、そのメモリブロックの開放をOSのシステムコールとして発行する(ステップS910)。
また、システムリソースがメモリブロックではない場合、イベントフラグであるか否かを判定する(ステップS911)。イベントフラグであれば、そのイベントフラグの開放をOSのシステムコールとして発行する(ステップS912)。以下、同様に、管理する全てのシステムリソースの種別判断処理を行い、その判定結果をシステムリソース情報としてログに残す(ステップS913)。
次に、OSのシステムコールとして発行し、開放したシステムリソースの情報を、システムリソース管理テーブルのシステムリソースリンクから削除する(ステップS914)。以上のステップS908〜ステップS914の処理を、システムリソースリンクにシステムリソース情報が存在しなくなるまで繰り返す。
例えば、実施の形態2における例のように、システムリソース開放忘れとしてメモリブロックが存在する場合、ステップS980にて開放していないシステムリソースが存在すると判断され、ステップS909にて、メモリブロックであることが判定される。この場合、そのメモリブロックの開放をOSのシステムコールとして発行し(ステップS910)、そのシステムリソース情報をログに残す(ステップS913)。つまり、当該メモリブロックの種別と、メモリブロックのアクセスアドレスとをログに残す。そして、開放したメモリブロックのメモリブロック情報を、システムリソースリンクから削除する(ステップS914)。このような処理を繰り返し、システムリソースリストが空になった時点で処理を終了する。これにより、全ての開放忘れのシステムリソースを開放することができる。
本実施の形態においては、開放忘れのシステムリソースを自動的に検出し、自動的に開放することができるので、開放忘れのシステムリソースが蓄積されていくことがなく、空きメモリの枯渇を防止することができ、よって空きメモリの枯渇を最大限防止するシステムを提供することができる。また、自動開放した旨をユーザに通知するようにしてもよい。本実施の形態は、システム運用時に用いると、特に有効である。
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
10,70,80 システム
1 プロセッサ
2 ハードウェアリソース
11 リアルタイムOSカーネル
12 システムstartup処理部
13 タスク管理モジュール
14 リソース管理モジュール
15 システムコール処理部
21 アプリケーションタスク
22 アプリケーションハンドラ
31 リアルタイムOSタスク管理情報
32 リアルタイムOSリソース管理情報
33 リアルタイムOSリソース
41 アプリケーションデータ
51,71,81 システムリソース管理タスク
52,72,82 システムリソース取得/開放フック処理部
53,74,84 タスク群登録要求処理部
54 タスク群終了要求処理部
55,76,86 システムリソースチェック部
63 システムリソースリング
61 システムリソース管理テーブル
62 タスク群リンク
63 システムリソースリンク
73,83 プログラムロード要求処理部
75,85 プログラムアンロード要求処理部
87 システムリソース開放部
1 プロセッサ
2 ハードウェアリソース
11 リアルタイムOSカーネル
12 システムstartup処理部
13 タスク管理モジュール
14 リソース管理モジュール
15 システムコール処理部
21 アプリケーションタスク
22 アプリケーションハンドラ
31 リアルタイムOSタスク管理情報
32 リアルタイムOSリソース管理情報
33 リアルタイムOSリソース
41 アプリケーションデータ
51,71,81 システムリソース管理タスク
52,72,82 システムリソース取得/開放フック処理部
53,74,84 タスク群登録要求処理部
54 タスク群終了要求処理部
55,76,86 システムリソースチェック部
63 システムリソースリング
61 システムリソース管理テーブル
62 タスク群リンク
63 システムリソースリンク
73,83 プログラムロード要求処理部
75,85 プログラムアンロード要求処理部
87 システムリソース開放部
Claims (9)
- マルチタスクシステムにおけるシステムリソースの取得及び開放を管理するシステムリソース管理装置であって、
前記システムリソースの取得及び開放を実行する1以上のタスクからなるタスク群を管理する管理タスクと、
各タスクにおけるシステムリソースの取得又は開放状況を検出する取得開放検出部とを有し、
前記取得開放検出部は、前記タスク群のリソース取得又は開放状況を登録するリソース管理テーブルを、その検出結果に基づき更新し、
前記管理タスクは、前記リソース管理テーブルに基づき前記システムリソースの開放状況をチェックする
ことを特徴とするシステムリソース管理装置。 - 前記管理タスクは、前記システムリソース管理テーブルにタスク群を識別する識別情報を登録する登録処理部と、前記リソース管理テーブルに登録されたタスク群の終了処理をする終了処理部とを有し、
前記取得開放検出部は、前記リソース管理テーブルに登録されたタスク群の処理が開始されると各タスクのシステムリソースの取得又は開放状況を検出し、この検出結果に基づき前記リソース管理テーブルを更新し、
前記終了処理部は、前記タスク群の処理が終了する際に、前記システムリソース管理テーブルに基づき前記システムリソースの開放状態をチェックする
ことを特徴とする請求項1記載のシステムリソース管理装置。 - 前記管理タスクは、一のタスク群で構成されたプログラムをメモリにロードするロード処理部と、前記ロードされたプログラムを構成するタスク群の識別情報を前記リソース管理テーブルに登録する登録処理部と、前記メモリにロードしたプログラムをアンロードするアンロード処理部とを有し、
前記取得開放検出部は、前記リソース管理テーブルに登録されたタスク群から構成されるプログラムの処理が開始されると各タスクのシステムリソースの取得又は開放状況を検出し、この検出結果に基づき前記リソース管理テーブルを更新し、
前記アンロード処理部は、前記プログラムのアンロードの際に、前記システムリソース管理テーブルに基づき前記システムリソースの開放状態をチェックする
ことを特徴とする請求項1記載のシステムリソース管理装置。 - 前記管理タスクは、システムリソースの開放忘れを検出した場合、当該検出結果をユーザに通知する
ことを特徴とする請求項1乃至3のいずれか1項記載のシステムリソース管理装置。 - 前記管理タスクは、システムリソースの開放忘れを検出すると、当該システムリソースを開放する
ことを特徴とする請求項1乃至3のいずれか1項記載のシステムリソース管理装置。 - マルチタスクシステムにおけるシステムリソースの取得及び開放を管理するシステムリソース管理方法であって、
前記システムリソースの取得及び開放を実行する1以上のタスクからなるタスク群の各タスクを識別する識別情報をシステムリソース管理テーブルに登録し、
前記システムリソース管理テーブルに登録されたタスク群の処理が実行されると、各タスクにおけるシステムリソースの取得又は開放状況を検出し、
前記検出結果を前記システムリソース管理テーブルに登録して更新し、
前記タスク群の処理を終了する際、更新されたリソース管理テーブルに基づき前記システムリソースの開放状況をチェックする
ことを特徴とするシステムリソース管理方法。 - マルチタスクシステムにおけるシステムリソースの取得及び開放を管理するシステムリソース管理方法であって、
前記システムリソースの取得及び開放を実行する1以上のタスクからなるタスク群で構成されたプログラムをメモリにロードし、
前記メモリにロードされたプログラムを構成するタスク群の各タスクを識別する識別情報をシステムリソース管理テーブルに登録し、
前記システムリソース管理テーブルに登録されたタスク群で構成されるプログラムの処理が実行されると、各タスクにおけるシステムリソースの取得又は開放状況を検出し、
前記検出結果を前記システムリソース管理テーブルに登録して更新し、
前記プログラムを前記メモリからアンロードする際、更新されたリソース管理テーブルに基づき前記システムリソースの開放状況をチェックする
ことを特徴とするシステムリソース管理方法。 - マルチタスクシステムにおけるシステムリソースの取得及び開放を管理する処理をコンピュータに実行させるためのプログラムであって、
前記システムリソースの取得及び開放を実行する1以上のタスクからなるタスク群の各タスクを識別する識別情報をシステムリソース管理テーブルに登録し、
前記システムリソース管理テーブルに登録されたタスク群の処理が実行されると、各タスクにおけるシステムリソースの取得又は開放状況を検出し、
前記検出結果を前記システムリソース管理テーブルに登録して更新し、
前記タスク群の処理を終了する際、更新されたリソース管理テーブルに基づき前記システムリソースの開放状況をチェックする
ことを特徴とするプログラム。 - マルチタスクシステムにおけるシステムリソースの取得及び開放を管理する処理をコンピュータに実行させるためのプログラムであって、
前記システムリソースの取得及び開放を実行する1以上のタスクからなるタスク群で構成されたプログラムをメモリにロードし、
前記メモリにロードされたプログラムを構成するタスク群の各タスクを識別する識別情報をシステムリソース管理テーブルに登録し、
前記システムリソース管理テーブルに登録されたタスク群で構成されるプログラムの処理が実行されると、各タスクにおけるシステムリソースの取得又は開放状況を検出し、
前記検出結果を前記システムリソース管理テーブルに登録して更新し、
前記プログラムを前記メモリからアンロードする際、更新されたリソース管理テーブルに基づき前記システムリソースの開放状況をチェックする
ことを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005156048A JP2006331213A (ja) | 2005-05-27 | 2005-05-27 | システムリソース管理装置、システムリソース管理方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005156048A JP2006331213A (ja) | 2005-05-27 | 2005-05-27 | システムリソース管理装置、システムリソース管理方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006331213A true JP2006331213A (ja) | 2006-12-07 |
Family
ID=37552818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005156048A Pending JP2006331213A (ja) | 2005-05-27 | 2005-05-27 | システムリソース管理装置、システムリソース管理方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006331213A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009199303A (ja) * | 2008-02-21 | 2009-09-03 | Fuji Xerox Co Ltd | 画像処理装置、画像処理プログラム |
JP2016018470A (ja) * | 2014-07-10 | 2016-02-01 | 富士通株式会社 | 情報処理装置,情報処理方法及び情報処理プログラム |
JP2021526274A (ja) * | 2018-06-15 | 2021-09-30 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | 仮想マシンを管理する方法、装置、およびシステム |
CN114710497A (zh) * | 2022-03-11 | 2022-07-05 | 厦门理工学院 | 一种车联网多任务卸载最小响应时间获取方法 |
-
2005
- 2005-05-27 JP JP2005156048A patent/JP2006331213A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009199303A (ja) * | 2008-02-21 | 2009-09-03 | Fuji Xerox Co Ltd | 画像処理装置、画像処理プログラム |
JP2016018470A (ja) * | 2014-07-10 | 2016-02-01 | 富士通株式会社 | 情報処理装置,情報処理方法及び情報処理プログラム |
JP2021526274A (ja) * | 2018-06-15 | 2021-09-30 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | 仮想マシンを管理する方法、装置、およびシステム |
JP7074302B2 (ja) | 2018-06-15 | 2022-05-24 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | 仮想マシン管理方法、仮想マシン管理システム、仮想マシン管理装置、不揮発性コンピュータ可読記憶媒体およびコンピュータプログラム |
CN114710497A (zh) * | 2022-03-11 | 2022-07-05 | 厦门理工学院 | 一种车联网多任务卸载最小响应时间获取方法 |
CN114710497B (zh) * | 2022-03-11 | 2023-06-02 | 厦门理工学院 | 一种车联网多任务卸载最小响应时间获取方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101255382B1 (ko) | 운영체제에 친숙한 부트로더 | |
US10198343B2 (en) | Method for debugging a computer program | |
US20100058351A1 (en) | Information processing apparatus and information processing method | |
KR101766695B1 (ko) | 복수의 중앙 처리 장치를 구비한 컴퓨터 시스템을 위한 부팅 방법 | |
US20130160028A1 (en) | Method and apparatus for low latency communication and synchronization for multi-thread applications | |
US8006246B2 (en) | Apparatus for forcibly terminating thread blocked on input/output operation and method for the same | |
JP2006277062A (ja) | アプリケーション管理装置およびそのソフトウェアを格納した記憶媒体 | |
US20120222051A1 (en) | Shared resource access verification | |
US8132174B2 (en) | Concurrency management in cluster computing of business applications | |
CN113721990A (zh) | 数据处理方法、数据处理设备、加速卡和存储介质 | |
CN114281431A (zh) | 函数调用方法、装置、介质及嵌入式设备和操作系统 | |
JP2006331213A (ja) | システムリソース管理装置、システムリソース管理方法及びプログラム | |
CN113342554B (zh) | Io多路复用方法、介质、设备和操作系统 | |
CN108345496B (zh) | 一种运行应用程序的方法及装置 | |
JP5067723B2 (ja) | 情報処理装置、情報処理方法およびプログラム | |
JP2000078169A (ja) | サーバ設定装置 | |
US9727381B2 (en) | Image forming apparatus and resource management method | |
JP5458147B2 (ja) | イベント通知方法、プログラム、および装置 | |
US8117607B2 (en) | Administration of kernel extensions | |
US20100250507A1 (en) | Enumeration of a concurrent data structure | |
CN115878336A (zh) | 锁操作中的信息处理方法、装置及计算设备 | |
CN108874560B (zh) | 进行通信的方法和通信设备 | |
US9619306B2 (en) | Information processing device, control method thereof, and recording medium | |
CN108228362B (zh) | 一种VxWorks系统的兼容方法、模块及道系统 | |
JP6462521B2 (ja) | 通常部の故障が安全部へ伝播することを防止するapi及びその処理部 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080213 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20091007 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091013 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100302 |