JPH08507630A - メモリ管理装置およびメモリ管理方法 - Google Patents

メモリ管理装置およびメモリ管理方法

Info

Publication number
JPH08507630A
JPH08507630A JP6520278A JP52027894A JPH08507630A JP H08507630 A JPH08507630 A JP H08507630A JP 6520278 A JP6520278 A JP 6520278A JP 52027894 A JP52027894 A JP 52027894A JP H08507630 A JPH08507630 A JP H08507630A
Authority
JP
Japan
Prior art keywords
memory
application
range
module
temporary
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
JP6520278A
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
Application filed by ノベル,インコーポレイテッド filed Critical ノベル,インコーポレイテッド
Publication of JPH08507630A publication Critical patent/JPH08507630A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/0623Address space extension for memory modules

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 本発明は、DOS実行可能なプログラムあるいは「モジュール」のための環境を提供するものてあり、これらのプログラムあるいは「モジュール」は、それらのコードあるいはデータの一部によって使用されるメモリを共有しながら他の同様に構成されたプログラムと協同し得るように構成されている。この環境によって、コンベンショナルメモリ(102)の全般的な要件が削減される。モジュールは、コンベンショナルメモリからスワップアウトされ得る一時的なコードおよびデータ(403)、ならびにスワップ不可能でありコンベンショナルメモリに常駐するグローバルデータおよびコード(402)を有している。本発明は、一時的なコードおよびデータのためのコンベンショナルメモリの1つのブロックを(複数の)モジュールが共有し得るようにすることによって、コンベンショナルメモリの要件を削減する。ディスク記憶装置(204)へあるいはそこからモジュールの一時的なブロックをスワップする代わりに、一時的なブロックはコンベンショナルメモリと拡張メモリあるいはエクスパンディッドメモリとの間でスワップされる。これによって、オーバレイスキムと比較して転送時間が大幅に削減され、性能が向上する。

Description

