JPH08506676A - Computer workstation with demand paged virtual memory - Google Patents

Computer workstation with demand paged virtual memory

Info

Publication number
JPH08506676A
JPH08506676A JP6518370A JP51837094A JPH08506676A JP H08506676 A JPH08506676 A JP H08506676A JP 6518370 A JP6518370 A JP 6518370A JP 51837094 A JP51837094 A JP 51837094A JP H08506676 A JPH08506676 A JP H08506676A
Authority
JP
Japan
Prior art keywords
page
application
pages
workstation
running
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.)
Pending
Application number
JP6518370A
Other languages
Japanese (ja)
Inventor
フランディーン,ジェームズ・ダブリュ
Original Assignee
ユニシス・コーポレイション
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 ユニシス・コーポレイション filed Critical ユニシス・コーポレイション
Publication of JPH08506676A publication Critical patent/JPH08506676A/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms

Abstract

(57)【要約】 複数のワークステーション(WS♯1−WS♯N)を含むCTOS(登録商標)ネットワーク(図1)は、大きな仮想メモリがCTOSワークステーション(図2)上の複数の同時に動作するアプリケーション(図2のA1、A2、A3)の各々に能率的に設けられることを可能にする態様で、透過的にネットワークを介する仮想デマンドページングを提供する。ワークステーション上で動作する各アプリケーションに対しては、割当ページ(図4のPgl−PgN)、および周知のクロックアルゴリズムに基づいて動作する局部クロック(図4)が設けられる。局部的方式および大域的方式の独自の組合せがページ置換えに使用されその結果利用可能なメモリページを大幅に能率よく管理できる。 (57) [Summary] In a CTOS (registered trademark) network (FIG. 1) including a plurality of workstations (WS # 1-WS # N), a large virtual memory operates on a plurality of CTOS workstations (FIG. 2) simultaneously. The virtual demand paging is provided transparently through the network in a manner that allows it to be efficiently provided to each of the applications (A1, A2, A3 in FIG. 2). For each application running on the workstation, there is an assigned page (Pgl-PgN in FIG. 4) and a local clock (FIG. 4) operating according to a well-known clock algorithm. A unique combination of local and global schemes is used for page replacement so that the available memory pages can be managed significantly more efficiently.

Description

【発明の詳細な説明】名称 デマンドページド仮想メモリを有するコンピュータワークステーション この発明は、一般的にコンピュータワークステーション中にデマンドページド 仮想メモリを提供するための改良された方法および装置に関する。 現代のワークステーションは、典型的には複数のアプリケーションを一度に実 行することができる。各アプリケーションは通常、そのアプリケーションを実行 するためにそれ自身のメモリを要する。実行中のアプリケーションがワークステ ーションの利用可能なメモリのすべてを使い果たすと、アプリケーションは大抵 終了するようにされ、そのため十分なメモリが利用可能になったときにアプリケ ーションが再実行されることが必要になることがある。複数のアプリケーション を実行するワークステーションにおいておこり得るさらなる問題として、新しい アプリケーションがワークステーションで開始され利用可能なメモリが不十分で あるとき、新しいアプリケーションが実行することを可能にするために、実行中 のアプリケーションが強制的に終了させられかつスワップアウトされることがあ る、ということがある。そのような状況では、ワークステーションは、ユーザが 同時に実行しようと意図するすべてのアプリケーションを実行するに十分なメモ リを提供することが重要になる。結果として、ワークステーションには通常、ワ ークステーションのメモリが利用超過になることなく、ユーザが同時に実行する ことを望むすべてのアプリケーションを実行するに十分な全メモリが提供されな ければならない。 コンピュータワークステーションに利用可能なメモリを増やす1つの既知の方 法は、ワークステーションがワークステーションの主メモリにおいて現在利用可 能でないメモリを使用することを可能にする仮想メモリ構成を提供することであ る。たとえば、ワークステーションの主メモリが予め規定された数のページを記 憶することができ、それらのうちの1つまたはそれ以上が、たとえばワークステ ーションに取付けられたディスクドライブ上に含まれるページとスワップされ得 る、ページング構成を使用することが既知である。ワークステーション上で実行 するアプリケーションがワークステーションの主メモリ中に「存在しない」ペー ジを要求すると、ページフォールトとして一般に知られている状況が起こる。ワ ークステーションのオペレーティングシステムは、「存在しない」ページをディ スクからワークステーションの主メモリのフリーページ(すなわち、現在使用さ れていないページ)中に読取ることによって、このページフォールトを解決する 。ワークステーションがフリーページを有していなければ、「存在しない」ペー ジはワークステーションのメモリ中のページと置換わるようにされる。置換えら れる特定のワークステーションページ は、必要とされそうにないページを置換えのために選ぼうとするアルゴリズムに 基づいて決定される。この目的のための1つの既知のアルゴリズムは、最も長く 使用されていないページに基づいてワークステーションの主メモリ中のページを 置換える「リーストリーセントリーユーズド」(“least recently used ”) (LRU)である。このアルゴリズムは典型的には、使用に基づいてページをリ ンクするスタックを提供することによって実現される。 そのような(LRU)アルゴリズムの大きな欠点は、実現のためにかなりの処 理オーバヘッドを要することである。さらに、「リーストリーセントリーユーズ ド」アプローチは、実行中のアプリケーションからページが不適当な時間に置換 えられることを引き起こし得るので、このLRUアルゴリズムはワークステーシ ョンが複数のアプリケーションを実行しているときにはうまく動作しない。 別の既知のタイプのページ置換えアルゴリズムは一般的に「クロック」アルゴ リズムと呼ばれ、このアルゴリズムではメモリページは(時計の周りと同様に) 単一の循環リスト状に配置される。クロックポインタ(または針)は、最後に置 換えられたページを指し、かつアルゴリズムが次の置換えページを見つけるため に起動されると時計回りに移動する。ページが置換えのテストを受けるとき、対 応のページテーブルエントリ中のアクセスビットがテストされリセットされる。 ページが最後のテスト以後参照されたこ とがあれば、そのページは現在のワーキングセットの一部であると考えられ、ポ インタは次のページに進む。ページがアクセスされておらず、「ダーティ」でな ければ(すなわちそのバックアップ記憶に書戻される必要がなければ)、それは 置換えに適している。このクロックアルゴリズムはLRUアルゴリズムほどオー バヘッドを要しないが、複数のアプリケーションを同時に実行するワークステー ションに対しては依然としてうまく動作しない。 発明の概要 この発明の目的は、広くは、複数のアプリケーションを実行することができる ワークステーション中にメモリを提供するための改良された方法および装置を提 供することである。 前掲の目的に従ったこの発明のより特定的な目的は、複数のアプリケーション を実行するワークステーションにデマンドページド仮想メモリを提供することで ある。 前掲の目的の1つまたはそれ以上に従ったこの発明の別の目的は、複数のワー クステーションを含むネットワークにおいて接続されたワークステーションにデ マンドページド仮想メモリを提供することである。 前掲の目的の1つまたはそれ以上に従ったこの発明のさらなる目的は、複数の ワークステーションを含むCTOSネットワーク中にデマンドページド仮想メモ リを提供することである。 前掲の目的を達成する本願発明の特定の好ましい実施例を、ネックワーキング 能力がオペレーティングシステム中に組込まれたワークステーションのCTOS ネットワークに適用されたものとして説明する。このタイプのオペレーティング システムは、ユニシスコーポレーション、ペンシルベニア、ブルーべル(Unysis Corporation,Blue Bell,Pennsylvania)から現在入手可能であり、登録商標 CTOS(登録商標)と称する。CTOSのハードウェア、ソフトウェア、およ びプログラミングの詳細はユニシスコーポレーションから入手可能である。さら に、CTOSの基本的な説明は、E.I.ミラー(E.I.MIller)らによる、1 991年、ニュージャージー、エングルウッドクリフ、プレンティスホール(Pr entice Hall,Englewood Cliffs,New Jersey)の Exploring CTOS に見受けられ る。この本の内容はここに援用する。 述べられた好ましい実施例において、仮想デマンドページド仮想メモリがCT OSオペレーティングシステム中のワークステーションに透過的に設けられる。 ワークステーション上で実行する各アプリケーションには割当られたページおよ び局部クロックが与えられる。能率的な非常に大きな仮想メモリを使用するデマ ンドページングが、ワークステーション上で動作する複数のアプリケーションの 各々に境い目なく設けられることを可能にするような形で、局部的方式および大 域的方式の独自の組合せがページ置換え に使用される。さらに、ワークステーションに存在しないページは、サーバにあ るディスクドライブからネットワークを介して透過的に得られる。これは、所望 であればディスクを持たないCTOSワークステーションの使用を容易にする。 この発明の特定的性質、ならびにその他の目的、特徴、利点、および使用は、 添付図面と関連した好ましい実施例の以下の説明から明らかになるであろう。 図面の簡単な説明 図1は、複数のワークステーションを含むCTOSクラスタのブロック図であ る。 図2は、この発明に従ったCTOSワークステーションのデマンドページド仮 想メモリを有するCTOSワークステーションの好ましい実施例を示すブロック および概略図である。 図3は、図2におけるCTOSワークステーション上で動作する各アプリケー ションによって使用される典型的なページテーブルを示す図である。 図4は、図2においてCTOSワークステーション上で動作する各アプリケー ションに設けられた局部クロックの構成を示す図である。 図5は、図4に示された局部クロックの動作を示すフロー図である。 図6は、アプリケーションが「存在しない」メモリペー ジを要求した結果としてのページフォールトの発生を示すフロー図である。 図7は、ページフォールトの発生に応答して起こる動作を示すフロー図である 。 図8は、ページフォールトを引き起こしたアプリケーションがその割当ページ の最大数に達したときにページフォールトがどのように扱われるかを示すフロー 図である。 図9は、ページフォールトを引き起こすアプリケーションがそのページ最大値 に達していないがそのワークステーションが割当可能なページの最大数を使い果 たしてしまったときにページフォールトがどのように扱われるかを示すフロー図 である。 好ましい実施例の説明 図の全てにおいて、同じ参照番号および文字は同じ要素に対応する。 はじめに、図1を参照して、N個のデスクトップワークステーションWS#1 …WS♯Nのネットワークを含むCTOSクラスタが示されており、ワークステ ーションの1つ(たとえば、WS#1)がサーバワークステーションとして指定 されているものとする。CTOSはこれらのワークステーション上でIntel (登録商標)の80X86マイクロプロセッサファミリを使用して動作する。C TOSは、ユーザには透過的である組込みネットワーキング能力を有するモジュ ール型メッセージベースのオペレーティ ングシステムである。 図1に示されるCTOSクラスタは、RS−422/485接続を用いた簡単 なバストポロジーBによって実現される。代替的には、CTOSクラスタは、米 国特許第4,918,688号において説明されたようなツイストペア(電話配 線)を使用して実現され得る。 CTOSは非常に小さなカーネル、すなわち基本的演算の一群を有する。CT OSシステム環境のほとんどはシステムサービスと呼ばれるモジュールからなる 。これらのシステムサービスは、資源(ファイルシステム、通信、など)を管理 し、かつアプリケーションプログラム処理によって、および他のシステムサービ ス処理によって要求されるサービスを提供する。 CTOSを実行するシステムは複数のプロセスすなわち実行のスレッドを有す る。プロセスとは、独立した実行のスレッドであって、そのスレッドに必要なハ ードウェアおよびソフトウェアのコンテキストを伴う。メッセージは交換部を介 して1つのプロセスから別のプロセスに渡される。交換部は、プロセスがメッセ ージを受信するのを待ったり、メッセージが処理されるのを待つために置かれた りする郵便箱に似ている。各々のプロセスにはそれが生じるとき交換部を割当て られる。CTOSは、最もよく使用されるCTOSメッセージである特別なタイ プのメッセージ、すなわちサービスの要求を使用する。これらの要求は、所望の システムサービスを特定する要求コードを有する要求ブロックヘッダを含む特別 な定様式メッセージであって、サービスによって必要とされる他の情報すなわち 応答をどこに送るべきか、要求を誰が送っているのかなどの情報もまた伴う。C TOSカーネルの助けによって、要求はネットワークを介してユーザまたはアプ リケーションプログラムに対して透過的に移動してどのような特別なサービスを も探しあてる。 CTOSワークステーション上で動作するアプリケーションは複数のプロセス を含み得る。たとえば、電子メールアプリケーションは典型的には少なくとも2 つのプロセスを有し得る。一方のプロセスはユーザがメールメッセージを編集す るのを可能にし、他方の処理は到着メールを監視する。これらの電子メールプロ セスは互いにワークステーションマイクロプロセッサの使用をめぐって競合し、 さらに(ワードプロセッサアプリケーションおよびコンパイラアプリケーション などの)他の実行中のアプリケーションからのプロセスとも競合する。CTOS ワークステーションは典型的には一つのマイクロプロセッサ(たとえば、804 86Intel(登録商標)プロセッサ)しか含まないので、複数のアプリケー ションが同時にワークステーション上で動作することを可能にするためにプロセ ススケジューリングが必要である。これはCTOSカーネルスケジューラによっ て行なわれる。CTOS内の各プロセス(実 行のスレッド)は優先順位を割当てられ、かつその優先順位に基づいてマイクロ プロセッサによって実行をスケジュールされる。プロセススケジューリングはイ ベントによって駆動される。プロセスの実行の間に入力/出力イベントなどのイ ベントが起こるときはいつでも、実行中のプロセスは優先順位のより高いプロセ スの犠牲となって、プロセッサの制御を失う。このタイプのスケジューリングは イベント駆動の優先順位付スケジューリングと呼ばれる。 CTOSにおいて、オペレーティングシステムに通常関連する機能は、資源を 管理しかつアプリケーションプログラムプロセスおよび他のシステムサービスプ ロセスによって要求されるサービスを提供するシステムサービスによって行なわ れる。それらは前述のメッセージを使用してそれらのアプリケーションプログラ ムクライエントと通信する。 CTOSシステムサービスの例として、ディスクファイルのオープンまたはクロ ーズまたはキーボード入力の受け入れが含まれる。それらの標準メッセージベー スのインタフェースのために、システムサービスは所望にしたがってダイナミッ クにロードされたり、置換えられたり、または取除かれたりし得る。CTOSオ ペレーティングシステム中にシステムサービスを提供する態様はCTOSに精通 している当業者には周知である。 CTOSの組込みネットワーキングによって可能になる特定の利点は、システ ムサービスがネットワークを介して そのサービスを要求するプロセスに対して透過的に動作し得ることである。たと えば、1つのワークステーション上のアプリケーションプロセスは、システムサ ービスがどこに存在するのかという知識がなくともあるジョブを行なわせる要求 メッセージをシステムサービスに送り出すことができる。サービスがローカルワ ークステーション上に存在しなければ、要求メッセージはネットワークを介して サービスが存在するワークステーションに自動的に送られる。応答メッセージは 同様にして戻ってくる。 先行技術のCTOSシステムでは、ワークステーション上で動作している各ア プリケーションは、ワークステーションメモリの特定の割当てられたパーティシ ョン中に存在する。加えて、ワークステーションメモリの特定の部分がアプリケ ーションの実行中に使用するために各アプリケーションに割当てられる。仮想デ マンドページングが、80386Intel(登録商標)(およびそれより後の )マイクロプロセッサを使用するCTOSシステム上に設けられ得ることは一般 的に認められてきたが、全体の処理能力が十分強化されるとは考えられていなか ったので、そうしたものは提供されなかった。この発明によって提供される特定 の仮想デマンドページングは他のタイプのオペレーティングシステムにも適用可 能であるが、CTOSシステム中に使用されるとき特に有利である。なぜならそ れは複数のアプリケーションを実行しているワークステーションに おけるCTOSの処理能力をかなり向上させるからである。 この発明に従ったCTOSワークステーションに仮想デマンドページングを提 供するための好ましい態様がこれから説明される。好ましくは、このページング 能力はシステムサービスとしてCTOSに与えられ、ワークステーションにて動 作するすべてのアプリケーションによって使用される。この発明に従った仮想デ マンドページングを実現するためにそのようなCTOSシステムサービスがどの ように設計され得るがはここに与えられる説明から明らかになるであろう。この 目的のために、利用可能なメモリは全てたとえば4KB(4000バイト)ペー ジに分割されていると考えることができる。 図2は、主メモリMおよび局部ディスクDを有するCTOSワークステーショ ンWS上で動作する、3つのアプリケーションA1、A2およびA3、ならびに それらの関連のページを概略的に示す。たとえば、A1はワードプロセッサアプ リケーションプログラムであって、A2は(プログラマによってプログラム開発 に使用されるような)コンパイラアプリケーションプログラムであって、A3は メッセージを送受信するためのメールプログラムであり得る。 各アプリケーション(A1、A2、A3)にはそれぞれのページテーブル(P 1、P2、P3)およびそれぞれの局部クロック(C1、C2、C3)が与えら れている。各アプリケーションには典型的にはそれが実行の間に使用し 得る最大数の割当て可能なメモリページが与えられる。たとえば、ワードプロセ ッサアプリケーションプログラムA1には最大100の割当ページが与えられ、 コンパイラアプリケーションプログラムA2には最大70の割当ページが与えら れ、メールアプリケーションプログラムA3には最大50の割当ページが与えら れる。メモリMが全部で120の割当可能なページを有するものとすると、アプ リケーションがその最大数のページを割当てられているかどうかにかかわらず、 いかなるときもすべての実行中のアプリケーションに割当てられるページの合計 は120ページを超えることはできない。図2におけるワークステーションWS はまた、ページ割当を把握するためのフリーページリストFPL、ダーティなペ ージをクリーンにするためのクリーニングキューCQ、および相対的なアプリケ ーションアクティビティを示すためのアクティビティキューAQを示すことに注 目されたい。これらはさらに以下で説明される。 図3は、各アプリケーションによって使用され得る典型的なページテーブル( P1、P2、P3)を示す。示されているように、ページテーブル中の各エント リは、割当てられたメモリページを特定するページ特定データpi、ページがそ のアプリケーションによって最後のテスト以来参照されたかどうかを示すアクセ スビットai、およびページがディスクドライブなどのそのソース位置に書戻さ れな ければならない書込データを含むかどうかを示す「ダーティ」ページビットdi を含む。各ページテーブルエントリはまたoiによって示される他の情報も含み 得る。 CTOSはアプリケーションが開始するときに、最大数の割当可能なページを アプリケーションに割当てる。CTOSはまたその時に置換えが要求されるとき アプリケーションのどのページが置換えられるべきかを決定するのに使用するた めに、アプリケーションのための局部クロックを生成する。そのような局部クロ ックの基本的な構成が図4に概略的に示されており、メモリページpg1、pg 2、…pgNがアプリケーションに割当てられたページを示し、かつ時計の周り のように循環リストに配置される。割当メモリページの数がそのアプリケーショ ンの最大割当て可能なページを超えることは許されない。クロックポインタ(ま たは針)cpは最後に置換えられたページを指し、置換え可能なページを探すよ うに局部クロックが起動されると時計回りに進む。 置換え可能なページのための局部クロックサーチの間の動作が図5にフロー図 によって示されている。クロックポインタcpが次のページに進むと(ステップ 500)、対応のページテーブルエントリのアクセスビットaiがセットされて いるか否かがテストされ(ステップ502)、そのページが最後のテスト以来そ のアプリケーションによって参照されたかどうかを判断する。このアクセスビッ トai がセットされている場合(ステップ502)、そのページはそのアプリケーシ ョンの現在アクティブであるワーキングページの1ページであると考えられ、そ のため置換えには適格でない。そのような場合、このアクセスビットaiはリセ ットされ(ステップ504)、フロー図はそのサーチを続けるためにステップ5 00に戻る。 一方、次のページのアクセスビットaiがステップ502においてセットされ ていない場合、ダーティページビットdiがセットされているか否かが調べられ る(ステップ506)。ビットdiがセットされておらず、ページがクリーンで ある(すなわち、それはディスクなどのそのソース位置に書戻される必要はない )ことが示されている場合、ページは置換えに適格であると指定される(ステッ プ506)。しかしながら、ステップ506において、ビットdiがセットされ 、ページはダーティであると示されている場合、そのページはクリーニングキュ ーCQ(図2)上に置かれ、フローはサーチを続けるためにステップ500に復 帰する。CQにおけるあるページが他に先行してクリーンにされるように、クリ ーニングキューCQにおけるページには優先順位が与えられ得る。ページがクリ ーンにされた後、そのそれぞれのアプリケーションのページテーブルにおけるそ のビットdiはリセットされ、ページが現在クリーンであることを示す。 次に説明されるのは、図4および5に関連して上述され たように、実行中のアプリケーションに局部クロックを使用するこの発明に従っ た、大域的および局部的ページ割当方式の組合せの好ましい実施例である。この 目的のために、前述したように、最大120の割当可能なページを有するCTO Sワークステーションが、それぞれ割当ページ最大100、50、および30を 有するワードプロセッサアプリケーションA1、コンパイラアプリケーションA 2、およびメールアプリケーションA3を同時に実行していると仮定する。これ らのアプリケーションの3つすべてがワークステーション上で動作しているとき 、アプリケーションの1つはフォアグラウンド(フォアグラウンドアプリケーシ ョンとは、キーボード、および通常ディスプレイスクリーンの少なくとも一部分 を制御するアプリケーションをいう)において動作し、他の2つのアプリケーシ ョンはバックグラウンドで動作していることが理解されるだろう。たとえば、ワ ードプロセッサアプリケーションは、ユーザがキーボードおよびディスプレイを 制御することを可能にするフォアグラウンドで動作し、それによって他のアプリ ケーションが実行していないかのようにワードプロセシング動作を行なうことが できる。コンパイラおよびメールアプリケーションはそのときバックグラウンド で動作しているだろう。たとえば、コンパイラアプリケーションは、ユーザによ って以前に開発された専用プログラムをコンパイルし、一方メールアプリケーシ ョンはメールメッセージを受 取るのを待っていることができる。メールメッセージが到着すると、スクリーン 上でマーカを点滅させることによってユーザにこのメッセージの受信を知らせる ことができる。そうすればユーザは、適切なキーボード入力をすることによって 、メールアプリケーションプログラムに切換え、メッセージを読取ることができ る。その場合メールアプリケーションがフォアグラウンドにあり、一方ワードプ ロセッサアプリケーションはコンパイラアプリケーションとともにバックグラウ ンドで動作していることになる。 図6のフロー図に示されているように、実行中のアプリケーションの1つがメ モリアクセスを要求するときはいつでも、ページテーブルが照合され(ステップ 600)、アクセスされるべき情報を含むページがアプリケーションの割当てら れたページの1つに存在するかどうかを判断する。ページが存在しているとわか れば(ステップ602)、ページはアプリケーションによってアクセスされる( ステップ604)。そうでなければ、ページフォールトが起こり、ページフォー ルトがどのように処理されるかを示す図7のフロー図に動作が進むことが引き起 こされる。 図7に示されているように、ページフォールトの発生は仮想デマンドページン グサービスを引き起こし(ステップ700)、仮想デマンドページングサービス はフォールトを引き起こしたアプリケーションの実行を中断する(ステップ70 2)。この後ページングサービスがアプリケーシ ョンまたはワークステーションいずれかのページ最大値に達したかどうかをチェ ックし判断する(ステップ704)。もし達していなければ、ページングサービ スは、フリー(割当てられていない)ワークステーションメモリページ(図2の フリーページリストFPLにおいて示されている)が、フォールトが生じたアプ リケーションに割当てられるようにし、その後に続いて、要求されたページがこ の新しく割当てられたページ中に読込まれ(ステップ706)、アプリケーショ ンがその後再開する(ステップ708)。CTOSシステムが使用されているの で、このページはワークステーションの局部ディスクから、またはネットワーク を介してサーバワークステーションから、透過的に得られるという効果を奏する 。 一方、図8におけるステップ704において、アプリケーションまたはワーク ステーションいずれかのページ最大値に達したことがわかると、ページ置換えが 要求され、ページ最大値がアプリケーション(図8)に対してのものであるかワ ークステーション(図9)に対してのものであるかに依存して、図8または図9 に示されたようにページ置換えが行なわれる。図8に示されたアプリケーション ページ最大値に達した状況をまず考える。 図8に示されているように、アプリケーションがその割当ページ最大値に達し た状況に対するページ置換えは、アプリケーションの局部クロックにおける置換 え可能なペー ジのサーチから始まる(ステップ800)。このサーチは図4および5に関連し て前述されたように達成される。置換え可能なページがアプリケーションの局部 クロックにあることがわかると(ステップ802)、アプリケーションによって 要求された「存在しない」ページが(たとえば局部またはサーバディスクから) 得られ、かつ指定された置換え可能なページの中に読込まれ(ステップ804) 、それに続いてアプリケーションが再開される(ステップ806)。 一方、図7のステップ802において、アプリケーションの局部クロックの周 りを1周した後置換え可能なページがないことがわかると、局部クロックの2周 目が開始される(ステップ808)。第1周目の間には各ページアクセスビット aiがリセットされたので、第2周目の置換え可能なページのサーチは最初に生 じるクリーンなページ(すなわちdiがセットされていないページ)の発見に基 づく。クリーンなページが発見されると、それは置換え可能なページとして指定 される(ステップ810)。フロー図はその後、前述されたステップ804およ び806に進み、「存在しない」ページが読込まれ、見つけられた置換え可能な ページに置換えられ、アプリケーションが再開する。 図8に示されているように、ステップ810によって、アプリケーションの局 部クロックの第2周目の間にクリーンなページが見つけられなかったことが示さ れると、フロ ーはその後ステップ812に進み、クリーニングキューCQ(図2)内にアプリ ケーションがクリーンにされるのを待ち得るページがあるかどうかが判断される 。もしそうであれば、ページがクリーンにされるまでアプリケーションは待機す る(ステップ814)。クリーンにされたページはその後置換え可能であるとし て指定され、フローはその後前述のようにステップ804および806に進み、 要求された「存在しない」ページが読込まれ、この指定された置換え可能なペー ジに置換えられ、さらにアプリケーションが再開される。しかしながら、ステッ プ812によって、アプリケーションが待ち得るクリーンにされるページがない ことが示されると、エラー表示が与えられる。 図9は、(たとえアプリケーションの割当てられたぺージ最大値に達していな いとしても)ワークステーションがその最大数の割当可能なページを使い果たし てしまったためにページフォールトが満たされない、第2のタイプの置換え状況 に対してページ置換えがどのように処理されるかを示す。前の例では、ワークス テーションは最大120の割当可能なページを有し、一方でワードプロセッサア プリケーションA1には最大100の割当ページが与えられており、コンパイラ アプリケーションA2には最大50の割当ページが与えられており、さらにメー ルアプリケーションA3には最大30の割当ページが与えられていると仮定され たことが思い出されるであろう。たとえば、アプリケ ーションA1、A2、およびA3にそれぞれ80ページ、30ページ、および1 0ページが既に割当てられており、さらにワードプロセッサアプリケーションA 1が「存在しない」ページを要求するためにページフォールトが生じるとすると 、ワークステーションのページ最大値120ぺージ(80+30+10)に既に 達してしまっているのでワークステーションはこのページフォールトを満たすこ とができない。これは図9が関連しているページ置換え状況のタイプである。 基本的には、図9のフローでは、ページを別のアプリケーションから奪おうと 試みられる。この目的のために、ワークステーションアクティビティキューAQ (図2)が第1にチェックされ(ステップ900)、ワークステーション上で動 作している他のアプリケーションのうちどれが最もアクティブでないかが決定さ れる。説明されている好ましい実施例では、このアクティビティキューAQは、 どのアプリケーションに最も長い期間ページフォールトが生じていないかに基づ いて、実行中のアプリケーションを順番に並べるように設計される。たとえば、 ワードプロセッサアプリケーションA1に最も近い時点でページフォールトが生 じ、メールアプリケーションA3に最も長い期間ページフォールトが生じていな いとすれば、A3が最もアクティブでないアプリケーションであり、その後A2 が続き、最後にA1が続く。そのような場合、図9のステップ90 0は、A3を最もアクティブでないアプリケーションとして選択し、それからペ ージを奪おうとする。 図9のステップ902は、ステップ900において選択された最もアクティブ でないアプリケーションがフォアグラウンド(すなわち現在ユーザによって使用 されている)状態であるかどうかをチェックし、もしそうであるならば、ページ を奪うために、次にアクティブであるアプリケーションを選ぶ(ステップ904 )。フォアグラウンドアプリケーションを使用しない理由は、フォアグラウンド アプリケーションはそれがフォアグラウンドで使用されるためにそのページへの アクセスをいつ要求するとも限らないからであって、そのためそのページの1つ が奪われるようにされるべきではない。 そのようにしてページが奪われるべきアプリケーションを特定した(ステップ 900、902、904)後、図9のフローは選ばれたアプリケーションの局部 クロックに進み(ステップ906)、置換え可能なページのサーチを行なうが、 そのサーチは図4、5、7に関連して前述されたものと同じ態様で達成される。 このサーチはさまざまな点で修正されてもよい。たとえば、図9のステップ90 6の目的のためには、局部クロックページ置換えサーチは局部クロックの1周の みに限定されてもよい。 置換え可能なページが見つかると(ステップ908)、フローはステップ91 0に進み、ステップ906において 見つけられた置換え可能なページが奪われ、かつページフォールトが生じたアプ リケーションに割当てられる。要求された「存在しない」ページはその後この新 しく割当てられたページ中に読込まれ、ページフォールトが生じたアプリケーシ ョンはその後再開される(ステップ912)。 ステップ908において置換え可能なページが見つからなければ、別のアプリ ケーションからページを奪う試みが行なわれる(ステップ914)。これは好ま しくは、フォアグラウンドアプリケーションではない、その次にアクティブでな いアプリケーションから始まり、置換え可能なページが見つかるまで他のアプリ ケーションへと続けて(ステップ906において行なわれた態様と同じ態様で) 他のアプリケーションの局部クロックをサーチすることによって達成される。フ ローはその後910に戻り、その奪う動作を完了する。置換え可能なページがま だ見つからなければ(ステップ916)、図7に関連して前述されたたように、 ページフォールトが生じたアプリケーションの局部クロックにおいて置換え可能 なページを見つける試みが行なわれる(ステップ918)。これも置換え可能な ページを見つけるに至らなければ(ステップ920)、エラー表示が与えられる 。代替的には、前述したように、他のアプリケーションに対してもう一度サーチ が行なわれ得る。なぜなら以前に置換え可能でなかったページも置換え可能にな ることがあるからである。そのような繰り返しサーチは、 フォールトが生じたアプリケーションの局部クロックをサーチする前に行なわれ てもよい。 CTOSシステムにおいて大域的および局部的仮想デマンドページングが組合 せられた上述の説明は単なる例であることが理解されるべきである。というのも 構成、配置、および用途における多くの変更および変形がこの発明の範囲内で可 能であるからである。たとえば、この発明はCTOS以外のオペレーティングシ ステムに適用可能である。また、かなり異なった実現化例およびアルゴリズムが この発明の真の範囲および精神を離れることなく与えられ得る。したがって、こ の発明は添付請求の範囲の範囲内にあるすべての可能な変更および変形を含むと 考えられ得る。Detailed Description of the Invention name FIELD OF THE INVENTION This invention relates generally to improved methods and apparatus for providing demand paged virtual memory in computer workstations. Modern workstations are typically capable of running multiple applications at once. Each application typically requires its own memory to run that application. When a running application exhausts all of the workstation's available memory, the application is often forced to exit, which requires the application to be re-executed when sufficient memory becomes available. Sometimes. A further problem that can occur on workstations running multiple applications is to allow new applications to run when they are started on the workstation and insufficient memory is available. Sometimes the application is forced to terminate and swapped out. In such situations, it is important that the workstation provide enough memory to run all the applications that the user intends to run at the same time. As a result, workstations typically must be provided with sufficient total memory to run all the applications that the user wishes to run concurrently, without the workstation's memory being overutilized. One known way to increase the memory available to a computer workstation is to provide a virtual memory configuration that allows the workstation to use memory that is not currently available in the workstation's main memory. For example, a workstation's main memory may store a predefined number of pages, one or more of which may be swapped with pages contained on, for example, a disk drive attached to the workstation. It is known to use a paging arrangement. When an application running on a workstation requests a page "not present" in the workstation's main memory, a condition commonly known as a page fault occurs. The workstation operating system resolves this page fault by reading the "non-existent" page from disk into a free page in the workstation's main memory (ie, a page that is not currently in use). If the workstation does not have free pages, the "non-existing" page is made to replace the page in the workstation's memory. The particular workstation page to be replaced is determined based on an algorithm that attempts to select a page that is unlikely to be needed for replacement. One known algorithm for this purpose is "least recently used" (LRU), which replaces pages in the workstation's main memory based on the least recently used page. is there. This algorithm is typically implemented by providing a stack that links pages based on usage. A major drawback of such (LRU) algorithm is that it requires significant processing overhead to implement. In addition, the "Leasly Sentry Used" approach can cause pages to be replaced from running applications at inappropriate times, so this LRU algorithm does not work well when a workstation is running multiple applications. . Another known type of page replacement algorithm is commonly referred to as the "clock" algorithm, in which memory pages are arranged in a single circular list (as well as around a clock). The clock pointer (or hand) points to the last replaced page, and moves clockwise when the algorithm is activated to find the next replacement page. When a page undergoes a replacement test, the access bits in the corresponding page table entry are tested and reset. If the page has been referenced since the last test, the page is considered to be part of the current working set and the pointer advances to the next page. If the page has not been accessed and is not "dirty" (ie it does not need to be written back to its backup store) then it is suitable for replacement. Although this clock algorithm requires less overhead than the LRU algorithm, it still does not work well for workstations running multiple applications simultaneously. SUMMARY OF THE INVENTION It is an object of the present invention, broadly, to provide an improved method and apparatus for providing memory in a workstation capable of executing multiple applications. A more specific object of the present invention in accordance with the foregoing object is to provide demand paged virtual memory to workstations executing multiple applications. Another object of the invention in accordance with one or more of the foregoing objects is to provide demand paged virtual memory to workstations connected in a network including a plurality of workstations. A further object of the invention in accordance with one or more of the above objects is to provide demand paged virtual memory in a CTOS network that includes multiple workstations. A particular preferred embodiment of the present invention that achieves the objects set forth above will be described as applied to a CTOS network of workstations with neckworking capabilities embedded in the operating system. This type of operating system is currently available from Unisys Corporation, Pennsylvania, Blue Bell, Pennsylvania and is referred to as the registered trademark CTOS®. CTOS hardware, software, and programming details are available from Unicisco Corporation. Further, a basic explanation of CTOS is provided by E. I. E.I. MIller et al., 1991, New Jersey, Englewood Cliff, Prentice Hall (Englewood Cliffs, New Jersey) Exploring CTOS Seen in. The contents of this book are incorporated herein by reference. In the preferred embodiment described, virtual demand paged virtual memory is provided transparently to the workstation in the CT OS operating system. Each application running on the workstation is given an assigned page and local clock. The uniqueness of local and global methods in a way that allows efficient demand-paging using very large virtual memory to be seamlessly provided to each of multiple applications running on a workstation. Is used for page replacement. In addition, pages that do not exist on the workstation are transparently obtained over the network from the disk drive at the server. This facilitates the use of a diskless CTOS workstation if desired. The particular nature of the invention, as well as other objects, features, advantages, and uses, will be apparent from the following description of preferred embodiments in connection with the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS FIG. 1 is a block diagram of a CTOS cluster including multiple workstations. FIG. 2 is a block and schematic diagram illustrating a preferred embodiment of a CTOS workstation with demand paged virtual memory of the CTOS workstation according to the present invention. FIG. 3 is a diagram showing a typical page table used by each application running on the CTOS workstation in FIG. FIG. 4 is a diagram showing a configuration of a local clock provided in each application operating on the CTOS workstation in FIG. FIG. 5 is a flow chart showing the operation of the local clock shown in FIG. FIG. 6 is a flow diagram illustrating the occurrence of a page fault as a result of an application requesting a "non-existent" memory page. FIG. 7 is a flow diagram showing operations that occur in response to the occurrence of a page fault. FIG. 8 is a flow diagram showing how page faults are handled when the application that caused the page fault reaches its maximum number of allocated pages. FIG. 9 is a flow diagram showing how page faults are handled when the application causing the page fault has not reached its page maximum but the workstation has exhausted the maximum number of pages it can allocate. Is. DESCRIPTION OF THE PREFERRED EMBODIMENTS In all of the figures, the same reference numbers and letters correspond to the same elements. First, referring to FIG. 1, a CTOS cluster including a network of N desktop workstations WS # 1 ... WS # N is shown, where one of the workstations (eg, WS # 1) is a server workstation. Shall be specified as. CTOS runs on these workstations using Intel's 80X86 microprocessor family. CTOS is a modular message-based operating system with built-in networking capabilities that is transparent to the user. The CTOS cluster shown in FIG. 1 is implemented by a simple bus topology B with RS-422 / 485 connections. Alternatively, the CTOS cluster may be implemented using twisted pair (telephone wiring) as described in US Pat. No. 4,918,688. CTOS has a very small kernel, a group of basic operations. Most of the CT OS system environment consists of modules called system services. These system services manage resources (file systems, communications, etc.) and provide services required by application program processes and by other system service processes. A system running CTOS has multiple processes or threads of execution. A process is a thread of independent execution, with the hardware and software context required for that thread. The message is passed from one process to another via the exchange. An exchange is similar to a mailbox that waits for a process to receive a message or is placed to wait for a message to be processed. Each process is assigned a switch as it occurs. CTOS uses a special type of message, the request for service, which is the most commonly used CTOS message. These requests are specially formatted messages that include a request block header with a request code that identifies the desired system service, where to send the other information or response needed by the service, who should send the request. Information such as whether it is sent is also included. With the help of the CTOS kernel, the request travels transparently to the user or application program over the network to find any special service. An application running on a CTOS workstation may include multiple processes. For example, email applications may typically have at least two processes. One process allows the user to edit the mail message and the other process monitors the incoming mail. These email processes compete with each other for the use of workstation microprocessors and also with processes from other running applications (such as word processor and compiler applications). Since CTOS workstations typically contain only one microprocessor (eg, 80486 Intel® processor), process scheduling is required to allow multiple applications to run on the workstation at the same time. Is. This is done by the CTOS kernel scheduler. Each process (thread of execution) within the CTOS is assigned a priority and is scheduled for execution by the microprocessor based on that priority. Process scheduling is event driven. Whenever an event, such as an input / output event, occurs during the execution of a process, the executing process loses control of the processor at the expense of the higher priority process. This type of scheduling is called event-driven prioritized scheduling. In CTOS, functions normally associated with operating systems are performed by system services that manage resources and provide services required by application program processes and other system service processes. They use the aforementioned messages to communicate with their application program clients. Examples of CTOS system services include opening or closing a disk file or accepting keyboard input. Due to their standard message-based interfaces, system services can be dynamically loaded, replaced, or removed as desired. The manner of providing system services in the CTOS operating system is well known to those skilled in CTOS. A particular advantage enabled by CTOS's embedded networking is that system services can operate transparently over the network to processes that request them. For example, an application process on one workstation can send a request message to a system service to do a job without knowledge of where the system service resides. If the service does not exist on the local workstation, the request message is automatically sent over the network to the workstation where the service resides. The reply message is returned in the same way. In prior art CTOS systems, each application running on a workstation resides in a particular allocated partition of workstation memory. In addition, a particular portion of workstation memory is allocated to each application for use during application execution. It has been generally accepted that virtual demand paging can be provided on a CTOS system using an 80386 Intel (R) (and later) microprocessor, but once the overall processing power is sufficiently enhanced. Was not considered, so they were not offered. The particular virtual demand paging provided by the present invention is applicable to other types of operating systems, but is particularly advantageous when used in a CTOS system. This is because it significantly increases the processing power of CTOS in workstations running multiple applications. A preferred aspect for providing virtual demand paging to a CTOS workstation according to the present invention will now be described. Preferably, this paging capability is provided to CTOS as a system service and used by all applications running on the workstation. It will be apparent from the description provided herein how such a CTOS system service may be designed to implement virtual demand paging according to the present invention. For this purpose, all available memory can be considered to be divided into, for example, 4 KB (4000 bytes) pages. FIG. 2 schematically shows three applications A1, A2 and A3 running on a CTOS workstation WS with a main memory M and a local disk D and their associated pages. For example, A1 may be a word processor application program, A2 may be a compiler application program (as used by programmers for program development), and A3 may be a mail program for sending and receiving messages. Each application (A1, A2, A3) is given a respective page table (P1, P2, P3) and a respective local clock (C1, C2, C3). Each application is typically provided with the maximum number of allocatable memory pages it can use during execution. For example, the word processor application program A1 is provided with a maximum of 100 allocated pages, the compiler application program A2 is provided with a maximum of 70 allocated pages, and the mail application program A3 is provided with a maximum of 50 allocated pages. Assuming that the memory M has a total of 120 allocatable pages, the total number of pages allocated to all running applications at any one time is irrespective of whether or not the application is allocated its maximum number of pages. It cannot exceed 120 pages. The workstation WS in FIG. 2 also shows a free page list FPL to keep track of page allocations, a cleaning queue CQ to clean dirty pages, and an activity queue AQ to show relative application activity. Please pay attention to. These are described further below. FIG. 3 shows a typical page table (P1, P2, P3) that may be used by each application. As shown, each entry in the page table contains page-specific data p that identifies the allocated memory page. i , Access bit a indicating whether the page has been referenced by the application since the last test i , And whether the page contains write data that must be written back to its source location such as a disk drive. i including. Each page table entry is also o i May also include other information indicated by. CTOS allocates the maximum number of allocatable pages to an application when the application starts. CTOS also generates a local clock for the application to use in determining which page of the application should be replaced when replacement is required at that time. The basic structure of such a local clock is shown schematically in FIG. 4, in which the memory pages pg 1, pg 2, ... pg N indicate the pages allocated to the application, and a circular list like a clock. Is located in. The number of allocated memory pages cannot exceed the maximum allocatable pages for the application. The clock pointer (or hand) cp points to the last replaced page and advances clockwise when the local clock is activated to look for a replaceable page. The operation during the local clock search for replaceable pages is illustrated by the flow diagram in FIG. When the clock pointer cp advances to the next page (step 500), the access bit a of the corresponding page table entry i Is set (step 502) to determine if the page has been referenced by the application since the last test. This access bit a i Is set (step 502), the page is considered to be one of the application's currently active working pages and is therefore not eligible for replacement. In such a case, this access bit a i Is reset (step 504) and the flow diagram returns to step 500 to continue its search. On the other hand, the access bit a of the next page i Is not set in step 502, the dirty page bit d i Is checked (step 506). Bit d i Is not set, indicating that the page is clean (that is, it does not need to be written back to its source location, such as disk), then the page is designated as eligible for replacement ( Step 506). However, in step 506, bit d i Is set and the page is shown to be dirty, the page is placed on the cleaning queue CQ (FIG. 2) and flow returns to step 500 to continue the search. Pages in the cleaning queue CQ may be prioritized so that one page in the CQ is cleaned prior to another. After the page has been cleaned, its bit d in its respective application's page table i Has been reset, indicating that the page is now clean. Described next is a preferred combination of global and local page allocation schemes according to the present invention, which uses a local clock for the running application, as described above in connection with FIGS. 4 and 5. This is an example. For this purpose, as mentioned above, a CTO S workstation with a maximum of 120 allocatable pages has a word processor application A1, a compiler application A2 and a mail application with a maximum of 100, 50 and 30, respectively. Assume that A3 is running at the same time. When all three of these applications are running on the workstation, one of the applications is running in the foreground (a foreground application is the application that controls the keyboard and usually at least part of the display screen), It will be appreciated that the other two applications are running in the background. For example, a word processing application can run in the foreground that allows a user to control the keyboard and display, thereby performing word processing operations as if no other application is running. The compiler and mail application will then be running in the background. For example, a compiler application may compile a dedicated program previously developed by a user, while a mail application may be waiting to receive a mail message. When a mail message arrives, the user can be notified of this message by flashing a marker on the screen. The user can then switch to the mail application program and read the message by making the appropriate keyboard input. In that case the mail application is in the foreground, while the word processor application is running in the background with the compiler application. As shown in the flow diagram of FIG. 6, whenever one of the running applications requests a memory access, the page table is looked up (step 600) and the page containing the information to be accessed is retrieved by the application. Determine if it is on one of the allocated pages. If the page is found to exist (step 602), the page is accessed by the application (step 604). Otherwise, a page fault will occur, causing the operation to proceed to the flow diagram of FIG. 7, which shows how the page fault is handled. As shown in FIG. 7, the occurrence of a page fault triggers a virtual demand paging service (step 700), which suspends execution of the faulted application (step 702). After this, the paging service checks and determines whether the page maximum value of either the application or the workstation has been reached (step 704). If not, the paging service allows free (unallocated) workstation memory pages (shown in the free page list FPL of FIG. 2) to be allocated to the faulted application, after which Subsequently, the requested page is read into this newly allocated page (step 706) and the application then resumes (step 708). Since the CTOS system is used, this page has the effect of being obtained transparently from the local disk of the workstation or from the server workstation over the network. On the other hand, if it is found in step 704 in FIG. 8 that the page maximum of either the application or the workstation has been reached, then a page replacement is requested and is the page maximum for the application (FIG. 8)? Depending on whether it is for a workstation (FIG. 9), page replacement is done as shown in FIG. 8 or FIG. Consider first the situation where the application page maximum value shown in FIG. 8 has been reached. As shown in FIG. 8, page replacement for the situation where the application has reached its allocated page maximum begins with a search for replaceable pages in the application's local clock (step 800). This search is accomplished as described above in connection with Figures 4 and 5. Once the replaceable page is found to be in the application's local clock (step 802), the "non-existent" page requested by the application is obtained (eg, from the local or server disk) and designated replaceable page (Step 804), followed by the restart of the application (step 806). On the other hand, in step 802 of FIG. 7, if it is found that there is no page that can be replaced after one round around the local clock of the application, the second round of local clock is started (step 808). Each page access bit a during the first round i Is reset, so the search for the replaceable page on the second lap occurs on the first clean page (ie d i Pages that are not set). If a clean page is found, it is designated as a replaceable page (step 810). The flow diagram then proceeds to steps 804 and 806, described above, where the "non-existent" page is read and replaced with the replaceable page found and the application restarts. As shown in FIG. 8, when step 810 indicates that no clean page was found during the second round of the application's local clock, the flow then proceeds to step 812 where the cleaning queue is It is determined if there are pages in the CQ (FIG. 2) that can wait for the application to be cleaned. If so, the application waits until the page is cleaned (step 814). The cleaned page is then designated as replaceable, and flow then proceeds to steps 804 and 806 as described above to read the requested "nonexistent" page into this designated replaceable page. It is replaced and the application is restarted. However, if step 812 indicates that there are no cleaned pages the application can wait for, an error indication is provided. FIG. 9 illustrates a second type of page fault where the workstation has exhausted its maximum number of allocatable pages (even if the application's allocated page max has not been reached). Show how page replacement is handled for the replacement situation. In the previous example, the workstation has a maximum of 120 allocatable pages, while the word processor application A1 is given a maximum of 100 allocatable pages and the compiler application A2 is given a maximum of 50 allocatable pages. It will be recalled that it was further assumed that the mail application A3 was given a maximum of 30 allocated pages. For example, suppose that applications A1, A2, and A3 are already assigned 80, 30, and 10 pages, respectively, and a page fault occurs because word processing application A 1 requests a "non-existent" page. , The workstation maximum page size 120 pages (80 + 30 + 10) has already been reached, so the workstation cannot satisfy this page fault. This is the type of page replacement situation to which FIG. 9 pertains. Basically, the flow of FIG. 9 attempts to steal the page from another application. To this end, the workstation activity queue AQ (FIG. 2) is first checked (step 900) to determine which of the other applications running on the workstation is least active. In the preferred embodiment described, this activity queue AQ is designed to sequence the running applications based on which application has not had a page fault for the longest period of time. For example, if a page fault occurs closest to the word processing application A1 and no mail application A3 has been page faulted for the longest time, A3 is the least active application, followed by A2, and finally A1. Continue. In such a case, step 900 of FIG. 9 attempts to select A3 as the least active application and then steal the page. Step 902 of FIG. 9 checks to see if the least active application selected in step 900 is in the foreground (ie currently in use by the user) and if so, to steal the page. , Then select the active application (step 904). The reason for not using a foreground application is that the foreground application does not always require access to the page for it to be used in the foreground, so one of the pages should be deprived. is not. After thus identifying the application whose page should be stolen (steps 900, 902, 904), the flow of FIG. 9 proceeds to the local clock of the selected application (step 906) and searches for a replaceable page. However, the search is accomplished in the same manner as described above in connection with FIGS. This search may be modified in various ways. For example, for the purposes of step 906 of FIG. 9, the local clock page replacement search may be limited to only one round of the local clock. If a replaceable page is found (step 908), flow proceeds to step 910 where the replaceable page found in step 906 is robbed and assigned to the application that caused the page fault. The requested "nonexistent" page is then read into this newly allocated page and the application that caused the page fault is then restarted (step 912). If no replaceable page is found in step 908, an attempt is made to steal the page from another application (step 914). This preferably starts with the next inactive application that is not the foreground application and continues to the other applications (in the same manner as done in step 906) until another replaceable page is found. This is accomplished by searching the local clock. The flow then returns to 910 to complete the robbing action. If no replaceable page is found yet (step 916), an attempt is made to find a replaceable page at the local clock of the application that caused the page fault (step 918), as described above in connection with FIG. ). If this also fails to find a replaceable page (step 920), an error indication is given. Alternatively, the search may be performed again for other applications, as described above. This is because pages that were not previously replaceable may become replaceable. Such an iterative search may be performed prior to searching the local clock of the faulted application. It should be understood that the above description of combined global and local virtual demand paging in a CTOS system is merely an example. As many modifications and variations in construction, arrangement, and application are possible within the scope of the invention. For example, the present invention is applicable to operating systems other than CTOS. Also, quite different implementations and algorithms may be provided without departing from the true scope and spirit of the invention. Therefore, this invention may be considered to include all possible modifications and variations that fall within the scope of the appended claims.

【手続補正書】特許法第184条の8 【提出日】1994年9月12日 【補正内容】 得る最大数の割当て可能なメモリページが与えられる。たとえば、ワードプロセ ッサアプリケーションプログラムA1には最大100の割当ページが与えられ、 コンパイラアプリケーションプログラムA2には最大70の割当ページが与えら れ、メールアプリケーションプログラムA3には最大50の割当ページが与えら れる。メモリMが全部で120の割当可能なページを有するものとすると、アプ リケーションがその最大数のページを割当てられているかどうかにかかわらず、 いかなるときもすべての実行中のアプリケーションに割当てられるページの合計 は120ページを超えることはできない。図2におけるワークステーションWS はまた、ページ割当を把握するためのフリーページリストFPL、ダーティなペ ージをクリーンにするためのページクリーニングキューPCQ、および相対的な アプリケーションアクティビティを示すためのアクティビティキューAQを示す ことに注目されたい。これらはさらに以下で説明される。 図3は、各アプリケーションによって使用され得る典型的なページテーブル( P1、P2、P3)を示す。示されているように、ページテーブル中の各エント リは、割当てられたメモリページを特定するページ特定データpi、ページがそ のアプリケーションによって最後のテスト以来参照されたかどうかを示すアクセ スビットai、およびページがディスクドライブなどのそのソース位置に書戻さ れな ければならない書込データを含むかどうかを示す「ダーティ」ページビットdi を含む。各ページテーブルエントリはまたoiによって示される他の情報も含み 得る。 CTOSはアプリケーションが開始するときに、最大数の割当可能なページを アプリケーションに割当てる。CTOSはまたその時に置換えが要求されるとき アプリケーションのどのページが置換えられるべきかを決定するのに使用するた めに、アプリケーションのための局部クロック(図2のC1,C2,C3)を生 成する。そのような局部クロックの基本的な構成が図4に概略的に示されており 、メモリページ、つまりアプリケーションに割当てられたpg1、pg2、…p gNと示されたページが、時計の周りのように循環リストに配置される。割当メ モリページの数がそのアプリケーションの最大割当て可能なページを超えること は許されない。クロックポインタ(または針)cpは最後に置換えられたページ を指し、置換え可能なページを探すように局部クロックが起動されると時計回り に進む。 置換え可能なページのための局部クロックサーチの間の動作が図5にフロー図 によって示されている。クロックポインタcpが次のページに進むと(ステップ 500)、対応のページテーブルエントリのアクセスビットaiがセットされて いるか否かかテストされ(ステップ502)、そのページが最後のテスト以来そ のアプリケーションによって参照されたかどうかを判断する。このアクセスビッ トai がセットされている場合(ステップ502)、そのぺージはそのアプリケーシ ョンの現在アクティブであるワーキングページの1ページであると考えられ、そ のため置換えには適格でない。そのような場合、このアクセスビットaiはリセ ットされ(ステップ504)、フロー図はそのサーチを続けるためにステップ5 00に戻る。 一方、次のページのアクセスビットaiがステップ502においてセットされ ていない場合、ダーティページビットdiがセットされているか否かが調べられ る(ステップ506)。ビットdiがセットされておらず、ページがクリーンで ある(すなわち、それはディスクなどのそのソース位置に書戻される必要はない )ことが示されている場合、ページは置換えに適格であると指定される(ステッ プ508)。しかしながら、ステップ506において、ビットdiがセットされ 、ページはダーティであると示されている場合、そのページはページクリーニン グキューPCQ(図2)上に置かれ(ステップ510)、フローはサーチを続け るためにステップ500に復帰する。PCQにおけるあるページが他に先行して クリーンにされるように、ページクリーニングキューPCQにおけるページには 優先順位が与えられ得る。ページがクリーンにされた後、そのそれぞれのアプリ ケーションのページテーブルにおけるそのビットdiはリセットされ、ページが 現在クリーンであることを示す。 次に説明されるのは、図4および5に関連して上述され たように、各々の実行中のアプリケーションに局部クロックを使用するこの発明 に従った、大域的および局部的ページ割当方式の組合せの好ましい実施例である 。この目的のために、前述したように、最大120の割当可能なページを有する CTOSワークステーションが、それぞれ割当ページ最大100、50、および 30を有するワードプロセッサアプリケーションA1、コンパイラアプリケーシ ョンA2、およびメールアプリケーションA3を同時に実行していると仮定する 。これらのアプリケーションの3つすべてがワークステーション上で動作してい るとき、アプリケーションの1つはフォアグラウンド(フォアグラウンドアプリ ケーションとは、キーボード、および通常ディスプレイスクリーンの少なくとも 一部分を制御するアプリケーションをいう)において動作し、他の2つのアプリ ケーションはバックグラウンドで動作していることが理解されるだろう。たとえ ば、ワードプロセッサアプリケーションA1は、ユーザがキーボードおよびディ スプレイを制御することを可能にするフォアグラウンドで動作し、それによって 他のアプリケーションが実行していないかのようにワードプロセシング動作を行 なうことができる。コンパイラおよびメールアプリケーションはそのときバック グラウンドで動作しているだろう。たとえば、コンパイラアプリケーションは、 ユーザによって以前に開発された専用プログラム をコンパイルし、一方メールアプリケーションはメールメッセージを受 ョンまたはワークステーションいずれかのページ最大値に達したかどうかをチェ ックし判断する(ステップ704)。もし達していなければ、ページングサービ スは、フリー(割当てられていない)ワークステーションメモリページ(図2の フリーページリストFPLにおいて示されている)が、フォールトが生じたアプ リケーションに割当てられるようにし、その後に続いて、要求されたページがこ の新しく割当てられたページ中に読込まれ(ステップ706)、さらにアプリケ ーションがその後再開する(ステップ708)。CTOSシステムが使用されて いるので、このページはワークステーションの局部ディスクから、またはネット ワークを介してサーバワークステーションから、透過的に得られるという効果を 奏する。 一方、図8におけるステップ704において、アプリケーションまたはワーク ステーションいずれかのページ最大値に達したことがわかると、ページ置換えが 要求され、ページ最大値がアプリケーション(図8)に対してのものであるかワ ークステーション(図9)に対してのものであるかに依存して、図8または図9 に示されたようにページ置換えが行なわれる。図8に示されたアプリケーション ページ最大値に達した状況をまず考える。 図8に示されているように、アプリケーションがその割当ページ最大値に達し た状況に対するページ置換えは、アプリケーションの局部クロックにおける置換 え可能なペー ーはその後ステップ812に進み、ページクリーニングキューPCQ(図2)内 にアプリケーションがクリーンにされるのを待ち得るページがあるかどうかが判 断される。もしそうであれば、ページがクリーンにされるまでアプリケーション は待機する(ステップ814)。クリーンにされたページはその後置換え可能で あるとして指定され、フローはその後前述のようにステップ804および806 に進み、要求された「存在しない」ページが読込まれ、この指定された置換え可 能なページに置換えられ、さらにアプリケーションが再開される。しかしながら 、ステップ812によって、アプリケーションが待ち得るクリーンにされるペー ジがないことが示されると、エラー表示が与えられる。 図9は、(たとえアプリケーションの割当てられたページ最大値に達していな いとしても)ワークステーションがその最大数の割当可能なページを使い果たし てしまったためにページフォールトが満たされない、第2のタイプの置換え状況 に対してページ置換えがどのように処理されるかを示す。前の例では、ワークス テーションは最大120の割当可能なページを有し、一方でワードプロセッサア プリケーションA1には最大100の割当ページが与えられており、コンパイラ アプリケーションA2には最大50の割当ページが与えられており、さらにメー ルアプリケーションA3には最大30の割当ページが与えられていると仮定され たことが思い出されるであろう。たとえば、アプリケ 0は、A3を最もアクティブでないアプリケーションとして選択し、それからペ ージを奪おうとする。 図9のステップ902は、ステップ900において選択された最もアクティブ でないアプリケーションがフォアグラウンド(すなわち現在ユーザによって使用 されている)状態であるかどうかをチェックし、もしそうであるならば、ページ を奪うために、次にアクティブであるアプリケーションを選ぶ(ステップ904 )。フォアグラウンドアプリケーションを使用しない理由は、フォアグラウンド アプリケーションはそれがフォアグラウンドで使用されるためにそのページへの アクセスをいつ要求するとも限らないからであって、そのためそのページの1つ が奪われるようにされるべきではない。 そのようにしてページが奪われるべきアプリケーションを特定した(ステップ 900、902、904)後、図9のフローは選ばれたアプリケーションの局部 クロックに進み(ステップ906)、置換え可能なページのサーチを行なうが、 そのサーチは図4、5、8に関連して前述されたものと同じ態様で達成される。 このサーチはさまざまな点で修正されてもよい。たとえば、図9のステップ90 6の目的のためには、局部クロックページ置換えサーチは局部クロックの1周の みに限定されてもよい。 置換え可能なページが見つかると(ステップ908)、フローはステップ91 0に進み、ステップ906において 見つけられた置換え可能なページが奪われ、かつページフォールトが生じたアプ リケーションに割当てられる。要求された「存在しない」ページはその後この新 しく割当てられたページ中に読込まれ、ページフォールトが生じたアプリケーシ ョンはその後再開される(ステップ912)。 ステップ908において置換え可能なページが見つからなければ、別のアプリ ケーションからページを奪う試みが行なわれる(ステップ914)。これは好ま しくは、フォアグラウンドアプリケーションではない、その次にアクティブでな いアプリケーションから始まり、置換え可能なページが見つかるまで他のアプリ ケーションへと続けて(ステップ906において行なわれた態様と同じ態様で) 他のアプリケーションの局部クロックをサーチすることによって達成される。フ ローはその後910に戻り、その奪う動作を完了する。置換え可能なページがま だ見つからなければ(ステップ916)、図8に関連して前述されたたように、 ページフォールトが生じたアプリケーションの局部クロックにおいて置換え可能 なページを見つける試みが行なわれる(ステップ918)。これも置換え可能な ページを見つけるに至らなければ(ステップ920)、エラー表示が与えられる 。代替的には、前述したように、他のアプリケーションに対してもう一度サーチ が行なわれ得る。なぜなら以前に置換え可能でなかったページも置換え可能にな ることがあるからである。そのような繰り返しサーチは、 【手続補正書】特許法第184条の8 【提出日】1995年1月23日 【補正内容】 請求の範囲 1.相互に接続された複数のワークステーションを含み、あるワークステーシ ョンが複数のアプリケーションを同時に実行することができるネットワークにお いて、 物理メモリを前記ネットワークに設けるステップと、 前記物理メモリを複数のページに分割するステップと、 アプリケーションが動作しているときアプリケーションによって使用可能なペ ージの状態を示すための局部ページテーブルを各アプリケーションに対して設け るステップと、 アプリケーションがその局部ページテーブルに現在存在していないページへの アクセスを要求するときページフォールトを生成するステップと、 ページフォールトを満たすために置換えが要求されるとき置換え可能なページ を特定するステップとを含み、前記特定するステップは、まずページフォールト が生じたアプリケーションの局部ページテーブルをサーチし、もし置換え可能な ページが見つからなければ、その後置換え可能なページを見つけるために別の実 行中のアプリケーションの局部ページテーブルをサーチすることによって行なわ れ、選ぶべき他の実行中のアプリケーションが複数あるとき前記別の実行中のア プリケーションの選択は、どれが最もアクティブでないかに基づいて決定され、 さらに、 前記別のアプリケーションから得られたときの特定された置換え可能なページ を、ページフォールトが生じたアプ リケーションの局部ページテーブルに割当てるステップと、 アクセスされた存在していないページを、特定された置換え可能なページ中に 読込むステップとを含む、方法。 2.最もアクティブでないアプリケーションは、実行中のアプリケーションの ページフォールト動作に基づいて決定される、請求項1に記載の方法。 3.最もアクティブでないアプリケーションは、ページフォールトが最も長い 期間で起こっていないアプリケーションに基づいて決定される、請求項1に記載 の方法。 4.各局部テーブルはクロックアルゴリズムに基づく置換え方式を有する、請 求項1に記載の方法。 5.前記別のアプリケーションの選択はまた、アプリケーションがバックグラ ウンドで実行しているかフォアグラウンドで実行しているかにも依存している、 請求項1に記載の方法。 6.前記特定するステップは、前記別のアプリケーションのサーチによっても 置換え可能なページを見つけることができなければさらに実行中のアプリケーシ ョンの局部ページテーブルをサーチするステップを含む、請求項1に記載の方法 。 7.前記ネットワークはCTOSネットワークであって、前記ワークステーシ ョンはCTOSワークステーションである、請求項1に記載の方法。 8.相互に接続された複数のワークステーションを含み、 ワークステーション間のネットワーキングがオペレーティングシステム中に組込 まれているネットワークにおいて、 前記ネットワークに設けられた物理メモリを含み、前記物理メモリは複数のペ ージに分割され、さらに、 複数のアプリケーションを同時に実行するための少なくともの1つのワークス テーションを含み、前記ワークステーションは前記実行中のアプリケーションに 割当可能な複数のページを含むメモリを有し、 アプリケーションが実行中であるときアプリケーションによって使用可能なペ ージの状態を示すための局部ページテーブルを各アプリケーションに対して設け 、さらに、 アプリケーションがその現在割当てられたページ中に存在しないページへのア クセスを要求するとき、ページフォールトを生成する手段と、 ページフォールトに応答して、ページフォールトが生じたアプリケーションの 局部ページテーブルを最初にサーチし、置換え可能なページが見つからなければ 、その後置換え可能なページを見つけるために別の実行中のアプリケーションの 局部ページテーブルをサーチすることによって、要求された時に置換え可能なペ ージを特定するための手段とを含み、選択すべき他の実行中のアプリケーション が複数あるとき前記別の実行中のアプリケーションの選択はどれが最もアクティ ブでないかに基づいて決定され、さらに、 前記別のアプリケーションから得られたときの特定され た置換え可能なページを、ページフォールトが生じたアプリケーションの局部ペ ージテーブルに割当てるための手段と、 アクセスされた存在しないページを、特定された置換え可能なページ中に読込 むための手段とを含む、組合せ。 9.最もアクティブでないアプリケーションは実行中のアプリケーションのフ ォールト動作に基づいて決定される、請求項8に記載の発明。 10.最もアクティブでないアプリケーションは、最も長い期間ページフォー ルトが生じていないアプリケーションに基づいて決定される、請求項8に記載の 発明。 11.前記存在しないページは、ネットワークを介して別のワークステーショ ンから得られる、請求項8に記載の発明。 12.各局部テーブルはクロックアルゴリズムに基づいた置換え方式を有する 、請求項8に記載の発明。 13.前記別のアプリケーションの選択はまた、アプリケーションがフォアグ ラウンドで実行しているかバックグラウンドで実行しているかにも依存している 、請求項8に記載の発明。 14.最もアクティブでないアプリケーションは、実行中のアプリケーション のページフォールト動作に基づいている、請求項8に記載の発明。 15.前記ネットワークはCTOSネットワークであっ て、前記ワークステーションはCTOSワークステーションである、請求項8に 記載の発明。[Procedure of Amendment] Patent Act Article 184-8 [Date of submission] September 12, 1994 [Content of amendment] The maximum number of memory pages that can be allocated is given. For example, the word processor application program A1 is provided with a maximum of 100 allocated pages, the compiler application program A2 is provided with a maximum of 70 allocated pages, and the mail application program A3 is provided with a maximum of 50 allocated pages. Assuming that the memory M has a total of 120 allocatable pages, the total number of pages allocated to all running applications at any one time is irrespective of whether or not the application is allocated its maximum number of pages. It cannot exceed 120 pages. The workstation WS in FIG. 2 also shows a free page list FPL to keep track of page allocations, a page cleaning queue PCQ to clean dirty pages, and an activity queue AQ to show relative application activity. Please note that. These are described further below. FIG. 3 shows a typical page table (P1, P2, P3) that may be used by each application. As shown, each entry in the page table includes page-specific data p i identifying the allocated memory page, access bits a i indicating whether the page has been referenced by the application since the last test, and It includes a "dirty" page bit d i that indicates whether the page contains write data that must be written back to its source location such as a disk drive. Each page table entry may also include other information indicated by o i . CTOS allocates the maximum number of allocatable pages to an application when the application starts. CTOS also generates a local clock for the application (C1, C2, C3 in FIG. 2) for use in determining which page of the application should be replaced when replacement is required at that time. The basic configuration of such a local clock is shown schematically in FIG. 4, where the memory pages, ie the pages designated pg1, pg2, ... pgN assigned to the application, appear to be around the clock. Placed in a circular list. The number of allocated memory pages cannot exceed the maximum allocatable pages for the application. The clock pointer (or hand) cp points to the last replaced page and advances clockwise when the local clock is activated to look for a replaceable page. The operation during the local clock search for replaceable pages is illustrated by the flow diagram in FIG. When the clock pointer cp advances to the next page (step 500), it is tested whether the access bit a i of the corresponding page table entry is set (step 502) and the page has been tested by the application since the last test. Determine if it was referenced. If the access bit a i is set (step 502), the page is considered to be one of the application's currently active working pages and is therefore not eligible for replacement. If so, this access bit a i is reset (step 504) and the flow diagram returns to step 500 to continue the search. On the other hand, if the access bit a i of the next page is not set in step 502, it is checked whether the dirty page bit d i is set (step 506). If bit d i is not set, indicating that the page is clean (ie, it need not be written back to its source location, such as disk), then the page is designated as eligible for replacement. (Step 508). However, if in step 506 the bit d i is set and the page is shown to be dirty, then the page is placed on the page cleaning queue PCQ (FIG. 2) (step 510) and the flow continues the search. Therefore, the process returns to step 500. Pages in the page cleaning queue PCQ may be prioritized so that some pages in the PCQ are cleaned prior to others. After a page has been cleaned, its bit d i in its respective application's page table is reset, indicating that the page is now clean. Described next is a combination of global and local page allocation schemes according to the present invention that uses a local clock for each running application, as described above in connection with FIGS. 4 and 5. Is a preferred embodiment of To this end, as described above, a CTOS workstation with up to 120 allocatable pages runs a word processor application A1, a compiler application A2, and a mail application A3 with up to 100, 50, and 30 allocated pages, respectively. Suppose they are running at the same time. When all three of these applications are running on the workstation, one of the applications is running in the foreground (a foreground application is the application that controls the keyboard and usually at least part of the display screen), It will be appreciated that the other two applications are running in the background. For example, word processor application A1 can operate in the foreground to allow the user to control the keyboard and display, thereby performing word processing operations as if no other application is running. The compiler and mail application will then be running in the background. For example, the compiler application compiles a dedicated program previously developed by the user, while the mail application checks and determines if the page maximum on either the mail message or the workstation has been reached (step 704). If not, the paging service allows free (unallocated) workstation memory pages (shown in the free page list FPL of FIG. 2) to be allocated to the faulted application, after which Subsequently, the requested page is read into this newly allocated page (step 706) and the application is then resumed (step 708). Since the CTOS system is used, this page has the effect of being obtained transparently from the local disk of the workstation or from the server workstation over the network. On the other hand, if it is found in step 704 in FIG. 8 that the page maximum of either the application or the workstation has been reached, then a page replacement is requested and is the page maximum for the application (FIG. 8)? Depending on whether it is for a workstation (FIG. 9), page replacement is done as shown in FIG. 8 or FIG. Consider first the situation where the application page maximum value shown in FIG. 8 has been reached. As shown in FIG. 8, page replacement for the situation where the application has reached its allocated page maximum, the replaceable page in the application's local clock then proceeds to step 812 where the page cleaning queue PCQ (FIG. 2). It is determined if there are any pages in it that can wait for the application to be cleaned. If so, the application waits until the page is cleaned (step 814). The cleaned page is then designated as replaceable, and flow then proceeds to steps 804 and 806 as described above to read the requested "non-existent" page into this designated replaceable page. It is replaced and the application is restarted. However, if step 812 indicates that there are no cleaned pages the application can wait for, an error indication is provided. FIG. 9 illustrates a second type of replacement in which the page fault is not satisfied because the workstation has exhausted its maximum number of allocatable pages (even if the application's allocated page maximum has not been reached). Indicates how page replacement is handled for the situation. In the previous example, the workstation has a maximum of 120 allocatable pages, while the word processor application A1 is given a maximum of 100 allocatable pages and the compiler application A2 is given a maximum of 50 allocatable pages. It will be recalled that it was further assumed that the mail application A3 was given a maximum of 30 allocated pages. For example, Application 0 selects A3 as the least active application and then tries to steal the page. Step 902 of FIG. 9 checks to see if the least active application selected in step 900 is in the foreground (ie currently in use by the user) and if so, to steal the page. , Then select the active application (step 904). The reason for not using a foreground application is that the foreground application does not always require access to the page for it to be used in the foreground, so one of the pages should be deprived. is not. After thus identifying the application whose page should be stolen (steps 900, 902, 904), the flow of FIG. 9 proceeds to the local clock of the selected application (step 906) and searches for a replaceable page. However, the search is accomplished in the same manner as described above in connection with FIGS. This search may be modified in various ways. For example, for the purposes of step 906 of FIG. 9, the local clock page replacement search may be limited to only one round of the local clock. If a replaceable page is found (step 908), flow proceeds to step 910 where the replaceable page found in step 906 is robbed and assigned to the application that caused the page fault. The requested "nonexistent" page is then read into this newly allocated page and the application that caused the page fault is then restarted (step 912). If no replaceable page is found in step 908, an attempt is made to steal the page from another application (step 914). This preferably starts with the next inactive application that is not the foreground application and continues to the other applications (in the same manner as done in step 906) until another replaceable page is found. This is accomplished by searching the local clock. The flow then returns to 910 to complete the robbing action. If no replaceable page is found yet (step 916), an attempt is made to find a replaceable page at the local clock of the application that caused the page fault, as described above in connection with FIG. 8 (step 918). ). If this also fails to find a replaceable page (step 920), an error indication is given. Alternatively, the search may be performed again for other applications, as described above. This is because pages that were not previously replaceable may become replaceable. Such repetitive searches are subject to [Procedure Amendment] Patent Act Article 184-8 [Date of submission] January 23, 1995 [Amendment content] Claims 1. In a network including a plurality of workstations connected to each other, in which a workstation can execute a plurality of applications simultaneously, providing physical memory in the network, and dividing the physical memory into a plurality of pages And providing each application with a local page table to indicate the state of pages available to the application when the application is running, and accessing the pages that the application does not currently exist in that local page table. Requesting a page fault, and identifying a replaceable page when replacement is required to satisfy the page fault, the identifying step first comprising Is done by searching the local page table of the originating application and, if no replaceable page is found, then searching the local page table of another running application to find a replaceable page, When there is more than one other running application to choose, the selection of the other running application is determined based on which is the least active, and further identified when obtained from the other application. A method comprising: assigning a replaceable page to a local page table of an application in which a page fault has occurred, and reading a nonexistent page that has been accessed into the identified replaceable page. 2. The method of claim 1, wherein the least active application is determined based on page fault behavior of running applications. 3. The method of claim 1, wherein the least active application is determined based on the application for which the page fault has not occurred in the longest period of time. 4. The method of claim 1, wherein each local table has a permutation scheme based on a clock algorithm. 5. The method of claim 1, wherein the selection of the other application is also dependent on whether the application is running in the background or in the foreground. 6. The method of claim 1, wherein the identifying step comprises searching the local page table of the further running application if the replaceable page cannot be found by searching the other application. 7. The method of claim 1, wherein the network is a CTOS network and the workstation is a CTOS workstation. 8. In a network including a plurality of workstations connected to each other, wherein networking between the workstations is incorporated in an operating system, including physical memory provided in the network, the physical memory being divided into a plurality of pages. , Further comprising at least one workstation for executing a plurality of applications simultaneously, said workstation having a memory containing a plurality of pages allocatable to said running application, said application being running A local page table is provided for each application to indicate the state of the pages that are sometimes used by the application, and the application needs to access pages that do not exist in its currently allocated pages. To generate a page fault, and in response to the page fault, first search the local page table of the application that caused the page fault, and if no replaceable page is found, then find a replaceable page. Means for identifying replaceable pages at the time of the request by searching the local page table of another running application in order to select when there is more than one other running application to select. The selection of another running application is determined based on which is the least active, and the specified replaceable page when obtained from the other application is local to the application where the page fault occurred. Hands for assigning page tables When a page that does not exist is accessed, and means for reading in the replaceable pages identified combination. 9. 9. The invention of claim 8, wherein the least active application is determined based on faulting behavior of running applications. 10. 9. The invention of claim 8, wherein the least active application is determined based on the application that has not had a page fault for the longest period of time. 11. 9. The invention of claim 8 wherein the non-existent page is obtained from another workstation over a network. 12. 9. The invention of claim 8 wherein each local table has a replacement scheme based on a clock algorithm. 13. 9. The invention of claim 8, wherein the selection of the different application also depends on whether the application is running in the foreground or the background. 14. 9. The invention of claim 8, wherein the least active application is based on page fault behavior of running applications. 15. 9. The invention of claim 8, wherein the network is a CTOS network and the workstation is a CTOS workstation.

