JP5015665B2 - カーネル間でカーネル・サービスを共用するための方法、装置、およびコンピュータ・プログラム - Google Patents

カーネル間でカーネル・サービスを共用するための方法、装置、およびコンピュータ・プログラム Download PDF

Info

Publication number
JP5015665B2
JP5015665B2 JP2007147678A JP2007147678A JP5015665B2 JP 5015665 B2 JP5015665 B2 JP 5015665B2 JP 2007147678 A JP2007147678 A JP 2007147678A JP 2007147678 A JP2007147678 A JP 2007147678A JP 5015665 B2 JP5015665 B2 JP 5015665B2
Authority
JP
Japan
Prior art keywords
kernel
system call
services
logical
partition
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.)
Active
Application number
JP2007147678A
Other languages
English (en)
Other versions
JP2007328782A (ja
Inventor
ディアナ・ガーザ・フレミング
アンドリュー・ダンシー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2007328782A publication Critical patent/JP2007328782A/ja
Application granted granted Critical
Publication of JP5015665B2 publication Critical patent/JP5015665B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、データ処理の分野に関し、詳しく云えば、カーネル・サービスをカーネル間で共用するための方法、装置、およびコンピュータ・プログラムに関するものである。
スレッドはマルチスレッド・コンピュータにおけるソフトウェア実行の単位である。即ち、スレッドはコンピュータ・システムにおける作業の実行可能な構成要素である。スレッドは、実行可能なコンピュータ・プログラム命令の個別のストリームとして表すことができる。そのようなコンピュータでは、ソフトウェア・プログラムは、コード・セグメントおよびオフセット・レジスタ、データ・セグメントおよびオフセット・レジスタ、スタック・セグメントおよびオフセット・レジスタ、フラッグ・レジスタ、命令ポインタ・レジスタ等の、ソフトウェア・プログラムの実行に必要なすべてのプロセッサ・レジスタを含む「プロセス」と呼ばれる実行単位で実行される。効率性のために、「プロセス」は更にスレッドとして編成される。プロセスの各スレッドは、プロセスの他の全スレッドとの間でメモリを共用することを除けば、実行のために必要なすべての属性を個々に所有し、それによってオペレーティング・システムのスレッド切り替え(コンテキスト・スイッチ)に関するオーバーヘッドを少なくしている。
本明細書では、マルチスレッディングの2つのモード、即ち、同時マルチスレッディング(SMT)および単一スレッド(ST)・マルチスレッディングを考察する。STマルチスレッディングは、時間多重化マルチスレッディング、即ち、タイム・スライスの使用によるマルチスレッディングである。STモードでは、個々のスレッドおよび仮想プロセッサの両方が、時間のセグメントとして配分されたプロセッサのコンピューティング・キャパシティの一部に割り当てられる。時間のセグメントの各々は「タイム・スライス」と呼ばれる。
或る種のプロセッサは、複数のスレッドからのコンピュータ命令を同時に受け付ける「同時マルチスレッディング」または「SMT」と呼ばれる特徴を有する。SMTの基になる考えは、1つのチップ上のプロセッサ・ハードウェアを、マルチスレッド・ワークロードにおける複数のスレッド間で共用することである。SMTは、単一の物理プロセッサに対する命令を、複数の独立したスレッドに単一の処理サイクルで発生させるという技術である。従来のプロセッサ・アーキテクチャでは、一時に、1つのスレッドだけが1つのプロセッサに命令を発生する。本明細書で開示されるSMTを実装するプロセッサの例は、IBM社のPower5プロセッサである。
SMTは、各々が複数の実行のスレッドからの命令を同時に受け付けることができる、物理プロセッサに実装される。更に、SMTモードでは、仮想プロセッサおよび仮想プロセッサ上で実行されるスレッドの両方とも、タイム・スライスを通して割り当てることができる。SMTモードで仮想プロセッサにおいて実行されるスレッドは、論理プロセッサにおいて実行されると見なすこともできる。従って、SMTモードで物理プロセッサにおいて実行される仮想プロセッサは、複数の論理プロセッサを支援するものと見なすこともできる。スレッドがSTモードまたはSMTモードのいずれで実行されても、論理プロセッサにおいて実行されるスレッドは、そのプロセッサの論理的性質または仮想的性質を知らないし、それを従来のプロセッサと見なす。
多重処理は、STモードまたはSMTモードで複数の論理パーティションをパーティションごとに支援するコンピュータに実装される。各パーティションは、個別のカーネルを含む個別のオペレーティング・システム全体を実装する。カーネルは、カーネル・サービスを提供することによって、論理パーティションにおいて実行されるアプリケーションを支援する。カーネルによって提供されるサービスのタイプは一般には同じであるが、種々のカーネルが種々の方法でサービスを実施することも可能である。このため、カーネルによっては、カーネル・サービスの提供において他のカーネルよりも優れているものがある。しかし、従来技術では、優れたサービスを行うカーネルは、そのようなサービスを他のカーネルと共用することができず、同じタイプの他のカーネルとさえ共用し得ない。例えば、優れたディスクI/Oドライバを有するUNIX(登録商標)(登録商標)カーネルの場合、それは、たとえ他のUNIX(登録商標)(登録商標)カーネルがまったく同じタイプおよびバージョンのものであったとしても、そのような他のUNIX(登録商標)(登録商標)カーネルに抗して作動する実行スレッドにとってそのディスクI/Oドライバを使用可能にすることはできないであろう。
本発明の目的は、カーネル間でカーネル・サービスを共用するための方法、装置、およびコンピュータ・プログラムを提供することである。
本発明の方法は、パーティション・マネージャが、第1カーネルと互換性のある形式および内容を有し且つ前記第1カーネルからのカーネル・サービスを求める第1システム・コールを、論理パーティションにおけるアプリケーションから受け取るステップと、前記第1システム・コールに従って、第2カーネルと互換性のある形式および内容を有し且つ前記第2カーネルからのカーネル・サービスを求める第2システム・コールを発生するステップと、前記第2システム・コールを、前記パーティション・マネージャを介して前記第2カーネルに、実行のために送るステップとを含む。
本発明の上記および他の目的、特徴、および利点は、添付図面において図解される本発明の実施例に関する以下の更に詳細な説明から明らかであろう。なお、図面において、同じ参照番号は、一般に、本発明の実施例の同じ要素を表す。
本発明の実施例による、カーネル間でカーネル・サービスを共用するための例示的な方法、装置、およびコンピュータ・プログラムを、添付図面を参照して説明する。本発明によるカーネル間でのカーネル・サービスの共用は、自動コンピューティング・マシン、即ち、1つまたは複数のコンピュータ上で実施される。図1は、本発明の実施例による、カーネル間でカーネル・サービスを共用する場合に有用な例示的コンピュータ152を含む自動コンピューティング・マシンのブロック図を示す。図1のコンピュータ152は、幾つかの物理プロセッサ156およびランダム・アクセス・メモリ(RAM)168を含む。RAM168は、システム・バス160を介して物理プロセッサ156およびこのコンピュータの他のコンポーネントに接続される。
RAM168には、アプリケーション・プログラム108、オペレーティング・システム110、および論理プロセッサ106を含む論理パーティション114、並びに、2つまたはそれ以上のカーネル102、104、仮想プロセッサ122、およびカーネル共用インターフェース124を含むパーティション・マネージャ112が記憶される。論理パーティション(LPAR)114は、単一のコンピュータにおけるコンピュータ資源の分散が、あたかもそのコンピュータが2つまたはそれ以上の独立したコンピュータであるかのようにコンピュータ機能を整えることを可能にするデータ構造およびサービスのセットである。各論理パーティションは、それがプロセッサ時間、メモリ、オペレーティング・システム等を含む独立したコンピュータであるかのように動作するために必要なすべての資源を割り当てられる。論理パーティションおよび論理パーティションを通してアプリケーションにとって使用可能にされる資源は、一括して「仮想マシン」と呼ばれることもある。説明の便宜上、図1のシステムは、1つの論理パーティションしか含まないが、本発明の実施例による、カーネル間でのカーネル・サービスを共用するシステムは任意の数の論理パーティションを支援することができる。
アプリケーション・プログラム108はユーザ・レベルのコンピュータ・プログラム・コードのモジュールである。アプリケーション・プログラムは、オペレーティング・システムのカーネルを介するコールによりコンピュータ資源へのアクセスを得なければならない非特権コードである。
オペレーティング・システム110は、スレッドをスケジュールするシステム・ソフトウェア層であり、メモリ・アクセス、入出力資源へのアクセス等を含む、システム資源をスレッドにとって使用可能にするための機能を提供する。オペレーティング・システムは、コンピュータ資源にアクセスするための割り振りおよび承認も制御する。オペレーティング・システムは、キーボードからの入力を認識すること、出力をディスプレイ・スクリーンに送ること、ディスク・ドライブ上のファイルおよびディレクトリを追跡すること、並びにディスク・ドライブおよびプリンタのような周辺装置を制御することのような低レベルの基本的タスクを実行する。オペレーティング・システムは、セキュリティの責任も負い、未承認のユーザがシステムをアクセスしないことおよびスレッドがアクセスを承認されている資源だけをアクセスすることを保証する。多くのオペレーティング・システムの機能は、カーネルによって、この例では、一次カーネル102または共用カーネル104によって具現化される。本発明の実施例による、カーネル間でカーネル・サービスを共用するために有用なオペレーティング・システムはマルチスレッディング・オペレーティング・システムであり、その例は、UNIX(登録商標)、Linux(商標)、Windows (登録商標)XP、AIX(商標)、IBM社のi5/OS(商標)、および当業者が思いつくようなその他のものを含む。
論理プロセッサ106は、論理パーティションにおける実行のためにスレッドをスケジュールするためのオペレーティング・システムの構造体である。即ち、オペレーティング・システム110は、物理プロセッサまたは仮想プロセッサにおける実行のためにスレッドをスケジュールするのではなく、論理プロセッサ106における実行のためにスレッドをスケジュールする。論理プロセッサにおいてスレッドをスケジュールすることは使いやすい構造体および処理を提供し、その場合、スレッドは、スレッドの観点から、論理パーティション全体の資源すべてを自由に有しているように見える。仮想プロセッサは、物理プロセッサの一部分を割り振られる。しかし、論理プロセッサは、マシンにおける他のすべての実行のように、それが細かいタイム・スライスで物理的に稼動しているという事実にもかかわらず、論理的には1つの完全なプロセッサである。従って、LPARにおける論理プロセッサ上で実行中のスレッドは、そのスレッドから見ると、1つの完全に独立したコンピュータのすべての資源を有しているように見える。即ち、論理プロセッサは、1つのパーティションにおいて稼動しているオペレーティング・システムにおけるディスパッチャがスレッドをディスパッチする対象であり、仮想プロセッサはパーティション・マネージャによってディスパッチされるものである。STモードで動作しているLPARでは、論理プロセッサと仮想プロセッサとの間の対応関係は1対1であり、各仮想プロセッサに対して1つの論理プロセッサが対応する。SMTモードで動作しているLPARでは、論理プロセッサと仮想プロセッサとの間の対応関係はN対1であり、ここでNは1つの仮想プロセッサにおいて支援される論理プロセッサの数である。即ち、各仮想プロセッサに対してN個の論理プロセッサが対応する。
仮想プロセッサ122は、データ構造体およびコンピュータ・プログラム命令から成るサブシステムであり、論理パーティションへのプロセッサ・タイムの割当てを実施する。物理プロセッサの共用プールは、論理パーティションへの部分的な物理プロセッサの割当て(タイム・スライスで)を支援する。タイム・スライスにおいて共用されるそのような部分的物理プロセッサが「仮想プロセッサ」と呼ばれる。共用処理プールに保持された物理プロセッサは論理パーティションの間で共用される。本明細書における例では、物理プロセッサは、1.0が1つの物理プロセッサの処理能力を表す処理単位に従って共用される。仮想プロセッサにおいて実行されるべきスレッドの割り当ては、一般に、仮想プロセッサの論理プロセッサにおいて実行されるべきスレッドの割り当てによって行われる。STモードの場合、各仮想プロセッサが1つの論理プロセッサを有する。しかし、SMTモードの場合、これらの例では、各仮想プロセッサは2つの論理プロセッサを有する。
図1のパーティション・マネージャ112は、論理パーティションの下で実行されるシステム・ソフトウェア層である。即ち、パーティション・マネージャ112は、論理パーティションと基本的なコンピュータ・ハードウェア、即ち、物理プロセッサ156を含む物理コンピュータ・コンポーネントとの間で稼動する。パーティション・マネージャは、複数の論理パーティションにおける複数のオペレーティング・システムおよびアプリケーションの設定および実行を支援する。とりわけ、パーティション・マネージャは、ユーザまたはシステム管理者によるパーティション、仮想プロセッサ、および論理プロセッサの設定を支援する。複数の論理パーティションを支援するコンピュータにおけるオペレーティング・システムのカーネルが論理プロセッサにおいてスレッドをスケジュールおよびディスパッチするように、パーティション・マネージャは物理プロセッサにおける仮想プロセッサをスケジュールおよびディスパッチする。
論理パーティションにおけるオペレーティング・システムは、特定のアプリケーションまたはアプリケーションのセットを実行するためにしばしば使用されるので、パーティション・マネージャは、全体的なハードウェア・コストを減らすために単一のコンピュータにおいて複数のオペレーティング・システムおよびそれらのアプリケーションを実行することを可能にする。製造および試験システムは同じハードウェアにおいて同時に稼動することが可能である。更に、パーティション・マネージャが複数の論理パーティションを支援することによって、Windows (登録商標)およびLinux(商標)のような種々のオペレーティング・システムが同じ基本コンピュータ・ハードウェアを共用することも可能である。パーティション・マネージャは、「ハイパーバイザ」、「仮想化マネージャ」、または「仮想マシン・モニタ」とも呼ばれることがある一種のソフトウェアである。
図1の例では、パーティション・マネージャ112はカーネル102、104を含む。カーネルはオペレーティング・システムのコアである。カーネルは、「システム・エグゼクティブ」または「システム・モニタ」とも呼ばれる特権モジュールである。カーネルは、アプリケーションおよび他のオペレーティング・システム・コンポーネントにおける実行スレッドのためにコンピュータ・システム・ハードウェアへの安全なアクセス(メモリ、入出力資源等へのアクセスを含む)を行う責任を負ったソフトウェアである。カーネルは、アプリケーション・プログラムおよびオペレーティング・システムのプロセスを形成する実行スレッドもスケジュールする。カーネルは、一般に、メモリ・ロック、信号、およびセマフォのようなプロセス間通信および同期化のためのサービスも提供する。カーネルは、一般に、潜在的な複雑さをアプリケーションからおよびオペレーティング・システムの他のコンポーネントから隠蔽するためにハードウェアの抽象化(或るタイプのすべての装置にとって普遍的な命令のセット)も提供する。ハードウェア抽象化コンポーネントは、ハードウェア装置の製造仕様に特有の機能を提供するためのソフトウェア・ドライバに依存する。要するに、カーネルは、下記のようなカーネル・サービスを提供する。
・ システム・ハードウェアへのアクセスの制御および調停。
・ プロセス、スレッド、ファイル、デバイス等のような基本抽象化の実装および支援。
・ メモリ、プロセッサ、ディスク、ファイル記述、プロセス記述、スレッド記述等のようなシステム資源の割り振り、およびスケジューリング。
・ システム資源のセキュリティおよび保護の強化。
・ システム・コールを介したサービスを求めるユーザ要求およびアプリケーション要求への応答。
従来はオペレーティング・システム内にインストールされていたオペレーティング・システム・カーネル102、104が、この例では、パーティション・マネージャ112にインストールされ、従って、カーネル・サービスを求めるアプリケーション・プログラムからのシステム・コールがパーティション・マネージャを通して方向付けされる。パーティション・マネージャへのカーネルのインストールは、複数の論理パーティションがカーネルの同じインスタンスを使用することを可能にすることによってシステム資源を節約する。パーティション・マネージャへのカーネルのインストールは、「Sharing A Kernel Of An Operating System Among Logical Partitions」と題した出願番号11/301113の米国特許出願に詳しく説明されている。
図1に例示のコンピュータでは、パーティション・マネージャ112はカーネル共用インターフェース124を示している。カーネル共用インターフェース124は、アプリケーション・プログラミング・インターフェース(API)であり、本発明の実施例によればカーネル間でのカーネル・サービスの共用を容易にするように構成された、例えば、コンピュータ・プログラム命令のライブラリとして実装されるコンピュータ・ソフトウェア・モジュールである。カーネル共用インターフェース124は、第1カーネル102からのカーネル・サービスを求める第1システム・コールを論理パーティション114におけるアプリケーション108から受け取ること、第2カーネル104からのカーネル・サービスを求める第2システム・コールを第1システム・コールに応じて発生すること、およびパーティション・マネージャ112を介して第2カーネル104に第2システム・コールを実行のために送ることができるコンピュータ・プログラム命令を含む。この例におけるカーネル共用インターフェース124は、更に、カーネル・サービスを提供するカーネル104からの応答を受け取ることおよび論理パーティション114におけるアプリケーション108に応答を送ることができるコンピュータ・プログラム命令も含む。カーネル共用インターフェース124は、その応答が第1カーネル102と互換性のある形式および内容を有することを保証することができるコンピュータ・プログラム命令を含むことも可能である。
図1の例では、アプリケーション108、論理パーティション114、論理プロセッサ106、オペレーティング・システム110、パーティション・マネージャ112、仮想プロセッサ122、カーネル102、104等のようなコンピュータ・ソフトウェア・コンポーネントがRAM168に配置されて示されている。しかし、そのようなソフトウェアの多くのコンポーネントは不揮発性メモリ166に記憶されてもよいことは明らかであろう。図1のコンピュータ152は、システム・バス160を介してコンピュータ152の物理プロセッサ156および他のコンポーネントに接続された不揮発性コンピュータ・メモリ166を含む。不揮発性コンピュータ・メモリ166は、ハードディスク・ドライブ170、光ディスク・ドライブ172、電気的消去可能リード・オンリ・メモリ・スペース(いわゆる「EEPROM」または「フラッシュ」メモリ)174、RAMドライブ(図示されてない)、または当業者にとって想起し得る他の種類の不揮発性メモリとして具現化することも可能である。
図1における例示のコンピュータ152は、1つまたは複数の入出力インターフェース・アダプタ178を含む。コンピュータにおける入出力インターフェース・アダプタは、例えば、コンピュータ・ディスプレイ・スクリーンのようなディスプレイ装置180への出力、並びに、キーボードおよびマウスのようなユーザ入力装置181からのユーザ入力、を制御するためのソフトウェア・ドライバおよびコンピュータ・ハードウェアを介したユーザ指向の入出力を実現している。
図1における例示のコンピュータ152は、他のコンピュータ182とのデータ通信を行うための通信アダプタ167を含む。そのようなデータ通信は、例えば、IPネットワークのようなデータ通信ネットワークを介しておよび当業者が想起し得る別の方法で実行することも可能である。通信アダプタは、1つのコンピュータが他のコンピュータにデータ通信を直接にまたはネットワークを介して送るハードウェア・レベルのデータ通信を実現する。本発明の実施例に従ってカーネル間でカーネル・サービスを共用するために有用な通信アダプタの例は、有線のダイヤルアップ通信、有線ネットワーク通信のためのイーサネット(登録商標)(IEEE 802.3)アダプタ、および無線ネットワーク通信のための IEEE 802.11b アダプタを含む。
更なる説明のために、図2は、本発明の実施例に従ってカーネル間でカーネル・サービスを共用するための例示的システムを図解した機能ブロック図を示す。図2のシステムは、2つの論理パーティション、即ち、STモードの論理パーティション202およびSMTモードの論理パーティション204を含む。図2のシステムは、6個の論理プロセッサ、即ち、論理パーティション202のための2つ論理プロセッサ230、232および論理パーティション204のための4つ論理プロセッサ234、236、238、240を含む。図2のシステムは、更に、4つの仮想プロセッサ、即ち、論理パーティション202に割り当てられた2つ仮想プロセッサ242、244および論理パーティション204に割り当てられた2つ仮想プロセッサ246、248も含む。図2のシステムは、更に、3つの物理プロセッサ250、252、254も含む。この例では、3つの物理プロセッサ250、252、254の処理容量は、次のように論理パーティションに割り当てられる。
・ 物理プロセッサ250のすべての処理容量が仮想プロセッサ242に完全に割り当てられ、従って、論理プロセッサ230は物理プロセッサ250全体を使用し得る。
・ 物理プロセッサ252の処理容量の半分が仮想プロセッサ244に割り当てられ、従って、論理プロセッサ232は物理プロセッサ252の半分をタイム・スライスで使用し得る。
・ 物理プロセッサ252の処理容量の半分が仮想プロセッサ246に割り当てられる。仮想プロセッサ246は、仮想プロセッサ246用の2つの論理プロセッサ234、236を含む、SMTモードで稼動する論理パーティション204に割り当てられる。論理プロセッサ234および236は、それぞれ、物理プロセッサ252の処理容量の1/4をタイム・スライスで使用し得る。
・ 物理プロセッサ254のすべての処理容量が仮想プロセッサ248に割り当てられる。仮想プロセッサ248は、仮想プロセッサ248用の2つの論理プロセッサ238、240を含む、SMTモードで稼動する論理パーティション204に割り当てられる。論理プロセッサ238および240は、それぞれ、物理プロセッサ254の処理容量の半分をタイム・スライスで使用し得る。
図2のシステムは、パーティション・マネージャ112を含む。パーティション・マネージャは、論理パーティションの下で稼動するシステム・ソフトウェア層である。即ち、パーティション・マネージャ112は、論理パーティションと、物理プロセッサ250、252、254を含む基本コンピュータ・ハードウェアである物理コンピュータ・コンポーネントとの間で稼動する。パーティション・マネージャは、複数の論理パーティションにおける複数のオペレーティング・システムおよびアプリケーションの設定および実行を支援する。とりわけ、パーティション・マネージャは、ユーザまたはシステム管理者によるパーティション、仮想プロセッサ、および論理プロセッサの設定を支援する。複数の論理パーティションを支援するコンピュータにおけるオペレーティング・システムのカーネルが論理プロセッサにおけるスレッドをスケジュールし、ディスパッチするように、パーティション・マネージャは物理プロセッサにおける仮想プロセッサをスケジュールし、ディスパッチする。論理パーティションにおけるオペレーティング・システムは、多くの場合、特定のアプリケーションまたはアプリケーションのセットを実行するために使用されるので、パーティション・マネージャは、単一のコンピュータにおいて複数のオペレーティング・システムおよびそれらのアプリケーションを実行することを可能にし、ハードウェア・コスト全体を減少させる。製造および試験システムは同じハードウェアにおいて同時に稼動することが可能である。更に、パーティション・マネージャが複数の論理パーティションを支援することによって、Windows (登録商標)およびLinux(商標)のような種々のオペレーティング・システムが同じ基本コンピュータ・ハードウェアを共用できる。
図2の例では、パーティション・マネージャ112はカーネル共用インターフェース124を含む。カーネル共用インターフェース124は、アプリケーション・プログラミング・インターフェース、即ち、「API」であり、本発明の実施例に従ってカーネル間でのカーネル・サービスの共用を容易にするように構成されたコンピュータ・プログラム命令のライブラリとして実装されるコンピュータ・ソフトウェア・モジュールである。カーネル共用インターフェース124は、第1カーネル102からのカーネル・サービスを求める第1システム・コールを論理パーティション202、204におけるアプリケーション206、208から受け取ること、第1システムコールに応じて第2カーネルからのカーネル・サービスを求める第2システム・コールを発生すること、および実行のためにパーティション・マネージャ112を介して第2カーネル104に第2システム・コールを送ることができるコンピュータ・プログラム命令を含む。カーネル共用インターフェース124は、更に、カーネル・サービスを提供するカーネル104からの応答を受け取ることおよび第1システム・コールを送った論理パーティション202、204におけるアプリケーション206、208に応答を送ることができるコンピュータ・プログラム命令を含む。カーネル共用インターフェース124は、その応答が第1カーネル102と互換性のある形式および内容を有することを保証することができるコンピュータ・プログラム命令を含むことも可能である。
図2のシステムは、論理パーティション202、204に、それぞれ、オペレーティング・システム210、220を含む。この例では、アプリケーションまたはユーザに直接アクセスし得るオペレーティング・システム機能が論理パーティションに残っておリ、一方、オペレーティング・システム・カーネル102、104がパーティション・マネージャ112にインストールされる。そのような機能は、グラフィカル・ユーザ・インターフェース(GUI)212、222に対する支援を含む。そのような機能は、例えば、オペレーティング・システム・ユーティリティおよびライブラリ関数に対するコマンド・ライン・インターフェースを提供するシェル214、224に対する支援も含む。アプリケーションまたはユーザに直接アクセスし得るオペレーティング・システムの機能はシステム・ユーティリティ216、226も含む。システム・ユーティリティは、一般には、例えば、ファイルを作成、オープン、または削除するためのプログラム、ファイルのディレクトリを作成およびナビゲートするためのプログラム、環境変数を読取ってセットし、ファイル内のテキストをサーチする等を行うためのプログラム、のようなGUIまたはシェルを通してアクセスし得るシステム管理のためのプログラムを含む。
アプリケーションまたはユーザに直接アクセスし得るオペレーティング・システムの機能は、システム・コールのライブラリ(218、228)を含み得るし、システム・コールのライブラリ(218、228)として実現することも可能である。システム・コール・ライブラリは、カーネル102、104内の特権ソフトウェア・ルーチンへのコールによってハードウェア依存のサービスおよび他の保護されたシステムへのアクセスを得ることを可能にするアプリケーション・プログラム・インターフェース(API)を表す。カーネル・スペースにおける特権コードに対するそのようなコールは、システム・コール・ライブラリの関数内からコールされた割り込みまたはソフトウェア・トラップによってもたらされる。システム・コール・アクセス・ライブラリ内の関数コールに対するアクセスは、一般に、1つまたは複数のシステム・コール・ライブラリをアプリケーションもしくはユーティリティに、または実行時に動的にロードし得る他のライブラリ(動的にリンクされたライブラリ、即ち、「DLL」)にコンパイルすることによってもたらされる。
更なる説明のために、図3は、本発明の実施例に従ってカーネル間でカーネル・サービスを共用するための例示的なスレッド状態を図解した状態図を示す。図3における円形はスレッド状態を表す。円形間の矢印はカーネル機能によってもたらされた状態遷移を表す。図3において表されたスレッド状態は、作成状態302、作動可能状態304、実行状態306、待ち状態308、および停止状態310を含む。スレッドは、最初に他のスレッドの要求で作成されるとき、一時的に作成状態302にあり、そのスレッドのための情報および資源を収集するためにカーネル時間を与える。カーネルがスレッドに実行の準備をさせると直ちに、そのスレッドが「開始(303)」される、即ち、作動可能状態304に移動する。
作動可能状態304にあるスレッドは作動可能キュー(図示されてない)に入れられ、実行の機会を待つ。どの作動可能スレッドが次に実行されるかを決定するためのプロセスは「スケジューリング」と呼ばれる。FIFO、ラウンド・ロビン、優先順位等の多くのスケジューリング・アルゴリズムが存在する。スレッドを作動可能状態から実行状態に移すためのカーネル機能は「ディスパッチ(312)」と呼ばれる。スレッドはディスパッチされると実行状態になるので、「ディスパッチ」、「実行中」および「実行状態」は一般に同義である。
スレッドは、それがディスパッチされたとき、即ち、実行状態306にあるとき、現在、論理プロセッサにおいて実行するように割り当てられている。スレッドが物理的に実行しているかどうかは、論理プロセッサの仮想プロセッサが現在それのパーティション・マネージャを通してディスパッチされているかどうか、即ち、物理プロセッサ上のタイム・スライスにおいて実行中であるかどうかに依存する。論理プロセッサ用の作動可能キューは、論理プロセッサで実行されるのを待つ作動可能状態にある1つ、2つ、またはそれ以上のスレッドを含み得る。通常、一時に1つのスレッドだけが論理プロセッサにおいて実行状態に置かれる。
スレッドは、優先使用またはタイム・アウト314によって、論理プロセッサの所有権を失って、実行状態から作動可能状態に移されることがある。より高い優先順位を有するスレッドがその論理プロセッサ用の作動可能キューに入ると、そのスレッドが優先使用される。スレッドは、それが論理プロセッサの所有権を保持する、即ち、そのタイム・スライス全体にわたって実行状態のままである場合、タイム・アウトする。
スレッドは、システム・コール316を発生して、そのシステム・コールの完了を待つために待ち状態308に入ることによって実行状態306から抜けることも可能である。そのようなシステム・コールは、例えば、或る期間の間スリープするかまたは待機するための意図的な要求、データがディスクから読取られることまたはディスクに書込まれることを求める要求、データが入出力資源から読取られることまたは入出力資源に書込まれることを求める要求等を含む、カーネルによって与えられる何らかのサービスを求める要求であってもよい。
更なる説明のために、図4は、本発明の実施例に従ってカーネルを共用するコンピュータ・システムにおいて仮想プロセッサをスケジュールするための例示的な仮想プロセッサの状態を図解する状態図を示す。図4における円形は仮想プロセッサの状態を表す。円形間の矢印は、パーティション・マネージャの機能によってもたらされる状態遷移を表す。図4に示された仮想プロセッサ状態は作成状態322、作動可能状態324、実行状態326、待ち状態328、および停止状態330を含む。仮想プロセッサは、一般にはブート・タイムで最初に作成されるときには一時的に作成状態322にあり、その仮想プロセッサに対する情報および資源を収集するための時間をパーティション・マネージャに与える。パーティション・マネージャが仮想プロセッサに実行の準備をさせるとき、仮想プロセッサは「開始」される(323)、即ち、作動可能状態324に移される。
作動可能状態324にある仮想プロセッサは、作動可能キュー(図示されてない)に入れられ、実行の機会を待つ。パーティション・マネージャは、ラウンド・ロビン、優先順位等の1つまたはそれ以上のスケジューリング・アルゴリズムに従って、仮想プロセッサの稼動をスケジュールする。パーティション・マネージャは、仮想プロセッサが割り当てられる物理プロセッサの実際の所有権に対して現時点で最も適任とされた作動可能キューからの単一の仮想プロセッサを作動可能状態から実行状態にディスパッチする。通常、一時に1つの仮想プロセッサだけが物理プロセッサにおいて実行状態に置かれる。
仮想プロセッサは、優先使用またはタイム・アウト334によって物理プロセッサの所有権を失い、実行状態から作動可能状態に移されることがある。仮想プロセッサは、より高い優先順位を有する仮想プロセッサが物理プロセッサ用の作動可能キューに入ったときに優先使用される。仮想プロセッサは、それがそのタイム・スライス全体を通して物理プロセッサの所有権を保持する場合、即ち、実行状態のままである場合、タイム・アウトする。
仮想プロセッサは、システム・コール336を発生して、そのシステム・コールの完了を待つために待ち状態328に入ることにより、実行状態326から抜けることも可能である。そのようなシステム・コールは、或る期間の間スリープするかまたは待機するための意図的な要求、データがディスクから読取られることまたはディスクに書込まれることを求める要求、データが入出力資源から読取られることまたは入出力資源に書込まれることを求める要求等を含む。仮想プロセッサにおいて実行中のスレッド、即ち、論理パーティションの論理プロセッサにおいて実行中のスレッドが、例えば、キーボード入力を待つために或いはディスクからファイルを読取るためにシステム・コールを発生するとき、キーストロークが生じるまで或いはディスク読取りが終了するまで何もしないというだけのために、仮想プロセッサが物理プロセッサを占有する必要がないということを仮想プロセッサが決定することも可能である。この状況では、仮想プロセッサは、或る期間の間、例えば、10分の1秒の間スリープし得る。仮想プロセッサを待ち状態から作動可能状態に戻すことは仮想プロセッサの「覚醒」338と呼ばれる。
更なる説明のために、図5は、本発明の実施例に従ってカーネル間でカーネル・サービスを共用するための更なる例示的なシステムを図解する機能ブロック図を示す。図5のシステムは、アプリケーション108を実行する論理パーティション114、カーネル・サービス404、406を共用するカーネル102、104、およびカーネル共用インターフェース402を含み、これらはすべてコンピュータ152において稼動する。
図5のシステムでは、アプリケーション108がカーネル共用インターフェース402を介してパーティション・マネージャ112におけるカーネル102にシステム・コールを送る。カーネル共用インターフェース402は、パーティション・マネージャ112におけるカーネル102、104との間の双方向の通信を実行し、通信の形式および内容を受信側にとって適正なものに変換する、パーティション・マネージャ112のソフトウェア・モジュールである。この例では、アプリケーション・プログラム108は、カーネル102がカーネル104から得るように構成されたカーネル・サービス404を求めるシステム・コール434をカーネル102に発生する。システム・コール434は、割込みベクトルの形でパーティション・マネージャ112を介してカーネル102に送られる。カーネル102は、カーネル102と互換性のある形式および内容(パラメータ値およびパラメータ・シーケンス)を有するシステム・コールを受け取り、そのシステム・コールが要求するカーネル・サービスが第2のカーネル104によって提供されるべきものであるということを決定する。カーネル102は、カーネル104によって提供されるべきカーネル・サービスを求めるシステム・コールをカーネル共用インターフェース402に、そのシステム・コールをカーネル104に送るための命令と共に送る(410)。
システム・コールをカーネル104に送るための命令に応答して、カーネル共用インターフェース402は、カーネル104からのカーネル・サービスを求める第2システム・コールを発生する。カーネル共用インターフェース402は、カーネル104と互換性のある形式および内容(パラメータ値およびパラメータ・シーケンス)を有する、カーネル104へのシステム・コールを発生する。カーネル共用インターフェース402は、実行のために第2システム・コールをカーネル104に送る(416)。
カーネル104は第2システム・コールを受け取ったことに応答してカーネル・サービス406を提供する。カーソル・サービス406が応答を発生する場合、カーネル104はその応答をカーネル共用インターフェース402に送る(418)。カーネル104によって発生された応答はカーネル104と互換性のある形式および内容を有する。
カーネル共用インターフェース402は、カーネル104からの応答を受け取ると、第2応答を発生する。カーネル共用インターフェース402によって発生された第2応答はカーネル102と互換性のある形式および内容を有する。カーネル共用インターフェース402はカーネル102に第2応答を送る(412)。カーネル102は、その第2応答を要求元のアプリケーション108に送る(436)。
更なる説明のために、図6は、本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための更なる例示システムを図解した機能ブロック図を示す。図6のシステムは、アプリケーション108を実行する論理パーティション114、パーティション・マネージャ112、およびカーネル・サービス406を共用するカーネル102、104を含む。これらはすべてコンピュータ152において稼動する。
図6のシステムでは、アプリケーション108がパーティション・マネージャ112におけるカーネル102にシステム・コールを送る(438)。カーネル102は、共用モジュール420およびカーネル共用インターフェース422を含む。共用モジュール420は、システム・コールにおいてコールされたカーネル・サービスが他のカーネルによって提供されるべきものであるかどうかを決定する、カーネル102のソフトウェア・モジュールである。カーネル共用インターフェース422は、カーネル104とのコミュニケーションを指示し且つそのコミュニケーションをそのコミュニケーションの受け取り側にとって適切な形式および内容に変換する、カーネル102のソフトウェア・モジュールである。共用モジュール420は、アプリケーション108から受け取ったシステム・コールが、第2カーネル104によって提供されるべきカーネル・サービスを要求しているかどうかを決定する。アプリケーション108から受け取ったシステム・コールが、第2カーネル104によって提供されるべきカーネル・サービスを求めるコールを含む場合、カーネル共用インターフェース422は、第2カーネル104と互換性のある形式および内容を有する第2システム・コールを発生する。カーネル共用インターフェース422は、その第2システム・コールを第2カーネル104に送る(426)。
図6の例では、カーネル104はカーネル共用インターフェース424を含む。カーネル共用インターフェース424は、カーネル・サービス406をコールし(428)、カーネル・サービス406が応答を発生する場合には、そのカーネル・サービス406からの応答を受け取る。カーネル・サービス406によって発生された応答は、カーネル104と互換性のある形式および内容を有する。カーネル共用インターフェース424は、カーネル102と互換性のある形式および内容を有する第2応答を発生する。カーネル共用インターフェース424は、第2応答をカーネル102に送る(432)。カーネル102は第2応答を受け取り、それを要求元のアプリケーション108に戻す(440)。
更なる説明のために、図7は、本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための例示的方法を図解したフローチャートを示す。図7の方法は、1つまたは複数の論理パーティション114、1つまたは複数の論理パーティション114において実行される1つまたは複数のアプリケーション108、パーティション・マネージャ112、およびパーティション・マネージャ112における2つまたはそれ以上のカーネル102、104を有するコンピュータ152において実行することが可能である。図7の例では、パーティション・マネージャ112は、論理パーティションがブートされると、その論理パーティションに資源を割り当てる。論理パーティション114のブート時に、パーティション・マネージャ112は、論理パーティション114において実行されるアプリケーション108にカーネル・サービスを提供するために第1カーネル102を論理パーティション114に対する資源として割り当てる。
図7の方法は、論理パーティション114におけるアプリケーション108から、第1カーネル102からのカーネル・サービス522を求める第1システム・コール502をパーティション・マネージャ112が受け取るステップ508を含む。図7の例では、システム・コールは、システム・コール・ライブラリの関数を介してアプリケーションによってカーネル・サービスの実行のためにカーネルに発生される命令である。
第1システム・コール502は、第1カーネル102と互換性のある形式504および内容506を有する。図7の例では、システム・コール502の形式504はコール・パラメータのシーケンスであり、システム・コール502の内容506はシステム・コールの識別情報およびコール・パラメータの値である。システム・コールの識別情報はシステム・コールの名称または割込みベクトルの値によって表すことができる。論理パーティション114は、アプリケーション108から見ると、カーネル・サービスを提供するためにカーネル102だけを有する完全なコンピュータであるように見えるので、システム・コール502の形式および内容は第1カーネル102と互換性を有する。アプリケーション108および論理パーティション114はカーネル102以外のいずれのカーネルも知らない。従って、アプリケーション108および論理パーティション114は、カーネル102と互換性のある形式および内容を有するシステム・コールをカーネル102に提供する。
図7の方法は、第1システム・コール502に基づいて、第2カーネル104からのカーネル・サービス522を求める第2システム・コール512を発生する(ステップ510)。第2システム・コール512は、第2カーネル104と互換性のある形式514および内容516を有する。図7の例では、第2カーネル104からのカーネル・サービス522を求める第2システム・コール512を発生するステップ510はパーティション・マネージャ112によって実行される。パーティション・マネージャ112は、例えば、下記の表1に示されるようなデータ構造を使うことによって第2システム・コールを発生することができる。
Figure 0005015665
表1の各レコードは、論理パーティション識別子、一次カーネル識別子、共用カーネル識別子、および受け取られたシステム・コールと、共用カーネルに送られるべきシステム・コールの形式および内容を指定する発生されたシステム・コールとを関連付ける。表1では、受け取られたコールは、形式、例えば、コールにおいて指定されたパラメータおよびそれらの色と、内容、例えば、関数を呼び出すために使用されたキーワードおよびパラメータの値との両方を有する。表1の第1レコードでは、例えば、受け取られたコールの形式がパラメータ「x、y、z」をその順序で含み、内容がコマンド・キーワード「F」およびx、y、zの値を含む。図7の例では、カーネル102は、論理パーティション114にカーネル・サービスを提供するように割り当てられたカーネルであるので、一次カーネルである。カーネル104は、そのサービスの1つを共用するカーネルであるので、図7の例では共用カーネルである。システム・コール502は図7の例では受け取られたコールであり、第2システム・コール512は発生されたコールである。パーティション・マネージャは、論理パーティションにおけるアプリケーションからシステム・コールを受け取ると、その論理パーティションと関連した一次カーネル識別子を使うことによって、その受け取られたシステム・コールを表1のようなデータ構造において検索し、発生されたシステム・コールにとって必要な形式および内容を識別する。そこで、パーティション・マネージャは、共用カーネルと互換性のある形式および内容を第2システム・コールに与えるための適切なキーワード、パラメータ等を有する命令を形成することにより第2システム・コールを発生する。
図7の方法は、第2システム・コール512を第2カーネル104に実行のために送るステップ518を含む。図7の例では、第2システム・コール512を発生したパーティション・マネージャ112がその第2システム・コールを第2カーネル104に送る。パーティション・マネージャは、表1のようなデータ構造を参照して第2カーネル104を識別することが可能である。例えば、表1の第1レコードでは、論理パーティション識別子「114」を持った一次カーネルに対する論理パーティションから受け取られた、形式および内容「F(x,y,z)」を有する一次カーネル識別子「102」を持った一次カーネルへのシステム・コールに対する共用カーネルが、「104」という共用カーネル識別子を有する共用カーネルに対応する。従って、この例におけるパーティション・マネージャは形式および内容「F(x,y,z)」を有するコールを発生し、その発生されたコールを第2カーネル104に実行のために送る。第2システム・コール512を第2カーネル104に実行のために送るステップ518は、図2、図5、および図6における参照番号124、402、422、424に関連して上述したように、カーネル共用インターフェースの使用によって実行されてもよい。
図7の方法は、更に、第2カーネル104がカーネル・サービス522を提供するステップ520を含む。図7の例における第2カーネル104は、第2システム・コール512の内容516によって指定されたパラメータを用いて第2システム・コール512を実行することによってカーネル・サービスを提供する。
図7の方法は、更に、カーネル・サービス522を提供するステップ520の一部として、第2システム・コール512に対する応答を提供するステップ550を含む。カーネル104は、例えば、カーネル・サービス522が応答を発生する場合、そのカーネル・サービスを提供するステップの一部として応答を提供することも可能である。本明細書の恩恵を受ける当業者は、すべてのカーネル・サービスがシステム・コールに対する応答を発生するとは限らないということを認識するであろう。それでもなお、応答を行わないカーネル・サービスも本発明の範囲内にある
図7の方法では、カーネル104によって提供された応答552は、カーネル104と互換性のある形式554および内容556を有する。図7の方法では、カーネル104は、あたかも第2システム・コール512が、カーネル・サービスを提供するためにカーネル104を使用するアプリケーションからのシステム・コールであるかのように応答552を提供する。従って、カーネル104は、カーネル・サービスのためのカーネル104を使用するアプリケーションが、カーネル104からの応答、即ち、カーネル104と互換性のある形式および内容を有する応答において期待する形式554および内容556を有する応答552を提供する。
図7の方法は、更に、カーネル104からの第1応答552を受け取るステップ558および第2応答526を発生するステップ560を含む。図7の例では、パーティション・マネージャ112がカーネル104からの応答を受け取り(ステップ558)、第2応答526を発生する(ステップ560)。パーティション・マネージャ112によって発生された第2応答526はカーネル102と互換性のある形式528および内容530を有する。システム・コール502に対する応答がカーネル102から来ること、従って、その応答がカーネル102と互換性のある形式および内容を有すること、をアプリケーション108が期待しているので、第2応答526はカーネル102と互換性のある形式528および内容530を有する。
図7の方法は、更に、論理パーティション114におけるアプリケーション108に応答を送るステップ524を含む。図7の例では、論理パーティション114におけるアプリケーション108に応答を送るステップ524はパーティション・マネージャ112によって実行される。アプリケーション108から見れば、カーネル102がカーネル・サービス522を提供したように見える。
更なる説明のために、図8は、本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための更なる例示的方法を図解したフローチャートを示す。図8の方法は図7の方法と類似している。即ち、図8の方法は、パーティション・マネージャ112が、第1カーネル102からのカーネル・サービス522を求める第1システム・コール502を、論理パーティション114におけるアプリケーション108から受け取るステップ508を含む。この場合、第1システム・コール502は、第1カーネル102と互換性のある形式504および内容506を有するものである。図7の方法と同様に、図8の方法は、第1システム・コール502に従って、第2カーネル104からのカーネル・サービス522を求める第2システム・コール512を発生するステップ510を含む。この第2システム・コール512は、第2カーネル104と互換性のある形式514および内容516を有する。図7の方法と同様に、図8の方法は、第2システム・コール512を実行のために第2カーネル104に送るステップ518、および応答808を提供するステップ550を含む、カーネル・サービス522を提供するステップ520を含む。これらのステップはすべて、一般に、図7の方法に関連して説明したように動作する。しかし、図8の方法では、図7の方法と違って、第1カーネル102が第2システム・コール512を発生する。
図8の方法は、更に、第1カーネル102が第1システム・コール502を受け取るステップ602を含む。図8の例では、パーティション・マネージャ112が、第1システム・コール502を受け取り(ステップ508)、そのシステム・コールを発生したアプリケーションにカーネル102がカーネル・サービスを提供すること決定し、そのシステム・コールをカーネル102に送る。
図8の方法は、更に、カーネル・サービス522が第2カーネル104によって提供されるべきであるということを第1カーネル102が決定するステップ604を含む。カーネル102は、カーネル・サービス522がカーネル104によって提供されるべきであるということを、例えば、下記の表2に示されるようなデータ構造を使用することによって決定し得る。
Figure 0005015665
表2の各レコードは、受け取られたシステム・コールを、そのシステム・コールにおいて識別されたカーネル・サービスを提供すべき共用カーネルに関連付け、その共用カーネルへのカーネル・サービスを求めるシステム・コールの形式および内容を指定する。受け取られたシステム・コールがそのようなデータ構造における共用カーネルと関連する場合、カーネル102は、システム・コールによってコールされたカーネル・サービスが第2カーネル、即ち、共用カーネルによって提供されるべきであるということを決定することができる。
図8の方法は、更に、第1システム・コール502に従って、第1カーネル102が、カーネル・サービス522を求める第2システム・コール512を発生するステップ510を含む。カーネル102は、表2に示されるようなデータ構造を基準にして第2システム・コール512を発生することが可能である。表2では、受け取られたシステム・コールが形式(例えば、そのコールにおいて指定されたパラメータおよびそれらの順序)並びに内容(例えば、関数を呼び出すために使用されるコマンド・キーワードおよびパラメータの値)の両方を有する。例えば、表2の第1レコードでは、受け取られたシステム・コールの形式がパラメータ「x,y,z」をその順序で含み、内容がコマンド・キーワード「F」ならびに x、y、および z の値を含む。図8の例では、カーネル102は、論理パーティション114にカーネル・サービスを提供するように割り当てられるので、一次カーネルである。図8の例では、カーネル104は、そのサービスの1つを共用するカーネルであるので、共用カーネルである。システム・コール502は、図8の例では受け取られたシステム・コールであり、第2システム・コール512は発生されたシステム・コールである。カーネル102は、パーティション・マネージャ112からシステム・コールを受け取ると、その受け取られたシステム・コールの識別子を使用することにより、カーネル・サービスを提供する共用カーネルの身元と、カーネル・サービスを求める共用カーネルへの発生されたシステム・コールにとって必要な形式および内容とを、表2のようなデータ構造において検索することが可能である。そこで、カーネル102は、適切なキーワードおよびパラメータを用いて命令を形成することによって、共用カーネルと互換性のあるように正しい形式で第2システム・コール512を発生することが可能である。
図8の方法は、第2カーネル104がカーネル・サービス522を提供するステップ520を含み、そのステップ520は、カーネル・サービス522によって発生された応答を提供するステップ550を含む。この例では、第2カーネル104が、第2システム・コールに対する応答808を第1カーネル102に提供する。なお、応答808は第1カーネル102と互換性のある形式810および内容812を有する。従って、この例におけるカーネル104は、カーネル102と互換性のある応答を定式化することを可能にするに十分な情報でもって構成される。それとは別に、カーネル104が、カーネル104と互換性のある形式および内容を有する応答を提供してもよく、カーネル102が、カーネル102と互換性のある形式および内容を有するようにその応答を変換するように構成されてもよい。いずれの方法も、要求元のパーティションおよび要求元のアプリケーションに応答が戻されるときまでには、その応答はカーネル102と互換性のある形式および内容を有することになるであろう。というのは、カーネル102と互換性のある戻りデータは、要求元のアプリケーションが期待しているものであるためである。
図8の方法は、更に、第1カーネル102において応答808を受け取るステップ814および第1カーネル102からアプリケーション108に応答を送るステップ816を含む。この例における応答808はカーネル102と互換性のある形式810および内容812を既に有するので、第1カーネル102からアプリケーション108に応答を送るステップ816は、修正のない応答をカーネル102を通してアプリケーション108に送ることによって実行されてもよい。
更なる説明のために、図9は、本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための更なる例示的方法を図解したフローチャートを示す。図9の方法は図7の方法と類似している。即ち、図9の方法は、第1カーネル102からのカーネル・サービス521を求める第1システム・コール502を、論理パーティション114におけるアプリケーション108から、パーティション・マネージャ112が受け取るステップ508と、第1システム・コール502に従って、第2カーネル104からのカーネル・サービス522を求める第2システム・コール704を発生するステップ510を含む。なお、第1システム・コール502は、第1カーネル102と互換性のある形式504および内容506を有する。この例では、カーネル・サービス521およびカーネル・サービス522は同等のカーネル・サービス、例えば、ディスク入出力要求、メモリ割振り要求等である。カーネル・サービス521は、カーネル102によって提供されるようなサービスの形式であり、カーネル・サービス522は、カーネル104によって提供されるようなサービスの形式である。カーネル102は、サービス521によって表された、カーネル104からのサービスのタイプを要求により得るように構成される。カーネル104は、本発明の実施例に従ってカーネル・サービス522を共用するように構成される。
しかし、図9の方法では、図7の方法とは違って、第1カーネル102が第2システム・コール704を発生する。更に、図9の方法では、第2カーネル104からのカーネル・サービス522を求める第2システム・コールを第1システム・コールに従って発生するステップ510は、汎用システム・コール704を発生するステップ702によって実行される。この例における汎用システム・コール704は、汎用形式706および汎用内容708を有するシステム・コールである。汎用形式および汎用内容は、この例では、第2カーネル104を含む複数のカーネルによって、互換性のあるものとして受け入れられる形式および内容である。
図9の方法は、更に、第2システム・コール、即ち、汎用システム・コール704を、実行のために第2カーネル104に送るステップ518を含む。図9の例では、パーティション・マネージャ112は、汎用システム・コール704を発生すると、それを第2カーネル104に送る。パーティション・マネージャは、表1のようなデータ構造を参照して第2カーネル104を識別することができる。汎用システム・コール704を実行のために第2カーネル104に送るステップ518は、図2、図5、および図6における参照番号124、402、422、424に関連して上述したように、カーネル共用インターフェースの使用によって実行されてもよい。
図9の方法では、第2カーネル104がカーネル・サービス522を提供するステップ710は、第2カーネル104が汎用システム・コール704に対する汎用応答714を提供するステップ712を含む。この例における汎用応答714は、汎用形式716および汎用内容718を有する応答である。汎用形式および汎用応答は、この例では第1カーネル102を含む複数のカーネルによって互換性のあるものとして受け入れられた形式および内容である。
カーネル間でカーネル・サービスを共用するための十分に機能的なコンピュータ・システムに関連して、本発明の実施例を広範に説明した。しかし、任意の適当なデータ処理システムによる使用のために信号保持媒体に設けられたコンピュータ・プログラムとして本発明を具現化することも可能であることは当業者には明らかであろう。そのような信号保持媒体は、磁性媒体、光学的媒体、または他の適当な媒体を含む、機械可読情報のための伝送媒体または記録可能媒体であってもよい。記録可能媒体の例は、ハードディスク・ドライブにおける磁気ディスク、光学的ドライブ用のコンパクト・ディスク、磁気テープ、および当業者が想起し得る他の媒体を含む。伝送媒体の例は、音声通信のための電話網と、例えば、Ethernet(登録商標)並びにインターネット・プロトコルおよびワールド・ワイド・ウェブを用いて通信を行うネットワークのようなデジタル・データ通信ネットワークを含む。適当なプログラミング手段を有する任意のコンピュータ・システムが、本発明の方法のステップを、コンピュータ・プログラムとして具体化して実行し得るということは当業者には容易に明らかであろう。本明細書において開示された実施例の幾つかは、コンピュータ・ハードウェアにインストールされて実行されるソフトウェアに向けられているが、それでも、ファームウェアとしてまたはハートウェアとして実装される別の実施例も本発明の範囲内にあるということは当業者には明らかであろう。
本発明の主旨から逸脱することなく、本発明の種々の実施例において修正および変更を行い得ることは、以上の説明から明らかであろう。本明細書における説明は単に説明を目的とするものであって、限定の意味で解釈されるべきではない。本発明の範囲は「特許請求の範囲」の記載によってのみ限定されるべきである。
本発明の実施例に従って、カーネル間でカーネル・サービスを共用する場合に有用な例示的コンピュータを含む自動コンピューティング・マシンのブロック図である。 本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための例示的システムを図解した機能ブロック図である。 本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための例示的スレッドの状態を図解した状態図である。 本発明の実施例に従って、カーネルを共用するコンピュータ・システムにおいて仮想プロセッサをスケジュールするための例示的仮想プロセッサの状態を図解した状態図である。 本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための更なる例示的システムを図解した機能ブロック図である。 本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための更なる例示的システムを図解した機能ブロック図である。 本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための更なる例示的方法を図解したフローチャートである。 本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための更なる例示的方法を図解したフローチャートである。 本発明の実施例に従って、カーネル間でカーネル・サービスを共用するための更なる例示的方法を図解したフローチャートである。

Claims (8)

  1. カーネル間でカーネル・サービスを共用する方法であって、
    パーティション・マネージャが、第1カーネルと互換性のある形式および内容を有し且つ前記第1カーネルからのカーネル・サービスを求める第1システム・コールを、論理パーティションにおけるアプリケーションから受け取るステップと、
    前記第1システム・コールに従って、第2カーネルと互換性のある形式および内容を有し且つ前記第2カーネルからのカーネル・サービスを求める第2システム・コールを発生するステップと、
    前記第2システム・コールを、前記パーティション・マネージャを介して前記第2カーネルに、実行のために送るステップと
    を含む、方法。
  2. 前記第2カーネルがカーネル・サービスを提供するステップと、
    前記第1カーネルと互換性のある形式および内容を有する応答を、前記論理パーティションにおけるアプリケーションに送るステップと
    を更に有する、請求項1に記載の方法。
  3. 前記第1カーネルが前記第1システム・コールを受け取るステップと、
    前記カーネル・サービスが前記第2カーネルによって提供されるべきであることを前記第1カーネルが決定するステップと
    を更に含み、
    前記第2システム・コールを発生するステップは、前記第1カーネルが、前記第1システム・コールに従って前記第2システム・コールを発生する、請求項1に記載の方法。
  4. 前記第2システム・コールを発生するステップは汎用システム・コールを発生する、請求項1に記載の方法。
  5. 前記第2カーネルが、前記第2システム・コールに対する汎用応答を提供するステップを含む、カーネル・サービスを提供するステップを更に含む、請求項1に記載の方法。
  6. 前記第2カーネルが、前記第2システム・コールに対する応答を前記第1カーネルに提供するステップを含む、カーネル・サービスを提供するステップを更に含み、前記応答が前記第1カーネルと互換性のある形式および内容を有する、請求項1に記載の方法。
  7. コンピュータ・プロセッサおよび該コンピュータ・プロセッサに接続されたコンピュータ・メモリを含み、カーネル間でカーネル・サービスを共用するための装置であって、該コンピュータ・メモリは、
    パーティション・マネージャが、第1カーネルと互換性のある形式および内容を有し且つ前記第1カーネルからのカーネル・サービスを求める第1システム・コールを、論理パーティションにおけるアプリケーションから受け取るためのコンピュータ・プログラム命令と、
    前記第1システム・コールに従って、第2カーネルと互換性のある形式および内容を有し且つ前記第2カーネルからのカーネル・サービスを求める第2システム・コールを発生するためのコンピュータ・プログラム命令と、
    前記第2システム・コールを、前記パーティション・マネージャを介して前記第2カーネルに、実行のために送るためのコンピュータ・プログラム命令と
    を記憶している、装置。
  8. カーネル間でカーネル・サービスを共用するための、信号保持媒体上に記録されたコンピュータ・プログラムであって、
    パーティション・マネージャが、第1カーネルと互換性のある形式および内容を有し且つ前記第1カーネルからのカーネル・サービスを求める第1システム・コールを、論理パーティションにおけるアプリケーションから受け取るための手順と、
    前記第1システム・コールに従って、第2カーネルと互換性のある形式および内容を有し且つ前記第2カーネルからの、カーネル・サービスを求める第2システム・コールを発生するための手順と、
    前記第2システム・コールを、前記パーティション・マネージャを介して前記第2カーネルに、実行のために送るための手順と
    をコンピュータに実行させるためのコンピュータ・プログラム。
JP2007147678A 2006-06-07 2007-06-04 カーネル間でカーネル・サービスを共用するための方法、装置、およびコンピュータ・プログラム Active JP5015665B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/422,656 2006-06-07
US11/422,656 US9201703B2 (en) 2006-06-07 2006-06-07 Sharing kernel services among kernels

Publications (2)

Publication Number Publication Date
JP2007328782A JP2007328782A (ja) 2007-12-20
JP5015665B2 true JP5015665B2 (ja) 2012-08-29

Family

ID=38823438

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007147678A Active JP5015665B2 (ja) 2006-06-07 2007-06-04 カーネル間でカーネル・サービスを共用するための方法、装置、およびコンピュータ・プログラム

Country Status (3)

Country Link
US (1) US9201703B2 (ja)
JP (1) JP5015665B2 (ja)
CN (1) CN100501681C (ja)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130024812A1 (en) 2011-07-13 2013-01-24 Z124 Foreground/background assortment of hidden windows
US20130024778A1 (en) 2011-07-13 2013-01-24 Z124 Dynamic cross-environment application configuration/orientation
US8933949B2 (en) 2010-10-01 2015-01-13 Z124 User interaction across cross-environment applications through an extended graphics context
US8819705B2 (en) 2010-10-01 2014-08-26 Z124 User interaction support across cross-environment applications
US8726294B2 (en) 2010-10-01 2014-05-13 Z124 Cross-environment communication using application space API
US8966379B2 (en) 2010-10-01 2015-02-24 Z124 Dynamic cross-environment application configuration/orientation in an active user environment
US9152582B2 (en) 2010-10-01 2015-10-06 Z124 Auto-configuration of a docked system in a multi-OS environment
US9047102B2 (en) 2010-10-01 2015-06-02 Z124 Instant remote rendering
US7810133B2 (en) 2002-08-23 2010-10-05 Exit-Cube, Inc. Encrypting operating system
US8219823B2 (en) 2005-03-04 2012-07-10 Carter Ernst B System for and method of managing access to a system using combinations of user information
US8032899B2 (en) * 2006-10-26 2011-10-04 International Business Machines Corporation Providing policy-based operating system services in a hypervisor on a computing system
US8782047B2 (en) * 2009-10-30 2014-07-15 Hitachi Data Systems Corporation Fixed content storage within a partitioned content platform using namespaces
US10452820B2 (en) * 2007-06-26 2019-10-22 International Business Machines Corporation Thread-based software license management
US20090158299A1 (en) * 2007-10-31 2009-06-18 Carter Ernst B System for and method of uniform synchronization between multiple kernels running on single computer systems with multiple CPUs installed
US8424078B2 (en) 2007-11-06 2013-04-16 International Business Machines Corporation Methodology for secure application partitioning enablement
US8910169B2 (en) * 2008-09-30 2014-12-09 Intel Corporation Methods and systems to perform a computer task in a reduced power consumption state
JP4888742B2 (ja) 2009-02-25 2012-02-29 ソニー株式会社 情報処理装置および方法、並びにプログラム
JP5195568B2 (ja) * 2009-03-25 2013-05-08 富士通株式会社 システムコール処理のオフロード方法およびこれを適用した疎結合cpu型情報処理装置並びに通信処理装置
US8843927B2 (en) * 2009-04-23 2014-09-23 Microsoft Corporation Monitoring and updating tasks arrival and completion statistics without data locking synchronization
US9389877B2 (en) * 2009-07-20 2016-07-12 Google Technology Holdings LLC Multi-environment operating system
US9367331B2 (en) * 2009-07-20 2016-06-14 Google Technology Holdings LLC Multi-environment operating system
US8868899B2 (en) * 2009-07-20 2014-10-21 Motorola Mobility Llc System and method for switching between environments in a multi-environment operating system
US9348633B2 (en) * 2009-07-20 2016-05-24 Google Technology Holdings LLC Multi-environment operating system
US9372711B2 (en) * 2009-07-20 2016-06-21 Google Technology Holdings LLC System and method for initiating a multi-environment operating system
FR2950714B1 (fr) * 2009-09-25 2011-11-18 Bull Sas Systeme et procede de gestion de l'execution entrelacee de fils d'instructions
WO2011064616A1 (en) * 2009-11-25 2011-06-03 Freescale Semiconductor, Inc. Method and system for enabling access to functionality provided by resources outside of an operating system environment
JP6010036B2 (ja) 2010-10-01 2016-10-19 ゼット124Z124 タッチセンサ式ディスプレイに画像を表示する方法及び通信デバイスならびにコンピュータ可読媒体
WO2012044539A2 (en) 2010-10-01 2012-04-05 Imerj, Llc Multi-operating system
US9372618B2 (en) 2010-10-01 2016-06-21 Z124 Gesture based application management
US8761831B2 (en) 2010-10-15 2014-06-24 Z124 Mirrored remote peripheral interface
US8983536B2 (en) 2010-10-22 2015-03-17 Google Technology Holdings LLC Resource management in a multi-operating environment
US9354900B2 (en) 2011-04-28 2016-05-31 Google Technology Holdings LLC Method and apparatus for presenting a window in a system having two operating system environments
CN103608775B (zh) * 2011-06-29 2017-02-22 华为技术有限公司 利用线程处理数据的方法及装置
CN102955704A (zh) * 2011-08-26 2013-03-06 联咏科技股份有限公司 软件执行方法及其电子装置
US9495012B2 (en) 2011-09-27 2016-11-15 Z124 Secondary single screen mode activation through user interface activation
US9417753B2 (en) 2012-05-02 2016-08-16 Google Technology Holdings LLC Method and apparatus for providing contextual information between operating system environments
US9342325B2 (en) 2012-05-17 2016-05-17 Google Technology Holdings LLC Synchronizing launch-configuration information between first and second application environments that are operable on a multi-modal device
CN103095707B (zh) * 2013-01-17 2015-09-09 苏州亿倍信息技术有限公司 一种终端安全的信息处理方法及系统
CN104424034A (zh) * 2013-09-04 2015-03-18 华为技术有限公司 硬件资源访问方法及装置
CN105264499B (zh) * 2013-12-20 2018-03-13 华为技术有限公司 一种共享队列中的消息处理方法、装置及接收核
CN104699485A (zh) * 2015-03-19 2015-06-10 神华集团有限责任公司 海量程序管理方法及构建方法
CN106020980A (zh) * 2015-05-21 2016-10-12 中国科学院计算技术研究所 一种面向虚拟桌面的vcpu调度方法
US10956193B2 (en) * 2017-03-31 2021-03-23 Microsoft Technology Licensing, Llc Hypervisor virtual processor execution with extra-hypervisor scheduling
CN108171862B (zh) * 2018-01-08 2021-03-09 北京值得买科技股份有限公司 一种发号方法及发号器
CN108614460B (zh) * 2018-06-20 2020-11-06 东莞市李群自动化技术有限公司 分布式多节点控制系统及方法
CN111382111B (zh) * 2018-12-29 2023-03-28 阿里巴巴集团控股有限公司 一种应用处理器、协处理器及数据处理设备
US11442873B2 (en) * 2019-09-06 2022-09-13 Meta Platforms Technologies, Llc Microkernel architecture with enhanced reliability and security
CN110597912B (zh) * 2019-09-17 2024-01-16 深圳前海微众银行股份有限公司 一种区块存储方法及装置
WO2021142010A1 (en) * 2020-01-07 2021-07-15 Visa International Service Association Unified contactless kernel system and method
US11080111B1 (en) * 2020-02-24 2021-08-03 Nvidia Corporation Technique for sharing context among multiple threads
CN116795557A (zh) * 2022-03-15 2023-09-22 华为技术有限公司 通信方法、电子设备及可读存储介质
CN115048679B (zh) * 2022-08-15 2022-12-27 南方电网数字电网研究院有限公司 一种融合片内安全防护功能的多业务分区隔离芯片

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1082006A (en) 1913-12-23 Electric Compositor Co Justifying mechanism.
US1082845A (en) 1912-07-24 1913-12-30 John E Bucher Synthetic production of cyanogen compounds and the like.
JP3304524B2 (ja) 1993-08-11 2002-07-22 富士通株式会社 システムコール関数処理装置
US5909545A (en) * 1996-01-19 1999-06-01 Tridia Corporation Method and system for on demand downloading of module to enable remote control of an application program over a network
US5956507A (en) 1996-05-14 1999-09-21 Shearer, Jr.; Bennie L. Dynamic alteration of operating system kernel resource tables
EP0944873B1 (en) * 1996-06-07 2007-08-22 AT&T Corp. Internet file system
US6075939A (en) * 1997-09-27 2000-06-13 Lynx Real-Trime Systems, Inc. Tightly coupled, scalable module based micro-kernel operating system architecture
US6647508B2 (en) 1997-11-04 2003-11-11 Hewlett-Packard Development Company, L.P. Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation
US6571274B1 (en) * 1998-11-05 2003-05-27 Beas Systems, Inc. Clustered enterprise Java™ in a secure distributed processing system
US6279046B1 (en) * 1999-05-19 2001-08-21 International Business Machines Corporation Event-driven communications interface for logically-partitioned computer
US6691146B1 (en) * 1999-05-19 2004-02-10 International Business Machines Corporation Logical partition manager and method
US7219354B1 (en) 2000-12-22 2007-05-15 Ensim Corporation Virtualizing super-user privileges for multiple virtual processes
US7461148B1 (en) 2001-02-16 2008-12-02 Swsoft Holdings, Ltd. Virtual private server with isolation of system components
US20020129172A1 (en) 2001-03-08 2002-09-12 International Business Machines Corporation Inter-partition message passing method, system and program product for a shared I/O driver
FI114663B (fi) 2001-12-20 2004-11-30 Nokia Corp Menetelmä ja järjestelmä käyttöjärjestelmätoimintojen suorittamiseksi sekä elektroniikkalaite
US8549114B2 (en) * 2002-06-12 2013-10-01 Bladelogic, Inc. Method and system for model-based heterogeneous server configuration management
DE60323811D1 (de) 2003-04-09 2008-11-13 Jaluna S A Betriebssysteme
US20040226017A1 (en) 2003-05-09 2004-11-11 Leonard Ozgur C. Mechanism for associating resource pools with operating system partitions
US20050125486A1 (en) * 2003-11-20 2005-06-09 Microsoft Corporation Decentralized operating system
US7120753B2 (en) 2004-04-20 2006-10-10 International Business Machines Corporation System and method for dynamically adjusting read ahead values based upon memory usage
US20060010446A1 (en) * 2004-07-06 2006-01-12 Desai Rajiv S Method and system for concurrent execution of multiple kernels
US9189291B2 (en) 2005-12-12 2015-11-17 International Business Machines Corporation Sharing a kernel of an operating system among logical partitions
WO2007115425A1 (en) * 2006-03-30 2007-10-18 Intel Corporation Method and apparatus for supporting heterogeneous virtualization
KR20210052532A (ko) 2018-09-10 2021-05-10 도쿄엘렉트론가부시키가이샤 도포막 형성 방법 및 도포막 형성 장치

Also Published As

Publication number Publication date
US20070288941A1 (en) 2007-12-13
JP2007328782A (ja) 2007-12-20
CN101086712A (zh) 2007-12-12
CN100501681C (zh) 2009-06-17
US9201703B2 (en) 2015-12-01

Similar Documents

Publication Publication Date Title
JP5015665B2 (ja) カーネル間でカーネル・サービスを共用するための方法、装置、およびコンピュータ・プログラム
US9189291B2 (en) Sharing a kernel of an operating system among logical partitions
US10452572B2 (en) Automatic system service resource management for virtualizing low-latency workloads that are input/output intensive
US7406699B2 (en) Enhanced runtime hosting
US8032899B2 (en) Providing policy-based operating system services in a hypervisor on a computing system
US9262198B2 (en) CPU scheduler configured to support latency sensitive virtual machines
US9009701B2 (en) Method for controlling a virtual machine and a virtual machine system
US8650570B2 (en) Method of assigning instructions in a process to a plurality of scheduler instances based on the instruction, in which each scheduler instance is allocated a set of negoitaited processor resources
US10140145B1 (en) Displaying guest operating system statistics in host task manager
JP2013516021A (ja) プロセッサコアのハイパーバイザ離隔
US8499143B2 (en) Method for shortening the boot time of a computer system
US20080148355A1 (en) Providing Policy-Based Operating System Services in an Operating System on a Computing System
US8291426B2 (en) Memory allocators corresponding to processor resources
US9417914B2 (en) Regaining control of a processing resource that executes an external execution context
US8806180B2 (en) Task execution and context switching in a scheduler
US11429424B2 (en) Fine-grained application-aware latency optimization for virtual machines at runtime
US9304831B2 (en) Scheduling execution contexts with critical regions

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100323

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120427

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120515

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120607

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150615

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5015665

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150