(57)【特許請求の範囲】
【請求項１】
主記憶上のメモリについて所定の管理単位でメモリの実行、読出、書込の各アクセス属性を保持し、プログラムによるメモリの前記各アクセスの可否をチェック後、許可／抑止するアクセスチェック機構を備えた処理装置のメモリアクセス属性管理方式において、プログラムのメモリへのロード、実行、停止、終了を制御監視するプログラム制御部と、これの指示により、プログラムロード時、対象プログラムファイルの付属情報に基づきプログラムに必要なメモリ領域を管理単位で割付け、そのメモリアクセス属性を生成し属性表として登録するプログラム領域生成部と、ロードされているプログラムについてプログラム毎の属性表を保持するメモリアクセス属性領域と、実行中のプログラムの前記属性表の写しとテンポラリのメモリアクセス属性をそれぞれ第１、２のメモリ制御手段に保持しプログラムのメモリアクセスの種類をチェックし許可抑制するアクセスチェック機構と、プログラムが、割当てられたメモリをアドレス、付与属性を指定し呼出し先のプログラムに貸出す命令手段とを含み、前記プログラム制御部はプログラムの実行開始に際し、アクセスチェック機構に対し、そのプログラムの属性表を、メモリアクセス属性領域より、第１のメモリ制御レジスタに設定させ、アクセスチェック機構はプログラム単位でチェックをするとともに、前記貸出し命令を受けると指定するアドレスの属性を第１のメモリ制御手段より得、付与属性が該属性の範囲以下であればこれを第２のメモリ制御手段に設定し次のプログラムのメモリアクセスチェックを第１と第２のメモリ制御手段のアクセス属性を加えて行うことを特徴とするメモリアクセス属性管理方式。
【請求項２】
論理アドレスを主記憶上のメモリアドレスに変換するアドレス変換表、メモリ管理単位でメモリの実行、読出、書込の各アクセス属性を保持する属性表、実行状態のプログラムに関しアドレス変換表の写しを持ちメモリ管理単位で前記アドレス変換する機構、プログラムのメモリ管理単位への前記各アクセスをチェックする機構を備えた処理装置のメモリアクセス属性管理方式において、プログラムのロード、実行、停止、終了を制御し、ロードするプログラム名に一意にプログラム識別を付与し、メモリの確保を指示するプログラム制御部と、前記指示を受けプログラムファイルの付属情報に基づきプログラムが使用する論理アドレス情報に対し管理単位毎にメモリアクセス属性を生成しメモリ管理単位番号を割付け、メモリ管理単位番号をアドレス変換表のエントリに登録し、生成したメモリアクセス属性を属性表の前記エントリにプログラム識別とともに登録するプログラム領域生成部と、前記各プログラムの管理単位毎の論理アドレスを保持する属性領域と、前記アドレス変換機構と、実行状態の複数プログラムに関し属性表のプログラム識別、メモリアクセス属性の写しを第１のメモリ制御手段の対応エントリに、テンポラリのメモリアクセス属性を第２のメモリ制御手段の前記対応エントリに保持するとともに実行中のプログラムのメモリ制御手段のエントリを指定するカレント指定手段を有すアクセスチェック機構と、プログラムが割当てられたメモリに関し論理アドレス、付与属性を指定し他プログラムに貸出す命令手段とを含み、アクセスチェック機構は命令読出しアドレスに対し実行可の属性をもつ第１のメモリ制御手段のエントリのプログラム識別をカレント指定手段に設定し、以降のデータアクセスアドレスに対応するエントリのプログラム識別がカレント識別と一致することを含めてアクセスチェックをし、貸出設定では付与属性がアドレスに対応する第１のメモリ制御手段のエントリの属性の範囲以下であればこれを第２のメモリ制御手段に設定することを特徴とするメモリアクセス属性管理方式。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は情報処理装置のメモリアクセス属性管理方式に関する。
【０００２】
【従来の技術】
従来より、情報処理装置のメモリ属性管理方式としては、メモリを管理単位であるページに分割し、プログラムの指定する仮想メモリ空間を管理単位でページにアサインするページテーブル（以下ＰＴと省略）の各ページ毎にそのページの保護レベルとしてシステムエリア／読出可ユーザエリア／読出し書込み可ユーザエリアのいずれかを設定しておき、プログラムの実行レベル値（メモリアクセス権レベル値）を特権モード（レベル０〜２）と非特権モード（レベル３）としメモリアクセスの都度アクセス対象ページの上記保護レベルを得、実行レベルが特権モードであれば無条件にアクセス可とし、非特権モードではアクセスの種類（読み出し、書き込み）に応じユーザエリアのみアクセス可とする方式が広く用いられている。即ち、非特権モードのあるプログラムが特権モード範囲プログラムにアサインされたページや他の非特権モードプログラムにアサインされたページについてアクセスすることを禁止し、メモリの保護が行われている。
【０００３】
【発明が解決しようとする課題】
しかし、この従来技術は以下の問題点がある。特権モードでは、他のプログラムが使用しているメモリ領域を使用することが可能である。非特権モードのプログラムが特権モードのプログラムを呼び出した場合、特権モードのプログラムは他のプログラムのメモリ領域にアクセスすることが可能であるため、他のプログラム領域を破壊することが可能となる。
【０００４】
図１３を参照しこの一例を示す。メモリには上位番地よりスーパーバイザ、Ｉ／Ｏ処理等のシステムプログラム、ユーザレベルのプログラムＡ、Ａのワークエリア、Ａの読み込みバッファ、ユーザレベルのプログラムＢ、Ｂのデータエリアが配置されている。スーパーバイザ、システムプログラム、ユーザレベルのプログラムのそれぞれの実行リングレベル（ＲＬ）は０、１、３である。従ってプログラムＡはスーパーバイザ、システムプログラムにアサインされたページにはアクセス出来ない（少なくとも書き込み不可）。プログラムＡはＩ／Ｏ処理に依頼する際のパラメータ（ファイル名、ブロックアドレス、ブロック数、読込みバッファのアドレスＢＵＦ）をＡのワークエリアの末尾部分に設定しＩ／Ｏ処理にこのパラメータ値を直接若しくはこの末尾部分アドレスを渡し入力ファイルの所定ブロックの読込みを依頼する。読み込まれたデータをワークエリア前半に格納されている条件に従い検索し、その結果をワークエリア後半に作成し、前記パラメータとともにワークファイル４１にセーブし、ワークエリアを用い他の処理（例えば他の入力ファイルのデータの検索）をする。この処理が終了し、前記セーブした結果とパラメータをリストアするがここでファイルリ−ドエラーが最後の方で発生しエラー処理に入る。しかしエラー処理に問題があり処理続行可と判断し入力ファイルから次のブロックを読み込む為に完全にリストア出来てないパラメータ情報を渡しＩ／Ｏ処理に依頼する。ここでパラメータの内前記ＢＵＦの一部が誤ったものであればＩ／Ｏ処理はこれを受付け処理し誤ったＢＵＦが指しているＢのデータエリアに書込みこれを破壊することが起こりうる。（プログラムＡは読み込みバッファのセグメント記述子をディスクリプタ表から汎用レジスタにロードしこのＢＵＦに控え、Ｉ／Ｏ処理を呼び出す前にＢＵＦをデータセグメントレジスタにロードするものとする。或いはＡのワークエリア、読み込みバッファ、Ｂのデータエリアの全てが本来Ｂのデータセグメントで、Ｂが検索処理をＡに依頼した際、検索条件と結果用のエリアをローカルにサイズ指定しＡに渡し、Ｂはサイズ以降のエリアに次の検索条件を作成しているとする）
このような従来の記憶保護方式の欠点を回避する方式としては、例えば特開昭６０−７３７６２に開示されている様な方式が考えられる。引用の方式は、実行プログラムにその種類に応じＡ〜Ｄの実行レベルを与え、メモリのブロック単位にＡ〜Ｄの各レベル毎にアクセスを許可／禁止するフラグを記憶保護レジスタに設定し、実行プログラムによるメモリアクセスの都度アクセスアドレスによりブロック番号を算出しブロック番号と実行レベル値で記憶保護レジスタを索引しフラグ値を得、そのフラグ値に応じメモリアクセス動作を許可／抑止する方式である。制御記憶の例で１６ブロックの上位１ブロックはＡ〜Ｄの全レベルが書き込み可で他のブロックはＡ〜Ｃレベルが排他的に書き込み可に設定された例が示されている。
【０００５】
従って、上記従来記憶保護方式より多少改善されているものの実行されるプログラムを実行レベルでグループ化しメモリのブッロックのメモリ属性をレベルに対し設定しているので同一実行レベルのプログラム間ではそれぞれにアサインされたブロックに対する保護は出来てない。又、上位１ブロックは各レベルのプログラムの交信エリアと解釈するが、交信エリアが固定されているので、これを情報処理装置の通常プログラムがアクセスするメモリの記憶保護方式とした場合プログラムに対する自由度が低下することになる。
【０００６】
本発明は、以上の問題点を解決する為に上記実行レベル方式でなくプログラムによるメモリアクセスの都度アクセスする対象の管理単位（例えばページ）がそのプログラムに与えられた管理単位であるかチェックし、他プログラムを呼び出しデータ等を受け取る際には自プログラムに与えられた管理単位を呼び出し先に一時貸し出すという思想に基づくプログラム単位のメモリ属性管理方式を提供するものである。
【０００７】
【課題を解決するための手段】
【０００８】
本発明の第１のメモリアクセス属性管理方式は、主記憶上のメモリについて所定の管理単位でメモリの実行、読出、書込の各アクセス属性を保持し、プログラムによるメモリの前記各アクセスの可否をチェック後、許可／抑止するアクセスチェック機構を備えた処理装置のメモリアクセス属性管理方式において、プログラムのメモリへのロード、実行、停止、終了を制御監視するプログラム制御部と、これの指示により、プログラムロード時、対象プログラムファイルの付属情報に基づきプログラムに必要なメモリ領域を管理単位で割付け、そのメモリアクセス属性を生成し属性表として登録するプログラム領域生成部と、ロードされているプログラムについてプログラム毎の属性表を保持するメモリアクセス属性領域と、実行中のプログラムの前記属性表の写しとテンポラリのメモリアクセス属性をそれぞれ第１、２のメモリ制御手段に保持しプログラムのメモリアクセスの種類をチェックし許可抑制するアクセスチェック機構と、プログラムが、割当てられたメモリをアドレス、付与属性を指定し呼出し先のプログラムに貸出す命令手段とを含んで構成され、前記プログラム制御部はプログラムの実行開始に際し、アクセスチェック機構に対し、そのプログラムの属性表を、メモリアクセス属性領域より、第１のメモリ制御レジスタに設定させ、アクセスチェック機構はプログラム単位でチェックをするとともに、前記貸出し命令を受けると指定するアドレスの属性を第１のメモリ制御手段より得、付与属性が該属性の範囲以下であればこれを第２のメモリ制御手段に設定し次のプログラムのメモリアクセスチェックを第１と第２のメモリ制御手段の属性を加えて行うことを特徴とする。
【００１２】
本発明の第２のメモリアクセス属性管理方式は、論理アドレスを主記憶上のメモリアドレスに変換するアドレス変換表、メモリ管理単位でメモリの実行、読出、書込の各アクセス属性を保持する属性表、実行状態のプログラムに関しアドレス変換表の写しを持ちメモリ管理単位で前記アドレス変換する機構、プログラムのメモリ管理単位への前記各アクセスをチェックする機構を備えた処理装置のメモリアクセス属性管理方式において、プログラムのロード、実行、停止、終了を制御し、ロードするプログラム名に一意にプログラム識別を付与し、必要なメモリの確保を指示するプログラム制御部と、前記指示を受けプログラムファイルの付属情報に基づきプログラムが使用する論理アドレス情報に対し管理単位毎にメモリアクセス属性を生成しメモリ管理単位番号を割付け、メモリ管理単位番号をアドレス変換表のエントリに登録し、生成したメモリアクセス属性を属性表の前記エントリにプログラム識別とともに登録するプログラム領域生成部と、前記各プログラムの管理単位毎の論理アドレスを保持する属性領域と、前記アドレス変換機構と、実行状態の複数プログラムに関し属性表のプログラム識別、メモリアクセス属性の写しを第１のメモリ制御手段の対応エントリに、テンポラリのメモリアクセス属性を第２のメモリ制御手段の前記対応エントリに保持するとともに実行中のプログラムのメモリ制御手段のエントリを指定するカレント指定手段を有すアクセスチェック機構と、プログラムが割当てられたメモリに関し論理アドレス、付与属性を指定し他プログラムに貸出す命令手段とを含んで構成され、アクセスチェック機構は命令読出しアドレスに対し実行可属性をもつ第１のメモリ制御手段のエントリのプログラム識別をカレント指定手段に設定し、以降のデータアクセスアドレスに対応するエントリのプログラム識別がカレント識別と一致することを含めてアクセスチェックをし、貸出設定では付与属性がアドレスに対応する第１のメモリ制御手段のエントリの属性の範囲以下であればこれを第２のメモリ制御手段に設定することを特徴とする。
【００１５】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して詳細に説明する。図１は本発明のメモリ属性管理方式が適用される情報処理装置の一例を示すブロック図である。情報処理装置はプロセッサ１とメモリ２とファイルデバイス４と操作者用の表示装置５−１、キーボード５−２とこれらを相互接続するシステム制御ユニット３を有す。プロセッサ１は命令演算処理部７とキャッシュ６とアドレス変換機構８とアクセスチェック機構９を有す。命令演算処理部７は実行する命令を先行して読出し、順次デコードし必要なメモリオペランドデータを読出す命令処理とオペランド間演算を行い結果を必要に応じメモリ２に格納する演算実行処理を行う。キャッシュ６はメモリ２のブロックの内最近実行された命令に関わるブロックを一時記憶する命令、オペランドのキャッシュである。アドレス変換機構８はメモリ２にあるページ表の写しを持ち、命令演算処理部７のメモリ２乃至キャッシュ６へのアクセスに際しアクセスアドレスが論理アドレスの場合これをメモリ２上の実アドレス（以下メモリアドレスと省略）に変換する。変換はメモリ管理単位（以下ページとする）に行う。尚、本発明の第１の実施形態ではアドレス変換機構８は必要としない。
【００１６】
アクセスチェック機構９はメモリ２上の属性表の写しを持ち、命令演算処理部７がメモリ２乃至キャッシュ６へのアクセス時アクセス種類を指定するアクセスコード（Ｅ：命令とし実行、Ｒ：読出、Ｗ：書込、Ｃ：キャッシュバイパス）とアクセスページの属性をつき合わせチェックし、チェック結果に応じメモリ乃至キャッシュアクセスを許可／抑止する。メモリ２はシステムプログラムの内コアとなるプログラム用のシステムコアエリア２−１、通常のシステムプログラム用のシステムエリア２−２、ユーザレベルプログラム用のユーザエリア２−３に区分して定義され使用される。
【００１７】
本発明のメモリ属性管理方式はシステムコアエリア２−１上に置くプログラム領域生成部１１、プログラム制御部１２、プログラム毎の属性領域１８−１・・１８−４、このディレクトリ１６とアクセスチェック機構９を含む。更に第１の実施形態ではプログラム制御部１２の配下の領域として割込ベクタ表１３−１、１３−３、プログラムセレクタ表１３−２、１３−４を含む。又第２の実施形態ではアドレス変換表（ＰＴ）の各エントリの延長上に置くプログラム識別、属性情報を含む。又メモリ２の容量は例えば３２メガバイトで、メモリ管理単位をページとすれば例えば４キロバイトとなる。
【００１８】
次に、本発明の第１の実施の形態について図面を参照して説明する。
図２は本発明の構成要素としてプログラム領域生成部１１、プログラム制御部１２、プログラム毎の属性領域１８ー１・・１８−４、このディレクトリ１６と実行されるプログラムとしてシステムプログラム１・・システムプログラムＪとユーザレベルのプログラム（Ｊ＋１）・・ユーザレベルプログラムＮとプログラムの割込み時切替え機構としての割込ベクタ表１３−１、１３−３、通常の呼び出し時切り替え機構としてのプログラムセレクタ表１３−２、１３−４を示したものである。これらはメモリ２に配置されている。
【００１９】
プログラム制御部１２は、操作者からの指示により当該プログラムファイル４３をロードし当該プログラム名にプログラム識別を付与し、プログラム領域生成部１１に実行に必要なメモリの確保、属性表生成を指示し、属性表アドレスを得てアクセスチェック機構９に属性表のロードを指示し、その他実行に必要な設定をし当該プログラムを実行開始する。又当該プログラムによる他プログラム呼び出しを一時フックし他プログラムの属性表アドレスを得てアクセスチェック機構９に第１メモリ制御レジスタ（第１ＭＣＲ）６１の切替えを指示後他プログラムに移行し、リターン時に第１ＭＣＲ６１を戻す切替えを指示し当該プログラムにリターンする。マルチプログラミング環境ではプロセスタイマー割り込みを利用し（プログラム起動時プロセスタイマーを設定し割り込みベクタ表１３−１の対応するエントリに自セグメントのセグメント記述子位置と所定オフセットを設定しておき）当該プログラムの処理の区切りで割込み、次のプログラムの属性表ロードを同様に指示する。又当該プログラムが終了時ソフトウェア割込みにより通知される。プログラム制御部１２は実行中のプログラムの追加メモリアロケート要求の際プログラム領域生成部１１に指示し、追加ページ番号を得てアクセスチェック機構９に更新を指示する。
【００２０】
プログラム識別（ＰＩＤ）表１２−２はプログラムをメモリ２にロードする際に付与するプログラム識別（番号）とプログラム名の対応表でプログラムＡに番号Ｎを付与した場合、エントリＮにプログラムＡの名称を登録する。プログラムステータス表１２−３はメモリ２にロードされているプログラムについてプログラム識別毎に、停止、待機、実行中のいずれの状態にあるかを示す。
【００２１】
割込みベクタ表Ｂ（ＩＤＴＢ）１３−１は外部割込みとファンクションコールを含めたソフトウェア割込に関するコール先の命令セグメント記述子セレクタ、オフセット情報をプログラム制御部１２の命令セグメント記述子セレクタとセグメント内オフセットに書き換えたものである。プログラムセレクタ表Ｂ（ＰＳＥＬＢ）１３−２はユーザプログラム間の呼出しに関してもその様に設定したセレクタ表である。割り込みベクタ表（ＩＤＴ）１３−３は上記書き換え前のコール先情報で、プログラムセレクタ表（ＰＳＥＬ）１３−４はユーザプログラム間の呼出し先のセレクタ表である。割り込みベクタ表は割り込み要因別のエントリを有すが、プログラムセレクタ表は呼び出し先プログラムごとのエントリで、プログラム識別順にソートされている（エントリＮはプログラムＮを指している）。
【００２２】
プログラム領域生成部１１は、ロードされるプログラムのプログラムファイル４３より、命令、データ、スタック別にセグメントを列挙し属性に関する指定でグループ化し、各グループにそのサイズに応じてページ識別（仮の通番）と属性（実行可、読出し可、書込み可、キャッシュバイパス）を付与し、これにメモリ使用表１１−２を参照しページ番号（ページフレームアドレス）を割付け、属性表を作成しそのアドレスをプログラム制御部１２に返すとともに属性エリアディレクトリ（ＡＴＤＲ）１６に登録する。
【００２３】
プログラム管理エリア１４にはセグメント記述子表（ＤＴ）１７も格納される。この管理エリアには属性エリア１８−１、・・１８−４もあり、プログラム単位で属性ごとのビットマップを含む属性表が格納される。属性表は、メモリ２の全ページを所定数でブロック化しそのページブロック番号とブロックの各ページの属性ごとのビットマップとする。例えば図５に示す様に８１９２ページを３２ページ単位のブロックとし、ページブロック番号とその３２ページのビットマップ形式で格納する。ビットマップデータ内の一つのビットは、メモリ２のページ（メモリ管理単位）に一対一に対応している。ビットマップデータ内のビットは、図５の通り「０」が禁止、「１」が許可の意味を持つ。属性エリアディレクトリ（ＡＴＤＲ）１６にはプログラム単位にプログラム識別、属性エリアアドレスが格納される。
【００２４】
メモリ使用表１１−２はシステムコアエリア、システムエリア、ユーザエリアの区分毎にページブロック単位で各ページが使用中（割付済み）／否を表示管理している。又ブロック内ページが全て未使用、未使用ページ有り、無しを表示するフラグも備えている。又システムエリアのメモリ使用表に付随してプログラムが共通に読出し専用で使用するリソース情報、辞書等は読出し専用の旨と、情報識別名ごとのページ番号を対記したリストを備えている。ＡＴＤＲポインタ１１−４は属性エリアディレクトリ（ＡＴＤＲ）１６の先頭アドレスを保持している。
【００２５】
次に図３を参照しアクセスチェック機構９の概要を説明する。図中５１はアクセスコードレジスタ（ＡＣＣＲ）で、命令演算処理部７からのコマンドとアクセスコードがセットされる。コマンドはメモリアクセス（ＭＡ）、属性表ロード（ＬＤ）、第１ＭＣＲ６１のページ単位更新（ＰＬＤ）、貸出設定（ＲＥＮ）が定義されている。アクセスコードはメモリアクセスと属性表ロードコマンドではメモリアクセスの種類がＥ：実行、Ｒ：読出、Ｗ：書込、Ｃ：キャッシュバイパスの４ビットがそれぞれ指定される。ページ単位更新、貸出設定では上記４ビットを用い新規の付与属性が指定される。メモリアドレスレジスタ（ＭＡＲ）５２にはアクセスアドレス或いは属性エリアアドレスがセットされる。属性エリアアドレスレジスタ（ＡＴＡＲ）５３は属性エリアから属性表をロードした後このアドレスをセーブしておくレジスタである。カレントページブロックレジスタ（ＣＰＢＲ）５７は実行中のプログラムの属性表のページブロック番号を保持する。第１メモリ制御レジスタ（第１ＭＣＲ）６１は実行中のプログラムの属性表ビットマップ（４バイト）を各属性で２バイトＸ２ワードに折り畳んで保持している。ブロック７４は第３のＰＢＲとＭＣＲを含みプログラム制御部１２自身の属性表のページブロック番号、属性ビットマップを固定的に保持する。これらはＲＡＭないしレジスタファイルで構成される。ＢＳＥＬ６６は１６ビットから１ビットを選択するビットセレクタで、ＳＥＬ６７は１ビット出力と１６ビットのスルー出力と１６ビットオール１を切換える３ウェイセレクタである。カウンタ（ＣＮＴ）６５は上記ビット選択モードではその選択した１ビット出力を書込むビット位置（０〜４）をインクリメントして指定し、オール１選択モードではＭＡＲ５２のビット１１〜１４がセットされるデコード出力の４ビットカウンタである。５９、６０はＭＡＲ５２内のアクセスアドレス上位とＣＰＢＲ５７、ＴＰＢＲ５８のページブロック番号の一致検出回路で出力はそれぞれ第１ＭＣＲ６１、第２ＭＣＲ６２の読出し出力のＥｎａｂｌｅ信号となる。
【００２６】
読出レジスタ（ＲＤＲ）６８は第１ＭＣＲ６１、第２ＭＣＲ６２より読出され上記ビット選択されたアクセスするページの各属性値（Ｅ、Ｒ、Ｗ、Ｃ、ＯＷ）を保持するレジスタである。又第１ＭＣＲ６１より読出された各属性値の１６ビット幅ビットマップデータがセットされる。６９はＷビットにＯＷ（他のプログラムによる書込み可）ビットを論理和し、ＲビットにＯＲ（他のプログラムによる読出可）ビットを論理和し他のビットはスルーとする回路である。アクセスチェック回路７０はＡＣＣＲ５１のアクセスの種類（Ｅ、Ｒ、Ｗ、Ｃ）のオンビットに対応する回路６９の属性値（Ｅ、Ｒ、Ｗ、Ｃ）のビットがオンであればアクセス可と判定しそうでなければアクセス抑止信号を発生する回路である。貸出チェック回路７１は貸出設定で、ＡＣＣＲ５１内の貸し出し時付与属性Ｒ、Ｗが対象ページの本来属性Ｒ、Ｗ以下（同値又は付与属性Ｒオンに対し本来属性のＷがオン）で貸出可と判定しそうでなければ貸出抑止信号を発生する回路である。
【００２７】
アクセスチェック制御回路７２は命令演算処理部７のアクセス要求を受けアクセスコード、メモリアドレスをＡＣＣＲ５１、ＭＡＲ５２にセットしコマンドに従って上記レジスタの設定、読み出しを制御する。コマンドが（ＬＤ）であればＭＡＲ５２の属性エリアアドレスとＡＣＣＲのアクセスコード（Ｒのみオン）でキャッシュ６より属性エリア対応のキャッシュブロックから属性表を読み出す。ＭＡＲ５２の属性エリアアドレス下位部分をインクリメンタ５４で更新しページブロック番号、Ｅ属性ビットマップ０〜１バイト、２〜３バイト、Ｒ属性ビットマップバイト０〜１バイト、・・と順次読出しＣＰＢＲ５７、第１ＭＣＲ６１の各エントリに書き込む。ＭＡＲ５２下位部分の属性エリアアドレスはＡＴＡＲ５３にセーブしておく。
【００２８】
コマンドが（ＰＬＤ）であればＭＡＲ５２のページブロック番号とブロック内ページ番号の上位２ビットで第１ＭＣＲ６１より属性Ｘビットの１６ビット幅ビットマップを読出しＲＤＲ６８にセットしておき、次にＣＮＴ６５にブロック内ページ番号の下位４ビットをセットしＳＥＬ６７でオール１パターンを選択しておき目的のページ対応のＲＤＲ６８のビット位置を１にセットする。ＯＲセットされたＸビットの１６ビット幅ビットマップを第１ＭＣＲ６１に書き込む。ＡＣＣ５１の付与属性がオンセットされているＸビットについて上記ビットマップ更新を繰り返す。最後にＡＴＡＲ５３のＭ（モディファイ）ビットをオンにする。
【００２９】
コマンドが（ＭＡ）であればＭＡＲ５２のページブロック番号とＣＰＢＲ５７のページブロック番号が一致するＭＣＲよりアクセスページの属性値をＥ、Ｒ、Ｗ、Ｃ、ＯＷの順にビット選択機能を使いＲＤＲ６８の上位５ビットに抽出しＯＲ回路６９を通しアクセスチェック回路７０でメモリアクセス可否を判定する。
【００３０】
コマンドが（ＲＥＮ）であればＭＡＲ５２のページブロック番号とＣＰＢＲ５７のページブロック番号の一致するＭＣＲより貸出ページの属性値Ｗについてビット選択機能を使いＲＤＲ６８のビット１、２に抽出し貸出チェック７１で貸出可否を判定する。貸し出し可であれば第１ＭＣＲ６１よりスルーモードで属性Ｒ、ＷのビットマップをＲＤＲ６８に読出しＬＤＲ５５経由で第２ＭＣＲ６２のＯＲ、ＯＷの対応ワード位置に書き込む。そしてテンポラリページブロック番号レジスタ（ＴＰＢＲ）５８にＣＰＢＲ５７のページブロック番号をコピーする。これらの実行結果、チェック結果を命令演算処理部７に返す。
【００３１】
次にプログラムＮ２８をプログラムファイル４３からメモリ２にロードし初期メモリ設定後、実行開始しプログラムＮがページを貸出しＩＯＳ２５を呼び出しリターン後ページ貸出しをリセットし実行終了する例について、図７、８のフローチャートに基づき、図２〜６を参照しプログラム制御部１２、プログラム領域生成部１１、アクセスチェック機構９の動作を説明する。
【００３２】
プログラム制御部１２は操作者の指示を受けファイルデバイス４上のプログラムファイル４３を読込バッファ２４に読み込み、バッファアドレス、サイズを伴いプログラム領域生成部１１に初期メモリ設定指示をする（図７のＳ１）。バッファには図４に示す実行形式のプログラムファイル４３のヘッダー４４と実行モジュール４５が読込まれている。ヘッダー４４にはヘッダー、実行モジュールのサイズ４６、セグメントの定義４７、セグメントリロケーション情報４８が含まれている。セグメント定義４７はコード、データ、スタック別にセグメント名とそのサイズが記載され、リロケーション情報４８には各セグメントにアクセスするために使用する命令演算処理部７のセグメントレジスタと各セグメントの記述子を該レジスタにロードする命令の位置が記載されている。
【００３３】
プログラム領域生成部１１はヘッダー４４を参照し、属性エリアを確保する。次にコード、データ、スタック毎にセグメントを自ワークエリアに列挙しデータは指定（Ｗ、Ｃ、共用のＲ専用）でグループ化する。コードは実行可、読出可、としデータでＷｒｉｔｅ指定のないものは読出可とし、Ｗｒｉｔｅ指定されていれば読出可、書込可とし、スタックは読出可、書込可とする。これらは共用の読出専用を除きプログラムＮにのみ与えられたアクセス権である。次にコード、データの各グループ、スタックの各グループ単位にサイズの小計を算出しサイズを考慮しページＩＤ（通番）を付与し  ページＩＤに属性（Ｅ、Ｒ、Ｗ、Ｃ）を付与し図６のページＩＤとメモリ属性が作成される。図６では命令セグメントをＰ１とし実行可、読出可を付与し、ＤＴ１セグメントをＰ２、Ｐ３とし読出可、書込可を付与しＤＴ２セグメントをＰ４とし読出可、書込可を付与しＳＴＳＴＫセグメントをＰ５とし読出可、書込可を付与する（図７のＳ２−１）。
【００３４】
次サブステップではページ使用表を参照し各ページＩＤにページ番号を付与する。共通の読み出し専用セグメントのページＩＤにはシステムプログラムのページ使用表に付随する情報を検索し登録されてあればそのページ番号を付与し、これ以外は未使用ページを採番しページ番号を付与する。図６のページＩＤとメモリ属性とページ番号が自ワークエリアに作成される（図７のＳ２−２）。
【００３５】
次に各セグメントのベースアドレス、サイズを計算しセグメント記述子をセグメント記述子表（ＤＴ）１７に書込み実行モジュールのセグメント記述子ロード命令のセレクタ値を上記書き込み位置に合わせておく（図７のＳ２−３）。尚、命令セグメント記述子はＤＴ１７のエントリＮに書き込む。次サブステップでは属性エリア１８−４にプログラムＮ属性表を作成する。即ち、ページ番号ごとの各属性を図５に示すページブロック＃、属性毎のブロック内ビットマップを作成し属性エリアに格納する（図７のＳ２−４）。属性表ディレクトリ（ＡＴＤＲ）１６のエントリＮにプログラムＮ属性エリアアドレスを登録しておく（図７のＳ２−５）。最後に属性エリア、命令セグメント記述子アドレスと共にメモリ設定終了をプログラム制御部１２に通知する（図７のＳ２−６）。
【００３６】
プログラム制御部１２は読込バッファ内２４の実行モジュール（コード部）をプログラムＮの命令セグメントに移送し、  プログラムＮ属性エリアアドレスをオペランドとする属性表ロード命令を発行する。アクセスチェック機構９はこの属性表を読み出し、ＣＰＢＲ、第１メモリ制御レジスタ（ＭＣＲ）６１にセットし、属性エリアアドレスをＡＴＡＲ５３にセーブする。プログラム制御部１２は実行結果を命令演算処理部７のフラグレジスタで確認しプログラムＮを実行する（呼び出す）（図７のＳ３）。
【００３７】
命令演算処理部７によりプログラムＮの命令読出が行われるがこのアクセスは第１メモリ制御レジスタ６１が許可する。プログラムＮはソート処理１を実行する。この処理においてＤＴ１セグメント対応ページへのアクセスを、第１メモリ制御レジスタ６１が許可する。次にＤＴ２（ソート対象データ読込エリアページ）の貸出準備をする。即ちアドレスをＤＴ２ページ番号とし貸出時属性としＷビットをオンとする）貸出設定命令を発行する（図８のＳ４）。
【００３８】
アクセスチェック機構９は第１メモリ制御レジスタ６１からＤＴ２ページの属性を読出し、その結果Ｗビットオンで貸出可と判定し、第２メモリ制御レジスタ６２のＤＴ２ページのＯＷビットをオンにしＴＰＢＲ５８にＣＰＢＲのページブロック＃をセットする（図８のＳ５）。
【００３９】
プログラムＮはＩＯＳ呼び出しを実行する（図８のＳ６）。プログラム制御部１２はこの呼び出しを前記フックし、本来の呼出し先の記述子表エントリ番号（＝１）で、ＡＴＤＲ１６のエントリ１にアクセスしＩＯＳ２５の属性エリアアドレスを取得しＩＯＳ２５の属性表ロード命令を発行する（図８のＳ７）。アクセスチェック機構９はＡＴＡＲ５３のモディファイビットがオフであることを確認し、第１メモリ制御レジスタ６１内属性情報の属性エリア１８−４へのセーブを省略し、ＩＯＳ２５の属性表をＣＰＢＲ５７、第１メモリ制御レジスタ６１にセット後、ＡＴＡＲ５３にＩＯＳ属性エリアアドレスをセーブしておく（図８のＳ８）。プログラム制御部１２はＩＤＴ１３−３を使用しＩＯＳ２５の呼び出しを実行する（図８のＳ９）。
【００４０】
ＩＯＳ２５はデータをＤＴ２に読み込み（第２メモリ制御レジスタ６２のＯＷビットがアクセス許可）、ＩＲＥＴを実行（図８のＳ１０）し、プログラム制御部１２はスタックしておいた戻り情報（戻りの命令セグメントセレクタ値）よりプログラムＮ属性エリアアドレス取得し属性表ロード命令発行後ＩＲＥＴを実行する（図８のＳ１１）。
【００４１】
プログラムＮ２８は返値を確認し、ＤＴ２ページ貸し出し設定をリセットする命令を発行後、ソート処理２を実行しプログラムの実行終了をプログラム制御部１２に通知（終了割り込み）する（図８のＳ１２）。
【００４２】
次に本実施形態の他の実施例として実行中のプログラムＮが複数ページの貸し出し設定を同時処理する例を示す。プログラムＮはコマンドとして第１ＭＣＲ６１の属性値読出を指定し、アドレスとしてページブロック番号を指定する。アクセスチェック機構９は上記指定されたＭＣＲの属性表（各属性ビットマップ）をスルーモードでＲＤＲ６８に読出し、ＬＤＲ５５経由で命令演算処理部７に返す。プログラムＮは例えばＷ属性ビットマップを入力とし、ＯＷ属性ビットマップを作成する。次にこれをストアデータとし、アドレスを上記ページブロック番号とし、アクセスコードのＷビットをオンとし貸し出し設定コマンド（ＲＥＮ２）を発行する。アクセスチェック機構９は上記ページブロック番号とＣＰＢＲ５７の一致を確認し、第１ＭＣＲ６１よりＷ属性ビットマップをスルーモードでＲＤＲ６８に読出し、ＳＤＲ５６内の上記ストアデータとの論理積を回路７３で求める。この結果がストアデータに等しければ貸し出し可と判定し、ストアデータをＬＤＲ５５に転送し第２ＭＣＲ６２のＯＷ対応ワードに書き込み、ＴＰＢＲ５８にＣＰＢＲ５７をコピーし、貸出し設定を行う。この様にビットマップデータをワード単位で扱うことで複数ページに対する属性の処理が高速化できる。
【００４３】
次に、本発明の第２の実施の形態について説明する。本実施形態は論理アドレス上のページを実メモリアドレス上のページに変換するページテーブル（ＰＴ）、実行状態の複数プログラムに関しＰＴの写しを持ちページ単位でアドレス変換する機構を備えた処理装置を対象としてプログラム単位の記憶保護を行う方式を示すものである。各プログラムの属性エリアにはそのプログラムが使用する論理アドレス上のページ（ページサイズを４Ｋバイトとすると論理アドレスの下位１２ビットを除いた上位アドレス）を保持し、属性表はＰＴの各エントリに対応しそのメモリページの所有者（プログラム識別）と属性、共用ページフラグ（多数のプログラムが読出し専用で共用）を持つ。又アクセスチェック機構１０は実行状態の複数プログラムが使用するページについて属性表の写しを有す。従ってプログラム単位のアクセスチェックをする為には、実行しているプログラムの属性を指定する必要がありカレント指定手段を持つ。該手段としては命令読み出しアクセスで索引され、実行許可（Ｅビットオン）となっているエントリのプログラム識別を用いればよい。
【００４４】
図９は本発明の構成要素としてプログラム領域生成部３１、プログラム制御部３２、プログラム毎の属性領域１９ー１・・１９−４、このディレクトリ１６と実行されるプログラムとしてシステムプログラム１・・システムプログラムＪとユーザレベルのプログラム（Ｊ＋１）・・ユーザレベルプログラムＮと従来からの割込みベクタ１３−３とセグメント記述子表１７、ぺージテーブル（ＰＴ）２１とそのディレクトリ２０とＰＴ２１の各エントリに対応したエントリを持つ属性表２２を示したものである。
【００４５】
プログラム制御部３２は、前記実行中プログラムによる他プログラム呼び出しのフックや、ロード後ないしプログラム切替え時の属性表のメモリ制御レジスタ９７へのロード指示や、実行中のプログラムの要求によるメモリ追加に伴うメモリ制御レジスタの更新指示等は一切行わない点が前記第１の実施の形態と異なるが他は前記と同様である。
【００４６】
プログラム領域生成部３１は、ロードされるプログラムのプログラムファイル情報より、命令、データ、スタック別にセグメントを列挙し属性に関する指定でグループ化し、各グループにそのサイズに応じてページ識別（仮の通番）と属性（実行可、読出し可、書込み可、キャッシュバイパス）を付与し、各ページ識別に論理アドレスを追記しこれにメモリ使用表１１−２を参照しページ番号（ページフレームアドレス）を割付け、図６の属性表原形を作成しページ識別と論理アドレスをそのプログラムの属性エリアへ格納する。又ＰＴエリアを確保し、ＰＴＤＲ２０の論理アドレス上位で指定されるエントリにＰＴエリア先頭アドレスを登録し、ＰＴエリアの論理アドレス上位で指定されるエントリにページ番号（ＰＦＡ）、制御ビット、プログラム識別、属性を登録する。又論理アドレスを登録した属性エリアのアドレスをプログラム識別とともに属性表ディレクトリ（ＡＴＤＲ）１６に登録する。
【００４７】
プログラム管理エリア１５にはセグメント記述子等の情報が格納される。プログラム領域生成部３１は前記メモリ使用表１１−２の他にスワップファイル使用表１１−３を有して、メモリ上のページをスワップアウトするファイルの各ブロックの使用状態を管理している。更に前記ＡＴＤＲポインタ１１−４の他にＰＴＤＲ２０ポインタ１１−５も有している。
【００４８】
プログラム領域生成部３１は付与済みページをスワップアウトする場合、プログラム制御部３２にプログラム選定を依頼する。プログラム制御部３２は優先度の低いプログラムを選定しその実行を停止する（プロセセスタイマー割り込み等を利用し実行停止する）。プログラム領域生成部３１はそのＰＩＤを得て、ＡＴＤＲ１６を引き属性エリアより論理アドレス一覧を得る。論理アドレスでＰＴ２１にアクセスしそのＰＦＡ、制御ビット、属性を得る。データページをスワップアウト対象とし、ＰＴ２１、アドレス変換バッファ８１の制御ビットのＳ（スワップ）をオンにする。次に制御ビット中の更新履歴ビットがオンしているページをスワップファイルにセーブする。スワップファイル使用表１１−３に採番し、スワップ先アドレスを得て追記し、ＩＯＳ２５にファイルへの書込を依頼する。完了すると対象ページに対しＰＴ２１、アドレス変換バッファ８１の制御ビットのＰ（ページ存在）をリセットする。属性エリアにもＰをリセット、Ｓをオンとしてスワップ先アドレスを書込む。対象ページの空きをページ使用表に反映する。尚、アクセスチェック機構１０はＩＯＳ２５のページ読出を、Ｓビットがオンで且つＣＰＩＤがＩＯＳ２５であることでこれを許可する。
【００４９】
スワップインの場合は、上記属性エリアの情報を取り出し、新規ＰＦＡを採番し、ＰＴ２１、アドレス変換バッファ８１のＰＦＡを更新後ＩＯＳにファイルからの読み込みを指示する。アクセスチェック機構１０はＩＯＳ２５のメモリ書き込み要求に対し、Ｐがリセット、Ｓがオンの為、その書き込みをスワップインとみなしこれを許可する。書き込み完了後、プログラム領域生成部３１はＰＴ２１のＰビット、Ｓビットをそれぞれセット、リセットしておく。属性エリアの情報も更新しておく。
【００５０】
図１０を参照しアドレス変換機構８の概要を説明する。論理アドレスレジスタ（ＬＡＲ）７５は命令演算処理部７からの論理アドレスを保持するレジスタで、ページフレームアドレスレジスタ（ＰＦＡＲ）７６はメモリ２のＰＴ２１から読み出したページ番号と制御ビットを保持するレジスタである。ＴＬＢ−Ｌ８０、ＴＬＢ−Ｒ８１はそれぞれ６４エントリ  Ｘ  ４レベルのアドレス変換バッファで、ＴＬＢ−Ｌ８０の各エントリはＬＡＲ７５の論理ページアドレスの上位、ＴＬＢ−Ｒ８１の各エントリは前記論理ページアドレス上位と自エントリ番号を論理ページアドレス下位とする論理ページアドレスに対応するページ番号（ＰＦＡ）を保持している。これらは一致回路８２、４ウェイセレクタＳＥＬＡ８３と合わせセットアソシアティブ方式のアドレス変換を行う。ＲＡ２Ｒ８４は変換されたページフレームアドレスとＬＡＲ７５のページ内アドレスを受けキャシュ１０へのメモリアドレスとしてこれを保持するレジスタである。変換チェック制御部８５は命令演算処理部７からのメモリアクセスの都度その論理アドレスをメモリアドレスに変換する制御を行うとともに対応するページ番号が登録されてなくミスヒットした場合はＰＴ２１よりページ番号（ＰＦＡ）、制御ビット、属性、プログラム識別を読み出し、ＴＬＢ−Ｒ８１、第１メモリ制御レジスタ（ＭＣＲ）８７の属性部、ＰＩＤ部に登録する。又アドレス変換と、アクセスチェックを同ステージで処理するため、本制御部はアクセスチェックも制御する。
【００５１】
次に本図を参照しアクセスチェック機構１０の概要を説明する。ＡＣＣＲ７９は命令演算処理部７から受けるコマンドとアクセスの種類（Ｅ、Ｒ、Ｗ、Ｃ）を保持するレジスタである。ＡＴＲ７７、ＰＩＤＲ７８はそれぞれＰＴ２１から読み出した属性、プログラム識別をＭＣＲへ書込む為に保持するレジスタである。第１ＭＣＲ８７の属性部、ＰＩＤ部のそれぞれのエントリにはＴＬＢ−Ｒ８１の対応エントリが保持しているページの属性、プログラム識別（ページの所有者）が保持される。第２ＭＣＲ８８の各エントリは対応するページが貸し出された場合その属性（ＯＷ、ＯＲ）を保持する。即ち他プログラムに書込み可で貸出した場合はＯＷビットがセットされ、読出し可で貸出した場合はＯＲビットがセットされる。更に各エントリは対応するページが多数のプログラムが読み出し専用で共用する場合ＣＲビットをセットし保持する。第１ＭＣＲ８７、第２ＭＣＲ８８はＴＬＢ−Ｒ８１と同様に４レベルのセットアソシアティブ構造である。ＳＥＬＢ９０、ＳＥＬＣ９１はヒットしたレベルを選択する４ウェイセレクタである。カレントプログラム識別（ＣＰＩＤ）９２は実行中のプログラム識別を保持するレジスタである。一致回路９４はメモリアクセスの都度第１ＭＣＲ８７のＰＩＤ部より読出されたプログラム識別とＣＰＩＤの一致検出回路である。
ゲ−ト回路９６は第１ＭＣＲ８７の属性部より読出された属性（Ｅ、Ｒ、Ｗ、Ｃ）の内（Ｒ、Ｗ、Ｃ）を一致回路９４出力でゲートしＲビットをＥビットでもゲートする回路である。回路９８はＷビットとＯＷビットの論理和、ＲビットとＣＲビットとＯＲビットの論理和を作成しＥ、Ｃビットはスルーとする回路である。アクセスチェック回路７０、貸出しチェック回路７３は前記図３の回路と同様である。
【００５２】
変換チェック制御部８５は命令演算処理部７のアクセス要求を受けるとコマンドとアクセスコードをＡＣＣＲ７９、論理アドレスをＬＡＲ７５にセットし前記アドレス変換を行う。ミスヒットであれば前記ＰＴ２１より対応ページの情報をロード後アドレス変換する。アドレス変換と同時にコマンドに従ってアクセスチェックをする。コマンドがメモリアクセス（ＭＡ）で且つアクセスコードが命令読み出しであれば第１ＭＣＲ８７より読出した属性のＥ、Ｒ、ビットがオンであるかアクセスチェック回路７０で判定しオンであれば読出したプログラム識別をＣＰＩＤ９２にセットし、又その命令読出しを許可する。データの読出し書込みアクセスであれば第１ＭＣＲ８７より読出したプログラム識別がＣＰＩＤに一致し、属性のＲ、Ｗビットがオンかを上記対応の回路で判定し、その結果に応じアクセスを許可／抑止する。又共用ページの読出しは第２ＭＣＲ８８より読出したＣＲビット値により許可／抑止する。コマンドがページ貸出し（ＲＥＮ）であれば第１ＭＣＲ８７より読出したプログラム識別がＣＰＩＤに一致し、属性のＲ、Ｗビットがアクセスコードで指定されている貸出し時属性を含むものであれば貸出し時属性を第２ＭＣＲ８８の対応エントリに書き込む。これによりこの後のアクセスでプログラム識別がＣＰＩＤに一致しなくても貸出しページアクセスは許容される。尚、ページ貸出しのリセットはリセットする属性対応のアクセスコードのビットをオフとするＲＥＮコマンドをセット時と同様に処理することで実現される。
【００５３】
次にプログラムＮ２８をプログラムファイル４３からメモリ２にロードし初期メモリ設定後、実行開始しプログラムＮ２８がページを貸出しＩＯＳ２５を呼び出しリターン後ページ貸出しをリセットし実行終了する例について、図１１、１２のフローチャートに基づき、図４、図６、図９、図１０を参照しプログラム制御部３２、プログラム領域生成部３１、アクセスチェック機構１０の動作を説明する。
【００５４】
プログラム制御部３２は操作者の指示を受けファイルデバイス４上のプログラムファイル４３を  読込バッファ２４に読込みバッファアドレス、サイズを伴いプログラム領域生成部３１に初期メモリ設定指示をする（図１１のＳ２１）。バッファには図４に示す実行形式のプログラムファイルのヘッダー４４と実行モジュール４５が読み込まれている。ヘッダーにはヘッダー、実行モジュールのサイズ４６、セグメント定義４７、セグメントリロケーション情報４８が含まれている。セグメント定義はコード、データ、スタック別にセグメント名とそのサイズが記載され、リロケーション情報には各セグメントにアクセスするために使用する命令演算処理部７のセグメントレジスタと各セグメントの記述子を該レジスタにロードする命令の位置が記載されている。
【００５５】
プログラム領域生成部３１はヘッダー４４を参照し、属性エリア１９−４を確保する。次にコード、データ、スタック毎にセグメントを自ワークエリアに列挙しデータは指定（Ｗ、Ｃ、共用のＲ専用）でグループ化する。コードは実行可、読出可、としデータでＷｒｉｔｅ指定のないものは読出可とし、Ｗｒｉｔｅ指定されていれば読出可、書込可とし、スタックは読出可、書込可とする。これらは共用の読出専用を除きプログラムＮにのみ与えられたアクセス権である。次にコード、データの各グループ、スタックの各グループ単位にサイズの小計を算出しサイズを考慮しページＩＤ（通番）を付与しページＩＤに論理アドレス、属性（Ｅ、Ｒ、Ｗ、Ｃ）を付与し図６のページＩＤと論理ページアドレスとメモリ属性が作成される。図６では命令セグメントをＰ１とし論理アドレス上のページ＃１００、実行可、読出可を付与し、ＤＴ１セグメントをＰ２、Ｐ３とし論理アドレス上のページ＃２０１、＃２０２と読出可、書込可を付与しＤＴ２セグメントをＰ４とし論理アドレス上のページ＃２０３と読出可、書込可を付与しＳＴＳＴＫセグメントをＰ５とし論理アドレス上のページ＃５００と読出可、書込可を付与する（図１１のＳ２２−１）。
【００５６】
次サブステップではページ使用表１１−２を参照し各ページＩＤにページ番号を付与する。共用の読出専用セグメントのページＩＤにはシステムプログラムのページ使用表に付随する情報を検索し登録されてあればそのページ番号を付与し、これ以外は未使用ページを採番しページ番号を付与する。図６のページＩＤと論理ページアドレスとメモリ属性とページ番号（ＰＦＡ）、が自ワークエリアに作成される（図１１のＳ２２−２）。
【００５７】
次に各セグメントのベースアドレス、サイズを計算しセグメント記述子をＤＴ１７に書込み実行モジュールのセグメント記述子ロード命令のセレクタ値を上記書込み位置に合わせておく（図１１のＳ２２−３）。次サブステップでは属性エリア１９−４にプログラムＮ論理アドレス一覧を作成する。属性値そのものでなくＰＴ２１を通じ属性表を指す論理アドレス一覧を格納する。即ち、ページＩＤと論理ページアドレスをプログラムＮの属性エリア１９−４に格納する（図１１のＳ２２−４）。そしてＰＴ２１用エリアを確保し、エリアの先頭アドレスをＰＴＤＲ２０の論理ページアドレスの上位に対応するエントリに書込み、ＰＴエリアの論理ページアドレスの下位に対応するエントリにページ番号（ＰＦＡ）、制御ビット、プログラム識別、属性を書込む（図１１のＳ２２−５）。尚制御ビットの命令セグメントページのＰ（ページが存在することを表示）ビットはリセット状態を書き込む。ＡＴＤＲ１６の対応エントリにプログラムＮ属性エリアアドレスを書き込む（図１１のＳ２２−６）。読込バッファ内コード部をプログラムＮの命令セグメントに移送する。この書込みについてはアクセスチェック機構１０の変換アクセスチェック制御部８５は命令セグメントページの制御ビットの内のＰビットがセットされてなくプログラム領域生成部３１のアクセス（ＣＰＩＤ：プログラム領域生成部３１のＩＤ）であることで例外的に実行可、読出可のみのページへの書き込みを許容する。移送後ＰＴ２１上の命令セグメントページのＰビットをセットする。最後に命令セグメント記述子アドレスと共にメモリ設定終了をプログラム制御部３２に通知する（図１１のＳ２２−７）。
【００５８】
プログラム制御部３２は、プログラムＮを呼び出す（図１１のＳ２３）。命令演算処理部７はプログラムＮの命令読出し要求をアドレス変換機構８に対して行なうが新規設定ページにつきミスヒットしＰＴ２１より対応エントリをロードする。その後このアクセスは許可され、ＣＰＩＤ９２にはＮ（プログラムＮの識別）がセットされる。
プログラムＮはソート処理１を実行する。この処理においてＤＴ１セグメント対応ページへのアクセスをＣＰＩＤ、第１メモリ制御レジスタ８７が許可する。この後、ＤＴ２（ソート対象データ読込エリアページ）の貸出準備をする。即ちアドレスをＤＴ２論理アドレスとし貸出時属性としてアクセスコードのＷビットをオンとする貸出設定命令を発行する（図１２のＳ２４）。
【００５９】
アクセスチェック機構１０は第１メモリ制御レジスタ８７からＤＴ２ページのＰＩＤ、属性を読出し、その結果ＰＩＤ値がＣＰＩＤ９２と一致し、又属性のＷビットオンで貸出し可と判定する。そして第２メモリ制御レジスタ８８のＤＴ２ページにアクセスコードレジスタのＲ、Ｗ値を書き込む（ＯＷビットをオンにする）（図１２のＳ２５）。
【００６０】
プログラムＮはＩＯＳ呼び出しを実行する（図１２のＳ２６）。命令演算処理部７はＩＯＳプログラムの命令読出しを行い、このアクセスは第１メモリ制御レジスタ８７により許可され、ＣＰＩＤ９２には同時に読出されたＩＯＳのＰＩＤ（＝１）がセットされる。ＩＯＳはデータをＤＴ２に読み込み（第２メモリ制御レジスタ８８のＯＷビットがアクセス許可）ＩＲＥＴ命令を実行する（図１２のＳ２７）。
【００６１】
プログラムＮのＩＲＥＴ先命令読出が行われＣＰＩＤ９２にＮがセットされる。プログラムＮは返値を確認し、ＤＴ２ページ貸出設定をリセットする命令（アドレスをＤＴ２の論理アドレスとしアクセスコードが全てリセット状態の貸出し命令）を発行後、ソート処理２を実行しプログラムの実行終了をプログラム制御部３２に通知（終了割り込み）する（図１２のＳ２８）。
【００６２】
次に、本発明の第３の実施の形態について説明する。本実施形態は前記プログラムＮのページ貸し出し設定命令による第２メモリ制御レジスタのＯＲ、ＯＷビットセットを、プログラムＮをロード時に他の属性と共に生成し、他の属性が第１メモリ制御レジスタにロードされる時、ＯＲ、ＯＷ属性を第２メモリ制御レジスタにロードしておく。そしてプログラムＮが例えばＩＯＳを呼び出す直前で命令によりＯＲ、ＯＷ属性を有効化し、ＩＯＳよりリターン時これを無効化するものである。
【００６３】
図４を参照し、プログラム領域生成部１１或いは３１は前記属性表を自ワークエリアに作成すると先ず他プログラム呼び出し命令に着目し、その引値（コール時パラメータ）を解析する。その結果コール先にバッファエリア乃至データエリアを渡していればそのセグメントを割り出す。図４の例では１０２番地の引値設定で、ファイル読み込みを指定しその前にＤＴ２セグメントをデータセグメントレジスタに設定しているのでＤＴ２セグメントをバッファとして渡していると判定する。そして図６の斜線部に示している様にＰ４のＯＷビットをオンに設定する。このＯＷビットは図５の属性表、図９の属性表２２にも書き込まれる。アクセスチェック機構９乃至１０は属性表をロード時、他の属性を第１メモリ制御レジスタにロードする際ＯＲ、ＯＷ属性を第２メモリ制御レジスタにロードしておく。
【００６４】
図３を参照しアクセスチェック機構９のアクセスチェック制御回路７２は上記有効化命令に基づくコマンド（ＥＮＲＥＮ）を受けるとＣＰＢＲ５７をＴＰＢＲ５８にコピーし第２メモリ制御レジスタ６２のＯＲ、ＯＷビットマップを有効化する。無効化命令に基づくコマンド（ＤＩＳＲＥＮ）を受けるとＴＰＢＲ５８をクリアないしこのレジスタの有効性表示ビットをリセットし第２メモリ制御レジスタ６２のＯＲ、ＯＷビットマップを無効化する。
【００６５】
図１０を参照しアクセスチェック機構１０の変換チェック制御部８５は上記有効化命令に基づくコマンド（ＥＮＲＥＮ）を受けるとＣＰＩＤ９２を貸出し元プログラム識別（ＲＰＩＤ）９３にコピーし第２メモリ制御レジスタ８８のＯＲ、ＯＷビットを有効化する（一致回路９５の出力がＯＲ、ＯＷ読出し出力を回路９７でゲートする）。無効化命令に基づくコマンド（ＤＩＳＲＥＮ）を受けるとＲＰＩＤ９３をクリアないしこのレジスタの有効性表示ビットをリセットし第２メモリ制御レジスタ８８のＯＲ、ＯＷビットを無効化する。
【００６６】
次に、本発明の第４の実施の形態について説明する。本実施形態では前記プログラムＮ（ソート）が実行された後、プログラム（マージ）が実行結果を受け取り連携して動作する場合にプログラム（マージ）のメモリエリア生成を高速に行う方式を示す。
【００６７】
図４を参照し前記プログラム制御部１２、乃至３２はプログラムＮ（ソート）のロード時にヘッダー４４内の連携情報４９をチェックし本プログラム実行後コード用領域、データ領域、スタック領域を引き渡しプログラム（マージ）が連携起動されること検出する。図２を参照しＰＩＤ表１２ー２のエントリＮの備考エリアに連携起動されるプログラム名（ＭＥＲＧ）を記憶しておく。プログラムＮが実行され終了後プログラム制御部１１乃至３１は上記記憶された連携情報をチェックし、プログラム（マージ）のプログラムファイルをバッファに読み込み、ＰＩＤとしてＮを指定しメモリの引継設定をプログラム領域生成部１１乃至３１に指示する。同時にＰＩＤ表のエントリＮをマージに更新する。プログラム領域生成部１１ないし３１はプログラムファイルのヘッダー情報を参照し、又プログラムＮ属性エリア情報をもとに各セグメントのページ数が越えてないかチェックする。問題なければ、プログラム（ソート）命令セグメントにバッファのコード部を移送してメモリ引き継ぎ設定を完了する。
【００６８】
上記第１の実施形態ではアクセスチェック機構９の第１メモリ制御レジスタが一つの例を示したが、これを複数とし実行するプログラムの切替えに伴う属性表入替えを最小にし、実行中プログラムに対応するメモリ制御レジスタを命令読出を許可したメモリ制御レジスタと指定する方式であってもよい。
【００６９】
上記第２の実施形態ではアクセスチェック機構１０の第１メモリ制御レジスタはページ当たり１エントリのレジスタとし、ＰＩＤを保持するようにしたが、これを複数のレジスタとしＰＩＤを持たず、実行中プログラムに対応するメモリ制御レジスタを命令読出を許可したメモリ制御レジスタと指定する方式も容易に類推できる。
【００７０】
上記実施形態の貸し出されたページを更に属性、ページを範囲内で限定し又貸しするための命令とこれに対応するアクセスチェック機構９、１０の構造等は容易に類推出来る。
【００７１】
【発明の効果】
以上説明した様に本発明の第１、５のメモリ属性管理方式は、プログラム毎にメモリ属性を生成しプログラム毎に属性領域に保持し、実行されるプログラムを特定し、その属性をアクセスチェック機構に設定する手段を持つので、単独動作するプログラムが使用するメモリ部分にのみ、メモリ属性許可を与えることが可能となりプログラム毎に実メモリページアクセスに対するメモリ保護が出来る効果がある。
【００７２】
本発明の第２、３、４、６、７、８のメモリ属性管理方式は、プログラム毎にメモリ属性を生成しプログラム毎に属性領域に保持し、実行されるプログラムを特定し、その属性をアクセスチェック機構に設定する手段、他プログラムが所有する領域への正当なアクセスをエリア、期間を限定し許可設定する手段を持つので、そのプログラムが使用するメモリ部分にのみ、メモリ属性許可を与えることが可能となりプログラム毎に実メモリページアクセスに対するメモリ保護が出来る効果がある。
【００７３】
本発明の第３のメモリ属性管理方式は、属性表をアクセス属性の種類毎で、メモリ管理単位に対応し許可ないし禁止を示すビットマップを含み構成するのでビットマップデータをワード単位で扱え複数ページに対する属性の処理が高速化できる効果がある。
【００７４】
本発明の第４のメモリ属性管理方式は、実行中のプログラムによる追加メモリ領域要求及びその解放通知に呼応した属性表の更新を効率的に行ない、属性管理処理の処理時間を低減する効果がある。
【００７５】
本発明の第６のメモリ属性管理方式は、多数のプログラムがマルチプロセス、マルチスレッドで並列実行される環境においても、処理装置のメモリアクセス速度を低下させることなく、又少ない金物乃至ステップの追加で前記プログラム毎にメモリ保護が出来る効果がある。
【００７６】
本発明の第７のメモリ属性管理方式は、プログラムのエリア貸し出し設定、解除命令を簡単にし、これらの命令数を低減する効果がある。
【００７７】
本発明の第８のメモリ属性管理方式は、連携起動されるプログラムの領域生成を高速化し、属性エリアサイズを縮小する効果がある。
【図面の簡単な説明】
【図１】本発明のメモリ属性管理方式が適用される情報処理装置例を示すブロック図
【図２】本発明のメモリ属性管理方式の第１の実施形態のメモリ上に配置された要素を示す図。
【図３】本発明のメモリ属性管理方式の第１、第３の実施形態におけるアクセスチェック機構９のブロック図。
【図４】実行形式プログラムファイルのヘッダー、実行モジュールの例を示す図。
【図５】本発明のメモリ属性管理方式の第１、第３の実施形態におけるプログラムＮ属性表の内容を示す図。
【図６】本発明のメモリ属性管理方式の第２、第３の実施形態におけるプログラムＮ属性表作成イメージを示す図。
【図７】本発明のメモリ属性管理方式の第１実施形態の動作を示すフローチャート。
【図８】本発明のメモリ属性管理方式の第１実施形態の動作を示すフローチャート。
【図９】本発明のメモリ属性管理方式の第２の実施形態のメモリ上に配置された要素を示す図。
【図１０】本発明のメモリ属性管理方式の第２、第３の実施形態におけるアドレス変換機構８とアクセスチェック機構１０のブロック図。
【図１１】本発明のメモリ属性管理方式の第２の実施形態の動作を示すフローチャート。
【図１２】本発明のメモリ属性管理方式の第２の実施形態の動作を示すフローチャート。
【図１３】従来のプログラム領域の破壊例を説明するための図。
【符号の説明】
１    プロセッサ
２    メモリ
３    システム制御ユニット
４    ファイルデバイス
５−１  表示装置
５−２  キーボード
６    キャッシュ
７    命令演算処理部
８    アドレス変換機構
９、１０    アクセスチェック機構
１１、３１    プログラム領域生成部
１１−４    ＡＴＤＲポインタ
１２、３２    プログラム制御部
１２−２    プログラム識別（ＰＩＤ）表
１３−１    割り込みベクタ表Ｂ（ＩＤＴＢ）
１３−２    プログラムセレクタ表Ｂ（ＰＳＥＬＢ）
１３−３    割り込みベクタ表（ＩＤＴ）
１３−４    プログラムセレクタ表（ＰＳＥＬ）
１４、１５    プログラム管理エリア
１６    属性エリアディレクトリ（ＡＴＤＲ）
１７    セグメント記述子表（ＤＴ）
１８、１９    属性エリア
２０    ページテーブルディレクトリ（ＰＴＤＲ）
２１    ページテーブル（ＰＴ）
２２    属性表
４３    プログラムファイル
４４    ヘッダー
４５    実行モジュール
５１、７９    アクセスコードレジスタ（ＡＣＣＲ）
５２    メモリアドレスレジスタ（ＭＡＲ）
５３    属性エリアアドレスレジスタ（ＡＴＡＲ）
５７    カレントページブロックレジスタ（ＣＰＢＲ）
５８    テンポラリページブロックレジスタ（ＴＰＢＲ）
６１、８７    第１メモリ制御レジスタ（第１ＭＣＲ）
６２、８８    第２メモリ制御レジスタ（第２ＭＣＲ）
７０    アクセスチェック回路
７１    貸出チェック回路
７２    アクセスチェック制御回路
７５    論理アドレスレジスタ（ＬＡＲ）
７６    ページフレームアドレスレジスタ（ＰＦＡＲ）
８０    アドレス変換バッファ（ＴＬＢ−Ｌ）
８１    アドレス変換バッファ（ＴＬＢ−Ｒ）
８５    変換チェック制御部
９２    カレントプログラム識別レジスタ（ＣＰＩＤ）
９３    貸出し元プログラム識別レジスタ（ＲＰＩＤ）
【図１】
0003607540.tif 000002
【図２】
0003607540.tif 000003
【図３】
0003607540.tif 000004
【図４】
0003607540.tif 000005
【図５】
0003607540.tif 000006
【図６】
0003607540.tif 000007
【図７】
0003607540.tif 000008
【図８】
0003607540.tif 000009
【図９】
0003607540.tif 000010
【図１０】
0003607540.tif 000011
【図１１】
0003607540.tif 000012
【図１２】
0003607540.tif 000013
【図１３】
0003607540.tif 000014