[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP3527765B2 - プログラムキャッシュ装置 - Google Patents

プログラムキャッシュ装置

Info

Publication number
JP3527765B2
JP3527765B2 JP29858593A JP29858593A JP3527765B2 JP 3527765 B2 JP3527765 B2 JP 3527765B2 JP 29858593 A JP29858593 A JP 29858593A JP 29858593 A JP29858593 A JP 29858593A JP 3527765 B2 JP3527765 B2 JP 3527765B2
Authority
JP
Japan
Prior art keywords
program
space
address
stored
cache
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.)
Expired - Fee Related
Application number
JP29858593A
Other languages
English (en)
Other versions
JPH07152641A (ja
Inventor
準 中川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP29858593A priority Critical patent/JP3527765B2/ja
Priority to US08/293,593 priority patent/US5619696A/en
Publication of JPH07152641A publication Critical patent/JPH07152641A/ja
Application granted granted Critical
Publication of JP3527765B2 publication Critical patent/JP3527765B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、プログラムキャッシュ
装置に関し、特に、デマンドページング方式のメモリ管
理を行うコンピュータシステムにおいて、プログラムを
高速に起動する目的でメモリにプログラムをキャッシュ
する装置に関する。
【0002】
【従来の技術】近年、半導体メモリは次第に安価とな
り、比較的小型のコンピュータシステムにおいても主記
憶装置として大容量のメモリを接続できるようになって
いる。従って、このようなコンピュータを制御するオペ
レーティングシステム(以下「OS」と言う。)には、
このような大容量のメモリを有効に利用する機能が求め
られている。即ち、ハードディスク等の外部記憶装置上
のプログラムやデータを、このような大容量のメモリ上
に効率よくキャッシュする機能が要求されている。ここ
で、「キャッシュする」とは、ハードディスクのような
当該メモリよりも更に大容量且つ低速なメモリに記憶さ
れているデータ又はプログラムを、中央演算処理装置に
よる実行のために読み出すとともに、次回における実行
を迅速に行うために高速な当該メモリに保持しておくこ
とである。
【0003】また、近年のコンピュータシステムの複雑
化に伴い、システム上で動作するプログラムは、開発面
及び保守面での効率の良さが求められている。そのた
め、かかるプログラムが小さなモジュール(プログラ
ム)に分割されて外部記憶装置に格納され、このような
多数のプログラムが実行時に主記憶装置上で再配置,又
は結合され、中央演算処理装置によって実行される様に
構成されていることが多い。従って、このような局面で
も、主記憶装置上で効率良くプログラムをキャッシュす
ることが要求されている。
【0004】これらの要求を満たすべく、従来より数々
のキャッシュ方式が提案されている。これらの各キャッ
シュ方式のうち、例えば、デマンドページング方式を採
用するOSでは、メモリは固定長の微少な記憶領域(物
理ページ)に分割されたページ単位で管理されており、
プログラムも同じ大きさのページに分割されている。そ
して、外部記憶装置上に記憶されたプログラム中の中央
演算処理装置での処理に必要なページが、ページ単位で
メモリ上にキャッシュされるようになっている。
【0005】具体的には、あるプロセス(マルチタスク
におけるプロセス(即ち、タスク若しくは実行単位)の
ことを言う。以下同様とする。)からプログラムの起動
が要求された際に、メモリ上における当該プロセスのた
めの論理空間の記憶状態と外部記憶装置上における当該
プログラムを構成するページの記憶位置との対応関係
を、ページ毎に調べておく。なお、プログラムを起動し
ただけでは、メモリ上のページ枠にプログラムのページ
はロードしない。そして、あるページが実際にアクセス
された時点で、当該ぺージについての物理ページがメモ
リ内のページキャッシュ内に存在すれば(即ち、当該ペ
ージが過去に外部記憶装置から読み込まれていたなら
ば)、その物理ページを当該プロセスの論理空間に取り
付ける(即ち、プロセスからの論理アドレス指定を物理
アドレス指定に変換できるようにアドレス変換テーブル
を設定して、当該プロセスから当該物理ページをアクセ
ス可能な状態にする)。一方、当該ページについての物
理ページがページキャッシュ内に存在していなければ、
新規の物理ページを確得して、外部記憶装置からそのペ
ージの内容をこの物理ページに読み込み、ぺージキャッ
シュ内に当該物理ページを配置する。これと同時に、プ
ロセスの論理空間にも取り付ける。
【0006】なお、ページキャッシュ上の物理ページと
プロセスに取り付ける物理ページとは、コピーオンライ
トの手段により共有させられる。ここで、コピーオンラ
イトの手段による共有とは、プロセスからの当該物理ペ
ージへの参照は可能とするとともに書き込みを禁止し
(読み込みはコピーなしでできる)、プロセスから当該
物理ページへの書込みがあった時点で割込みを発生さ
せ、この割込み処理によって当該物理ページの内容を新
しい別のページにコピーした上で、新しい方の物理ペー
ジを当該プロセスに取り付け直し、書き込みを解除する
ことを言う。このコピーオンライトによれば、プロセス
空間に取り付けられた物理ページの内容がプロセスによ
って変更されても、元の物理ページの内容を元の状態の
ままにしておくことができ、他のプロセスからのアクセ
スに備えることができる。
【0007】なお、プログラムをローディングした際に
は、プロセスが実際にそのプログラム(即ち、プログラ
ムの命令部及びデータ部)を実行する前に、OSがプロ
グラムの再配置処理及びシステムライブラリとの結合処
理を行う必要がある。従来のデマンドページング方式で
は、これらの処理を、コピーオンライトの手段のための
設定をした後でプロセス空間において実行していた。
【0008】ここで、プログラムの再配置処理の内容を
説明する。外部記憶装置に格納されているプログラム
は、ある特定範囲のアドレス(論理アドレス)を有する
論理空間に取り付けられることを想定して構成されてい
る。例えば、図11に示す例では、外部記憶装置に格納
されているプログラムは、1000番地から始まる論理
空間に取り付けることを想定している。従って、その命
令部にあるジャンプサブルーチン命令は、当該プログラ
ムの範囲内と考えられる1300番地にジャンプするよ
うになっている。図11(a)に示すように、予め想定
した通りにOSが当該プログラムをローディングする場
合は再配置をする必要はない。ところが、プロセスにプ
ログラムが複数個ある前提下では、このプログラムが予
め想定したアドレスにローディングするという保証はな
い。従って、図11(b)に示すように、予め想定した
アドレス以外のアドレスにローディングした場合には、
ジャンプサブルーチン内のジャンプ先アドレスをそのま
まにしておくと、当該プログラムとは無関係の1300
番地に分岐してジャンプすることになってしまう。そこ
で、OSは、図11(d)の再配置テーブルを参照し
て、図11(c)に示すように、ジャンプ先アドレスを
当該プログラムの範囲内の正しい番地に書き換えるので
ある。
【0009】また、システムライブラリとの結合処理を
説明する。外部記憶装置に格納されているプログラム
は、同様に外部記憶装置上に格納されているシステムラ
イブラリ内のサブルーチンを引用することを想定して構
成されている場合がある。例えば、図12に示す例で
は、ローディングされたプログラムの1044番地に、
ジャンプサブルーチン命令が組み込まれている。但し、
図10(a)に示すように、このジャンプサブルーチン
命令内のジャンプ先アドレスには、当初はダミーのアド
レス“00000000”が書き込まれている。そし
て、OSは、図10(b)に示すように、プロセス空間
にてプログラムを実行する前に、プログラム内の結合テ
ーブル(図10(d))を参照することにより、システ
ムライブラリ(図10(c))内の何れかのサブルーチ
ンの先頭アドレスを、ジャンプ先アドレスに書き込むの
である。
【0010】
【発明が解決しようとする課題】ところで、プログラム
の実行によりページの内容が書き替えられないのであれ
ば,即ちプロセスがプログラムの内容を読むだけであれ
ば、単にページキャッシュ上の物理ページをプロセス空
間に取り付けるだけで物理ページを共有することができ
る。しかし、実際にはプログラムの実行によってページ
は書き替えられるため、即ち特にプログラムのデータ域
はプログラムの実行によって書き換えれられるため、当
該物理ページも書き替えられてしまい、次回のプログラ
ムの実行時に誤動作してしまう。
【0011】また、ページの内容が書き替えられること
を想定して、当該物理ページに読み込まれているプログ
ラムの内容を他の物理ページにコピーした上でプロセス
空間に取り付けたとすると、書き替えられないページに
関しては同じ内容のページが二重に存在することにな
り、メモリの利用効率が下がる。
【0012】そこで、従来のデマンドページング方式で
は、外部記憶装置から当該物理ページに読み込まれたプ
ログラムをプロセス空間に取り付ける場合、コピーオン
ライトの手段のための設定を行っていた。
【0013】しかしながら、その後に直ちに続いて実行
されるプログラムの再配置処理やシステムライブラリと
の結合処理には必然的に書き込み処理が含まれているの
で、それらの書き込み処理により割込みが発生して、必
然的に当該物理ページのコピーが実行されていた。その
ため、常に物理ページを二重に使用せざるを得ないの
で、メモリの利用効率が下がっていた。
【0014】また、従来のデマンドページング方式で
は、プログラムの再配置処理及びシステムライブラリと
の結合処理は、プロセス空間内で行っていた。従って、
同じプログラムを再起動するときには、当該物理ページ
はコピーオンライトの手段でプロセス空間に取り付けら
れるので、再度同じ様なプログラムの再配置処理及びシ
ステムライブラリとの結合処理を行う必要を生じ、処理
効率の悪いものであった。しかも、この再起動時での再
配置処理及びシステムライブラリとの結合処理において
は、外部記憶装置上の再配置情報及び結合情報を参照す
るため、I/O処理が必要となり、処理時間は膨大とな
っていた。
【0015】そこで、本発明の課題は、上記問題点に鑑
み、コピーオンライトの手段によって物理ページをコピ
ーしてメモリを二重に使用することを最小限に留め、メ
モリの利用効率を上げることができるプログラムキャッ
シュ装置を提供することである。
【0016】
【課題を解決するための手段】本発明によるプログラム
キャッシュ装置は、上記した課題を解決するために、プ
ログラムを格納する第1の記憶装置(100)と、物理
アドレスを各々与えられた複数の物理ページ(102
a)を有する第2の記憶装置と、前記第1の記憶装置
(100)から前記プログラムを読み出して前記物理ペ
ージに記憶するとともにこの物理ページのプログラムを
アクセスして特定の処理を行う処理装置(101)と、
個々の前記物理アドレス値に対して、第2種のアドレス
としての論理アドレスを関連付ける管理手段(103)
と、前記第2の記憶装置(102)に記憶されたプログ
ラム上のアドレス情報を変更するアドレス情報変更手段
(104)と前記物理ページ(102a)上に記憶され
ている前記プログラムを、他の物理ページ(102a)
上にコピーするコピー手段(105)とを有するプログ
ラムキャッシュ装置において、前記第2の記憶装置(1
02)は、前記論理アドレスの集合体としてのメモリ論
理空間(102b)を有し、このメモリ論理空間(10
2b)は、第1の記憶領域(100)から読み取ったプ
ログラムを格納するプログラムキャッシュ空間(102
c)と、前記処理装置(101)が実行するプログラム
を格納するプロセス空間(102d)とを有し、前記管
理手段(103)は、前記アドレス情報変更手段(10
4)が前記アドレス情報の変更を行った後に、前記プロ
グラムキャッシュ空間(102c)上に格納されている
プログラムの論理アドレスに対応する前記物理ページ
(102a)の物理アドレスを、前記プロセス空間(1
02d)内の論理アドレスに対応付け、前記コピー手段
(105)は、前記管理手段(103)が前記物理アド
レスの前記プロセス空間(102d)内の論理アドレス
に対する対応付けを行った後で前記プログラムへの書き
込みがあった場合に、前記物理ページ(102a)の内
容をコピーすることを特徴とする。
【0017】本発明は、以下に示すように、様々な形態
で実施可能である。先ず、第1の記憶装置を不揮発性の
メモリとし、第2の記憶装置を揮発性のメモリとするこ
とができる。例えば、第1の記憶装置を、ハードディス
ク,光磁気ディスク,フロッピーディスクのような磁気
記憶装置とする事ができる。この第1の記憶装置として
は、大容量の記憶装置を用いる事が望ましい。また、こ
の第1の記憶装置はプログラムキャッシュ装置が組み込
まれたコンピュータの外部に接続される物であっても良
いし、内蔵されるものであっても良い。或いは回線によ
り接続された別のコンピュータに接続された記憶装置で
も良い。一方、第2の記憶装置を、RAM(ランダムア
クセスメモリ)のような半導体メモリとすることができ
る。この第2の記憶装置としては、高速な書き込み及び
読み出しが可能な記憶装置を用いる事が望ましい。
【0018】この第1の記憶装置及び第2の記憶装置,
並びに中央処理装置は、相互にバスで接続する事が望ま
しい。処理装置は、複数の実行単位を有し、この実行単
位毎にプログラムを実行するように構成することができ
る。この複数の実行単位は、時系列に処理実行を交代し
ても良いし、平行に処理を実行しても良い。
【0019】管理手段は、中央処理装置又は他の処理装
置内においてプログラムによって実行される機能手段で
あっても良いし、アドレス変換テーブルを有するファー
ムウェア,又は論理回路のようなハードウェアとしても
良い。
【0020】アドレス情報変更手段が変更するプログラ
ム上のアドレス情報は、当該プログラム内に含まれるサ
ブルーチン又は当該プログラムの外に存するサブルーチ
ンの先頭アドレスに処理をジャンプさせる命令であって
も良いし、参照すべきデータの格納位置を示すアドレス
情報であっても良い。また、このアドレス情報変更手段
は、当該プログラムに含まれて、プログラムと共に第1
の記憶装置から読み込まれたテーブルを参照して、当該
プログラムの内容を参照するようにしても良い。
【0021】メモリ論理空間上のプロセス空間は、処理
装置の処理単位毎に用意されても良い。この場合、実行
単位の処理実行に応じて、プロセス空間が複数存在させ
ても良いし、時系列的に生成・消去させるようにしても
良い。
【0022】管理手段が物理ページをプロセス空間内の
論理アドレスに対応付けた後には、この物理ページに記
載されたプログラムへの書き込みが禁止されるようにし
ても良い。
【0023】コピー手段が物理ページをコピーした後に
は、コピー元の物理ページはプログラムキャッシュ空間
のみに対応付け、コピー先の物理ページはプロセス空間
のみに対応付けるようにしても良い。
【0024】第1の記憶装置が、プログラムキャッシュ
空間上に格納された全プログラムを一括して格納するフ
ァイルを備えるようにしても良い。さらに、処理装置
は、一定期間内に予め定められた複数のプログラムを連
続して実行するようにしてもよい。そして、この一定期
間の満了時にプログラムキャッシュ空間に格納されてい
る全プログラムをファイル内に格納し、処理装置が前記
プログラムを要求した際にはこのファイル内に格納され
ている全プログラムをプログラムキャッシュ空間に復元
するようにしてもよい。
【0025】
【作用】処理装置101がプログラムを要求すると、第
2の記憶装置102は第1の記憶装置100に記憶され
ているプログラムを物理ページ102aに読み取って記
憶する。このプログラムが記憶された物理ページ102
aの物理アドレスは、管理手段103によって、メモリ
論理空間102b上においてはプログラムキャッシュ空
間102c内の論理アドレスに対応付けられている。従
って、当該プログラムがプログラムキャッシュ空間10
2c上に格納されていると扱うことができる。
【0026】そして先ず、このプログラムキャッシュ空
間102c上において、アドレス情報変更手段104
が、当該プログラム上のアドレス情報を変換する。次
に、管理手段103が、プログラムキャッシュ空間10
2c上に格納されているプログラムが記載されている物
理ページ102aの物理アドレスを、プロセス空間10
2dの論理アドレスに対応づける。従って、この時点
で、プログラムを保持している物理ページ102aがプ
ログラムキャッシュ空間102cとプロセス空間102
dとの間で共有され、プロセス空間上102dにプログ
ラムが格納されたことになる。従って、これ以降、物理
ページをコピーする事なく、処理装置101がプロセス
空間102d上のプログラムをアクセスすることができ
る。
【0027】また、この後に処理装置101がプロセス
空間102d上のプログラムを書き込みを掛けると、コ
ピー手段が、物理ページ102aをコピーする。以上の
ようにして、いわゆるコピーオンライトが実行される。
【0028】このように、本発明では、処理装置がプロ
グラムに対する書き込みを掛けない限り、プログラムが
記載されている物理ページ102aはコピーされない。
即ち、メモリが二重に使用される事が最小限に抑えられ
る。従って、メモリの利用効率を上げる事ができる。ま
た、退避復元ファイルを備えれば、多数のプログラムが
起動されている処理空間においても、記憶装置100か
らの読み込みは一回で済み、このため処理区間に要する
時間を大幅に短縮できる。
【0029】
【実施例】次に、本発明の実施例を図面を参照して説明
する。以下の各実施例では、キャッシュの対象は、プロ
グラムを分割したページではなく、プログラムそのもの
である。但し、ここで言う「プログラム」とは、必ずし
も一つのアプリケーション全体のみを意味するのではな
く、それを構成する単位のプログラムであって、少なく
とも一つの命令を備えているものも含む。
【0030】
【実施例1】図2は、本発明の第1実施例によるコンピ
ュータシステムにおけるプログラムキャッシュ装置のハ
ード構成図である。
【0031】図2において、外部記憶装置1,メモリ
2,及び中央処理装置(CPU)3は、バス4によって
相互に接続されている。この中央演算処理装置3は、外
部記憶装置1に格納され,メモリにキャッシュされたO
Sを実行することによって、外部記憶装置1,メモリ
2,及び中央演算処理装置3自体の状態,及び動作を制
御する。また、中央演算処理装置3は、OSによる制御
の下に、外部記憶装置1に格納され,メモリにキャッシ
ュされているプログラムを起動し、所定のタスク(プロ
セス)を実行する。この中央演算処理装置3は、複数の
タスクを仮想的に同時に並列して実行するマルチタスク
を行うことができる。
【0032】なお、中央演算処理装置3の機能の一部に
は、メモリ管理装置3aの機能が備えられている。即
ち、このメモリ管理装置3aは、読み出し又は書き込み
を行うためにプロセスが指定するメモリ上の論理アドレ
スを、実際にメモリに読み書きする物理ページ48の番
地を示す物理アドレスに変換する機能を有している。こ
の変換の為には、例えば本出願人による特海平4−20
5535号に示されるようなアドレス変換テーブルを用
いれば良い。
【0033】図2における外部記憶装置1及びメモリ2
の構成を、図3に詳細に示す。図3から明らかなよう
に、外部記憶装置1は、システムライブライブラリA,
複数のプログラムB,及び退避復元ファイルCを格納し
ている。
【0034】システムライブラリAは、図12(c)に
示すように、多数のサブルーチンA’から構成されてい
る。そして、システム起動時に一括して読み出されて、
メモリ2のシステム共通空間2bに書き込まれ、電源が
切られるまで常駐する。なお、システムライブラリAに
は、図12(e)に示すシステムライブラリの入り口情
報テーブルが付加されている。この入り口情報テーブル
は、図12(d)に示す結合テーブルで指定されたシン
ボル文字列から、システムライブラリA内の該当するサ
ブルーチンA’の入り口アドレスを引き出すテーブルで
ある。
【0035】このプログラムBは、命令,データ,及び
テーブル(結合テーブル,再配置テーブル)から構成さ
れている。図3では、外部記憶装置1上に2個のプログ
ラムが格納されている状態を例示している。これらプロ
グラムBのうち1番目のプログラムは、外部記憶装置
1上の0110番地(物理アドレス)に格納されてお
り、システムライブラリとの結合が予定されている。ま
た、2番目のプログラムは、0120番地に格納され
ており、システムライブラリとの結合は予定されていな
い。これらのプログラムBの各々は、個々のプログラム
の初回起動時のみ読み出されて、メモリ2のプログラム
キャッシュ空間24に書き込まれる。
【0036】退避復元ファイルCは、コンピュータシス
テムの起動が終了する際に、メモリ2のシステム共通空
間2bに書かれている情報(の一部)を一括して退避さ
せ、これを格納するとともに、システムが再起動する際
に、格納している情報をシステム共通空間2b上に一括
して復元させるためのファイルである。この退避復元フ
ァイルCは、管理情報部と制御テーブル格納域とプログ
ラム格納域とから構成されている。制御テーブル格納域
には、システム共通空間2b上の使用中制御テーブルリ
スト21の内容をそのまま格納する。プログラム格納域
には、システム共通空間2b内のプログラムキャッシュ
空間24に書き込まれているプログラムをそのまま格納
する。また、管理情報域には、退避復元ファイルCの内
容をシステム共通空間2b上に一括して復元させる際に
必要な情報(プログラムの数など)を格納する。
【0037】メモリ2は、論理アドレスによって認識で
きるメモリ空間(論理空間)を有している。なお、この
メモリ空間(論理空間)は仮想的なものであり、実際に
はメモリ空間における論理アドレスは変換テーブルに従
って物理ページ48の物理アドレスに変換される。よっ
て、メモリ空間上の何れかのアドレスに配置された情報
は、実際にはメモリ内の何れかの物理ページ48上に記
憶されているのである。このメモリ空間は、複数のプロ
セス空間2aと一個のシステム共通空間2bとから構成
されている。
【0038】このシステム共通空間2bには、プログラ
ムキャッシュ空間24が備えられている。このプログラ
ムキャッシュ空間24には、外部記憶装置1から読み込
まれた複数のプログラムBが格納される。そして、この
プログラムキャッシュ空間24上で、プログラムの再配
置処理及びシステムライブラリとの結合処理,並びにコ
ピーオンライトの手段のための設定が行われる。なお、
図3では、プログラムキャッシュ空間24内のプログラ
ムに対応するプログラムが格納されている物理テーブル
群48をメモリ空間外に示す。このように、物理ページ
群48をメモリ空間外に示したのは、物理アドレスから
把握される物理空間と論理アドレスから把握されるメモ
リ空間とでは、実体が同じ物であっても存在する(把握
がなされる)次元が異なり、同次元で現すことが困難だ
からである。従って、図上の矢印は、論理アドレスと物
理アドレスとの関連付けを示しており、前述のメモリ管
理装置3aによってこの関連付けが制御されるのであ
る。
【0039】また、システム共通空間2bのプログラム
キャッシュ空間24以外の部分には、システムライブラ
リA,並びに使用中制御テーブルリスト21,空き制御
テーブルリスト20,及びハッシュテーブル22が格納
されている。
【0040】使用中制御テーブルリスト21は、プログ
ラムキャッシュ空間24に格納されている個々のプログ
ラムBの管理データを各々記載した複数の制御テーブル
23を、ひとまとまりにしたリスト構造である。これら
の制御テーブル23の何れかに、一番目のプログラム
の識別情報として格納位置を示す“0110”が記載さ
れている。ハッシュテーブル22は、この識別情報を元
にして、対応する制御テーブルを高速に見つけ出すため
のテーブルである。空き制御テーブルリスト20は、対
応するプログラムBがプログラムキャッシュ空間24上
に格納されていない余りの制御テーブルをひとまとまり
にしたリスト構造である。
【0041】プロセス空間2aは各プロセス毎に用意さ
れおり、これら複数のプロセス空間2aがメモリ空間内
にパラレルに存在している。個々のプロセス空間2aに
は、対応するプロセスからのアクセスに従って、このプ
ロセスからの読み出し及び書き込みが可能なプログラム
を格納している。なお、ここで言うプログラムも論理ア
ドレスで格納位置が示されるプログラムであり、実際に
はメモリ2上の物理ページに格納されているプログラム
に対応している。この関係を説明するために、図3で
は、説明のためにプロセス空間2aを複数個並列に示し
ている。
【0042】なお、各プロセス空間2aにおける星印の
箇所については、プロセス固有のライブラリと結合され
るため、コピーオンライトにより別のページとなる。ま
た、プロセス空間2a上の命令及びデータの領域には、
図面上の矢印で示すように物理ページ群X又はYが取付
けられている。即ち、図3は、外部記憶装置1上のプロ
グラムを、先ず最初にプロセスaが1000番地に配
置するものとして起動し、続いてプロセスbが同じく1
000番地に配置するものとして起動し、最後にプロセ
スcが2000番地に配置するものとして起動した例で
ある。プロセスaがプログラムを起動した時点で、プ
ログラムキャッシュ空間24を通してそのプログラム
の内容が読み込まれた物理ページ群Xは、プロセスbが
プログラムを起動すると、同じ配置アドレスであるが
ために共有される(この時点では、プログラムキャッシ
ュ空間24とも共有されている。)。これに対し、プロ
セスcがプログラムを起動した際にはプログラムキャ
ッシュ空間24上で再配置が行われ、この再配置の時点
でコピーオンライトの手段が効を成して、物理ページ群
Xの内容は物理ページ群Yへとコピーされる。そして、
プログラムキャッシュ空間24から物理ページ群Xは取
り外されて、代わりに物理ページ群Yが取り付けられ、
プログラムキャッシュ空間とプロセスcとの間で共有さ
れている。なお、プログラムに関しても同様の制御が
行われるが、図面では物理ページの共有関係についてを
省略している。
【0043】また、プロセス空間2a上の命令及びデー
タの領域は、プログラムキャッシュ空間24において行
われた結合処理の結果に応じて、システム共通空間2b
上のシステムライブラリAに結合されている。
【0044】図3におけるメモリ空間のシステム共通空
間2bにおける各テーブル20,21,及びプログラム
キャッシュ空間24の関係を、図4において更に詳細に
説明する。
【0045】プログラムキャッシュ空間24には、複数
のプログラムが格納されている。但し、この図4におい
ては、説明の都合上、一つのプログラムのみ例示してい
る。一つ々々のプログラムには、命令域30,データ域
33,結合情報テーブル36,及び再配置情報テーブル
39が備えられている。
【0046】この命令域30には、プログラムで実行さ
れる命令が収容されている。データ域33には、命令を
実行するにおいて用いられるデータが収容されている。
結合情報テーブル36には、図12(d)に示すよう
に、結合処理を実行するに際して用いられる情報が記載
されている。図12(d)において、結合情報テーブル
内の各エントリには、最初に引用対象となるサブルーチ
ンのシンボル文字列が記載され、次にこのエントリに関
してジャンプ先アドレスを書き替える処理の命令部内に
おける数とデータ部内における数とが記載され、最後尾
に書き換えを行うアドレスが命令部の先頭ビットから何
バイト目なのかが記載されている。
【0047】再配置情報テーブル39には、図11
(d)に示すように、再配置処理を実行するに際して用
いられる再配置対象のアドレスが記載されている。図1
1(d)において、最初の1ビットは、書き換えるデー
タ値が命令部を指す“0”なのか、データ部を指す
“1”なのかを表し、続く31ビットは、書き換える場
所が命令部(又はデータ部)の先頭ビットから何バイト
目なのかを示す。なお、書き換える範囲は、OSにより
例えば4バイトと約束されている。また、図11の例で
は、再配置対象を、命令部に記載されているジャンプサ
ブルーチンであるとしているが、再配置対象のバリエー
ションとしては、命令部に存在し且つデータ部内のアド
レスを表している場合,データ部に存在し且つ命令部内
のアドレスを表している場合,及びデータ部に存在し且
つデータ部内のアドレスを表している場合が考えられ
る。この再配置情報テーブル39は、命令部用とデータ
部用に分かれている。
【0048】なお、これらの各領域30,33,36,
39に記載されている各種情報が、実際には、メモリ管
理装置3aで変換される物理アドレスを付された物理ペ
ージ48に記載されていることは、既に述べた通りであ
る。
【0049】プログラムキャッシュ空間24に格納され
ている個々のプログラムについては、各々その管理デー
タを記載した制御テーブル23が備えられている。この
制御テーブルに記載されている各種管理データのうち、
リンクフィールド25,26は、制御テーブルリスト2
0を構成するのに用いられるデータである。装置上位置
識別情報27は、当該制御テーブル23に対応するプロ
グラムの外部記憶装置1における格納位置(物理アドレ
ス)を示す。命令域ポインタ29は、プログラムキャッ
シュ空間24における当該プログラムの命令域30の先
頭アドレス(論理アドレス)を示す。命令域サイズ情報
31は、この命令域30の大きさを示す。データ域ポイ
ンタ32は、同じくデータ域33の先頭アドレス(論理
アドレス)を示す。データ域サイズ情報34は、このデ
ータ域33の大きさを示す。結合情報テーブルポインタ
35は、同じく結合情報テーブル36の先頭アドレス
(論理アドレス)を示す。結合情報テーブルサイズ37
は、この結合情報テーブル36の大きさを示す。再配置
情報テーブルポインタ38は、同じく再配置情報テーブ
ル39の先頭アドレス(論理アドレス)を示す。再配置
情報サイズ40は、この再配置情報テーブル39の大き
さを示す。命令域配置アドレス情報42は、当該制御テ
ーブル23に対応するプログラムがプロセス空間2aに
取り付けられる際に命令域30がどの論理アドレスに配
置されるかの仮定の情報を示す。データ域配置アドレス
情報43は、当該制御テーブル23に対応するプログラ
ムがプロセス空間2aに取り付けられる際にデータ域3
3がどの論理アドレスに配置されるかの仮定の情報を示
す。その他のプログラム情報44は、その他の管理情報
を示す。ハッシュリンクフィールド45,46は、ハッ
シュ構造内サブリスト47を構成するのに用いられるデ
ータである。
【0050】使用中制御テーブルリスト21は、プログ
ラムキャッシュ空間24に現に格納されているプログラ
ムの管理データを記載している制御テーブル23を、リ
ンクフィールド25,26によって、使用順に従って相
互に繋ぎ、ひとまとまりにしたリスト構造である。即
ち、リンクフィールド25は、当該制御テーブル23に
対応するプログラムの起動直前に起動されたプログラム
の管理データを記載する制御テーブル23の先頭アドレ
スを示している。また、リンクフィールド26は、同様
に、当該制御テーブル23に対応するプログラムの起動
直後に起動されたプログラムの管理データを記載する制
御テーブル23の先頭アドレスを示している。なお、使
用中制御テーブルリスト21の先頭ポインタ21aに
は、リストの先頭の制御テーブル23のアドレスが記載
されている。
【0051】ハッシュテーブル22は、プロセスからプ
ログラム起動要求があった際に、そのプログラムが使用
中制御テーブルリスト21に存在するか否かを高速に調
べるためのテーブルである。このハッシュテーブル22
内の各フィールドは、複数あるハッシュ構造内サブリス
ト47の先頭の制御テーブル23のアドレスを全て格納
している。
【0052】なお、このハッシュ構造内サブリスト47
は、使用中制御テーブルリスト21とは異なった順番
で、ハッシュリンクフィールド45,46により、使用
中の制御テーブル23を相互に繋いだリスト構造であ
る。従って、使用中制御テーブルリスト21と複数のハ
ッシュ構造内サブリスト47とは、同一の制御テーブル
23を共通して用いて構成されている。また、ハッシュ
リンクフィールド45,46の機能は、リンクフィール
ド25,26の機能と同様である。
【0053】ハッシュテーブル22は、プログラムが使
用中制御テーブルリスト21に存在するか否かを調べる
ために、検索キーとして、外部記憶装置1上のプログラ
ムの格納位置を一意に識別するための数値(即ち、アド
レス)を用いている。なお、この数値は、制御テーブル
23内の装置上位置識別情報27の数値と同じ数値であ
る。
【0054】空き制御テーブルリスト20は、全制御テ
ーブル23のうち、使用中制御テーブルリスト21に組
み込まれていない制御テーブル23をひとまとまりにし
たリスト構造である。即ち、プログラムキャッシュ空間
24に格納されている特定のプログラムの管理データを
記載していない制御テーブル23を、リンクフィールド
25,26によって繋げたものである。なお、空き制御
テーブルリスト20の先頭ポインタ20aには、リスト
の先頭の制御テーブル23のアドレスが記載されてい
る。
【0055】次に、OSに従って中央演算処理装置3が
実行するキャッシュ処理の内容を、図5のフローチャー
トに従って説明する。このフローは、プロセスからプロ
グラムの起動要求があった場合に、スタートする。そし
て、最初にステップS01において、プログラム名等の
起動要求識別情報を、外部記憶装置1上の位置識別情報
(アドレス)27に変換する。次に、ステップS02に
おいて、ステップS01にて変換した位置識別情報に基
づいて、ハッシュテーブル22を検索して、プログラム
キャッシュ空間24に要求されたプログラムが存在する
か否か(即ち、対応する制御テーブル23が存在するか
否か)をチェックする。
【0056】ハッシュテーブル22中を検索して、対応
する制御テーブル23を見つけることができなかった場
合(キャッシュ24上に当該プログラムが存在していな
かった場合)、ステップS03において、制御テーブル
の獲得を行う。
【0057】図6は、このステップS03で実行される
サブルーチンの内容を示す処理フローである。このサブ
ルーチンでは、先ず、起動要求のあったプログラムを格
納するために、現時点での空き物理ページ48が足りて
いるかどうかをチェックする(ステップS20)。足り
ている場合には、次に空き制御テーブルリスト20に制
御テーブル23があるか否かをチェックする(ステップ
S21)。制御テーブル23がある場合には、この空き
制御テーブルリスト20から制御テーブル23を一つ獲
得する(ステップS22)。その後、処理をリターンす
る。
【0058】空き制御テーブルリスト20に制御テーブ
ル23が一つもなかった場合には、使用中制御テーブル
リスト21の最後に繋がれている制御テーブル23を選
択して獲得し、プログラムキャッシュ空間24上からこ
の制御テーブル23に対応するプログラムを削除する
(ステップS23)。即ち、物理ページ48との対応関
係を解除し、物理ページ48を解放する。その後、処理
をリターンする。
【0059】物理ページ48が不足する場合には、続い
てプログラムキャッシュ空間24に削除可能なプログラ
ムが存在するか否かをチェックする(ステップS2
4)。削除可能なプログラムが存在する場合には、制御
テーブル23が一つもなかった場合と同様に、使用中制
御テーブルリスト21の最後に繋がれている制御テーブ
ル23を一つ選択し、その管理データを削除することに
より物理ページ48を得る(ステップS25)。削除
後、制御テーブル23は空きリストへ移す(ステップS
26)。一方、削除可能なプログラムが存在しない場合
には(ステップS24)、ページアウト処理を実行する
ことにより空き物理ページ48を作る(ステップS2
7)。このページアウト処理とは、メモリ2の論理空間
上の位置如何に拘わらず、比較的利用されていない物理
ページを外部記憶装置1に戻して、空き物理ページ48
を作る処理である。
【0060】ステップS26又はステップS27の処理
の終了後、処理をステップS20に戻す。従って、制御
テーブル23を一つ削除し,又はページアウト処理を行
っても尚空き物理ページが不足している場合には、この
ステップS24乃至ステップS27の作業を繰り返すこ
とになる。
【0061】図5に戻り、続くステップS04では、プ
ログラムキャッシュ空間24に新規の(空いている)物
理ページ48を取り付ける。次に、ステップS05にお
いて、プロセスから起動要求のあったプログラム(命令
部,データ部,及びテーブルを含む。)を、外部記憶装
置1から読み込んで、取り付けた物理ページ48に格納
する。
【0062】次に、ステップS06において、ハッシュ
リンクフィールド45,46を適切な値に設定して、獲
得した制御テーブル23をハッシュ構造内サブリスト4
7に取り付ける。また、リンクフィールド25,26を
適切な値に設定して、この制御テーブル23を使用中制
御テーブルリスト21の先頭にも取り付ける。さらに、
ステップS05にて読み込んだプログラムの内容に従っ
て、制御テーブル23内の残り全ての管理情報をセット
する。
【0063】次に、ステップS07において、プロセス
から要求された配置アドレスが命令域配置アドレス情報
42及びデータ域配置アドレス情報43と一致するか否
かに基づいて、プログラムの再配置が必要か否かをチェ
ックする。要求された配置アドレスが命令域配置アドレ
ス情報42及びデータ域配置アドレス情報43と一致し
ない場合、再配置が必要である。従って、続くステップ
S08において、プログラムキャッシュ空間24上で、
再配置処理を実行する。再配置処理を行った場合、命令
域配置アドレス情報42,データ域配置アドレス情報4
3を配置先アドレスに見合うように変更することによ
り、次回同じプログラムの起動があった場合に備える。
【0064】一方、ステップS07にて一致すると判断
した場合には、ステップS08の再配置処理をジャンプ
する。次に、ステップS09において、結合情報テーブ
ル36を参照し、システムライブラリAとの結合処理が
必要であるかをチェックする。結合処理が必要である場
合には、続くステップS10において、プログラムキャ
ッシュ空間24上で、システムライブラリAとの結合処
理を実行する。一方、ステップS09にて結合処理が必
要ないと判断した場合には、ステップS10の結合処理
をジャンプする。何れにしても、次に処理をステップS
15に進める。
【0065】ステップS02において、ステップS01
にて変換された位置識別情報がハッシュテーブル22を
たどってハッシュ構造内サブリスト47中に見つかった
場合、ステップS11において、使用中制御テーブルリ
スト21内におけるその制御テーブル23の位置を、現
在の位置から先頭の位置に変更する。
【0066】次に、ステップS12において、この制御
テーブル23に対応するプログラムキャッシュ24上の
プログラムに対応する物理ページ群48を、プログラム
キャッシュ空間24に、コピーオンライトの手段で取り
付け直す。但し、前回のプログラム起動時においては、
この物理ページ群48とプログラムキャッシュ空間との
対応関係を解除していない。従って、実際には物理ペー
ジ48を参照可能とするとともに書き込み禁止として、
コピーオンライトの手段の為の設定を行うだけである。
従って、外部記憶装置1からの読み込みは行わない。こ
の場合、取り付け直した物理ページ群48が他のプロセ
スによって現に使用中であれば、この他のプロセスの固
有空間2aとプログラムキャッシュ空間24との間で当
該物理ページ群48を共有することになる。これに対し
て、取り付け直した物理ページ群48が他のプロセスに
よって現に使用中でなければ、プロセス空間2aとの共
有関係は生じない。
【0067】次に、ステップS13において、プロセス
から要求された配置アドレスが命令域配置アドレス情報
42及びデータ域配置アドレス情報43と一致するか否
かに基づいて、プログラムの再配置が必要か否かをチェ
ックする。要求された配置アドレスが命令域配置アドレ
ス情報42及びデータ域配置アドレス情報43と一致し
ない場合、再配置が必要である。従って、続くステップ
S14において、プログラムキャッシュ空間24上で、
再配置処理を実行する。再配置処理を行った場合、命令
域配置アドレス情報42,データ域配置アドレス情報4
3を配置先アドレスに見合うように変更する。一方、ス
テップS13にて一致すると判断した場合には、ステッ
プS14の再配置処理をジャンプする。何れにしても、
次に処理をステップS15に進める。
【0068】ハッシュ構造22に見つからなかった場
合,及び見つかった場合ともに、ステップS15におい
て、プログラムキャッシュ24上のプログラムに対応す
る物理ページ群48を、プロセス空間2aに、コピーオ
ンライトの手段で取り付ける。このとき、ステップS1
2において既に他のプロセスの固有空間2aとの間で物
理ページ48を(コピーを実行することなく)共有して
いるのであれば、このステップS15の処理により、二
つのプロセス空間2aとプログラムキャッシュ空間24
との3者で同一の物理ページ48を共有することにな
る。
【0069】続くステップS16において、当該プロセ
スに固有のライブラリとの結合処理が必要か否かをチェ
ックする。この結合処置が必要である場合には、ステッ
プS17において、プロセス空間上で結合処理を行う。
この結合が不要な場合には、このステップS17の処理
をジャンプする。
【0070】次に、ステップS18において、プログラ
ムキャッシュ空間24から、コピーオンライトの手段で
取り付けた物理ページ群を取り外す。但し、これはプロ
グラムキャッシュ空間24からの当該物理ページの参照
を不可能とするだけであり、空間との対応関係を解除す
る訳ではない。
【0071】次に、ステップS19において、プログラ
ム起動要求をしたプロセスに、制御を渡す。その後、こ
の図5の処理フローを終了する。図7は、図5の処理フ
ローのステップS08及びステップS14において実行
される再配置処理のサブルーチンの内容を示すフローチ
ャートである。
【0072】この処理では、最初に、コンパイル時点で
配置されると仮定される命令部の配置アドレスIA1,
及びデータ部の配置アドレスDA1を得る(ステップS
30)。但し、当該プログラムの前回起動処理において
再配置が行われている場合には、再配置された結果の配
置アドレスが、ここで用いる配置アドレスIA1,DA
1になる。
【0073】次に、プロセスより要求された命令部の配
置アドレスIA2,及びデータ部の配置アドレスDA2
を得る(ステップS31)。この配置アドレスIA2,
DA2が次回の起動処理における配置アドレスIA1,
DA1になるので、これらを制御テーブル32において
記憶していなければならない。制御テーブル23におけ
る命令域配置アドレス情報42は、この配置アドレスI
A1(前回のIA2)を記憶するものであり、データ域
配置アドレス情報43は、この配置アドレスDA1(前
回のDA2)を記憶するものである。
【0074】次に、配置アドレスIA1と配置アドレス
IA2を比較する(ステップS32)。そして、両者が
相異なっている場合には、命令部の再配置処理を実行す
る(ステップS33)。一方、両者が同一である場合に
は、ステップS33の処理をジャンプする。
【0075】次に、配置アドレスDA1と配置アドレス
DA2を比較する(ステップS34)。そして、両者が
相異なっている場合には、命令部の再配置処理を実行す
る(ステップS35)。一方、両者が同一である場合に
は、ステップS35の処理をジャンプする。この後、こ
の図7のサブルーチンをリターンする。
【0076】図8は、図7の処理フローのステップS3
3及びステップS35において実行される命令部(又は
データ部)再配置処理のサブルーチンの内容を示すフロ
ーチャートである。ステップS33においてこのサブル
ーチンが呼び出されたときには、命令部に関してこの処
理が実行され、ステップS35においてこのサブルーチ
ンが呼び出されたときには、データ部に関してこの処理
が実行される。
【0077】この処理では、最初に、図11(d)に示
した命令部(又はデータ部)再配置テーブルの先頭エン
トリを参照する(ステップS40)。次に、このエント
リの最上位ビットが“0”であるか“1”であるかをチ
ェックする(ステップS41)。“0”の場合は命令部
についての再配置情報であるから、“IA2−IA1”
の値を変位Xとする(ステップS42)。“1”の場合
はデータ部についての再配置情報であるから、“DA2
−DA1”の値を変位Xとする(ステップS43)。
【0078】次に、このエントリの下位31ビットを処
理位置Wとする(ステップS44)。次に、命令部(又
はデータ部)の先頭からWバイト目より4バイトの値
に、変位Xを加算する(ステップS45)。
【0079】次に、再配置テーブルの最後まで処理を行
ったかどうかをチェックする(ステップS46)。そし
て、未だ終わっていないのであれば、次のエントリに進
め(ステップS47)、処理をステップS41に戻す。
このループを繰り返した結果、再配置テーブルの最後ま
で処理を行った場合には(ステップS46)、この図8
の処理をリターンしする。
【0080】図9は、図5の処理フローのステップS1
0において実行されるシステムライブラリAとの結合処
理のサブルーチンの内容を示すフローチャートである。
この処理では、最初に、図12(d)に示す結合テーブ
ルの先頭エントリを参照する(ステップS50)。
【0081】次に、図12(e)に示すシステムライブ
ラリの入り口情報テーブルを調べ、結合テーブルの当該
エントリ内のシンボル文字列と一致するシンボル文字列
を持つ入口情報を探す(ステップS51)。一致する入
口情報がない場合には、結合テーブルの次のエントリを
参照して(ステップS58)、処理をステップS51に
戻す。
【0082】一致する入口情報があった場合には、結合
テーブルに記載された命令部内処理数をNとする(ステ
ップS53)。続いて、命令部における結合処理を実行
する(ステップS54)。
【0083】次に、結合テーブルに記載されたデータ部
内処理数をNとする(ステップS55)。続いて、デー
タ部における結合処理を実行する(ステップS56)。
次に、結合テーブルの最後のエントリまで処理を終了し
たかどうかをチェックする(ステップS57)。処理が
終わっていない場合には、結合テーブルの次のエントリ
を参照して(ステップS58)、処理をステップS51
に戻す。
【0084】以上のループを繰り返した結果、結合テー
ブルの最後のエントリまで処理を終了した場合には(ス
テップS57)、この図9の処理をリターンする。図1
0は、図9の処理フローにおけるステップS54及びス
テップS56において実行される命令部(又はデータ
部)結合処理のサブルーチンの内容を示すフローチャー
トである。ステップS54においてこのサブルーチンが
呼び出されたときには、命令部に関してこの処理が実行
され、ステップS56においてこのサブルーチンが呼び
出されたときには、データ部に関してこの処理が実行さ
れる。
【0085】この処理では、最初に、処理数Nが“0”
になったかどうかをチェックする(ステップS60)。
初めてこのステップに入ってきたときには、ステップS
53又はステップS55で設定されたNの値がチェック
対象となる。
【0086】処理数Nが“0”でない場合には、結合テ
ーブルの当該エントリより、処理位置を一つ取り出し、
これをWとする(ステップS61)。次に、命令部(又
はデータ部)の先頭からWバイト目より4バイトに、ス
テップS51で探し出した入口情報に含まれる入口アド
レスを書き込む(ステップS62)。
【0087】次に、Nを1デクリメントした値を、新た
なNの値として(ステップS63)、処理をステップS
60に戻す。以上のループを繰り返した結果処理数Nが
“0”になった場合には(ステップS60)、この図1
0のサブルーチンをリターンする。
【0088】なお、システムの動作中、任意のプロセス
から物理ページ48の獲得が要求された場合には、図1
3の処理を行う。この図13の処理では、図6における
ステップS20,及びステップS24乃至27と同様の
処理を行っている。
【0089】即ち、最初に、プロセスが要求した要求量
分の空き物理ページ48があるか否かをチェックする
(ステップS70)。要求量分の空き物理ページがない
場合には、プログラムキャッシュ空間24上に、削除可
能なプログラムが存在するか否かをチェックする(ステ
ップS72)。削除可能なプログラムが存在する場合に
は、処理をステップS73に進める。
【0090】このステップS73では、使用中制御テー
ブルリスト21の最後に繋がれている制御テーブル23
を一つ選択する。そして、対応するプログラム空間に取
り付けられている物理ページ(プログラムキャッシュ空
間からは参照できない状態で取り付いている物理ペー
ジ)48を全て解放して、空き物理ページを作る。さら
に、選択した制御テーブル23を、ハッシュ構造内サブ
リスト47及び使用中制御テーブルリスト21から外
し、空き制御テーブルリスト20に繋げる。
【0091】一方、削除可能なプログラムが存在しない
場合には(ステップS74)、ページアウト処理を実行
することにより空き物理ページ48を作る(ステップS
74)。このページアウト処理とは、メモリ2の論理空
間上の位置如何に拘わらず、比較的利用されていない物
理ページ48を外部記憶装置1に戻して、空き物理ペー
ジ48を作る処理である。
【0092】ステップS73又はステップS74の処理
の終了後、処理をステップS70に戻す。従って、制御
テーブル23を一つを削除するかページアウト処理を行
うかしても、尚空き物理ページが不足している場合に
は、このステップS72乃至ステップS74の作業を繰
り返すことになる。
【0093】以上の処理の結果要求数分の空き物理ペー
ジ48を獲得できた場合,又は最初から要求数分の空き
物理ページ48があった場合には(ステップS70)、
空き物理ページ48を要求してきたプロセスのプロセス
空間2aに割り当てる。その後、この図13の処理を終
了する。
【0094】また、システムの動作中、プログラムキャ
ッシュ24内に存在するプログラムが外部記憶装置1上
で削除又は更新された場合には、このプログラムの装置
上位置識別情報27に従ってハッシュテーブル22を検
索し、そのプログラムが見つかった場合のみ、プログラ
ムキャッシュ空間24上から対応するプログラムを削除
する。即ち、物理ページ48との対応関係を解除し、空
き物理ページ48を得る。削除後、制御テーブル23は
空きリスト20へ戻す。
【0095】次に、以上のように構成された第1実施例
によるプログラムキャッシュ装置を用いた場合のプログ
ラムキャッシュ空間24,プロセス空間2a,及び物理
ページ群の関係の変化を、図14を用いて説明する。
【0096】図14(a)は、プログラムの初回起動が
行われた場合の状態である。第1のプロセスからプログ
ラムの起動が要求された際、OSはプログラムキャッシ
ュ空間24を調べる。そして、キャッシュ空間24に当
該プログラムが存在しない場合、プログラムキャッシュ
空間24に新規の物理ページ群48を取り付ける。ま
た、外部記憶装置1より当該プログラムの命令部,デー
タ部,及びテーブル部を読み込む。この時点で、必要に
応じて、再配置処理及びシステムライブラリAとの結合
処理を、プログラムキャッシュ空間24上において行
う。物理ページ群48のうち命令部及びデータ部を書き
込んだもの(48(X))のみ、コピーオンライトの手
段により第1のプロセスのプロセス空間2aヘ取り付け
る。その後、プログラムキャッシュ空間24から、この
物理ページ群(X)48を取り外す。このとき物理ペー
ジ48は参照不可能とするのみで、空間との対応関係は
解除しない。また、物理ページ48の解放も行わない。
なお、第1のプロセスに固有の結合処理を行う場合、即
ち、第1のプロセス空間2aに既に読み込まれている別
のプログラムと当該プログラムを結合するためにプロセ
ス空間2a上のプログラムの命令部及びデータ部に点在
するアドレス情報を書き換える場合は、この時点でプロ
セス空間2a上で書き変える。
【0097】図14(b)は、プログラムの再起動が行
われた場合の状態である。第1のプロセス空間2aと第
2のプロセス空間2aとの同一性は問わない。第2のプ
ロセス空間2aにおける前回起動のプログラムと同じプ
ログラムの再起動が要求された場合は、物理ページ群
(X)48をコピーオンライトの手段でプログラムキャ
ッシュ空間24に取り付け直す。実際には空間との対応
関係は解除していないため、物理ページ48の参照を可
能とし、コピーオンライトの手段の為の設定を行うだけ
である。従って、外部記憶装置1からの読み込みは行わ
ない。また、再起動時のプロセス空間2a上での配置ア
ドレスが前回起動時と異なることになる場合は、プログ
ラムキャッシュ空間24上で再配置処理を行うが、同一
である場合には行わない。しかる後に、物理ページ群
(X)48をコピーオンライトの手段で第2のプロセス
のプロセス空間2aに取り付ける。最後に、プログラム
キャッシュ空間24から物理ページ群(X)48を取り
外す。このときページは参照不可能とするのみで、空間
との対応関係は解除しない。また、物理ページの解放も
行わない。なお、第2プロセスに固有の結合処理を行う
場合、即ち、第2のプロセス空間2aに既に読み込まれ
ている別のプログラムと当該プログラムを結合するため
に、第2プロセス空間2a上のプログラムの命令部及び
データ部に点在するアドレス情報を書き換える場合は、
この時点で第2のプロセス空間2a上で書き変えを行
う。
【0098】このように、プログラムが再起動され、同
じ配置アドレスである場合には、初回起動時と同じ物理
ページ群48が使用されるため、キャッシュの目的で物
理ページ48を常に二重に消費してしまうということが
なく、メモリ2の利用効率が上がる。即ち、初回起動時
において再配置処理及びシステムライブラリとの結合処
理を済ませた物理ページ群48を、再起動時において使
用する。従って、初回起動時とと同じ再配置処理を再起
動時においても必ず実行しなければならないという事は
なく、そのため、物理ページ48を常に二重に消費する
ことが回避され、また、処理効率も改善されるのであ
る。また、システムライブラリAと起動したプログラム
を結合する場合についても、同様の作用がある。即ち、
キャッシュの目的で物理ページ48を二重に消費してし
まうようなことがない。また、初回起動時と同じ処理を
再起同時にも実行する必要がなく、処理効率が改善され
る。
【0099】図14(c)は、第2のプロセスからのプ
ログラムの再起動時に、未だ第1のプロセスによるプロ
グラムの実行が終了していない場合(物理ページ群
(X)の使用が終了していない場合)で、かつ、配置ア
ドレスが同じであった場合である。この場合、物理ペー
ジ群(X)48は、第1のプロセス空間2a,第2のプ
ロセス空間2a,及びプログラムキャッシュ空間24の
間で共有される事になる。
【0100】図14(d)は、第2のプロセスからのプ
ログラムの再起動時に、未だ第1のプロセスによるプロ
グラムの実行が終了していない場合(物理ページ群
(X)の使用が終了していない場合)で、かつ、配置ア
ドレスが異なる場合である。この場合、物理ページ群
(X)48はプログラムキャッシュ空間24上において
コピーオンライトの手段により取り付けられているた
め、再配置処理終了後には、コピーオンライトの手段に
より、別の物理ページ群(Y)48となる。その後、第
2のプロセスのプロセス空間2aに取り付けられる。
【0101】図14(e)は、プロセスに固有の結合処
置を行う場合、即ち、第1のプロセス空間2aに既に読
み込まれている別のプログラムと当該プログラムと
を結合するために、プロセス空間2a上に取り付けられ
た当該プログラムの命令部及びデータ部に点在するア
ドレス情報を、プログラムの命令又はデータを参照す
るように書き換える場合である。このとき、当該プログ
ラムに対応する物理ページ群(X)48は、コピーオ
ンライトの手段により第1のプロセス空間2aに取り付
けている。そのため、上記プロセス固有の結合処理によ
って書き替えられた箇所に対応する部分の物理ページ4
8ついては、コピーが実行されて別の物理ページ49と
なる。
【0102】図14(f)は、プロセスが当該プログラ
ムを実行することにより、第1のプロセス空間2aに取
り付けられたプログラムのデータを書き替える場合であ
る。このとき書き替えたデータに対応する物理ページ4
8についても、同様に、コピーが実行されて別の物理ペ
ージ49となる。
【0103】上記第1実施例では、物理ページ48を直
接プロセス空間2aに取り付けているが、実際には第1
のプロセスと第2のプロセスとで同一のプログラムを共
用する場合もあるため、起動中のプログラムを管理する
機構を設けた上で、その機構を通してプロセス空間2a
に取り付けるようにしても良い。
【0104】また、上記第1実施例では、従来行われて
いる「ページキャッシュ」との関連について述べていな
いが、再配置処理やシステムライブラリとの結合処理が
不要な場合には、ページキャッシュを使用した制御を行
い、再配置処理やシステムライブラリとの結合処理が必
要な場合のみプログラムキャッシュを使用した制御を行
っても良い。このようにすれば、プログラム中の不必要
な部分はキャッシュ空間24に読み込まなくて済むの
で、処理を効率的に行うことができる。
【0105】
【実施例2】第2実施例の目的は、以下に示す通りであ
る。即ち、従来のページキャッシュ方式では、一個のプ
ログラムが一定の処理期間において複数回起動されるの
であれば、外部記憶装置にアクセスするI/O処理の回
数を減らすことになるので、高速な処理を可能とする効
果を得ることができる。しかしながら、一個のプログラ
ムが一定の処理期間(例えば、一旦キャッシュに当該プ
ログラムが書き込まれてから、キャッシュ上から掃き出
されるまでの期間)内において複数回起動されないので
あれば、このような効果を享受することはできない。し
かも、この様なプログラムは、システムに電源を投入し
てから始めて実行する際にキャッシュ上に存在しないの
はもちろん、一旦実行を行ったためにキャッシュ上に書
き込まれたとしても、後から実行されるプログラムが逐
次キャッシュ上に書き込まれるに従い、キャッシュ上か
ら掃き出されてしまう。従って、このような状態で当該
プログラムを実行するには、外部記憶装置上から当該プ
ログラムを読み出さなければならない。従って、外部記
憶装置がハードディスク装置のような機械走査型の記憶
装置であるとすると、通常のデータ転送時間以外にヘッ
ドのシーク量の分だけ余計に時間が掛かってしまうが、
特にこのようなプログラムを一定の処理期間に多数個実
行しなければならないような場合では、これらのプログ
ラムが通常外部記憶装置上の別々の位置に配置されてい
ることから、プログラムが多数であるほどシーク量のオ
ーバーヘッドが増加してしまう問題があった。第2実施
例は、このような従来の問題点を解決することを目的と
しているのである。
【0106】この第2実施例は、上述の第1実施例と同
じ構成を有し、また、同じ制御を行う。但し、第1実施
例の退避復元ファイルCに代わり、本第2実施例では退
避復元ファイルDが外部記憶装置1内に備えられてい
る。この退避復元ファイルDは、その機能の点におい
て、退避復元ファイルCとの間に差異を有している。ま
た、この退避復元ファイルDを備えたことにより、中央
演算処理装置3でOSにより実行される処理が追加され
ている。
【0107】図15は、この外部記憶装置1上の物理的
に連続した記憶位置に形成される退避復元ファイルDの
構造を示している。この退避復元ファイルDは、先頭か
ら順に、管理情報域51,制御テーブル格納域52,及
びプログラム格納域53を備えている。この管理情報域
51には、退避復元ファイルDへ格納するプログラムの
数や、プログラムの復元時に必要となるプログラムキャ
ッシュ空間24上のページ数等の情報を格納する。制御
テーブル格納域52には、退避復元ファイルDに格納す
べき全てのプログラムに対応する制御テーブル23を格
納する。プログラム格納域53には、制御テーブル格納
域52に格納されている制御テーブル23の順番と同じ
順番で、これらに対応するプログラムを格納する。な
お、この退避復元ファイルDは、この中に格納すべきプ
ログラムがあった場合に初めて作成される。従って、こ
の外部記憶装置1からコンピュータを最初に起動する時
には、未だ作成されていないので、外部記憶装置1内に
退避復元ファイルDは存在していない。
【0108】図16及び図17は、この第2実施例で追
加された高速実行方法処理フローの内容を示す。この処
理は、OSにより中央処理装置3で実行される処理であ
り、IPL(initial program lod
er)の制御を実行する際に、その制御開始時点におい
て図16の処理が実行され、その制御終了時点において
図17の処理が実行される。なお、このIPLの制御と
は、コンピュータの立ち上げの際に最初にプログラムを
読み込むための制御であり、システムによっては一定処
理区間(期間)内に、100個以上もののプログラムが
連続して実行される制御である。
【0109】先ず、IPLの制御開始時点において実行
される図16の処理では、最初にステップS81におい
て、退避復元ファイルDが存在するか否かをチェックす
る。上述したように、この外部記憶装置1からコンピュ
ータを最初に起動するときや、外部記憶装置1を初期化
した場合には、退避復元ファイルDは外部記憶装置1内
に存在していない。この場合には、何もしないでそのま
ま処理を終了する。従って、この後実行されるIPLの
制御においては、外部記憶装置1からプログラムを逐一
読み出して実行していかなければならない。
【0110】一方、一旦図17の処理を経ることによ
り、外部記憶装置1内には退避復元ファイルDが作成さ
れる。従って、以後IPLの制御開始時点において実行
される図16の処理では、ステップS81において退避
復元ファイルDが存在すると判断する。この場合には、
処理をステップS82に進める。
【0111】ステップS82では、退避復元ファイルD
の管理情報域51を参照する。そして、この退避復元フ
ァイルDに収容されている全プログラムに必要な個数分
の制御テーブル23を、空き制御テーブルリスト20か
ら獲得する。但し、空き制御テーブルリスト20内の制
御テーブル23が不足する場合には、使用中制御テーブ
ルリスト21の最後から、順次、制御テーブル23を獲
得するとともに、これに対応するプログラムをプログラ
ムキャッシュ空間24から削除する。そして、必要個数
分の制御テーブル23が得られるまで、この操作を繰り
返す。以上の結果必要個数分の制御テーブル23が得ら
れたならば、退避復元ファイルDの制御テーブル格納域
52から制御テーブル23の内容を全て読み出し、これ
らをシステム共通空間2b上に獲得された各制御テーブ
ル23に書き込む。そして、書き込みの済んだ制御テー
ブル23を、使用中制御テーブルリスト21とハッシュ
テーブル22に繋げる。なお、プログラムキャッシュ空
間24には、退避復元ファイルDに収容されている全プ
ログラムを書き込むのに必要な個数分の物理ページ48
を、取り付ける。但し、物理ページ48が不足する場合
には、制御テーブル23が不足した場合と同様に処理す
ることにより、必要個数分の物理ページ48を得る。以
上の様にして獲得した物理ページ48には、プログラム
キャッシュ空間24を通して、退避復元ファイル48の
プログラム格納域53から読み出されたプログラムが書
き込まれる。その後、先に読み込んだ全ての制御テーブ
ル23内の管理情報中の、命令域ポインタ29,データ
域ポインタ32,結合情報テーブルポインタ35,及び
再配置情報ポインタ38の各々の値を、プログラムキャ
ッシュ空間24上のそれぞれ対応する命令域30,デー
タ域33,結合情報テーブル36,及び再配置情報テー
ブル39をポイントするように設定する。
【0112】以上のステップS82の処理を済ませた後
で、この図16の処理を終了する。従って、この後実行
されるIPLの制御においては、ステップS82により
一括して復元されてプログラムキャッシュ空間24上に
書き込まれたプログラムを、順番に実行するだけで済
む。
【0113】次に、IPLの制御終了時点において実行
される図17の処理では、最初にステップS91におい
て、IPL制御の開始時点で退避復元ファイルDが外部
記憶装置1上に存在していたかどうかをチェックする。
存在していなかった場合には、処理をステップS92に
進める。ところで、IPL制御の処理区間中で物理ペー
ジ48の不足等が発生しなかったのであれば、制御終了
時点において、プログラムキャッシュ空間24には、そ
のIPL制御の処理区間で起動された全てのプログラム
が格納されているはずである。従って、ステップS92
では、外部記憶装置1内に退避復元ファイルDを作成
し、プログラムキャッシュ空間24に記憶されている全
プログラム,及びこれらプログラムに対応する制御テー
ブル23を、この退避復元ファイルDの中に一括退避さ
せる。これと同時に、管理情報域51にその他の情報を
適宜書き込む。この後、図17の処理を終了する。
【0114】また、ステップS91において退避復元フ
ァイルDが存在していたと判断した時は、既に退避復元
ファイルDの作成は済んでいるので、処理をそのまま終
了させる。
【0115】次に、以上のように構成された第2実施例
によるプログラムキャッシュ装置を用いた場合の、プロ
グラムPの読み出し及び実行,プログラムキャッシュへ
の蓄積,一括退避,一括復元,並びに高速起動の関係の
変化を、図18のタイムに従って説明する。
【0116】図18において、太線α,βは、IPL制
御の処理区間を示している。このうち、図18(a)に
おける太線αは、IPL制御を最初に実行する場合の動
作である。この場合、制御開始時点において、外部記憶
装置1上に退避復元ファイルDは存在していない。従っ
て、OSは、処理区間αで実行されるプログラム群Pを
外部記憶装置1から読み込んで実行すると共に、全てプ
ログラムキャッシング空間24へ格納する。制御終了時
点において、処理区間αで起動されてプログラムキャッ
シング空間24に格納されたプログラム群Pを、それら
の管理情報と共に、全て退避復元ファイルDに格納す
る。
【0117】また、図18(b)における太線βは、I
PL制御を再実行する場合の動作である。この場合、制
御開始時点において、外部記憶装置1上に退避復元ファ
イルDは存在している。従って、OSは、退避復元ファ
イルDに格納されている全てのプログラム群Pを、それ
ら管理情報と共に、プログラムキャッシング空間24に
格納する。処理区間βで実行されるプログラム群Pは、
全て又は殆どが、プログラムキャッシング空間24に格
納されている。従って、外部記憶装置1からプログラム
を読み込まずに、当該空間24からプログラムPを起動
して、IPL制御を実行する。
【0118】なお、IPL制御を行うプログラム群P又
はこのプログラム群Pの動作環境を変更した場合、現に
外部記憶装置1に存在している退避復元ファイルDを削
除する。この場合は、改めて図18(a)の初回実行時
の動作が行われる。
【0119】以上のように、この第2実施例では、多数
のプログラムが起動されるIPL制御のような一定期間
内の区間処理においても、外部記憶装置1からの読み込
みは一回で済む。従って、これら個々のプログラムが外
部記憶装置1上の別々の位置に配置されていることから
発生するシーク量が全くなくなる。また、I/O要求処
理も要求処理も一回で済むため、中央処理装置3の処理
負担も軽減される。このため、処理区間に要する時間を
大幅に短縮できる。
【0120】この高速動作は、上述したようにして退避
復元ファイルDを削除しない限り、たとえ電源を一旦切
断した場合でも可能である。なお、上記第2実施例で
は、区間処理としてIPL制御を例示しているが、それ
以外の区間処理にこの第2実施例の制御を適用しても良
い。
【0121】また、上記第2実施例では、処理区間の制
御開始時点において、外部記憶装置1上の退避復元ファ
イルDが存在しない場合は何もしないとしている。しか
し、この時点において、全ての制御テーブル23を使用
中制御テーブルリスト21から外し、プログラムキャッ
シュ空間24からも全ての物理ページ48を解放する様
にしても良い。このようにすれば、外部記憶装置1から
読み出したプログラムPをプログラムキャッシュ空間2
4上に格納する場合に、当該空間上の連続した位置にプ
ログラムPが格納されて存在する事になる。従って、退
避復元ファイルDに一括退避させる際に、その書き込み
処理を簡略化する事ができる。
【0122】同様に、処理区間の制御開始時点におい
て、外部記憶装置1上に退避復元ファイルDが存在する
場合にも、全ての制御テーブル23を使用中制御テーブ
ルリスト21から外し、プログラムキャッシュ空間24
からも全ての物理ページ48を解放する様にしても良
い。このようにすれば、外部記憶装置1から読み出した
プログラムPをプログラムキャッシュ空間24上に一括
復元する場合に、当該空間上の連続した位置にプログラ
ムを格納することができる。従って、その退避復元ファ
イルDからの読み込み処理を簡略化する事ができる。
【0123】
【効果】以上説明した本発明のプログラムキャッシュ装
置によれば、コピーオンライトによって物理ページをコ
ピーしてメモリを二重に使用することを最小限に留め、
メモリの利用効率を上げることができる。
【0124】また、請求項11によれば、プログラムキ
ャッシュ空間に格納されている全プログラムを一括して
格納するファイルを備えたために、多数のプログラムか
らなる大規模なソフトウェアを分割することによる性能
的デメリットがなくなり、ソフトウェアの分割開発及び
分割保守を容易とする効果がある。
【図面の簡単な説明】
【図1】 本発明の概要を示す概要図
【図2】 本発明の第1実施例によるプログラムキャ
ッシュ装置のブロック図
【図3】 図2におけるメモリ2のメモリ空間を詳細
に示した図
【図4】 図3におけるシステム共通空間2bを詳細
に示した図
【図5】 本発明の第1実施例によるプログラムキャ
ッシュ装置において実行されるキャッシュ制御を示すフ
ローチャート
【図6】 図5におけるステップS03において実行
される制御テーブルの獲得処理のサブルーチンの内容を
示すフローチャート
【図7】 図5におけるステップS08及びステップ
S14において実行される再配置処理のサブルーチンの
内容を示すフローチャート
【図8】 図7におけるステップS33及びステップ
S35において実行される命令部(又はデータ部)再配
置処理のサブルーチンの内容を示すフローチャート
【図9】 図5におけるステップS10において実行
されるシステムライブラリとの結合処理のサブルーチン
の内容を示すフローチャート
【図10】 図9におけるステップS54及びステップ
S56において実行される命令部(又はデータ部)結合
処理のサブルーチンの内容を示すフローチャート
【図11】 本発明の第1実施例における再配置処理の
説明図
【図12】 本発明の第1実施例におけるシステムライ
ブラリとの結合処理の説明図
【図13】 本発明の第1実施例におけるプログラムキ
ャッシュ装置において、任意のプロセスから物理ページ
の獲得要求があった場合の処理を示すフローチャート
【図14】 本発明の第1実施例の作用を示す図
【図15】 本発明の第2実施例によるプログラムキャ
ッシュ装置における外部記憶装置の構成を示す図
【図16】 本発明の第2実施例によるプログラムキャ
ッシュ装置において、 IPL制御の開始
時点で実行されるプログラム一括復元処理を示
すフローチャート
【図17】 本発明の第2実施例によるプログラムキャ
ッシュ装置において、 IPL制御の終了
時点で実行されるプログラム一括退避処理を示
すフローチャート
【図18】 本発明の第2実施例の作用を示すタイムチ
ャート
【符号の説明】
1 外部記憶装置 2 メモリ 2a プロセス空間 3 中央処理装置 24 プログラムキャッシュ空間 48 物理ページ D 退避復元ファイル
フロントページの続き (51)Int.Cl.7 識別記号 FI G06F 9/46 340 G06F 12/08 565 9/06 640H 9/50 620K 12/08 565 610J (56)参考文献 特開 平7−160483(JP,A) 特開 平5−233307(JP,A) 特開 昭58−3177(JP,A) 特開 平3−296822(JP,A) 特開 平7−36783(JP,A) 特開 平5−274224(JP,A) 特開 平5−40692(JP,A) 特開 平4−205535(JP,A) 特開 平4−195535(JP,A) 特開 平4−44140(JP,A) 特開 平3−273348(JP,A) 特開 平2−301844(JP,A) 特開 平1−116851(JP,A) 特開 昭62−169243(JP,A) 萩野達也、山岸欣也,ToMマイクロ カーネル,電子情報通信学会論文誌,日 本,社団法人電子情報通信学会,1992年 8月25日,第J75−D−I巻,第8 号,p.555−562 萩野達也、山岸欣也,ToMマイクロ カーネル,電子情報通信学会技術研究報 告,日本,社団法人電子情報通信学会, 1992年 3月23日,第91巻,第537号, (SS91−34〜39),p.39−46 前川守、他,分散オペレーティングシ ステム UNIXの次にくるもの,日 本,共立出版株式会社,1991年12月25 日,初版,p.32−41 (58)調査した分野(Int.Cl.7,DB名) G06F 12/08 - 12/12 G06F 9/06 G06F 9/44 G06F 9/445 G06F 9/46 - 9/54

Claims (12)

    (57)【特許請求の範囲】
  1. 【請求項1】プログラムを格納する第1の記憶装置
    物理アドレスを各々与えられた複数の物理ページ有す
    る第2の記憶装置と、前記第1の記憶装置から前記プロ
    グラムを読み出して前記物理ページに記憶するとともに
    この物理ページのプログラムをアクセスして特定の処理
    を行う処理装置、個々の前記物理アドレス値に対し
    て、第2種のアドレスとしての論理アドレスを関連付け
    る管理手段、前記第2の記憶装置記憶されたプログ
    ラム上のアドレス情報を変更するアドレス情報変更手段
    前記物理ページ上に記憶されている前記プログラム
    を、他の物理ページ上にコピーするコピー手段を有す
    るプログラムキャッシュ装置において、 前記第2の記憶装置、前記論理アドレスの集合体とし
    てのメモリ論理空間有し、 このメモリ論理空間、第1の記憶装置から読み取った
    プログラムを格納するプログラムキャッシュ空間、前
    記処理装置実行するプログラムを格納するプロセス空
    とを有し、 前記管理手段、前記アドレス情報変更手段前記アド
    レス情報の変更を行った後に、前記プログラムキャッシ
    ュ空間に格納されているプログラムの論理アドレスに
    対応する前記物理ページ物理アドレスを、前記プロセ
    ス空間の論理アドレスに対応付け、 前記コピー手段、前記管理手段前記物理アドレスの
    前記プロセス空間の論理アドレスに対する対応付けを
    行った後で前記プログラムへの書き込みがあった場合
    に、前記物理ページ内容をコピーすることを特徴とす
    るプログラムキャッシュ装置。
  2. 【請求項2】前記アドレス情報変更手段、 前記プログラムキャッシュ空間上で、前記プログラム上
    のアドレス情報を変更することを特徴とする請求項1記
    載のプログラムキャッシュ装置。
  3. 【請求項3】前記アドレス情報変更手段、 前記プログラムとともに前記第1の記憶装置から前記プ
    ログラムキャッシュ空間に読み込まれたテーブルに従っ
    て、前記プログラム上のアドレス情報を変更することを
    特徴とする請求項1記載のプログラムキャッシュ装置。
  4. 【請求項4】前記アドレス情報は、 前記プログラム内の他の場所に記載されているサブルー
    チン又はデータのアドレスであることを特徴とする請求
    項3記載のプログラムキャッシュ装置。
  5. 【請求項5】前記アドレス情報は、 前記メモリ論理空間の前記プログラムが格納されてい
    る場所以外の場所に格納されているサブルーチン又はデ
    ータのアドレスであることを特徴とする請求項3記載の
    プログラムキャッシュ装置。
  6. 【請求項6】前記管理装置が前記物理アドレスの前記プ
    ロセス空間の論理アドレスに対する対応付けを行った
    後における前記物理ページの書き込みを禁止する書き
    込み禁止手段、更に有することを特徴とする請求項1
    記載のプログラムキャッシュ装置。
  7. 【請求項7】前記管理装置は、 前記コピー手段よる前記物理ページコピーがあった
    場合には、コピーの元になった物理ページ物理アドレ
    スをプログラムキャッシュ空間上の論理アドレスにのみ
    対応させ、コピーによる新しい物理ページ物理アドレ
    スをプロセス空間の論理アドレスにのみ対応させること
    を特徴とする請求項1記載のプログラムキャッシュ装
    置。
  8. 【請求項8】前記第2の記憶手段前記メモリ論理空間
    には、前記プログラムキャッシュ空間に格納している
    プログラムの管理データを各々記載した制御テーブルが
    格納されていることを特徴とする請求項1記載のプログ
    ラムキャッシュ装置。
  9. 【請求項9】前記処理装置複数の実行単位を有し、こ
    の実行単位毎に前記プログラムに従った制御を行うとと
    もに、 前記第2の記憶装置、前記処理装置前記実行単位毎
    に前記プロセス空間備えていることを特徴とする請求
    項1記載のプログラムキャッシュ装置。
  10. 【請求項10】前記アドレス情報変更手段、 前記プロセス空間において前記プログラムが一度起動さ
    れ、この際に対応付けられた前記論理アドレスとは別の
    論理アドレスに対応付けるものとして再度同じ前記プロ
    グラムが起動された場合、若しくは、別の前記プロセス
    空間において別の前記論理アドレスに対応付けるものと
    して再度同じプログラムが起動された場合には、前記プ
    ログラムキャッシュ空間上で再度前記プログラム上のア
    ドレス情報を変更することを特徴とする請求項4記載の
    プログラムキャッシュ装置。
  11. 【請求項11】前記第1の記憶装置、 前記第2の記憶装置プログラムキャッシュ空間に格
    納された複数のプログラムを一括して格納するファイル
    有し、 前記処理装置、 一定期間内に予め定められた複数のプログラムを連続し
    て実行するとともに、前記一定期間の満了時に前記プロ
    グラムキャッシュ空間格納されている全プログラムを
    前記ファイルに格納し、前記処理装置要求した際に
    は前記ファイルに格納されている全プログラムを前記
    プログラムキャッシュ空間復元することを特徴とする
    請求項1記載のプログラムキャッシュ装置。
  12. 【請求項12】前記第2の記憶手段前記メモリ論理空
    には、前記プログラムキャッシュ空間に格納してい
    るプログラムの管理データを各々記載した制御テーブル
    が格納されているとともに、 前記ファイル、 前記複数のプログラムと共に、これらに対応する前記制
    御テーブルをも格納することを特徴とする請求項11
    載のプログラムキャッシュ装置。
JP29858593A 1993-11-29 1993-11-29 プログラムキャッシュ装置 Expired - Fee Related JP3527765B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP29858593A JP3527765B2 (ja) 1993-11-29 1993-11-29 プログラムキャッシュ装置
US08/293,593 US5619696A (en) 1993-11-29 1994-08-22 Program cache apparatus which associates the physical address of a physical page with both the logical address in a program cache space and the logical address in a process space

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP29858593A JP3527765B2 (ja) 1993-11-29 1993-11-29 プログラムキャッシュ装置

Publications (2)

Publication Number Publication Date
JPH07152641A JPH07152641A (ja) 1995-06-16
JP3527765B2 true JP3527765B2 (ja) 2004-05-17

Family

ID=17861648

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29858593A Expired - Fee Related JP3527765B2 (ja) 1993-11-29 1993-11-29 プログラムキャッシュ装置

Country Status (2)

Country Link
US (1) US5619696A (ja)
JP (1) JP3527765B2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9605338D0 (en) 1996-03-13 1996-05-15 Arendee Ltd Improvements in or relating to computer systems
US6088779A (en) * 1996-12-30 2000-07-11 Fujitsu Limited System and method for execution management of computer programs
US6219770B1 (en) * 1998-03-23 2001-04-17 Compaq Computer Corporation Method and apparatus for managing copy on write operations in a virtual memory
US6907605B1 (en) 1998-05-18 2005-06-14 International Business Machines Corporation Method and apparatus for providing for notification of task termination
US6535891B1 (en) * 2000-09-26 2003-03-18 Emc Corporation Method and apparatus for indentifying accesses to a repository of logical objects stored on a storage system based upon information identifying accesses to physical storage locations
US7000087B2 (en) * 2001-11-07 2006-02-14 International Business Machines Corporation Programmatically pre-selecting specific physical memory blocks to allocate to an executing application
AU2003231951A1 (en) * 2002-05-31 2003-12-19 Fujitsu It Holdings, Inc. Method and system for intelligent storage management
US20030227035A1 (en) 2002-06-05 2003-12-11 Hiromu Ishii Micromachine and manufacturing method therefor
JP3906825B2 (ja) * 2003-06-17 2007-04-18 日本電気株式会社 計算機システム、計算機システム起動方法およびプログラム
JP2005301801A (ja) * 2004-04-14 2005-10-27 Nec Corp 情報処理装置、メモリ管理装置、およびプログラム
JP2008077144A (ja) * 2006-09-19 2008-04-03 Ricoh Co Ltd 仮想化システム、メモリ管理方法及び制御プログラム
US7873801B2 (en) * 2007-02-01 2011-01-18 Oracle America, Inc. Partitionable accounting of memory utilization
US8312239B2 (en) * 2009-09-30 2012-11-13 Avaya Inc. Cache management for increasing performance of high-availability multi-core systems
US8752054B2 (en) * 2010-03-11 2014-06-10 Avaya Inc. Intelligent merging of transactions based on a variety of criteria
WO2014106871A1 (en) * 2013-01-07 2014-07-10 Hitachi, Ltd. Storage system which realizes asynchronous remote copy using cache memory composed of flash memory, and control method thereof
US10091282B2 (en) * 2013-06-12 2018-10-02 Sap Se Metadata-driven dynamic load balancing in multi-tenant systems
CN103838614B (zh) * 2014-02-19 2017-12-22 华为技术有限公司 一种数据处理方法及装置
JP6702681B2 (ja) 2015-10-01 2020-06-03 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム
US10725805B2 (en) * 2015-11-25 2020-07-28 International Business Machines Corporation Provisioning based on workload displacement

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS583177A (ja) * 1981-06-30 1983-01-08 Fujitsu Ltd デ−タ処理方式
JPS62169243A (ja) * 1986-01-22 1987-07-25 Mitsubishi Electric Corp プログラムロ−ド方式
JPH01116851A (ja) * 1987-10-30 1989-05-09 Nec Corp プログラムのロード制御方式
US5175842A (en) * 1988-05-31 1992-12-29 Kabushiki Kaisha Toshiba Data storage control system capable of reading data immediately after powered on
JPH02301844A (ja) * 1989-05-17 1990-12-13 Nec Corp オーバレイ方式
JPH03273348A (ja) * 1990-03-22 1991-12-04 Nec Corp ロードモジュールファイルのアクセス方式
JPH03296822A (ja) * 1990-04-16 1991-12-27 Nippon Telegr & Teleph Corp <Ntt> 論理空間アドレス割当方式
JPH0444140A (ja) * 1990-06-11 1992-02-13 Hitachi Ltd 仮想メモリ制御方法
JPH04195535A (ja) * 1990-11-28 1992-07-15 Nec Corp プログラム空間生成方式
JPH04205535A (ja) * 1990-11-30 1992-07-27 Fujitsu Ltd コピーオンライト方式
JPH0540692A (ja) * 1991-08-06 1993-02-19 Nec Corp 複写領域管理方式
JPH05233307A (ja) * 1992-02-25 1993-09-10 N T T Data Tsushin Kk 複数プロセス生成方法
JPH05274224A (ja) * 1992-03-27 1993-10-22 Fujitsu Ltd 動的アドレス変換機構
US5475840A (en) * 1993-04-13 1995-12-12 Sun Microsystems, Inc. High performance dynamic linking through caching
JP3118348B2 (ja) * 1993-07-15 2000-12-18 三洋電機株式会社 プログラムキャッシュ方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
前川守、他,分散オペレーティングシステム UNIXの次にくるもの,日本,共立出版株式会社,1991年12月25日,初版,p.32−41
萩野達也、山岸欣也,ToMマイクロカーネル,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,1992年 3月23日,第91巻,第537号,(SS91−34〜39),p.39−46
萩野達也、山岸欣也,ToMマイクロカーネル,電子情報通信学会論文誌,日本,社団法人電子情報通信学会,1992年 8月25日,第J75−D−I巻,第8号,p.555−562

Also Published As

Publication number Publication date
JPH07152641A (ja) 1995-06-16
US5619696A (en) 1997-04-08

Similar Documents

Publication Publication Date Title
JP3527765B2 (ja) プログラムキャッシュ装置
US6587915B1 (en) Flash memory having data blocks, spare blocks, a map block and a header block and a method for controlling the same
KR100389867B1 (ko) 플래시 메모리 관리방법
US6792518B2 (en) Data storage system having mata bit maps for indicating whether data blocks are invalid in snapshot copies
US6192432B1 (en) Caching uncompressed data on a compressed drive
JP3453757B2 (ja) バッファ管理方法
JP3371044B2 (ja) ディスクアレイのための領域割り当て方法およびディスクアレイアクセス方法
US5317728A (en) Storage management of a first file system using a second file system containing surrogate files and catalog management information
JP3138171B2 (ja) システム機能をダウンロードする方法
US20060047926A1 (en) Managing multiple snapshot copies of data
EP2455865A1 (en) Memory management device
JP2001506022A (ja) 大域アドレス可能メモリを使用する構造化データ記憶機構
CN1543605A (zh) 高速缓存器元数据的存储
US6233727B1 (en) Computer system for supporting utilization of functions provided by OS
US6658541B2 (en) Computer system and a database access method thereof
US8930732B2 (en) Fast speed computer system power-on and power-off method
CN112463753A (zh) 一种区块链数据存储方法、系统、设备及可读存储介质
JPH07191811A (ja) 磁気ディスク装置の移行方式
KR101392062B1 (ko) 고속 컴퓨터 시스템 파워 온 및 파워 오프 방법
US20060053260A1 (en) Computing system with memory mirroring and snapshot reliability
US6622231B2 (en) Method and apparatus for paging data and attributes including an atomic attribute
JPH0371227A (ja) ソーテイング方法
CN113448897B (zh) 适用于纯用户态远端直接内存访问的优化方法
CN113204520B (zh) 一种基于分布式文件系统的遥感数据快速并发读写方法
WO2024108939A1 (zh) 一种多级映射框架、数据操作请求处理方法及系统

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20031202

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040202

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040217

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040223

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20080227

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090227

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090227

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100227

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110227

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110227

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120227

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees