(57)【要約】【課題】  ユーザ・モード・プロセスが特権実行モードで動作することを可能にするための方法を提供する。【解決手段】  本発明の方法は、特権実行モード及び非特権実行モードを含むオペレーティング・システム、並びに、非特権実行モードで動作する複数のユーザ・モード・ストリングを提供する。コンピュータ装置が、１つ又は複数の指定されたタスクを遂行するために特権実行モードで動作するための要求を第１ユーザ・モード・ストリングから受ける。本発明の方法は、第１ユーザ・モード・ストリングが特権実行モードで動作することを承認し、第１ユーザ・モード・ストリングは、特権実行モードを使用して１つ又は複数の指定されたタスクを遂行する。本発明の方法は、１つ又は複数の指定されたタスクの完了後、第１ユーザ・モード・ストリングが特権実行モードで動作することを継続して許容する。【選択図】  図１
2006012170.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサを含むコンピュータ装置において、ユーザ・モード・プロセスが特権実行モードで動作することを可能にする方法であって、
特権実行モード及び非特権実行モードを含むオペレーティング・システムを提供するステップと、
前記非特権実行モードで動作する複数のユーザ・モード・ストリングを提供するステップと、
１つ又は複数の指定されたタスクを遂行するために前記特権実行モードで動作することを第１ユーザ・モード・ストリングによって要求するステップと、
前記第１ユーザ・モード・ストリングが前記特権実行モードで動作することを承認するステップと、
前記特権実行モードを使用して、前記１つ又は複数の指定されたタスクを前記第１ユーザ・モード・ストリングによって遂行するステップと、
前記第１ユーザ・モード・ストリングが前記１つ又は複数の指定されたタスクの完了後に前記特権実行モードで動作することを許容するステップと、
を含む、方法。
【請求項２】
前記オペレーティング・システムがカーネルを含み、
前記要求するステップ、前記承認するステップ、及び前記遂行するステップがシステムコール・インターフェースを介して前記カーネルをアクセスするステップを含まない、
請求項１に記載の方法。
【請求項３】
前記要求するステップが、特権実行モードにおいて動作することを、データ記憶及び検索システムの始動時に前記第１ユーザ・モード・ストリングによって要求するステップを更に含む、請求項２に記載の方法。
【請求項４】
前記コンピュータ装置のシャットダウン時に、前記要求元ストリングが前記特権実行モードで動作することについての前期承認を取り下げるステップを更に含む、請求項３に記載の方法。
【請求項５】
前記特権実行モードで動作することに対する承認を受けた後、前記第１ユーザ・モード・ストリングによってシステム割込みを不可能にするステップと、
前記１つ又は複数の指定されたタスクを遂行するステップと、
前記１つ又は複数の指定されたタスクを完了した後、前記ユーザ・モード・ストリングによってシステム割込みを可能にするステップと、
を更に含む、請求項３に記載の方法。
【請求項６】
前記オペレーティング・システムがＬｉｎｕｘを含む、請求項１に記載の方法。
【請求項７】
前記要求するステップが、関数 echo“1”>/proc/user_privmode を実行するステップを更に含む、請求項６に記載の方法。
【請求項８】
フラグを備える変数 processestask_structを含むオペレーティング・システムを提供するステップを前記オペレーティング・システムを提供するステップが更に含み、前記フラグを「１」にセットするステップを更に含む、請求項７に記載の方法。
【請求項９】
前記オペレーティング・システムが linux/sched.h においてコード： 
U32 is_priv_user及び
U32 priv_user_mode
を含む、請求項８に記載の方法。
【請求項１０】
前記オペレーティング・システムが linux/arc/ppc/kernel/head.S においてコード：
mfspr r21, SPRG3;
lwz r20, IS_PRIV_USER_OFFSET(r21);
cmpwi 0, r20, 0;
beq 1f;
mfspr SRR1, r20;
andi r20, r20(〜MSR_PR);
mtspr SRR1, r20;
1:
を含む、請求項９に記載の方法。
【請求項１１】
前記オペレーティング・システムが linux/arch/ppc/kernel/head.S においてコード：
mfspr r21, SPRG3;
lwz r20, IS_PRIV_USER_OFFSET(r21);
cmpwi 0, r20, 0;
beq 1f;
mfspr SRR1, r20;
ori r20, r20 MSR_PR;
1ir20, 1;
stw r20,IS_PRIV_MODE_OFFSET(r21);
mtspr SRR1, r20
1:
を含む、請求項１０に記載の方法。
【請求項１２】
前記コンピュータ装置が情報記憶及び検索システムを含む、請求項１１に記載の方法。
【請求項１３】
前記情報記憶及び検索システムが１つ又は複数のホスト・アダプタ、データ・キャッシュ、１つ又は複数の記憶装置アダプタ、及び複数の情報記憶媒体を含む、請求項１２に記載の方法。
【請求項１４】
プロセッサと、特権実行モード及び非特権実行モードを含むオペレーティング・システムと、前記非特権実行モードで動作する複数のユーザ・ストリングと、ユーザ・モード・プロセスが特権実行モードで動作することを可能にするためにコンピュータ可読プログラム・コードを配置されたコンピュータ使用可能媒体とを含む装置であって、
前記コンピュータ可読プログラム・コードが
１つ又は複数の指定されたタスクを遂行するように前記特権実行モードで動作させるための要求を第１ユーザ・モード・ストリングから受けるステップと、
前記第１ユーザ・モード・ストリングが前記特権実行モードで動作することを承認されるかどうかを決定するステップと、
前記第１ユーザ・モード・ストリングが前記特権実行モードで動作することを承認される場合に動作する、前記第１モード・ストリングが前記特権実行モードで動作することを承認するステップと、
前記１つ又は複数の指定されたタスクの完了後、前記第１ユーザ・モード・ストリングが前記特権実行モードで動作することを許容するステップと、
を生じさせるための一連のコンピュータ可読プログラム・ステップを含む、装置。
【請求項１５】
前記オペレーティング・システムがカーネルを含み、
前記要求を前記第１ユーザ・モード・ストリングから受けるための、及び、前記第１ユーザ・モード・ストリングが前記特権実行モードで動作することを承認するための、一連のコンピュータ可読プログラム・ステップを含むコンピュータ可読プログラム・コードがシステムコール・インターフェースを介して前記カーネルをアクセスするステップを含まない、請求項１４に記載の装置。
【請求項１６】
前記要求を受け取るステップをもたらすための一連のコンピュータ可読プログラム・ステップを含む前記コンピュータ可読プログラム・コードが、前記データ記憶及び検索システムの始動時に特権実行モードで動作するための前記要求を受け取るステップをもたらすための一連のコンピュータ可読プログラム・ステップを含むコンピュータ可読プログラム・コードを更に含む、請求項１５に記載の装置。
【請求項１７】
前記コンピュータ可読プログラム・コードが、前記データ記憶及び検索システムのシャットダウン時に前記要求元ストリングが前記特権実行モードで動作することに対する承認を取り消すステップをもたらすための一連のコンピュータ可読プログラム・ステップを更に含む、請求項１６に記載の装置。
【請求項１８】
前記コンピュータ可読プログラム・コードが、
前記特権実行モードで動作するための許可を受けた後、前記第１ユーザ・モード・ストリングによるシステム割込みを不可能にするステップと、
前記１つ又は複数の指定されたタスクを遂行するステップと、
前記１つ又は複数の指定されたタスクを完了した後、前記ユーザ・モード・ストリングによるシステム割込みを可能にするステップと、
をもたらす一連のコンピュータ可読プログラム・ステップを更に含む、請求項１６に記載の装置。
【請求項１９】
前記オペレーティング・システムがＬｉｎｕｘを含む、請求項１４に記載の装置。
【請求項２０】
前記コンピュータ可読プログラム・コードが、関数 echo“1”>/proc/user_privmode を実行するステップをもたらすための一連のコンピュータ可読プログラム・ステップを更に含む、請求項１９に記載の装置。
【請求項２１】
フラグを備える変数 processestask_structを前記オペレーティング・システムが含み、前記コンピュータ可読プログラム・コードが、前記フラグを「１」にセットするステップを生じさせるための一連のコンピュータ可読プログラム・ステップを更に含む、請求項２０に記載の装置。
【請求項２２】
前記オペレーティング・システムが linux/sched.h においてコード：
U32 is_priv_user及び
U32 priv_user_mode
を含む、請求項２１に記載の製造物。
【請求項２３】
前記オペレーティング・システムが linux/arc/ppc/kernel/head.S においてコード：
mfspr r21, SPRG3;
lwz r20, IS_PRIV_USER_OFFSET(r21);
cmpwi 0, r20, 0;
beq 1f;
mfspr SRR1, r20;
andi r20, r20(〜MSR_PR);
mtspr SRR1, r20;
1:
を含む、請求項２２に記載の製造物。
【請求項２４】
前記オペレーティング・システムが linux/arch/ppc/kernel/head.S においてコード：
mfspr r21, SPRG3;
lwz r20, IS_PRIV_USER_OFFSET(r21);
cmpwi 0, r20, 0;
beq 1f;
mfspr SRR1, r20;
ori r20, r20 MSR_PR;
1ir20, 1;
stw r20, IS_PRIV_MODE_OFFSET(r21);
mtspr SRR1, r20
1:
を含む、請求項２３に記載の製造物。
【請求項２５】
ユーザ・モード・ストリングが特権実行モードで動作することを可能にするために具体化されたコンピュータ可読プログラム・コードを有するプログラマブル・コンピュータ・プロセッサと共に使用可能なコンピュータ・プログラムであって、プロセッサと、特権実行モード及び非特権実行モードを含むオペレーティング・システムとを含む情報記憶及び検索システムに配置されたマイクロコード内に複数のユーザ・モード・ストリングが配置され、
１つ又は複数の指定されたタスクを遂行するように前記特権実行モードで動作させるための要求を、第１ユーザ・モード・ストリングから前記プログラマブル・コンピュータ・プロセッサに受けさせる、コンピュータ可読プログラム・コードと、
前記第１ユーザ・モード・ストリングが前記特権実行モードで動作することを承認されるかどうかを前記プログラマブル・コンピュータ・プロセッサに決定させる、コンピュータ可読プログラム・コードと、
前記第１ユーザ・モード・ストリングが前記特権実行モードで動作することを承認された場合、前記第１モード・ストリングが前記特権実行モードで動作することを前記プログラマブル・コンピュータ・プロセッサに承認させる、コンピュータ可読プログラム・コードと、
前記１つ又は複数の指定されたタスクの完了後、前記第１ユーザ・モード・ストリングが前記特権実行モードで動作することを前記プログラマブル・コンピュータ・プロセッサに許容させる、コンピュータ可読プログラム・コードと、
を含む、コンピュータ・プログラム。
【請求項２６】
前記オペレーティング・システムがカーネルを含み、
前記プロセッサに前記要求を前記第１ユーザ・モード・ストリングから受けさせ、前記第１ユーザ・モード・ストリングが前記特権実行モードで動作することを承認させる、コンピュータ可読プログラム・コードが、システムコールに前記カーネルをアクセスさせるステップを含まない、
請求項２５に記載のコンピュータ・プログラム。
【請求項２７】
前記プロセッサに前記要求を受け取らせるための前記コンピュータ可読プログラム・コードが、前記データ記憶及び検索システムの始動時に前記特権実行モードで動作するために前記プロセッサに前記要求を受け取らせるコンピュータ可読プログラム・コードを更に含む、請求項２６に記載のコンピュータ・プログラム。
【請求項２８】
前記データ記憶及び検索システムのシャットダウン時に前記要求元ストリングが前記特権実行モードで動作することについての承認を前記プログラマブル・コンピュータ・プロセッサに取り下げさせるコンピュータ可読プログラム・コードを更に含む、請求項２７に記載のコンピュータ・プログラム。
【請求項２９】
前記プログラマブル・コンピュータ・プロセッサに、システム割込みを不可能にするための１つ又は複数のコマンドを前記第１ユーザ・モード・ストリングから受け取らせるコンピュータ可読プログラム・コードと、
前記ユーザ・モード・ストリングが前記１つ又は複数の指定されたタスクを完了した後、前記プログラマブル・コンピュータ・プロセッサに、システム割込みを可能にするための１つ又は複数のコマンドを前記第１ユーザ・モード・ストリングから受け取らせるコンピュータ可読プログラム・コードと、
を更に含む、請求項２７に記載のコンピュータ・プログラム。
【請求項３０】
前記オペレーティング・システムがＬｉｎｕｘを含む、請求項２５に記載のコンピュータ・プログラム。
【請求項３１】
前記プログラマブル・コンピュータ・プロセッサに関数 echo“1”>/proc/user_privmode を実行させるコンピュータ可読プログラム・コードを更に含む、請求項３０に記載のコンピュータ・プログラム。
【請求項３２】
フラグを備える変数 processestask_structを前記オペレーティング・システムが、含み、前記プログラマブル・コンピュータ・プロセッサに前記フラグを「１」にセットさせるコンピュータ可読プログラム・コードを更に含む、請求項３１に記載のコンピュータ・プログラム。
【請求項３３】
前記オペレーティング・システムが linux/sched.h においてコード：
U32 is_priv_user及び
U32 priv_user_mode
を含む、請求項３２に記載のコンピュータ・プログラム。
【請求項３４】
前記オペレーティング・システムが linux/arc/ppc/kernel/head.S においてコード：
mfspr r21, SPRG3;
lwz r20, IS_PRIV_USER_OFFSET(r21);
cmpwi 0, r20, 0;
beq 1f;
mfspr SRR1, r20;
andi r20, r20(〜MSR_PR);
mtspr SRR1, r20;
1:
を含む、請求項３３に記載のコンピュータ・プログラム。
【請求項３５】
前記オペレーティング・システムが linux/arch/ppc/kernel/head.S においてコード：
mfspr r21, SPRG3;
lwz r20, IS_PRIV_USER_OFFSET(r21);
cmpwi 0, r20, 0;
beq 1f;
mfspr SRR1, r20;
ori r20, r20 MSR_PR;
1ir20, 1;
stw r20, IS_PRIV_MODE_OFFSET(r21);
mtspr SRR1, r20
1:
を含む、請求項３４に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザ・モード・ストリング、即ち、ユーザ・モード・プロセスが特権実行モードで動作することを可能にするための方法に関するものである。
【背景技術】
【０００２】
コンピュータ・プロセッサ及び関連のオペレーティング・システムが２つの異なるレベルのリソース及び保護を有することは一般的なことである。非特権モード又はユーザ・モードと呼ばれる１つのレベルは、種々のオペレーティング・システム・コンポーネント、アプリケーション・プログラム、及び他のいわゆる「ユーザ」プロセス又はプログラムによって使用される。このレベルでは、実行スレッドが、或るセキュリティ・クリティカルなオペレーションを遂行することを、オペレーティング・システムによって及びコンピュータ・プロセッサによって阻止される。そのスレッドは、多くのシステム・リソースを直接にアクセスすることも阻止される。非特権実行モードの目的は、ユーザ・プロセスが他のユーザ・プロセス又はオペレーティング・システム機能を妨害しないように、できるだけユーザ・プロセスを隔離することである。
【０００３】
ユーザ・モード・ドライバは、保護されたサブシステム・コードを含む他のアプリケーション・コードが実行されるという非特権プロセッサ・モードで動作する。ユーザ・モード・ドライバは、システム・サービスをコールするシステムコールを行うことによる以外ではシステム・データに対するアクセスを得ることができない。ユーザ・プロセスは、自己暴走することがあり得るが、他のプログラム又はオペレーティング・システムを暴走させることがあってはならない。
【０００４】
もう１つの実行レベルは、特権モード、システム・モード、又はカーネル・モードと呼ばれる。クリティカルなオペレーティング・システム・コンポーネントはカーネル・モードにおいて実装される。カーネル・モード・コンポーネントは、割込み及び例外に応答し、実行スレッドをスケジュールし、複数のプロセッサの活動を同期化し、他のクリティカルまたはセンシティブな機能を遂行するという仮想メモリ管理のようなことを担う。システム・モードにおいて実行されるこのようなコンポーネントは、集合的に「カーネル」と一般に呼ばれている。
【０００５】
カーネル・モード・ドライバは、１つ又は複数のサブシステムをサポートする基礎オペレーティング・システム・コンポーネントであるオペレーティング・システム・エグゼクティブの一部として動作する。ユーザ・モード・ドライバ及びカーネル・モード・ドライバは、異なる構造、異なるエントリ・ポイント、及び異なるインターフェースを有する。デバイスがユーザ・モード・ドライバ又はカーネル・モード・ドライバのどちらを必要とするかは、そのデバイスのタイプと、オペレーティング・システムにおいて既にそれに与えられたサポートとに依存する。或るデバイス・ドライバは、全体的に又は部分的にユーザ・モードで動作することが可能である。ユーザ・モード・ドライバは、無制限のスタック・スペース、１つ又は複数のＡＰＩに対するアクセス、及び容易なデバッグを有する。
【０００６】
ほとんどのデバイス・ドライバはカーネル・モードで動作する。カーネル・モード・ドライバは或る保護されたオペレーションを遂行することができ、ユーザ・モード・ドライバがアクセスすることができないシステム構造をアクセスすることができる。アクセスの増加は、高価なものとなるがデバッグをより難しいものにし、システム破壊の機会を多くする。コードが特権カーネル・モード環境で動作するとき、オペレーティング・システムは、設計によっては、データ保全性及び要求の有効性に関するチェックをわずかしか遂行しない。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、ユーザ・モード・プロセスが特権実行モードで動作することを可能にするための方法を含む。本発明の方法は、コンピュータ装置、特権実行モード及び非特権実行モードを含むオペレーティング・システム、及び非特権実行モードで動作する複数のユーザ・モード・ストリングを提供する。
【課題を解決するための手段】
【０００８】
コンピュータ装置は、１つ又は複数の指定されたタスクを遂行するために特権実行モードで動作するための要求を第１ユーザ・モード・ストリングから受け取る。本発明の方法は、第１ユーザ・モード・ストリングが特権実行モードで動作することを承認し、第１ユーザ・モード・ストリングは、特権実行モードを使用してそれらの１つ又は複数の指定されたタスクを遂行する。本発明の方法は、その１つ又は複数の指定されたタスクの終了後、第１ユーザ・モード・ストリングが特権実行モードで動作することを継続して許容する。
【発明を実施するための最良の形態】
【０００９】
図面を参照すると、いずれの図においても同じ参照番号が同じ部品に対応する。本発明は、２つ以上のクラスタを含む情報記憶及び検索システムにおいて具体化されるものとして開示される。これらのクラスタの各々は、１つ又は複数のプロセッサ、１つ又は複数のデータ・キャッシュ、及び１つ又は複数の揮発性記憶装置を含む。しかし、本発明は、コンピュータ装置に設けられたオペレーティング・システム内に配置されたストリングが特権実行モードで動作することを承認するために適用することができるので、本発明の方法に関する以下の説明は、本発明を一般的なデータ処理システムに限定することを意味するものではなく、或いは、複数のクラスタを含むデータ処理システムに限定することを意味するものでもない。
【００１０】
図１の実施例では、本願の情報記憶及び検索システム１００が第１クラスタ１０１Ａ及び第２クラスタ１０１Ｂを含む。各クラスタは、それぞれ、プロセッサ部分１３０／１４０及び入出力（Ｉ／Ｏ）部分１６０／１７０を含む。各クラスタにおける内部ＰＣＩバスが、それぞれ、プロセッサ部分１３０／１４０及びＩ／Ｏ部分１６０／１７０の間のリモートＩ／Ｏブリッジ１５５／１６５を介して接続される。
【００１１】
情報記憶及び検索システム１００は、更に、４つのホスト・ベイ１０１、１０６、１１１、及び１１６に配置された複数のホスト・アダプタ１０２〜１０５、１０７〜１１０、１１２〜１１５、及び１１７〜１２０を含む。各ホスト・アダプタは、１つ又は複数のファイバ・チャネル・ポート、１つ又は複数のＦＩＣＯＮポート、１つ又は複数のＥＳＣＯＮポート、或いは、１つ又は複数のＳＣＳＩポートを含むことが可能である。各ホスト・アダプタは、各クラスタがいずれのホスト・アダプタからもＩ／Ｏを処理できるように１つ又は複数の共通プラットフォーム相互接続バス１２１を介して両方のクラスタに接続される。
【００１２】
プロセッサ部分１３０は、マイクロコード１３１、プロセッサ１３２、キャッシュ１３４、及びオペレーティング・システム１３５を含む。或る実施例では、プロセッサ部分１３０は、更にメモリ装置１３３を含む。或る実施例では、メモリ装置１３３はランダム・アクセス・メモリを含む。或る実施例では、メモリ装置１３３は不揮発性メモリを含む。
【００１３】
プロセッサ部分１４０は、マイクロコード１４１、プロセッサ１４２、キャッシュ１４４、及びオペレーティング・システム１４５を含む。或る実施例では、プロセッサ部分１４０は、更にメモリ装置１４３を含む。或る実施例では、メモリ装置１４３はランダム・アクセス・メモリを含む。或る実施例では、メモリ装置１４３は不揮発性メモリを含む。
【００１４】
Ｉ／Ｏ部分１６０は、不揮発性記憶装置（ＮＶＳ）１６２及びＮＶＳバッテリ１６４を含む。Ｉ／Ｏ部分１７０は、ＮＶＳ１７２及びＮＶＳバッテリ１７４を含む。
【００１５】
Ｉ／Ｏ部分１６０は、更にデバイス・アダプタ１６５、１６６、１６７、及び１６８のような複数のデバイス・アダプタ、並びに、２つのアレイ、即ちアレイ「Ａ」及びアレイ「Ｂ」に編成された１６個のディスク・ドライブを含む。図１の実施例は、２つのディスク・アレイを示す。別の実施例では、本願の情報記憶及び検索システム１００は３つ以上のハードディスク・アレイを含む。ドライブの各アレイは、ホスト・コンピュータにとっては１つ又は複数の論理ドライブのように見える。
【００１６】
或る実施例では、アレイ「Ａ」及び「Ｂ」はＲＡＩＤプロトコルを利用する。或る実施例では、アレイ「Ａ」及び「Ｂ」は、ＪＢＯＤ（Just a Bunch Of Disks）アレイと呼ばれるものを含む。この場合、そのアレイは、ＲＡＩＤに従って構成されたものではない。当業者には明らかであるように、ＲＡＩＤ（RedundantArray of Independent Disks）のランクは、単一の大型ドライブの性能、容量、及び信頼性を越える性能、容量、及び信頼性を得るためにディスク・ドライブのアレイの形に構成された独立したディスク・ドライブを含む。
【００１７】
図１の実施例においては、ディスク・アレイ「Ａ」は、ディスク・ドライブ１８１、１８２、１８３、１９１、１９２、１９３、及び１９４を含む。ディスク・アレイ「Ｂ」は、ディスク・ドライブ１８５、１８６、１８７、１８８、１９６、１９７、及び１９８を含む。
【００１８】
例えば、マイクロコード１３１（図１）のような情報記憶及び検索システムのマイクロコードがハードウェアをアクセスするためには、及びそれがデータ構造及びキャッシュを直接に管理するためには、そのマイクロコードが実行されている間、特権実行モード・アクセスが必要である。Ｌｉｎｕｘの下で実行されるユーザ・モード・バイナリ・アプリケーションのようなシステムのマイクロコードをコンパイルするために、本出願人は、ＬｉｎｕｘカーネルのＰｏｗｅｒＰＣブランチを修正して、ルート・パーミッション（ＵＤＩ０）を有するユーザ・モード・アプリケーションがプロセッサ１３２（図１）のようなプロセッサを特権命令モードで実行するのを可能にした。
【００１９】
次に、図２を参照すると、本発明の方法は、ステップ２１０において、プロセッサ、複数のユーザ・ストリング、及びオペレーティング・システムを含むコンピュータ装置を提供する。このオペレーティング・システムは特権実行モード及び非特権実行モードを含む。或る実施例では、ステップ２１０のコンピュータ装置は、例えば、システム１００のような情報記憶及び検索システムを含む。
【００２０】
ステップ２２０において、複数のユーザ・ストリングの１つ、即ち第１ユーザ・モード・ストリングが、１つ又は複数の指定されたタスクを遂行するために特権実行モードで動作するよう要求する。例えば、ユーザ・ストリングは、システム割込みを不可にされたマイクロコードを実行するために特権実行モードで動作するよう要求することが可能である。或る実施例では、ステップ２２０の要求は、要求ユーザ・ストリングが「priv_usermode」で、即ち特権実行モードで動作することを可能にするための要求を含む。
【００２１】
或る実施例では、ステップ２２０の要求はオーバライドされたシステムコールを通して起動される。別の実施例では、本願の「pri_usermode」機構がデバイス・ドライバ・インターフェースを通して起動される。或る実施例では、ルート・レベル・アクセスを伴うプロセスが、例えば「/proc/user_privmode」のような「user_privmode」ステータスを、プロセッサ・ファイルを介してセット／照会することが可能である。
【００２２】
或る実施例では、本発明の方法はステップ２２０からステップ２５０に移る。別の実施例では、本発明の方法はステップ２２０からステップ２３０に移る。ステップ２３０では、本発明の方法は、要求元ストリングが特権実行モードを使用することを承認されるかどうかを決定する。或る実施例では、例えばマイクロコード１３１のようなシステムのマイクロコードは、どのユーザ・モード・ストリングが特権実行モードにおいて動作することを承認されるかを表すルックアップ・テーブルを含む。或る実施例では、特権実行モードにおいて動作することを承認されたユーザ・モード・ストリングは、それを表すフラグを含む。
【００２３】
要求元ストリングが特権実行モードで動作することを許容されないということを、本発明の方法がステップ２３０において決定する場合、その方法はステップ２３０からステップ２４０に移る。ステップ２４０において、その方法は、特権実行モードで動作するためのステップ２２０の要求を拒否する。これとは別に、要求元ストリングが特権実行モードで動作することを許容されることを、本発明の方法がステップ２３０において決定する場合、その方法はステップ２３０からステップ２５０に移る。ステップ２５０において、その方法は、要求元ストリングが特権実行モードで動作することを承認する。
【００２４】
或る実施例では、要求元ユーザ・ストリングが「echo“1”./proc/user_privmode」機能を使用して user_privmode機構を起動する。procファイルへの書き込みを処理するとき、user_privmode カーネル・モジュールがprocessestask_struct に設けられたフラグを修正する。このフラグは、user_privmode 機構が起動されないことを表すために、当初は０にセットされる。機能“current-is_priv_priv_user”の呼び出しはそのフラグを１にセットする。このフラグを１にセットした後、フラグは、ユーザ状態に戻るカーネル例外コードによってチェックすることが可能である。或る実施例では、このフラグを１にセットした後、フラグは、スーパバイザ・ビットをセットするためのカーネル例外/ret_to_user コードによってチェックすることが可能である。
【００２５】
ステップ２６０において、本発明の方法は、要求元ストリングがステップ２２０の１つ又は複数の指定されたタスクを完了した後でも、ステップ２２０の要求元ストリングを特権実行モードで動作させ続ける。或る実施例では、特権実行モードで動作することの承認は、情報記憶及び検索システム１００のようなコンピュータ装置がシャットダウンするまで、要求元ストリングから取り消されることはない。
【００２６】
本発明の装置及び方法に関する或る実施例では、例えば、システム１００のような本願のコンピュータ装置は、例えば、オペレーティング・システム１３５（図１）及び／又は１４５（図１）のようなオペレーティング・システムを利用する。或る実施例では、オペレーティング・システムはＬｉｎｕｘの修正を含む。当業者には明らかであるように、Ｌｉｎｕｘは、世界中の開発者の助けで Linus Torvalds によって最初に作成された自由なＵｎｉｘタイプのオペレーティング・システムである。ＧＮＵ一般公有使用許諾（GeneralPublic License）の下で開発されたＬｉｎｕｘのためのソース・コードは自由に利用可能である。
【００２７】
更に当業者には明らかであるように、そして図３を参照すると、Ｌｉｎｕｘは、非特権実行モードにおいて動作する、コンポーネント３１０を含む複数のオペレーティング・システム・コンポーネントを含む。オペレーティング・システムのユーザ・モード・コンポーネント３１０は、例えば種々のユーザ・モード・ストリングを含む。オペレーティング・システムのユーザ・モード・コンポーネント３１０は、例えばアプリケーション３４０、アプリケーション３５０、アプリケーション３６０等のような複数のアプリケーションとインターフェースする。
【００２８】
ユーザ・モード・ストリングを含む非特権実行モードで動作するそれら複数のオペレーティング・システム・コンポーネントは、特権実行モードで動作する、カーネル・モード・ストリングを含む複数のオペレーティング・システム・コンポーネント３２０とコミュニケーションを行う。カーネル・モード・オペレーティング・システム・コンポーネント３２０は、特に１つ又は複数のシステム・ハードウェア・デバイス３３０とコミュニケーションを行う。当業者には明らかであるように、それらの複数のカーネル・モード・オペレーティング・システム・コンポーネント３２０は、集合的に「カーネル」と呼ばれることもある。
【００２９】
割り込みされたプロセスがカーネル又はユーザ・モード・スペースにおいて実行されつつあったかどうかを決定するためにＭＳＲレジスタのＭＳＲ＿ＰＲビットを使用する。従って、ユーザ・モード・プロセスがＭＳＲ＿ＰＲビットのオンにより実行される場合、カーネルは、そのコードが実際にそのカーネルにあるものと間違って仮定することがある。この問題を回避するために、本願の user_privmode コードはカーネルにエントリする時に実行され、カーネル・コードがユーザ・スペースに戻るときに実行されるであろう。これらの時点で、task_struct に隠された付加的な変数がチェックされ、そして、必要な場合には、実行中であったコードがユーザ・コード又はカーネル・コードを含むかどうかを知るためにすべてのカーネル・コードがチェックされる前に、ＭＳＲ＿ＰＲビットがＳＲＲ１、即ち、ユーザ・コンテキストＭＳＲから除去される。付加的な変数がtask_struct に加えられ、８ＫＢのカーネル・スタックの末端に記憶される。
【００３０】
表１は、本願のオペレーティング・システムが linux/sched.h において含む或る修正を示す。
【表１】
2006012170.tif 000003
【００３１】
Ｌｉｎｕｘカーネルへのエントリ時に実行されるコードは、すべてのＰｏｗｅｒＰＣ例外 EXCEPTION_PROLOG の前に含まれるマクロとして置かれる。表２は、本願のオペレーティング・システムが linux/arc/ppc/kernel/head.S において含む或る修正を示す。
【表２】
2006012170.tif 000004
【００３２】
表３は、Ｌｉｎｕｘカーネル例外ハンドラからユーザ・モードに戻る際に実行されるコードである linux/arch/ppc/kernel/entry/S に対する修正を示す。
【表３】
2006012170.tif 000005
【００３３】
或る実施例では、表２に示された個々のステップを結合すること、削除すること、または再順序付けすることが可能である。
【００３４】
或る実施例では、本発明は、メモリ１３３（図１）にある命令を含む。それらの命令は、図２に示されたステップ２２０，２３０、２４０、２５０、及び２６０を遂行するためにプロセッサ１３２（図１）によって実行される。なお、ステップ２２０はユーザ・モード・ストリングから要求を受けることを含む。別の実施例では、本発明は他の任意のコンピュータ・プログラム製品にある命令を含む。それらの命令は、図２に示されたステップ２２０，２３０、２４０、２５０、及び２６０を遂行するために、システム１００の外部又は内部におけるコンピュータによって実行される。その場合、ステップ２２０は、ユーザ・モード・ストリングから要求を受けることを含む。いずれの場合も、例えば、磁気情報記憶媒体、光学的情報記憶媒体、電子的情報記憶媒体等を含む情報記憶媒体において、命令を符号化することが可能である。本願では、「電子的記憶媒体」は、例えばＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュＰＲＯＭ、コンパクトフラッシュ、スマートメディア等のようなデバイスを意味する。
【００３５】
本発明の好適な実施例を詳しく説明したが、「特許請求の範囲」に示された本発明の範囲を逸脱することなく、これらの実施例に対する修正及び改良が当業者にとって想起し得るものであることは明らかであろう。
【図面の簡単な説明】
【００３６】
【図１】本発明の情報記憶及び検索システムの一実施例を示すブロック図である。
【図２】本発明の方法のステップを要約したフローチャートである。
【図３】ユーザ・モード・オペレーティング・システム・コンポーネントとカーネル・モード・オペレーティング・システム・コンポーネントとの間の関係を示すブロック図である。
【図１】
2006012170.tif 000006
【図２】
2006012170.tif 000007
【図３】
2006012170.tif 000008