Claims (1)

【特許請求の範囲】 1.複数のCTOSワークステーションを含み、あるワークステーションが複 数のアプリケーションを同時に実行することができるCTOSネットワークにお いて、 物理メモリを前記ネットワークに設けるステップと、 前記物理メモリを複数のページに分割するステップと、 アプリケーションがその局部ページテーブルに現在存在していないページへの アクセスを要求するときページフォールトを生成するステップと、 ページフォールトを満たすために置換えが要求されるとき置換え可能なページ を特定するステップとを含み、前記特定するステップは、まずページフォールト が生じたアプリケーションから、またはワークステーション上で実行中の別のア プリケーションから、置換え可能なページを特定することを選択的に可能にする 局部的方式および大域的方式を組合せたものに基づいて行われ、さらに、 前記別のアプリケーションから選択されたときの特定された置換え可能なペー ジを、ページフォールトが生じたアプリケーションに割当てるステップと、 アクセスされた存在していないページを、特定された置換え可能なページ中に 読込むステップとを含む、方法。 2.優先順位を基本にして、局部的置換え方式はクロックアルゴリズムに基づ き、大域的置換え方式は、置換可能なページを別のアプリケーションから奪うこ とに基づく、 請求項1に記載の方法。 3.前記優先順位は前記ワークステーション上で実行するアプリケーションの 相対アクティビティに依存する、請求項2に記載の方法。 4.前記優先順位もまた、アプリケーションがバックグラウンドで動作してい るか、フォアグラウンドで動作しているかに依存する、請求項3に記載の方法。 5.前記置換えは、前記ページフォールトを満たすように要求されるとき実行 中のアプリケーションのどちらが置換え可能なページのためにサーチされるべき かを選択することを含み、選択されたアプリケーションにおける置換え可能なペ ージは、クロックアルゴリズムにしたがって選択される、請求項1に記載の方法 。 6.前記置換えは、前に選択されたアプリケーションが置換えられ得るページ を有さないとき置換え可能なページをサーチすべく別のアプリケーションを選択 する、請求項5に記載の方法。 7.複数のCTOSワークステーションを含み、ワークステーション間のネッ トワーキングがCTOSオペレーティングシステム中に組込まれているCTOS ネットワークにおいて、 前記ネットワークに設けられた物理メモリを含み、前記物理メモリは複数のペ ージに分割され、さらに、 複数のアプリケーションを同時に実行するための少なく ともの1つのワークステーションを含み、前記ワークステーションは前記実行中 のアプリケーションに割当可能な複数のページを含むメモリを有し、 アプリケーションがその現在割当てられたページ中に存在しないページへのア クセスを要求するとき、ページフォールトを生成する手段と、 ページフォールトに応答して、ページフォールトが生じたアプリケーションか ら、またはワークステーション上で実行中の別のアプリケーションから、置換え 可能なページを特定することを選択的に可能にする局部的および大域的置換え方 式を組合せたものに基づいて要求された時に置換え可能なページを特定するため の手段とを含み、さらに、 前記別のアプリケーションから選択されたときの特定された置換え可能なペー ジを、ページフォールトが生じたアプリケーションに割当てるための手段と、 アクセスされた存在しないページを、特定された置換え可能なページ中に読込 むための手段とを含む、組合せ。 8.前記存在しないページは、ネットワークを介して別のワークステーション から得られる、請求項7に記載の発明。 9.優先順位を基本にして、局部的置換え方式は、クロックアルゴリズムに基 づき、大域的置換え方式は、置換え可能なページを別のアプリケーションから奪 うことに基づく、請求項7に記載の発明。 10.前記優先順位は、前記ワークステーション上で実行するアプリケーショ ンの相対アクティビティに依存する、請求項7に記載の発明。 11.前記優先順位もまた、アプリケーションフォアグラウンドで実行してい るかバックグラウンドで実行しているかに依存する、請求項10に記載の発明。[Claims]   1. Multiple workstations, including multiple CTOS workstations In a CTOS network that can run several applications simultaneously And   Providing physical memory in the network;   Dividing the physical memory into a plurality of pages,   To pages that the application does not currently exist in its local page table Generating a page fault when requesting access,   Replaceable pages when replacement is required to satisfy a page fault And a step of identifying a page fault. From the application in which it occurred, or another application running on the workstation. Allows an application to selectively identify replaceable pages Done on the basis of a combination of local and global schemes, and   The specified replaceable page when selected from the other applications. Page to the application where the page fault occurred,   Replace the non-existent page that was accessed in the specified replaceable page And a reading step.   2. Based on priority, the local replacement method is based on a clock algorithm. However, the global replacement scheme is designed to steal replaceable pages from another application. Based on, The method of claim 1.   3. The priority of the applications running on the workstation The method of claim 2, which relies on relative activity.   4. The priority also indicates that the application is running in the background. The method of claim 3, depending on whether it is running or in the foreground.   5. The replacement is performed when required to satisfy the page fault Which of the applications inside should be searched for replaceable pages Selectable and replaceable patterns in the selected application. The method of claim 1, wherein the page selection is according to a clock algorithm. .   6. The replacement is a page where the previously selected application can be replaced. Select another application to search for replaceable pages The method of claim 5, wherein   7. Including multiple CTOS workstations, CTOS where the working is embedded in the CTOS operating system In the network   Including physical memory provided on the network, the physical memory comprising a plurality of pages. Is divided into   Less for running multiple applications simultaneously And one workstation, the workstation being the running Has a memory containing multiple pages that can be allocated to   The application can access pages that are not in its currently allocated page. Means to generate page faults when requesting access,   Is the application the page fault occurred in response to the page fault? Or another application running on your workstation. Local and global permutations that selectively enable identification of possible pages To identify replaceable pages when requested based on a combination of expressions And means of   The specified replaceable page when selected from the other applications. To allocate the page to the application that caused the page fault,   Read nonexistent page accessed into the specified replaceable page And a means for removing the combination.   8. The non-existent page is sent to another workstation via the network. The invention of claim 7 obtained from   9. Based on priority, the local replacement method is based on a clock algorithm. Therefore, the global replacement method steals replaceable pages from another application. The invention according to claim 7, which is based on the above.   10. The priority is based on the application running on the workstation. 8. The invention of claim 7, which is dependent on the relative activity of the   11. The priority is also running in the application foreground 11. The invention of claim 10 depending on whether it is running or running in the background.
JP6518370A 1993-02-12 1994-02-10 Computer workstation with demand paged virtual memory Pending JPH08506676A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US1706893A 1993-02-12 1993-02-12
US08/017,068 1993-02-12
PCT/US1994/001550 WO1994018625A1 (en) 1993-02-12 1994-02-10 Computer workstation having demand-paged virtual memory

Publications (1)

Publication Number Publication Date
JPH08506676A true JPH08506676A (en) 1996-07-16

Family

ID=21780542

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6518370A Pending JPH08506676A (en) 1993-02-12 1994-02-10 Computer workstation with demand paged virtual memory

Country Status (4)

Country Link
EP (1) EP0683909A1 (en)
JP (1) JPH08506676A (en)
KR (1) KR960701404A (en)
WO (1) WO1994018625A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2795196B1 (en) * 1999-06-21 2001-08-10 Bull Sa PHYSICAL PAGES RELEASE PROCESS FOR VIRTUAL ADDRESSING MECHANISM
KR100755701B1 (en) 2005-12-27 2007-09-05 삼성전자주식회사 Apparatus and method of demanding paging for embedded system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2191917A (en) * 1986-06-16 1987-12-23 Ibm A multiple window display system
NL8701330A (en) * 1987-06-09 1989-01-02 Oce Nederland Bv OFFICE AUTOMATION SYSTEM.

Also Published As

Publication number Publication date
KR960701404A (en) 1996-02-24
EP0683909A1 (en) 1995-11-29
WO1994018625A1 (en) 1994-08-18

Similar Documents

Publication Publication Date Title
US5606685A (en) Computer workstation having demand-paged virtual memory and enhanced prefaulting
US7047337B2 (en) Concurrent access of shared resources utilizing tracking of request reception and completion order
US7962910B2 (en) Selective generation of an asynchronous notification for a partition management operation in a logically-partitioned computer
US7613897B2 (en) Allocating entitled processor cycles for preempted virtual processors
JP3696960B2 (en) Parallel processing system and parallel processing method
EP0798639B1 (en) Process assignment in a multiprocessor system
US7428485B2 (en) System for yielding to a processor
US7386619B1 (en) System and method for allocating communications to processors in a multiprocessor system
JP3940404B2 (en) Method, apparatus, and program for deallocating computer data in a multi-thread computer
US20050283785A1 (en) Preemptive multi-tasking with cooperative groups of tasks
US7853928B2 (en) Creating a physical trace from a virtual trace
US7356613B2 (en) Routable application partitioning
US6925421B2 (en) Method, system, and computer program product for estimating the number of consumers that place a load on an individual resource in a pool of physically distributed resources
JP2011044165A (en) Scheduling of request in system
US8024738B2 (en) Method and system for distributing unused processor cycles within a dispatch window
JPH08506676A (en) Computer workstation with demand paged virtual memory
JPH0991257A (en) Cpu management system
JPH10143382A (en) Method for managing resource for shared memory multiprocessor system
US6823440B2 (en) Method and apparatus for isolating frames in a data processing system
JPH10134100A (en) Fault simulation system and allocating method for job
JP2004086921A (en) Multiprocessor system and method for executing task in multiprocessor system thereof
JPH11161506A (en) Dispatch method for information processor, information processor and storage medium thereof
JPS63233451A (en) Main memory replacing system
Whitcroft TimWilkinson NickWilliams PeterOsmon Systems Architecture Research Centre City University London England {trs| andy| tim| njw| p. osmon}@ cs. city. ac. uk