【発明の詳細な説明】 メモリ管理装置およびメモリ管理方法 発明の背景 1.発明の分野 本発明は、一般的にコンピュータメモリシステムに関する。本発明は、特に、 コンピュータメモリの使用を制御し最適化するためのメモリ管理システムに関す る。 2.背景となる従来技術 典型的なコンピュータシステムは、多数のモジュールおよび構成要素から構成 される。コンピュータシステムは、典型的にマイクロプロセッサのような中央処 理装置(CPU)を備えている。マイクロプロセッサは、命令を得て、復号化し 、実行するプログラム制御された装置である。コンピュータシステムは、システ ムオペレーティングソフトウエア、アプリケーションプログラム命令およびデー タを格納するための記憶構成要素を備えている。これらの記憶構成要素は、読み 出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)あるいはディス ク記憶装置あるいはテープ記憶装置などのような大容量記憶装置あるいは他の適 切な記憶手段であり得る。 コンピュータシステムのオペレーションは、「オペレーティングシステム」と して公知である一連の命令によって制御 される。オペレーティングシステムは、入力/出力などのコンピュータシステム の基本的機能を制御するために用いられる。また、オペレーティングシステムは 、典型的にはROMあるいはディスク記憶装置などの永久記憶素子に格納され、 次にRAMへロードされ、そこで実行される。オペレーティングシステムの例と して、MS−DOS又はPC−DOSがある。コンピュータシステムは、アプリ ケーションプログラムを実行するために用いられる。 処理オペレーションの間に、データの格納されている上で命令が実行されると きに一時的にそのデータを格納することをCPUがされるかもしれない。さらに 、処理およびそれに基づきプログラムが実行されているオペレーティングシステ ムを制御するアプリケーションプログラムは、CPUにアクセス可能でなければ ならない。この情報は、「メインメモリ」として知られている資源、RAMにそ の情報を格納することによってCPUに対して利用可能になる。 メインメモリとして公知であるメモリ構成要素は、ユーザ、データ、プログラ ムあるいは処理に動的に割り当てられた不十分な資源である。この十分でない資 源に競合するメモリユーザは、アプリケーションプログラム、TSR(「常駐終 了型」プログラム)および他の処理を有する。アプリケーションプログラムの例 としては、ワードプロセッサ、表計算、作図プログラム、データベースなどを含 む。あるアプリケーションプログラムは、ROMに格納され得る。しかし、一般 的 には、アプリケーションプログラムは、ディスクドライブなどの大容量記憶装置 に格納される。初期設定に際して、CPUによって実行されるアプリケーション プログラムは、大容量記憶装置からRAMに転送される。 TSRは、コンピュータシステムでも用いられる。そのようなプログラムは「 ホットキー」および「ポップアップウインドウ」を提供し、ビデオ表示装置の角 に時計を表示したり、ディスクドライブの活動をモニタするなどの背景タスクを 行うために用いられる。TSRは、多くの他のアプリケーションのために書き込 まれ、ユーザがいくつかのTSRがコンピュータに同時に常駐することを望むこ とがしばしばある。各TSRはそれが位置づけられるメモリ空間を必要とするの で、TSRをシステムに付加すると、メインメモリへのメモリデマンドを増加さ せることになる。 メインメモリは、典型的にRAMなどのシリコンベースのメモリである。ある いは、ダイナミックランダムアクセスメモリ(DRAM)がメインメモリとして 用いられる。メインメモリRAMはコンベンショナルメモリ、拡張メモリ、エク スパンデッドメモリとしてアクセスされ得る。コンベンショナルメモリ コンベンショナルメモリは、CPUによって最も容易にアクセスされるRAM の領域である。CPUが必要とするデータおよび命令をコンベンショナルメモリ に格納することが望 ましい。しかし、コンベンショナルメモリの大きさに制限があり、それによって コンベンショナルメモリに格納され得るデータおよび命令の量が制限される。 初期のマイクロコンピュータは、64Kのアドレス空間を提供する16ビット アドレスバスを有していた。アプリケーションが必要とするメモリの容量が増加 するに従って、マイクロコンピュータは16ビットアドレスバスの制限を克服し なければならなかった。従って、IBMパーソナルコンピュータは、20ビット アドレスバスをサポートしていたセグメント化されたアドレス指定スキムと共に 導入された。20ビットアドレスバスは1024Kすなわち1Mのアドレス空間 を提供し、このアドレス空間は16ビットバスのアドレス空間の16倍である。 オリジナルのIBM PCおよびシステムソフトウエアは、コンベンショナルメ モリを人為的に640Kに制限して設計された。640Kから1Mのアドレス空 間のうちの384Kは、将来使用するため、主としてROMのために確保された 。それに続くコンピュータのモデルは、オリジナルのIBM PCと後方への互 換性があり、同一のPC−DOS MS−DOSオペレーティングシステムを用 いるように設計されているので、640Kに制限されたコンベンショナルメモリ は最新のコンピュータ上のアプリケーションに対して利用可能なメモリの容量を 制限し続けている。拡張メモリ(Extended Memory) 拡張メモリは、十分な数のアドレス線を有するマイクロプロセッサによって直 接アドレス指定され得る1024Kバイトを超えるRAMである。例えば、In tel 80286マイクロプロセッサは24ビットアドレス指定能力を有し、 メモリの最初の1Mの上の拡張メモリ内の15Mをアドレス指定し得る。インテ ル80386および80486マイクロプロセッサは32ビットアドレス指定能 力を有し、メモリの最初の1Mの上の拡張メモリのおよそ4ギガバイトをアドレ ス指定し得る。エクスパンディッドメモリ(Expanded Memory) 「エクスパンディッドメモリ仕様(expanded memory specification)」(E MS)としても公知であるエクスパンディッドメモリはエクスパンディッドメモ リとして用いるために、直接アクセス不可能であるエクスパンディッドメモリの 一部を確保し、それをページに分割する。エクスパンディッドメモリの1ページ をCPUが直接アクセス可能であるアドレス空間に一度で切換えることによって 、EMSは実質的に無制限な容量のメモリにアクセス可能である。しかし、EM Sがページを変えるためには時間がかかる。所望のデータが直接アクセス可能な メモリ内に位置づけられたEMSページフレームになければ、EMSはページフ レームの現在の内容をページアウトし、所望のデータを含むエクスパンディッド メモリからのページでページングしなければならない。そのよう なページ変えには時間が必要となるので、コンピュータの処理速度が遅くなる。 また、EMSは一般的にすべてのアプリケーションソフトウエアに適用可能では ない。アプリケーションソフトウエアは、EMSが利用可能である場合、特にE MSを利用するために書き込まれなければならない。メモリマップ 図1は、典型的なコンピュータ、すなわち、IBMパーソナルコンピュータな どの、8088/8086ファミリーマイクロプロセッサに基づきMS−DOS 環境下で動作するコンピュータ上のメインメモリRAMのメモリマップを示す。 図1のメモリマップは唯一可能なメモリなのではなく、典型的なメモリマップの 一例である。メモリマップは下から上に編成され、最下部はメモリ位置ゼロ(1 01)であり、最上部のメモリ内の最高位置まで続く。メモリマップは、3つの 基本領域を有している。第1の領域は、メモリの最底部の640Kであり、コン ベンショナルメモリ102と称される。コンベンショナルメモリ102はその全 体が読み取りおよび書き込みオペレーションを可能にするRAMによって構成さ れるが、すべてのシステムが640K全体を有するのではなく、メモリ空間の一 部は未使用のままであってもよい。 コンベンショナルメモリ102は、TSRおよびデバイスドライバを含む、シ ステムソフトウエア、アプリケーションソフトウエア、ユーザデータおよびほか のコードおよびデー タを格納するために用いられる。図1に示されるように、MS−DOSはメモリ の最下部を用いて、MS−DOSのコード106および関連づけられたデータ1 07を格納する。その上に、MS−DOSは、まとめてエレメント112として 図示されているアプリケーションソフトウエア、TSRおよびデバイスドライバ を格納する。 コンベンショナルメモリの上には、384Kの予約メモリ103があり、これ はRAMの640Kの上限の上から1024Kまでのメモリアドレス内に位置す る。予約メモリ領域103は、読み出し専用装置であるROMによって主に占め られる。予約メモリ領域において見いだされるROMは、システムROM、ビデ オROM、およびおそらくはハードディスクあるいはネットワークインタフェー スなどのその他の周辺装置のためのROMを含む。ROMに加えて、予約メモリ 領域103は、例えばビデオフレームバッファなどの他の種類の専用メモリも備 えている。 コンピュータの基本オペレーションをサポートするシステムROMは、例えば 、960Kから1024Kまでの予約メモリ領域103の最上部の64Kを占め る。予約メモリ103の残りの空間は未使用であるか、あるいは他の周辺装置あ るいはEMSページフレームをサポートするROMを含む他の目的のために使用 される。 上記のように、拡張メモリ111は1Mの上のすべてのメモリを含む。802 86のような24ビットアドレス指定能 力を有するマイクロプロセッサは、予約メモリ103およびコンベンショナルメ モリ102の1Mに加えて拡張メモリ111の15Mを含む16Mまでのメモリ をアドレス指定し得る。80386および80486のような、32ビットアド レス指定能力を有するマイクロプロセッサは、1Mの予約メモリ103およびコ ンベンショナルメモリ102のうえに4095Mの拡張メモリを含む4Gまでア ドレス指定可能である。1Mの真上に位置する拡張メモリ111内の領域は、高 位メモリ領域113とも称される。 TSRが増殖しアプリケーションプログラムが大きくなるに従って、コンベン ショナルメモリにおける空間に対する競合も大きくなる。TSRを用いる能力を 保持しながらアプリケーションプログラムにより大きなコンベンショナルメモリ を与えることが望ましい。 アプリケーションプログラムに対して利用可能なコンベンショナルメモリ空間 の量は、TSRが使用するメモリの容量を削減すること、TSRの数を減らすこ と、あるいはコンベンショナルメモリ外部のメモリにTSRを配置し直すことに よって増加され得る。 TSRの数を削減すると、機能および性能が低下し得るので望ましくない。各 TSRによって使用されるコンベンショナルメモリの容量を削減することは、各 TSRへの再書き込みが必要となるので実用的ではない。 TSRは、TSRが使用していなけれは他のソフトウエア によって使用され得るコンベンショナルメモリ空間の一部を占めるので、これら のプログラムがコンベンショナルメモリ102外部のメモリに移動し得れば、よ り大きいメモリがアプリケーションソフトウエアに利用可能になるであろう。あ る従来技術の方法では、TSRをコンベンショナルメモリ102から予約メモリ 103に移動させることによってアプリケーションソフトウエアに対して利用可 能なコンベンショナルメモリ102の量を増加させている。 この方法を実施するためには、未使用の予約メモリ103の量がまず決定され なければならない。また、TSRによって占められているコンベンショナルメモ リの容量も決定されなければならない。また、拡張メモリから割り当てを解除さ れたRAMの十分な量を予約されたメモリ領域にマップして、TSRのためのメ モリ空間を提供しなければならない。次に、TSRは、予約メモリ領域103内 の利用可能なメモリに再配置されなければならない。 この従来技術の方法には欠点がある。まず、この方法では割り当てを解除され た予約メモリ空間しか使用できない。この方法では、ROM、ビデオフレームバ ッファあるいは他の用途に割り当てられた予約メモリ空間を使用することはでき ない。また、TSRの再配置は、TSRに対するすべての参照が新しい場所に再 指示されることを保証するために行われなければならない。 コンベンショナルメモリから再配置を行う他の従来技術の 方法は、「オーバレイ」として公知である。オーバレイは、必要であればメモリ にスワップインおよびメモリからスワップアウトされる、プログラムの実行可能 な部分である。オーバレイには、オーバレイ内に位置する機能およびデータへの アクセスを制御するオーバレイマネージャとリンクされたオーバレイを用いるプ ログラムが要求されるという欠点がある。 オーバレイスキムの一例を、図2Aおよび図2Bに示す。まず図2Aを参照す ると、CPUによってアクセス可能なRAMの最初の1024バイトがメモリブ ロック201として示される。メモリブロック201は、コンベンショナルメモ リ102の領域を含む。コンベンショナルメモリ102は、DOSのようなオペ レーティングシステムコードを格納するための下方のアドレスに位置する領域2 02を含む。DOS領域202の上および予約メモリ103の下のコンベンショ ナルメモリ102の残りの領域112は、アプリケーション、TSR,デバイス ドライバなどを格納するために用いられる。 アプリケーションには大きすぎてコンベンショナルメモリ112に全てを格納 できないものもある。そのようなアプリケーションの1例は、ワードプロセッシ ングアプリケーションであるWord Perfectである。従って、一度に はWord Perfectの一部のみがメモリ領域112に格納される。残り の部分は、ディスク記憶装置204などの他のメモリに格納される。アプリケー ションの一部が必要とされると、その部分はディスク記憶装置204からメモリ 領域112に転送される。 図2Aの例においては、ブロックA203によって表されるアプリケーション の部分は、メモリ領域112に格納される。このアプリケーションは、ディスク 記憶装置204に格納される他の2つの部分、ブロックB205およびブロック C206に分割される。ディスク記憶装置204は、バスあるいは他の転送手段 207を介してRAM201と結合する。 ブロックA203に含まれている機能が呼出されるかあるいは使用されると、 ブロックA203はメモリ領域112に常駐し続ける。他の機能が必要になると 、その機能を提供するコードはディスク記憶装置204からメモリ201に転送 されなければならない。今度は図2Bを参照すると、ブロックB205はディス ク記憶装置204からメモリ領域112に転送される。従って、前にメモリ領域 112に常駐していたアプリケーションの部分ブロックA203は、ディスク記 憶装置204に転送される。ブロックB205がメモリ領域112において占め る領域は、ブロックA203が占める領域よりもより大きいように記載されてい る。ブロックは同一の大きさを有する必要はないが、メモリ領域112における 利用可能なアドレス空間と同じぐらいの大きさにならなければならない。 オーバレイの欠点は、オーバレイがディスクファイルにおよびそこからスワッ プされ、それによって実行時間が長くなり性能が低下するということである。あ るプログラムでは、 コードあるいはデータが常にコンベンショナルメモリに常駐することを必要とす る。オーバレイは、コンベンショナルメモリに永続的に常駐するコードあるいは データを特定するいかなる方法も提供しない。ブロックA203およびB205 がスワップされると、それらのブロック全体がスワップされる。ブロックA20 3でメモリ領域112に残っている部分はない。従って、そのようなプログラム はオーバレイスキムを使用できない。TSRには、オーバレイに変換され得ない ものもある。これらのTSRは、内部DOS機能を提供するものも含む。この一 例は、ユタ州、Novell,Inc.of Provo、によって製造されたNetWare Dos Client ソフトウエアである。 従って、従来技術は、性能を低下させずにTSRによって使用されるコンベン ショナルメモリの量を削減するシステムを提供していない。 発明の要旨 本発明は、メモリのコードあるいはデータの一部によって使用されるメモリを 共有しながら他の同様に構成されたプログラムと協同し得るように構成されてい るDOS実行可能なプログラムを提供する。これによって、コンベンショナルメ モリの全般的な要件が削減される。本発明において、これらのプログラムはモジ ュールと称され、アプリケーションプログラム、TSRあるいはこのモジュール フォーマットに変換されるその他の実行可能なファイルであり得る。モジュール は、コンベンショナルメモリからスワップアウトされ得る一時的なコードおよび データ、ならびにスワップ不可能でありコンベンショナルメモリに常駐するグロ ーバルデータおよびコードを有している。 メモリに常駐するグローバルデータを提供することによって、本発明のモジュ ールは、他のモジュールだけではなく、割り込みを扱うものおよび外部からある いは非同期的に利用可能であるその他のコードおよびデータも呼出得る。従って 、本発明はオーバレイよりもプログラミングインタフェースをサポートする。 本発明は、コンベンショナルメモリの1つのブロックを複数のモジュールが共 有し得るようにすることによって、コンベンショナルメモリの要件を削減する。 モジュールの数に無関係に、使用されるために割り付けられたコンベンショナル メモリのブロックの大きさは同じままである。割り付けられたメモリブロックは 、コンベンショナルメモリブロックを共有するモジュールの一時的なコードある いはデータの最も大きいブロックを格納するために十分な大きさを有する。 ディスク記憶装置へあるいはそこからモジュールの一時的なブロックをスワッ プする代わりに、一時的なブロックはコンベンショナルメモリと拡張メモリある いはエクスパンディッドメモリとの間でスワップされる。これによって、オーバ レイスキムと比較して転送時間が大幅に削減され、性能が向上する。 図面の簡単な説明 図1は、典型的なコンピュータシステムのメモリ組織を示すメモリマップであ る。 図2Aおよび図2Bは、従来技術のオーバレイスキムを示す図である。 図3は、本発明のモジュール構造を示す図である。 図4Aから図4Eは、メモリマネージャのオペレーションを示す図である。 図5は、本発明のプレイニット(Pre-init)オペレーションを示すフローチャ ートである。 図6は、本発明の実イニット(real-init)オペレーションを示すフローチャ ートである。 図7は、本発明におけるモジュールの呼出しを示すフローチャートである。 図8は、本発明を実施するためのコンピュータシステムのブロック図である。 図9は、VMCBデータブロックを示す図である。 本発明の詳細な説明 コンピュータシステムにおけるコンベンショナルメモリをより有効に用いる方 法が記載される。以下の記載においては、より綿密に本発明を記載するために、 コンピュータシステムのタイプ、メモリアドレス位置、メモリ容量などの多数の 具 体的な事項が詳細に記載される。しかし、これらの具体的な詳細事項がなくても 本発明が実行され得ることは当業者には明らかである。他の例においては、本発 明を不必要にわかりにくくすることのないように、公知の特徴は詳細には記載さ れない。 本発明は、TSRおよび他のプログラムがコンベンショナルメモリにおける空 間を共有する方法および装置を提供することによって、コンベンショナルメモリ 要件を削減する。TSRおよびプログラムは「モジュール」として構成され、モ ジュールマネージャはコンベンショナルメモリへのモジュールのスワップインお よびそこからのスワップアウトを制御する。本発明の好ましい実施態様において は、ある時点で1つのモジュールしかコンベンショナルメモリに常駐しない。他 のモジュールは、拡張メモリあるいはエクスパンディッドメモリに格納される。 これによって、時間の消費および性能を低下させるディスクスワップが回避され る。 モジュールマネージャのオペレーションを図4Aから図4Eに示す。図4Aは 、コンベンショナルメモリ、予約メモリ、拡張メモリおよびエクスパンディッド メモリのメモリマップを示している。コンベンショナルメモリ102は、下部メ モリ領域においてDOS記憶領域202を有している。コンベンショナルメモリ 102内のDOS領域202のちょうど上には、モジュールマネージャ401の ために保存されている空間がある。モジュールマネージャ401の上には、シス テ ムのために利用可能なモジュールのグローバルコードおよびデータのために予約 されている領域がある。グローバルコードおよびデータ領域402の上に格納さ れているのは、モジュールの一時的なブロックのために予約されている領域であ る。一時的なブロックモジュール403は、システム中のいずれかのモジュール の最も大きい一時的なブロックによって固定および決定される上限404を有し ている。上限404の上でかつ予約メモリ103の下のコンベンショナルメモリ 102内の空間は、他のアプリケーションおよび処理のために利用可能である。 予約メモリ103はROMおよびエクスパンディッドメモリ406のために用 いられる。予約メモリ103の上には、拡張メモリ111(1024Kバイトの 上)がある。拡張メモリ111は、モジュールAと称されるモジュールの一時的 なブロック405を格納する。エクスパンディッドメモリ406は、モジュール BおよびCとそれぞれ称される一時的なブロック407および408を有してい る。 グローバルコードおよびデータがグローバル領域402に格納され、一時的な ブロック403の上限404が限定されると、モジュールマネージャはモジュー ルが呼出されるとモジュールにアクセスする準備ができている。図4Bを参照し ながら、モジュールBが要求される場合を考える。モジュールBは、グローバル 領域402に永続的に常駐するコードを有し得る。モジュールBが呼出されると 、モジュールマネー ジャはモジュールBの一時的なブロック407をエクスパンディッドメモリ40 6からコンベンショナルメモリ102の一時的なブロック403に転送する。こ のとき、他のモジュールのいずれかの一時的なブロックがコンベンショナルメモ リから外にスワップされる。そして、処理呼出しモジュールBは、モジュールB がコンベンショナルメモリに常に常駐するかのように、一時的なブロックにアク セスし得る。図4Bに示されるように、モジュールBの一時的なブロック407 は、一時的なブロック403内の利用可能なアドレス空間のすべてを使用するの ではない。一時的なブロック403の上限404は固定されたままである。 図4Cから図4Eに、モジュールが他のモジュールを呼出すプロセスを示す。 モジュールCの一時的なブロック408は、図4Cに図示されているようにコン ベンショナルメモリ102の一時的なブロック403に常駐している。モジュー ルCは、モジュールマネージャを介してモジュールAを呼出す。モジュールマネ ージャは、呼出しを行っているモジュールおよびディスティネーションモジュー ルとの接触を保っている。モジュールCの一時的なブロック408は、モジュー ルAの一時的なブロック405とスワップされる。図4Dを参照すると、モジュ ールAの一時的なブロック405は一時的なブロック403に格納される。モジ ュールAの一時的なブロック405は一時的なブロック403のすべてのアドレ ス空間を占めることに留意されたい。モジュールAがある機 能のために呼出され、その機能を実行した後、図4Eに示されるように、モジュ ールマネージャはモジュールAの一時的なブロック405をモジュールCの一時 的なブロック408とスワップする。モジュール構造 本発明においては、モジュールのコードおよびデータは、コンベンショナルメ モリにおけるモジュール管理に一般的な解決法が与えられるように、異なるカテ ゴリーに構成される。これらのカテゴリーは、機能タスク指名テーブル(ジャン プテーブル)、一時的なコードおよびデータ、グローバルコードおよびデータな らびにスタートアップコードおよびデータを含む。モジュールのフォーマットは 図3に示される。 モジュール301の構造は、3つの領域302、303および304を有して いる。領域302は、ジャンプテーブル305および一時的なグループ306を 有している。領域303はグローバルコードおよびデータを含み、領域304は スタートアップコードおよびデータを有している。一時的な領域302は、「ス ワップ可能な」コードおよびデータを有している。すなわち、このデータはコン ベンショナルメモリおよび(拡張されたあるいはエクスパンドされた)エンハン ストメモリの間でスワップインあるいはスワップアウトされ得る。ジャンプテーブル ジャンプテーブル306はモジュールによってサポートされる機能を表す。ジ ャンプテーブル(一時的なコードとも称される)は、いつでもスワップアウトさ れ得る。従って、割り込みを扱うもの(あるいは直接アクセス可能であるいずれ かのコードセグメント)は一時的なコードセグメントの中に存在し得ない。ジャ ンプテーブルにおける第1のエントリは、モジュールイニットルーチンへのポイ ンタである。ジャンプテーブル306は、すべてのモジュールに対して共通であ る少なくとも4つの定義済み機能、すなわち、イニット、アンロード、バージョ ンおよび統計へのポインタで構成されている。 イニット:イニットは、モジュールにおける初期設定ルーチンである。この初 期設定ルーチンはモジュールを初期設定するために必要なパラメータを得るため にプレイニットを行い、モジュールを適切なセグメントに実際にロードするため に実イニットを行う。ベクトルがフックされるのはこの実イニット処理において である。 アンロード:アンロード機能によって資源の解放が容易になる。アンロード安 全性(CX=FFFh)についてのチェックが臨界地域状態に戻ると、アンロー ド要求は行われ得ない。モジュールがうまく動作すると、アンロード要求を行わ ない理由はなくなり、アンロード安全性のチェックは0に戻り、実際にアンロー ドを行っても安全であることが示される。そ して、実際にアンロードを行うという要求が行われないことはない。モジュール がアンロードのチェックを行わないと、アンロードのキャンセル(すなわち、C X=FFFEh)と共に、以前にチェックされたモジュールがすべて知らされる 。 バージョン:バージョン機能は、モジュールの主バージョンおよび小バージョ ンを得る。この機能は、モジュールの間に共有性を与える。このバージョン機能 のその他の副機能も、モジュールの間に共有性を設定する。他の副機能(01h −0Bh)によっても、接続設定、切断などに関してインターモジュールコミュ ニケーション(マルチキャスティング)を容易になる。 例えば、最初のタスクの終了時(すなわち、_Notify Handler subfunction 0 1h,PSP Terminate)にマルチキャスト呼出しがある。この副機能は、事前に定義 された一般的な副機能の一部である。 統計:統計機能は、モジュールについての統計を得る。この機能は選択的であ る。この統計は、モジュールデバッギングのために行われる。統計構造は、長さ 優先バッファである。統計構造テーブルの第1番目の単語は、有効な統計情報の バイト数を示す。ほかのすべての統計情報は、スタットサイズフィールドとスタ ットエンドフィールドの間で記憶される必要がある。 他の機能は特にモジュールに与えられ得、これらの事前に定義された機能に従 う。ゼロ終了(DD0)は、共通の機能 およびジャンプテーブルにおけるモジュールによって定義された他の全ての機能 に続いて行われる。これによって、この機能の数を超える要求を拒否し得るよう に、モジュールマネージャはいくつの機能がモジュールによってサポートされて いるかを知り得る。一時的なデータ 一時的なコードのように、一時的なデータも特別な要件を備えている。あるタ イプのデータは、一時的なグループにおいて存在し得ない。これらの制限された タイプは、スタックおよび他のモジュールに渡されるデータを有している。性能 上の理由から、グローバルデータではないすべてのデータは、この一時的なデー タセグメント内になければならない。一時的なデータは、エンハンストメモリと コンベンショナルメモリとの間でスワップされる。グローバルコードおよびデータ グローバル領域303は、コンベンショナルメモリ内に常駐し続けなければな らないコードおよびデータを格納する。例えば、グローバル領域303に格納さ れ得るコードおよびデータは、グローバルコード、モジュールマネージャを介し てアクセスされない遠い呼出を扱うもの、スタックおよびほかのモジュールに渡 されたデータのための割り込み処理ルーチンを有している。グローバル領域にメ モリがなくてもモジ ュールを作ることは可能である。スタートアップ領域 スタートアップ領域は、初期設定コードを有している。そのコードはプレイニ ットおよび実イニットオペレーションを提供する。プレイニットの間には、各モ ジュールはモジュールマネージャにVMCB構造データブロックを与える。モジ ュールはイニットルーチンを使用し、このVMCB構造を介して要求される初期 設定メモリ(グローバルメモリおよび一時的なメモリセグメントを含む)の量を 報告する。具体的には、VMCB_InitImageParaLengthパラメータは、プレロー ドの全体のサイズを定義する。 モジュールマネージャは、VMCB_InitImageParaLengthを用いて、実イニッ トおよび実行時間の間にどれだけのメモリがスワップインおよびスワップアウト されるべきなのかを決定する。モジュールメモリ割り当てを決定するこの方法に よって混乱が避けられ、メモリセグメントを別々に保持する処理が簡略化される 。メモリセグメントを別々に保持することは、グローバルデータセグメントとプ ロテクトモードデータセグメントを同時に実行するときに有効である。モジュー ルがロードされている他のモジュールに依存している場合、モジュールに対する 依存性はプレイニット段階でチェックされる。偽のイニットフラグ(AX=−1 )が途中でこのプロシジャへ渡される。 実イニットの間、モジュールがロードされた位置からグローバルコード/デー タを移動することが必要である。このグループのディスティネーションは、実イ ニットでイニット機能をモジュールマネージャが呼出したときに、BXレジスタ において定義される。この処理の後、モジュールはグローバルグループの移動に よって必要とされるいかなるフィックスアップも実行しなければならない。これ らのフィックスアップは、データはDOSによってロードされたグループではな く新しい位置を参照していることを保証するために行われる。モジュールマネージャ 個々のモジュールおよびマルチプレクサを監督するのがモジュールマネージャ である。アプリケーションは、すべての呼出しをモジュールマネージャに対して 行うが、そのディスティネーションが他のモジュール(子)であろうとマルチプ レクサであろうとその個々のディスティネーションに対して要求を行う。モジュ ールマネージャは、応答が適した呼出すもの(caller)に戻ることを保証する。 すべてのモジュールは、他のモジュールをモジュールマネージャを介して呼出 す。モジュールがその特定のレイヤのマルチプレクサを呼出すときも、そのモジ ュールはモジュールマネージャに呼出しを行ってそのマルチプレクサを呼出す。 同様に、そのモジュールから呼出しが戻るとき、その呼出しはマルチプレクサか らモジュールマネージャを介してそのモ ジュールに向かう。 モジュールマネージャの責務の1つは、他の情報の間のAPI呼出しが正しく ルートされていることを保証することである。従って、モジュールマネージャは 、与えられたユーザアプリケーションが要求するモジュールがロードされている かを知らなければならない。それは他のモジュールを呼出すモジュールを監視す る。モジュールマネージャは、同様に非同期的に呼出されたモジュールおよび機 能を取り扱う。 モジュールマネージャはAPIを与え、ナンバーによって機能およびモジュー ルを呼出す。モジュールマネージャは、呼出すもののモジュールIDを介して、 その機能を呼出しているのが誰であるかを知る。モジュールIDは、事前に割り 当てられている。モジュールマネージャは、ナンバーに基づきすべてのAPIを 取り扱うので、モジュールマネージャはモジュールにおける個々の機能に対する 本質的な依存または結びつきを持たない。従って、要求モデルの一部ではないモ ジュールは、TSRメモリマネージャとしてモジュールを使用し得る。これによ って、様々な異なるTSRをサポートする能力がモジュールマネージャに与えら れる。 モジュールマネージャは、すべてのモジュールが必要とする基本サービス、特 に、すべてのロードされたモジュールの間で呼出しを行い呼出しを容易にする基 本サービスを提供する。従って、モジュールマネージャは、要求モデルのすべて のレイヤを含む。 モジュールマネージャはマルチプレクサを含む各モジュールをロードおよびア ンロードするだけではなく、すべてのモジュールに対するメモリサービス(割り 当ておよび管理)を取り扱う。モジュールマネージャは、そのモジュールに対す るメモリスワッピングを用いる。 モジュールマネージャは、与えられたモジュールがモジュール自体に影響を与 えずにエクスパンディッドメモリ、拡張メモリ、コンベンショナルメモリあるい はサポートされているあらゆるメモリタイプのいずれを使用するかを決定する。 従って、個々の子モジュールは、メモリに関連する処理を行わなくてもよい。 子モジュールは、メモリ使用のある要件を満たしていなければならない。子モ ジュールがその要件が満たせば、子モジュールに対するモジュールマネージャハ ンドルメモリ機構のすべての利点が得られる。 また、モジュールマネージャはロード時間構成APIに対する責務がある。い かなるモジュールも構成可能である。例えば、接続テーブルはある数の接続を必 要とし、またはIPXは多数のECB、もしくはより大きいあるいはより小さい バッファをサポートすることを必要とする。これらの例では、モジュールマネー ジャはモジュールに対する作業を行う。 付加的に、性能を最適化するために、使用されているメモリタイプに関係なく 、ユーザはスワップされていないメモリにモジュールをロードすることを望んで もよい。理想的には、 最適な構成のバリエーションは、モジュールマネージャによって管理される。こ の能力を望み得るモジュールにはAPIが与えられる。 モジュールマネージャは、すべての可能な構成順列を知り得ないので、要求は モジュールの構成オプションを認識するために用いられるトークンを有するAP Iを備えていた。そのAPIは、モジュールがそれらのオプションを特定するも のである。このように、テーブル駆動型APIは、NET.CFGファイルから 構成情報を分析するためにモジュールのスタートアップ時に呼出され得る。 モジュールマネージャがロードすると、モジュールマネージャは、現在のディ レクトリあるいは他の特定されたディレクトリ内でロードすべきモジュールをフ ァイルから読み出す。モジュールマネージャはこれらのモジュールをファイルが 特定された順番でロードする。 モジュールのロードが行われているときに、現在のディレクトリはデフォルト によって使用される。異なるディレクトリからモジュールをロードしたい場合、 コンフィギュレーションファイルにおけるモジュール=コマンドにおいてディレ クトリを指定し得る。 VLM=C:\NWCLIENT\CONN.VLM また、モジュールコマンドライン上のコンギュレーションフ ァイルのためのパスも特定し得る。例えば、以下の通りである。 VLM/C=C:\NWCLIENT\NET.CFG モジュールのデフォルトセットは基本機能のためにモジュールマネージャにハ ードコード化される。しかし、NET.CFGは、デフォルトオプションをオー バーライドするために用いられ得る。モジュールマネージャの呼出し モジュールマネージャの遠い呼出しハンドラーに対するアドレスを見いだすた めには、アプリケーションはAXレジスタおよびBX=0hにおいて7A20h と割り込み2Fhを行う。モジュールマネージャは、遠い呼出しアドレス(モジ ュールマネージャ)へのポインタであるES:BXにおけるアドレスに戻る。モ ジュールマネージャが呼出しを処理したことをアプリケーションに知らせるため に、AXはゼロにされる。コールバイナンバーシステム モジュールマネージャは、システムにおいてモジュールを唯一特定するコール バイナンバーシステムを使用する。機能もナンバーによって呼出される。このプ ロトコルは、アプリ ケーションがCALLER_ID、DEST_IDおよびDEST_FUNCを 含む、モジュールマネージャの3つの不可欠な情報を提供することを要求する。 これらの2つのナンバーは、それぞれWORDの大きさを有している。 CALLER_IDおよびDEST_IDは、個々のモジュールを唯一特定す るナンバーである。モジュールマネージャはこれらのナンバーを用いて、適切な モジュールをスワップインし、呼出しを適切にタスク指名する。 DEST_FUNCは、呼出すものがどの機能を行いたいのかを示す。デステ ィネーション機能は、個々のモジュール内で定義される。これらの機能は、モジ ュールジャンブテーブル領域305によって定義される。 これらの3つの要求される要素は、このシステムによって管理される各機能呼 出しに対して共に作業を行う。アプリケーションがモジュール呼出しを行う場合 、モジュールマネージャのための遠い呼出しアドレスを得なければならない。以 下のコードは、どのようにアプリケーションが遠い呼出しアドレスを検索するの かの一例である。 以下のコードは、遠い呼出しアドレスを用いて_VLMNotifyの要求を 行い、モジュールマネージャモジュールのバージョンを戻させる非モジュールア プリケーションの一例である。 要するに、まず、呼出すものはスタック上の自分のIDをプッシュする(CA LLER_IDはモジュールに対してはゼロではなく、アプリケーションに対し てはゼロである)。そして、呼出すものは、ディスティネーションID、具体的 には呼出したいと思うマルチプレクサモジュールあるいは特定の子モジュールの IDをプッシュする。最後に、呼出すものは、所望の機能ナンバーをプッシュす る。 2つの予約された(あるいはシステム専用)機能がある。すなわち、初期設定 に用いられる機能0およびアンロードに用いられる機能2である。機能1および 機能3も、様々なモジュールを通じて一貫して用いられる。機能1は多数の副機 能を有する包括的通知機能のために、機能3はモジュール統計のために用いられ る。 戻ると、モジュールマネージャはCALLER_ID、DEST_IDおよび DEST_FUNCをスタックからクリアするので、アプリケーションはこの作 業を行ってはならない。これは、一般にパスカル呼出し規定と称されている。 2つのレジスタ、すなわちAXおよびBPがモジュールマネージャによって使 用されている。BPは、モジュールマネージャのみによって内部で使用される。 アプリーケーションは、いかなるパラメータ要求にもBPを使用してはならない 。BPは、3つの要求された値をスタック上でプッシュするためにのみ用いられ 得る。アプリケーションは、リターンコードのためのみにAXを使用すべきであ る。 モジュールマネージャは、非同期的呼出しを取り扱う方法も提供する。呼出し 機能は、ディスティネーションID、ディスティネーション機能、呼出すものI D、および呼出しのためにセットアップされる必要があるあらゆるレジスタを含 むメモリのブロックへのポインタを与える。すると、要求は保持され、後に実行 される。必要とされるコードを実行できないとモジュールマネージャが決定する と、モジュールマネージャはコードの実行を延期し得る。この機能の呼出すもの は、この機能が実際に完了する前にコントロールバックを受け取り得る。モジュールマネージャプレイニット 本発明のプレイニットオペレーションのフローチャートを図5に示す。ステッ プ501に、モジュールマネージャはそれ自体を構成する(NET.CFG、お よびVLM=ファイル)。この構成は、新しいあるいは付加的なモジュールのリ ストを有し得る。次に、モジュールマネージャは、ステップ502で各モジュー ルを現在のリストに一回に1つにロードする。モジュールは、ステップ503で ロードオーバレイAPIを用いてロードされる。初期設定機能は、ステップ50 4で「偽イニット」フラグオン(プレイニットを示している)と共に呼出される 。ロードされている途中のモジュールは、ステップ505でモジュールマネージ ャにVMCBデータブロックを与える。ステップ506では、モジュールのメモ リ 要件、すなわち、初期設定メモリ要件、あらゆるグローバルメモリ要件および一 時的なメモリ要件を読み出す。 ステップ507では、モジュールマネージャはモジュールパラメータテーブル 内のモジュールに対するパラメータを格納する。パラメータは、初期設定メモリ 要件、(もしあれば)グローバルメモリ要件、一時的メモリ要件、およびモジュ ールの機能の数を含む。 モジュールマネージャは決定ブロック508まで進む。決定ブロック508に おいて、「最終モジュールであるか?」というアーギュメントが行われる。アー ギュメントが偽であれば、得られるべきモジュールメモリ情報がまだあり、モジ ュールマネージャはステップ505に戻る。決定ブロック508におけるアーギ ュメントが真であれば、すべてのモジュールのメモリ要件が得られ、モジュール マネージャはステップ509に進む。 ステップ509では、モジュールマネージャはモジュールパラメータテーブル からデータを収集し、グローバルデータに必要なメモリを決定する。そして、モ ジュールマネージャは、グローバルデータを格納するためのコンベンショナルメ モリにおいてアドレス空間の割り付けを行う。 ステップ510では、モジュールマネージャはロードされなければならないモ ジュールの最も大きい一時的なメモリの要件を識別する。モジュールの最も大き い一時的なブロックは、コンベンショナルにおける一時的ブロック403の大き さを決定する。ステップ510では、モジュールマネージャは、ロードされるべ きモジュールの最も大きいブロックと少なくとも同じ大きさの一時的なメモリブ ロックにRAMを割り当てる。 ステップ511では、モジュールマネージャは、各モジュールの一時的なブロ ックを格納するために用いられ得るアドレス空間がどれであるかを決定する。優 先順位は、最初が拡張メモリ、次にエクスパンデッドメモリ、そしてコンベンシ ョナルメモリである。ユーザはモジュールマネージャを構成し、特にある1つの タイプのメモリを使用し得る。モジュールマネージャはステップ512で、その タイプのメモリが使用可能であるかを決定する。そのメモリのタイプが使用不可 能である場合、モジュールマネージャは上記のヒューリスティックを用いてメモ リタイプを選択する。 VMCBデータブロックの一例を図9に示す。モジュールマネージャ実イニット プレイニットルーチン後、モジュールはセットされていない偽イニットフラグ と共に再びロードされ、実イニットルーチンが実行される。実イニットルーチン の一例を図6に示す。ステップ601では、モジュールマネージャは偽イニット フラグをゼロにセットする。ステップ602では、第1のモジユールがロードさ れる。ステップ603では、初期設定ルーチンが呼出される。ステップ604で は、モジュールのため のあらゆる割り込みベクトルがフックされる。ステップ605では、モジュール の他のあらゆる資源が割り当てられる。ステップ606では、グローバルコード およびデータが割り当てられたアドレス空間に移動される。ステップ607では 、モジュールの一時的なブロックが、(拡張メモリ、エクスパンデッドメモリあ るいはコンベンショナルメモリにおいて)そのモジュールの一時的なブロックの ために割り当てられたアドレス空間にコピーされる。決定ブロック608におい て、「最終モジュールであるか?」というアーギュメントが行われる。このアー ギュメントが真であれば、ステップ609で実イニットプロシージャが終わり、 そこでモジュールマネージャが常駐終了する。決定ブロック608におけるアー ギュメントが偽であれば、システムはステップ602に戻る。モジュールローディング モジュールローディングを示すフローチャートを図7に示す。ステップ701 において、モジュールマネージャは、呼出しを受け取り、モジュールにアクセス する。決定ブロック702において、「他の要求がサービス中であるか」という アーギュメントが行われる。アーギュメントが頁であれば、モジュールマネージ ャは、退去(exiting)呼出しが完了すると新しい呼出しが行われ得るように現 在のIDをステップ703で格納する。 決定ブロック702におけるアーギュメントが偽である場 合、システムは決定ブロック704に進み、「DEST IDは有効か?」とい うアーギュメントが行われる。そのアーギュメントが真である場合、モジュール マネージャは決定ブロック705に進む。アーギュメントが偽である場合、モジ ュールマネージャはエラーを戻す。決定ブロック705においては、「機能#は 有効か?」というアーギュメントが行われる。アーギュメントが真である場合、 システムは決定ブロック706に進む。アーギュメントが偽である場合、モジュ ールマネージャはエラーを戻す。 決定ブロック706において、「呼出すものID=0であるか?」というアー ギュメントが行われる。アーギュメントが真である場合、呼出すものIDは現在 のモジュールIDと代えられ、システムはステップ707に進む。アーギュメン トが偽である場合、システムはステップ707に進む。 ステップ707において、現在一時的なブロックにあるあらゆるモジュールが エンハンストメモリ内の割り当てられたアドレス空間にコピーされる。従って、 モジュールのコードおよびデータに行われるいかなる変更も、「ホーム」アドレ ス空間(そのモジュールの割り当てられたアドレス空間)において更新される。 ステップ708において、呼出されたモジュールの一時的なブロックは、エンハ ンストメモリ内の割り当てられたアドレス空間からマップインされる。ステップ 709では、呼出された機能ナンバーが、現在一時的なメモリに格納されている ジャンプテーブルで参照される。ステッ プ710において、機能が呼出される。リターンすると、呼出すものIDがステ ップ711でチェックされる。必要であれば、呼出モジュールは一時的なブロッ クにマップインされる。ステップ712において、コントロールが呼出し機能あ るいは呼出処理に戻される。 上記の実施例は、アプリケーションがモジュール機能を呼出すときに適用され る。また、本発明は、モジュールのグローバルメモリが一時的なメモリ機能を呼 出しているとき、および一時的なメモリ内のモジュールが他のモジュールの一時 的なブロックを呼出すときにも用いられる。グローバルメモリから一時的なメモ リの呼出しにおいては、オペレーションは図7のアプリケーション呼出しのもの と同様である。グローバルリクエスタの呼出すものIDは0である。一時的メモ リから一時的メモリの呼出しに対しては、呼出すものがマップバックインされコ ントロールが戻されたとき、要求している一時的なコードが実際にメモリ内にあ るように、適した呼出すもののIDがプッシュされる。さもなければ、他のいく つかの処理をメモリ内にマップバックすることが可能であるが、これを行うとコ ンピュータシステムにとって不安定な環境になり得る。 本発明は、いかなるコンピュータシステムにも実行され得る。本発明を実行す るための典型的なコンピュータシステムを図8に示す。コンピュータシステムは 、CPU801、RAM(メインメモリ)802、ROM(読み出し専用メモリ ) 803、およびI/O(入力/出力)804を有し、これらすべてがシステムバ ス807に結合されている。I/Oブロック804は、バス805を介した大容 量記憶装置806のような他のシステムにアクセスする。 CPU801は、コンピュータを制御し、命令を実行し、データを処理する。 CPU801は、システムバス807を介して他の構成要素と通信を行う。CP Uは、システムバス807を介してコンピュータの他の構成要素から入力データ を受け取り、システムバスを介してコンピュータの他の構成要素に出力データを 送る。システムバス807は、通常、アドレスバス、データバス、および様々な 他の制御線を備えている。アドレスバスおよびデータバスの幅は、制御線の数お よび種類と同様に、あるコンピュータシステムのものと他のコンピュータシステ ムのものとは異なっている。 RAM802、ROM803およびメモリマップされたI/O804を有する コンピュータシステムの各構成要素は、多数の個別のメモリ位置を有している。 CPU801がこれらの位置にアクセスし得るようにするために、各位置には特 定のアドレスが割り付けられる。各アドレスは、アドレスバスを介して転送され 得る2進数の特定の組み合わせである。大部分のメモリ装置は1つ以上の位置を 有しているので、1つのメモリ装置の全ての位置に対するアドレスは、通常連続 的なブロックとして割り付けられる。しばしばこれらのブロックは、連続的に割 り付けられた(メモリにマップされた) アドレスでもある。しかし、割り付けられていないアドレスあるいは将来使用す るために予約されたアドレスのギャップがあり得る。 図8のコンピュータシステムは、ただ単に一例として示されている。本発明は 、いかなるコンピュータシステムにも実行し得る。 従って、メモリ管理装置およびメモリ管理方法が記載される。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FR,GB,GR,IE,IT,LU,M C,NL,PT,SE),OA(BF,BJ,CF,CG ,CI,CM,GA,GN,ML,MR,NE,SN, TD,TG),AT,AU,BB,BG,BR,BY, CA,CH,CN,CZ,DE,DK,ES,FI,G B,GE,HU,JP,KG,KP,KR,KZ,LK ,LU,LV,MD,MG,MN,MW,NL,NO, NZ,PL,PT,RO,RU,SD,SE,SI,S K,TJ,UA,UZ,VN 【要約の続き】 れによって、オーバレイスキムと比較して転送時間が大 幅に削減され、性能が向上する。

Claims (1)

  1. 【特許請求の範囲】 1.処理手段を用い、グローバルブロックとしてメモリアドレスの第1の範囲に あることを要求される第1のアプリケーションの第1の部分を特定するステップ と、 該処理手段を用い、該グローバルブロックを格納する該メモリアドレスの該第 1の範囲にアドレス空間を割り付けるステップと、 該処理手段を用い、該第1のアプリケーションの一時的なブロックとして、該 メモリアドレスの該第1の範囲にあることを要求されない該第1のアプリケーシ ョンの第2の部分を特定するステップと、 該処理手段を用い、該一時的なブロックを格納する、該メモリアドレスの該第 1の領域内にはないメモリアドレスの第2の範囲にアドレス空間を割り付けるス テップと、 該処理手段を用い、該一時的なブロックを一時的に格納する該メモリアドレス の該第1の範囲に一時的なアドレス空間を割り付けるステップとを包含する、コ ンピュータシステムにメモリを割り付ける方法。 2.前記処理手段を用い、第2のアプリケーションのグローバルブロックとして 、前記メモリアドレスの前記第1の範囲にあることを要求される該第2のアプリ ケーションの第1の部分を特定するステップと、 該処理手段を用い、該第2のアプリケーションの該グロー バルブロックを格納する該メモリアドレスの該第1の範囲にアドレス空間を割り 付けるステップと、 該処理手段を用い、該第2のアプリケーションの一時的なブロックとして、該 メモリアドレスの該第1の範囲にあることを要求されない該第2のアプリケーシ ョンの第2の部分を特定するステップと、 該処理手段を用い、該第2のアプリケーションの該一時的なブロックを格納す る、該メモリアドレスの該第1の領域内にはないメモリアドレスの該第2の範囲 にアドレス空間を割り付けるステップとをさらに包含する、請求項1に記載の方 法。 3.前記処理手段を用い、前記第1のアプリケーションが実行されるとき、前記 一時的なアドレス空間に該第1のアプリケーションの前記一時的なブロックを一 時的に格納するステップをさらに包含する、請求項2に記載の方法。 4.前記処理手段を用い、前記第2のアプリケーションが実行されるとき、前記 一時的なアドレス空間に該第2のアプリケーションの前記一時的なブロックを一 時的に格納するステップをさらに包含する、請求項2に記載の方法。 5.前記一時的なアドレス空間が、前記第1のアプリケーションの前記一時的な ブロックおよび前記第2のアプリケーシ ョンの前記一時的なブロックのいずれか大きい方を保持するために十分な大きさ を有する、請求項2に記載の方法。 6.前記メモリアドレスの前記第1の範囲がコンベンショナルメモリである、請 求項1に記載の方法。 7.前記メモリアドレスの前記第2の範囲が拡張メモリである、請求項1に記載 の方法。 8.前記メモリアドレスの前記第2の範囲がエクスパンディッドメモリである、 請求項1に記載の方法。 9.前記第1のアプリケーションが常駐終了型アプリケーションである、請求項 1に記載の方法。 10.処理手段を用い、メモリアドレスの第1の範囲にあることを要求される第 1のアプリケーションの第1の部分を格納する該メモリアドレスの該第1の範囲 にアドレス空間を割り付けるステップと、 該処理手段を用い、該メモリアドレスの該第1の範囲にあることを要求される 該第1のアプリケーションの第2の部分のためにメモリアドレスの該第1の範囲 内にはない該メモリアドレスの第2の範囲にアドレス空間を割り付けるステップ と、 該処理手段を用い、該メモリアドレスの該第1の範囲にあることを要求される 第2のアプリケーションの第1の部分を格納する該メモリアドレスの該第1の範 囲にアドレス空間を割り付けるステップと、 該処理手段を用い、該メモリアドレスの該第1の範囲にあることを要求されな い該第2のアプリケーションの第2の部分を格納するために、該メモリアドレス の該第1の範囲内にはない該メモリアドレスの該第2の範囲にアドレス空間を割 り付けるステップと、 該処理手段を用い、該第1のアプリケーションの該第2の部分と該第2のアプ リケーションの該第2の部分のいずれか大きい方を格納するために十分な大きさ を有する該メモリアドレスの該第1の範囲に一時的なアドレス空間を割り付ける ステップとを包含し、該一時的なアドレス空間が該第1のアプリケーションの一 時的なブロックを一時的に格納し、該第2のアプリケーションの一時的なブロッ クを一時的に格納する、コンピュータシステムにメモリを割り付ける方法。 11.前記処理手段を用い、前記第1のアプリケーションが実行されるとき、該 第1のアプリケーションの前記第2の部分を前記一時的なアドレス空間に一時的 に格納するステップをさらに包含する、請求項10に記載の方法。 12.前記処理手段を用い、前記第2のアプリケーションが 実行されるとき、該第2のアプリケーションの前記第2の部分を前記一時的なア ドレス空間に一時的に格納するステップをさらに包含する、請求項10に記載の 方法。 13.前記メモリアドレスの前記第1の範囲がコンベンショナルメモリである、 請求項10に記載の方法。 14.前記メモリアドレスの前記第2の範囲が拡張メモリである、請求項10に 記載の方法。 15.前記メモリアドレスの前記第2の範囲がエクスパンディッドメモリである 、請求項10に記載の方法。 16.前記第1のアプリケーションが常駐終了型アプリケーションである、請求 項10に記載の方法。
JP6520278A 1993-03-09 1994-03-08 メモリ管理装置およびメモリ管理方法 Pending JPH08507630A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US2831293A 1993-03-09 1993-03-09
US028,312 1993-03-09
PCT/US1994/002523 WO1994020905A1 (en) 1993-03-09 1994-03-08 Method and apparatus for memory management

Publications (1)

Publication Number Publication Date
JPH08507630A true JPH08507630A (ja) 1996-08-13

Family

ID=21842743

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6520278A Pending JPH08507630A (ja) 1993-03-09 1994-03-08 メモリ管理装置およびメモリ管理方法

Country Status (6)

Country Link
EP (1) EP0688449A4 (ja)
JP (1) JPH08507630A (ja)
CN (1) CN1090780C (ja)
AU (1) AU6253794A (ja)
CA (1) CA2157572C (ja)
WO (1) WO1994020905A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7143263B2 (en) * 2003-10-16 2006-11-28 International Business Machines Corporation System and method of adaptively reconfiguring buffers
US7603392B2 (en) * 2006-06-05 2009-10-13 International Business Machines Corporation System, method and computer program product for storing transient state information
CN115994028A (zh) * 2022-11-10 2023-04-21 西南计算机有限责任公司 一种突破dos操作系统内存瓶颈的数据处理方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4943910A (en) * 1987-04-14 1990-07-24 Kabushiki Kaisha Toshiba Memory system compatible with a conventional expanded memory
US4926322A (en) * 1987-08-03 1990-05-15 Compag Computer Corporation Software emulation of bank-switched memory using a virtual DOS monitor and paged memory management
US5280599A (en) * 1989-01-09 1994-01-18 Kabushiki Kaisha Toshiba Computer system with memory expansion function and expansion memory setting method
US5175830A (en) * 1989-06-16 1992-12-29 International Business Machines Corporation Method for executing overlays in an expanded memory data processing system
US5167030A (en) * 1989-08-23 1992-11-24 Helix Software Company, Inc. System for dynamically allocating main memory to facilitate swapping of terminate and stay resident communication program to increase available memory space
US5146580A (en) * 1989-10-25 1992-09-08 Microsoft Corporation Method and system for using expanded memory for operating system buffers and application buffers
US5237669A (en) * 1991-07-15 1993-08-17 Quarterdeck Office Systems, Inc. Memory management method

