JP5063131B2 - 別のプロセスのプロセス・ローカル・ストレージにアクセスする方法、装置、コンピュータ・プログラム、およびコンピュータ実装方法 - Google Patents

別のプロセスのプロセス・ローカル・ストレージにアクセスする方法、装置、コンピュータ・プログラム、およびコンピュータ実装方法 Download PDF

Info

Publication number
JP5063131B2
JP5063131B2 JP2007029423A JP2007029423A JP5063131B2 JP 5063131 B2 JP5063131 B2 JP 5063131B2 JP 2007029423 A JP2007029423 A JP 2007029423A JP 2007029423 A JP2007029423 A JP 2007029423A JP 5063131 B2 JP5063131 B2 JP 5063131B2
Authority
JP
Japan
Prior art keywords
client
server
process means
local storage
client process
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
JP2007029423A
Other languages
English (en)
Other versions
JP2007226786A (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 JP2007226786A publication Critical patent/JP2007226786A/ja
Application granted granted Critical
Publication of JP5063131B2 publication Critical patent/JP5063131B2/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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Description

本発明は一般的にデータ処理分野に関する。さらに具体的には、本発明はコンピュータ・システムのスキームを処理する分野に関する。
コンピュータ時代の幕開け以降、コンピュータ・システムは多様な環境で目にする極めて高度なデバイスへと進化してきた。コンピュータ・システムは一般に、ハードウェア(例、半導体、回路基板等)とソフトウェア(例、コンピュータ・プログラム)の組み合わせを含む。半導体加工技術とコンピュータ・アーキテクチャの進歩によりコンピュータのハードウェアの性能が高まるにつれて、ハードウェアの性能の向上を生かすためにより高度なコンピュータのソフトウェアが開発されている結果、現在のコンピュータ・システムはほんの数年前に比べはるかに高性能になっている。
コンピュータ・システムは、コンピュータ・ハードウェアで定められる処理能力をもつ。コンピュータ・システムのアドレス空間は参照データ、命令等に利用できるアドレスの範囲であり、アドレスのサイズ(単位ビット)で決定される。アドレスのサイズはコンピュータ・システムの基本的なアーキテクチャの特徴の1つである。初期のコンピュータ・システムは1度に1つのタスクしか処理できないシングルユーザ・コンピュータであり、すべてのデータを1つのアドレス空間にマッピングし、新たなタスクを行う必要があるたびにデータをアドレス空間から出し入れしていた。それから、複数のユーザとプロセスをサポートするコンピュータが開発された。複数のプロセスをサポートするコンピュータ・システムはプロセス間でのアドレス空間の割り当てを管理しなければならない。一般的に、各プロセスは、そのプロセスに固有の独自の作業データをもつ。ユニプロセッサのコンピュータ・システムにおいても、マルチプロセッサのコンピュータ・システムにおいてもそのことに変りはない。
コンピュータのアーキテクチャは一般に「プロセス・ローカル・アドレッシング」をサポートし、ストレージ・アクセスは実行しているプロセスのコンテキストにおいてのみ解決される。プロセッサはプロセス固有のセグメント・テーブル(これは技術上「変換テーブル」ともいう)を利用して、プロセス・ローカル・アドレスを仮想アドレスに変換する。2つの異なるプロセスは同じプロセス・ローカル・アドレスを使ってストレージを参照するが、オペレーティング・システム・カーネルはセグメント・テーブルを各プロセスに個別の仮想アドレス範囲に配置するため、異なる仮想アドレスが参照され、その結果異なるストレージにアクセスされる。プロセス・ローカル・アドレッシングは業界でごく一般に使われる。プロセス・ローカル・アドレッシング・メカニズムを利用して、偶然に、もしくは意図的にあるプロセスが別のプロセスのストレージにアクセスしないようにしている。そのため、オペレーティング・システム・カーネルが各プロセスの作業データをプロセス・ローカル・ストレージに存在するように配列して、プロセス・ローカル・アドレスによって参照付けるのが望ましい。
しかし、協力するプロセスにはその作業ストレージの少なくとも一部を共有する必要がある。その結果、オペレーティング・システム・カーネルは一又は複数の共有メカニズムを備えて、それによって協力するプロセスがその作業ストレージの少なくとも一部を共有するのが普通である。このような共有メカニズムの2つはそれぞれ「共有メモリ」と「メモリ・マップ・ファイル(memory mapped file)」と呼ばれる。最初の共有メカニズム、すなわち、共有メモリとは、オペレーティング・システム・カーネルが各協力するプロセスのセグメント・テーブルの一部を同じ仮想アドレス範囲に配置し、その仮想アドレスをサポートする補助ストレージを備える技術である。こうして、協力するプロセスは同じストレージを参照できる。さらに、オペレーティング・システム・カーネルが、同じプロセス・ローカル・アドレスを各プロセスのセグメント・テーブルの同じ仮想アドレスに対応させる場合、協力するプロセスは同じプロセス・ローカル・アドレスを使って同じストレージを参照できる。
2つ目の共有メカニズム、すなわちメモリ・マップ・ファイルは同じような技術であるが、この場合、補助ストレージはファイル・システムのどこかに存在するファイルによって提供される。協力するプロセスは同じストレージを参照するが、これはファイルの一部である。
これらの共有メカニズムは便利であるが、プロセス間にある程度の協力が必要である。この点に関し、プロセスの作業データは共有領域の1つに置かれていないことに留意するべきである。プロセスが明示的に共有メモリ・オブジェクトを作成するか、またはファイルをマップしなければならず、次にその作業ストレージのうち共有したい部分を、共有領域の合成アドレスに基づいて定義しなければならない。また、プロセスは共有ストレージのアドレス指定で協力しなければならない。共有ストレージのどれかが共有ストレージの他の部分のアドレスを含む場合、すべてのプロセスは同じプロセス・ローカル・アドレスを使って共有ストレージを参照できなければならないか、または共有ストレージを参照するときにアドレスにオフセットを加えられなければならない。さらに、あるアドレスを共有ストレージに格納するときにも、同じ配慮をしなければならない。
状況によっては、これら共有メカニズムの実施が難しい、もしくは不可能な場合がある。プロセスが、共有メカニズムの1つに要求されるように構成できないデータを共有しなければならないことはよくある。1例として、あるクライアント・プロセス手段に関してある所定のサーバ機能を行うサーバ・プロセス手段を考えてみる。サーバ機能は、クライアント・プロセス手段のストレージから大量のデータを抽出したり、またはクライアント・プロセス手段のストレージに大量のデータを格納する作業を伴うことがある。クライアント・プロセス手段のストレージはどこに存在していてもいいことから、複雑さがもたらされる。例えば、それ自体の作業ストレージにあるかもしれないし、またはそれを呼び出したプロシージャの作業ストレージにあるかもしれない。また、共有メモリ・オブジェクトに対応したストレージにあるかもしれないし、またはメモリ・マップ・ファイルにあるかもしれない。ヒープ・ストレージまたは静的ストレージにあるかもしれない。あるいはこれらの場所のなんらかの組み合わせにあるかもしれない。クライアント・プロセス手段のストレージはアクセスするストレージのすべてを配置するのに、数段レベルの間接参照およびポインタ・デリファレンスを伴う複雑なトラバース構造を必要とすることがある。
このような複雑さに取り組む様々な技術が考えられるが、それぞれ性能に望ましくない影響を与える。1つの技術では、共有メモリを中間バッファとして使用する。サーバ・プロセス手段はこの中間ストレージからデータを抽出し、またはこの中間ストレージにデータを入れて、クライアント・プロセス手段がそれ自体の作業ストレージのデータを共有領域にコピーしてからサーバ機能を呼び出す、もしくはサーバ機能を呼び出した後に共有領域のデータをそれ自体の作業ストレージにコピーする。中間コピーに関連するオーバーヘッドは、中間ストレージの設定の点からも、二重のコピーという点からも、特に大量のデータを伴う場合には望ましくない。
このような複雑さに取り組む別の技術では、オペレーティング・システム・カーネルの機能をサーバ・プロセス手段で使用して、クライアント・プロセス手段のローカル・ストレージ「から出す」またはローカル・ストレージ「に入れる」。実装方法によっては、データの中間コピーも伴うことがある。それにも関わらず、この種の機能は本質的に非常に汎用性があり、例えばある指定のアドレスで始まる特定の数(n)のバイトを出し入れし、クライアントのデータ構造をトラバースするノウハウをもたない。その結果、サーバ・プロセス手段はトラバーサルの行程のたびにこの機能を呼び出す必要があり、ここでも性能に対する影響が望ましくない。
別のプロセスのプロセス・ローカル・ストレージに制御された方法でアクセスする改良されたメカニズムのニーズが存在する。
発明の好適な実施例によると、オペレーティング・システム・カーネルは、アタッチ・メカニズムとデタッチ・メカニズムを含む。加えて、プロセスは、プロセスをクライアント・プロセス手段またはサーバ・プロセス手段として識別するアクセス属性でタグ付けする。アクセス属性に基づいて、オペレーティング・システム・カーネルは、プロセスがクライアント・プロセス手段かサーバ・プロセス手段かによって、別々のプロセス・ローカル・アドレス空間をレイアウトする。サーバ・プロセス手段はクライアント・プロセス手段に「アタッチ」でき、まるでサーバ自体のもののようにクライアント・プロセス手段のローカル・ストレージのすべてを参照する。サーバ・プロセス手段はそれ自体のプロセス・ローカル・ストレージを引き続き参照するが、加えて、クライアント・プロセス手段のローカル・アドレスを使って、クライアント・プロセス手段のローカル・ストレージを参照できる。サーバ・プロセス手段はオペレーティング・システム・カーネルにアタッチ要求を出すことによって、カーネルのアタッチ・メカニズムを呼び出して「アタッチ」を行う。アタッチされてしまえば、他のストレージもカーネル・モードまたはユーザ・モードのいずれかで参照できる。サーバ・プロセス手段がクライアント・プロセス手段のローカル・ストレージへのアクセスを終了する場合、サーバ・プロセス手段はオペレーティング・システム・カーネルにデタッチ要求を出すことによって、カーネルのデタッチ・メカニズムを呼び出して「デタッチ」を行う。デタッチしてしまえば、他のストレージはカーネル・モードまたはユーザ・モードのいずれでももう参照できない。
本発明の前述並びにその他の特徴および利点は、添付の図面に図示するように、本発明の好適な実施例のより具体的な以下の説明から明らかになるであろう。
本発明の例示的な好適な実施例をこれ以降添付の図面と合わせて説明していくが、同じ符号は同じ要素を示す。
本発明は、サーバ・プロセス手段をまるでサーバ自体のものであるかのように、クライアント・プロセス手段のローカル・ストレージのすべてに直接アクセスすることを可能にする。サーバ・プロセス手段はそれ自体のプロセス・ローカル・ストレージを引き続き参照するが、加えて、クライアント・プロセス手段のローカル・アドレスを使って、クライアント・プロセス手段のローカル・ストレージを参照できる。本発明の好適な実施例によると、この能力は、アタッチ・メカニズムとデタッチ・メカニズムを含むオペレーティング・システム・カーネルを使って提供する。加えて、プロセスは、プロセスをクライアント・プロセス手段またはサーバ・プロセス手段のいずれかとして識別するアクセス属性でタグ付けされる。アクセス属性に基づいて、オペレーティング・システム・カーネルは、プロセスがクライアント・プロセス手段かサーバ・プロセス手段かによって、別々にプロセス・ローカル・アドレス空間をレイアウトする。ローカル・アドレッシングの一般的な概念をよく知らない人のために、このアドレッシング・スキームを、本明細書で使用する定義に沿って、以下詳細に述べる。
アドレッシング方式を述べる際、技術上同じ用語を使って、人によっては別々の事柄が表されてきた。例えば、技術上ごく一般に知られる「仮想アドレス」という用語はアクセスでき、またはアドレス計算を行うことによって導いて、実行するプログラムが利用できて、実行するプログラムが操作できるアドレスをいう。しかし、この種の仮想アドレスはパワーPCの専門用語では「実効アドレス」といわれる。パワーPCの専門用語の「仮想アドレス」とは、実効アドレスから生成し、パワーPCアドレス変換スキームで内部で使用するアドレスのことである。本明細書の背景の部分で用いた「仮想アドレス」の使い方が一般的である。一般的にいうと、この種のアドレスは、このアドレスがプログラマーには見えないことを示すために、その後本明細書において「内部アドレス」と呼ぶが、アドレス変換メカニズムで生成して使用するアドレスのことである。パワーPCの専門用語における「実アドレス」とは、実(すなわち物理的な)メモリにアクセスするために使うアドレスであり、本明細書では「実アドレス」と呼ぶ。
現在業界で一般に使われる「プロセス・ローカル・アドレッシング」では、ストレージのアクセスは実行するプロセスのコンテキストでのみ解決される。ハードウェアはプロセス固有のセグメント・テーブルを使用して、「プロセス・ローカル・アドレス」を内部アドレスに変換する。以下詳細に述べるオペレーティング・システム・カーネルは、プログラムの作業データにプロセス・ローカル・アドレス空間とストレージを割り当てる。2つの異なるプロセスは同じプロセス・ローカル・アドレスを使ってストレージを参照できるが、オペレーティング・システム・カーネルがセグメント・テーブルを各プロセスに別々の内部アドレス範囲に配置するため、プロセスは異なるストレージにアクセスする。偶然もしくは意図的に、あるプロセスが別のプロセスのストレージにアクセスするのを防ぐ従来のプロセス・ローカル・アドレッシングメカニズムと違って、本発明はサーバ・プロセス手段が制御された方法で、まるでサーバ自体のものであるかのようにクライアント・プロセス手段のローカル・ストレージのすべてに直接アクセスするのを可能にする。本発明の好適な実施例によると、オペレーティング・システム・カーネルは要求されるときこの機能を可能にし、アクセスが認められたら、他のプロセスのストレージへのアクセス権を提供する。
一般的にいうと、ここでの説明のため、この技術分野で共通であるように、プロセス・ローカル・アドレス空間は1セットの連続セグメントから構成される。セグメントベースでは、ハードウェア/ソフトウェアはセグメント・テーブルを使ってプロセス・ローカル・アドレスを内部アドレスに変換する。そこから、ハードウェア/ソフトウェアは続いて、本発明の目的上重要ではない従来の手段を使って、内部アドレスを実アドレスに解決する。
本発明の好適な実施例は、アタッチ・メカニズムとデタッチ・メカニズムを含むオペレーティング・システム・カーネルを提供する。加えて、プロセスは、プロセスがクライアント・プロセス手段またはサーバ・プロセス手段のいずれかであることを識別するアクセス属性でタグ付けされる。アクセス属性に基づいて、オペレーティング・システム・カーネルは、プロセスがクライアント・プロセス手段かサーバ・プロセス手段かによって、別々にプロセス・ローカル・アドレス空間をレイアウトする。サーバ・プロセス手段はクライアント・プロセス手段に「アタッチ」して、まるでサーバ自体のものであるかのようにクライアント・プロセス手段のローカル・ストレージのすべてを参照できる。サーバ・プロセス手段はそれ自体のプロセス・ローカル・ストレージを引き続き参照するが、加えて、クライアント・プロセス手段のローカル・アドレスを使ってクライアント・プロセス手段のローカル・ストレージも参照できる。サーバ・プロセス手段は、オペレーティング・システム・カーネルにアタッチ要求を出すことによって、カーネルのアタッチ・メカニズムを呼び出して「アタッチ」を行う。アタッチしてしまえば、カーネル・モードまたはユーザ・モードのいずれかで他のストレージを参照できる。サーバ・プロセス手段がクライアント・プロセス手段のローカル・ストレージへのアクセスを終了する場合、サーバ・プロセス手段は、オペレーティング・システム・カーネルにデタッチ要求を出すことによって、カーネルのデタッチ・メカニズムを呼び出して「デタッチ」を行う。デタッチしてしまえば、カーネル・モードまたはユーザ・モードのいずれでも他のストレージをもう参照することはできない。
ここで図1を参照して、コンピュータ・システム100は、本発明の好適な実施例による装置のある適切な実装である。コンピュータ・システム100はエンハンスドIBM eServer iSeries(IBMは、International Business Machines Corporationの登録商標)のコンピュータ・システムである。ただし、当業者には、本発明のメカニズムおよび装置は、複雑なマルチユーザ・コンピューティング装置、シングルユーザのワークステーション、または埋め込み型制御システムであるかどうかに関わらず、あらゆるコンピュータ・システムにも適用できることは理解されるであろう。図1に示すように、コンピュータ・システム100は複数のプロセッサ110A、110B、110C、110Dと、メインメモリ120と、大容量ストレージ・インターフェース130と、ディスプレイ・インターフェース140と、ネットワーク・インターフェース150とを有する。これらシステム・コンポーネントはシステム・バス160を使って相互接続される。大容量ストレージ・インターフェース130は大容量記憶デバイス(直接アクセス記憶デバイス155など)をコンピュータ・システム100に接続するために使う。直接アクセス記憶デバイス155のある具体的な種類が読み書き可能なCD−RWドライブであり、CD−RW195にデータを格納し、かつCD−RW195からデータを読み込むことができる。
図1はコンピュータ・システム100の代表的な主要コンポーネントを高次レベルで図示することを意図しており、個々のコンポーネントは図1に表すよりも複雑なこともあり、当該コンポーネントの数、種類、および構成は異なることがあることは了解される。特に、コンピュータ・システム100は図示する数とは異なる数のプロセッサを内蔵することがある。当業者には、本発明が一又は複数のプロセッサを内蔵するコンピュータ・システムを使って実施できることは理解されるであろう。
好適な実施例によるメインメモリ120は、データ121と、オペレーティング・システム122と、一又は複数のプロセッサ125と、一又は複数のプログラム127とを内蔵する。データ121は、コンピュータ・システム100内のプログラムからの入出力、またはプログラムの作業ストレージの役割をするあらゆるデータを表す。オペレーティング・システム122は業界でOS/400(R)またはIBM i5/OS(R)として知られるマルチタスク・オペレーティング・システムである。ただし、当業者には、本発明の適用範囲が、どれか1つのオペレーティング・システムに制限されないことは理解されるであろう。典型的な場合、オペレーティング・システム122はオペレーティング・システム・カーネル123(本明細書において単に「カーネル」ともいう)を含む。
カーネル123はオペレーティング・システム122に統合されて、カーネルレベルのサービスをオペレーティング・システムのコンポーネントとプログラム127などの他のプログラムに提供する。例えば、カーネル123はオペレーティング・システム122で呼び出されるシステム・タスク・ディスパッチャ124を含んで、技術上周知の様々なメカニズムのいずれかを使って、プロセス125を一又は複数のプロセッサ110A、110B、110C、110Dに割り当てる。カーネル123はセキュリティ、監査、および制御のアービタである。本発明の好適な実施例によると、カーネル123はアタッチ・メカニズム180とデタッチ・メカニズム182の2つの新たなメカニズムを提供する。アタッチ・メカニズム180はサーバ・プロセス手段がクライアント・プロセス手段にアタッチするのを可能にする。デタッチ・メカニズム182はサーバ・プロセス手段がクライアント・プロセス手段からデタッチするのを可能にする。
カーネル123はまた、各プロセス125に対応するする1組の「属性」を生成して維持する。属性の一部はユーザが呼び出したプログラム127から派生し、またプログラム自体から派生するものもある。従来の属性のほんの数例をあげると、ユーザID、グループID、特権である。加えて、本発明の好適な実施例によると、カーネル123は本明細書で「アクセス属性」126と呼ぶ各プロセス125に対応した新たな属性も付け加える。上記述べたように、アクセス属性126はプロセス125をクライアント・プロセス手段またはサーバ・プロセス手段のいずれかとしてタグ付けする。
さらに本発明の好適な実施例によると、カーネル123は、プログラム127を実行する前に、一又は複数のプロセス125をレイアウトする。例えば、「ウエブ・ブラウザ」またはワード・プロセッシング・プログラムなどのアプリケーション・プログラムを実行する前に、カーネル123は一又は複数のプロセス125をレイアウトする。プロセス125は、以下詳細に述べるように、各プロセス125をアクセス属性126によってクライアント・プロセス手段またはサーバ・プロセス手段のいずれかとしてタグ付けしなければならないため、最初にレイアウトされるので(すなわち、プログラムが実行を開始する前)、カーネル123はプログラムのプロセス・ローカル・ストレージ空間をどこに配列するかが分かる。
各プロセス125は、一又は複数のプロセッサ110A、110B、110C、110Dで実行するプログラム命令から構成される。上記述べたように、一又は複数のプロセス125はオペレーティング・システム122で生成される。これらはクライアント・プロセス手段とサーバ・プロセス手段を含むことがある。通例、プロセスはプログラム・リソースとプログラムの実行状態に関する情報を含む。
コンピュータ・システム100は、コンピュータ・システム100のプログラムがメインメモリ120およびDASDデバイス155などの複数の小型のストレージ・エンティティにアクセスするのではなく、1つの巨大なストレージ・エンティティにアクセスするかのように動作させる周知の仮想アドレッシング・メカニズムを利用する。そのため、データ121、オペレーティング・システム122、オペレーティング・システム・カーネル123、システム・タスク・ディスパッチャ124、アタッチ・メカニズム180、デタッチ・メカニズム182、一又は複数のプロセス125、アクセス属性126、一又は複数のプログラム127はメインメモリ120に存在するように示しているが、当業者には、これら要素が同時にメインメモリ120に必ずしもすべて完全に内蔵されないことは理解されるであろう。
プロセッサ110A、110B、110C、110Dの各々は一又は複数のマイクロプロセッサおよび集積回路もしくは一又は複数のマイクロプロセッサまたは集積回路から構成できる。好ましくは、プロセッサ110A、110B、110C、110DはパワーPCアーキテクチャとして業界で周知のプロセッサ・アーキテクチャ・ファミリーのメンバーである。ただし、当業者には、本発明の適用範囲が、どれか1つのプロセッサ・アーキテクチャに制限されないことは理解されるであろう。プロセッサ110A、110B、110C、110Dは、メインメモリ120に格納されるプログラム命令を実行する。メインメモリ120は、プロセッサ110A、110B、110C、110Dがアクセスできるプログラムおよびデータを格納する。コンピュータ・システム100が始動すると、プロセッサ110A、110B、110C、110Dはオペレーティング・システム122を構成するプログラム命令を最初に実行する。オペレーティング・システム122は、コンピュータ・システム100のリソースを管理する高度なプログラムである。これらリソースの一部が、プロセッサ110A、110B、110C、および110D、メインメモリ120、大容量ストレージ・インターフェース130、ディスプレイ・インターフェース140、ネットワーク・インターフェース150、システム・バス160である。
好ましくは、各プロセッサは、以下詳細に述べるように、プロセス・ローカル・アドレスを内部アドレスに変換する変換情報の対応するセグメント・キャッシュ112A、112B、112C、112Dをもつ。単純にするために、プロセッサとセグメント・キャッシュを本明細書ではそれぞれ参照番号110と112で総称して呼ぶ。各プロセッサ110に1つのセグメント・キャッシュ112を図示しているが、複数レベルのセグメント・キャッシュでもよく、またはセグメント・キャッシュが全くなくてもよい。プロセッサ110は、メモリのキャッシュなど、他の目的のための他のキャッシュももつことがあり、その一部は命令専用であり、また非実行可能データに対するものもある。
アドレス変換メカニズム190は、アドレス空間を利用して、実メモリに間接的にアクセスする、すなわちアドレス空間の間接参照から実メモリにアクセスする能力を提供するメカニズムである。アドレス変換メカニズム190は、以下詳細に述べるように、プロセッサ110およびセグメント・キャッシュ112内に埋め込まれたハードウェア支援機構によって増補される論理型のエンティティである。本発明の好適な実施例によると、アドレス変換メカニズム190は、プロセスベースで、プロセス・ローカル・アドレスを内部アドレスに変換するアドレス空間コンテキスト191を含む。アドレス空間コンテキスト191はユーザがアドレス空間と認識するものを形作るデータ構造および対応するコードと定義される。以下詳細に述べるように、アドレス空間コンテキスト191は、プロセスベースで、セグメント・テーブル191と、ディレクトリ193と、代替アドレス空間コンテキスト194へのポインタを含む。本発明の好適な実施例によると、複数レベルのアドレス変換情報を、プロセス・ローカル・アドレスを内部アドレスに変換するときに利用する。サイズの小さい順にあげると、このアドレス変換情報は、セグメント・キャッシュ112と、セグメント・テーブル192と、ディレクトリ193を含む。一般に、アドレス空間コンテキスト191は全体がもしくは少なくとも一部がソフトウェアに実装される。上記述べたように、プロセス・ローカル・アドレス空間は1セットの連続セグメントから構成される。従来の技術上周知のように、セグメント・キャッシュ112へのエントリを利用して、プロセス・ローカル・アドレスを内部アドレスに変換する。セグメント・キャッシュ112は、プロセス・ローカル・アドレスを内部アドレスに変換しようとするときに使われる第1レベルの変換情報である。一般に、セグメント・キャッシュ112へのエントリは、一致があるかどうかを素早く判断するために、ハードウェアが並行して(すなわち同時に)検索する。セグメント・キャッシュ112へのエントリの中にプロセス・ローカル・アドレスが見つからない場合、セグメント・フォルトが発生する。セグメント・フォルトが発生したら、セグメントベースで、本発明の好適な実施例による、また以下詳細に述べるアドレス変換メカニズム190は、セグメント・テーブル192、ディレクトリ193、代替アドレス空間コンテキスト194へのポインタを使って、プロセス・ローカル・アドレスを内部アドレスに変換する。そこから、アドレス変換メカニズム190はひき続き、本発明の目的上重要ではない従来の手段を使って内部アドレスを実アドレスに解決する。
技術上周知のように、セグメント・キャッシュ112へのエントリ内のプロセス・ローカル・アドレスの検索はハードウェアで行う。ハードウェアがセグメント・キャッシュ112へのエントリ内にプロセス・ローカル・アドレスを見つけたら、ハードウェアはプロセス・ローカル・アドレスを内部アドレスに変換し、さらにそれを実アドレスに解決する。通例、ハードウェアがセグメント・キャッシュ112へのエントリ内にプロセス・ローカル・アドレスを見つける場合、ソフトウェアには通知されない。他方で、ハードウェアがセグメント・キャッシュ112へのエントリの中にプロセス・ローカル・アドレスを見つけなかった場合は、セグメント・フォルトが発生する。この例外の場合では、使用する特定の実装によって、以下詳細に説明するように、セグメント・フォルトが発生したことをソフトウェアに通知する場合もしない場合もある。
セグメント・キャッシュ112は、プロセス・ローカル・アドレッシング・セグメントのすべての変換情報を収容するほど大きくない。そのため、現在業界で広く行き渡っているように、より大きな変換情報のセットをもつセグメント・テーブル192をプロセスベースで維持する。変換中にセグメント・フォルトが発生したら、割込みが発生して、ソフトウェア割込みハンドラ195が迅速に、セグメント・テーブル192から変換情報を突き止めて、その変換情報をセグメント・キャッシュ112へのエントリとして投入することを試みるので、セグメント・フォルトを生じた命令を再実行できる。ソフトウェア割込みハンドラ195は従来のもので技術上周知であるため、本明細書では詳細に述べない。代わりの方法として、これも技術上周知のように、セグメント・テーブルの検索は、通常ソフトウェアに通知しなくても、ハードウェアで実施できる。例えば、プロセッサ110はセグメント・テーブルがどこに配置されているかが分かっていることがある。その場合、変換中にセグメント・フォルトが発生したら、プロセッサはセグメント・テーブルに変換情報を見つけて、変換情報をセグメント・キャッシュ112へのエントリとして投入することを試みるので、セグメント・フォルトを生じた命令を再実行できる。
ディレクトリ193は、プロセスベースで、プロセス125のプロセス・ローカル・アドレスから内部アドレス変換情報までのすべてを含むため、セグメント・テーブル192より大きい。ソフトウェア割込みハンドラ195がセグメント・テーブルに必要な変換情報を見つけられない場合、はるかに時間のかかるフォルト処理ソフトウェア・メソッド196が呼び出されて、ディレクトリ193の変換情報を探索し、それを使ってセグメント・キャッシュ112およびセグメント・テーブル192もしくはセグメント・キャッシュ112またはセグメント・テーブル192を配置した後に、フォルトを生じた命令を再実行する。フォルト処理ソフトウェア・メソッド196は従来のものであり、技術上周知であるため、本明細書では詳細に述べない。代わりの方法として、セグメント・テーブルの検索をハードウェアで実施して、ハードウェアがセグメント・テーブルに必要な変換情報を見つけられなかった場合、割込みが発生して、フォルト処理ソフトウェア196が呼び出される。
そのため、本発明の好適な実施例によると、ソフトウェア(例、ソフトウェア割込みハンドラ195およびフォルト処理ソフトウェア・メソッド196)は、セグメント・テーブル192またはセグメント・フォルトが発生した場合はディレクトリ193で見つかった変換情報からのエントリをセグメント・キャッシュ112に与える。また、本発明の好適な実施例によると、ソフトウェアは、以下詳細に述べるように、もはや必要なくなったときまたは無効になったときは、セグメント・キャッシュ112からのエントリをフラッシュする。また、本発明の好適な実施例によると、プロセッサ110はセグメント・キャッシュ112へのエントリを常に参照して使っているため、変換情報の検索がうまくいく限り、すなわちセグメント・キャッシュ112へのエントリ内に変換情報が見つかる限り、わざわざソフトウェアに通知しなくてもよい。ただし、検索がうまくいかない場合、ハードウェアはセグメント・フォルトが発生したことをソフトウェアに通知する。
前述したように、アドレス空間コンテキスト191は、プロセスベースで、参照番号194で示される代替アドレス空間コンテキストへのポインタ(「ポインタ」および「代替アドレス空間コンテキストのポインタ」ともいう)を含む。以下詳細に述べるように、アタッチプロセス中、サーバ・プロセス手段に対応するアドレス空間コンテキストのポインタ194は、クライアント・プロセス手段に対応するアドレス空間コンテキストへのポインタに設定される。
アドレス空間コンテキスト191、セグメント・テーブル192、ディレクトリ193、ポインタ194、ソフトウェア割込みハンドラ195、フォルト処理ソフトウェア・メソッド196は、図示するためにアドレス変換メカニズム190に存在するように示されているが、当業者には、これら要素を一緒に存在させる必要はなく、これら要素のうち一又は複数の要素が別の場所に存在してもよいことは理解されるであろう。例えば、アドレス空間コンテキスト191はカーネル123に存在して、ソフトウェア割込みハンドラ195およびフォルト処理ソフトウェア・メソッド196がメインメモリ120の他の場所に存在してもよい。さらに、当業者には、これら要素を組み合わせてもよく、または要素のうち一又は複数の要素を省いてもよいことは理解されるであろう。
コンピュータ・システム100は1つのシステム・バスだけを内蔵するように図示されているが、当業者には、本発明が複数のバスをもつコンピュータ・システムを使って実施できることは理解されるであろう。さらに、好適な実施例で使用するインターフェースは各々、プロセッサ110A、110B、110C、110Dから計算集約的な処理を移すのに使われる完全にプログラミングされた個別のマイクロプロセッサを含んでいる。ただし、当業者には、本発明がI/Oアダプタだけを使って同様な機能を果たすコンピュータ・システムにも同様に適用されることは理解されるであろう。
ディスプレイ・インターフェース140は、一又は複数のディスプレイ165をコンピュータ・システム100に直接接続するために使う。これらディスプレイはノンインテリジェント(すなわち、ダム)端末でも完全にプログラム可能なワークステーションでもよいが、システム・アドミニストレータおよびユーザがコンピュータ・システム100と通信できるようにするために使う。ただし、ディスプレイ・インターフェース140は一又は複数のディスプレイ165との通信をサポートするように設けられているが、ユーザおよびその他のプロセスとの必要なすべてのインタラクションはネットワーク・インターフェース150を介して行えるため、コンピュータ・システム100は必ずしもディスプレイ165が必要なわけではないことを述べておく。
ネットワーク・インターフェース150は、ネットワーク170で他のコンピュータ・システムおよびワークステーション(例、図1の175)もしくは他のコンピュータ・システムまたはワークステーションをコンピュータ・システム100に接続するために使う。本発明は、現在のアナログおよびデジタル技術もしくは現在のアナログまたはデジタル技術を使って、あるいは将来の何らかのネットワーキング・メカニズムを介してコンピュータ・システム100をネットワーク接続170を行うかどうかに関わらず、コンピュータ・システム100をいかに他のコンピュータ・システムおよびワークステーションもしくは他のコンピュータ・システムまたはワークステーションに接続しようとも同様に適用される。加えて、多くの様々なネットワーク・プロトコルを使ってネットワークを実装できる。これらプロトコルは、コンピュータをネットワーク170で通信させる特殊なコンピュータ・プログラムである。TCP/IP(伝送制御プロトコル/インターネット・プロトコル)が適切なネットワーク・プロトコルの一例である。
ここまでで、本発明が説明されたがもう少し説明を続ける。このとき、当業者には、本発明が多様な形態のプログラムとして配布できること、また本発明は実際に配布を行うために使用する特定の種類の信号搬送媒体に関係なく、同様に適用できることは理解されるであろう。適切な信号搬送媒体の例としては、フレキシブルディスクおよびCD−RW(例、図1の195)などの記録型の媒体、並びにデジタルおよびアナログ通信リンクなどの伝送型の媒体がある。
図2は、複数の並行ユーザ・プロセス手段214、216、218の各々に対応する様々なメカニズムを図示する機能的なブロック図を示す。アクセス属性126と、アドレス空間コンテキスト191と、セグメント・テーブル192と、ディレクトリ193と、ポインタ194を含むこれらメカニズムは、カーネル123およびプロセッサ110などのハードウェアに存在し、その上で実行する。各プロセスはそれに、「代替」アドレス空間コンテキスト191へのポインタ194(および代替アドレス空間コンテキストのセグメント・テーブル192とディレクトリ193、これらはそれぞれ「プロセスの代替セグメント・テーブル」と「プロセスの代替ディレクトリ」という)を対応付けられている。例えば、サーバ・プロセス手段214に対応するポインタ194は、クライアント・プロセス手段216またはクライアント・プロセス手段218に対応するアドレス空間コンテキスト191を指すことになろう。以下に述べる理由のために、クライアント・プロセス手段(例、クライアント・プロセス手段216)に対応するポインタ194は、別のクライアント・プロセス手段(例、クライアント・プロセス手段218)に対応するアドレス空間コンテキスト191を指すことは認められない。同様に、サーバ・プロセス手段(例、サーバ・プロセス手段214)に対応するポインタ194は、別のサーバ・プロセス手段に対応するアドレス空間コンテキスト191を指すことは認められない。当初、ポインタ194は、プロセスが現在代替アドレス空間コンテキストをもたないことを示すヌルである。好適な実施例では、クライアント・プロセス手段216(またはクライアント・プロセス手段218)に対応するポインタ194は、クライアント・プロセス手段が代替アドレス空間コンテキストをもたないため、必ずヌルのままである。
プロセス手段214、216、218は、「ユーザ・モード」のプログラムおよび、カーネル123(図1に図示)および関連ハードウェア(図2でまとめてカーネル/ハードウェア250として示す)などのシステム全体の特権をもつ「カーネル・モード」のプログラムからアクセスできる。カーネル123は各プロセスに対応する図2に示す様々なメカニズムに対応するメタ・ディスクリプションのオブジェクトおよびコードにもアクセスできる。
カーネル123は、上記述べたように、各プロセスに対応するアクセス属性126を提供する。本発明の好適な実施例によると、プロセス手段214、216、218は各々、2つの値のうちの1つをとるアクセス属性126をもつ。クライアントは、クライアント・プロセス手段216および218で例証されるほとんどのプロセスで使われるディフォルトの属性値である。この属性をもつプロセスはそれ自体のプロセス・ローカル・ストレージしか参照できない。サーバは、クライアント・プロセス手段のプロセス・ローカル・ストレージを参照できる必要のあるプロセスに指定される属性値である。サーバ・プロセス手段214がこのようなプロセスの例である。
図3は、プロセス手段214、216、218の各々のアドレス空間内の割り当てを図示するブロック図である。各プロセスに対応付けられるアドレス空間は、サーバ・プロセス手段214の場合アドレス空間342で、クライアント・プロセス手段216の場合アドレス空間344で、クライアント・プロセス手段218の場合アドレス空間346で例示している。本明細書では「アドレス空間」という表現は、メモリ上でのプロセス・ローカル・アドレス範囲のマッピングをいうために使う。図3に図示しているが、カーネル/ハードウェア250は実際にはアドレス空間の一部ではなく、カーネル/ハードウェア250がプロセス手段214、216、218のために備える基礎およびサポートを図示するために示している。例えば、カーネル123は、要求されたとき、その要求が様々なセキュリティ、監査および制御ルールに合格したことを検証すると、それをカーネルまたはユーザがそのアドレス空間に関係することを行う何かに影響するデータ構造をセットアップする。図3に示すように、各プロセス手段214、216、218はそれが所有するそのプロセス・ローカル・アドレス範囲の量に制限される。プロセスがそのアドレス空間全体を使う必要があってもおかしくないため、32ビット・アドレッシングのシステムではこの制限は実用的とはいえないかもしれない。しかし、64ビット・アドレッシングのシステムなどのより大型のシステムでは、プロセスをそのプロセス・ローカル・アドレッシングの範囲全体よりも小さいものの使用に制限することは問題とはならないのが通例である。
これに限定する訳ではないが、簡略化のため、プロセス手段214、216、218はそのそれぞれのアドレス範囲の約二分の一だけを所有することが認められると仮定する。これは例えば、ディレクトリ193に、各それぞれのプロセス手段214、216、218が所有することを認められるアドレス範囲の変換情報だけを含むようにさせれば、比較的簡単に行える。また、アクセス属性126の値に基づいて、クライアント・プロセス手段216および218などのクライアント・プロセス手段がプロセス・ローカル・アドレス範囲のそれぞれ「前半」部分302および304だけを所有し、サーバ・プロセス手段214などのサーバ・プロセス手段がプロセス・ローカル・アドレス範囲の「後半」部分306だけを所有すると仮定する。したがって、クライアント・プロセス手段216および218などのクライアント・プロセス手段は、プロセス・ローカル・アドレス範囲のそれぞれ「後半」部分312および314を所有しない。また、サーバ・プロセス手段214などのサーバ・プロセス手段は、プロセス・ローカル・アドレス範囲の「前半」部分316は所有しない。加えて、図3に図示するように、各それぞれのプロセス・ローカル・アドレス範囲の任意の予備部分326を含めることも可能である。含める場合、予備部分326は未使用で、将来の使用のために確保される。
上記の説明でプロセス・ローカル・アドレス空間を前半と後半に分けたことは、単に説明上の便宜にすぎない。好適な実施例では、アドレス空間の一部をまったく使用せず(例、予備部分326)、使用できる部分(例、所有部分302、304、および306と、未所有部分312、314および316)はクライアント・プロセス手段とサーバ・プロセス手段との間で等しく分割されない。サーバ・プロセス手段は通常特殊化され、一般に他のプロセスに利用できなければならないプロセス・ローカル・ストレージのすべてを所有する必要はない。そのため、サーバ・プロセス手段が所有するアドレス空間の割り当て(例、所有部分306)は、クライアント・プロセス手段が所有するもの(例、所有部分302および304)よりもはるかに小さいのが普通である。
アクセス属性に基づくプロセス生成:上記述べたように、カーネルはプロセスを開始してから、そのプロセスのあらゆるプログラムを実行する。各プロセスはアクセス属性によってクライアント・プロセス手段またはサーバ・プロセス手段のいずれかのタグ付けをしなければならないため、カーネルはプログラムのプロセス・ローカル・ストレージを配列するべき場所が分かる。
ここで図4を参照すると、本発明の好適な実施例によるプロセスのアドレス空間をレイアウトする方法400は、カーネルがプロセスが所望の属性値に基づいてクライアント・プロセス手段かサーバ・プロセス手段かを判定する時点で始まる(ステップ410)。アクセス属性はプログラムが実行される時点でまたはその前に指定される。プロセスの生成時点でアクセス属性を指定するのが好ましい。プロセス生成メカニズムは技術上周知である。代わりの方法として、アクセス属性は、アドレス空間がレイアウトされる時点、例えばUNIX(登録商標)システムのexec関数で指定してもよい。
属性値がクライアントの場合、カーネルは、クライアント・プロセス手段がクライアント・プロセス手段のプロセス・ローカル・アドレス範囲の最初の部分(例、図3の「前半」部分302)だけを所有するように、プロセス・ローカル・アドレス空間をレイアウトする(ステップ412)。この点に関し、カーネルは、クライアント・プロセス手段のプロセス・ローカル・アドレス範囲の残りの部分が未所有または未使用のいずれかになるように、プロセス・ローカル・アドレス空間をレイアウトする。例えば、図3に図示するクライアント・プロセス手段216の場合、カーネルは、プロセス・ローカル・アドレス空間344を「後半」部分312が未所有に、もしあれば、予備部分326が未使用になるようにレイアウトする。属性値がサーバの場合、カーネルは、サーバ・プロセス手段がサーバ・プロセス手段のプロセス・ローカル・アドレス範囲の第2の部分(例、図3の「後半」部分306)だけを所有するように、プロセス・ローカル・アドレス空間をレイアウトする(ステップ414)。この点に関し、カーネルは、サーバ・プロセス手段のプロセス・ローカル・アドレス範囲の残りの部分が未所有または未使用のいずれかになるように、プロセス・ローカル・アドレス空間をレイアウトする。例えば、図3に図示するサーバ・プロセス手段214の場合、カーネルは、「前半」部分316を未所有に、もしあれば、予備部分326を未使用になるようにプロセス・ローカル・アドレス空間342をレイアウトする。ステップ410、412、414は各プロセスについて繰り返される。カーネルがプロセスをレイアウトして、プログラムのプロセス・ローカル・ストレージを配列するべき場所が分かったら、プロセス内でプログラムの実行を開始できる(ステップ416)。
アタッチ・メカニズム:カーネル123は、上記述べたように、サーバ・プロセス手段をクライアント・プロセス手段に制御された方法でアタッチさせる新たな機能を提供する。例えば、一時的に図2に戻ると、サーバ・プロセス手段214はカーネルのアタッチ・メカニズムを呼び出すことによってクライアント・プロセス手段216にアタッチできる。
ここで図5を参照すると、本発明の好適な実施例によるサーバ・プロセス手段をクライアント・プロセス手段に制御された方法でアタッチすることを可能にする方法500は、サーバ・プロセス手段がアタッチ・メカニズムを呼び出した時点で始まる(ステップ510)。さらに具体的には、サーバ・プロセス手段はアタッチ・メカニズムを呼び出し、パラメータとしてクライアント・プロセス手段への参照を渡す。サーバ・プロセス手段はオペレーティング・システム・カーネルにアタッチ要求を出すことによって、カーネルのアタッチ・メカニズムを呼び出して「アタッチ」を行う。カーネルは要求されたときにこの機能を使用可能にし、アクセスが認められたら(例、カーネルがセキュリティ・チェックを行って、サーバ・プロセス手段がクライアント・プロセス手段にアタッチする権限をもっているかを確認する)、アタッチ・メカニズムを介してクライアント・プロセス手段のストレージへのアクセス権を提供する。アタッチ・メカニズムを実行する際、以下に述べるステップ(ステップ512〜524)を行う。これらステップはその優先順位で記載される。ただし様々なステップは図示するものとは互いに異なる時点で行っても、または同時に行ってもよいことは理解されなければならない。さらに、当業者には、ステップのうち一又は複数のステップを省けることは理解されるであろう。いずれにしても、アタッチされてしまえば、カーネル・モードまたはユーザ・モードのいずれかで他のストレージを参照できる。サーバ・プロセス手段はそれ自体のプロセス・ローカル・アドレスを使って、それ自体のプロセス・ローカル・ストレージも参照できることを指摘しておく。
カーネルは、実行するプロセスがサーバ属性であり、参照プロセスがクライアント属性であることを検証する(ステップ512)。このステップのポイントは、矛盾を避けるために2つのプロセスをプロセス・ローカル・アドレス範囲の異なる部分を所有しなければならないことである。カーネルは、実行するプロセスが現在別のプロセスにアタッチしていないことも検証する(ステップ514)。
さらに、カーネルは、サーバ・プロセス手段がクライアント・プロセス手段にアタッチする権限をもつことを確認するのに望ましい、もしくは必要なあらゆるセキュリティ・チェックを行う(ステップ516)。クライアント・プロセス手段のストレージに未許可のアクセスがされないように制御された方法でアクセス権を提供するのが望ましい。サーバ・プロセス手段がクライアント・プロセス手段にアタッチする権限をもっている場合、アクセスが認められる。他方で、サーバ・プロセス手段がそのような権限をもたない場合、アクセスは否定される。
望ましいもしくは必要な場合、カーネルは、サーバ・プロセス手段がクライアント・プロセス手段のローカル・ストレージへのアクセス権を取得していることを監査するために必要な情報を生成する(ステップ518)。例えば、一部のオペレーティング・システムは監査を要求する。
カーネルはクライアント・プロセス手段のアドレス空間コンテキストで参照カウントを増分する(ステップ520)。これによって、クライアント・プロセス手段が終了することになっても、そのセグメント・テーブルおよびディレクトリは存在し続けるので、依然としてサーバ・プロセス手段から参照できることを保証する。
さらに、カーネルは、クライアント・プロセス手段のローカル・アドレス範囲の所有部分に対応した、サーバ・プロセス手段のディレクトリへのエントリを生成するのが好ましい(ステップ522)。これらプロセス・ローカル・アドレスを内部アドレスに相関させるというよりも、このディレクトリへのエントリはクライアント・ローカル・アドレス範囲の所有部分全体(そうでなければサーバ・プロセス手段で未所有である)を、クライアント・アドレス空間コンテキストに相関させる。このエントリはフォルト処理には必要ないが、記録の目的でするのが望ましい。例えば、このエントリで、そのコンテンツを見られるようにディレクトリを実体化する機能を追加し易くなるであろう。ディレクトリの実体化は、例えば、サーバ・プロセス手段が別のプロセスのストレージへのアドレス指定能力をもつかどうかを判断できるようにする。
カーネルはまた、サーバ・プロセス手段の代替アドレス空間コンテキストのポインタがクライアント・プロセス手段のアドレス空間コンテキストを指すようにする(ステップ524)。
セグメント・フォルトの処理メカニズム:図6は、本発明の好適な実施例によるセグメント・フォルトを処理する方法600を図示するフロー図である。セグメント・フォルトを処理するメカニズムを実行する際、以下に述べるステップ(ステップ602〜650)を行う。これらステップはその優先順位で記載される。ただし、様々なステップは図示するのとは互いに異なる時点で行っても、同時に行ってもよいことは理解されなければならない。さらに、当業者には、ステップのうち一又は複数のステップを省けることは理解されるであろう。方法600は、セグメント・フォルトが発生した時点で始まる(ステップ602)。さらに具体的には、ハードウェアはセグメント・キャッシュでの探索が失敗すると、ハードウェアはセグメント・フォルトを提示する。セグメント・フォルトが発生したら必ず、そのプロセスが代替アドレス空間コンテキストをもつかどうかの判定が行われる(ステップ604)。さらに具体的には、プロセスのアドレス空間コンテキストのポインタがチェックされて、それが非ヌル値に設定されているかどうかを判定する。プロセスが代替アドレス空間コンテキストをもたないと判定されたら、割込みハンドラがプロセスのセグメント・テーブル内でフォルトになったアドレスを探すことによって、フォルトを解決しようと試みる(ステップ608)。当然ながら、当業者には、セグメント・テーブルの検索は、前述したように、代わりにハードウェアで実施できることは理解されるであろう。次に割込みハンドラ(またはハードウェア)によるフォルトになった命令の解決の試みの成否が判定される(ステップ610)。割込みハンドラ(またはハードウェア)の試みが成功したら、プロセスのセグメント・テーブルからの変換情報がエントリとしてセグメント・キャッシュに供給されて、プロセッサにロードされ、さらにフォルトになった命令が再実行される(ステップ612)。
他方で、割込みハンドラ(またはハードウェア)がセグメント・テーブルを使ってフォルトを解決できなかったら、長い方の経路をとって、プロセスのディレクトリからフォルトを解決する(ステップ614)。この点に関し、従来のフォルト処理ソフトウェア・メソッドが呼び出されて、プロセスのディレクトリ内の変換情報を探索する。代わりの方法として、セグメント・テーブルの検索をハードウェアで行って、ハードウェアがセグメント・テーブル内に必要な変換情報を見つけられなかったら、割込みが発生して、フォルト処理ソフトウェアが呼び出される。いずれにしても、次にフォルト処理ソフトウェア・メソッドのフォルトを出した命令の解決の試みの成否が判定される(ステップ616)。フォルト処理ソフトウェア・メソッドがプロセスのディレクトリを使ってフォルトを解決できなかったら、エラーを返す(ステップ618)。他方で、フォルト処理ソフトウェア・メソッドの試みが成功したら、ディレクトリで見つかった情報を使って、プロセスのセグメント・テーブルを更新して、さらにフォルトとなった命令を再実行する(ステップ620)。当業者には、ステップ620でのフォルトとなった命令を再実行しても再度セグメント・フォルトになることは理解されるであろう。しかし、この2度目のセグメント・フォルトの発生は短い方の経路をとってステップ612に行くことになり、そこで変換情報がセグメント・キャッシュへのエントリとして後入れ先出しされ、さらにフォルトとなった命令をうまく再実行する。代わりの方法として、ステップ620で変換情報をセグメント・キャッシュへのエントリとしてロードすると同時に、プロセスのセグメント・テーブルを更新する。
ステップ604に戻って、プロセスが代替アドレス空間コンテキストをもつと判定されたら、カーネルは、フォルトとなったアドレスがアドレス空間のクライアント所有部分にあるかどうかを判定する(ステップ630)。フォルトとなったアドレスがアドレス空間のクライアント所有部分になければ、方法はステップ608に戻る。他方で、フォルトとなったアドレスがアドレス空間のクライアント所有部分にあれば、ステップ638〜650(これは一般的にそれぞれステップ608〜620の代替アドレス空間コンテキスト版に相当する)を行う。
アドレスがアドレス空間のクライアント所有部分にある場合、割込みハンドラはプロセスの代替セグメント・テーブル内でフォルトとなったアドレスを探すことによって、フォルトの解決を試みる(ステップ638)。最初にサーバ・プロセス手段がクライアント・アドレスを使ってストレージの参照を試みて、セグメント・フォルトが発生すると、割込みハンドラがプロセスの代替セグメント・テーブルを使ってフォルトの解決を試みることに留意する。その後のフォルトはクライアント・アドレスの新たなセグメントを参照するときに発生する。次に、割込みハンドラのフォルトとなった命令の解決の試みの成否が判定される(ステップ640)。割込みハンドラの試みが成功したら、プロセスの代替セグメント・テーブルからの変換情報がエントリとしてセグメント・キャッシュに供給され、それがプロセッサにロードされて、さらにフォルトとなった命令を再実行する(ステップ642)。プロセスのセグメント・テーブルの検索をハードウェアで行う代替法の場合、プロセスの代替セグメント・テーブルへのエントリがステップ642でプロセスのセグメント・テーブルにコピーされて、ハードウェアがそのコピーを見つけられるようにしなければならない。
他方で、割込みハンドラがプロセスの代替セグメント・テーブルを使ってフォルトを解決できない場合、長い方の経路をとって、プロセスの代替ディレクトリからフォルトを解決する(ステップ644)。この点に関し、従来のフォルト処理ソフトウェア・メソッドを呼び出して、プロセスの代替ディレクトリ内で変換情報を探索する。代わりの方法として、セグメント・テーブルの検索をハードウェアで行って、ハードウェアがプロセスのセグメント・テーブル内に必要な変換情報のコピーを見つけられない場合、割込みが発生して、フォルト処理ソフトウェアが呼び出される。いずれの場合も、次にフォルト処理ソフトウェア・メソッドのフォルトとなった命令の解決の試みの成否が判定される(ステップ646)。フォルト処理ソフトウェア・メソッドがプロセスの代替ディレクトリを使ってフォルトを解決できなかった場合、エラーを返す(ステップ648)。他方で、フォルト処理ソフトウェア・メソッドが成功したら、プロセスの代替ディレクトリで見つかった情報を使って、プロセスの代替セグメント・テーブルを更新し、さらにフォルトとなった命令を再実行する(ステップ650)。当業者には、ステップ650のフォルトとなった命令を再実行しても再度セグメント・フォルトとなることは理解されるであろう。しかし、この2度目のセグメント・フォルトの発生は短い方の経路をとってステップ642に行くこととなり、そこで変換情報がセグメント・キャッシュへのエントリとして後入れ先出しされ、さらにフォルトとなった命令をうまく再実行する。代わりの方法として、ステップ650で変換情報をセグメント・キャッシュへのエントリとしてロードすると同時に、プロセスの代替セグメント・テーブルを更新する。
デタッチ・メカニズム:カーネル123は、前述したように、サーバ・プロセス手段をクライアント・プロセス手段からデタッチさせる新たな機能も提供する。例えば、一時的に図2に戻ると、サーバ・プロセス手段214は、カーネルのデタッチ・メカニズムを呼び出すことによって、クライアント・プロセス手段216からデタッチできる。
ここで図7を参照すると、本発明の好適な実施例によるサーバ・プロセス手段がクライアント・プロセス手段からデタッチすることを可能にする方法700は、サーバ・プロセス手段がデタッチ・メカニズムを呼び出す時点で始まる(ステップ710)。サーバ・プロセス手段は、クライアント・プロセス手段のローカル・ストレージへのアクセスがもう必要なくなったときに、この機能を呼び出す。サーバ・プロセス手段がクライアント・プロセス手段のローカル・ストレージへのアクセスを終了する場合、サーバ・プロセス手段はオペレーティング・システム・カーネルにデタッチ要求を出すことによって、カーネルのデタッチ・メカニズムを呼び出して「デタッチ」を行う。デタッチ・メカニズムを実行する際、以下に述べるステップ(ステップ712〜722)を行う。これらステップはその優先順位で記載される。ただし、様々なステップは図示するのとはお互い異なる時点で行っても、または同時に行ってもよい。さらに、当業者には、ステップのうち一又は複数のステップを省けることは理解されるであろう。いずれの場合も、デタッチしてしまえば、カーネル・モードでもユーザ・モードでも他のストレージをそれ以上参照することはできない。その時点で、サーバ・プロセス手段はそれ自体のローカル・ストレージにしかアクセスできない。
カーネルは、サーバ・プロセス手段がクライアント・プロセス手段にアタッチしていることを検証する(ステップ712)。カーネルはまた、サーバ・プロセス手段の代替アドレス空間コンテキストのポインタをヌルに設定する(ステップ714)。さらに、カーネルは、ステップ522で生成した(図5参照)、クライアント・プロセス・ローカル・アドレスをクライアント・プロセス手段のアドレス空間コンテキストに相関させたサーバ・プロセス手段のディレクトリからエントリを削除する(ステップ716)。
カーネルは、プロセスのスレッドを現在実行しているすべてのプロセッサのセグメント・キャッシュから関連するエントリをフラッシュする(ステップ718)。また、サーバ・プロセス手段のセグメント・テーブルの検索をハードウェアで行う代替法の場合、カーネルはサーバ・プロセス手段のセグメント・テーブル内の関連するエントリを無効にもする。これは、その代替法の場合、前述したように、クライアント・プロセス手段のセグメント・テーブル内のエントリがサーバ・プロセス手段のセグメント・テーブルにコピーされたかもしれないためである。
一般にフラッシングに関して、当業者には、プロセスは別のプロセスを観察しているとき(すなわち、アタッチされるとき)、観察されるプロセスが観察されるプロセスのアドレス空間に変更を行ったら、カーネルはそのプロセスを観察しているすべてのプロセスについて、一定のレベルの通知、セグメント・キャッシュのフラッシング等を行う役割を担うことは理解されるであろう。そうでなければ、観察しているプロセスは、観察されるプロセスが削除された、または別の何かと置換された古いアドレス変換情報を使っていることになろう。言い換えると、正しいデータは観察しているプロセスには見えないはずになっている、すなわち観察しているプロセスは観察されるプロセスが見るものとは異なるデータを見る。一般的に、プロセスがアドレス空間からセグメントまたはメモリを削除すると、プロセスの他のスレッドを実行しているプロセッサに同報通信することは技術上周知である。本発明の実施例によると、変換情報を消してしまう同報通信は、プロセスの他のスレッドを実行しているプロセッサだけでなく、観察しているプロセスを実行しているプロセッサにも行う。
ここで図7に戻ると、カーネルは、クライアント・プロセス手段のアドレス空間コンテキスト内の参照カウントも減少させる(ステップ720)。クライアント・プロセス手段がすでに終了している場合、ここでそのプロセスのローカル・アドレッシング構造のすべてを破棄させることになろう。
望ましいまたは必要な場合、カーネルは、サーバ・プロセス手段がクライアント・プロセス手段のローカル・ストレージへのアクセス権をもはやもたないことを監査するために必要な情報を生成する(ステップ722)。
当業者には本発明の範囲内で数多くの変型が可能であることは理解されるであろう。例えば、好適な実施例では、わずか2種類のプロセスと、それがアタッチする方法は1つだけしかなかった。しかし、当業者は、このメカニズムの他の拡張型があることを理解するであろう。これら拡張型には、同じサーバ・プロセス手段に逆にアタッチもするクライアント・プロセス手段の能力、または異なるサーバ・プロセス手段にアタッチするクライアント・プロセス手段の能力が含まれる。別の拡張型は複数の種類のプロセッサに関わり、各種類がプロセス・ローカル・アドレス範囲の固有の部分を所有し、プロセスのいずれかの種類がプロセスの別の種類にアタッチできるであろう。さらに別の拡張型では、各プロセスが複数の代替アドレス空間コンテキストへの複数のポインタをもつ場合、あるプロセスは複数の他の種類のプロセスに同時にアタッチできよう。ここでも、衝突を避けるために、各種類のプロセスはプロセス・ローカル・アドレス範囲の固有の部分を所有する。このように、本発明はその好適な実施例を参照しながら具体的に図示、説明してきたが、当業者には本発明の精神および範囲を逸脱することなく、それに形態および細部にこれら並びにその他の変更を行えることは理解されるであろう。
本発明の好適な実施例によるコンピュータ装置のブロック図である。 本発明の好適な実施例による複数の例示的な並行プロセスの各々に対応する様々なメカニズムを表すブロック図である。 本発明の好適な実施例による複数の例示的な並行プロセスの各々のアドレス空間内の割り当てを表すブロック図である。 本発明の好適な実施例によるアクセス属性に基づいてプロセスのアドレス空間をレイアウトする方法を表すフロー図である。 本発明の好適な実施例によるサーバ・プロセス手段にクライアント・プロセス手段へのアタッチを可能にする方法を表すフロー図である。 本発明の好適な実施例によるセグメント・フォルトを処理する方法を表すフロー図である。 本発明の好適な実施例によるサーバ・プロセス手段にクライアント・プロセス手段からのデタッチを可能にする方法を表すフロー図である。

Claims (15)

  1. 装置であって、
    少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサに接続されるメモリと、
    前記メモリ内に存在するクライアント・プロセス手段であって、それ自体が所有するプロセス・ローカル・ストレージ(以下、クライアント・プロセス・ローカル・ストレージという)しか参照できない前記クライアント・プロセス手段と、
    前記メモリ内に存在するサーバ・プロセス手段であって、それ自体が所有するプロセス・ローカル・ストレージ(以下、サーバ・プロセス・ローカル・ストレージという)を参照でき、且つ、前記クライアント・プロセス・ローカル・ストレージにアクセスする能力を要求する前記サーバ・プロセス手段と、
    前記メモリ内に存在し、少なくとも1つのプロセッサによって実行されるオペレーティング・システム・カーネルであって、呼び出されたときに前記サーバ・プロセス手段を前記クライアント・プロセス手段にアタッチさせることを可能にして、前記サーバ・プロセス手段が前記クライアント・プロセス手段のプロセス・ローカル・アドレスを使って前記クライアント・プロセス・ローカル・ストレージを参照できるとともに、前記サーバ・プロセス・ローカル・ストレージへのアクセスを維持するようにするアタッチ・メカニズムをもつ前記オペレーティング・システム・カーネルと
    を有し、
    前記クライアント・プロセス手段がそれ自体に、クライアント・プロセスであることを示すアクセス属性を対応付け、当該クライアント・プロセスであることを示すアクセス属性が、当該クライアント・プロセス手段を前記クライアント・プロセス・ローカル・ストレージの参照に制限することを示す属性値をもち、
    前記サーバ・プロセス手段がそれ自体に、サーバ・プロセスであることを示すアクセス属性を対応付け、当該サーバ・プロセスであることを示すアクセス属性が、当該サーバ・プロセス手段が前記クライアント・プロセス・ローカル・ストレージを参照できる能力を要求することを示す属性値をもち、
    前記クライアント・プロセスであることを示すアクセス属性又はサーバ・プロセスであることを示すアクセス属性の属性値に基づいて、前記オペレーティング・システム・カーネルが、前記クライアント・プロセス手段のプロセス・ローカル・アドレス空間を前記サーバ・プロセス手段のものとは異なるようにレイアウトする、前記装置。
  2. 前記クライアント・プロセス・ローカル・ストレージが、少なくとも第1部分と第2部分をもつ第1プロセス・ローカル・アドレス範囲で定義され、
    前記第1プロセス・ローカル・アドレス範囲の前記第1部分を前記クライアント・プロセス手段が所有するとともに、前記第1プロセス・ローカル・アドレス範囲の前記第2部分を前記クライアント・プロセス手段が所有せず、
    前記サーバ・プロセス・ローカル・ストレージが、前記第1プロセス・ローカル・アドレス範囲の前記第1部分および前記第2部分にそれぞれ対応する少なくとも第1部分と第2部分をもつ第2プロセス・ローカル・アドレス範囲で定義され、
    前記第2プロセス・ローカル・アドレス範囲の前記第1部分を前記サーバ・プロセス手段が所有しないとともに、前記第2プロセス・ローカル・アドレス範囲の前記第2部分を前記サーバ・プロセス手段が所有する、請求項に記載の装置。
  3. メモリ内に存在しプロセッサで実行する割込みハンドラとフォルト処理メソッドのうち少なくとも1つをさらに有し、
    前記サーバ・プロセス手段が前記サーバ・プロセス・ローカル・ストレージを参照している場合には、割込みハンドラ/フォルト処理メソッドがアドレス空間コンテキストのセグメント・テーブルとディレクトリのうち少なくとも1つを使ってセグメント・フォルトの解決を試み、
    前記サーバ・プロセス手段が前記クライアント・プロセス・ローカル・ストレージを参照している場合には、割込みハンドラ/フォルト処理メソッドが代替アドレス空間コンテキストのセグメント・テーブルとディレクトリのうち少なくとも1つを使ってセグメント・フォルトの解決を試みる、
    請求項1に記載の装置。
  4. アドレス空間コンテキストが代替アドレス空間コンテキストへのポインタを有し、アタッチ・メカニズムが呼び出されたら前記オペレーティング・システム・カーネルがポインタを設定する、請求項に記載の装置。
  5. 前記オペレーティング・システム・カーネルが、呼び出されたときに前記サーバ・プロセス手段を前記クライアント・プロセス手段からデタッチさせて、前記サーバ・プロセス手段が前記クライアント・プロセス・ローカル・ストレージをもはや参照できないようにするデタッチ・メカニズムをさらに有し、デタッチ・メカニズムが呼び出されたらオペレーティング・システムがポインタをヌルに設定する、請求項に記載の装置。
  6. 前記オペレーティング・システム・カーネルが、呼び出されたときに前記サーバ・プロセス手段を前記クライアント・プロセス手段からデタッチさせて、前記サーバ・プロセス手段が前記クライアント・プロセス・ローカル・ストレージをもはや参照できないようにするデタッチ・メカニズムをさらに有する、請求項に記載の装置。
  7. 前記オペレーティング・システム・カーネルが、呼び出されたときに前記サーバ・プロセス手段を前記クライアント・プロセス手段からデタッチさせて、前記サーバ・プロセス手段が前記クライアント・プロセス・ローカル・ストレージをもはや参照できないようにするデタッチ・メカニズムをさらに有する、請求項1に記載の装置。
  8. 少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサに接続されるメモリと、
    前記メモリに存在するクライアント・プロセス手段と、
    前記メモリに存在するサーバ・プロセス手段と、
    前記少なくとも1つのプロセッサによって実行される少なくとも1つの命令によってアドレス指定可能なアドレス空間と
    を有する装置において、
    前記アドレス空間が、
    少なくとも第1部分と第2部分とをもつ第1プロセス・ローカル・アドレス範囲によって定義される前記クライアント・プロセス手段が所有するプロセス・ローカル・ストレージ(以下、クライアント・プロセス・ローカル・ストレージという)であって、前記第1プロセス・ローカル・アドレス範囲の前記第1部分が前記クライアント・プロセス手段によって所有されるとともに、前記第1プロセス・ローカル・アドレス範囲の前記第2部分が前記クライアント・プロセス手段によって所有されない、前記クライアント・プロセス・ローカル・ストレージと、
    前記第1プロセス・ローカル・アドレス範囲の前記第1部分および前記第2部分にそれぞれ対応する少なくとも第1部分と第2部分とをもつ第2プロセス・ローカル・アドレス範囲によって定義される前記サーバ・プロセス手段が所有するプロセス・ローカル・ストレージ(以下、サーバ・プロセス・ローカル・ストレージという)であって、前記第2プロセス・ローカル・アドレス範囲の前記第1部分が前記サーバ・プロセス手段によって所有されないとともに、前記第2プロセス・ローカル・アドレス範囲の前記第2部分が前記サーバ・プロセス手段によって所有される、前記サーバ・プロセス・ローカル・ストレージと
    を有し、
    前記クライアント・プロセス手段は、前記クライアント・プロセス・ローカル・ストレージの前記第1部分しか参照できず、及び、
    前記サーバ・プロセス手段は、前記サーバ・プロセス・ローカル・ストレージの前記第2部分へのアクセスを参照でき、且つ、前記クライアント・プロセス手段のプロセス・ローカル・アドレスを使って前記クライアント・プロセス・ローカル・ストレージの前記第1部分を参照できる能力を要求し、
    前記クライアント・プロセス手段は、クライアント・プロセスであることを示すアクセス属性をもち、当該クライアント・プロセスであることを示すアクセス属性が、当該クライアント・プロセス手段を前記クライアント・プロセス・ローカル・ストレージの参照に制限することを示す属性値をもち、
    前記サーバ・プロセス手段は、サーバ・プロセスであることを示すアクセス属性をもち、当該サーバ・プロセスであることを示すアクセス属性が、当該サーバ・プロセス手段が前記クライアント・プロセス・ローカル・ストレージを参照できる能力を要求することを示す属性値をもち、
    前記クライアント・プロセスであることを示すアクセス属性又はサーバ・プロセスであることを示すアクセス属性の属性値に基づいて、前記クライアント・プロセス手段のプロセス・ローカル・アドレス空間が前記サーバ・プロセス手段のものとは異なるようにレイアウトされる、
    前記装置。
  9. 前記第1プロセス・ローカル・アドレス範囲の前記第1部分と前記第2プロセス・ローカル・アドレス範囲の前記第1部分が各々、前記第1プロセス・ローカル・アドレス範囲の前記第2部分と前記第2プロセス・ローカル・ストレージ・アドレス範囲の前記第2部分のものよりも大きいアドレス空間を定義する、請求項に記載の装置。
  10. 前記第1プロセス・ローカル・アドレス範囲と前記第2プロセス・ローカル・アドレス範囲が各々、前記第1部分および前記第2部分とは排他的な第3部分をもち、
    前記第1プロセス・ローカル・アドレス範囲の前記第3部分と前記第2プロセス・ローカル・アドレス範囲の前記第3部分が、それぞれ前記第1プロセスおよび前記第2プロセスによって所有されず、または使用できない、
    請求項に記載の装置。
  11. メモリ内に存在し、少なくとも1つのプロセッサで実行するオペレーティング・システム・カーネルをさらに有し、
    前記オペレーティング・システム・カーネルが、呼び出されたときに前記第2プロセスを前記第1プロセスにアタッチさせて、前記第2プロセスが第1プロセスのプロセス・ローカル・アドレスを使って前記第1プロセスのプロセス・ローカル・ストレージの前記第1部分を参照できるようにするアタッチ・メカニズムをもつとともに、そのプロセスのローカル・ストレージの所有部分へのアクセスを保持する、請求項に記載の装置。
  12. レイアウトによってあるプロセスが別のプロセスのプロセス・ローカル・ストレージにアクセスするために、プロセスがクライアント・プロセスであることを示すアクセス属性の属性値又はプロセスがサーバ・プロセスであることを示すアクセス属性の属性値に基づいてプロセス・ローカル・アドレス空間をレイアウトするコンピュータ実装方法であって、前記クライアント・プロセスであることを示すアクセス属性が、当該クライアント・プロセス手段を前記クライアント・プロセス・ローカル・ストレージの参照に制限することを示す前記属性値をもち、前記サーバ・プロセスであることを示すアクセス属性が、当該サーバ・プロセス手段が前記クライアント・プロセス・ローカル・ストレージを参照できる能力を要求することを示す前記属性値をもち、
    前記実装方法が、
    (A)前記属性値に基づいて、プロセスがサーバ・プロセス手段かクライアント・プロセス手段かを判定するステップであって、前記クライアント・プロセス手段はそれ自体が所有するプロセス・ローカル・ストレージ(以下、クライアント・プロセス・ローカル・ストレージという)しか参照できず、前記サーバ・プロセス手段はそれ自体が所有するプロセス・ローカル・ストレージ(以下、サーバ・プロセス・ローカル・ストレージという)を参照できるとともに、前記クライアント・プロセス・ローカル・ストレージにアクセスできる能力を要求する、前記判定するステップと、
    (B)前記属性値が、当該プロセスが前記クライアント・プロセス手段であることを示す場合、前記クライアント・プロセス手段が少なくとも第1部分と第2部分とをもつ第1プロセス・ローカル・アドレス範囲によって定義されるように当該第1プロセス・ローカル・アドレス空間をレイアウトするステップであって、前記クライアント・プロセス手段が前記第1プロセス・ローカル・アドレス範囲の第1部分しか所有しない、前記レイアウトするステップと、
    (C)前記属性値が、当該プロセスが前記サーバ・プロセス手段であることを示す場合、前記サーバ・プロセス手段を少なくとも第1部分と第2部分とをもち且つ前記第1プロセス・ローカル・アドレス範囲と異なる第2プロセス・ローカル・アドレス範囲によって定義されるように当該第2プロセス・ローカル・アドレス空間をレイアウトするステップであって、前記第2プロセス・ローカル・アドレス範囲の前記第1部分と前記第2部分がそれぞれ前記第1プロセス・ローカル・アドレス範囲の前記第1部分と前記第2部分とに対応し、前記サーバ・プロセス手段が、前記第2プロセス・ローカル・アドレス範囲の前記第2部分だけを所有する、前記レイアウトするステップと
    を含み、
    前記クライアント・プロセス手段は、前記クライアント・プロセス・ローカル・ストレージの前記第1部分しか参照できず、及び、
    前記サーバ・プロセス手段は、前記サーバ・プロセス・ローカル・ストレージの前記第2部分へのアクセスを参照でき、且つ、前記クライアント・プロセス手段のプロセス・ローカル・アドレスを使って前記クライアント・プロセス・ローカル・ストレージの前記第1部分を参照できる能力を要求する、
    前記方法。
  13. (D)プロセスのいずれかのプログラムを実行する前に、各プロセスについてステップ(A)〜(C)を繰り返すステップをさらに含む、請求項12に記載の方法。
  14. レイアウトによりあるプロセスが別のプロセスのプロセス・ローカル・ストレージにアクセスするために、アクセス属性の属性値に基づいてプロセス・ローカル・アドレス空間をレイアウトするコンピュータ・プログラムであって、コンピュータに、請求項12又は13のいずれか一項に記載の方法の各ステップを実行させる前記コンピュータ・プログラム。
  15. レイアウトによりあるプロセスが別のプロセスのプロセス・ローカル・ストレージにアクセスするために、アクセス属性の属性値に基づいてプロセス・ローカル・アドレス空間をレイアウトするコンピュータ・プログラムを記録したコンピュータ読み取り可能な記録媒体であって、コンピュータに、請求項12又は13のいずれか一項に記載の方法の各ステップを実行させる前記コンピュータ・プログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2007029423A 2006-02-23 2007-02-08 別のプロセスのプロセス・ローカル・ストレージにアクセスする方法、装置、コンピュータ・プログラム、およびコンピュータ実装方法 Active JP5063131B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/360351 2006-02-23
US11/360,351 US7844781B2 (en) 2006-02-23 2006-02-23 Method, apparatus, and computer program product for accessing process local storage of another process

Publications (2)

Publication Number Publication Date
JP2007226786A JP2007226786A (ja) 2007-09-06
JP5063131B2 true JP5063131B2 (ja) 2012-10-31

Family

ID=38472688

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007029423A Active JP5063131B2 (ja) 2006-02-23 2007-02-08 別のプロセスのプロセス・ローカル・ストレージにアクセスする方法、装置、コンピュータ・プログラム、およびコンピュータ実装方法

Country Status (4)

Country Link
US (1) US7844781B2 (ja)
JP (1) JP5063131B2 (ja)
CN (1) CN101055543B (ja)
TW (1) TW200818021A (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9069893B2 (en) * 2011-03-23 2015-06-30 International Business Machines Corporation Automatic verification of determinism for parallel programs
US10089037B1 (en) * 2013-10-29 2018-10-02 EMC IP Holding Company LLC Block active/active access to data storage systems at different locations
US10089035B1 (en) * 2013-10-29 2018-10-02 EMC IP Holding Company LLC Block storage transparent platform migration
US10032041B2 (en) * 2015-05-30 2018-07-24 Apple Inc. Storage volume protection using restricted resource classes

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3454854B2 (ja) * 1992-01-16 2003-10-06 株式会社東芝 メモリ管理装置及び方法
DE69409445D1 (de) * 1993-07-27 1998-05-14 Ibm Prozessüberwachung in einem Mehrfachverarbeitungsanbieter
JPH0830466A (ja) * 1994-07-15 1996-02-02 Pfu Ltd マルチタスク切り換え制御方法
US6243762B1 (en) * 1994-08-08 2001-06-05 Mercury Computer Systems, Inc. Methods and apparatus for data access and program generation on a multiprocessing computer
US5581765A (en) * 1994-08-30 1996-12-03 International Business Machines Corporation System for combining a global object identifier with a local object address in a single object pointer
JP3406983B2 (ja) * 1994-09-16 2003-05-19 日本電信電話株式会社 プロセス間メッセージ通信方法
JPH0916530A (ja) * 1995-06-30 1997-01-17 Toshiba Corp 仮想空間管理方法及び装置
JP3557026B2 (ja) * 1996-01-12 2004-08-25 株式会社東芝 仮想記憶管理方法
US6681239B1 (en) * 1996-12-23 2004-01-20 International Business Machines Corporation Computer system having shared address space among multiple virtual address spaces
GB2334353B (en) * 1998-02-12 2002-08-07 Ibm An apparatus,method and computer program product for client/server computing with the ability to select which servers are capable of creating transaction stat
US6738889B2 (en) * 1999-07-12 2004-05-18 International Business Machines Corporation Apparatus and method for providing simultaneous local and global addressing with hardware address translation
US6216199B1 (en) * 1999-08-04 2001-04-10 Lsi Logic Corporation Hardware mechanism for managing cache structures in a data storage system
US6574721B1 (en) * 1999-08-31 2003-06-03 International Business Machines Corporation Apparatus and method for providing simultaneous local and global addressing using software to distinguish between local and global addresses
US6868450B1 (en) * 2000-05-17 2005-03-15 Hewlett-Packard Development Company, L.P. System and method for a process attribute based computer network filter
US6581063B1 (en) * 2000-06-15 2003-06-17 International Business Machines Corporation Method and apparatus for maintaining a linked list
US7047314B2 (en) * 2000-12-28 2006-05-16 Oki Electric Industry Co., Ltd. Duplicate private address translating system and duplicate address network system
JP2003280930A (ja) * 2002-03-20 2003-10-03 Fujitsu Ltd プロセス間通信プログラムを記録した媒体およびプロセス間通信プログラム
US7269709B2 (en) * 2002-05-15 2007-09-11 Broadcom Corporation Memory controller configurable to allow bandwidth/latency tradeoff
US7624112B2 (en) * 2003-04-03 2009-11-24 Oracle International Corporation Asynchronously storing transaction information from memory to a persistent storage
US7584476B2 (en) * 2004-03-04 2009-09-01 International Business Machines Corporation Mechanism for reducing remote memory accesses to shared data in a multi-nodal computer system

Also Published As

Publication number Publication date
US7844781B2 (en) 2010-11-30
CN101055543A (zh) 2007-10-17
US20070208882A1 (en) 2007-09-06
JP2007226786A (ja) 2007-09-06
TW200818021A (en) 2008-04-16
CN101055543B (zh) 2010-05-19

Similar Documents

Publication Publication Date Title
US7490214B2 (en) Relocating data from a source page to a target page by marking transaction table entries valid or invalid based on mappings to virtual pages in kernel virtual memory address space
US10678700B2 (en) CPU security mechanisms employing thread-specific protection domains
US7827374B2 (en) Relocating page tables
US8719548B2 (en) Method and system for efficient emulation of multiprocessor address translation on a multiprocessor
US7194597B2 (en) Method and apparatus for sharing TLB entries
EP1701268B1 (en) Method and system for a guest physical address virtualization in a virtual machine environment
JP4906275B2 (ja) ページング可能モード仮想環境でのデータ転送を容易にするシステム、およびコンピュータ・プログラム
US7165164B2 (en) Method and apparatus including heuristic for sharing TLB entries
JP2986075B2 (ja) ローカル・オブジェクト・アドレス及びグローバル・オブジェクト識別子を結合して単一オブジェクト・ポインタにするためのシステム
US7502872B2 (en) Method for out of user space block mode I/O directly between an application instance and an I/O adapter
JP2575541B2 (ja) 分散キャッシュの階層無効化方法
US8386750B2 (en) Multiprocessor system having processors with different address widths and method for operating the same
US7849228B2 (en) Mechanisms for creation/deletion of linear block address table entries for direct I/O
US8006055B2 (en) Fine granularity hierarchiacal memory protection
US8327084B2 (en) Method and apparatus to trigger synchronization and validation actions upon memory access
US9146847B2 (en) Optimizing for page sharing in virtualized java virtual machines
US20050193169A1 (en) Memory management
US20070005815A1 (en) System and method for processing block mode I/O operations using a linear block address translation protection table
US8996834B2 (en) Memory class based heap partitioning
JP5063131B2 (ja) 別のプロセスのプロセス・ローカル・ストレージにアクセスする方法、装置、コンピュータ・プログラム、およびコンピュータ実装方法
US20060265522A1 (en) System and method for query/modification of linear block address table entries for direct I/O
US20080320459A1 (en) Method And Systems For Providing Concurrency Control For Addressable Entities
US8886867B1 (en) Method for translating virtual storage device addresses to physical storage device addresses in a proprietary virtualization hypervisor
US7444636B2 (en) Method and system of determining attributes of a functional unit in a multiple processor computer system
US9652296B1 (en) Efficient chained post-copy virtual machine migration

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110531

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110825

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110825

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20110825

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110825

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120306

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120306

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120312

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: 20120711

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120711

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20120711

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: 20120807

R150 Certificate of patent or registration of utility model

Ref document number: 5063131

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150817

Year of fee payment: 3