JPH05508043A - 効率的な非仮想主メモリ管理のための方法 - Google Patents

効率的な非仮想主メモリ管理のための方法

Info

Publication number
JPH05508043A
JPH05508043A JP91511492A JP51149291A JPH05508043A JP H05508043 A JPH05508043 A JP H05508043A JP 91511492 A JP91511492 A JP 91511492A JP 51149291 A JP51149291 A JP 51149291A JP H05508043 A JPH05508043 A JP H05508043A
Authority
JP
Japan
Prior art keywords
segment
main memory
swap
memory space
segments
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
JP91511492A
Other languages
English (en)
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
Priority claimed from US07/537,466 external-priority patent/US5179702A/en
Application filed by クレイ、リサーチ、インコーポレーテッド filed Critical クレイ、リサーチ、インコーポレーテッド
Publication of JPH05508043A publication Critical patent/JPH05508043A/ja
Pending legal-status Critical Current

Links

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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるため要約のデータは記録されません。

Description

【発明の詳細な説明】 効率的な非仮想主メモリ管理のための方法技術分野 本発明は、一般的には、コンピュータ処理システムのためのオペレーティングシ ステムソフトウェアに関する。
より詳細には、本発明は、非仮想メモリコンピュータシステムのための主メモリ を管理する方法に関する。
従来の技術 今日のコンピュータシステムは、通常コンピュータシステムの上首尾の実行に必 須の動作を遂行するオペレーティングシステムを持ち、また通常ソフトウェアが ハードウェアとインターフェースする。本発明を導入するタイプのコンピュータ システムに対するオペレーティングシステムは、ソフトウェア及びハードウェア メカニズムの複合体から成るメモリ管理システムを持つ。このタイプのコンピュ ータシステムはマルチプログラミングを遂行することができ、一つの共通の主メ モリを共有する複数の堅く結合された並列プロセッサを含む。このため、コンピ ュータシステムの上首尾の動作のためには、メモリ管理システムはこの共通の主 メモリを過度に遅延されることなく複数のプログラム或はプロセッサによって使 用できる状態に確保しなければならない。このメモリ管環システムによって使用 される一つの技法は、これをプロセス或はプログラムスワツピングによって達成 する方法である。複数のプログラム或はプロセスが主メモリ内に格納することが できるより多くの様々な実行状態にある場合、このメモリ管理システムは、一つ 或は複数のプロセスをスワップデバイスと命名される二次メモリデバイス、例え ば、ディスクメモリ或は他のタイプの大容量記憶装置に移動させ、つまり、スワ ップアウトし、一つの実行可能なプロセスをメモリ管理システムによってスワッ プデバイスから主メモリに移す、つまり、スワップインする。
また、幾つかのオペレーティングシステムは、マルチプログラミングを容易にす るために要求時ベージングをすることができるメモリ管理システムを持つ。この ようなコンピュータシステムにおいては、プロセス或はプログラム全体が実行の ために主メモリ内に常駐することは要求されない。この種のメモリ管理システム はプロセスが要求されたページを参照するとき、要求に応じて、あるプロセスの ページをロードする。
本発明は、要求時ベージングを持たないコンピュータシステムに組み込まれる。
実行されるべきプロセス全体が主メモリ内に存在し、実行が不適格となるまでこ こにとどまることが要求される。従って、幾つかのコンピュータシステムのメモ リ管理システムはマルチプログラミングを可能にするために要求時ベージングを 遂行することができず、或は一つの共通主メモリを共有する高度にパラレルな多 重プロセッサを使用することができないが、これらは、プロセススワツピングが 使用できるようにされる。スワツピングを使用する幾つかのコンピュータシステ ム、例えば、U n ix RシステムVは、スワップアウト候補をそれらの優 先度及びメモリ内での滞在時間に従って選択する。選択された候補の全体処理像 はスワップアウトされる。幾つかのケースにおいては、スワップインされるべき プロセスに対して要求されるフリーの主メモリスペースの量のために一つ以上の プロセスがスワップアウトされるが、但し、上記と同一の選択パラメータが使用 される。一方、本発明においては、スワップアウト候補を選択するに当って位置 及びサイズが考慮され、このため上記方法は、本発明と比較して、スワツピング オーバヘッドが大きくなり、効率が悪く、またメモリ管理システムの速度が落ち る。
本発明においては、利用可能メモリセグメントのリストに加えて、割り当てられ たメモリスペース及びフリーのメモリスペースの別個のリストが提供される。こ れら利用可能及び割り当てられた循環リストはセグメントの分離リストであり、 これらが一体となってメモリの全体を説明する。これらリストはサイズによって 順序付けられる。第三の循環リストは、セグメントの全てを、つまり、割り当て られたセグメント及び利用可能セグメントの両者をそれらのメモリ内の位置によ って順序付ける。
これらは、スワップアウト候補を選択するときパラメータとしてセグメントのサ イズ及び位置も使用できるようにし、効率の向上に寄与する。
加えて、過去のメモリ管理システム、例えば、システムVタイプのオペレーティ ングシステムのメモリ管理システムは、本発明の機能、例えば、セグメント分割 を包含するデータ構造を持たない。本発明は、セグメント分割能力を提供するこ とによってメモリ管理システムの効率及び速度を向上させる。セグメント分割能 力がないため、従来のメモリ管理システムはスワップインされるべきセグメント の総サイズを収容するのに十分な量の連続セグメントを主メモリからスワップア ウトする必要があった。
本発明の共有イメージデータ構造は、主メモリ管理プログラムがその機能をマイ クロプロセシングに対しても実行できるようにするが、従来のメモリ管理システ ムにおいては、これも欠けていた。
本発明は、これがスワップアウトのための候補として最低効率のプロセスを最少 数(1east number or themost 1neff’1cie nt processes)選択するという点で1このような従来のメモリ管理 システムと比較して進歩が見られる。加えて、本発明は、プロセスイメージ全体 のサブセットをスワツピングする能力、つまり、部分スワツピング能力を提供す る。部分スワツピングは主メモリ内の非常に大きなプロセスの断片(piece s)をより小さなプロセスと混合することを可能にする。これは従来大きなプロ セス全体がスワップアウトされた場合に発生したような過剰のシステムオーバヘ ッドを起こすことなく達成される。これら改良はより効率的でより高速の主メモ リ管理システムを提供する。
発明の概要 本発明の主要な目的は、コンピュータシステム、より詳細には、マルチプログラ ミングをサポートし、また、一つの共通する主メモリを共有する複数の堅く結合 されたプロセッサを持つ非仮想コンピュータシステムに対する改良された主メモ リ管理システムを提供することにあり、さらに詳細には、より効率的でより高速 なこのようなコンピュータシステムに対する改良された主メモリ管理システムを 提供することにある。
これら目的は主メモリ管理システム内にプロセススワツピングを組み込むことに よって達成されるが、ここで、これらスワップアウト候補は、最も非効率なプロ セスを最少数(1east number of the most 1nef ’ficient processes)という基準に従って選択され、またス ワップアウトのためにプロセスイメージ全体のサブセットを選択することができ る。
新たなデータ構造が主メモリ管理システムが向上されたスワツピングを遂行でき るように提供される。本発明におけるこれら新たなデータ構造はリスト及びテー ブルの形式をとる。一つのテーブル、つまり、セグメントテーブルは、フィール ドを含むセグメントエントリ並びに論理境界、物理アドレス、セグメント断片( splits、スプリット)、及びセグメントがメモリ内に存在するか、スワッ プデバイス上に存在するか、或はこの両者に存在するかを示すフラッグから構成 される。一つの循環リスト、5AVAILリストは、利用可能メモリセグメント をサイズによって順序付ける。もう一つの循環リストは、5ACTIVBリスト は、割り当てられたメモリセグメントをサイズによって順序付ける。さらにもう 一つの循環リスト、5LOCは、利用可能及び割り当てられたメモリセグメント の両方を位置によって順序付ける。これら5AVAILリスト、5ACTIVE  リスト、及び5LOCリストは、セグメントテーブルエントリを通して繋がれ る。一つのテーブル、つまり、共存イメージプロセステーブルは、プロセスイメ ージの状態を示すフィールド及びフラッグを含む。
好ましい実施例、つまり、マルチプログラミングをサポートし、また一つの共通 の主メモリを共有する複数の堅く結合されたプロセッサを含むことができる非仮 想コンピュータシステムの例においては、各プロセッサは最低でも一つ、好まし くはより多くのデータコントロールセットを持ち、これらは、メモリ管理システ ムによって、セグメント断片(segment 5plits)をマツピングし 、ユーザプロセスが分割セグメント(split Seg鳳ent )を連続し たもの、つまり、未分割セグメントとして見ることができるようにするために使 用される。セグメント分割及びセグメント合体(segment coales cing)を行なうことによって、利用可能なメモリスペースをメモリを再構成 することなく使用することができる。つまり、主メモリを現在割り当てられてい るような状態で使用することができる。分割セグメントが主メモリからスワップ アウトされるとき、これらは、スワップデバイス上に、これらセグメントが次の スワップインの際に現メモリ構成に再びフィツトするような唯一の細分に分割で きるように結合、つまり、合体される。
また、テーブルは部分スワップイングを容易にするために使用されるフラッグを 含む。このフラッグは、プロセスのセグメントが主メモリ内に存在するか、或は スワップアウトされているかを示す。この構成のため、スワップインされるべき プロセスがスワップアウトされるべき候補であるプロセスのあるセグメントにフ ィツトする場合、従来行なわれていたようにプロセス全体をスワップアウトする ことは要求されず、このセグメントのみをスワップアウトすることで済む。部分 スワツピングはまた隣接する空きスペースを越えて成長するために追加のメモリ スペースを必要とするセグメントの収容を可能にする。成長を可能にするための 部分スワツピングはメモリからメモリへのセグメントコピーを行なう過去の方法 より効率的であるが、これはメモリ管理システムがその上で使用されるハードウ ェアのメモリからメモリへの伝送速度とメモリからスワップデバイスへの伝送速 度の間の差による。
あるプロセスが幾つかのセグメントを主メモリ内に持ち、また幾つかのセグメン トをスワップデバイス上に持つ場合、主メモリ内に既に存在するこれらセグメン トは二重イメージセグメントである。従って、このプロセスがスワップインされ る場合、プロセスイメージ全体ではなく主メモリ内に既に存在しないセグメント のみがスワップインされる。あるプロセスのセグメントの二重イメージがプロセ スイメージ全体を主メモリ内に移すために要求されるメモリ割り当て及び物理的 I10を低減するために可能な限り長く保たれる。
本発明においては、主メモリ管理システムは上述の特許出願において説明される タイプのコンピュータシステム内で実現されるが、本発明はこの実現に限定され るものではない。本発明の方法は、非仮想或は高速の高度に並列のマルチプロセ ッサコンピュータシステムに対して主メモリ管理スキームを要求する他の機能或 はユーティリティ内でも実現することができる。
本発明のこれら及びその他の目的は、図面、好ましい実施例の詳細な説明及び付 録の請求の範囲を参照することにより一層明白となるものである。
用語の説明 メモリの合体(coalesclng)は、これによって、フラグメント化され たデータセグメントがこれらがスワップアウトされるとき一つの連続したスペー スに併合されるプロセスである。
データ;コントロールレジスタセット(data; contr。
I register 5ets )はユーザが一つの連続したセグメントを見 るように細分化されたデータセグメントをマツピングするために使用されるハー ドウェアレジスタである。
二重イメージは主メモリおよびスワップイメージを確保する処理である。
フォーク(fork)は新たな子プロセスを生成するために親プロセスによって 喚起される標準UNIXシステム呼出しである。
マイクロプロセス(microprocesses ; mprocs)は非常 に低い文脈スイッチオーバヘッドを持ち、退出時に破棄可能であり、処分の前に 再使用が可能であり、遂行されるべき仕事を非常に小さなセグメントに分割する ための手段を提供し、また仕事の結果のみを他の文脈情報を伴わずにリターンす るタイプの軽量プロセスである。
部分スワツピング(partial svapping)は−っの大きなプロセ スの一部をスワップインされるべき別のプロセスのため、或は隣接するフリーメ モリを越えて成長させるためにスワップアウトすることを可能にする。
プロセスイメージ(process i會age )はオペレーティングシステ ム内のプロセス資源、例えば、文脈情報、実行可能なコード、及びプロセスに対 するデータなどの表現である。
プロセステーブル(process table )は核によってシステム内の 各プロセスに関して必要とされるコントロール及び状態情報を含む。
5act1veはサイズによって順序付けられた割り当てられたセグメントエン トリの循環二重リンクリストを率いるダミーセグメント構造である。
5avai Iはサイズによって順序付けられた空きのセグメントエントリの循 環二重リンクリストを率いるダミーセグメント構造である。
セグメントテーブル(segment table )はそれらが支配するメモ リのセクションの属性、例えば、これらがテキストを含むか或はデータを含むか 、それらが共有されるか或はプライベートであるか、それらが分割されたものか 或は未分割であるか、及び各セグメントのデータがメモリ及び/或はスワップデ バイス上の何処にあるかなどを記述するセグメントエントリから構成される。
セグメント(seg■ents)はプロセスの実行の際に主メモリ内にあること が要求されるプロセスイメージの連続した一部分である。
共有イメージ(shared i■age)は多重連鎖プログラムの多重連鎖を 実行する多重マイクロプロセスによって共有されるある単一のプロセスイメージ である。
共有イメージプロセステーブル(shared image process  table)はプロセスイメージ及びそのイメージに属するセグメントに関する 情報を含むエントリから構成される。そのイメージが共有されない場合は、−こ れは、単一プロセスのイメージである。複数のマイクロプロセスがこのイメージ を共有するときは、このエントリはこれらマイクロプロセスに関連する情報を含 む。
共有メモリ(shared me■ory )は一つ以上のプロセスに分割、こ れに書き込み、及びこれらによって共有できるタイプのデータセグメントであり 、共有プロセス間の直接通信を許す。
5LOCは位置によって順序付けられた割り当てられた及び利用可能なセグメン トエントリの循環二重リンクリストを率いるダミーセグメント構造である。
5PLITは主メモリ内に駐在し、セグメントテーブルエントリによって記述さ れるセグメントのフラグメントである。
スワップデバイスはランしようとするプロセスに対して主メモリを解放するため に、現在ランしてないプロセスイメージを一時的に保持するために使用される代 替メモリ内の領域である。
スワツピング(svapping)はセグメントを割り当て、これらセグメント 内のデータを主メモリとスワップデバイスとの間で移動する動作である。
図面の説明 第1図は本発明を導入する単一マルチプロセッサクラスタシステムの略ブロック 図である。
第2a及び2b図は第1図のマルチプロセッサシステムに対するソフトウェアア ーキテクチュアを図解する図面である。
第3図はスワップイン及びスワップアウト機能を図解するブロック図である。
第4図はセグメントテーブル内の関連するフィールドのブロック図である。
第5図はメモリ配置リストを図解する図面である。
第6図は共有イメージプロセステーブル内の関連するフィールドのブロック図で ある。
第7図はプロセステーブルエントリ、共有イメージプロセステーブルエントリ、 共有メモリセグメント、及び分割セグメントの間の関係を示す図面である。
第8図は二重イメージ概念を図解する図面である。
第9図はデータセグメントの分割を図解する図面である。
第10図はスワップアウト候補を選択することと関連するメモリ配置を図解する 図面である。
第11図はセグメントの合体を図解する図面である。
第12図は十分な主メモリが利用可能でないとき、ス非仮想UN I X方法を 図解する図面である。
好ましい実施例の説明 メモリ管理 図面、特に第1図と関連して、本発明は、−例として、主メモリ14内に常駐す るオペレーティングシステム核(operating system kern el ) 1100を持つ単一の多重プロセッサクラスタシステム(multi processor cluster system )内に組み込まれるよう に示される。第1図は、先に申請した親に当る特許出願、つまり、1990年6 月11日付けで出願された「高度に並列な多重プロセッサシステムに対する統合 ソフトウェアアーキテクチ、 7 (INTEGI?ATED 5OFTVAR E ARCHITECTURE PORA HIGHLY PARALLEL  MULTIPROCESSOI? SYSTEM) Jという名称の合衆国特許 出願箱077537.466号の第5図と実質的に同一である。
第2a図及び2b図はオペレーティングシステム核1100を示すが、これは、 メモリスケジューラ、つまり主メモリ管理システム1120を含む。第2a及び 2b図は上述の特許出願の第88及び第8b図と実質的に同一である。主メモリ 管理システム1200は主メモリ14内の格納スペースをランされるべきプロセ スのために割り当て、また主メモリ14内の格納スペースを実行を終え、待期状 態にあるプロセスから割り当解除する機能を果たす。主メモリ14は有限量の格 納スペースを持ち、通常、システム内には主メモリ14内に格納できる以上のプ ロセスが存在する。メモリ管理システム112oは、現時点においてコンビニー タシステムによってランされるべきプロセスに対して使用が可能な主メモリ14 のスペースを発見すること或は使用できるようにすることに責務を持つ。プロセ スイメージはオペレーティングシステム内のプロセス資源、例えば、コード、デ ータ、スタック、文脈情報、及びレジスタの表現である。このプロセスイメージ はタイプテキスト、データ、共有メモリ、ライブラリテキスト、ライブラリデー タ、或はユーザの複数のセグメントに分離される。このプロセスイメージに対す るスペースが主メモリ14内に確保できない場合は、第3図のメモリマネジャ1 12oは、全プロセスイメージ、複数のプロセスイメージ、或はプロセスイメー ジ内のセグメントのサブセットをスワップアウトし、これを大容量格納デバイス 、例えば、代替メモリ、ディスクメモリシステム、或はスワップデバイス70な どのようなスワップデバイスと呼ばれる適当な格納デバイス上に置くことができ る。ランされるべきプロセスイメージはスワップデバイス7o上に常駐し、これ が主メモリ14内にスワップインされる。このプロセスは次にプロセッサ10に よって実行され、完結されるまでランされるか、或は入力/出力、つまり、I1 0デバイスを待つなどのようなある条件に起因して待ち状態へと入る。この待ち 状態において、このプロセスはスワップアウトに対する候補となる。
本発明の好ましい実施例においては、メモリマネジャ1120はシステム内のプ ロセスに属するセグメントの追跡を行なうために第4図に部分的なエントリが示 されるセグメントテーブル(segment table ) 90を使用する 。ここで議論され、またメモリマネジャの機能に最も重要なフィールドがこの図 面内に含まれる。セグメントテーブル90に対するエントリが個々のセグメント 及びこのシステム内のプロセスに属する個々のセグメント分割(segment  5plit )に対してメモリマネジ+1120によって生成及び保持される 。
本発明の実施例においては、メモリマネジャ1120は主メモリ14の追跡を行 なうために第5図内の3つの循環二重リンクリスト(circular dou bly 1inked 11st )を使用する。5LOC20リストはフリー 50であるか割り当てられている60かに関係なく主メモリ14の全てのセグメ ントを位置によって順序付ける。5LOC20は各セグメントテーブル90内に 保持されるポインタ(SFLOGは順方向リンクであり、S BLOGは逆方向 リンク)を使用して全てのセグメントをリンクする。5AVAIL30リストは フリー50である、つまり、割り当てのために使用が可能な主メモリ14内のセ グメントを順序付ける。
5ACTIVE 40リストは現在アクティブ60である、つまり、割り当て不 能な主メモリ14のセグメントを順序付ケル。5ACTIVE 40及ヒ5AV AIL30リストの両方ともセグメントサイズによって順序付けられる。5AC TIVE 40及び5AVA]L30の両方とも各セグメントテーブル90のり すル、 5AVAIL30及び5ACTIVE 40内のエントリは互いに排他 的であり、また、セグメントテーブル90のポインタs psz及びS BSZ の使用も同様である。5AVAIL30及び5ACTIVE 40内のエントリ の総和は5LOC20内のエントリの数に等しい。メモリマネジャ1120は、 メモリ14がプロセスが成長する、或はシステムに入る或はこれから出ることに 起因して再構成される度に現在のメモリ14の構成を反映するために更新される 。メモリマネジャ1120はこれらリストを割り当てのため及び主メモリ14を フリーにするために使用する。
本発明の好ましい実施例においては、メモリマネジャ1120は第6図にその部 分的なエントリが示される共有イメージプロセステーブルC5hared im age processtable) 190を使用して、各セグメントを使用 するプロセスのセグメント分割(seg■ent splitting )が可 能であるか、及びスワップアウト候補に関連する情報の追跡を行なう。ここで議 論され、またメモリマネジャ1120の機能に最も関連するフィールドがこの図 面に示される。共有イメージプロセステーブル190のエントリがシステム内の 各プロセスイメージに対して存在する。
メモリマネジャ1120は共有イメージプロセステーブル190内に複数のフィ ールドを保持するが、残りのフィールドはオペレーティングシステム核1100 の他の部分によって保持及び利用される。
プロセステーブル180のエントリ、共有イメージプロセステーブル190のエ ントリ、及びセグメントテーブル90のエントリ間の関係が第7図に示される。
この例においては、プロセステーブル180のエントリ1及び2は実際にはテキ スト1及びスプリットデータ(split data) 1を共有するマイクロ プロセッサである。マイクロプロセスに関しては、「堅く結合されたマルチプロ セッサコンピュータシステム上でのプロセスのマルチスレッドプログラムの多重 パラレル領域への二重レベルスケジューリング(Dual Level 5ch edu!jng of Processesto Multiple Para llel Regions or a MultithreadedProgr am on a Tightly Coupled Multiprocess orComputer System) Jという名称の本発明と譲受人を特徴 とする特許出順環07/xxx、xxx号において詳しく述べられている。プロ セステーブル180のエントリ3はテキスト1をマイクロプロセス1及び2と共 有するプロセスである。これらの共有イメージプロセスチー1ink)を介して これを示すようにリンクされる。プロセステーブル180のエントリ3はデータ 2をプロセステーブルのエントリ4と共有する。これらの共有イメージプロセス テーブル190のエントリは共有データリンク(sl 5haIIlink)を 介してこれを示すようにリンクされる。プロセステーブル180のエントリ5は そのイメージ内のいずれのセグメントも共有しないプロセスを表わす。
以下のメモリマネジャ1120の機能記述は付録Aに提供されるメモリ管理疑似 コードと直接に関連する。この機能記述は前に述べられたこれらテーブル及びテ ーブル内のフィールドの使用を参照する。
従来のUNIXの場合と同様に、オペレーティングシステム核1100の初期化 の一部分として、5chedプロセス(通常、スワツパとして参照される)が主 メモリ14を、実行の準備ができているが、それらのプロセスイメージがスワッ プデバイス70上に駐在し、まだ主メモリ14内にロードされてない全てのプロ セスに割り当てるために始動される。スワップデバイス70上に実行準備ができ ているプロセスイメージが存在しないときは、メモリマネジャ1120は休眠状 態に入れられ、これは、その実行をオペレーティングシステム核1100がその 実行を周期的に、かつ、メモリ割り当てが必要となって再開するまで停止する。
5chedプロセスは、第7図のプロセステーブル180のエントリを通じてル ープし、′ready to run (実行準備完了)”状態にあるが、但し 、主メモリ14内にロードされていない最適格なプロセスを探す。通常、最適格 なプロセスは、主メモリ14のみを待っている最も古いプロセスであると定義さ れるが、幾つかの実現においては、最適格に対する基準としての優先度も使用す る。また別の方法においては、最適格は、いかなる条件も(主メモリ14の割り 当てを除いて)即座の実行を妨げないという前提の下で任意の定義を取ることが できる。適格性の定義とは無関係に、プロセステーブル180内のフィールド、 例えば、’ base 1evel user priority (ベースレ ベルユーザ優先度)”及び#”recent processor usage  (最近のプロセッサ使用状況)がどのプロセスが最も適格であるかを定義する ために使用される。
プロセスが実行するためには、その全部のプロセスイメージが主メモリ14内に 存在しなければならない。一つのプロセスイメージに属する各セグメントはセグ メントテーブル90のエントリ内に記述される。各セグメントテーブル90のエ ントリは、そのセグメントに対して要求される主メモリ14の量を示すS 5I ZEフイールドを含む。主メモリ14内に要求されるスペースがこのプロセスイ メージの全てのセグメントに対して得られるときは、これらセグメントがスワッ プデバイス70から主メモリ14へとコピー、つまり、スワップイン(swap ped in)される。このメカニズムは、後に説明される5WAPINと呼ば れるルーチンによって達成される。全てのセグメントに対して主メモリ14内に 十分なスペースが得られないときは、先に得られたメモリスペースが開放され、 割り当てが再度試みられる。これはスプリットセグメントを合体し、次に、新し い方法にて、おそらくは、第5図のフリースペース内にフットするように、再ス プリットすることを可能にする(分割及び合体については、後により詳細に説明 される)。もしメモリ割り当てが不可能であるときは、5chedプロセスはそ れ自体を休眠状態にする。クロックルーチンが5chedプロセスを次の主要ク ロックチックにおいて電属させ、この時点において、5chedプロセスは5W APINを再度試みる。この遅延は、それが割り当てを再び試みる前に主メモリ 14が再構成する機会を与える。共有主メモリ14の再構成は、この遅延の間に 、他のプロセッサ上でランするメモリ14内のプロセスの移動に起因して起こる 。5WAPINがメモリ14内にスペースを割り当てることをそれでも失敗する ときは、主メモリ14内のスペースがスワップインが再度試みられる前に強制的 に再構成される。
強制的再構成は、メモリ14内に順次的に駐在するランしてないプロセスイメー ジを適格プロセスのイメージセグメントの全てに対して十分な主メモリ14が十 分に得られるまで解放することによって達成される。つまり、最後の手段として 、5LOC20リスト上の第一のスワップ可能なセグメントがメモリ再構成を強 制するためにスワップアウトされる。スワップインが成功すると、スワップイン されるべき次の最適格候補が主メモリ割り当てのためにプロセステーブル180 から選択される。スワップインがこれでも成功しないときは、5chedがメモ リ14の再構成ができるように次の主要クロックチックまで再度休眠状態に入れ られる。このループが全てのスワップされラン可能なプロセス(swapped  runnable processes)がスワップインされるまで継続され る。5chedプロセスのプロセステーブル180を通じてのルーピングは従来 のUNIXの場合と同様に起こるが、但し、主メモリ14内のスペースを確保す る方法は、本発明に独特のものであることに注意する。
WAPIN SWAPIN (スワップイン)は5chedプロセスから呼ばれる手順であり 、あるプロセスイメージに属する各セグメントに対して割り当て可能なフリーの 主メモリスペース50を見つける手順である。このスワップイン概念は、従来の UNIXにおいても存在するが、ここに説明されるその実現方法は本発明に特有 のものである。スワップイン手順は、5IOC20,5AVAIL30、及び5 ACTIVE 40リストを使用して主メモリ14の配置を決定する。あるプロ セスイメージ内の各セグメントに対して、スワップイン手順は、そのセグメント が主メモリ14内に既に存在するかチェックすることから開始するが、これは、 第4図に示されるSG LOADO値を含むセグメントテーブルフィールドSf lagSによって示される。
第8図は二重イメージとして参照される一つのこのような状況を示すが、ここで は、あるプロセスイメージのセグメントが主メモリ14内に存在しく格納されて おり)、また、スワップデバイス70上にも存在する(格納されている)。二重 イメージは、スワップイン手順があるプロセスイメージの全てのセグメントに対 して十分な主メモリ14を得ることに失敗したときに起こる。プロセスはメモリ 14内にそれがそのプロセスイメージのセグメントに対して得たスペースをメモ リ割り当てがそれがスワップインされることを次に試みたとき完結されるという 希望のもとに保持する。このプロセスがそのセグメントの全てに対して十分な主 メモリ14を確保するまで、これは二重イメージを持つプロセスであると定義さ れる。
主メモリ14内に十分なスペースが得られ、あるプロセスのイメージセグメント の全てがスワップデバイス70から主メモリ14内にコピーされたときにのみ、 このスワップイメージは解放される。二重イメージは、スワップアウトのための 第一の候補であるが、これは、これらのメモリ14内のスペースが、スワップイ メージがスワップデバイス70からまだ削除されてないために、解放されること のみを必要とし、コピーすることを要求しないためである。
部分的スワツピングはまたスワップイン手順が主メモリ14内にあるプロセスの 幾つかのセグメントに遭遇するが、他のセグメントが主メモリ14内にないよう な状況を作る。部分スワツピングはあるプロセスイメージのセグメントの総数の サブセットのみがそれによってスワップアウト・されるプロセスである。部分ス ワツピングは別のプロセスのセグメントがスワップインできるようにするために 行なわれる。部分スワツピングはまた成長させるためにあるプロセスの単一セグ メントがスワップアウトされるときにも行なうことができる。成長を許すために スワップアウトはそれが定位置において成長できないときメモリ14内のセグメ ントを成長させるための従来のリアルメモリ(つまり、ノン・ページト)法であ る。
つまり、メモリ14内のこのセグメントに続くスペースが既に割り当てられてお り(つまり、第5図の割り当て済メモリ60)、従って、このセグメントの成長 のために使用できない場合、このセグメントがスワップアウトされ、このサイズ が要求される成長を含むように調節され、これがそれを含むのに十分に大きなフ リーのメモリスペース50内にその新たなサイズにてスワップバックされる。幾 つかのメモリ管理システムはこの成長をこのセグメントをフリーのメモリスペー ス50のより大きな領域に移動することによって達成する。しかし、本発明にお いては、メモリ14からメモリ14へのコピーを行なうよりもセグメントをスワ ップするほうがより効率でありこの方法が取られる。これは、ワード毎(wor d t。
word)メモリ転送速度よりも速いブロック転送速度を持つ本発明に特有のハ ードウェアプラットホームに起因する。
この状況が二重イメージの存在によって生成されたか、或は部分スワップに起因 するかに関係なく、スワップインされるべきセグメントデータが主メモリ14内 に既に存在する場合は、これに対してそれ以上の割り当て処理は要求されない。
スワップインされるべきセグメントが主メモリ14内に割り当てられたスペース を持たない場合は、全セグメントを保持するのに十分なサイズの単一メモリブロ ックが5AVAILリストを走査することによって探される。少なくとも適当な サイズの単一のフリーのスペース50がメモリ14内に存在しないときは、セグ メント分割が考慮される。
セグメント分割(segment splitting )は、スワップインさ れるべきセグメントが分割可能であり、また、このプロセスが実行を行なうプロ セッサ10が第9図に示されるような未使用のデータコントロールレジスタセツ ト80を持っている場合に達成が可能である。データコントロールレジスタにつ いては、「マルチプロセッサシステムのためのグローバルレジスタ(Globa l Registersfor a Multiprocessor Syst em) Jという名称の発明の1本発明と譲受人を特徴とする特許出順環071 536゜198号において詳細に説明されている。通常は、データセグメントの みが分割可能であると定義されるが、但し、好ましい実施例の実現においては、 別の定義も受けつける。データコントロールレジスタセット80は、各プロセッ サ10に属するハードウェアシステムの主体である。各データコントロールレジ スタセット80は3つのコントロールレジスタ(DSEGxSSDSEGxE。
及びDSEGxDレジスタ、ここで、Xは0とデータセグメントの最大数との間 の値)から成り、これらは、論理から物理アドレスへのマツピングに使用される 。各データコントロールレジスタセット80は、下側境界(論理開始アドレス) 100、上側境界(論理終端アドレス)110、物理アドレス120を得るため に加えられるべき変位115を記録する。下側境界100、上側境界110、及 び実際の物理開始アドレス120は、第4図に示されるように、セグメントテー ブル90のエントリ内のS LB、S B、及びS BASEと呼ばれるフィー ルド内に記録される。データコントロールレジスタセット80は、これら断片( spl 1ts)をユーザがセグメントの断片を一つの連続したセグメントとし て解釈できるようにマツピングする。プロセッサ10当りのデータコントロール レジスタセット80の数がプロセスイメージ当りの断片の最大数を決定する。つ まり、各断片に対して、ユーザの論理アドレスをその物理位置にマツピングする ためのセットのレジスタが存在しなければならない。第6図の共有イメージプロ セステーブル190のエントリ内のフィールド(SI DATA AVAIL  )は幾つのデータコントロールレジスタセット80が未使用の状態にあり、従っ て、断片をマツピングするために使用できるかの追跡を行なう。現セグメントが 分割できることが決定された場合は、フリーメモリ50の最大の断片が予約され 、断片を記述するためにこの境界及び変位がデータコントロールレジスタセット 80の一つの中に入れられる。SG 5PLIT値がセグメントテーブル90の エントリのsr+agsフィールド内にこれが分割セグメントであることを示す ために入れられる。上側境界100、下側境界110、物理アドレス120の記 述がこの断片のためにセグメントトチ−プル90のエントリがまたこのセグメン トの前及0に対する未使用のデータコントロールレジスタセット80が存在し、 スワップインされるべきセグメントがメモリ14内に全部存在しない限り、この 分割プロセスが継続される。
現在の分割不能なセグメントに対してフリーのメモリスヘース50が存在しない 場合は、フリースペース50をいかにして生成すべきであるかという知的な選択 が行なわれる。スワップアウト候補のための6つの選択の優先度は以下の通りで ある。第一に、それらのセグメントの幾つかが既にスワップデバイス70に移動 されている共有プロセスイメージに属するセグメントがスワップアウトされる。
これらには、二重イメージセグメント及び部分的にスワップされたイメージが含 まれる。第二に、隣接するフリーのスペース50と一緒にした場合、現セグメン トに対して十分なサイズを持つ休眠プロセス150に属するセグメントがスワッ プアウトされる。第三に、一体となって現セグメントに対して十分なスペースを 解放する隣接する休眠プロセス150に属するセグメントがスワップアウトされ る。第四に、隣接するフリーのスペース50と一体となって現セグメントに対し て十分なサイズを与えることができるランが可能なプロセス160及び休眠プロ セス150の両方に属するセグメントがスワップアウトされる。第五に、一体と なって現領域に対する十分なスペースを解放できる隣接するラン可能な候補16 0及び休眠候補150に属するセグメントがスワップアウトされる。最後に、最 終的な手段として、共有メモリセグメントがスワップアウトされる。第10図は 上に説明されたスワップアウト手順に対するフリースペース50、スワップアウ ト候補150及び160、並びに非候補170を含むメモリ配列を示す。つまり 、図面内の太い矢印下の全てのセグメントは必要であれば入りセグメントに対し て十分な主メモリ14のスペースを解放するためにスワップアウトすることがで きる。
メモリがスワップイン手順によっであるセグメントに割り当てられると、どのセ グメントが物理的コピーを必要とするかの追跡を行なうために値SG JUST  INがセグメントテーブルのエントリ90のs r I agsフィールド内 にセットされる。つまり、既にデータを含むセグメントはスワップデバイス70 からコピーイン(copled in )される必要はなく;これらのs f  I agsフィールドはこれを値SG LOADを含むことによって示す。この 状況は、プロセスが二重イメージである場合、或は部分的にスワップアウトされ た場合に起こる。例えば、あるプロセスのデータセグメントのみがスワップアウ トされた場合、そのデータセグメントのみがスワップデバイス70からメモリ1 4へとコピーパック(copied back )される。第6図190の共有 イメージプロセステーブルエントリのフィールドSI 5EGS、1Nにの割り 当てられた(メモリ内)セグメントのカウントもこのとき増分される。
割り当てられたセグメントのカウントがこのプロセスイメージに対するセグメン トの総数に等しい場合、メモリ14内のスペースは全イメージに対して割り当て られており、このためスワップデバイス上のセグメントはメモリ14内にコピー インすることができる。これらセグメントは逐次的に処理される。この処理には 、セグメントテーブルのエントリをこれが他のプロセスによってアクセスできな いようにするためにロックする動作、そのセグメント内に含まれるサイズS 5 IZEのデータをスワップデバイス70のセグメントテーブル90のエントリフ ィールF S 5WAPADDR70内に保存されるアドレスの所から主メモリ 14のセグメントテーブル90のエントリフィールドS BASE内に保存され るアドレスに物理的にコピーする動作、及びセグメントテーブル90のエントリ のsflagsフィールド内の値SG LOADをセットし、メモリ14が現在 このセグメントデータを含むことを示す動作が含まれる。
今スワップインされた任意のセグメントが共有メモリセグメント(一つ以上のプ ロセス間で共有されるセグメント)である場合は、各共有イメージプロセステー ブル190のエントリが更新される。これには、参照カウントを更新する動作、 及びそのプロセスイメージに対する全てのセグメントが現在メモリ14内に存在 する場合そのプロセスイメージをロード済とマークする動作が含まれる。
現在のプロセスに対するメモリ割り当てが成功裡に完了すると、これは実行が可 能となる。5ched手順は、すると、プロセステーブル180を、スワップイ ンされるべき別のし適格プロセスが存在しないかの検索に移り、上に説明のルー プが継続される。
5WAPOUT Out segはスワップインの際に呼出される手順であり、セグメント内のデ ータをメモリ14がらスワップデバイス70に移動することによって主メモリ1 4内に空スペース50を生成する。スワップアウトされるべき特定のセグメント は上に述べたように決定される。
最初に、その内容がスワップアウトされるべきセグメントのセグメントテーブル エントリが他のプロセスによってアクセスできないようにするためにロックされ る。
第4図のセグメントテーブル9o内のエントリがこのセグメントが一つ以上の断 片に分割されていることを示す場合(sflagsが値SO5PLITを含む場 合)、これら断片は再結合、つまり、合体される。全ての断片に対してスワップ デバイス7o上に連続したスペースが割り当てられること、及びこれら断片の内 容がメモリ14がら書き込まれたときこの領域内に併合されることを暗示する合 体動作(coalescing)が第11図に示される。
サイズS 5IZHの分割された或は未分割のセグメントが主メモリ14のセグ メントテーブル9oのエントリフィールドS BASE内に保存されたアドレス の所からスワップデバイス70のセグメントテーブル9oのエントリフィールド S 5WAPADDR70内に保存されたアドレスに物理りにコピーされる。次 に、具体的な状況に依存して、スワップアウト状態を反映するようにフラッグが 更新される。共有イメージプロセステーブル190のエントリ参照カウント(]  5EGS IN) 、ッ*す、メモリ14内のセグメントの数のカウントがこ のセグメントを共有する各イメージに対して減分される。共有イメージプロセス テープ)Iy 190 ノエント!J 7 (−ルドSI DATA AVAI L37がこれら断片の合体を反映するように調節される。
値SG 5PLIT、 SG JUST IN、 及ヒSG LOADカセグメ ントテーブルのエントリフィールドsflagsから、これがもはや断片ではな く、これに対してメモリがもはや予約されておらず、またこれに対するデータが 主メモリ14内に含まれないことを示すために消却される。このセグメントを記 述するデータコントロールレジスタセット8゜も消却される。
5WAPOUT (スワップアウト)がフォーク(f’ork)の結果として呼 出された場合(親プロセスイメージが新たな子プロセスイメージを生成するため に親プロセスイメージを破壊することなくスワップデバイス7oにコピーされて いることを示す場合)、このセグメントに対して主メモリ14は解放されない。
他の全てのケースにおいては、あるプロセスのスワップアウトセグメントに対す る主メモリ14内のスペースは解放される。フォークの場合は、スワップデバイ ス70上の子プロセスイメージは後に子プロセスが実行できるようになったとき にスワップインされる。この標準的な実メモリ(非ベージド)生成方法が第12 図に示される。
好ましい実施例の説明がなされたが、本発明の精神から逸脱することなく様々な 変更が考えられるものである。
従って、本発明の範囲は、この好ましい実施例の説明によってではなく、付録の 請求の範囲によって規定されるものである。
付録A メモリ管理プログラム疑似コード 1 、O5chedO /*手続き: 5chedO *目的:全ての適格イメージをスワップインする。
*/ 5hed() loop: for (各プロセステーブルエントリ)最も古い適格イメージをchoose if (適格イメージがない) 1eep unload: イメージをスワップインすることをatte■pt1f(スワップインできない )( svap back out / *合体*/再度スワップインをatteII pt /現在は再分割できる*/ if(成功) ループにgo/*スワップインする次のプロセス*を選択*/ 1se 1r(たった今プロセスが出さればかり)1秒をd81ay アンロードにgo/*再度運び込むことを試みる*/ else 割り当てられたリスト上の最初の候補を5vap out再度スワップインする ことをatte■ptif(成功) ループにgo /*スワップインするべき次の*プロセスを選択*/ 1秒間delay / *運び込むことができない、*遅延&*/ ループにgo /*スワップインするべき次の*プロセスを選択*/ ) / * 5ched * / 2、0 swapin /*手続き: swaplnO *目的:指定された共有イメージの全てのセグメントをスワップインする。
*/ swapin (sl ptr ) /*イメージの全てのセグメントに対してメモリを割亭り当てる*/ for (イメージ内の各セグメント)(1f’(既にメモリを持つ) これをuse else ( セグメントに対してメモリをfind /*1n segO*/ if(メモリーを見付けることができない)共有テキストを強制的に出してre t ry/*in segO*/ i「(メモリが発見された) /*メモリを持つ*/ for (このセグメントを共有する全てのイメージ)割り当てられたセグメン トのカウントをadjust/*s1segs in*/ if(全てセグメントが成功裡にメモリを割り当てられた)f’or (イメー ジ内の各セグメント)(スワツピングのためにセグメントをl0ek/ * s waplock() * // * do physio* / lf(セグメントがロードされてない)(妥当ブロックをswap /*成長の場合は不当ブロック*/ /*或はセグメントを生成*/ セグメントフラッグ内にSG LOADをset/ * physioが完了* / if(スワップイメージが存在する) /*生成の場合は存在しない*/ スワップスペースをfree /*次のループのでロックは解放しない、それまで*保持*/ /*参照カウントが調節された後*/ )/*for−参照カウントを調整し、場合によっては5LOA*Dをセット* / for (イメージ内の各セグメント)(for (各共有イメージ)( if(セグメントカウントが全てのセグメントが中にあることを示す) if(中のセグメントのどれもが二重イメージでない)SLOADをset/* 二重イメージに対してphysioを*遂行することが必要*/ スワップ及びメモリ参照カウントをupdateSG JUST INをset  offスワップロックをrelease / * 5vaprele() * /失敗をreturn )/*スワップイン*/ 3、 0 swapout /*手続き:スワップアウト 木目的:指定されたイメージ内の全てのセグメントを*スワップアウトする。* / 5vapout (si ptr ) for (イメージ内の各セグメント)(セグメントをswap out /*out seg() */ if(スワップデバイス上に子供を生成するためにスワップアウトした)( 子供をrunq上にput 親をwake )/*スワップアウト*/ 4、Oinseg /*手続き: in seg *目的:指定されるセグメントに対してメモリを見付率ける。他のセグメントが それをできるようにするた*めに場合によっては強制的にスワップアウトする。
*/ in seg (seg ptr%seg type、sl ptr)メモリ割 り当てをattempt /*十分なサイズのフリーエントリが存在しない、可*能ならば分割を試みる* / 1f(失敗し、これが分割可能なセグメントである)/*データ或は5hies 本/ ir(共有メモリセグメント) 全ての共有セグメントに使用できる制御レジスタの最小をfind while (失敗し、制御レジスタ及びメモリが空いている)( 最大の空きchunkをia!Ioc / * tree−+ tai ] * /if(成功)( 全ての共有イメージに対してレジスタカウントをdecrement セグメントテーブル内にスプリットをrecordSG 5PLITセグメント フラツグをオンにset残りにメモリ割り当てすることをatt131ptif (失敗した)( 既に出された幾らかのセグメントを持つ共有イメージのセグメントをswap  out 入りセグメントに再びメモリー割り当てすることをattempt H(失敗した)( 入りセグメントに対して隣接の空きペースと一体となって十分なサイズを持つ休 眠状態の候補をswap out再び入りセグメントにメモリを割り当てること をattempt if(失敗した)( 入りセグメントに対して一体となって十分なスペースを解放する隣接休眠候補を swap out再び入りセグメントにメモリを割り当てることをattemp t if(失敗した)( 入りセグメントに対して隣接する空きスペースと一体となって十分なサイズを持 つラン可能/休眠候補をswapout 再び入りセグメントに対してメモリを割り当てることをattest if(失敗した)( 入りセグメントに対して一体となって十分なスペースを解放する隣接するラン可 能/休眠候補を5vap out再び入りセグメントに対してメモリを割り当て ることをatte■pt */ スワツピングのために1ock / * swaplock()本 / 1r(スワップ可能なSG 5PLIT セグメント)(if(セグメントがS G LOADEDテあル)(/*全てのスプリットがなければならな(為、スワ ップデバイス上で合体*/ 全てのスプリットに対して十分に大きなスワ・ンブスペースをalloc f’or (このセグメントを共有する各イメージ)(参照カウントをadju st SLOADをset off for (各スプリット)( スワップデバイスにcopy / * physioを遂行率/ /*ラフオークスワップデバイス上生成されてい*る子供、親のメモリを解放す るな。*/lf(フォーキングでないとき) メモリをf’ree for (このセグメントを共有する各イメージ)セグメントカウントをadj ust / * physloが遂行されてない 二重イメージ或は全ス*ブリットが割 当てられてない*/ for (各スプリット)( メモリをfree for (このセグメントを共有する各イメージ)セグメントカウントをadj ust SG 5PLITをset off /*オンになってないときもある*/ SG JUST INをset off/*スワップインが再割当て要求*/ l else if(スワップ可能なSG LOADのセグメント)(/*スプ リットでない*/ SG LOADをオフに5et f’or (このセグメントを共有する各イメージ)(参照カウントをadju st セグメントカウントをadjust SLOADをset orf if(セグメントが生成されている) /*上セグメントr nvallld−0*/セグメントカウントをadjus t /*スワップスペースを割当てる必要なし*/else ( if(スワップイメージが存在する) これをuse else スワップスペースをalloc スワップスペースにcopy / * physioを遂行する*/ /* フォーク スワップデバイス上で生成されて率 いる子)*/ / * do not/ *親のメモリを解放*/if(フォーキングなし) メモリをtree t else t / * SG LOAD’dでない或はスワップ可能で*な い(まだ共有されている)*/ if’ (SQ LOADでないがメモリを持つ)(/*二重セグメント*/ メモリをfree f’or (このメモリを共有する各イメージ)セグメントカウントをupda te /本else まだ共有されている。何もしない。*/スワップOツクをrel ease / * 5vapreleO* /1 /*out seg */ 本目的:指定されたメモリが休眠スワップアウト候補率であるか否かを決定する 。*/ is candr (メモリノード、siptr)1rCセグメントがSG L OCK’dC’ある)失敗をreturn 1f(セグメントがプロセスOのksegエリア)失敗をreturn if(共有セグメントであり、強制的に出されてない)/ * r refcn t、FORcE OUT * /失敗をreturn for (このセグメントを共有する各セグメント)(1f((イメージがスワ ップアウト中である)或は(イメージを共有する全てのプロセスが休眠中でない )) 失敗をreturn If(イメージを共有する任意のプロセスがシステムプロセスである)或は (イメージがメモリ内でロックされている))失敗をreturn *目的: 指定されたメモリがラン可能/休眠スワップアウト候補であるか否か を決定する。
*/ is candr (メモリノード、1sptr)1rCセグメントカSG L OCK’dテある)失敗をreturn 1rCセグメントがプロセス0のkseg エリアである)失敗をreturn if(共有セグメントであり、強制的に出されてない/ * r refcnt 、FORCE OUT * /失敗をreturn for (このセグメントを共有する各セグメント)(1f((イメージがスワ ップアウト中である)或は(イメージがマイクロタスクを持つ)或は(共有して いる任意のプロセスが現在ランしている)) 失敗をreturn if(イメージを共有する任意のプロセスがシステムプロセスであり、メモリ内 でロックされており、或はラン可能であるが、十分に長い期間アウトされてない ) 失敗をreturn Fig、 1 Fig、 2b Fig、 5 Fig、 6 Fig、 7 Fig、 8 二重イメージ概念 Fig、 9 Fig、10 要 約 書 本発明は高速の高度に並列化されたマルチプロセッサアーキテクチュア(10) 上で実行されるための並列メモリスケジューラ(1120)を提供する。このオ ペレーティングシステムソフトウェアは別のプロセスにスワップインすることを 容易にするためのプロセスイメージの知的及び効率的なスワップアウトを提供す る。十分なサイズの単一の連続したスペースが存在しない場合でも、データセグ メントの分割及び合体を使用して、セグメントが現在空きメモリ(50)内にフ ィツトされる。データコントロールレジスタセット(80)によってこれらスプ リットをマツピングすることにより、アドレススペースのユーザの連続したビュ ーが保持される。二重イメージ(14,17)の存在、及び部分的スワツピング は効率的で、高速のスワツピングを可能にする。スワップアウトに対する候補( 150,160,170)は他のプロセスのスワップインを最も効率的に可能に する候補のみを選択するという知的な方法によって選択される。
国際調査報告

Claims (50)

    【特許請求の範囲】
  1. 1.コンピュータシステム内の主メモリを管理するためのメモリマネジャを動作 するための改良された方法において、前記コンピュータシステムによって実行さ れるべきプロセスが複数のセグメントに分割され、前記コンピュータシステムが スワツプデバイスと命名される二次メモリを含み、前記メモリマネジャが主メモ リスペースが空いているとき実行準備の整ったプロセスのプロセスセグメントを スワツプインし、また現在実行不能なプロセスのプロセスセグメントをスワツプ アウトし、この改良された方法のステップが: 少なくとも全ての主メモリセグメントを識別するセグメントロケーションリスト 、現在割り当てられているメモリセグメントを識別するセグメントアクティブリ スト、及び現在割り当てられてないメモリセグメントを識別するセグメント利用 可能リストを構築するステップと、前記セグメント利用可能リストを主メモリに スワツプインされる準備ができたプロセスのセグメントに対する十分に大きな未 占拠のメモリセグメントが存在するかチェックするステップと、 十分な未占拠の主メモリスペースが存在しない場合、主メモリにスワツプインさ れる準備ができたプロセスの任意のセグメントに対するスペースが存在しないか 、前記セグメント利用可能リストを再チェックするステップと、 前記セグメント利用可能リストを再チェックしたが結果として十分な未占拠のメ モリスペースが発見できなかったとき、前記セグメントアクティブリストをチェ ックし、前記主メモリからスワツプアウトされるべき候補を捜すステップと、 前記主メモリから前記候補をスワツプアウトするステッブと、 前記候補を主メモリからスワツプアウトした後に前記セグメント利用可能リスト を更新するステップと、を備えていることを特徴とする改良された方法。
  2. 2.前記セグメントロケーションリストが主メモリ内の占拠及び未占拠の両方の 全てのセグメントの物理位置によって順序付けられることを特徴とする請求項1 に記載の改良された方法。
  3. 3.前記セグメントアクティブリストがセグメントサイズによって順序付けられ ることを特徴とする請求項1に記載の改良された方法。
  4. 4.前記セグメント利用可能リストがセグメントサイズによって順序付けられる ことを特徴とする請求項1に記載の改良された方法。
  5. 5.前記セグメントロケーションリスト、セグメント利用可能リスト、及びセグ メントアクティブリストが循環二重リンクリストであることを特徴とする請求項 1に記載の方法。
  6. 6.前記の実行されるべきプロセスのセグメントが主メモリ内にスワツプインさ れるまで前記のセグメント利用可能リストをチェックするステップ、前記のセグ メント利用可能リストを再チェックするステップ、前記のセグメントアクティブ リストをチェックするステップ、前記の候補をスワツプアウトするステップ及び 前記のセグメント利用可能リストを更新するステップを順番に反復するステップ と、 主メモリ内の現セグメントの位置及び占拠状態を反映するように前記セグメント ロケーションリスト、セグメント利用可能リスト及びセグメントアクティブリス トを更新するステップと、をさらに含むことを特徴とする請求項1に記載の改良 された方法。
  7. 7.主メモリ内のスペースの割り当てを待っている間に未割り当てのプロセスセ グメントを格納するためのスワツプデバイスを含むコンピュータシステム内でプ ロセスイメージのセグメントに対して主メモリスペースを割り当て及び割り当て 解除するためにスワツプイン及びスワツプアウトを使用するメモリマネジャを動 作するための改良された方法において、この改良された方法のステッブが: 主メモリスペースをプロセスのセグメントに割り当てるために第一のスワツプイ ンを遂行し、スワツプインが主メモリスペースを前記セグメントに割り当てるこ とを失敗した場合にスワツプイン失敗指標を提供するステッブと、 前記スワツプイン失敗指標に応答して主メモリスペースを前記セグメントに割り 当てることを失敗した前記スワツプインによって得られた主メモリスペースを解 放するステップと、 前記セグメントを少なくとも二つの部分に分割するステッブ、及び主メモリスペ ースを前記分割セグメントの少なくとも一部に割り当てる第二のスワツプイン動 作を遂行するステップと、 を備えていることを特徴とするメモリマネジャを動作するための改良された方法 。
  8. 8.セグメントが未割り当て主メモリスペースの既知の状態に基づくサイズを持 つ部分に分割されることを特徴とする請求項7に記載の方法。
  9. 9.主メモリ内の最も大きな未割り当てスペースが分割セグメントの少なくとも 一部のサイズを決定するための基礎としで使用されることを特徴とする請求項7 に記載の方法。
  10. 10.前記の第二のスワツプイン動作が前記のセグメントの少なくとも一部に対 して十分なメモリスペースを割り当てることを失敗したとき、前記分割セグメン トを含むプロセスイメージに対して主メモリをさらに割り当てる試みを事前に決 定された時間だけ遅延し、こうしてこの間に前記メモリマネジャを持つ他のプロ セスイメージがそれらが前記主メモリスペースの再構成を起こすように主メモリ スペースの割り当て及び割り当て解除を行なうようにすることを特徴とする請求 項7に記載の方法。
  11. 11.前記遅延の後に第三のスワツプイン動作を試み、前記第三のスワツプイン が前記プロセスイメージの任意のセグメントに対して十分な主メモリスペースを 割り当てるのに失敗した場合メモリを強制的に再構成するステッブがさらに含ま れることを特徴とする請求項10に記載の方法。
  12. 12.主メモリが主メモリスペースを求めるプロセスの全てのセグメントに対し て十分な主メモリスペースが利用可能にまで主メモリからプロセスイメージをス ワツプアウトすることによって強制的に再構成されることを特徴とする請求項1 1に記載の方法。
  13. 13.前記スワツプアウトされたプロセスイメージが前記スワツプアウトの際に 前記スワツプデバイス上に置かれ、任意のスワツプアウトされたプロセスイメー ジの分割セグメントの複数の部分が合体されることを特徴とする請求項12に記 載の方法。
  14. 14.コンピュータシステム内のスワツプデバイス上に存在するプロセスイメー ジのセグメントに対して主メモリを割り当て及び割り当て解除するためにスワツ プイン及びスワツプアウトを使用するメモリマネジャを動作するための改良され た方法において、この改良された方法が: 前記のスワツプデバイス上に存在する一つのプロセスイメージの少なくとも一つ のセグメントに対して主メモリスペースを割り当てるためにスワツプイン動作を 遂行し、前記スワツプイン動作が前記一つのセグメントが主メモリ内に既にスペ ースを割り当てられているか否かを決定するためにチェックを行ない、割り当て られているときは、主メモリスペースを前記一つのプロセスの他のセグメントに 割り当てるためのもう一つのスワツプ動作を遂行し、既に割り当てられてない場 合は、前記スワツプイン動作が一つのセグメント全体を格納するのに十分に大き な未割り当ての主メモリスペースを探し、主メモリスペースが割り当てられた場 合は、そのセグメント及びスワツプデバイス上のイメージに対する主メモリスペ ースを保持し、こうして二重イメージを生成するするステッブを含み、結果とし て、このセグメントを主メモリからスワツプアウト動作によって除去したいとき 、これがこのセグメントイメージをスワツプデバイスにコピーすることなく単に そのメモリスペースの割り当て解除によって達成できるようにされることを特徴 とする改良された方法。
  15. 15.あるプロセスの幾つかの割り当てられたスペースをそのプロセスの全てに 主メモリスペースが割り当てられるまで保持するステップがさらに含まれること を特徴とする請求項14に記載の改良された方法。
  16. 16.前記スワツプデバイスからプロセスイメージをそのプロセスイメージの全 てのセグメントに主メモリスペースが割り当てられたときに解放するステップが さらに含まれることを特徴とする請求項15に記載の改良された方法。
  17. 17.コンピュータシステム内のスワツプデバイス上に存在するプロセスイメー ジのセグメントに対して主メモリを割り当て及び割り当て解除するためにスワツ プイン及びスワツプアウトを使用するメモリマネジャを動作するための改良され た方法において、この改良された方法が: 別のプロセスのセグメントに対して主メモリスペースを割り当てるためのスワツ プインを可能にするために未割り当て主メモリスペースを生成するための部分ス ワツプアウトを一つのプロセスの全てではないセグメントをスワツプアウトする ことによって遂行するステップを含むことを特徴とする改良された方法。
  18. 18.前記の部分スワツプを遂行するステップがプロセスイメージの全体をスワ ツプアウトすることなくスワツプアウトされたセグメントの成長を可能にするこ とを特徴とする請求項17に記載の改良された方法。
  19. 19.スワツプデバイスを持つコンピュータシステム内でプロセスイメージのセ グメントに対して主メモリスペースの翻り当て及び割り当て解除を行なうために スワツプイン及びスワツプアウトを使用するメモリマネジャを動作するための改 良された方法において、この改良された方法のステップが: 一つのプロセスイメージの少なくとも一つのセグメントに対して主メモリスペー スを割り当てるために一つのスワツプイン動作を遂行するステップと、主メモリ から前記の一つのセグメントを除去するためにスワツプアウト動作を遂行するス テップと、前記一つのセグメントのサイズを調節するステップと、前記サイズを 調節された一つのセグメントに対して主メモリスペースを割り当てるためにもう 一つのスワツプイン動作を遂行するステップと、 を備えていることを特徴とする方法。
  20. 20.スワツプデバイスを持つコンピュータシステム内においてランされるべき プロセスのセグメントに対して主メモリスペースを割り当て及び割り当て解除す るためにスワツプイン及びスワツプアウトを使用するメモリマネジャを動作する ための改良された方法において、少なくとも一つのプロセスが主メモリ内に割り 当てられた少なくとも一つのセグメントを持ち、この改良された方法が: 前記一つのセグメントのサイズに対応するサイズの主メモリスペースの割り当て を解除するために前記一つのセグメントに対してスワツプアウト動作を遂行する ステッブを含むが、ここで、前記一つのセグメントが分割可能であり、この方法 がさらに、前記スワツプアウトされた一つのセグメントを少なくとも二つの分割 し、前記部分が各部分に対して十分に大きなメモリスペース内にスワツプインで き、また前記一つのセグメントのスワツプアウトによって生成された未割り当て の主メモリスペースによって収容可能なサイズを持つもう一つのセグメントがス ワツプインできるようにするステップを含むことを特徴とする改良された方法。
  21. 21.前記もう一つのセグメントが前記の一つのセグメントと同一プロセスから のものであることを特徴とする請求項20に記載の改良された方法。
  22. 22.前記のもう一つのセグメントが前記一つのセグメントを持つプロセスとは 異なるプロセスからのものであることを特徴とする請求項20に記載の改良され た方法。
  23. 23.前記もう一つのセグメントが分割できないタイプのものであることを特徴 とする請求項20に記載の改良された方法。
  24. 24.論理主メモリアドレスを主メモリ内の物理位置にマッピングできるように するために前記分割された一つのセグメントに対して下側境界、上側境界及び変 位を記録するステップがさらに含まれることを特徴とする請求項20に記載の改 良された方法。
  25. 25.前記下側境界、上側境界及び変位が前記コンピュータシステム内のセット のレジスタ内に記録されることを特徴とする請求項24に記載の改良された方法 。
  26. 26.前記コンピュータシステムが所定の数の分割可能なセグメントに分割でき るように所定の数のセットのレジスタを持ち、これによって、各分割セグメント に対して主メモリの論理アドレスから物理アドレスヘのマッピングが提供できる ようにされることを特徴とする請求項25に記載の改良された方法。
  27. 27.一つの分割されたセグメントがスワッピングアウトされた段階で下側境界 、上側境界及び変位を含むセットのレジスタが解除され、これによって、他の分 割可能なセグメントの分割のために使用できるようにされることを特徴とする請 求項26に記載の改良された方法。
  28. 28.前記スワツプアウトされた分割セグメントの複数の部分を合体するステッ プがさらに含まれることを特徴とする請求項27に記載の改良された方法。
  29. 29.主メモリ内のスペースの割り当てを待っている間に未割り当てのプロセス セグメントを格納するためのスワツプデバイスを含むコンピュータシステム内で プロセスイメージのセグメントに対して主メモリスペースを割り当て及び割り当 て解除するためにスワツプイン及びスワツプアウトを使用するメモリマネジャを 動作するための改良された方法において、この方法が:主メモリから前記メモリ マネジャの効率を向上させるという基準に基づいてスワツプアウトの対象として 選択されたセグメントをスワツプアウトすることによって未割り当ての主メモリ スペースを生成するステップを含むことを特徴とする方法。
  30. 30.前記メモリマネジャの効率を向上させるためにスワツプアウトの対象とし て選択される一つのセグメントが割り当てられた主メモリスペースを持ち、また 、前記スワツプデバイス上に一つのイメージを持つセグメントであることを特徴 とする請求項29に記載の改良された方法。
  31. 31.前記セグメントマネジャの効率を向上させるためにスワツプアウトの対象 として選択される一つのセグメントがラン可能でないプロセスイメージに属し、 またスワツプアウトされるべきセグメントのサイズと結合されたときスワツプイ ンされるべき現セグメントを収容するのに十分に大きなサイズの未割り当ての主 メモリスペースに隣接するセグメントであることを特徴とする請求項29に記載 の改良された方法。
  32. 32.前記メモリマネジャの効率を向上させるためにスワツプアウトの対象とし て選択される複数のセグメントがラン可能でないプロセスの一つであり、またも う一つのラン可能でないプロセス内のもう一つのセグメントに隣接し、ここで、 この一つ及び隣接するもう一つのプロセスのセグメントの結合されたスペースが スワツプインされるべき現セグメントを収容するのに十分に大きなものであるこ とを特徴とする請求項29に記載の改良された方法。
  33. 33.前記メモリマネジャの効率を向上させるためにスワツプアウトの対象とし て選択される複数のセグメントがもう一つのラン可能なプロセス内のもう一つの セグメントに隣接するラン可能でないプロセスの一つであり、ここで、この一つ 及び隣接するもう一つのプロセスのセグメント及び隣接する未割り当ての主メモ リスペースの結合されたスペースがスワツプインされるべき現セグメントを収容 するのに十分に大きなものであることを特徴とする請求項29に記載の改良され た方法。
  34. 34.前記メモリマネジャの効率を向上させるためにスワツプアウトの対象とし て選択される複数のセグメントがラン可能なプロセスのもう一つのセグメントに 隣接するラン可能でないプロセスの一つであり、ここで、前記一つ及びもう一つ のプロセスのセグメントの結合されたスペースがスワツプインされるべき現セグ メントを収容するのに十分に大きなものであることを特徴とする請求項29に記 載の改良された方法。
  35. 35.前記メモリマネジャの効率を向上させるためにスワツプアウトの対象とし て選択される一つのセグメントが一つ以上のプロセスによって共有されるセグメ ントであることを特徴とする請求項29に記載の改良された方法。
  36. 36.コンピュータシステム内の主メモリを管理するためのメモリマネジャを動 作するための改良された方法において、前記コンピュータシステムによって実行 されるべきプロセスが複数のセグメントに分割され、前記コンピュータシステム がスワツプデバイスと命名される二次メモリを含み、前記メモリマネジャが主メ モリスペースが利用可能なとき実行準備が整ったプロセスのプロセスセグメント をスワツプインし、また現在実行できないプロセスのプロセスセグメントをスワ ツプアウトし、この改良された方法が: 最適格なスワツプイン候補を選択するステップと、主メモリスペースを前記最適 格候補プロセスイメージに対して割り当てるためのスワツプイン動作を遂行する ステップと、 前記スワツプイン動作が前記最適格候補プロセスイメージに対して主メモリスペ ースを割り当てるか或は割り当てないかを決定するステップと、 前記スワツプイン動作が前記最適格候補プロセスイメージの全体を収容するのに 十分な主メモリスペースを割り当てないとき、前記最適格候補プロセスイメージ に対するスワツプイン動作の際に確保された割り当てられた主メモリスペースを 解放するためにスワツプアウト動作を遂行するステップと、 を備えていることを特徴とする方法。
  37. 37.前記最適格候補プロセスイメージに対して主メモリスペースを割り当てる ためにもう一度のスワツプイン動作を遂行するステップと、 前記もう一度のスワツプイン動作が前記最適格候補プロセスイメージの全体に対 して主メモリスペースを割り当てるか否かを決定するステップと、 前記もう一度のスワツプイン動作が前記最適格候補プロセスイメージの全体に対 して十分な主メモリスペースを割り当てない場合、前記最適格プロセスイメージ に対して主メモリを割り当てる動作を所定の期間だけ中断するステップと、をさ らに含んでいることを特徴とする請求項36に記載の改良された方法。
  38. 38.前記最適格候補プロセスイメージに対して主メモリスペースを割り当てる ためにもう一度のスワツプイン動作を遂行し、前記もう一度のスワツプイン動作 が前記最適格候補プロセスイメージの全体に対して主メモリスペースを割り当て るか否かを決定するステップと、前記スワツプイン動作が前記最適格候補プロセ スイメージの全体を収容するのに十分なメモリスペースを割り当てない場合、あ る割り当てられたセグメント位置の主メモリスペースの割り当て解除のためにも う一度のスワツプアウト動作を遂行するステップと、前記最適格候補プロセスイ メージに対して主メモリスペースを割り当てるためにさらにもう一度のスワツプ イン動作を遂行するステップと、 前記さらにもう一度のスワツプイン動作が前記最適格候補プロセスイメージの全 体に対して主メモリスペースを割り当てるか否かを決定するステップと、前記さ らにもう一度のスワツプイン動作が前記最適格候補プロセスイメージの全体を収 容するのに十分な主メモリスペースを割り当てない場合、前記最適格プロセスイ メージに対する主メモリスペースの割り当てを所定の期間だけ中断するステップ と、をさらに含んでいることを特徴とする請求項36に記載の改良された方法。
  39. 39.前記スワツプイン動作が前記最適格候補プロセスイメージの全体を収容す るのに十分な主メモリスペースを割り当てない場合、次に最も適格なスワツプイ ン候補を選択するステップがさらに含まれることを特徴とする請求項38に記載 の改良された方法。
  40. 40.コンピュータシステム内の主メモリを管理するためのメモリマネジャを動 作するための改良された方法において、前記コンピュータシステムによって実行 されるべきプロセスが複数のセグメントに分割され、前記コンピュータシステム がスワツプデバイスと命名される二次メモリを含み、前記メモリマネジャが主メ モリスペースが利用可能なとき実行準備の整ったプロセスのプロセスセグメント をスワツプインし、また現在実行できないプロセスのプロセスセグメントをスワ ツプアウトし、この改良された方法のステップが: プロセスの各セグメントに対してそのセグメントに対して主メモリが割り当てら れているか否かを決定するステッブと、 主メモリスペースがあるセグメントに対して割り当てられてないことが決定され たとき、主メモリスペースがそのセグメントに対して確保できるか否かを決定す るステッブと、 主メモリスペースがそのセグメントに対して確保できないことが決定されたとき 、共有セグメントが主メモリから強制的に除去されることを許しながらそのセグ メントに対して主メモリスペースを確保することを再度試みるステップと、 を備えていることを特徴とする方法。
  41. 41.前記主メモリスペースを確保するステップが:そのセグメントを収容する のに十分に大きな任意の未割り当ての主メモリスペースが存在しないか否か決定 するために主メモリの探索を遂行するステップから成ることを特徴とする請求項 40に記載の改良された方法。
  42. 42.前記主メモリスペースを確保するステップが:そのセグメントを現在未割 り当ての主メモリスペース内にフィットできる複数の部分に分割するステップか ら成ることを特徴とする請求項40に記載の改良された方法。
  43. 43.前記主メモリスペースを確保するステップが:既にスワツプアウトされた 幾つかのセグメントを持つ他のプロセスのセグメントをスワツプアウトするステ ッブから成ることを特徴とする請求項40に記載の改良された方法。
  44. 44.前記主メモリスペースを確保するステップが:隣接する未割り当て主メモ リスペースと一体となってそのセグメントを収容するのに十分に大きなランでき ないプロセスのセグメントをスワツプアウトするステップから成ることを特徴と する請求項40に記載の改良された方法。
  45. 45.前記主メモリスペースを確保するステップが:隣接する未割り当て主メモ リスペースと一体となってそのセグメントを収容するのに十分なランできない或 はランできるプロセスのセグメントをスワツプアウトするステップから成ること を特徴とする請求項40に記載の改良された方法。
  46. 46.前記主メモリスペースを確保するステップが:隣接する未割り当て主メモ リスペースと一体となってそのセグメントを収容するのに十分に大きな他のラン できないプロセス及びランできるプロセスの隣接する複数のセグメントをスワツ プアウトするステップから成ることを特徴とする請求項40に記載の改良された 方法。
  47. 47.前記主メモリスペースを確保するステップが:最初に、そのセグメントを 収容するのに十分に大きな任意の未割り当ての主メモリスペースが存在するか否 かを決定するために主メモリの探索を遂行し、そのセグメントを収容するのに十 分な主メモリスペースが発見できない場合は、 第二に、そのセグメントを現在未割り当ての主メモリスペース内にフィットする 複数の部分に分割することを試み、そのセグメントの前記複数の部分が現在未割 り当ての主メモリスペースにフィットしないときは、第三に、既にスワツプアウ トされた幾らかのセグメントを持つ他のプロセスの複数のセグメントをスワツプ アウトし、そのセグメントがこうして割り当て解除された主メモリスペース内に フィットしないときは、第四に、隣接する未割り当ての主メモリスペースと一体 となってそのセグメントを収容するためにランできないプロセスの複数のセグメ ントをスワツプアウトし、そのセグメントがこうして確保された未割り当て主メ モリスペース内にフィットしないときは、 第五に、そのセグメントを隣接する未割り当て主メモリスペースと一体となって 収容するためにランできないプロセス或はランできるプロセスの複数のセグメン トをスワツプアウトするステップから成ることを特徴とする請求項40に記載の 改良された方法。
  48. 48.コンピュータシステム内の主メモリを管理するためのメモリマネジャを動 作するための改良された方法において、前記コンピュータシステムによって実行 されるべきプロセスが複数のセグメントに分割され、前記コンピュータシステム がスワツプデバイスと命名される二次メモリを含み、前記メモリマネジャが主メ モリスペースが利用可能なとき実行準備の整ったプロセスのプロセスセグメント をスワツプインし、また現在実行できないプロセスのプロセスセグメントをスワ ツプアウトし、この改良された方法のステップが: 前記スワツプデバイス上にあるプロセスのセグメントを収容するのに十分に大き なスペースを割り当てるステッブと、 前記セグメントが分割セグメントであるか否かを決定するステップと、 前記セグメントが分割セグメントであることが決定された場合、前記分割セグメ ントの複数の部分を前記スワツプデバイス上に割り当てられたスペース内に合体 するステップと、 前記セグメントが分割セグメントでないと決定されたとき、前記非分割セグメン トを前記スワツプデバイス上の割り当てられたスペースに移動するステップと、 を備えていることを特徴とする方法。
  49. 49.コンピュータシステム内の主メモリを管理するためのメモリマネジャを動 作するための改良された方法において、前記コンピュータシステムによって実行 されるべきプロセスが復数のセグメントに分割され、前記コンピュータシステム がスワツプデバイスと命名される二次メモリを含み、前記メモリマネジャが主メ モリスベースが利用可能なとき実行準備の整ったプロセスのプロセスセグメント をスワツプインし、また現在実行できないプロセスのプロセスセグメントをスワ ツプアウトし、この改良された方法のステップが: 主メモリからスワツプアウトされるべきセグメントが二重イメージセグメントで あるか否かを決定するステッブと、 そのセグメントが二重イメージであることが決定された場合、その二重イメージ セグメントに対して割り当てられた主メモリスペースの割り当てを解除するステ ップと、 を備えていることを特徴とする改良された方法。
  50. 50.セグメントが二重イメージでないことを決定するステップと、 前記スワツプデバイス上にこの非二重イメージセグメントを収容するのに十分に 大きなスペースを割り当てるステップと、 前記セグメントが分割セグメントであるか否かを決定するステップと、 前記セグメントが分割セグメントであることが決定されたとき、前記分割セグメ ントの複数の部分を前記スワツプデバイス上に割り当てられたスペース内に合体 するステップと、 前記セグメントが分割セグメントでないことが決定されたとき、前記非分割セグ メントを前記スワツプデバイス上の割り当てられたスペース内に移動するステッ プと、をさらに含むことを特徴とする請求項49に記載の改良された方法。
JP91511492A 1990-06-11 1991-06-10 効率的な非仮想主メモリ管理のための方法 Pending JPH05508043A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US537,466 1990-06-11
US07/537,466 US5179702A (en) 1989-12-29 1990-06-11 System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
US572,045 1990-08-23
US07/572,045 US5159678A (en) 1990-06-11 1990-08-23 Method for efficient non-virtual main memory management
PCT/US1991/004077 WO1991020036A1 (en) 1990-06-11 1991-06-10 Method for efficient non-virtual main memory management

Publications (1)

Publication Number Publication Date
JPH05508043A true JPH05508043A (ja) 1993-11-11

Family

ID=27065500

Family Applications (1)

Application Number Title Priority Date Filing Date
JP91511492A Pending JPH05508043A (ja) 1990-06-11 1991-06-10 効率的な非仮想主メモリ管理のための方法

Country Status (5)

Country Link
US (1) US5159678A (ja)
EP (5) EP0969381A3 (ja)
JP (1) JPH05508043A (ja)
DE (1) DE69132139T2 (ja)
WO (1) WO1991020036A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140102679A (ko) * 2011-12-14 2014-08-22 마이크로소프트 코포레이션 순차적인 순서의 스왑 파일을 이용한 작업 세트 스와핑 기법

Families Citing this family (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69032418T2 (de) * 1989-09-08 1999-02-25 Digital Equipment Corp Privatspeicher für Fäden in einem multifaden digitalen Datenverarbeitungssystem
US5359729A (en) * 1991-05-31 1994-10-25 Timeline, Inc. Method for searching for a given point in regions defined by attribute ranges, then sorted by lower and upper range values and dimension
US5659744A (en) * 1991-10-15 1997-08-19 International Computers Limited Data file store system with means for efficiently managing freeing of data blocks
US5359721A (en) * 1991-12-18 1994-10-25 Sun Microsystems, Inc. Non-supervisor mode cross address space dynamic linking
US5680582A (en) * 1991-12-20 1997-10-21 Microsoft Corporation Method for heap coalescing where blocks do not cross page of segment boundaries
US5649151A (en) * 1992-06-29 1997-07-15 Apple Computer, Inc. Efficient method and apparatus for access and storage of compressed data
US5734892A (en) * 1992-06-29 1998-03-31 Apple Computer, Inc. Efficient method and apparatus for access and storage of compressed data
US5727185A (en) * 1992-07-21 1998-03-10 Siemens Aktiengesellschaft Memory allocation method for allocating two logical store areas to a free store, that is one common physical store area of a computer
US5555388A (en) * 1992-08-20 1996-09-10 Borland International, Inc. Multi-user system and methods providing improved file management by reading
US5392415A (en) * 1992-12-15 1995-02-21 International Business Machines Corporation System for grouping non-contiguous pages belonging to a storage object for page out
US6131150A (en) * 1993-10-05 2000-10-10 Digital Equipment Corporation Scaled memory allocation system
CA2201909C (fr) 1994-10-12 2006-05-02 Technical Maintenance Corporation Systeme de reproduction audiovisuelle numerique intelligent
US7188352B2 (en) 1995-07-11 2007-03-06 Touchtunes Music Corporation Intelligent digital audiovisual playback system
US5765210A (en) * 1994-12-12 1998-06-09 International Business Machines Corporation Allocation of real storage for hardware descriptors within virtual memory that are associated with on-line storage increments
US6081880A (en) * 1995-03-09 2000-06-27 Lsi Logic Corporation Processor having a scalable, uni/multi-dimensional, and virtually/physically addressed operand register file
US5966529A (en) * 1995-05-15 1999-10-12 Zsp Corporation Processor having auxiliary operand register file and complementary arrangements for non-disruptively performing adjunct execution
US6399533B2 (en) * 1995-05-25 2002-06-04 Basell Technology Company Bv Compounds and catalysts for the polymerization of olefins
US5900025A (en) * 1995-09-12 1999-05-04 Zsp Corporation Processor having a hierarchical control register file and methods for operating the same
US5860138A (en) * 1995-10-02 1999-01-12 International Business Machines Corporation Processor with compiler-allocated, variable length intermediate storage
US6308248B1 (en) * 1996-12-31 2001-10-23 Compaq Computer Corporation Method and system for allocating memory space using mapping controller, page table and frame numbers
US6393520B2 (en) * 1997-04-17 2002-05-21 Matsushita Electric Industrial Co., Ltd. Data processor and data processing system with internal memories
US6233599B1 (en) 1997-07-10 2001-05-15 International Business Machines Corporation Apparatus and method for retrofitting multi-threaded operations on a computer by partitioning and overlapping registers
FR2769165B1 (fr) 1997-09-26 2002-11-29 Technical Maintenance Corp Systeme sans fil a transmission numerique pour haut-parleurs
US5893159A (en) * 1997-10-22 1999-04-06 International Business Machines Corporation Methods and apparatus for managing scratchpad memory in a multiprocessor data processing system
US6018789A (en) * 1997-11-24 2000-01-25 Western Digital Corporation Disk drive with cache segment providing adaptively managed chunks
FR2771829B1 (fr) * 1997-12-03 2000-02-18 Rue Cartes Et Systemes De Procede de gestion des ressources de memoire dans une carte a microcircuit
US6226725B1 (en) 1998-04-21 2001-05-01 Ibm Method and system in a data processing system for the dedication of memory storage locations
US6151666A (en) * 1998-05-27 2000-11-21 Storage Technology Corporation Method for reclaiming fragmented space on a physical data storage cartridge
US8028318B2 (en) 1999-07-21 2011-09-27 Touchtunes Music Corporation Remote control unit for activating and deactivating means for payment and for displaying payment status
FR2781591B1 (fr) 1998-07-22 2000-09-22 Technical Maintenance Corp Systeme de reproduction audiovisuelle
FR2781580B1 (fr) 1998-07-22 2000-09-22 Technical Maintenance Corp Circuit de commande de son pour systeme de reproduction audiovisuelle numerique intelligent
FR2796482B1 (fr) 1999-07-16 2002-09-06 Touchtunes Music Corp Systeme de gestion a distance d'au moins un dispositif de reproduction d'informations audiovisuelles
US6751249B1 (en) * 1999-09-24 2004-06-15 Agere Systems Inc. Received-signal-strength-based swap table for frequency hopping communication system
FR2805377B1 (fr) 2000-02-23 2003-09-12 Touchtunes Music Corp Procede de commande anticipee d'une selection, systeme numerique et juke-box permettant la mise en oeuvre du procede
FR2805060B1 (fr) * 2000-02-16 2005-04-08 Touchtunes Music Corp Procede de reception de fichiers lors d'un telechargement
FR2805072B1 (fr) 2000-02-16 2002-04-05 Touchtunes Music Corp Procede d'ajustement du volume sonore d'un enregistrement sonore numerique
FR2808906B1 (fr) 2000-05-10 2005-02-11 Touchtunes Music Corp Dispositif et procede de gestion a distance d'un reseau de systemes de reproduction d'informations audiovisuelles
FR2811175B1 (fr) 2000-06-29 2002-12-27 Touchtunes Music Corp Procede de distribution d'informations audiovisuelles et systeme de distribution d'informations audiovisuelles
FR2811114B1 (fr) 2000-06-29 2002-12-27 Touchtunes Music Corp Dispositif et procede de communication entre un systeme de reproduction d'informations audiovisuelles et d'une machine electronique de divertissement
FR2814085B1 (fr) 2000-09-15 2005-02-11 Touchtunes Music Corp Procede de divertissement base sur les jeux concours a choix multiples
US6988177B2 (en) * 2000-10-03 2006-01-17 Broadcom Corporation Switch memory management using a linked list structure
US11029823B2 (en) 2002-09-16 2021-06-08 Touchtunes Music Corporation Jukebox with customizable avatar
US8103589B2 (en) 2002-09-16 2012-01-24 Touchtunes Music Corporation Digital downloading jukebox system with central and local music servers
US7822687B2 (en) 2002-09-16 2010-10-26 Francois Brillon Jukebox with customizable avatar
US10373420B2 (en) 2002-09-16 2019-08-06 Touchtunes Music Corporation Digital downloading jukebox with enhanced communication features
US8332895B2 (en) 2002-09-16 2012-12-11 Touchtunes Music Corporation Digital downloading jukebox system with user-tailored music management, communications, and other tools
US9646339B2 (en) 2002-09-16 2017-05-09 Touchtunes Music Corporation Digital downloading jukebox system with central and local music servers
US8584175B2 (en) 2002-09-16 2013-11-12 Touchtunes Music Corporation Digital downloading jukebox system with user-tailored music management, communications, and other tools
US7069523B2 (en) * 2002-12-13 2006-06-27 Lsi Logic Corporation Automated selection and placement of memory during design of an integrated circuit
EP1435576B1 (en) 2003-01-03 2013-03-20 Austria Card Plastikkarten und Ausweissysteme GmbH Method and apparatus for block-oriented memory management provided in smart card controllers
US7409518B2 (en) * 2004-05-21 2008-08-05 International Business Machines Corporation Method for improving disk space allocation
US7516291B2 (en) * 2005-11-21 2009-04-07 Red Hat, Inc. Cooperative mechanism for efficient application memory allocation
US9171419B2 (en) 2007-01-17 2015-10-27 Touchtunes Music Corporation Coin operated entertainment system
US10290006B2 (en) 2008-08-15 2019-05-14 Touchtunes Music Corporation Digital signage and gaming services to comply with federal and state alcohol and beverage laws and regulations
US8332887B2 (en) 2008-01-10 2012-12-11 Touchtunes Music Corporation System and/or methods for distributing advertisements from a central advertisement network to a peripheral device via a local advertisement server
US8195915B2 (en) * 2008-02-29 2012-06-05 International Business Machines Corporation Mechanism for visualizing memory fragmentation
US8151266B2 (en) 2008-03-31 2012-04-03 Qualcomm Incorporated Operating system fast run command
US20090302588A1 (en) * 2008-06-05 2009-12-10 Autoliv Asp, Inc. Systems and methods for airbag tether release
US8849435B2 (en) 2008-07-09 2014-09-30 Touchtunes Music Corporation Digital downloading jukebox with revenue-enhancing features
US10719149B2 (en) 2009-03-18 2020-07-21 Touchtunes Music Corporation Digital jukebox device with improved user interfaces, and associated methods
US9292166B2 (en) 2009-03-18 2016-03-22 Touchtunes Music Corporation Digital jukebox device with improved karaoke-related user interfaces, and associated methods
US9076155B2 (en) 2009-03-18 2015-07-07 Touchtunes Music Corporation Jukebox with connection to external social networking services and associated systems and methods
US10564804B2 (en) 2009-03-18 2020-02-18 Touchtunes Music Corporation Digital jukebox device with improved user interfaces, and associated methods
US9465656B2 (en) * 2009-04-01 2016-10-11 International Business Machines Corporation Scheduler penalty for swapping activity
JP5571200B2 (ja) 2010-01-26 2014-08-13 タッチチューンズ ミュージック コーポレイション 改善されたユーザインターフェースを備えたデジタルジュークボックス装置および関連手法
US9135373B1 (en) 2010-04-12 2015-09-15 Cadence Design Systems, Inc. Method and system for implementing an interface for I/O rings
US8443323B1 (en) * 2010-04-12 2013-05-14 Cadence Design Systems, Inc. Method and system for implementing a structure to implement I/O rings and die area estimations
EP2759126B8 (en) 2011-09-18 2021-03-31 Touchtunes Music Corporation Digital jukebox device with karaoke and/or photo booth features, and associated methods
US11151224B2 (en) 2012-01-09 2021-10-19 Touchtunes Music Corporation Systems and/or methods for monitoring audio inputs to jukebox devices
GB2509169B (en) * 2012-12-21 2018-04-18 Displaylink Uk Ltd Management of memory for storing display data
US9176889B1 (en) 2013-03-15 2015-11-03 Google Inc. Virtual machine memory management
GB2514777B (en) * 2013-06-03 2018-12-19 Displaylink Uk Ltd Management of memory for storing display data
WO2015070070A1 (en) 2013-11-07 2015-05-14 Touchtunes Music Corporation Techniques for generating electronic menu graphical user interface layouts for use in connection with electronic devices
CN103713882A (zh) * 2013-12-20 2014-04-09 华为技术有限公司 一种数据换入内存的方法和装置
US20150178186A1 (en) * 2013-12-20 2015-06-25 Huawei Technologies Co., Ltd. Method and apparatus for swapping in data to memory
CN106489125B (zh) 2014-03-25 2021-12-21 踏途音乐公司 具有改进的用户界面的数字点播设备和相关方法
US9483400B2 (en) * 2014-04-21 2016-11-01 Microsoft Technology Licensing, Llc Multiplexed memory for segments and pages
US9430401B2 (en) * 2015-01-16 2016-08-30 International Business Machines Corporation Implementing paging optimization to avoid populate on page fault during an IO read
BR112019005837B1 (pt) 2016-10-03 2023-01-17 Toho Titanium Co., Ltd Componente catalisador sólido para polimerização de olefinas, métodos para produção de um componente catalisador sólido para polimerização de olefinas, para produção de um polímero de uma olefina e para produção de um copolímero de propileno, e, catalisador para polimerização de olefinas
US20240104395A1 (en) * 2022-09-27 2024-03-28 Zhejiang Lab Memory optimization method and device oriented to neural network computing

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2253434A5 (en) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind Ordinator for computer virtual memory - compares segment size in auxiliary memory with available storage space in main memory
US4229789A (en) * 1977-12-22 1980-10-21 Ncr Corporation System for transferring data between high speed and low speed memories
US4442488A (en) * 1980-05-05 1984-04-10 Floating Point Systems, Inc. Instruction cache memory system
JPS6032220B2 (ja) * 1980-07-07 1985-07-26 日本電気株式会社 情報処理装置
US4481573A (en) * 1980-11-17 1984-11-06 Hitachi, Ltd. Shared virtual address translation unit for a multiprocessor system
US4420807A (en) * 1981-08-31 1983-12-13 International Business Machines Corporation Selectively holding data in a buffer for defective backing store tracks
US4571674A (en) * 1982-09-27 1986-02-18 International Business Machines Corporation Peripheral storage system having multiple data transfer rates
US4607331A (en) * 1983-05-13 1986-08-19 Motorola, Inc. Method and apparatus for implementing an algorithm associated with stored information
US4685057A (en) * 1983-06-06 1987-08-04 Data General Corporation Memory mapping system
US4577274A (en) * 1983-07-11 1986-03-18 At&T Bell Laboratories Demand paging scheme for a multi-ATB shared memory processing system
JPS60221853A (ja) * 1984-04-18 1985-11-06 Mitsubishi Electric Corp コンピユ−タ−・オペレ−テイング・システムのスワツピング方法
US4758951A (en) * 1985-04-09 1988-07-19 Tektronix, Inc. Method for translating virtual addresses into real addresses
US4785395A (en) * 1986-06-27 1988-11-15 Honeywell Bull Inc. Multiprocessor coherent cache system including two level shared cache with separately allocated processor storage locations and inter-level duplicate entry replacement
US4967353A (en) * 1987-02-25 1990-10-30 International Business Machines Corporation System for periodically reallocating page frames in memory based upon non-usage within a time period or after being allocated
JPH0194457A (ja) * 1987-10-07 1989-04-13 Mitsubishi Electric Corp 高速スワップ イン/スワップ アウト方式
JP3226525B2 (ja) * 1988-10-07 2001-11-05 株式会社日立製作所 主記憶管理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140102679A (ko) * 2011-12-14 2014-08-22 마이크로소프트 코포레이션 순차적인 순서의 스왑 파일을 이용한 작업 세트 스와핑 기법
JP2015506041A (ja) * 2011-12-14 2015-02-26 マイクロソフト コーポレーション 順次並んだスワップ・ファイルを使用するワーキング・セットのスワップ

Also Published As

Publication number Publication date
EP0969380A2 (en) 2000-01-05
EP0969381A2 (en) 2000-01-05
EP0969383A2 (en) 2000-01-05
EP0533805A4 (en) 1994-04-20
DE69132139D1 (de) 2000-05-31
WO1991020036A1 (en) 1991-12-26
EP0533805A1 (en) 1993-03-31
EP0969382A3 (en) 2000-02-02
EP0969383A3 (en) 2000-02-02
EP0969381A3 (en) 2000-02-02
DE69132139T2 (de) 2001-02-01
EP0533805B1 (en) 2000-04-26
EP0969380A3 (en) 2000-02-02
US5159678A (en) 1992-10-27
EP0969382A2 (en) 2000-01-05

Similar Documents

Publication Publication Date Title
JPH05508043A (ja) 効率的な非仮想主メモリ管理のための方法
US6269391B1 (en) Multi-processor scheduling kernel
JP2571664B2 (ja) コンピュータ主記憶域管理システムおよび方法
AU731871B2 (en) Method and apparatus for thread synchronization in object-based systems
US7721286B2 (en) Preemptive multi-tasking with cooperative groups of tasks
US5727178A (en) System and method for reducing stack physical memory requirements in a multitasking operating system
US5247681A (en) Dynamic link libraries system and method
US7219347B1 (en) Resource scheduling
JP5091215B2 (ja) コプロセッサの性能を強化するシステムおよび方法
JP3611305B2 (ja) 永続的且つロバストな記憶割当てシステム及び方法
US7587566B2 (en) Realtime memory management via locking realtime threads and related data structures
JP2004272894A (ja) グラフィックス処理ユニットのマルチスレッド式カーネル
US20020087618A1 (en) System and method for utilizing dispatch queues in a multiprocessor data processing system
US7263592B2 (en) Method for completely lock-free user-level dynamic memory allocation
JP2004326755A (ja) 仮想計算機環境におけるディスパッチ機能の管理
JPH08129457A (ja) 外部記憶ストラクチャを拡大、縮小、及び再配分するための方法及び装置
JP2004280297A (ja) タスク切換装置、方法及びプログラム
US20120151170A1 (en) System and method of squeezing memory slabs empty
CN110597606B (zh) 一种高速缓存友好的用户级线程调度方法
US7882285B2 (en) Buffer cache management to prevent deadlocks
CN115391035A (zh) 一种异构计算资源协同管理调度的方法
US5678024A (en) Method and system for dynamic performance resource management within a computer based system
US6715059B2 (en) Methods and systems for a shared memory unit with extendable functions
Wani Operating System
US7203782B1 (en) Queueing method supporting multiple client accesses simultaneously