(57)【要約】【課題】シェルプログラム上でプロセスを停止する際に、停止対象以外の別のプロセスの誤停止を防止する。【解決手段】シェルプログラムからプロセスＩＤを指定してプロセスを停止させることができるオペレーティングシステムであって、プロセスＩＤ毎に、プロセスＩＤを再利用できない状態にするための識別子を登録するプロセス管理テーブルと、未使用の識別子を割り当て、当該割り当てた識別子を前記プロセス管理テーブル内の停止対象のプロセスに対応するプロセスＩＤのレコードに追加する手段１と、前記停止対象のプロセスを停止させる手段２と、前記プロセス管理テーブル内の前記手段２で停止させたプロセスに対応するプロセスＩＤのレコード内の前記手段１で割り当てた識別子を削除する手段３とを有する。【選択図】図８
2010020510.tif 000002
【特許請求の範囲】
【請求項１】
シェルプログラムからプロセスＩＤを指定してプロセスを停止させることができるオペレーティングシステムであって、
プロセスＩＤ毎に、プロセスＩＤを再利用できない状態にするための識別子を登録するプロセス管理テーブルと、
未使用の識別子を割り当て、当該割り当てた識別子を、前記プロセス管理テーブル内の停止対象のプロセスに対応するプロセスＩＤのレコードに追加する手段１と、
前記停止対象のプロセスを停止させる手段２と、
前記プロセス管理テーブル内の前記手段２で停止させたプロセスに対応するプロセスＩＤのレコード内の前記手段１で割り当てた識別子を削除する手段３とを有することを特徴とするオペレーティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュアプロセス管理オペレーティングシステムに係り、特に、シェルプログラム上でプロセスを停止する際に、停止させようとしているプロセス以外のプロセスの誤停止を防止する技術に関する。
【背景技術】
【０００２】
従来のオペレーティングシステムでは、下記特許文献１に記載されているように、プロセステーブルを使用してプロセスの管理を行う方式が知られている。
【０００３】
なお、本願発明に関連する先行技術文献としては以下のものがある。
【特許文献１】特開平６−２１４８０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
前述したオペレーティングシステムでは、プロセスＩＤの再利用が行われては困るタイミングを、ユーザプログラムからオペレーティングシステムに通知する手段がなかった。
一方、プロセスＩＤを指定してプロセスを停止する場合、プロセスの状態を表示、プロセスＩＤを取得、プロセスの停止という３つのステップが存在する。
しかしながら、プロセスＩＤを取得してから、プロセスの停止を行うまでの間に、停止させようとするプロセスが停止し、オペレーティングシステムによってプロセスＩＤが再割当される可能性がある。
このため、上述したオペレーティングシステムでは、プロセス停止を行ったタイミングで、意図しないプロセスを停止する恐れがあった。
また、既存のオペレーティングシステムでは、オペレーティングシステムが提供するＡＰＩのレイヤではプロセスを停止する際にプロセスＩＤの再利用を抑止する実装が行われている場合もあるが、シェルプログラムからオペレーティングシステムが提供するコマンドを経由してプロセスを停止する場合の解決策はなかった。
本発明は、前記従来技術の問題点を解決するためになされたものであり、本発明の目的は、シェルプログラム上でプロセスを停止する際に、停止対象以外の別のプロセスの誤停止を防止することが可能となる技術を提供することにある。
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述及び添付図面によって明らかにする。
【課題を解決するための手段】
【０００５】
本願において開示される発明のうち、代表的なもの概要を簡単に説明すれば、下記の通りである。
前述の目的を達成するために、本発明は、シェルプログラムからプロセスＩＤを指定してプロセスを停止させることができるオペレーティングシステムであって、プロセスＩＤ毎に、プロセスＩＤを再利用できない状態にするための識別子を登録するプロセス管理テーブルと、未使用の識別子を割り当て、当該割り当てた識別子を、前記プロセス管理テーブル内の停止対象のプロセスに対応するプロセスＩＤのレコードに追加する手段１と、前記停止対象のプロセスを停止させる手段２と、前記プロセス管理テーブル内の前記手段２で停止させたプロセスに対応するプロセスＩＤのレコード内の前記手段１で割り当てた識別子を削除する手段３とを有することを特徴とする。
【発明の効果】
【０００６】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば、下記の通りである。
本発明のオペレーティングシステムによれば、シェルプログラム上でプロセスを停止する際に、停止対象以外の別のプロセスの誤停止を防止することが可能となる。
【発明を実施するための最良の形態】
【０００７】
以下、図面を参照して本発明の実施例を詳細に説明する。
なお、実施例を説明するための全図において、同一機能を有するものは同一符号を付け、その繰り返しの説明は省略する。
図１は、本発明の実施例のオペレーティングシステムの全体構成を示す図である。
図１において、１００はオペレーティングシステム、１０１はオペレーティングシステムが使用するメモリ、１０２はオペレーティングシステムが使用する永続記憶装置を示す。
オペレーティングシステム１００は、オペレーティングシステムが使用するメモリ１０１と、オペレーティングシステムが使用する永続記憶装置１０２を持つ。
図２は、図１のメモリ１０１の構成を示す図である。
図２において、１０１は前述のオペレーティングシステムが使用するメモリ、２００はプロセスを管理するテーブル（以下、プロセス管理テーブルと言う）を示す。オペレーティングシステムが使用するメモリ１０１は、プロセス管理テーブル２００を持つ。
図３は、図２のプロセス管理テーブル２００の構成を示す図である。
図３において、２００は前述のプロセス管理テーブル、３０１はプロセスＩＤ、３０２はプロセスの状態、３０３はプロセスＩＤがロック中であることを管理するテーブル（以下、プロセスロックテーブルと言う）を示す。プロセス管理テーブル２００は、プロセスＩＤ３０１、プロセスの状態３０２、プロセスロックテーブル３０３を要素として持つ配列構造である。
図４は、図３のプロセスロックテーブル３０３の構成を示す図である。
図４において、３０３は前述のプロセスロックテーブル、４０１はプロセスＩＤをロックしている識別子を示す。プロセスロックテーブル３０３は、プロセスＩＤをロックしている識別子４０１を要素として持つ配列構造である。
ここで、１つのプロセスロックテーブル３０３に対して、複数個の識別子４０１が設定される。その理由は、後述する複数のユーザプログラム５０３（所謂、オペレータ）から、同時に同じプロセスを停止することを想定されるためである。
【０００８】
図５は、図１の永続記憶装置の構成を示す図である。
図５において、１０２は前述のオペレーティングシステムが使用する永続記憶装置、５０１はプロセス管理テーブル２００をロックする・ロックを外す（以下、ロック・アンロックする）ＡＰＩ（Application Program Interface）群、５０２はプロセス管理テーブル２００をロック・アンロックするコマンド群、５０３はプロセスを停止するユーザプログラムを示す。
オペレーティングシステムが使用する永続記憶装置１０２は、プロセス管理テーブル２００をロック・アンロックするＡＰＩ群５０１と、プロセス管理テーブル２００をロック・アンロックするコマンド群５０２を持つ。
図６は、図５のＡＰＩ群５０１の構成を示す図である。
図６において、５０１は前述のプロセス管理テーブル２００をロック・アンロックするＡＰＩ群、６０１はプロセス管理テーブル２００をロックするＡＰＩ、６０２はプロセス管理テーブル２００をアンロックするＡＰＩを示す。
プロセス管理テーブル２００をロック・アンロックするＡＰＩ群５０１は、プロセス管理テーブル２００をロックするＡＰＩ６０１と、プロセス管理テーブル２００をアンロックするＡＰＩ６０２を持つ。
図７は、図５のコマンド群５０２の構成を示す図である。
図７において、５０２は前述のプロセス管理テーブル２００をロック・アンロックするコマンド群、７０１はプロセス管理テーブル２００をロックするコマンド、７０２はプロセス管理テーブル２００をアンロックするコマンドである。
プロセス管理テーブル２００をロック・アンロックするコマンド群５０２は、プロセス管理テーブル２００をロックするコマンド７０１と、プロセス管理テーブル２００をアンロックするコマンド７０２を持つ。
【０００９】
次に、図１から図１１を用いて、本発明の実施例のオペレーティングシステムにおいて、プロセスの誤停止を防止する手順について説明する。
ユーザプログラム５０３が、停止対象のプロセスを停止させる処理を行う場合、図８の手順でプロセスを停止する。
図８は、本発明の実施例のオペレーティングシステムにおいて、停止対象のプロセスを停止する処理手順を示すフローチャートである。
始めに、プロセスの状態を表示し（ステップ８０１）、表示結果により、停止させようとするプロセスのプロセスＩＤを取得する（ステップ８０２）。
次に、プロセス管理テーブル２００をロックするコマンド７０１を実行し、識別子を取得する（ステップ８０３）。
ステップ８０３で処理が失敗した場合はプロセスは停止したものと見なし、処理を終了する。
ステップ８０３で処理が成功した場合は、再度状態を表示し（ステップ８０４）、プロセスを停止させる（ステップ８０５）。
最後に、ステップ８０３で得られた識別子を指定して、プロセス管理テーブル２００をアンロックするコマンド７０２を実行し、アンロックを行い（ステップ８０６）、処理を終了する。
【００１０】
図９は、図８のステップ８０３の処理手順を詳細に示すフローチャートである。
プロセス管理テーブル２００をロックする場合は、始めに、プロセスＩＤを指定して、プロセスロックコマンドを実行し（ステップ９０１）、プロセス管理テーブル２００をロックするＡＰＩ６０１を呼び出す（ステップ９０２）。
次に、プロセス管理テーブル２００をロックするＡＰＩ６０１は、プロセス管理テーブル２００を参照し、プロセスＩＤが存在するか調べる（ステップ９０３）、ステップ９０３でプロセスＩＤが存在しない場合はロック失敗となり、処理を終了する。
ステップ９０３で存在した場合、未使用の識別子を割り当て（ステップ９０４）、ステップ９０３で割り当てた識別子をプロセスロックテーブル３０３に追加し（ステップ９０５）、処理を終了する。
【００１１】
図１０は、図８のステップ８０６の処理手順を詳細に示すフローチャートである。
プロセス管理テーブル２００をアンロックする場合、始めに、プロセスＩＤと識別子を指定して、プロセス管理テーブル２００をアンロックするコマンド７０２を実行する（ステップ１００１）。
プロセス管理テーブル２００をアンロックするコマンド７０２は、プロセス管理テーブル２００をアンロックするＡＰＩ６０２を呼び出す（ステップ１００２）。
プロセス管理テーブル２００をアンロックするＡＰＩ６０２は、プロセスロックテーブル３０３を参照し、識別子が存在するか否かを調べる（ステップ１００３）、ステップ１００３で識別子が存在しない場合はアンロック失敗となり、作業が完了する。
ステップ１００３で識別子が存在した場合、プロセスロックテーブル３０３から識別子を削除し（ステップ１００４）、処理を終了する。
【００１２】
図１１は、オペレーティングシステム１００が、プロセスＩＤを割り当てる処理手順を示すフローチャートである。
始めに、オペレーティングシステム１００は、調査するプロセスＩＤを持つプロセスが生存しているかを調べる（ステップ１１０１）。
ステップ１１０１で、調査するプロセスＩＤを持つプロセスが生存している場合、そのプロセスＩＤは使用せず、調査するプロセスＩＤとして別のプロセスＩＤを選択し（ステップ１１０４）、ステップ１１０１を繰り返す。
ステップ１１０１にて、調査するプロセスＩＤを持つプロセスが生存していない場合、プロセスロックテーブルに識別子が存在しているかを調べる（ステップ１１０２）。
ステップ１１０２にて、識別子が存在している場合は、そのプロセスＩＤは使用せず、調査するプロセスＩＤとして別のプロセスＩＤを選択し（ステップ１１０４）、ステップ１１０１を繰り返す。
ステップ１１０２にて、識別子が存在しない場合、プロセスＩＤを割り当て（ステップ１１０３）、処理を終了する。
以上説明したように、本実施例では、図８のステップ８０３からステップ８０６までの間は、図１１のステップ１１０２の処理によりプロセスＩＤが再利用されないため、プロセスＩＤを指定してプロセスを停止させるまでの間に、他のプロセスがプロセスＩＤを再利用されることはない。
このように、本実施例によれば、シェルプログラムにおいて、プロセスを停止する処理において、プロセスを停止させようとした状態から、プロセスＩＤをキーとしてプロセスを停止させる状態までの間にプロセスＩＤが切り替わらず、確実に狙ったプロセスを停止させることが可能となる。
以上、本発明者によってなされた発明を、前記実施例に基づき具体的に説明したが、本発明は、前記実施例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは勿論である。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施例のオペレーティングシステムの全体構成を表す図である。
【図２】図１のメモリの構成を示す図である。
【図３】図２のプロセス管理テーブルの構成を示す図である。
【図４】図３のプロセスロックテーブルの構成を示す図である。
【図５】図１の永続記憶装置の構成を示す図である。
【図６】図５のＡＰＩ群の構成を示す図である。
【図７】図５のコマンド群の構成を示す図である。
【図８】本発明の実施例のオペレーティングシステムにおいて、プロセスを停止する処理手順を示すフローチャートである。
【図９】図８のステップ８０３の処理手順を詳細に示すフローチャートである。
【図１０】図８のステップ８０６の処理手順を詳細に示すフローチャートである。
【図１１】本発明の実施例のオペレーティングシステムが、プロセスＩＤを割り当てる処理手順を示すフローチャートである。
【符号の説明】
【００１４】
１００  オペレーティングシステム
１０１  オペレーティングシステム１００が使用するメモリ
１０２  オペレーティングシステム１００が使用する永続記憶装置
２００  プロセス管理テーブル
３０１  プロセスＩＤ
３０２  プロセスの状態
３０３  プロセスロックテーブル
４０１  プロセスＩＤをロックしている識別子
５０１  プロセス管理テーブル２００をロック・アンロックするＡＰＩ群
５０２  プロセス管理テーブル２００をロック・アンロックするコマンド群
５０３  プロセスを停止するユーザプログラム
６０１  プロセス管理テーブル２００をロックするＡＰＩ
６０２  プロセス管理テーブル２００をアンロックするＡＰＩ
７０１  プロセス管理テーブル２００をロックするコマンド
７０２  プロセス管理テーブル２００をアンロックするコマンド
【図１】
2010020510.tif 000003
【図２】
2010020510.tif 000004
【図３】
2010020510.tif 000005
【図４】
2010020510.tif 000006
【図５】
2010020510.tif 000007
【図６】
2010020510.tif 000008
【図７】
2010020510.tif 000009
【図８】
2010020510.tif 000010
【図９】
2010020510.tif 000011
【図１０】
2010020510.tif 000012
【図１１】
2010020510.tif 000013