(57)【要約】【課題】  カーネル間でカーネル・サービスを共用するための方法、装置、およびコンピュータ・プログラムを提供する。【解決手段】  パーティション・マネージャが、第１カーネルからのカーネル・サービスを求める第１システム・コールを論理パーティションにおけるアプリケーションから受け取る。第１システム・コールは第１カーネルと互換性のある形式および内容を有する。次に、第１システム・コールに従って、第２カーネルからのカーネル・サービスを求める第２システム・コールが発生される。第２システム・コールは第２カーネルと互換性のある形式および内容を有する。次に、第２システム・コールが、パーティション・マネージャを介して第２カーネルに、実行のために送られる。【選択図】  図２
2007328782.tif 000002
【特許請求の範囲】
【請求項１】
カーネル間でカーネル・サービスを共用する方法であって、
パーティション・マネージャが、第１カーネルと互換性のある形式および内容を有し且つ前記第１カーネルからのカーネル・サービスを求める第１システム・コールを、論理パーティションにおけるアプリケーションから受け取るステップと、
前記第１システム・コールに従って、第２カーネルと互換性のある形式および内容を有し且つ前記第２カーネルからのカーネル・サービスを求める第２システム・コールを発生するステップと、
前記第２システム・コールを、前記パーティション・マネージャを介して前記第２カーネルに、実行のために送るステップと
を含む、方法。
【請求項２】
前記第２カーネルがカーネル・サービスを提供するステップと、
前記第１カーネルと互換性のある形式および内容を有する応答を、前記論理パーティションにおけるアプリケーションに送るステップと
を更に有する、請求項１に記載の方法。
【請求項３】
前記第１カーネルが前記第１システム・コールを受け取るステップと、
前記カーネル・サービスが前記第２カーネルによって提供されるべきであることを前記第１カーネルが決定するステップと
を更に含み、
前記第２システム・コールを発生するステップは、前記第１カーネルが、前記第１システム・コールに従って前記第２システム・コールを発生する、請求項１に記載の方法。
【請求項４】
前記第２システム・コールを発生するステップは汎用システム・コールを発生する、請求項１に記載の方法。
【請求項５】
前記第２カーネルが、前記第２システム・コールに対する汎用応答を提供するステップを含む、カーネル・サービスを提供するステップを更に含む、請求項１に記載の方法。
【請求項６】
前記第２カーネルが、前記第２システム・コールに対する応答を前記第１カーネルに提供するステップを含む、カーネル・サービスを提供するステップを更に含み、前記応答が前記第１カーネルと互換性のある形式および内容を有する、請求項１に記載の方法。
【請求項７】
コンピュータ・プロセッサおよび該コンピュータ・プロセッサに接続されたコンピュータ・メモリを含み、カーネル間でカーネル・サービスを共用するための装置であって、該コンピュータ・メモリは、
パーティション・マネージャが、第１カーネルと互換性のある形式および内容を有し且つ前記第１カーネルからのカーネル・サービスを求める第１システム・コールを、論理パーティションにおけるアプリケーションから受け取るためのコンピュータ・プログラム命令と、
前記第１システム・コールに従って、第２カーネルと互換性のある形式および内容を有し且つ前記第２カーネルからのカーネル・サービスを求める第２システム・コールを発生するためのコンピュータ・プログラム命令と、
前記第２システム・コールを、前記パーティション・マネージャを介して前記第２カーネルに、実行のために送るためのコンピュータ・プログラム命令と
を記憶している、装置。
【請求項８】
カーネル間でカーネル・サービスを共用するための、信号保持媒体上に記録されたコンピュータ・プログラムであって、
パーティション・マネージャが、第１カーネルと互換性のある形式および内容を有し且つ前記第１カーネルからのカーネル・サービスを求める第１システム・コールを、論理パーティションにおけるアプリケーションから受け取るための手順と、
前記第１システム・コールに従って、第２カーネルと互換性のある形式および内容を有し且つ前記第２カーネルからの、カーネル・サービスを求める第２システム・コールを発生するための手順と、
前記第２システム・コールを、前記パーティション・マネージャを介して前記第２カーネルに、実行のために送るための手順と
をコンピュータに実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理の分野に関し、詳しく云えば、カーネル・サービスをカーネル間で共用するための方法、装置、およびコンピュータ・プログラムに関するものである。
【背景技術】
【０００２】
スレッドはマルチスレッド・コンピュータにおけるソフトウェア実行の単位である。即ち、スレッドはコンピュータ・システムにおける作業の実行可能な構成要素である。スレッドは、実行可能なコンピュータ・プログラム命令の個別のストリームとして表すことができる。そのようなコンピュータでは、ソフトウェア・プログラムは、コード・セグメントおよびオフセット・レジスタ、データ・セグメントおよびオフセット・レジスタ、スタック・セグメントおよびオフセット・レジスタ、フラッグ・レジスタ、命令ポインタ・レジスタ等の、ソフトウェア・プログラムの実行に必要なすべてのプロセッサ・レジスタを含む「プロセス」と呼ばれる実行単位で実行される。効率性のために、「プロセス」は更にスレッドとして編成される。プロセスの各スレッドは、プロセスの他の全スレッドとの間でメモリを共用することを除けば、実行のために必要なすべての属性を個々に所有し、それによってオペレーティング・システムのスレッド切り替え（コンテキスト・スイッチ）に関するオーバーヘッドを少なくしている。
【０００３】
本明細書では、マルチスレッディングの２つのモード、即ち、同時マルチスレッディング（ＳＭＴ）および単一スレッド（ＳＴ）・マルチスレッディングを考察する。ＳＴマルチスレッディングは、時間多重化マルチスレッディング、即ち、タイム・スライスの使用によるマルチスレッディングである。ＳＴモードでは、個々のスレッドおよび仮想プロセッサの両方が、時間のセグメントとして配分されたプロセッサのコンピューティング・キャパシティの一部に割り当てられる。時間のセグメントの各々は「タイム・スライス」と呼ばれる。
【０００４】
或る種のプロセッサは、複数のスレッドからのコンピュータ命令を同時に受け付ける「同時マルチスレッディング」または「ＳＭＴ」と呼ばれる特徴を有する。ＳＭＴの基になる考えは、１つのチップ上のプロセッサ・ハードウェアを、マルチスレッド・ワークロードにおける複数のスレッド間で共用することである。ＳＭＴは、単一の物理プロセッサに対する命令を、複数の独立したスレッドに単一の処理サイクルで発生させるという技術である。従来のプロセッサ・アーキテクチャでは、一時に、１つのスレッドだけが１つのプロセッサに命令を発生する。本明細書で開示されるＳＭＴを実装するプロセッサの例は、ＩＢＭ社のＰｏｗｅｒ５プロセッサである。
【０００５】
ＳＭＴは、各々が複数の実行のスレッドからの命令を同時に受け付けることができる、物理プロセッサに実装される。更に、ＳＭＴモードでは、仮想プロセッサおよび仮想プロセッサ上で実行されるスレッドの両方とも、タイム・スライスを通して割り当てることができる。ＳＭＴモードで仮想プロセッサにおいて実行されるスレッドは、論理プロセッサにおいて実行されると見なすこともできる。従って、ＳＭＴモードで物理プロセッサにおいて実行される仮想プロセッサは、複数の論理プロセッサを支援するものと見なすこともできる。スレッドがＳＴモードまたはＳＭＴモードのいずれで実行されても、論理プロセッサにおいて実行されるスレッドは、そのプロセッサの論理的性質または仮想的性質を知らないし、それを従来のプロセッサと見なす。
【０００６】
多重処理は、ＳＴモードまたはＳＭＴモードで複数の論理パーティションをパーティションごとに支援するコンピュータに実装される。各パーティションは、個別のカーネルを含む個別のオペレーティング・システム全体を実装する。カーネルは、カーネル・サービスを提供することによって、論理パーティションにおいて実行されるアプリケーションを支援する。カーネルによって提供されるサービスのタイプは一般には同じであるが、種々のカーネルが種々の方法でサービスを実施することも可能である。このため、カーネルによっては、カーネル・サービスの提供において他のカーネルよりも優れているものがある。しかし、従来技術では、優れたサービスを行うカーネルは、そのようなサービスを他のカーネルと共用することができず、同じタイプの他のカーネルとさえ共用し得ない。例えば、優れたディスクＩ／Ｏドライバを有するＵＮＩＸ（登録商標）（登録商標）カーネルの場合、それは、たとえ他のＵＮＩＸ（登録商標）（登録商標）カーネルがまったく同じタイプおよびバージョンのものであったとしても、そのような他のＵＮＩＸ（登録商標）（登録商標）カーネルに抗して作動する実行スレッドにとってそのディスクＩ／Ｏドライバを使用可能にすることはできないであろう。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、カーネル間でカーネル・サービスを共用するための方法、装置、およびコンピュータ・プログラムを提供することである。
【課題を解決するための手段】
【０００８】
本発明の方法は、パーティション・マネージャが、第１カーネルと互換性のある形式および内容を有し且つ前記第１カーネルからのカーネル・サービスを求める第１システム・コールを、論理パーティションにおけるアプリケーションから受け取るステップと、前記第１システム・コールに従って、第２カーネルと互換性のある形式および内容を有し且つ前記第２カーネルからのカーネル・サービスを求める第２システム・コールを発生するステップと、前記第２システム・コールを、前記パーティション・マネージャを介して前記第２カーネルに、実行のために送るステップとを含む。
【０００９】
本発明の上記および他の目的、特徴、および利点は、添付図面において図解される本発明の実施例に関する以下の更に詳細な説明から明らかであろう。なお、図面において、同じ参照番号は、一般に、本発明の実施例の同じ要素を表す。
【発明を実施するための最良の形態】
【００１０】
本発明の実施例による、カーネル間でカーネル・サービスを共用するための例示的な方法、装置、およびコンピュータ・プログラムを、添付図面を参照して説明する。本発明によるカーネル間でのカーネル・サービスの共用は、自動コンピューティング・マシン、即ち、１つまたは複数のコンピュータ上で実施される。図１は、本発明の実施例による、カーネル間でカーネル・サービスを共用する場合に有用な例示的コンピュータ１５２を含む自動コンピューティング・マシンのブロック図を示す。図１のコンピュータ１５２は、幾つかの物理プロセッサ１５６およびランダム・アクセス・メモリ（ＲＡＭ）１６８を含む。ＲＡＭ１６８は、システム・バス１６０を介して物理プロセッサ１５６およびこのコンピュータの他のコンポーネントに接続される。
【００１１】
ＲＡＭ１６８には、アプリケーション・プログラム１０８、オペレーティング・システム１１０、および論理プロセッサ１０６を含む論理パーティション１１４、並びに、２つまたはそれ以上のカーネル１０２、１０４、仮想プロセッサ１２２、およびカーネル共用インターフェース１２４を含むパーティション・マネージャ１１２が記憶される。論理パーティション（ＬＰＡＲ）１１４は、単一のコンピュータにおけるコンピュータ資源の分散が、あたかもそのコンピュータが２つまたはそれ以上の独立したコンピュータであるかのようにコンピュータ機能を整えることを可能にするデータ構造およびサービスのセットである。各論理パーティションは、それがプロセッサ時間、メモリ、オペレーティング・システム等を含む独立したコンピュータであるかのように動作するために必要なすべての資源を割り当てられる。論理パーティションおよび論理パーティションを通してアプリケーションにとって使用可能にされる資源は、一括して「仮想マシン」と呼ばれることもある。説明の便宜上、図１のシステムは、１つの論理パーティションしか含まないが、本発明の実施例による、カーネル間でのカーネル・サービスを共用するシステムは任意の数の論理パーティションを支援することができる。
【００１２】
アプリケーション・プログラム１０８はユーザ・レベルのコンピュータ・プログラム・コードのモジュールである。アプリケーション・プログラムは、オペレーティング・システムのカーネルを介するコールによりコンピュータ資源へのアクセスを得なければならない非特権コードである。
【００１３】
オペレーティング・システム１１０は、スレッドをスケジュールするシステム・ソフトウェア層であり、メモリ・アクセス、入出力資源へのアクセス等を含む、システム資源をスレッドにとって使用可能にするための機能を提供する。オペレーティング・システムは、コンピュータ資源にアクセスするための割り振りおよび承認も制御する。オペレーティング・システムは、キーボードからの入力を認識すること、出力をディスプレイ・スクリーンに送ること、ディスク・ドライブ上のファイルおよびディレクトリを追跡すること、並びにディスク・ドライブおよびプリンタのような周辺装置を制御することのような低レベルの基本的タスクを実行する。オペレーティング・システムは、セキュリティの責任も負い、未承認のユーザがシステムをアクセスしないことおよびスレッドがアクセスを承認されている資源だけをアクセスすることを保証する。多くのオペレーティング・システムの機能は、カーネルによって、この例では、一次カーネル１０２または共用カーネル１０４によって具現化される。本発明の実施例による、カーネル間でカーネル・サービスを共用するために有用なオペレーティング・システムはマルチスレッディング・オペレーティング・システムであり、その例は、ＵＮＩＸ（登録商標）、Ｌｉｎｕｘ（商標）、Ｗｉｎｄｏｗｓ (登録商標）ＸＰ、ＡＩＸ（商標）、ＩＢＭ社のｉ５／ＯＳ（商標）、および当業者が思いつくようなその他のものを含む。
【００１４】
論理プロセッサ１０６は、論理パーティションにおける実行のためにスレッドをスケジュールするためのオペレーティング・システムの構造体である。即ち、オペレーティング・システム１１０は、物理プロセッサまたは仮想プロセッサにおける実行のためにスレッドをスケジュールするのではなく、論理プロセッサ１０６における実行のためにスレッドをスケジュールする。論理プロセッサにおいてスレッドをスケジュールすることは使いやすい構造体および処理を提供し、その場合、スレッドは、スレッドの観点から、論理パーティション全体の資源すべてを自由に有しているように見える。仮想プロセッサは、物理プロセッサの一部分を割り振られる。しかし、論理プロセッサは、マシンにおける他のすべての実行のように、それが細かいタイム・スライスで物理的に稼動しているという事実にもかかわらず、論理的には１つの完全なプロセッサである。従って、ＬＰＡＲにおける論理プロセッサ上で実行中のスレッドは、そのスレッドから見ると、１つの完全に独立したコンピュータのすべての資源を有しているように見える。即ち、論理プロセッサは、１つのパーティションにおいて稼動しているオペレーティング・システムにおけるディスパッチャがスレッドをディスパッチする対象であり、仮想プロセッサはパーティション・マネージャによってディスパッチされるものである。ＳＴモードで動作しているＬＰＡＲでは、論理プロセッサと仮想プロセッサとの間の対応関係は１対１であり、各仮想プロセッサに対して１つの論理プロセッサが対応する。ＳＭＴモードで動作しているＬＰＡＲでは、論理プロセッサと仮想プロセッサとの間の対応関係はＮ対１であり、ここでＮは１つの仮想プロセッサにおいて支援される論理プロセッサの数である。即ち、各仮想プロセッサに対してＮ個の論理プロセッサが対応する。
【００１５】
仮想プロセッサ１２２は、データ構造体およびコンピュータ・プログラム命令から成るサブシステムであり、論理パーティションへのプロセッサ・タイムの割当てを実施する。物理プロセッサの共用プールは、論理パーティションへの部分的な物理プロセッサの割当て（タイム・スライスで）を支援する。タイム・スライスにおいて共用されるそのような部分的物理プロセッサが「仮想プロセッサ」と呼ばれる。共用処理プールに保持された物理プロセッサは論理パーティションの間で共用される。本明細書における例では、物理プロセッサは、１.０が１つの物理プロセッサの処理能力を表す処理単位に従って共用される。仮想プロセッサにおいて実行されるべきスレッドの割り当ては、一般に、仮想プロセッサの論理プロセッサにおいて実行されるべきスレッドの割り当てによって行われる。ＳＴモードの場合、各仮想プロセッサが１つの論理プロセッサを有する。しかし、ＳＭＴモードの場合、これらの例では、各仮想プロセッサは２つの論理プロセッサを有する。
【００１６】
図１のパーティション・マネージャ１１２は、論理パーティションの下で実行されるシステム・ソフトウェア層である。即ち、パーティション・マネージャ１１２は、論理パーティションと基本的なコンピュータ・ハードウェア、即ち、物理プロセッサ１５６を含む物理コンピュータ・コンポーネントとの間で稼動する。パーティション・マネージャは、複数の論理パーティションにおける複数のオペレーティング・システムおよびアプリケーションの設定および実行を支援する。とりわけ、パーティション・マネージャは、ユーザまたはシステム管理者によるパーティション、仮想プロセッサ、および論理プロセッサの設定を支援する。複数の論理パーティションを支援するコンピュータにおけるオペレーティング・システムのカーネルが論理プロセッサにおいてスレッドをスケジュールおよびディスパッチするように、パーティション・マネージャは物理プロセッサにおける仮想プロセッサをスケジュールおよびディスパッチする。
【００１７】
論理パーティションにおけるオペレーティング・システムは、特定のアプリケーションまたはアプリケーションのセットを実行するためにしばしば使用されるので、パーティション・マネージャは、全体的なハードウェア・コストを減らすために単一のコンピュータにおいて複数のオペレーティング・システムおよびそれらのアプリケーションを実行することを可能にする。製造および試験システムは同じハードウェアにおいて同時に稼動することが可能である。更に、パーティション・マネージャが複数の論理パーティションを支援することによって、Ｗｉｎｄｏｗｓ (登録商標）およびＬｉｎｕｘ（商標）のような種々のオペレーティング・システムが同じ基本コンピュータ・ハードウェアを共用することも可能である。パーティション・マネージャは、「ハイパーバイザ」、「仮想化マネージャ」、または「仮想マシン・モニタ」とも呼ばれることがある一種のソフトウェアである。
【００１８】
図１の例では、パーティション・マネージャ１１２はカーネル１０２、１０４を含む。カーネルはオペレーティング・システムのコアである。カーネルは、「システム・エグゼクティブ」または「システム・モニタ」とも呼ばれる特権モジュールである。カーネルは、アプリケーションおよび他のオペレーティング・システム・コンポーネントにおける実行スレッドのためにコンピュータ・システム・ハードウェアへの安全なアクセス（メモリ、入出力資源等へのアクセスを含む）を行う責任を負ったソフトウェアである。カーネルは、アプリケーション・プログラムおよびオペレーティング・システムのプロセスを形成する実行スレッドもスケジュールする。カーネルは、一般に、メモリ・ロック、信号、およびセマフォのようなプロセス間通信および同期化のためのサービスも提供する。カーネルは、一般に、潜在的な複雑さをアプリケーションからおよびオペレーティング・システムの他のコンポーネントから隠蔽するためにハードウェアの抽象化（或るタイプのすべての装置にとって普遍的な命令のセット）も提供する。ハードウェア抽象化コンポーネントは、ハードウェア装置の製造仕様に特有の機能を提供するためのソフトウェア・ドライバに依存する。要するに、カーネルは、下記のようなカーネル・サービスを提供する。
・  システム・ハードウェアへのアクセスの制御および調停。
・  プロセス、スレッド、ファイル、デバイス等のような基本抽象化の実装および支援。
・  メモリ、プロセッサ、ディスク、ファイル記述、プロセス記述、スレッド記述等のようなシステム資源の割り振り、およびスケジューリング。
・  システム資源のセキュリティおよび保護の強化。
・  システム・コールを介したサービスを求めるユーザ要求およびアプリケーション要求への応答。
【００１９】
従来はオペレーティング・システム内にインストールされていたオペレーティング・システム・カーネル１０２、１０４が、この例では、パーティション・マネージャ１１２にインストールされ、従って、カーネル・サービスを求めるアプリケーション・プログラムからのシステム・コールがパーティション・マネージャを通して方向付けされる。パーティション・マネージャへのカーネルのインストールは、複数の論理パーティションがカーネルの同じインスタンスを使用することを可能にすることによってシステム資源を節約する。パーティション・マネージャへのカーネルのインストールは、「Sharing A Kernel Of An Operating System Among Logical Partitions」と題した出願番号１１／３０１１１３の米国特許出願に詳しく説明されている。
【００２０】
図１に例示のコンピュータでは、パーティション・マネージャ１１２はカーネル共用インターフェース１２４を示している。カーネル共用インターフェース１２４は、アプリケーション・プログラミング・インターフェース（ＡＰＩ）であり、本発明の実施例によればカーネル間でのカーネル・サービスの共用を容易にするように構成された、例えば、コンピュータ・プログラム命令のライブラリとして実装されるコンピュータ・ソフトウェア・モジュールである。カーネル共用インターフェース１２４は、第１カーネル１０２からのカーネル・サービスを求める第１システム・コールを論理パーティション１１４におけるアプリケーション１０８から受け取ること、第２カーネル１０４からのカーネル・サービスを求める第２システム・コールを第１システム・コールに応じて発生すること、およびパーティション・マネージャ１１２を介して第２カーネル１０４に第２システム・コールを実行のために送ることができるコンピュータ・プログラム命令を含む。この例におけるカーネル共用インターフェース１２４は、更に、カーネル・サービスを提供するカーネル１０４からの応答を受け取ることおよび論理パーティション１１４におけるアプリケーション１０８に応答を送ることができるコンピュータ・プログラム命令も含む。カーネル共用インターフェース１２４は、その応答が第１カーネル１０２と互換性のある形式および内容を有することを保証することができるコンピュータ・プログラム命令を含むことも可能である。
【００２１】
図１の例では、アプリケーション１０８、論理パーティション１１４、論理プロセッサ１０６、オペレーティング・システム１１０、パーティション・マネージャ１１２、仮想プロセッサ１２２、カーネル１０２、１０４等のようなコンピュータ・ソフトウェア・コンポーネントがＲＡＭ１６８に配置されて示されている。しかし、そのようなソフトウェアの多くのコンポーネントは不揮発性メモリ１６６に記憶されてもよいことは明らかであろう。図１のコンピュータ１５２は、システム・バス１６０を介してコンピュータ１５２の物理プロセッサ１５６および他のコンポーネントに接続された不揮発性コンピュータ・メモリ１６６を含む。不揮発性コンピュータ・メモリ１６６は、ハードディスク・ドライブ１７０、光ディスク・ドライブ１７２、電気的消去可能リード・オンリ・メモリ・スペース（いわゆる「ＥＥＰＲＯＭ」または「フラッシュ」メモリ）１７４、ＲＡＭドライブ（図示されてない）、または当業者にとって想起し得る他の種類の不揮発性メモリとして具現化することも可能である。
【００２２】
図１における例示のコンピュータ１５２は、１つまたは複数の入出力インターフェース・アダプタ１７８を含む。コンピュータにおける入出力インターフェース・アダプタは、例えば、コンピュータ・ディスプレイ・スクリーンのようなディスプレイ装置１８０への出力、並びに、キーボードおよびマウスのようなユーザ入力装置１８１からのユーザ入力、を制御するためのソフトウェア・ドライバおよびコンピュータ・ハードウェアを介したユーザ指向の入出力を実現している。
【００２３】
図１における例示のコンピュータ１５２は、他のコンピュータ１８２とのデータ通信を行うための通信アダプタ１６７を含む。そのようなデータ通信は、例えば、ＩＰネットワークのようなデータ通信ネットワークを介しておよび当業者が想起し得る別の方法で実行することも可能である。通信アダプタは、１つのコンピュータが他のコンピュータにデータ通信を直接にまたはネットワークを介して送るハードウェア・レベルのデータ通信を実現する。本発明の実施例に従ってカーネル間でカーネル・サービスを共用するために有用な通信アダプタの例は、有線のダイヤルアップ通信、有線ネットワーク通信のためのイーサネット（登録商標）（IEEE 802.3）アダプタ、および無線ネットワーク通信のための IEEE 802.11b アダプタを含む。
【００２４】
更なる説明のために、図２は、本発明の実施例に従ってカーネル間でカーネル・サービスを共用するための例示的システムを図解した機能ブロック図を示す。図２のシステムは、２つの論理パーティション、即ち、ＳＴモードの論理パーティション２０２およびＳＭＴモードの論理パーティション２０４を含む。図２のシステムは、６個の論理プロセッサ、即ち、論理パーティション２０２のための２つ論理プロセッサ２３０、２３２および論理パーティション２０４のための４つ論理プロセッサ２３４、２３６、２３８、２４０を含む。図２のシステムは、更に、４つの仮想プロセッサ、即ち、論理パーティション２０２に割り当てられた２つ仮想プロセッサ２４２、２４４および論理パーティション２０４に割り当てられた２つ仮想プロセッサ２４６、２４８も含む。図２のシステムは、更に、３つの物理プロセッサ２５０、２５２、２５４も含む。この例では、３つの物理プロセッサ２５０、２５２、２５４の処理容量は、次のように論理パーティションに割り当てられる。
・  物理プロセッサ２５０のすべての処理容量が仮想プロセッサ２４２に完全に割り当てられ、従って、論理プロセッサ２３０は物理プロセッサ２５０全体を使用し得る。
・  物理プロセッサ２５２の処理容量の半分が仮想プロセッサ２４４に割り当てられ、従って、論理プロセッサ２３２は物理プロセッサ２５２の半分をタイム・スライスで使用し得る。
・  物理プロセッサ２５２の処理容量の半分が仮想プロセッサ２４６に割り当てられる。仮想プロセッサ２４６は、仮想プロセッサ２４６用の２つの論理プロセッサ２３４、２３６を含む、ＳＭＴモードで稼動する論理パーティション２０４に割り当てられる。論理プロセッサ２３４および２３６は、それぞれ、物理プロセッサ２５２の処理容量の１／４をタイム・スライスで使用し得る。
・  物理プロセッサ２５４のすべての処理容量が仮想プロセッサ２４８に割り当てられる。仮想プロセッサ２４８は、仮想プロセッサ２４８用の２つの論理プロセッサ２３８、２４０を含む、ＳＭＴモードで稼動する論理パーティション２０４に割り当てられる。論理プロセッサ２３８および２４０は、それぞれ、物理プロセッサ２５４の処理容量の半分をタイム・スライスで使用し得る。
【００２５】
図２のシステムは、パーティション・マネージャ１１２を含む。パーティション・マネージャは、論理パーティションの下で稼動するシステム・ソフトウェア層である。即ち、パーティション・マネージャ１１２は、論理パーティションと、物理プロセッサ２５０、２５２、２５４を含む基本コンピュータ・ハードウェアである物理コンピュータ・コンポーネントとの間で稼動する。パーティション・マネージャは、複数の論理パーティションにおける複数のオペレーティング・システムおよびアプリケーションの設定および実行を支援する。とりわけ、パーティション・マネージャは、ユーザまたはシステム管理者によるパーティション、仮想プロセッサ、および論理プロセッサの設定を支援する。複数の論理パーティションを支援するコンピュータにおけるオペレーティング・システムのカーネルが論理プロセッサにおけるスレッドをスケジュールし、ディスパッチするように、パーティション・マネージャは物理プロセッサにおける仮想プロセッサをスケジュールし、ディスパッチする。論理パーティションにおけるオペレーティング・システムは、多くの場合、特定のアプリケーションまたはアプリケーションのセットを実行するために使用されるので、パーティション・マネージャは、単一のコンピュータにおいて複数のオペレーティング・システムおよびそれらのアプリケーションを実行することを可能にし、ハードウェア・コスト全体を減少させる。製造および試験システムは同じハードウェアにおいて同時に稼動することが可能である。更に、パーティション・マネージャが複数の論理パーティションを支援することによって、Ｗｉｎｄｏｗｓ (登録商標）およびＬｉｎｕｘ（商標）のような種々のオペレーティング・システムが同じ基本コンピュータ・ハードウェアを共用できる。
【００２６】
図２の例では、パーティション・マネージャ１１２はカーネル共用インターフェース１２４を含む。カーネル共用インターフェース１２４は、アプリケーション・プログラミング・インターフェース、即ち、「ＡＰＩ」であり、本発明の実施例に従ってカーネル間でのカーネル・サービスの共用を容易にするように構成されたコンピュータ・プログラム命令のライブラリとして実装されるコンピュータ・ソフトウェア・モジュールである。カーネル共用インターフェース１２４は、第１カーネル１０２からのカーネル・サービスを求める第１システム・コールを論理パーティション２０２、２０４におけるアプリケーション２０６、２０８から受け取ること、第１システムコールに応じて第２カーネルからのカーネル・サービスを求める第２システム・コールを発生すること、および実行のためにパーティション・マネージャ１１２を介して第２カーネル１０４に第２システム・コールを送ることができるコンピュータ・プログラム命令を含む。カーネル共用インターフェース１２４は、更に、カーネル・サービスを提供するカーネル１０４からの応答を受け取ることおよび第１システム・コールを送った論理パーティション２０２、２０４におけるアプリケーション２０６、２０８に応答を送ることができるコンピュータ・プログラム命令を含む。カーネル共用インターフェース１２４は、その応答が第１カーネル１０２と互換性のある形式および内容を有することを保証することができるコンピュータ・プログラム命令を含むことも可能である。
【００２７】
図２のシステムは、論理パーティション２０２、２０４に、それぞれ、オペレーティング・システム２１０、２２０を含む。この例では、アプリケーションまたはユーザに直接アクセスし得るオペレーティング・システム機能が論理パーティションに残っておリ、一方、オペレーティング・システム・カーネル１０２、１０４がパーティション・マネージャ１１２にインストールされる。そのような機能は、グラフィカル・ユーザ・インターフェース（ＧＵＩ）２１２、２２２に対する支援を含む。そのような機能は、例えば、オペレーティング・システム・ユーティリティおよびライブラリ関数に対するコマンド・ライン・インターフェースを提供するシェル２１４、２２４に対する支援も含む。アプリケーションまたはユーザに直接アクセスし得るオペレーティング・システムの機能はシステム・ユーティリティ２１６、２２６も含む。システム・ユーティリティは、一般には、例えば、ファイルを作成、オープン、または削除するためのプログラム、ファイルのディレクトリを作成およびナビゲートするためのプログラム、環境変数を読取ってセットし、ファイル内のテキストをサーチする等を行うためのプログラム、のようなＧＵＩまたはシェルを通してアクセスし得るシステム管理のためのプログラムを含む。
【００２８】
アプリケーションまたはユーザに直接アクセスし得るオペレーティング・システムの機能は、システム・コールのライブラリ（２１８、２２８）を含み得るし、システム・コールのライブラリ（２１８、２２８）として実現することも可能である。システム・コール・ライブラリは、カーネル１０２、１０４内の特権ソフトウェア・ルーチンへのコールによってハードウェア依存のサービスおよび他の保護されたシステムへのアクセスを得ることを可能にするアプリケーション・プログラム・インターフェース（ＡＰＩ）を表す。カーネル・スペースにおける特権コードに対するそのようなコールは、システム・コール・ライブラリの関数内からコールされた割り込みまたはソフトウェア・トラップによってもたらされる。システム・コール・アクセス・ライブラリ内の関数コールに対するアクセスは、一般に、１つまたは複数のシステム・コール・ライブラリをアプリケーションもしくはユーティリティに、または実行時に動的にロードし得る他のライブラリ（動的にリンクされたライブラリ、即ち、「ＤＬＬ」）にコンパイルすることによってもたらされる。
【００２９】
更なる説明のために、図３は、本発明の実施例に従ってカーネル間でカーネル・サービスを共用するための例示的なスレッド状態を図解した状態図を示す。図３における円形はスレッド状態を表す。円形間の矢印はカーネル機能によってもたらされた状態遷移を表す。図３において表されたスレッド状態は、作成状態３０２、作動可能状態３０４、実行状態３０６、待ち状態３０８、および停止状態３１０を含む。スレッドは、最初に他のスレッドの要求で作成されるとき、一時的に作成状態３０２にあり、そのスレッドのための情報および資源を収集するためにカーネル時間を与える。カーネルがスレッドに実行の準備をさせると直ちに、そのスレッドが「開始（３０３）」される、即ち、作動可能状態３０４に移動する。
【００３０】
作動可能状態３０４にあるスレッドは作動可能キュー（図示されてない）に入れられ、実行の機会を待つ。どの作動可能スレッドが次に実行されるかを決定するためのプロセスは「スケジューリング」と呼ばれる。ＦＩＦＯ、ラウンド・ロビン、優先順位等の多くのスケジューリング・アルゴリズムが存在する。スレッドを作動可能状態から実行状態に移すためのカーネル機能は「ディスパッチ（３１２）」と呼ばれる。スレッドはディスパッチされると実行状態になるので、「ディスパッチ」、「実行中」および「実行状態」は一般に同義である。
【００３１】
スレッドは、それがディスパッチされたとき、即ち、実行状態３０６にあるとき、現在、論理プロセッサにおいて実行するように割り当てられている。スレッドが物理的に実行しているかどうかは、論理プロセッサの仮想プロセッサが現在それのパーティション・マネージャを通してディスパッチされているかどうか、即ち、物理プロセッサ上のタイム・スライスにおいて実行中であるかどうかに依存する。論理プロセッサ用の作動可能キューは、論理プロセッサで実行されるのを待つ作動可能状態にある１つ、２つ、またはそれ以上のスレッドを含み得る。通常、一時に１つのスレッドだけが論理プロセッサにおいて実行状態に置かれる。
【００３２】
スレッドは、優先使用またはタイム・アウト３１４によって、論理プロセッサの所有権を失って、実行状態から作動可能状態に移されることがある。より高い優先順位を有するスレッドがその論理プロセッサ用の作動可能キューに入ると、そのスレッドが優先使用される。スレッドは、それが論理プロセッサの所有権を保持する、即ち、そのタイム・スライス全体にわたって実行状態のままである場合、タイム・アウトする。
【００３３】
スレッドは、システム・コール３１６を発生して、そのシステム・コールの完了を待つために待ち状態３０８に入ることによって実行状態３０６から抜けることも可能である。そのようなシステム・コールは、例えば、或る期間の間スリープするかまたは待機するための意図的な要求、データがディスクから読取られることまたはディスクに書込まれることを求める要求、データが入出力資源から読取られることまたは入出力資源に書込まれることを求める要求等を含む、カーネルによって与えられる何らかのサービスを求める要求であってもよい。
【００３４】
更なる説明のために、図４は、本発明の実施例に従ってカーネルを共用するコンピュータ・システムにおいて仮想プロセッサをスケジュールするための例示的な仮想プロセッサの状態を図解する状態図を示す。図４における円形は仮想プロセッサの状態を表す。円形間の矢印は、パーティション・マネージャの機能によってもたらされる状態遷移を表す。図４に示された仮想プロセッサ状態は作成状態３２２、作動可能状態３２４、実行状態３２６、待ち状態３２８、および停止状態３３０を含む。仮想プロセッサは、一般にはブート・タイムで最初に作成されるときには一時的に作成状態３２２にあり、その仮想プロセッサに対する情報および資源を収集するための時間をパーティション・マネージャに与える。パーティション・マネージャが仮想プロセッサに実行の準備をさせるとき、仮想プロセッサは「開始」される（３２３）、即ち、作動可能状態３２４に移される。
【００３５】
作動可能状態３２４にある仮想プロセッサは、作動可能キュー（図示されてない）に入れられ、実行の機会を待つ。パーティション・マネージャは、ラウンド・ロビン、優先順位等の１つまたはそれ以上のスケジューリング・アルゴリズムに従って、仮想プロセッサの稼動をスケジュールする。パーティション・マネージャは、仮想プロセッサが割り当てられる物理プロセッサの実際の所有権に対して現時点で最も適任とされた作動可能キューからの単一の仮想プロセッサを作動可能状態から実行状態にディスパッチする。通常、一時に１つの仮想プロセッサだけが物理プロセッサにおいて実行状態に置かれる。
【００３６】
仮想プロセッサは、優先使用またはタイム・アウト３３４によって物理プロセッサの所有権を失い、実行状態から作動可能状態に移されることがある。仮想プロセッサは、より高い優先順位を有する仮想プロセッサが物理プロセッサ用の作動可能キューに入ったときに優先使用される。仮想プロセッサは、それがそのタイム・スライス全体を通して物理プロセッサの所有権を保持する場合、即ち、実行状態のままである場合、タイム・アウトする。
【００３７】
仮想プロセッサは、システム・コール３３６を発生して、そのシステム・コールの完了を待つために待ち状態３２８に入ることにより、実行状態３２６から抜けることも可能である。そのようなシステム・コールは、或る期間の間スリープするかまたは待機するための意図的な要求、データがディスクから読取られることまたはディスクに書込まれることを求める要求、データが入出力資源から読取られることまたは入出力資源に書込まれることを求める要求等を含む。仮想プロセッサにおいて実行中のスレッド、即ち、論理パーティションの論理プロセッサにおいて実行中のスレッドが、例えば、キーボード入力を待つために或いはディスクからファイルを読取るためにシステム・コールを発生するとき、キーストロークが生じるまで或いはディスク読取りが終了するまで何もしないというだけのために、仮想プロセッサが物理プロセッサを占有する必要がないということを仮想プロセッサが決定することも可能である。この状況では、仮想プロセッサは、或る期間の間、例えば、１０分の１秒の間スリープし得る。仮想プロセッサを待ち状態から作動可能状態に戻すことは仮想プロセッサの「覚醒」３３８と呼ばれる。
【００３８】
更なる説明のために、図５は、本発明の実施例に従ってカーネル間でカーネル・サービスを共用するための更なる例示的なシステムを図解する機能ブロック図を示す。図５のシステムは、アプリケーション１０８を実行する論理パーティション１１４、カーネル・サービス４０４、４０６を共用するカーネル１０２、１０４、およびカーネル共用インターフェース４０２を含み、これらはすべてコンピュータ１５２において稼動する。
【００３９】
図５のシステムでは、アプリケーション１０８がカーネル共用インターフェース４０２を介してパーティション・マネージャ１１２におけるカーネル１０２にシステム・コールを送る。カーネル共用インターフェース４０２は、パーティション・マネージャ１１２におけるカーネル１０２、１０４との間の双方向の通信を実行し、通信の形式および内容を受信側にとって適正なものに変換する、パーティション・マネージャ１１２のソフトウェア・モジュールである。この例では、アプリケーション・プログラム１０８は、カーネル１０２がカーネル１０４から得るように構成されたカーネル・サービス４０４を求めるシステム・コール４３４をカーネル１０２に発生する。システム・コール４３４は、割込みベクトルの形でパーティション・マネージャ１１２を介してカーネル１０２に送られる。カーネル１０２は、カーネル１０２と互換性のある形式および内容（パラメータ値およびパラメータ・シーケンス）を有するシステム・コールを受け取り、そのシステム・コールが要求するカーネル・サービスが第２のカーネル１０４によって提供されるべきものであるということを決定する。カーネル１０２は、カーネル１０４によって提供されるべきカーネル・サービスを求めるシステム・コールをカーネル共用インターフェース４０２に、そのシステム・コールをカーネル１０４に送るための命令と共に送る（４１０）。
【００４０】
システム・コールをカーネル１０４に送るための命令に応答して、カーネル共用インターフェース４０２は、カーネル１０４からのカーネル・サービスを求める第２システム・コールを発生する。カーネル共用インターフェース４０２は、カーネル１０４と互換性のある形式および内容（パラメータ値およびパラメータ・シーケンス）を有する、カーネル１０４へのシステム・コールを発生する。カーネル共用インターフェース４０２は、実行のために第２システム・コールをカーネル１０４に送る（４１６）。
【００４１】
カーネル１０４は第２システム・コールを受け取ったことに応答してカーネル・サービス４０６を提供する。カーソル・サービス４０６が応答を発生する場合、カーネル１０４はその応答をカーネル共用インターフェース４０２に送る（４１８）。カーネル１０４によって発生された応答はカーネル１０４と互換性のある形式および内容を有する。
【００４２】
カーネル共用インターフェース４０２は、カーネル１０４からの応答を受け取ると、第２応答を発生する。カーネル共用インターフェース４０２によって発生された第２応答はカーネル１０２と互換性のある形式および内容を有する。カーネル共用インターフェース４０２はカーネル１０２に第２応答を送る（４１２）。カーネル１０２は、その第２応答を要求元のアプリケーション１０８に送る（４３６）。
【００４３】
更なる説明のために、図６は、本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための更なる例示システムを図解した機能ブロック図を示す。図６のシステムは、アプリケーション１０８を実行する論理パーティション１１４、パーティション・マネージャ１１２、およびカーネル・サービス４０６を共用するカーネル１０２、１０４を含む。これらはすべてコンピュータ１５２において稼動する。
【００４４】
図６のシステムでは、アプリケーション１０８がパーティション・マネージャ１１２におけるカーネル１０２にシステム・コールを送る（４３８）。カーネル１０２は、共用モジュール４２０およびカーネル共用インターフェース４２２を含む。共用モジュール４２０は、システム・コールにおいてコールされたカーネル・サービスが他のカーネルによって提供されるべきものであるかどうかを決定する、カーネル１０２のソフトウェア・モジュールである。カーネル共用インターフェース４２２は、カーネル１０４とのコミュニケーションを指示し且つそのコミュニケーションをそのコミュニケーションの受け取り側にとって適切な形式および内容に変換する、カーネル１０２のソフトウェア・モジュールである。共用モジュール４２０は、アプリケーション１０８から受け取ったシステム・コールが、第２カーネル１０４によって提供されるべきカーネル・サービスを要求しているかどうかを決定する。アプリケーション１０８から受け取ったシステム・コールが、第２カーネル１０４によって提供されるべきカーネル・サービスを求めるコールを含む場合、カーネル共用インターフェース４２２は、第２カーネル１０４と互換性のある形式および内容を有する第２システム・コールを発生する。カーネル共用インターフェース４２２は、その第２システム・コールを第２カーネル１０４に送る（４２６）。
【００４５】
図６の例では、カーネル１０４はカーネル共用インターフェース４２４を含む。カーネル共用インターフェース４２４は、カーネル・サービス４０６をコールし（４２８）、カーネル・サービス４０６が応答を発生する場合には、そのカーネル・サービス４０６からの応答を受け取る。カーネル・サービス４０６によって発生された応答は、カーネル１０４と互換性のある形式および内容を有する。カーネル共用インターフェース４２４は、カーネル１０２と互換性のある形式および内容を有する第２応答を発生する。カーネル共用インターフェース４２４は、第２応答をカーネル１０２に送る（４３２）。カーネル１０２は第２応答を受け取り、それを要求元のアプリケーション１０８に戻す（４４０）。
【００４６】
更なる説明のために、図７は、本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための例示的方法を図解したフローチャートを示す。図７の方法は、１つまたは複数の論理パーティション１１４、１つまたは複数の論理パーティション１１４において実行される１つまたは複数のアプリケーション１０８、パーティション・マネージャ１１２、およびパーティション・マネージャ１１２における２つまたはそれ以上のカーネル１０２、１０４を有するコンピュータ１５２において実行することが可能である。図７の例では、パーティション・マネージャ１１２は、論理パーティションがブートされると、その論理パーティションに資源を割り当てる。論理パーティション１１４のブート時に、パーティション・マネージャ１１２は、論理パーティション１１４において実行されるアプリケーション１０８にカーネル・サービスを提供するために第１カーネル１０２を論理パーティション１１４に対する資源として割り当てる。
【００４７】
図７の方法は、論理パーティション１１４におけるアプリケーション１０８から、第１カーネル１０２からのカーネル・サービス５２２を求める第１システム・コール５０２をパーティション・マネージャ１１２が受け取るステップ５０８を含む。図７の例では、システム・コールは、システム・コール・ライブラリの関数を介してアプリケーションによってカーネル・サービスの実行のためにカーネルに発生される命令である。
【００４８】
第１システム・コール５０２は、第１カーネル１０２と互換性のある形式５０４および内容５０６を有する。図７の例では、システム・コール５０２の形式５０４はコール・パラメータのシーケンスであり、システム・コール５０２の内容５０６はシステム・コールの識別情報およびコール・パラメータの値である。システム・コールの識別情報はシステム・コールの名称または割込みベクトルの値によって表すことができる。論理パーティション１１４は、アプリケーション１０８から見ると、カーネル・サービスを提供するためにカーネル１０２だけを有する完全なコンピュータであるように見えるので、システム・コール５０２の形式および内容は第１カーネル１０２と互換性を有する。アプリケーション１０８および論理パーティション１１４はカーネル１０２以外のいずれのカーネルも知らない。従って、アプリケーション１０８および論理パーティション１１４は、カーネル１０２と互換性のある形式および内容を有するシステム・コールをカーネル１０２に提供する。
【００４９】
図７の方法は、第１システム・コール５０２に基づいて、第２カーネル１０４からのカーネル・サービス５２２を求める第２システム・コール５１２を発生する（ステップ５１０）。第２システム・コール５１２は、第２カーネル１０４と互換性のある形式５１４および内容５１６を有する。図７の例では、第２カーネル１０４からのカーネル・サービス５２２を求める第２システム・コール５１２を発生するステップ５１０はパーティション・マネージャ１１２によって実行される。パーティション・マネージャ１１２は、例えば、下記の表１に示されるようなデータ構造を使うことによって第２システム・コールを発生することができる。
【表１】
2007328782.tif 000003
【００５０】
表１の各レコードは、論理パーティション識別子、一次カーネル識別子、共用カーネル識別子、および受け取られたシステム・コールと、共用カーネルに送られるべきシステム・コールの形式および内容を指定する発生されたシステム・コールとを関連付ける。表１では、受け取られたコールは、形式、例えば、コールにおいて指定されたパラメータおよびそれらの色と、内容、例えば、関数を呼び出すために使用されたキーワードおよびパラメータの値との両方を有する。表１の第１レコードでは、例えば、受け取られたコールの形式がパラメータ「ｘ、ｙ、ｚ」をその順序で含み、内容がコマンド・キーワード「Ｆ」およびｘ、ｙ、ｚの値を含む。図７の例では、カーネル１０２は、論理パーティション１１４にカーネル・サービスを提供するように割り当てられたカーネルであるので、一次カーネルである。カーネル１０４は、そのサービスの１つを共用するカーネルであるので、図７の例では共用カーネルである。システム・コール５０２は図７の例では受け取られたコールであり、第２システム・コール５１２は発生されたコールである。パーティション・マネージャは、論理パーティションにおけるアプリケーションからシステム・コールを受け取ると、その論理パーティションと関連した一次カーネル識別子を使うことによって、その受け取られたシステム・コールを表１のようなデータ構造において検索し、発生されたシステム・コールにとって必要な形式および内容を識別する。そこで、パーティション・マネージャは、共用カーネルと互換性のある形式および内容を第２システム・コールに与えるための適切なキーワード、パラメータ等を有する命令を形成することにより第２システム・コールを発生する。
【００５１】
図７の方法は、第２システム・コール５１２を第２カーネル１０４に実行のために送るステップ５１８を含む。図７の例では、第２システム・コール５１２を発生したパーティション・マネージャ１１２がその第２システム・コールを第２カーネル１０４に送る。パーティション・マネージャは、表１のようなデータ構造を参照して第２カーネル１０４を識別することが可能である。例えば、表１の第１レコードでは、論理パーティション識別子「１１４」を持った一次カーネルに対する論理パーティションから受け取られた、形式および内容「F(x,y,z)」を有する一次カーネル識別子「１０２」を持った一次カーネルへのシステム・コールに対する共用カーネルが、「１０４」という共用カーネル識別子を有する共用カーネルに対応する。従って、この例におけるパーティション・マネージャは形式および内容「F(x,y,z)」を有するコールを発生し、その発生されたコールを第２カーネル１０４に実行のために送る。第２システム・コール５１２を第２カーネル１０４に実行のために送るステップ５１８は、図２、図５、および図６における参照番号１２４、４０２、４２２、４２４に関連して上述したように、カーネル共用インターフェースの使用によって実行されてもよい。
【００５２】
図７の方法は、更に、第２カーネル１０４がカーネル・サービス５２２を提供するステップ５２０を含む。図７の例における第２カーネル１０４は、第２システム・コール５１２の内容５１６によって指定されたパラメータを用いて第２システム・コール５１２を実行することによってカーネル・サービスを提供する。
【００５３】
図７の方法は、更に、カーネル・サービス５２２を提供するステップ５２０の一部として、第２システム・コール５１２に対する応答を提供するステップ５５０を含む。カーネル１０４は、例えば、カーネル・サービス５２２が応答を発生する場合、そのカーネル・サービスを提供するステップの一部として応答を提供することも可能である。本明細書の恩恵を受ける当業者は、すべてのカーネル・サービスがシステム・コールに対する応答を発生するとは限らないということを認識するであろう。それでもなお、応答を行わないカーネル・サービスも本発明の範囲内にある
【００５４】
図７の方法では、カーネル１０４によって提供された応答５５２は、カーネル１０４と互換性のある形式５５４および内容５５６を有する。図７の方法では、カーネル１０４は、あたかも第２システム・コール５１２が、カーネル・サービスを提供するためにカーネル１０４を使用するアプリケーションからのシステム・コールであるかのように応答５５２を提供する。従って、カーネル１０４は、カーネル・サービスのためのカーネル１０４を使用するアプリケーションが、カーネル１０４からの応答、即ち、カーネル１０４と互換性のある形式および内容を有する応答において期待する形式５５４および内容５５６を有する応答５５２を提供する。
【００５５】
図７の方法は、更に、カーネル１０４からの第１応答５５２を受け取るステップ５５８および第２応答５２６を発生するステップ５６０を含む。図７の例では、パーティション・マネージャ１１２がカーネル１０４からの応答を受け取り（ステップ５５８）、第２応答５２６を発生する（ステップ５６０）。パーティション・マネージャ１１２によって発生された第２応答５２６はカーネル１０２と互換性のある形式５２８および内容５３０を有する。システム・コール５０２に対する応答がカーネル１０２から来ること、従って、その応答がカーネル１０２と互換性のある形式および内容を有すること、をアプリケーション１０８が期待しているので、第２応答５２６はカーネル１０２と互換性のある形式５２８および内容５３０を有する。
【００５６】
図７の方法は、更に、論理パーティション１１４におけるアプリケーション１０８に応答を送るステップ５２４を含む。図７の例では、論理パーティション１１４におけるアプリケーション１０８に応答を送るステップ５２４はパーティション・マネージャ１１２によって実行される。アプリケーション１０８から見れば、カーネル１０２がカーネル・サービス５２２を提供したように見える。
【００５７】
更なる説明のために、図８は、本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための更なる例示的方法を図解したフローチャートを示す。図８の方法は図７の方法と類似している。即ち、図８の方法は、パーティション・マネージャ１１２が、第１カーネル１０２からのカーネル・サービス５２２を求める第１システム・コール５０２を、論理パーティション１１４におけるアプリケーション１０８から受け取るステップ５０８を含む。この場合、第１システム・コール５０２は、第１カーネル１０２と互換性のある形式５０４および内容５０６を有するものである。図７の方法と同様に、図８の方法は、第１システム・コール５０２に従って、第２カーネル１０４からのカーネル・サービス５２２を求める第２システム・コール５１２を発生するステップ５１０を含む。この第２システム・コール５１２は、第２カーネル１０４と互換性のある形式５１４および内容５１６を有する。図７の方法と同様に、図８の方法は、第２システム・コール５１２を実行のために第２カーネル１０４に送るステップ５１８、および応答８０８を提供するステップ５５０を含む、カーネル・サービス５２２を提供するステップ５２０を含む。これらのステップはすべて、一般に、図７の方法に関連して説明したように動作する。しかし、図８の方法では、図７の方法と違って、第１カーネル１０２が第２システム・コール５１２を発生する。
【００５８】
図８の方法は、更に、第１カーネル１０２が第１システム・コール５０２を受け取るステップ６０２を含む。図８の例では、パーティション・マネージャ１１２が、第１システム・コール５０２を受け取り（ステップ５０８）、そのシステム・コールを発生したアプリケーションにカーネル１０２がカーネル・サービスを提供すること決定し、そのシステム・コールをカーネル１０２に送る。
【００５９】
図８の方法は、更に、カーネル・サービス５２２が第２カーネル１０４によって提供されるべきであるということを第１カーネル１０２が決定するステップ６０４を含む。カーネル１０２は、カーネル・サービス５２２がカーネル１０４によって提供されるべきであるということを、例えば、下記の表２に示されるようなデータ構造を使用することによって決定し得る。
【表２】
2007328782.tif 000004
【００６０】
表２の各レコードは、受け取られたシステム・コールを、そのシステム・コールにおいて識別されたカーネル・サービスを提供すべき共用カーネルに関連付け、その共用カーネルへのカーネル・サービスを求めるシステム・コールの形式および内容を指定する。受け取られたシステム・コールがそのようなデータ構造における共用カーネルと関連する場合、カーネル１０２は、システム・コールによってコールされたカーネル・サービスが第２カーネル、即ち、共用カーネルによって提供されるべきであるということを決定することができる。
【００６１】
図８の方法は、更に、第１システム・コール５０２に従って、第１カーネル１０２が、カーネル・サービス５２２を求める第２システム・コール５１２を発生するステップ５１０を含む。カーネル１０２は、表２に示されるようなデータ構造を基準にして第２システム・コール５１２を発生することが可能である。表２では、受け取られたシステム・コールが形式（例えば、そのコールにおいて指定されたパラメータおよびそれらの順序）並びに内容（例えば、関数を呼び出すために使用されるコマンド・キーワードおよびパラメータの値）の両方を有する。例えば、表２の第１レコードでは、受け取られたシステム・コールの形式がパラメータ「x,y,z」をその順序で含み、内容がコマンド・キーワード「Ｆ」ならびに x、y、および z の値を含む。図８の例では、カーネル１０２は、論理パーティション１１４にカーネル・サービスを提供するように割り当てられるので、一次カーネルである。図８の例では、カーネル１０４は、そのサービスの１つを共用するカーネルであるので、共用カーネルである。システム・コール５０２は、図８の例では受け取られたシステム・コールであり、第２システム・コール５１２は発生されたシステム・コールである。カーネル１０２は、パーティション・マネージャ１１２からシステム・コールを受け取ると、その受け取られたシステム・コールの識別子を使用することにより、カーネル・サービスを提供する共用カーネルの身元と、カーネル・サービスを求める共用カーネルへの発生されたシステム・コールにとって必要な形式および内容とを、表２のようなデータ構造において検索することが可能である。そこで、カーネル１０２は、適切なキーワードおよびパラメータを用いて命令を形成することによって、共用カーネルと互換性のあるように正しい形式で第２システム・コール５１２を発生することが可能である。
【００６２】
図８の方法は、第２カーネル１０４がカーネル・サービス５２２を提供するステップ５２０を含み、そのステップ５２０は、カーネル・サービス５２２によって発生された応答を提供するステップ５５０を含む。この例では、第２カーネル１０４が、第２システム・コールに対する応答８０８を第１カーネル１０２に提供する。なお、応答８０８は第１カーネル１０２と互換性のある形式８１０および内容８１２を有する。従って、この例におけるカーネル１０４は、カーネル１０２と互換性のある応答を定式化することを可能にするに十分な情報でもって構成される。それとは別に、カーネル１０４が、カーネル１０４と互換性のある形式および内容を有する応答を提供してもよく、カーネル１０２が、カーネル１０２と互換性のある形式および内容を有するようにその応答を変換するように構成されてもよい。いずれの方法も、要求元のパーティションおよび要求元のアプリケーションに応答が戻されるときまでには、その応答はカーネル１０２と互換性のある形式および内容を有することになるであろう。というのは、カーネル１０２と互換性のある戻りデータは、要求元のアプリケーションが期待しているものであるためである。
【００６３】
図８の方法は、更に、第１カーネル１０２において応答８０８を受け取るステップ８１４および第１カーネル１０２からアプリケーション１０８に応答を送るステップ８１６を含む。この例における応答８０８はカーネル１０２と互換性のある形式８１０および内容８１２を既に有するので、第１カーネル１０２からアプリケーション１０８に応答を送るステップ８１６は、修正のない応答をカーネル１０２を通してアプリケーション１０８に送ることによって実行されてもよい。
【００６４】
更なる説明のために、図９は、本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための更なる例示的方法を図解したフローチャートを示す。図９の方法は図７の方法と類似している。即ち、図９の方法は、第１カーネル１０２からのカーネル・サービス５２１を求める第１システム・コール５０２を、論理パーティション１１４におけるアプリケーション１０８から、パーティション・マネージャ１１２が受け取るステップ５０８と、第１システム・コール５０２に従って、第２カーネル１０４からのカーネル・サービス５２２を求める第２システム・コール７０４を発生するステップ５１０を含む。なお、第１システム・コール５０２は、第１カーネル１０２と互換性のある形式５０４および内容５０６を有する。この例では、カーネル・サービス５２１およびカーネル・サービス５２２は同等のカーネル・サービス、例えば、ディスク入出力要求、メモリ割振り要求等である。カーネル・サービス５２１は、カーネル１０２によって提供されるようなサービスの形式であり、カーネル・サービス５２２は、カーネル１０４によって提供されるようなサービスの形式である。カーネル１０２は、サービス５２１によって表された、カーネル１０４からのサービスのタイプを要求により得るように構成される。カーネル１０４は、本発明の実施例に従ってカーネル・サービス５２２を共用するように構成される。
【００６５】
しかし、図９の方法では、図７の方法とは違って、第１カーネル１０２が第２システム・コール７０４を発生する。更に、図９の方法では、第２カーネル１０４からのカーネル・サービス５２２を求める第２システム・コールを第１システム・コールに従って発生するステップ５１０は、汎用システム・コール７０４を発生するステップ７０２によって実行される。この例における汎用システム・コール７０４は、汎用形式７０６および汎用内容７０８を有するシステム・コールである。汎用形式および汎用内容は、この例では、第２カーネル１０４を含む複数のカーネルによって、互換性のあるものとして受け入れられる形式および内容である。
【００６６】
図９の方法は、更に、第２システム・コール、即ち、汎用システム・コール７０４を、実行のために第２カーネル１０４に送るステップ５１８を含む。図９の例では、パーティション・マネージャ１１２は、汎用システム・コール７０４を発生すると、それを第２カーネル１０４に送る。パーティション・マネージャは、表１のようなデータ構造を参照して第２カーネル１０４を識別することができる。汎用システム・コール７０４を実行のために第２カーネル１０４に送るステップ５１８は、図２、図５、および図６における参照番号１２４、４０２、４２２、４２４に関連して上述したように、カーネル共用インターフェースの使用によって実行されてもよい。
【００６７】
図９の方法では、第２カーネル１０４がカーネル・サービス５２２を提供するステップ７１０は、第２カーネル１０４が汎用システム・コール７０４に対する汎用応答７１４を提供するステップ７１２を含む。この例における汎用応答７１４は、汎用形式７１６および汎用内容７１８を有する応答である。汎用形式および汎用応答は、この例では第１カーネル１０２を含む複数のカーネルによって互換性のあるものとして受け入れられた形式および内容である。
【００６８】
カーネル間でカーネル・サービスを共用するための十分に機能的なコンピュータ・システムに関連して、本発明の実施例を広範に説明した。しかし、任意の適当なデータ処理システムによる使用のために信号保持媒体に設けられたコンピュータ・プログラムとして本発明を具現化することも可能であることは当業者には明らかであろう。そのような信号保持媒体は、磁性媒体、光学的媒体、または他の適当な媒体を含む、機械可読情報のための伝送媒体または記録可能媒体であってもよい。記録可能媒体の例は、ハードディスク・ドライブにおける磁気ディスク、光学的ドライブ用のコンパクト・ディスク、磁気テープ、および当業者が想起し得る他の媒体を含む。伝送媒体の例は、音声通信のための電話網と、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）並びにインターネット・プロトコルおよびワールド・ワイド・ウェブを用いて通信を行うネットワークのようなデジタル・データ通信ネットワークを含む。適当なプログラミング手段を有する任意のコンピュータ・システムが、本発明の方法のステップを、コンピュータ・プログラムとして具体化して実行し得るということは当業者には容易に明らかであろう。本明細書において開示された実施例の幾つかは、コンピュータ・ハードウェアにインストールされて実行されるソフトウェアに向けられているが、それでも、ファームウェアとしてまたはハートウェアとして実装される別の実施例も本発明の範囲内にあるということは当業者には明らかであろう。
【００６９】
本発明の主旨から逸脱することなく、本発明の種々の実施例において修正および変更を行い得ることは、以上の説明から明らかであろう。本明細書における説明は単に説明を目的とするものであって、限定の意味で解釈されるべきではない。本発明の範囲は「特許請求の範囲」の記載によってのみ限定されるべきである。
【図面の簡単な説明】
【００７０】
【図１】本発明の実施例に従って、カーネル間でカーネル・サービスを共用する場合に有用な例示的コンピュータを含む自動コンピューティング・マシンのブロック図である。
【図２】本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための例示的システムを図解した機能ブロック図である。
【図３】本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための例示的スレッドの状態を図解した状態図である。
【図４】本発明の実施例に従って、カーネルを共用するコンピュータ・システムにおいて仮想プロセッサをスケジュールするための例示的仮想プロセッサの状態を図解した状態図である。
【図５】本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための更なる例示的システムを図解した機能ブロック図である。
【図６】本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための更なる例示的システムを図解した機能ブロック図である。
【図７】本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための更なる例示的方法を図解したフローチャートである。
【図８】本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための更なる例示的方法を図解したフローチャートである。
【図９】本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための更なる例示的方法を図解したフローチャートである。
【図１】
2007328782.tif 000005
【図２】
2007328782.tif 000006
【図３】
2007328782.tif 000007
【図４】
2007328782.tif 000008
【図５】
2007328782.tif 000009
【図６】
2007328782.tif 000010
【図７】
2007328782.tif 000011
【図８】
2007328782.tif 000012
【図９】
2007328782.tif 000013