Also Published As

Publication number Publication date
WO1994020905A1 (en) 1994-09-15
CN1090780C (zh) 2002-09-11
CA2157572C (en) 1998-12-01
CA2157572A1 (en) 1994-09-15
CN1120867A (zh) 1996-04-17
EP0688449A4 (en) 1997-08-27
AU6253794A (en) 1994-09-26
EP0688449A1 (en) 1995-12-27

Similar Documents

Publication Publication Date Title
US5701476A (en) Method and apparatus for dynamically loading a driver routine in a computer memory
US3858182A (en) Computer program protection means
CA1266532A (en) Method to share copy on write segment for mapped files
US8151275B2 (en) Accessing copy information of MMIO register by guest OS in both active and inactive state of a designated logical processor corresponding to the guest OS
US5539899A (en) System and method for handling a segmented program in a memory for a multitasking data processing system utilizing paged virtual storage
JP3659062B2 (ja) 計算機システム
US6711605B2 (en) Multi OS configuration method and computer system
US6732138B1 (en) Method and system for accessing system resources of a data processing system utilizing a kernel-only thread within a user process
CA2275970C (en) Object and method for providing efficient multi-user access to shared operating system kernal code using instancing
US5675793A (en) Dynamic allocation of a common buffer for use by a set of software routines
US5842226A (en) Virtual memory management for a microkernel system with multiple operating systems
US20160239333A1 (en) Apparatus and method for scheduling graphics processing unit workloads from virtual machines
JP2002533807A (ja) 割込み/ソフトウエア制御スレッド処理
JPH07121373A (ja) データ処理システム及びその動作方法
US5893159A (en) Methods and apparatus for managing scratchpad memory in a multiprocessor data processing system
JP2010044784A (ja) システムにおける要求のスケジューリング
JP2003531434A (ja) Javaコンピュータプログラムを実行するためのコンピュータ方法およびシステム
EP0403124A2 (en) Overlay swapping
CN118210622A (zh) 一种内存分配方法及计算设备
JP2001043180A (ja) マイクロプロセッサおよびそのための記憶装置
CN109783145B (zh) 一种创建基于多映像的多功能嵌入式系统的方法
US6895583B1 (en) Task control block for a computing environment
US6600493B1 (en) Allocating memory based on memory device organization
US6883171B1 (en) Dynamic address windowing on a PCI bus
US6532487B1 (en) Method and system for managing semaphores in an object-oriented multi-tasking computer system