JPH0652054A - 仮想記憶制御装置 - Google Patents
仮想記憶制御装置Info
- Publication number
- JPH0652054A JPH0652054A JP5053470A JP5347093A JPH0652054A JP H0652054 A JPH0652054 A JP H0652054A JP 5053470 A JP5053470 A JP 5053470A JP 5347093 A JP5347093 A JP 5347093A JP H0652054 A JPH0652054 A JP H0652054A
- Authority
- JP
- Japan
- Prior art keywords
- program
- virtual
- user
- memory
- virtual space
- 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.)
- Granted
Links
Landscapes
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】
【構成】 あるユーザプログラムの実行中に他のユーザ
プログラムに属する仮想アドレスへの不正アクセスが起
こるか否かを検出するメモリ保護装置14と、ユーザプ
ログラムの実行前に、メモリ保護装置が有効に機能する
範囲内の数のユーザプログラムに対して、その仮想アド
レス領域が相互に重複しないように仮想アドレスを割り
当てるプログラム割当て部17と、この仮想アドレスを
用い、メモリ保護装置14が不正アクセスを検出しなか
った場合に、論理キャッシュ12内のデータに対してア
クセスを行いながら、前記のユーザプログラムを実行す
るプログラム実行部18とを具備する。 【効果】 コンテクスト切り替え時のキャッシュやTL
Bの無効化の必要がなくなるため、高速に切り替えで
き、更にTLBやキャッシュを有効に利用して、多重プ
ログラムを高速実行することのできる仮想記憶制御装置
が実現できる。
プログラムに属する仮想アドレスへの不正アクセスが起
こるか否かを検出するメモリ保護装置14と、ユーザプ
ログラムの実行前に、メモリ保護装置が有効に機能する
範囲内の数のユーザプログラムに対して、その仮想アド
レス領域が相互に重複しないように仮想アドレスを割り
当てるプログラム割当て部17と、この仮想アドレスを
用い、メモリ保護装置14が不正アクセスを検出しなか
った場合に、論理キャッシュ12内のデータに対してア
クセスを行いながら、前記のユーザプログラムを実行す
るプログラム実行部18とを具備する。 【効果】 コンテクスト切り替え時のキャッシュやTL
Bの無効化の必要がなくなるため、高速に切り替えで
き、更にTLBやキャッシュを有効に利用して、多重プ
ログラムを高速実行することのできる仮想記憶制御装置
が実現できる。
Description
【0001】
【産業上の利用分野】本発明は仮想記憶機構を有する計
算機システムにおける仮想記憶制御装置に係り、特に、
仮想アドレスをキーとした論理キャッシュ・メモリを有
する計算機システム上でオーバヘッドの少ないタスク切
替を実現する仮想記憶制御装置に関する。
算機システムにおける仮想記憶制御装置に係り、特に、
仮想アドレスをキーとした論理キャッシュ・メモリを有
する計算機システム上でオーバヘッドの少ないタスク切
替を実現する仮想記憶制御装置に関する。
【0002】
【従来の技術】従来、計算機システムの仮想記憶制御方
式については、ただひとつの仮想空間を用いる単一仮想
空間方式と複数の仮想空間を用いる多重仮想空間方式と
が知られている。単一仮想空間方式では同時に実行する
複数のプログラムをひとつの空間に配置するのに対し、
多重仮想空間方式ではそれぞれひとつのプログラム毎に
ひとつの空間を割り当てる。
式については、ただひとつの仮想空間を用いる単一仮想
空間方式と複数の仮想空間を用いる多重仮想空間方式と
が知られている。単一仮想空間方式では同時に実行する
複数のプログラムをひとつの空間に配置するのに対し、
多重仮想空間方式ではそれぞれひとつのプログラム毎に
ひとつの空間を割り当てる。
【0003】たとえば、UNIXシステムにおいては異
なるプロセスが割り当てられる仮想空間は異なるもので
ある。そのため、多重プロセスを実行すると、プロセス
・スイッチの際に仮想空間も切りかわり、TLBやキャ
ッシュがヒットしなくなる事態が生ずる。このため、せ
っかく実行速度の高速化のために設けられたこれらの手
段が多重プロセス環境のもとでは有効に働かないという
問題があった。
なるプロセスが割り当てられる仮想空間は異なるもので
ある。そのため、多重プロセスを実行すると、プロセス
・スイッチの際に仮想空間も切りかわり、TLBやキャ
ッシュがヒットしなくなる事態が生ずる。このため、せ
っかく実行速度の高速化のために設けられたこれらの手
段が多重プロセス環境のもとでは有効に働かないという
問題があった。
【0004】近年、ネットワーク技術が発達し、複数の
計算機上でクライアント・プログラムとサーバ・プログ
ラムが通信しながら、協調してひとつの処理をすすめて
いくクライアント・サーバ方式のプログラミングが一般
化している。しかも、この処理方式はクライアント・プ
ログラムとサーバ・プログラムを独立して開発でき、ま
た、全く別のプログラムからも呼び出し可能なため、様
々な場合において再利用可能であり、プログラムの寿命
が伸びるという特徴をもつ。そして、当然、ひとつの計
算機システム内においても、サーバ・クライアント方式
で処理がすすめられるようになってきており、多重プロ
セス実行性能の向上はさらに重要になっている。
計算機上でクライアント・プログラムとサーバ・プログ
ラムが通信しながら、協調してひとつの処理をすすめて
いくクライアント・サーバ方式のプログラミングが一般
化している。しかも、この処理方式はクライアント・プ
ログラムとサーバ・プログラムを独立して開発でき、ま
た、全く別のプログラムからも呼び出し可能なため、様
々な場合において再利用可能であり、プログラムの寿命
が伸びるという特徴をもつ。そして、当然、ひとつの計
算機システム内においても、サーバ・クライアント方式
で処理がすすめられるようになってきており、多重プロ
セス実行性能の向上はさらに重要になっている。
【0005】
【発明が解決しようとする課題】このように従来の多重
仮想空間方式では、複数のプログラムの間でコンテクス
ト切替が行われるたびに仮想空間を切替える。論理キャ
ッシュやTLBといった高速化手段においては、それぞ
れのプログラムの仮想アドレスをキーとしてデータや物
理アドレスを検索する。通常、プログラムのアドレス位
置はプログラムによらず固定されているため、仮想アド
レス位置は各プログラムに共通である。そのため、TL
Bや論理キャッシュ内に切替前に実行されたプログラム
のデータが残っていると、切替後のプログラムを実行中
にミスヒットする可能性が生ずる。
仮想空間方式では、複数のプログラムの間でコンテクス
ト切替が行われるたびに仮想空間を切替える。論理キャ
ッシュやTLBといった高速化手段においては、それぞ
れのプログラムの仮想アドレスをキーとしてデータや物
理アドレスを検索する。通常、プログラムのアドレス位
置はプログラムによらず固定されているため、仮想アド
レス位置は各プログラムに共通である。そのため、TL
Bや論理キャッシュ内に切替前に実行されたプログラム
のデータが残っていると、切替後のプログラムを実行中
にミスヒットする可能性が生ずる。
【0006】そこで、通常 1.仮想アドレスのほかに仮想空間を特定するための空
間番号を合わせ記憶する。
間番号を合わせ記憶する。
【0007】2.コンテクストを切替えるごとにTLB
やキャッシュ内のデータとメモリとの間で一貫性をと
る。 といった操作で、ミスヒットを防いでいる。
やキャッシュ内のデータとメモリとの間で一貫性をと
る。 といった操作で、ミスヒットを防いでいる。
【0008】いずれの方法も余分なハードウェア量が必
要であったり、コンテクスト切替時にソフトウェア的に
繁雑な操作となるため、本来容易に実現されるべき高速
化が達成できない欠点があった。
要であったり、コンテクスト切替時にソフトウェア的に
繁雑な操作となるため、本来容易に実現されるべき高速
化が達成できない欠点があった。
【0009】本発明は以上の点を鑑みてなされたもの
で、複数の実行プログラムを論理キャッシュやTLB等
の高速化手段を利用して実行する際に、余分なハードウ
ェアやプログラム切り替え時の負荷を低減でき、これら
高速化手段を有効に利用して多重プログラムの高速実行
を可能にする仮想記憶制御装置の提供を目的とする。
で、複数の実行プログラムを論理キャッシュやTLB等
の高速化手段を利用して実行する際に、余分なハードウ
ェアやプログラム切り替え時の負荷を低減でき、これら
高速化手段を有効に利用して多重プログラムの高速実行
を可能にする仮想記憶制御装置の提供を目的とする。
【0010】
【課題を解決するための手段】本発明に係る仮想記憶制
御装置は、単一仮想空間方式の計算機システムにおいて
は、あるユーザプログラムの実行中に当該ユーザプログ
ラムに属さない仮想アドレスへの不正アクセスが起こる
か否かを検出するメモリ保護手段と、ユーザプログラム
の実行前に、このメモリ保護手段での検出が有効に行わ
れる範囲内の数のユーザプログラムに対して、その仮想
アドレス領域が相互に重複しないように仮想アドレスを
割り当てるメモリ割当て手段と、このメモリ割当て手段
で割り当てた仮想アドレスを用い、前記メモリ保護手段
により不正アクセスが検出されなかった場合に、キャッ
シュ内のデータに対してアクセスを行いながら、前記ユ
ーザプログラムを実行する実行手段とを具備したことを
特徴とするものである。
御装置は、単一仮想空間方式の計算機システムにおいて
は、あるユーザプログラムの実行中に当該ユーザプログ
ラムに属さない仮想アドレスへの不正アクセスが起こる
か否かを検出するメモリ保護手段と、ユーザプログラム
の実行前に、このメモリ保護手段での検出が有効に行わ
れる範囲内の数のユーザプログラムに対して、その仮想
アドレス領域が相互に重複しないように仮想アドレスを
割り当てるメモリ割当て手段と、このメモリ割当て手段
で割り当てた仮想アドレスを用い、前記メモリ保護手段
により不正アクセスが検出されなかった場合に、キャッ
シュ内のデータに対してアクセスを行いながら、前記ユ
ーザプログラムを実行する実行手段とを具備したことを
特徴とするものである。
【0011】多重仮想空間方式の計算機システムにおい
ては、あるユーザプログラムの実行中に当該ユーザプロ
グラムに属さない仮想アドレスへの不正アクセスが起こ
るか否かを同一仮想空間内で検出するメモリ保護手段
と、ユーザプログラムの実行前に、複数の仮想空間に、
同一仮想空間内に割り当てるユーザプログラムの数が前
記メモリ保護手段での検出が有効に行われる範囲内の数
になるようユーザプログラムを割り振り、前記各ユーザ
プログラムの仮想アドレス領域が相互に重複しないよう
に、各ユーザプログラムに対して仮想アドレスを割り当
てるメモリ割当て手段と、ユーザプログラム切り替え時
に、この切替えが同一仮想空間内のものか異なる仮想空
間にまたがるものかを識別する識別手段と、この識別手
段により異なる仮想空間にまたがると識別された場合
に、切り替え元の仮想空間に属する仮想アドレスに対応
するキャッシュ内のデータを無効化する無効化手段と、
前記メモリ割当て手段で割り当てた仮想アドレスを用
い、前記メモリ保護手段により不正アクセスが検出され
ずかつ前記無効化手段によりデータが無効化されていな
かった場合に、キャッシュ内のデータに対してアクセス
を行いながら、前記ユーザプログラムを実行する実行手
段とを具備したことを特徴とするものである。
ては、あるユーザプログラムの実行中に当該ユーザプロ
グラムに属さない仮想アドレスへの不正アクセスが起こ
るか否かを同一仮想空間内で検出するメモリ保護手段
と、ユーザプログラムの実行前に、複数の仮想空間に、
同一仮想空間内に割り当てるユーザプログラムの数が前
記メモリ保護手段での検出が有効に行われる範囲内の数
になるようユーザプログラムを割り振り、前記各ユーザ
プログラムの仮想アドレス領域が相互に重複しないよう
に、各ユーザプログラムに対して仮想アドレスを割り当
てるメモリ割当て手段と、ユーザプログラム切り替え時
に、この切替えが同一仮想空間内のものか異なる仮想空
間にまたがるものかを識別する識別手段と、この識別手
段により異なる仮想空間にまたがると識別された場合
に、切り替え元の仮想空間に属する仮想アドレスに対応
するキャッシュ内のデータを無効化する無効化手段と、
前記メモリ割当て手段で割り当てた仮想アドレスを用
い、前記メモリ保護手段により不正アクセスが検出され
ずかつ前記無効化手段によりデータが無効化されていな
かった場合に、キャッシュ内のデータに対してアクセス
を行いながら、前記ユーザプログラムを実行する実行手
段とを具備したことを特徴とするものである。
【0012】尚、前記の無効化手段は、キャッシュ内の
データではなくTLB内のデータについて無効化を行
い、前記実行手段は、前記無効化手段により無効化され
ているかどうかの検査を、キャッシュ内のデータに対応
する仮想アドレスの管理を行っているTLBに対して、
キャッシュ内のデータに対するアクセスと並行して行う
ようにしても良い。
データではなくTLB内のデータについて無効化を行
い、前記実行手段は、前記無効化手段により無効化され
ているかどうかの検査を、キャッシュ内のデータに対応
する仮想アドレスの管理を行っているTLBに対して、
キャッシュ内のデータに対するアクセスと並行して行う
ようにしても良い。
【0013】また、前記のメモリ割当て手段が、ユーザ
プログラム相互のアクセス頻度を検出し、このアクセス
頻度が大きいユーザプログラム同士を優先的に同一空間
内に割り当てる手段をも具備することも効果的である。
プログラム相互のアクセス頻度を検出し、このアクセス
頻度が大きいユーザプログラム同士を優先的に同一空間
内に割り当てる手段をも具備することも効果的である。
【0014】また、前記のメモリ割当て手段を、他のユ
−ザプログラムへのアクセスの可能性を有する実行権限
を持つユーザプログラムを、1つの仮想空間にたかだか
1つ割り当てるよう構成しても良い。
−ザプログラムへのアクセスの可能性を有する実行権限
を持つユーザプログラムを、1つの仮想空間にたかだか
1つ割り当てるよう構成しても良い。
【0015】
【作用】本発明によれば、1つの仮想空間には相互に不
正アクセスチェック(メモリ保護)可能な数以内のユー
ザプログラムだけがマップされていて、ユーザプログラ
ムは同一空間に配置してもこのメモリ保護手段により記
憶保護がさなれ、しかも、ユーザプログラムのアドレス
位置は相互に重複しないようになっている。よって、こ
のような構成においては、コンテクスト切り替えが生じ
た場合にも、メモリ保護手段が現在の(切り替え元の)
プログラムのアドレス領域の範囲を逸脱するアドレスア
クセスをチェックし、かつ、異なるプログラムが同じ仮
想アドレスを持つことはない(異なるプログラムが仮想
アドレスを共有することからくる不正アクセスは存在し
ない)ため、キャッシュやTLBの無効化処理等を施す
必要がない。従ってキャッシュやTLBを有効に利用で
き、高速な多重プログラムの実行が可能になる。
正アクセスチェック(メモリ保護)可能な数以内のユー
ザプログラムだけがマップされていて、ユーザプログラ
ムは同一空間に配置してもこのメモリ保護手段により記
憶保護がさなれ、しかも、ユーザプログラムのアドレス
位置は相互に重複しないようになっている。よって、こ
のような構成においては、コンテクスト切り替えが生じ
た場合にも、メモリ保護手段が現在の(切り替え元の)
プログラムのアドレス領域の範囲を逸脱するアドレスア
クセスをチェックし、かつ、異なるプログラムが同じ仮
想アドレスを持つことはない(異なるプログラムが仮想
アドレスを共有することからくる不正アクセスは存在し
ない)ため、キャッシュやTLBの無効化処理等を施す
必要がない。従ってキャッシュやTLBを有効に利用で
き、高速な多重プログラムの実行が可能になる。
【0016】ただし、多重仮想空間方式の場合には、以
下の点に注意を要する。キャッシュに格納されるデータ
に関してアドレス位置が重複することがないため、キャ
ッシュに仮想空間番号を記憶する必要がないことは勿
論、同一空間内でコンテクスト切り替えが起こっている
限りでは上記と同様に無効化の必要がないのであるが、
ある仮想空間のプログラムから別の仮想空間のプログラ
ムへコンテクスト切り替えが起こった場合、上記メモリ
保護手段だけでは不正アドレスアクセスをチェックしき
れなくなるので、このコンテクスト切り替えに伴ってキ
ャッシュあるいはTLB(アドレス変換テ−ブルのキャ
ッシュ)があればTLBのみを無効化処理する必要があ
る。キャッシュに対しては無効化処理せず、TLBに対
して無効化処理することは、この方が処理の負荷が軽い
ことから有効である。また、無効化処理するのは異なる
仮想空間をまたがる切り替えの場合の切り替え元の仮想
空間に属する仮想アドレスだけであるので、コンテクス
ト切り替え毎にTLBあるいはキャッシュ全体を無効化
する必要はなく、さらに、切り替え時に無効化された仮
想アドレスは再度切り替えが起こり元の仮想空間に戻っ
てきた場合には有効化することもできるので、キャッシ
ュやTLBを有効に利用でき、多重仮想空間における多
重プロセスの高速実行も可能となる。
下の点に注意を要する。キャッシュに格納されるデータ
に関してアドレス位置が重複することがないため、キャ
ッシュに仮想空間番号を記憶する必要がないことは勿
論、同一空間内でコンテクスト切り替えが起こっている
限りでは上記と同様に無効化の必要がないのであるが、
ある仮想空間のプログラムから別の仮想空間のプログラ
ムへコンテクスト切り替えが起こった場合、上記メモリ
保護手段だけでは不正アドレスアクセスをチェックしき
れなくなるので、このコンテクスト切り替えに伴ってキ
ャッシュあるいはTLB(アドレス変換テ−ブルのキャ
ッシュ)があればTLBのみを無効化処理する必要があ
る。キャッシュに対しては無効化処理せず、TLBに対
して無効化処理することは、この方が処理の負荷が軽い
ことから有効である。また、無効化処理するのは異なる
仮想空間をまたがる切り替えの場合の切り替え元の仮想
空間に属する仮想アドレスだけであるので、コンテクス
ト切り替え毎にTLBあるいはキャッシュ全体を無効化
する必要はなく、さらに、切り替え時に無効化された仮
想アドレスは再度切り替えが起こり元の仮想空間に戻っ
てきた場合には有効化することもできるので、キャッシ
ュやTLBを有効に利用でき、多重仮想空間における多
重プロセスの高速実行も可能となる。
【0017】上記の多重仮想空間方式において、ユーザ
プログラム相互のアクセス頻度の大きいもの同士を優先
して同一空間に割り当てるようにすれば、上記のような
キャッシュあるいはTLBの無効化を伴う異なる空間を
またがるコンテクスト切り替えの起こる頻度が減り、さ
らに高速化が可能となる。
プログラム相互のアクセス頻度の大きいもの同士を優先
して同一空間に割り当てるようにすれば、上記のような
キャッシュあるいはTLBの無効化を伴う異なる空間を
またがるコンテクスト切り替えの起こる頻度が減り、さ
らに高速化が可能となる。
【0018】また上記の多重仮想空間方式においては、
現在のプログラムのアドレス領域の範囲を逸脱するアド
レスアクセスを不正とするが、現在のプログラムが実行
形式のプログラムで、別のアドレス領域のデータ形式の
プログラムを読み書きするような場合は、そのデータ形
式のプログラムが存在するアドレス領域について他のプ
ログラムから読み書き可と設定することがある。この場
合に実行形式のプログラムを同一空間に複数(A,B)
配置してしまうと、AからもBからも同じようにデータ
形式のプログラムを読み書きできてしまい、Aがそのデ
ータをアクセスする権限とBがその同じデ−タをアクセ
スする権限とを違えたいときには不都合である。また、
実行形式のプログラムが他の実行形式のプログラムに制
御を移す場合にも、AからBへは移せるがBからAへは
移せないというようにアクセス権限を違えることが同一
空間内ではできないという不都合が生じる。そこで、こ
のような実行形式のプログラムは同一空間内には高々1
つしか割り当てないようにすれば、同じデータに対する
アクセス(読み書き)権限を空間毎に変えられるためA
からとBからとで同じデ−タに対するアクセス権限を違
えることができ、また、OSを介して異なる空間へ実行
の制御を移すことになるためどこからどこへ移すのかに
よってアクセス権限を違えることができる。尚、ユ−ザ
プログラムとはオペレ−ティングシステム以外のプログ
ラムを指す。
現在のプログラムのアドレス領域の範囲を逸脱するアド
レスアクセスを不正とするが、現在のプログラムが実行
形式のプログラムで、別のアドレス領域のデータ形式の
プログラムを読み書きするような場合は、そのデータ形
式のプログラムが存在するアドレス領域について他のプ
ログラムから読み書き可と設定することがある。この場
合に実行形式のプログラムを同一空間に複数(A,B)
配置してしまうと、AからもBからも同じようにデータ
形式のプログラムを読み書きできてしまい、Aがそのデ
ータをアクセスする権限とBがその同じデ−タをアクセ
スする権限とを違えたいときには不都合である。また、
実行形式のプログラムが他の実行形式のプログラムに制
御を移す場合にも、AからBへは移せるがBからAへは
移せないというようにアクセス権限を違えることが同一
空間内ではできないという不都合が生じる。そこで、こ
のような実行形式のプログラムは同一空間内には高々1
つしか割り当てないようにすれば、同じデータに対する
アクセス(読み書き)権限を空間毎に変えられるためA
からとBからとで同じデ−タに対するアクセス権限を違
えることができ、また、OSを介して異なる空間へ実行
の制御を移すことになるためどこからどこへ移すのかに
よってアクセス権限を違えることができる。尚、ユ−ザ
プログラムとはオペレ−ティングシステム以外のプログ
ラムを指す。
【0019】
【実施例】以下図面を参照して本発明の一実施例につい
て説明する。図1に本実施例の仮想記憶制御装置の構成
を示す。まず、本実施例の仮想記憶制御装置における仮
想空間内のプログラムの配置の例から説明すると、図2
(a)は、単一仮想空間方式のシステムの場合に、その
仮想空間1にOS10と複数のユーザプログラム4〜9
を互いにアドレス領域が重ならないようにップした様子
を表している。図2(b)は、多重仮想空間方式のシス
テムの場合に、仮想空間2にはOS10及びユーザプロ
グラム4〜6をマップし、仮想空間3にはOS10を仮
想空間2のOS10と同じアドレスにマップしユーザプ
ログラム7〜9を仮想空間2のユーザプログラム4〜6
と互いにアドレス領域が重ならないようにマップする。
つまり、本実施例におけるプログラム配置の特徴は、ユ
ーザプログラムが、同一空間内でも、異なる空間の間で
も、アドレス領域が相互に重複しないようになっている
ことである。
て説明する。図1に本実施例の仮想記憶制御装置の構成
を示す。まず、本実施例の仮想記憶制御装置における仮
想空間内のプログラムの配置の例から説明すると、図2
(a)は、単一仮想空間方式のシステムの場合に、その
仮想空間1にOS10と複数のユーザプログラム4〜9
を互いにアドレス領域が重ならないようにップした様子
を表している。図2(b)は、多重仮想空間方式のシス
テムの場合に、仮想空間2にはOS10及びユーザプロ
グラム4〜6をマップし、仮想空間3にはOS10を仮
想空間2のOS10と同じアドレスにマップしユーザプ
ログラム7〜9を仮想空間2のユーザプログラム4〜6
と互いにアドレス領域が重ならないようにマップする。
つまり、本実施例におけるプログラム配置の特徴は、ユ
ーザプログラムが、同一空間内でも、異なる空間の間で
も、アドレス領域が相互に重複しないようになっている
ことである。
【0020】このような仮想空間へのプログラム配置
は、プログラム割当部17で、行われる。その割当方法
を以下に説明する。本実施例では、各ユーザプログラム
の大きさは、32Mバイト固定とする。勿論これは可変
でも同様に実現できる。プログラム割当部は、図10に
示すようなプログラム管理テーブルを保持している。
は、プログラム割当部17で、行われる。その割当方法
を以下に説明する。本実施例では、各ユーザプログラム
の大きさは、32Mバイト固定とする。勿論これは可変
でも同様に実現できる。プログラム割当部は、図10に
示すようなプログラム管理テーブルを保持している。
【0021】この中に、現在の仮想空間の利用状況を記
憶している。その内容は、空間の各領域の開始と終了ア
ドレス、その領域のプログラムID、その領域を利用し
ているプログラム名、その領域の状態、その他必要な情
報である。プログラムIDは、領域に従って順番にふっ
てある。
憶している。その内容は、空間の各領域の開始と終了ア
ドレス、その領域のプログラムID、その領域を利用し
ているプログラム名、その領域の状態、その他必要な情
報である。プログラムIDは、領域に従って順番にふっ
てある。
【0022】システムコールなどによって、ユーザまた
はプログラムから新しいプログラムの仮想空間への配置
を要求されると、プログラム割当部は、図11に示す手
順で動作する。まず、管理テーブルの状態フィールドを
調べ、空き領域の所を探す(S11)。
はプログラムから新しいプログラムの仮想空間への配置
を要求されると、プログラム割当部は、図11に示す手
順で動作する。まず、管理テーブルの状態フィールドを
調べ、空き領域の所を探す(S11)。
【0023】見つかったら(S12 Yes)、その領域を
使用中にして、プログラム名、その他の情報を登録する
(S13)。空き領域がなければエラー処理する(S1
4)。
使用中にして、プログラム名、その他の情報を登録する
(S13)。空き領域がなければエラー処理する(S1
4)。
【0024】ここで、従来の仮想記憶制御方式との違い
を説明すると、従来は、図3にそのプログラム配置を示
すように、OS10の下で各ユーザプログラムがそれぞ
れ別の仮想空間に割り当てられて動作している。そして
それぞれの仮想空間では同じアドレス領域が用いられて
いる。この従来の方式では、1つの仮想空間に1つのユ
ーザプログラムが割り当てられるため、ユーザプログラ
ムAが誤ってユーザプログラムBのデータにアクセスす
るようなこと(不正アドレスアクセス)は起こり得な
い。
を説明すると、従来は、図3にそのプログラム配置を示
すように、OS10の下で各ユーザプログラムがそれぞ
れ別の仮想空間に割り当てられて動作している。そして
それぞれの仮想空間では同じアドレス領域が用いられて
いる。この従来の方式では、1つの仮想空間に1つのユ
ーザプログラムが割り当てられるため、ユーザプログラ
ムAが誤ってユーザプログラムBのデータにアクセスす
るようなこと(不正アドレスアクセス)は起こり得な
い。
【0025】これに対して本実施例の方式では、1つの
仮想空間内に複数のユーザプログラムがあるため、メモ
リ保護装置(図1の14)を用いてこれを防ぐ必要があ
る。すなわち、メモリ保護装置14は、各プログラムの
アドレス領域の範囲を記憶しておき(アドレス領域範囲
記憶部20)、現在動作しているプログラムのID(た
とえば図2の7;プログラム実行部18で検出される)
を記憶し、これからメモリアクセス実行部19でアクセ
スしようとするアドレスが7のアドレス領域を越えるも
のであればこれを不正アドレスアクセスとして検出し
(不正アクセス検出部21)、プロセッサ11(内のメ
モリアクセス実行部19)に通知する。
仮想空間内に複数のユーザプログラムがあるため、メモ
リ保護装置(図1の14)を用いてこれを防ぐ必要があ
る。すなわち、メモリ保護装置14は、各プログラムの
アドレス領域の範囲を記憶しておき(アドレス領域範囲
記憶部20)、現在動作しているプログラムのID(た
とえば図2の7;プログラム実行部18で検出される)
を記憶し、これからメモリアクセス実行部19でアクセ
スしようとするアドレスが7のアドレス領域を越えるも
のであればこれを不正アドレスアクセスとして検出し
(不正アクセス検出部21)、プロセッサ11(内のメ
モリアクセス実行部19)に通知する。
【0026】このメモリ保護装置14がその機能を果た
すことができる(1つの仮想空間において相互に記憶保
護可能な)数以内のユーザプログラムが、1つの仮想空
間内に、アドレス領域の重なりがないよう、動作に先立
って配置されることになる(プログラム割当て部1
7)。この配置情報がアドレス領域範囲記憶部20に渡
される。このときの配置情報の記憶の仕方の一例がプロ
グラム管理テーブル(図10,12)である。このよう
な機能を実現するメモリ保護装置としては、セグメンテ
ーション・レジスタを用いる方法等がよく知られてい
る。
すことができる(1つの仮想空間において相互に記憶保
護可能な)数以内のユーザプログラムが、1つの仮想空
間内に、アドレス領域の重なりがないよう、動作に先立
って配置されることになる(プログラム割当て部1
7)。この配置情報がアドレス領域範囲記憶部20に渡
される。このときの配置情報の記憶の仕方の一例がプロ
グラム管理テーブル(図10,12)である。このよう
な機能を実現するメモリ保護装置としては、セグメンテ
ーション・レジスタを用いる方法等がよく知られてい
る。
【0027】このような仮想空間へのプログラム配置
は、プログラム割当部17で、行われる。その割当方法
を以下に説明する。本実施例では、各ユーザプログラム
の大きさは、32Mバイト固定とする。プログラム割当
部は、図12に示すようなプログラム管理テーブルを保
持している。図10の表に、プログラムIDのかわりに
領域番号を付加し、さらに仮想空間番号とプログラム保
護キーのフィールドを付加したものである。領域番号
は、アドレス空間の順番に領域番号をつけたもの、仮想
空間番号と保護キーは、それぞれその領域が存在する仮
想空間番号とその空間内での領域を区別する番号であ
る。保護キーの数は前述した記憶保護可能な数以内のも
のである。さらに図13に示す、現在の仮想空間の利用
状況を記憶する空間管理表をもつ。その内容は、仮想空
間番号、その空間内での領域ごとを区別するためのプロ
グラム保護キー、その領域を利用しているプログラム名
をしめす領域番号である。その領域の状態、その他必要
な情報である。この領域番号は、図12の領域番号に対
応している。
は、プログラム割当部17で、行われる。その割当方法
を以下に説明する。本実施例では、各ユーザプログラム
の大きさは、32Mバイト固定とする。プログラム割当
部は、図12に示すようなプログラム管理テーブルを保
持している。図10の表に、プログラムIDのかわりに
領域番号を付加し、さらに仮想空間番号とプログラム保
護キーのフィールドを付加したものである。領域番号
は、アドレス空間の順番に領域番号をつけたもの、仮想
空間番号と保護キーは、それぞれその領域が存在する仮
想空間番号とその空間内での領域を区別する番号であ
る。保護キーの数は前述した記憶保護可能な数以内のも
のである。さらに図13に示す、現在の仮想空間の利用
状況を記憶する空間管理表をもつ。その内容は、仮想空
間番号、その空間内での領域ごとを区別するためのプロ
グラム保護キー、その領域を利用しているプログラム名
をしめす領域番号である。その領域の状態、その他必要
な情報である。この領域番号は、図12の領域番号に対
応している。
【0028】システムコールなどによって、ユーザまた
はプログラムから新しいフログラムの仮想空間への配置
を要求されると、プログラム割当部は、図14に示す手
順で動作する。まず、図12のプログラム管理テーブル
の状態フィールドを調べ、空き領域の所を探す(S2
1)。見つかったら(S22 Yes)、次に空いているプ
ログラム保護キーが存在する仮想空間と、その保護キー
を探す(S23)。図13の仮想空間管理表を利用し、
状態フィールドのところを検索して探す。見つかったら
(S24 Yes)、図12,13の両方の表の各項目にそ
れぞれ、利用状態を使用中にし、プログラム名、領域番
号、仮想空間番号、保護キー番号、その他の情報を登録
する(S25)。領域、もしくは、仮想空間と保護キー
に空きがなければエラー処理する(S26,S27)。
はプログラムから新しいフログラムの仮想空間への配置
を要求されると、プログラム割当部は、図14に示す手
順で動作する。まず、図12のプログラム管理テーブル
の状態フィールドを調べ、空き領域の所を探す(S2
1)。見つかったら(S22 Yes)、次に空いているプ
ログラム保護キーが存在する仮想空間と、その保護キー
を探す(S23)。図13の仮想空間管理表を利用し、
状態フィールドのところを検索して探す。見つかったら
(S24 Yes)、図12,13の両方の表の各項目にそ
れぞれ、利用状態を使用中にし、プログラム名、領域番
号、仮想空間番号、保護キー番号、その他の情報を登録
する(S25)。領域、もしくは、仮想空間と保護キー
に空きがなければエラー処理する(S26,S27)。
【0029】図1のTLB(Translation Lookaside Bu
ffer)15は、論理アドレスと物理アドレスを変換する
ためのテーブルであり、論理キャッシュ12に格納され
ているデータラインの管理を行っている。メモリ・イン
ターフェース16は、キャッシュミスした場合にプロセ
ッサ11より通知を受け、不要な論理キャッシュ12内
のラインとメモリ13上のラインを変換し、これに対応
してTLB15の内容も変更する。
ffer)15は、論理アドレスと物理アドレスを変換する
ためのテーブルであり、論理キャッシュ12に格納され
ているデータラインの管理を行っている。メモリ・イン
ターフェース16は、キャッシュミスした場合にプロセ
ッサ11より通知を受け、不要な論理キャッシュ12内
のラインとメモリ13上のラインを変換し、これに対応
してTLB15の内容も変更する。
【0030】第1の実施例として本装置を単一仮想空間
方式で利用した場合で説明する。オペレーティングシス
テム10内の一部に存在するプログラム割当部17は、
図10のプログラム管理テーブルを用い、図11の手順
で、図2(a)のようにプログラムを割り当てる。メモ
リ保護装置14は、相互に保護可能なプログラムの数が
十分に大きく、図のように配置したプログラムすべて
を、不正アクセスから保護できるものとする。また、全
てのプログラムは、1つの仮想空間に納まるものとす
る。尚、保護可能なプログラムの数がnである場合は、
図10のテーブルのエントリの数をn以内とすること
で、n以内の数のプログラムを割り当てる。
方式で利用した場合で説明する。オペレーティングシス
テム10内の一部に存在するプログラム割当部17は、
図10のプログラム管理テーブルを用い、図11の手順
で、図2(a)のようにプログラムを割り当てる。メモ
リ保護装置14は、相互に保護可能なプログラムの数が
十分に大きく、図のように配置したプログラムすべて
を、不正アクセスから保護できるものとする。また、全
てのプログラムは、1つの仮想空間に納まるものとす
る。尚、保護可能なプログラムの数がnである場合は、
図10のテーブルのエントリの数をn以内とすること
で、n以内の数のプログラムを割り当てる。
【0031】本単一仮想空間方式の構成の場合、コンテ
クスト切り替えの際に、論理キャッシュ12及びTLB
15に対して、何等特別な操作(図5S101)は必要
でないし、後述するTLBの無効化ビットも必要ない。
というのは、本方式では、各プログラムが同じ論理アド
レスを使用することが有り得ないからである。
クスト切り替えの際に、論理キャッシュ12及びTLB
15に対して、何等特別な操作(図5S101)は必要
でないし、後述するTLBの無効化ビットも必要ない。
というのは、本方式では、各プログラムが同じ論理アド
レスを使用することが有り得ないからである。
【0032】このように論理キャッシュやTLB内のデ
ータを全て残しておいたままコンテクスト切り替え(例
えば、コンテクスト(プログラム)Aからコンテクスト
(プログラム)Bへ切り替える(実行を移す))ができ
るので、切り替えた後のコンテクストBの実行にともな
って論理キャッシュの入れ替えがキャッシュミスにより
除々に進むにしても、コンテクストが切り替え前のAに
再度戻ってきたときにはまだAに関するデータがキャッ
シュ内に残っている可能性は高く、キヤッシュの入れ替
えを最小限に抑えることができる。
ータを全て残しておいたままコンテクスト切り替え(例
えば、コンテクスト(プログラム)Aからコンテクスト
(プログラム)Bへ切り替える(実行を移す))ができ
るので、切り替えた後のコンテクストBの実行にともな
って論理キャッシュの入れ替えがキャッシュミスにより
除々に進むにしても、コンテクストが切り替え前のAに
再度戻ってきたときにはまだAに関するデータがキャッ
シュ内に残っている可能性は高く、キヤッシュの入れ替
えを最小限に抑えることができる。
【0033】本実施例装置でプログラムを実行するとき
の処理の流れを図5に示しておく。まず命令をフェッチ
し(S1)、この命令に関して、上述したメモリ保護装
置14によるアクセスチェック(S2)と、TLB15
にアクセスすべきアドレスが存在するか否かの検出(S
3)とを並行して行う。メモリ保護装置14が不正アド
レスアクセスを検知した場合にはこれをプロセッサ11
に通知し実行中止の措置をとる(S4)。TLB15に
該当アドレスがない場合にはメモリ13中の該当アドレ
スのデータを論理キャッシュ12にフェッチしてくるよ
うメモリ・インタフェース16に指示する(S5)。S
2とS3の検査をパスした場合、またはS5の処理が終
了した後に、プロセッサ11が命令(論理キャッシュか
らのデータの読み出し、論理キャッシャへのデータの書
き込み)を実行する(S6)。そしてプログラムカウン
タを進め(S7)、プログラムが終了するまで以上の処
理を繰り返す。
の処理の流れを図5に示しておく。まず命令をフェッチ
し(S1)、この命令に関して、上述したメモリ保護装
置14によるアクセスチェック(S2)と、TLB15
にアクセスすべきアドレスが存在するか否かの検出(S
3)とを並行して行う。メモリ保護装置14が不正アド
レスアクセスを検知した場合にはこれをプロセッサ11
に通知し実行中止の措置をとる(S4)。TLB15に
該当アドレスがない場合にはメモリ13中の該当アドレ
スのデータを論理キャッシュ12にフェッチしてくるよ
うメモリ・インタフェース16に指示する(S5)。S
2とS3の検査をパスした場合、またはS5の処理が終
了した後に、プロセッサ11が命令(論理キャッシュか
らのデータの読み出し、論理キャッシャへのデータの書
き込み)を実行する(S6)。そしてプログラムカウン
タを進め(S7)、プログラムが終了するまで以上の処
理を繰り返す。
【0034】第2の実施例として、本装置を多重仮想空
間方式に利用した場合で説明する。オペレーティングシ
ステム10内の一部に存在するプログラム割当部17
は、図12、図13の表を用い、図14の手順で、図2
(b)のようにプログラムを割り当てる。この例でのメ
モリ保護装置14が、相互に保護可能なプログラムの数
は4である。つまり、メモリ保護装置14は、1つの空
間にn=4個の保護キーを有することができる。このた
め、プログラム割当部17は、プログラム4,5,6
(n−1個のユーザプログラム)と1個のオペレーティ
ングシステム10を同一仮想空間2に格納し、この数を
越える残りのプログラムは別の仮想空間3に格納してい
る。また、オペレーティングシステム10は両空間から
共通に利用されるので、両仮想空間でのアドレス領域及
び保護キー番号は共通にしておく。
間方式に利用した場合で説明する。オペレーティングシ
ステム10内の一部に存在するプログラム割当部17
は、図12、図13の表を用い、図14の手順で、図2
(b)のようにプログラムを割り当てる。この例でのメ
モリ保護装置14が、相互に保護可能なプログラムの数
は4である。つまり、メモリ保護装置14は、1つの空
間にn=4個の保護キーを有することができる。このた
め、プログラム割当部17は、プログラム4,5,6
(n−1個のユーザプログラム)と1個のオペレーティ
ングシステム10を同一仮想空間2に格納し、この数を
越える残りのプログラムは別の仮想空間3に格納してい
る。また、オペレーティングシステム10は両空間から
共通に利用されるので、両仮想空間でのアドレス領域及
び保護キー番号は共通にしておく。
【0035】一方、TLB15は、図4に示すように、
ラインごとに論理アドレスと物理アドレスの対が格納さ
れると同時に、各ラインが有効か無効かを示す無効化ビ
ットフィールドを設ける。これは、異なる仮想空間にま
たがってコンテクストを切り替える時に有効に働く。例
えば、仮想空間2のプログラム6から仮想空間3のプロ
グラム9へのコンテクスト切り替えが起こったとする。
このときのTLB15の内容を、図4に示す、第1ライ
ンの論理アドレスの先頭の記号a及び物理アドレスの先
頭の記号Aはいずれもプログラム9に含まれるラインで
あることを示す。また、第2ラインに含まれる論理アド
レスの先頭の記号b及び物理アドレスの先頭の記号B
は、プログラム6に含まれるラインであることを示す。
ラインごとに論理アドレスと物理アドレスの対が格納さ
れると同時に、各ラインが有効か無効かを示す無効化ビ
ットフィールドを設ける。これは、異なる仮想空間にま
たがってコンテクストを切り替える時に有効に働く。例
えば、仮想空間2のプログラム6から仮想空間3のプロ
グラム9へのコンテクスト切り替えが起こったとする。
このときのTLB15の内容を、図4に示す、第1ライ
ンの論理アドレスの先頭の記号a及び物理アドレスの先
頭の記号Aはいずれもプログラム9に含まれるラインで
あることを示す。また、第2ラインに含まれる論理アド
レスの先頭の記号b及び物理アドレスの先頭の記号B
は、プログラム6に含まれるラインであることを示す。
【0036】さて、オペレーティングシステム10(プ
ログラム実行部18に含まれる)がプログラム6からプ
ログラム9へスケジューリングするとき、プログラム管
理表(図12)より、プログラム6は、仮想空間2の保
護キー2により保護されており、プログラム9は、仮想
空間3の保護キー2により保護されていることがわか
る。従ってこの両者の仮想空間番号を比較することによ
り、一致しないことが検出され、仮想空間2から3への
異なる空間にまたがるコンテクストスイッチが必要なこ
とがわかる。そこでオペレーティングシステム10は、
現在のプログラム6の実行に必要なコンテクストのセー
ブと次に実行するプログラム9のコンテクストの復旧を
行い、さらに、仮想空間の切り替え処理を行う。
ログラム実行部18に含まれる)がプログラム6からプ
ログラム9へスケジューリングするとき、プログラム管
理表(図12)より、プログラム6は、仮想空間2の保
護キー2により保護されており、プログラム9は、仮想
空間3の保護キー2により保護されていることがわか
る。従ってこの両者の仮想空間番号を比較することによ
り、一致しないことが検出され、仮想空間2から3への
異なる空間にまたがるコンテクストスイッチが必要なこ
とがわかる。そこでオペレーティングシステム10は、
現在のプログラム6の実行に必要なコンテクストのセー
ブと次に実行するプログラム9のコンテクストの復旧を
行い、さらに、仮想空間の切り替え処理を行う。
【0037】そして、TLB15中に含まれる仮想空間
2に属するプログラム4,5,6のデータライン(例え
ば第2ライン)の無効化ビットをONにし、プログラム
9のデータライン(例えば第1、第3ライン)の無効化
ビットをOFFにするという操作を行う。
2に属するプログラム4,5,6のデータライン(例え
ば第2ライン)の無効化ビットをONにし、プログラム
9のデータライン(例えば第1、第3ライン)の無効化
ビットをOFFにするという操作を行う。
【0038】ここでは、有効化を切り替え先のプログラ
ムに属する仮想アドレス(プログラム9の160M番地
〜(192M−1)番地)に対して行う例を説明した
が、この有効化は切り替え先の仮想空間のプログラムが
割り当てられている部分に属する仮想アドレス(プログ
ラム7〜9の96M番地〜(192M−1)番地)全て
に対して行ってもよい。ただし、オペレーティングシス
テム10自身のデータラインに属しては、両方の仮想空
間から共通に利用されるので、そのまま有効としてお
く。
ムに属する仮想アドレス(プログラム9の160M番地
〜(192M−1)番地)に対して行う例を説明した
が、この有効化は切り替え先の仮想空間のプログラムが
割り当てられている部分に属する仮想アドレス(プログ
ラム7〜9の96M番地〜(192M−1)番地)全て
に対して行ってもよい。ただし、オペレーティングシス
テム10自身のデータラインに属しては、両方の仮想空
間から共通に利用されるので、そのまま有効としてお
く。
【0039】その上で、プログラム実行時には、図5S
101に示すように、S3でTLBヒットを確認すると
同時に無効化ビットを調べる(このS101はS3と並
行して行われる)。これがONであった場合には不正ア
ドレスアクセスとしてプロセッサ11に通知し、OFF
であった場合には命令の実行(S6)へ処理を進める。
101に示すように、S3でTLBヒットを確認すると
同時に無効化ビットを調べる(このS101はS3と並
行して行われる)。これがONであった場合には不正ア
ドレスアクセスとしてプロセッサ11に通知し、OFF
であった場合には命令の実行(S6)へ処理を進める。
【0040】このようにTLBに無効化ビット付加する
のは、メモリ保護装置が保護できるのは同一仮想空間内
に限られるので、プログラム4〜6内の不正アクセス、
プログラム7〜9内の不正アクセスはそれぞれ検知でき
るが、異なる仮想空間をまたがる例えばプログラム6が
誤ってプログラム9のアドレスをアクセスしてしまうと
いった不正アクセスについては対処できないという理由
による。上述のような機構にすれば、プログラム9を実
行中にプログラム6等(仮想空間2)のアドレスを不正
アクセスしてもTLBの無効化ビットがONになってい
るためにトラップがかかり、プロセッサへの通知が行わ
れることになる。さらに、再度プログラム9からプログ
ラム6へコンテクストが戻ってきたとき、プログラム6
の(あるいは仮想空間2に属する)データライン(第2
ライン)の無効化ビットがOFFになる(仮想空間3に
属する第1、第3ラインは当然ONになる)ので、論理
キャッシュに残っているプログラム6のデータがそのま
ま使える。すなわち、プログラム9の実行中にキャッシ
ュミスによるキャッシュ入れ換えを行う際には通常のL
RUアルゴリズムにしたがって入れ換えるため、プログ
ラム6のデータラインがまだ残っていることも十分にあ
り得るので、これを有効に利用できるのである。
のは、メモリ保護装置が保護できるのは同一仮想空間内
に限られるので、プログラム4〜6内の不正アクセス、
プログラム7〜9内の不正アクセスはそれぞれ検知でき
るが、異なる仮想空間をまたがる例えばプログラム6が
誤ってプログラム9のアドレスをアクセスしてしまうと
いった不正アクセスについては対処できないという理由
による。上述のような機構にすれば、プログラム9を実
行中にプログラム6等(仮想空間2)のアドレスを不正
アクセスしてもTLBの無効化ビットがONになってい
るためにトラップがかかり、プロセッサへの通知が行わ
れることになる。さらに、再度プログラム9からプログ
ラム6へコンテクストが戻ってきたとき、プログラム6
の(あるいは仮想空間2に属する)データライン(第2
ライン)の無効化ビットがOFFになる(仮想空間3に
属する第1、第3ラインは当然ONになる)ので、論理
キャッシュに残っているプログラム6のデータがそのま
ま使える。すなわち、プログラム9の実行中にキャッシ
ュミスによるキャッシュ入れ換えを行う際には通常のL
RUアルゴリズムにしたがって入れ換えるため、プログ
ラム6のデータラインがまだ残っていることも十分にあ
り得るので、これを有効に利用できるのである。
【0041】さらに、本実施例の説明のようにプログラ
ム6とプログラム9の相互の呼び出しが多く、空間切り
替えが多発すると効率が低下するので、その際は、オペ
レーティングシステム10は効率化のため、プログラム
の仮想空間への分配を変更しても良い。この場合の実施
例としては、プログラム管理表(図12)のその他の情
報のフィールドに、以前実行していたプログラム名を記
録しておくようにする。そして定期的にその記録を元に
プログラムの起動順序関係を解析し、もし、上記のよう
な依存関係があれば、即ち、相互のプログラム間のアク
セス頻度が所定の値以上であれば、これらのプログラム
が同一空間内に配置されるよう、空間の配置を入れ換え
る。この場合、図2(c)に示すように、仮想空間2に
プログラム5,6,9を配置し、残りのプログラムを仮
想空間3に配置する。配置換えは、図14の手順に従っ
て行うが、相互呼び出しの多いプログラムの数(この例
では2個)分の空き領域が同一空間に取れるようなもの
を探し、そこに割り当てるべく図12、図13の表の更
新を行う。こうすると、プログラム6とプログラム9と
の間の相互呼び出しに伴う、空間切り替えのオーバヘッ
ドはなくなる。尚、ユーザの指定により図12のその他
の情報のフィールドにプログラムの起動順序関係やアク
セス頻度を予め書き込んでおき、この情報に従ってオペ
レーティングシステム10が初めから図2(c)のよう
な配置を行うことも可能である。
ム6とプログラム9の相互の呼び出しが多く、空間切り
替えが多発すると効率が低下するので、その際は、オペ
レーティングシステム10は効率化のため、プログラム
の仮想空間への分配を変更しても良い。この場合の実施
例としては、プログラム管理表(図12)のその他の情
報のフィールドに、以前実行していたプログラム名を記
録しておくようにする。そして定期的にその記録を元に
プログラムの起動順序関係を解析し、もし、上記のよう
な依存関係があれば、即ち、相互のプログラム間のアク
セス頻度が所定の値以上であれば、これらのプログラム
が同一空間内に配置されるよう、空間の配置を入れ換え
る。この場合、図2(c)に示すように、仮想空間2に
プログラム5,6,9を配置し、残りのプログラムを仮
想空間3に配置する。配置換えは、図14の手順に従っ
て行うが、相互呼び出しの多いプログラムの数(この例
では2個)分の空き領域が同一空間に取れるようなもの
を探し、そこに割り当てるべく図12、図13の表の更
新を行う。こうすると、プログラム6とプログラム9と
の間の相互呼び出しに伴う、空間切り替えのオーバヘッ
ドはなくなる。尚、ユーザの指定により図12のその他
の情報のフィールドにプログラムの起動順序関係やアク
セス頻度を予め書き込んでおき、この情報に従ってオペ
レーティングシステム10が初めから図2(c)のよう
な配置を行うことも可能である。
【0042】また、上記のような配分を拡張して、図2
(d)の様な配置も可能である。これは、プログラム6
と9の相互呼び出しだけでなく、プログラム7,8,9
の相互呼び出しが多い場合である。この際、プログラム
6,7,8,9を一つの空間に配置することは、出来な
いので、相互のアクセス頻度が高いものでグループに分
け、そのグループ毎で一つの仮想空間を共有するよう配
置する。この例では1グループを3つ以下のプログラム
で構成されるようにする(記憶保護可能な数が4のた
め)。相互呼び出しの記録及び解析は、前記と同様の方
式による。言い替えると、あるプログラムAに対して相
互のアクセス頻度の大きいプログラムの数が、メモリ保
護可能な数を越える場合に、プログラムAを例外的に複
数の仮想空間の仮想アドレスが同一の部分に重複して割
り当ててしまうことにより、プログラムA(9)との相
互のアクセス頻度の大きいプログラム群B(6,9)を
ある仮想空間に、同様なプログラム群C(7,8,9)
を別の仮想空間に割り当てるのである。
(d)の様な配置も可能である。これは、プログラム6
と9の相互呼び出しだけでなく、プログラム7,8,9
の相互呼び出しが多い場合である。この際、プログラム
6,7,8,9を一つの空間に配置することは、出来な
いので、相互のアクセス頻度が高いものでグループに分
け、そのグループ毎で一つの仮想空間を共有するよう配
置する。この例では1グループを3つ以下のプログラム
で構成されるようにする(記憶保護可能な数が4のた
め)。相互呼び出しの記録及び解析は、前記と同様の方
式による。言い替えると、あるプログラムAに対して相
互のアクセス頻度の大きいプログラムの数が、メモリ保
護可能な数を越える場合に、プログラムAを例外的に複
数の仮想空間の仮想アドレスが同一の部分に重複して割
り当ててしまうことにより、プログラムA(9)との相
互のアクセス頻度の大きいプログラム群B(6,9)を
ある仮想空間に、同様なプログラム群C(7,8,9)
を別の仮想空間に割り当てるのである。
【0043】次に第2実施例と同時に、1つの仮想空間
内で相互に保護できるプログラムの数が制限されている
場合で、特に、保護モードがユーザモ−ドとスーパバイ
ザモ−ドしかない(記憶保護可能な数が2)ようなメモ
リ保護装置14においての第3の実施例を説明する。
内で相互に保護できるプログラムの数が制限されている
場合で、特に、保護モードがユーザモ−ドとスーパバイ
ザモ−ドしかない(記憶保護可能な数が2)ようなメモ
リ保護装置14においての第3の実施例を説明する。
【0044】オペレーティングシステム10内に書かれ
たプログラムの一部によりその機能が実行されるプログ
ラム割当部17は、図6のようにプログラムを割り当て
る。各仮想空間でオペレーティングシステム10が共通
に配置され、保護モードはスーパバイザモードとなって
おり、実行モードがスーパバイザモードのときだけアク
セス可能となっている。また、ユーザプログラムは、各
仮想空間にそれぞれ1個づつ、アドレス位置が他のプロ
グラムと重ならないように配置されている。各ユーザプ
ログラムはユーザモードにて、その仮想空間で実行され
る。例えば仮想空間1でユーザプログラム4を実行中、
このプログラムが、ユーザプログラム9を呼び出したと
する。オペレーティングシステム10は、この呼び出し
を受けて仮想空間6に切り替え、ユーザプログラム9の
処理が実行できるようにする。つまり、ユーザプログラ
ム4のコンテクストをセーブし、仮想空間6に切り替
え、ユーザプログラム9のコンテクストを作成し、実行
する。
たプログラムの一部によりその機能が実行されるプログ
ラム割当部17は、図6のようにプログラムを割り当て
る。各仮想空間でオペレーティングシステム10が共通
に配置され、保護モードはスーパバイザモードとなって
おり、実行モードがスーパバイザモードのときだけアク
セス可能となっている。また、ユーザプログラムは、各
仮想空間にそれぞれ1個づつ、アドレス位置が他のプロ
グラムと重ならないように配置されている。各ユーザプ
ログラムはユーザモードにて、その仮想空間で実行され
る。例えば仮想空間1でユーザプログラム4を実行中、
このプログラムが、ユーザプログラム9を呼び出したと
する。オペレーティングシステム10は、この呼び出し
を受けて仮想空間6に切り替え、ユーザプログラム9の
処理が実行できるようにする。つまり、ユーザプログラ
ム4のコンテクストをセーブし、仮想空間6に切り替
え、ユーザプログラム9のコンテクストを作成し、実行
する。
【0045】本実施例の特徴は、図3で示す従来からの
多重仮想空間でのプログラム配置と異なり各ユーザプロ
グラムが相互に空間が重ならないことが上げられる。よ
って各プログラムは、空間IDではなく仮想アドレスを
利用して直接呼び出す方法のRPC(リモートプロシジ
ャーコール)が可能となる。
多重仮想空間でのプログラム配置と異なり各ユーザプロ
グラムが相互に空間が重ならないことが上げられる。よ
って各プログラムは、空間IDではなく仮想アドレスを
利用して直接呼び出す方法のRPC(リモートプロシジ
ャーコール)が可能となる。
【0046】図6の例では、ユーザプログラム4,5,
6がクライアントプログラム、7,8,9がサーバプロ
グラムとする。従って、プログラム4,5,6は、プロ
グラム7,8,9を呼び出して処理を依頼できるが、逆
は出来ない。また、クライアントプログラムどおし、サ
ーバプログラムどおしが処理を呼び出すことはできな
い。以上をまとめると図7の表のようになる。ここで
は、この表をアクセスコントロールリスト(ACL表)
と呼ぶ。この表はオペレーティングシステム10内のメ
モリ領域に記憶されており、プログラム割当て部17に
より用いられる。これはfrom行に記されている番号
のプログラムがto列に記されているプログラムの処理
を呼び出すことができるかを記してある。○は呼び出し
可能で、×は不可である。この表は、オペレーティング
システム10のシステムコールを通して、ユーザまたは
プログラムが設定する。
6がクライアントプログラム、7,8,9がサーバプロ
グラムとする。従って、プログラム4,5,6は、プロ
グラム7,8,9を呼び出して処理を依頼できるが、逆
は出来ない。また、クライアントプログラムどおし、サ
ーバプログラムどおしが処理を呼び出すことはできな
い。以上をまとめると図7の表のようになる。ここで
は、この表をアクセスコントロールリスト(ACL表)
と呼ぶ。この表はオペレーティングシステム10内のメ
モリ領域に記憶されており、プログラム割当て部17に
より用いられる。これはfrom行に記されている番号
のプログラムがto列に記されているプログラムの処理
を呼び出すことができるかを記してある。○は呼び出し
可能で、×は不可である。この表は、オペレーティング
システム10のシステムコールを通して、ユーザまたは
プログラムが設定する。
【0047】よって、上記でのユーザプログラム4から
ユーザプログラム9を呼び出す方法の具体例は、次のよ
うになる。図15のフローチャートをもとに説明する。
ユーザプログラム4は、ユーザプログラム9のアドレス
を直接指定して呼び出す。プロセッサがその命令を実行
しようとすると(S31)、ユーザプログラム4が属す
る仮想空間1上では、ユーザプログラム9のアドレス位
置はプログラムが割り当てられておらずアクセスできな
いので、メモリ保護装置14によるアクセスチェックに
おいて、不正アクセスと判定され(S32)、トラップ
処理が発生し、プロセッサで実行途中の命令を中断し、
オペレーティングシステム10に処理が移る(S3
3)。(なお、プログラム4から同じプログラム4の処
理を呼び出す時は、メモリ保護装置14によるチェック
に引っかからないので、そのまま、プロセッサは、命令
を実行する(S40)。)ここでオペレーティングシス
テム10は、メモリ保護装置14で検知された不正アク
セスが、本当に不正アクセスなのかどうかをオペレーテ
ィングシステム10が管理しているACL表をもとに判
断する。つまり、アクセス元のプログラム番号とアクセ
ス先のプログラム番号を、中断された命令の存在するア
ドレスと、この命令によるアクセス先のアドレスからア
クセス先のプログラム番号を求め(S34)、ACL表
を引いて判断する。この場合は、from行が4の行の
to列が9の列との交点が○なのでアクセス許可される
(S35)。そこで、上記のように、ユーザプログラム
4のコンテクストをセーブする(S36)。
ユーザプログラム9を呼び出す方法の具体例は、次のよ
うになる。図15のフローチャートをもとに説明する。
ユーザプログラム4は、ユーザプログラム9のアドレス
を直接指定して呼び出す。プロセッサがその命令を実行
しようとすると(S31)、ユーザプログラム4が属す
る仮想空間1上では、ユーザプログラム9のアドレス位
置はプログラムが割り当てられておらずアクセスできな
いので、メモリ保護装置14によるアクセスチェックに
おいて、不正アクセスと判定され(S32)、トラップ
処理が発生し、プロセッサで実行途中の命令を中断し、
オペレーティングシステム10に処理が移る(S3
3)。(なお、プログラム4から同じプログラム4の処
理を呼び出す時は、メモリ保護装置14によるチェック
に引っかからないので、そのまま、プロセッサは、命令
を実行する(S40)。)ここでオペレーティングシス
テム10は、メモリ保護装置14で検知された不正アク
セスが、本当に不正アクセスなのかどうかをオペレーテ
ィングシステム10が管理しているACL表をもとに判
断する。つまり、アクセス元のプログラム番号とアクセ
ス先のプログラム番号を、中断された命令の存在するア
ドレスと、この命令によるアクセス先のアドレスからア
クセス先のプログラム番号を求め(S34)、ACL表
を引いて判断する。この場合は、from行が4の行の
to列が9の列との交点が○なのでアクセス許可される
(S35)。そこで、上記のように、ユーザプログラム
4のコンテクストをセーブする(S36)。
【0048】次に実行すべきユーザプログラム9がすで
に実行状態にあるかをオペレーティングシステム10内
で管理しているプログラム管理表をもとに判断する(S
37)。もし、存在しなければ、新しい仮想空間6を作
成し、ユ−ザプログラム9をその空間に配置し、その
他、ユ−ザプログラム9が実行できるように準備する
(S38)。最後に、仮想空間1から仮想空間6に切り
替え、ユーザプログラム9のコンテクストをロードし
(S39)、実行を再開する(S40)。
に実行状態にあるかをオペレーティングシステム10内
で管理しているプログラム管理表をもとに判断する(S
37)。もし、存在しなければ、新しい仮想空間6を作
成し、ユ−ザプログラム9をその空間に配置し、その
他、ユ−ザプログラム9が実行できるように準備する
(S38)。最後に、仮想空間1から仮想空間6に切り
替え、ユーザプログラム9のコンテクストをロードし
(S39)、実行を再開する(S40)。
【0049】ユーザプログラム9の処理が終り、呼出元
にもどる時は、逆の手順を踏み、ユーザプログラム4に
戻って処理を続ける。それ以外たとえば、ユーザプログ
ラム4が、ユーザプログラム6のアドレス位置をアクセ
スした場合、同様にメモリ保護装置14によって不正ア
クセスとして、オペレーティングシステム10に処理が
まわる。同様にオペレーティングシステム10はACL
表を参照して正しいアクセスか判断する。今度は、ユー
ザプログラム4から6へのアクセスは、表より×なので
不正と判断する。オペレーティングシステム10は、ユ
ーザプログラム4で不正アクセスが発生したものとして
不正アクセスの処理をする(S41)。
にもどる時は、逆の手順を踏み、ユーザプログラム4に
戻って処理を続ける。それ以外たとえば、ユーザプログ
ラム4が、ユーザプログラム6のアドレス位置をアクセ
スした場合、同様にメモリ保護装置14によって不正ア
クセスとして、オペレーティングシステム10に処理が
まわる。同様にオペレーティングシステム10はACL
表を参照して正しいアクセスか判断する。今度は、ユー
ザプログラム4から6へのアクセスは、表より×なので
不正と判断する。オペレーティングシステム10は、ユ
ーザプログラム4で不正アクセスが発生したものとして
不正アクセスの処理をする(S41)。
【0050】第4の実施例として上記第3の実行例を拡
張したものを説明する。図8(a)のようにユーザプロ
グラムは、その内容に応じてさらに細かくいくつかの領
域に分かれている。つまり、実行命令コードが存在して
いるテキスト領域、実行中にデータを読み書きするデー
タ領域である。このように各領域に存在するそれぞれを
ユ−ザプログラムと呼び、デ−タ領域も一種のユ−ザプ
ログラムである。メモリ保護装置は、実施例3のような
スーパバイザモードとユーザモードをもっているがユー
ザモードはさらに、実行モード、読み込みモード書き込
みモードをもっており、実行権を持つプログラムからの
指定された動作のみアクセス可能にできる。このような
設定を実行するための方法を以下に示す。
張したものを説明する。図8(a)のようにユーザプロ
グラムは、その内容に応じてさらに細かくいくつかの領
域に分かれている。つまり、実行命令コードが存在して
いるテキスト領域、実行中にデータを読み書きするデー
タ領域である。このように各領域に存在するそれぞれを
ユ−ザプログラムと呼び、デ−タ領域も一種のユ−ザプ
ログラムである。メモリ保護装置は、実施例3のような
スーパバイザモードとユーザモードをもっているがユー
ザモードはさらに、実行モード、読み込みモード書き込
みモードをもっており、実行権を持つプログラムからの
指定された動作のみアクセス可能にできる。このような
設定を実行するための方法を以下に示す。
【0051】図9は本実行例におけるACL表である。
前実施例と同様、この表は、オペレーティングシステム
10が管理し、表の設定は、システムコールを通じて行
う。この表は、from行の番号のプログラムが、to
列の番号のプログラムにどのようなモードでアクセス可
能かを記号で表している。Eは実行モード、Rは読み込
みモード、Wは書き込みモードでそれぞれ可能であるこ
とを示しており、この3つの組み合わせが可能となって
いる。また、Xは、どのモードでも一切アクセス禁止で
あることを示している。また、from行のallと
は、どのプログラムからも同じくアクセスできること
(デフォルト設定)を示している。尚、from行にエ
ントリするプログラムは、実行権を持つ(実行命令コー
ドが存在する)プログラムのみとしてもよい。即ち、こ
のACL表は、ユーザプログラム(データを含む)に対
応して、このユーザプログラム(データを含む)に対し
て実行権を持つユーザプログラムがアクセス可能か否
か、許されるアクセスの種類は何かを表す情報(アクセ
ス情報と呼ぶ)を記憶するものである。
前実施例と同様、この表は、オペレーティングシステム
10が管理し、表の設定は、システムコールを通じて行
う。この表は、from行の番号のプログラムが、to
列の番号のプログラムにどのようなモードでアクセス可
能かを記号で表している。Eは実行モード、Rは読み込
みモード、Wは書き込みモードでそれぞれ可能であるこ
とを示しており、この3つの組み合わせが可能となって
いる。また、Xは、どのモードでも一切アクセス禁止で
あることを示している。また、from行のallと
は、どのプログラムからも同じくアクセスできること
(デフォルト設定)を示している。尚、from行にエ
ントリするプログラムは、実行権を持つ(実行命令コー
ドが存在する)プログラムのみとしてもよい。即ち、こ
のACL表は、ユーザプログラム(データを含む)に対
応して、このユーザプログラム(データを含む)に対し
て実行権を持つユーザプログラムがアクセス可能か否
か、許されるアクセスの種類は何かを表す情報(アクセ
ス情報と呼ぶ)を記憶するものである。
【0052】以下に具体的に、この表の内容を説明す
る。この例では、2つの領域(テキスト領域4とデータ
領域5)から構成されている1つのクライアントプログ
ラムと、2つの領域(テキスト領域7とデータ領域8)
から構成されている1つのサーバプログラム、そのサー
バプログラムが管理する共通データ領域6が存在してい
るものである。
る。この例では、2つの領域(テキスト領域4とデータ
領域5)から構成されている1つのクライアントプログ
ラムと、2つの領域(テキスト領域7とデータ領域8)
から構成されている1つのサーバプログラム、そのサー
バプログラムが管理する共通データ領域6が存在してい
るものである。
【0053】ユーザプログラムテキスト4は、この領域
に実行命令コードが存在しており、プログラムの処理を
実行できる。実行できる範囲は、ユーザプログラムテキ
スト4自身とユーザプログラムテキスト7へのRPC実
行ができる。ユーザプログラム4での実行中は、ユーザ
プログラムデータ5の領域のデータへの読み書きと共通
データ領域6への読み込みが可能となっている。
に実行命令コードが存在しており、プログラムの処理を
実行できる。実行できる範囲は、ユーザプログラムテキ
スト4自身とユーザプログラムテキスト7へのRPC実
行ができる。ユーザプログラム4での実行中は、ユーザ
プログラムデータ5の領域のデータへの読み書きと共通
データ領域6への読み込みが可能となっている。
【0054】ユーザプログラムデータ5には、ユーザプ
ログラム4からの読み書きは許可されるが、それ以外か
らのアクセスは許可されない。また、この領域に実行プ
ログラムを置いて実行はできない。
ログラム4からの読み書きは許可されるが、それ以外か
らのアクセスは許可されない。また、この領域に実行プ
ログラムを置いて実行はできない。
【0055】共通データ6は、デフォルト設定で読み込
み可の設定がなされており、どの領域からの読み込み参
照は許可されている。ただし、書き込みは、プログラム
7からしか出来ない。
み可の設定がなされており、どの領域からの読み込み参
照は許可されている。ただし、書き込みは、プログラム
7からしか出来ない。
【0056】ユーザプログラムテキスト7は、誰からも
RPCされうる。ここから他の領域へは、共通データ6
とユーザプログラムデータ8へ両方、読み書き可能であ
る。ユーザプログラムデータ8は、ユーザプログラム7
の専用データ領域である。
RPCされうる。ここから他の領域へは、共通データ6
とユーザプログラムデータ8へ両方、読み書き可能であ
る。ユーザプログラムデータ8は、ユーザプログラム7
の専用データ領域である。
【0057】オペレーティングシステム10は、以上の
アクセス権の管理を次のように行う。ユーザプログラム
4の実行のために,ACL表を参照し、ユーザプログラ
ムテキスト4とその領域から読み書きモードでアクセス
可能な領域とを同時に1つの仮想空間に張り付ける。そ
の結果を図8(b)に示す。左側が、仮想空間に配置さ
れたプログラム/データの内容、右側は、その仮想空間
に対応するアクセスモードである。なお、Sとは、スー
パバイザモードにセットされていることを示す。
アクセス権の管理を次のように行う。ユーザプログラム
4の実行のために,ACL表を参照し、ユーザプログラ
ムテキスト4とその領域から読み書きモードでアクセス
可能な領域とを同時に1つの仮想空間に張り付ける。そ
の結果を図8(b)に示す。左側が、仮想空間に配置さ
れたプログラム/データの内容、右側は、その仮想空間
に対応するアクセスモードである。なお、Sとは、スー
パバイザモードにセットされていることを示す。
【0058】ユーザプログラム4がユーザプログラム7
にRPCした時で説明する。プログラム4は、プログラ
ム7の領域に実行制御を移そうとRPC命令を実行す
る。すると図8(b)のアクセスモードに示されるよう
に、その空間はアクセス禁止になっている。そこでメモ
リ保護装置14で不正アクセスとして一度検知される。
次にオペレーティングシステム10に制御が移る。オペ
レーティングシステム10では、このメモリ保護装置1
4で検知されたアクセスを解析する。ACL表を見る
と、プログラム4から7への実行は許可されている。よ
って、仮想空間の保護属性を変更し、図8(c)の様に
する。
にRPCした時で説明する。プログラム4は、プログラ
ム7の領域に実行制御を移そうとRPC命令を実行す
る。すると図8(b)のアクセスモードに示されるよう
に、その空間はアクセス禁止になっている。そこでメモ
リ保護装置14で不正アクセスとして一度検知される。
次にオペレーティングシステム10に制御が移る。オペ
レーティングシステム10では、このメモリ保護装置1
4で検知されたアクセスを解析する。ACL表を見る
と、プログラム4から7への実行は許可されている。よ
って、仮想空間の保護属性を変更し、図8(c)の様に
する。
【0059】具体的には、オペレーティングシステム1
0は、プログラム7が属する仮想空間が既に存在してい
るのでない場合、新しい仮想空間を用意し、そこに、A
CL表を参照しながらプログラム7とその領域から読み
書きモードでアクセス可能な領域とを配置する。さらに
ACL表のfrom行のプログラム7の所にセットされ
ているアクセス情報を仮想空間の保護属性として付加す
る。ただし、制御を移されたプログラム(この場合はプ
ログラム7)以外のプログラム領域への実行権はセット
しない。例えば、プログラム4への実行制御の時に作成
される仮想空間の保護属性のセットは、ACL表のfr
om行のプログラム4のところのアクセス情報をセット
する。その中で、プログラム7の領域の実行権はACL
表には存在するが、仮想空間への保護属性のセットの際
には、実行権のセットは、プログラム4の領域のところ
だけで、それ以外のプログラム7の領域には実行権はセ
ットしない。即ち、1仮想空間には、ユーザモードの実
行権を持つプログラムが存在するのは、高々1つの領域
だけとなる。この場合のユーザモードの実行権を持つプ
ログラムとは、他の領域へ読み書きする可能性がある
か、あるいは他のプログラムを実行する可能性があるも
のである。
0は、プログラム7が属する仮想空間が既に存在してい
るのでない場合、新しい仮想空間を用意し、そこに、A
CL表を参照しながらプログラム7とその領域から読み
書きモードでアクセス可能な領域とを配置する。さらに
ACL表のfrom行のプログラム7の所にセットされ
ているアクセス情報を仮想空間の保護属性として付加す
る。ただし、制御を移されたプログラム(この場合はプ
ログラム7)以外のプログラム領域への実行権はセット
しない。例えば、プログラム4への実行制御の時に作成
される仮想空間の保護属性のセットは、ACL表のfr
om行のプログラム4のところのアクセス情報をセット
する。その中で、プログラム7の領域の実行権はACL
表には存在するが、仮想空間への保護属性のセットの際
には、実行権のセットは、プログラム4の領域のところ
だけで、それ以外のプログラム7の領域には実行権はセ
ットしない。即ち、1仮想空間には、ユーザモードの実
行権を持つプログラムが存在するのは、高々1つの領域
だけとなる。この場合のユーザモードの実行権を持つプ
ログラムとは、他の領域へ読み書きする可能性がある
か、あるいは他のプログラムを実行する可能性があるも
のである。
【0060】以上説明したように,プログラム7を実行
の際の仮想空間への保護属性のセットは、具体的には、
プログラム6の領域は、RW権(読み書き権)、プログ
ラム8の領域は、RW権(読み書き権)の保護属性とし
てセットする.結果として、図8(c)ような保護属性
をセットする。そしてプログラム7を実行する。実行が
終わって、呼び出し元のプログラム4へ戻るときは、同
様にオペレーティングシステム10で図8(b)の状態
に戻される。
の際の仮想空間への保護属性のセットは、具体的には、
プログラム6の領域は、RW権(読み書き権)、プログ
ラム8の領域は、RW権(読み書き権)の保護属性とし
てセットする.結果として、図8(c)ような保護属性
をセットする。そしてプログラム7を実行する。実行が
終わって、呼び出し元のプログラム4へ戻るときは、同
様にオペレーティングシステム10で図8(b)の状態
に戻される。
【0061】尚、ここでは1つの仮想空間に割り当てる
実行権を持つユーザプログラムの数を高々1個とした
が、ACL表を参照して、同一空間内に割り当てる全て
のユーザプログラム(データ)に対する読み書き権が一
致するような実行権を持つユーザプログラムが複数存在
する場合には、例外的にこれら複数の実行権を持つユー
ザプログラムを同一空間内に割り当てても良い。
実行権を持つユーザプログラムの数を高々1個とした
が、ACL表を参照して、同一空間内に割り当てる全て
のユーザプログラム(データ)に対する読み書き権が一
致するような実行権を持つユーザプログラムが複数存在
する場合には、例外的にこれら複数の実行権を持つユー
ザプログラムを同一空間内に割り当てても良い。
【0062】本実施例では、RPCによるプログラム間
の実行制御の移動を、メモリ保護装置からの不正アクセ
ス検出機構を用いて検知し、オペレーティングシステム
10に処理を切り替え、オペレーティングシステム10
で仮想空間の保護属性の変更を行っているが、メモリ保
護装置14による不正アクセス検出機構を利用する方式
は通常は、軽くはない処理なので、RPC専用のシステ
ムコールを用意し、違うプログラムにRPCする度にそ
のシステムコールによって、オペレーティングシステム
10に処理を切り替え、そこで、仮想空間の保護属性の
変更と実行の切り替えの処理を行う構成も可能である。
の実行制御の移動を、メモリ保護装置からの不正アクセ
ス検出機構を用いて検知し、オペレーティングシステム
10に処理を切り替え、オペレーティングシステム10
で仮想空間の保護属性の変更を行っているが、メモリ保
護装置14による不正アクセス検出機構を利用する方式
は通常は、軽くはない処理なので、RPC専用のシステ
ムコールを用意し、違うプログラムにRPCする度にそ
のシステムコールによって、オペレーティングシステム
10に処理を切り替え、そこで、仮想空間の保護属性の
変更と実行の切り替えの処理を行う構成も可能である。
【0063】また、本実施例では、保護属性の変更を行
うのに、オペレーティングシステム10が、新しい仮想
空間を用意し、その仮想空間に新しい保護属性を設定し
ていくという方式である。この方式の特徴は、新規に属
性をすべてセットするので、作成時間がかかるのが難点
であるが、以前の仮想空間上の古い保護属性は残るの
で、RPCでの処理が終わって以前のプログラムに戻る
際には、簡単に古い状態に戻せる。別の方式として、新
しい仮想空間を用意せず、現仮想空間で保護属性を変え
る方式も可能である。この場合は、RPC時の処理が軽
くすむが、戻り時も処理の時間がかかる。
うのに、オペレーティングシステム10が、新しい仮想
空間を用意し、その仮想空間に新しい保護属性を設定し
ていくという方式である。この方式の特徴は、新規に属
性をすべてセットするので、作成時間がかかるのが難点
であるが、以前の仮想空間上の古い保護属性は残るの
で、RPCでの処理が終わって以前のプログラムに戻る
際には、簡単に古い状態に戻せる。別の方式として、新
しい仮想空間を用意せず、現仮想空間で保護属性を変え
る方式も可能である。この場合は、RPC時の処理が軽
くすむが、戻り時も処理の時間がかかる。
【0064】尚、実施例1〜4で述べたメモリ保護装置
の処理、TLB内のラインの有無の検査、無効化ビット
のON/OFFの操作等はいずれも簡単な構成で並列に
実行できるため、キャッシュの入れ換え等に依存する従
来の方式と比べてプログラム実行時に実行速度が損なわ
れる問題を大幅に解消することができる。
の処理、TLB内のラインの有無の検査、無効化ビット
のON/OFFの操作等はいずれも簡単な構成で並列に
実行できるため、キャッシュの入れ換え等に依存する従
来の方式と比べてプログラム実行時に実行速度が損なわ
れる問題を大幅に解消することができる。
【0065】また、上述したように論理キャッシュに対
するアクセスをユーザプログラムから共通のアドレスで
実現するだけではなく、デバイスやファイル、共有ライ
ブラリといった資源に関するアクセスも本実施例の方式
で実現することができる。
するアクセスをユーザプログラムから共通のアドレスで
実現するだけではなく、デバイスやファイル、共有ライ
ブラリといった資源に関するアクセスも本実施例の方式
で実現することができる。
【0066】
【発明の効果】以上詳述したように本発明によれば、複
数の実行プログラムが、論理アドレスが重複しないよう
にメモリ上に割り当てられているため、コンテクスト切
り替えを高速に行うことができ、さらにTLBやキャッ
シュを有効に利用して多重プログラムを高速実行するこ
とのできる仮想記憶制御装置が実現できる。
数の実行プログラムが、論理アドレスが重複しないよう
にメモリ上に割り当てられているため、コンテクスト切
り替えを高速に行うことができ、さらにTLBやキャッ
シュを有効に利用して多重プログラムを高速実行するこ
とのできる仮想記憶制御装置が実現できる。
【図1】 本発明の一実施例に係る仮想記憶制御装置の
構成を示す図。
構成を示す図。
【図2】 本実施例に係る仮想空間内のプログラムの配
置を示す図。
置を示す図。
【図3】 従来の仮想空間とプログラムとの関係を示す
図。
図。
【図4】 TLB15の内容を示す図。
【図5】 本実施例装置におけるプログラム実行手順を
示すフロー図。
示すフロー図。
【図6】 本発明の第3の実施例に係る仮想空間内のプ
ログラムの配置を示す図。
ログラムの配置を示す図。
【図7】 図6の例におけるプログラム間のアクセス権
の関係を示す図。
の関係を示す図。
【図8】 本発明の第4の実施例に係る仮想空間内のプ
ログラムの配置を示す図。
ログラムの配置を示す図。
【図9】 図8の例におけるプログラム間のアクセス権
の関係を表す図。
の関係を表す図。
【図10】 単一仮想空間方式の場合のプログラム管理
テーブルを示す図。
テーブルを示す図。
【図11】 単一仮想空間方式におけるプログラム割当
て部の動作を示す図。
て部の動作を示す図。
【図12】 多重仮想空間方式の場合のプログラム管理
テーブルを示す図。
テーブルを示す図。
【図13】 仮想空間管理表を示す図。
【図14】 多重仮想空間方式におけるプログラム割当
て部の動作を示す図。
て部の動作を示す図。
【図15】 本発明の第3の実施例に係るリモートプロ
シジャーコールの処理の流れを示す図。
シジャーコールの処理の流れを示す図。
11 プロセッサ 12 論理キャッシュ 13 メモリ 14 メモリ保護装置 15 TLB 16 メモリ・インタフェース 17 プログラム割当て部 18 プログラム実行部 19 メモリアクセス実行部 20 アドレス領域範囲記憶部 21 不正アクセス検出部 1・2・3・4・5・6 仮想空間 10 OS 4・5・6・7・8・9 ユーザプログラム
Claims (5)
- 【請求項1】 あるユーザプログラムの実行中に当該ユ
ーザプログラムに属さない仮想アドレスへの不正アクセ
スが起こるか否かを検出するメモリ保護手段と、 ユーザプログラムの実行前に、このメモリ保護手段での
検出が有効に行われる範囲内の数のユーザプログラムに
対して、その仮想アドレス領域が相互に重複しないよう
に仮想アドレスを割り当てるメモリ割当て手段と、 このメモリ割当て手段で割り当てた仮想アドレスを用
い、前記メモリ保護手段により不正アクセスが検出され
なかった場合に、キャッシュ内のデータに対してアクセ
スを行いながら、前記ユーザプログラムを実行する実行
手段とを具備したことを特徴とする仮想記憶制御装置。 - 【請求項2】 あるユーザプログラムの実行中に当該ユ
ーザプログラムに属さない仮想アドレスへの不正アクセ
スが起こるか否かを同一仮想空間内で検出するメモリ保
護手段と、 ユーザプログラムの実行前に、複数の仮想空間に、同一
仮想空間内に割り当てるユーザプログラムの数が前記メ
モリ保護手段での検出が有効に行われる範囲内の数にな
るようユーザプログラムを割り振り、前記各ユーザプロ
グラムの仮想アドレス領域が相互に重複しないように、
各ユーザプログラムに対して仮想アドレスを割り当てる
メモリ割当て手段と、 ユーザプログラム切り替え時に、この切り替えが同一仮
想空間内のものか異なる仮想空間にまたがるものかを識
別する識別手段と、 この識別手段により異なる仮想空間にまたがると識別さ
れた場合に、切り替え元のユーザプログラムに属する仮
想アドレスに対応するキャッシュ内のデータを無効化す
る無効化手段と、 前記メモリ割当て手段で割り当てた仮想アドレスを用
い、前記メモリ保護手段により不正アクセスが検出され
ずかつ前記無効化手段によりデータが無効化されていな
かった場合に、キャッシュ内のデータに対してアクセス
を行いながら、前記ユーザプログラムを実行する実行手
段とを具備したことを特徴とする仮想記憶制御装置。 - 【請求項3】 前記無効化手段は、キャッシュ内のデー
タではなくTLB内のデータを無効化し、前記実行手段
は、前記無効化手段により無効化されているかどうかの
検査を、キャッシュ内のデータに対応する仮想アドレス
の管理を行っているTLBに対して、キャッシュ内のデ
ータに対するアクセスと並行して行うことを特徴とする
請求項2記載の仮想記憶制御装置。 - 【請求項4】 前記メモリ割当て手段は、ユーザプログ
ラム相互のアクセス頻度を検出し、このアクセス頻度が
大きいユーザプログラム同士を優先的に同一空間内に割
り当てる手段をも具備するものであることを特徴とする
請求項2記載の仮想記憶制御装置。 - 【請求項5】 前記メモリ割当て手段は、他のユ−ザプ
ログラムへのアクセスの可能性を有する実行権限を持つ
ユーザプログラムを、1つの仮想空間にたかだか1つ割
り当てるものであることを特徴とする請求項2記載の仮
想記憶制御装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP05347093A JP3485940B2 (ja) | 1992-03-31 | 1993-03-15 | 仮想記憶制御装置及び方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4-76776 | 1992-03-31 | ||
JP7677692 | 1992-03-31 | ||
JP05347093A JP3485940B2 (ja) | 1992-03-31 | 1993-03-15 | 仮想記憶制御装置及び方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0652054A true JPH0652054A (ja) | 1994-02-25 |
JP3485940B2 JP3485940B2 (ja) | 2004-01-13 |
Family
ID=26394185
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP05347093A Expired - Fee Related JP3485940B2 (ja) | 1992-03-31 | 1993-03-15 | 仮想記憶制御装置及び方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3485940B2 (ja) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6091584A (en) * | 1994-12-28 | 2000-07-18 | Mitsubishi Denki Kabushiki Kaisha | Recording medium with a band attached to both sides of a shutter for opening/closing the shutter |
JP2002244921A (ja) * | 2001-02-19 | 2002-08-30 | Sony Corp | データ処理装置 |
JP2004118866A (ja) * | 1997-08-28 | 2004-04-15 | Microsoft Corp | 信頼されないプログラムを実行するための方法 |
JP2005301949A (ja) * | 2004-03-19 | 2005-10-27 | Toshiba Kyaria Kk | マイクロコンピュータ |
JP2006293516A (ja) * | 2005-04-07 | 2006-10-26 | Matsushita Electric Ind Co Ltd | バスアクセス制御装置 |
JP2007287103A (ja) * | 2006-04-20 | 2007-11-01 | Nec Electronics Corp | マイクロコンピュータ及びメモリアクセスの制御方法 |
JP2011222055A (ja) * | 2011-08-12 | 2011-11-04 | Renesas Electronics Corp | マイクロコンピュータ及びメモリアクセスの制御方法 |
US8141057B2 (en) | 2001-02-16 | 2012-03-20 | Sony Corporation | Data processing apparatus and associated method |
WO2013111769A1 (ja) * | 2012-01-27 | 2013-08-01 | 京セラドキュメントソリューションズ株式会社 | メモリー管理装置および画像処理装置 |
-
1993
- 1993-03-15 JP JP05347093A patent/JP3485940B2/ja not_active Expired - Fee Related
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6330125B2 (en) | 1994-12-28 | 2001-12-11 | Mitsubishi Denki Kabushiki Kaisha | Exchangeable storage apparatus, recording medium drive actuator, head drive actuator and recording medium cartridge |
US6510026B2 (en) | 1994-12-28 | 2003-01-21 | Mitsubishi Denki Kabushiki Kaisha | Exchangeable storage apparatus, recording medium drive actuator, head drive actuator, and recording medium cartridge |
US6091584A (en) * | 1994-12-28 | 2000-07-18 | Mitsubishi Denki Kabushiki Kaisha | Recording medium with a band attached to both sides of a shutter for opening/closing the shutter |
JP4528517B2 (ja) * | 1997-08-28 | 2010-08-18 | マイクロソフト コーポレーション | 信頼されないプログラムを実行するための方法 |
JP2004118866A (ja) * | 1997-08-28 | 2004-04-15 | Microsoft Corp | 信頼されないプログラムを実行するための方法 |
US8141057B2 (en) | 2001-02-16 | 2012-03-20 | Sony Corporation | Data processing apparatus and associated method |
JP2002244921A (ja) * | 2001-02-19 | 2002-08-30 | Sony Corp | データ処理装置 |
JP4617581B2 (ja) * | 2001-02-19 | 2011-01-26 | ソニー株式会社 | データ処理装置 |
JP2005301949A (ja) * | 2004-03-19 | 2005-10-27 | Toshiba Kyaria Kk | マイクロコンピュータ |
JP4669666B2 (ja) * | 2004-03-19 | 2011-04-13 | 東芝キヤリア株式会社 | マイクロコンピュータ |
JP4591163B2 (ja) * | 2005-04-07 | 2010-12-01 | パナソニック株式会社 | バスアクセス制御装置 |
JP2006293516A (ja) * | 2005-04-07 | 2006-10-26 | Matsushita Electric Ind Co Ltd | バスアクセス制御装置 |
US9003148B2 (en) | 2006-04-20 | 2015-04-07 | Renesas Electronics Corporation | Microcomputer and method for controlling memory access |
JP2007287103A (ja) * | 2006-04-20 | 2007-11-01 | Nec Electronics Corp | マイクロコンピュータ及びメモリアクセスの制御方法 |
US8312238B2 (en) | 2006-04-20 | 2012-11-13 | Renesas Electronics Corporation | Microcomputer and method for controlling memory access |
US9904631B2 (en) | 2006-04-20 | 2018-02-27 | Renesas Electronics Corporation | Microcomputer and method for controlling memory access |
US9262341B2 (en) | 2006-04-20 | 2016-02-16 | Renesas Electronics Corporation | Microcomputer and method for controlling memory access |
JP2011222055A (ja) * | 2011-08-12 | 2011-11-04 | Renesas Electronics Corp | マイクロコンピュータ及びメモリアクセスの制御方法 |
CN104081365A (zh) * | 2012-01-27 | 2014-10-01 | 京瓷办公信息系统株式会社 | 存储器管理装置和图像处理装置 |
EP2808798A4 (en) * | 2012-01-27 | 2015-07-22 | Kyocera Document Solutions Inc | MEMORY MANAGEMENT DEVICE AND IMAGE PROCESSING DEVICE |
JP2013156781A (ja) * | 2012-01-27 | 2013-08-15 | Kyocera Document Solutions Inc | メモリー管理装置および画像処理装置 |
CN104081365B (zh) * | 2012-01-27 | 2016-09-28 | 京瓷办公信息系统株式会社 | 存储器管理装置和图像处理装置 |
WO2013111769A1 (ja) * | 2012-01-27 | 2013-08-01 | 京セラドキュメントソリューションズ株式会社 | メモリー管理装置および画像処理装置 |
Also Published As
Publication number | Publication date |
---|---|
JP3485940B2 (ja) | 2004-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9430402B2 (en) | System and method for providing stealth memory | |
JP5581403B2 (ja) | メモリのセキュア領域および非セキュア領域へのセキュアモードページテーブルデータの格納 | |
US4775955A (en) | Cache coherence mechanism based on locking | |
CA2050834C (en) | Multiple controlled data-space facility | |
US8943288B2 (en) | Method of controlling memory access | |
US5892944A (en) | Program execution and operation right management system suitable for single virtual memory scheme | |
GB2248327A (en) | Fixed protection key for real storage memory | |
JPH05143453A (ja) | 分散キヤツシユの階層無効化方法 | |
EP3830719B1 (en) | Binary search procedure for control table stored in memory system | |
US5293597A (en) | Concurrent context memory management unit | |
JP3485940B2 (ja) | 仮想記憶制御装置及び方法 | |
US7051164B2 (en) | Coherence-free cache | |
JP2001056783A (ja) | プログラム単位メモリ属性管理方式 | |
JP4047281B2 (ja) | キャッシュメモリをメインメモリに同期させる方法 | |
EP0220451B1 (en) | A cache coherence mechanism based on locking | |
US11200175B2 (en) | Memory accessor invailidation | |
EP0282213A2 (en) | Concurrent context memory management unit | |
JPH0736713A (ja) | プログラム実行管理装置 | |
JP2001184242A (ja) | キャッシュ制御方法および計算機システム | |
JPH01125638A (ja) | キャッシュメモリ装置 | |
CN118210622A (zh) | 一种内存分配方法及计算设备 | |
JPH04357544A (ja) | データ処理装置およびそのためのメモリ割当方法 | |
JPS6036617B2 (ja) | 情報処理システム | |
Marks | Notes to students | |
Lang | Single Address Space Operating Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081024 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081024 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091024 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |