JPS62232054A - スタツクフレ−ム記述子の管理方式 - Google Patents
スタツクフレ−ム記述子の管理方式Info
- Publication number
- JPS62232054A JPS62232054A JP61075861A JP7586186A JPS62232054A JP S62232054 A JPS62232054 A JP S62232054A JP 61075861 A JP61075861 A JP 61075861A JP 7586186 A JP7586186 A JP 7586186A JP S62232054 A JPS62232054 A JP S62232054A
- Authority
- JP
- Japan
- Prior art keywords
- stack frame
- procedure
- segment
- descriptor
- frame descriptor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract 8
- 230000006870 function Effects 0.000 claims abstract 3
- 238000007726 management method Methods 0.000 claims 2
Landscapes
- Storage Device Security (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
発明の目的
産業上の利用分野
本発明は、電子計算機システムに適用されるスタックフ
レーム記述子の管理方式に関し、特にスタックフレーム
記述子を誤書込みによる破壊から保護しつつ管理する方
式に関するものである。
レーム記述子の管理方式に関し、特にスタックフレーム
記述子を誤書込みによる破壊から保護しつつ管理する方
式に関するものである。
従来の技術
ALGOL、PASCALなどの高級言語で記述された
プログラムを構成する各プロシージャについては、それ
ぞれのワーク領域とスタックフレーム記述子の管理領域
を含むスタックフレームが、処理の開始に先立って主記
憶上に確保され、処理の終了に伴って解放される。
プログラムを構成する各プロシージャについては、それ
ぞれのワーク領域とスタックフレーム記述子の管理領域
を含むスタックフレームが、処理の開始に先立って主記
憶上に確保され、処理の終了に伴って解放される。
スタックフレーム記述子は、スタックフレームのサイズ
やその先頭アドレス等のスタックフレーム管理情報と、
引数アドレスや呼出し側プロシージャへのリターン・ア
ドレス等のプロシージャ制御情報と、呼出し側プロシー
ジャの各種レジスタの内容、例外発生条件及び例外処理
ルーチンのアドレスやリング保護機構がある場合の走行
していたリング値等のプロシージャ環境情報から構成さ
れる装置 このように、ワーク領域を含むスタックフレーム内でス
タックフレーム記述子を管理しているので、プロシージ
ャ自体や呼出した他のプロシージャがワーク領域を使用
する際の誤書込みによってスタックフレーム記述子が破
壊されてしまう危険がある。スタックフレーム記述子が
破壊されてしまうと、スタックフレームの管理が不能に
なり、プログラムの正常動作が保証されなくなる。
やその先頭アドレス等のスタックフレーム管理情報と、
引数アドレスや呼出し側プロシージャへのリターン・ア
ドレス等のプロシージャ制御情報と、呼出し側プロシー
ジャの各種レジスタの内容、例外発生条件及び例外処理
ルーチンのアドレスやリング保護機構がある場合の走行
していたリング値等のプロシージャ環境情報から構成さ
れる装置 このように、ワーク領域を含むスタックフレーム内でス
タックフレーム記述子を管理しているので、プロシージ
ャ自体や呼出した他のプロシージャがワーク領域を使用
する際の誤書込みによってスタックフレーム記述子が破
壊されてしまう危険がある。スタックフレーム記述子が
破壊されてしまうと、スタックフレームの管理が不能に
なり、プログラムの正常動作が保証されなくなる。
一般に電子計算機システムでは、主記憶アドレス空間を
セグメントに分割してセグメントごとに記憶保護キーを
割当てるなどの記憶保護対策がオペレーティング・シス
テムで行われる。しかしながら、各プロシージャによっ
て確保されるワーク領域とスタックフレーム記述子の管
理領域を含むスタックフレームは、同一セグメント内あ
るいは連続したセグメントに渡って形成されることが多
いため上記オペレーティング・システムによる記憶保護
対策も効果がない場合が多い。
セグメントに分割してセグメントごとに記憶保護キーを
割当てるなどの記憶保護対策がオペレーティング・シス
テムで行われる。しかしながら、各プロシージャによっ
て確保されるワーク領域とスタックフレーム記述子の管
理領域を含むスタックフレームは、同一セグメント内あ
るいは連続したセグメントに渡って形成されることが多
いため上記オペレーティング・システムによる記憶保護
対策も効果がない場合が多い。
本出願人の先願に係わる「誤書込防止回路」と題する特
許出願(特願昭60−169413号)によれば、スタ
ックフレーム内の記憶保S!領域を表示するレジスタ、
このレジスタの内容と書込みアドレスに基づき保護領域
に対するデータの書込みを検出し、これを無効にする回
路を不可することによりスタックフレーム記述子を誤書
込みから保護する発明が開示されている。
許出願(特願昭60−169413号)によれば、スタ
ックフレーム内の記憶保S!領域を表示するレジスタ、
このレジスタの内容と書込みアドレスに基づき保護領域
に対するデータの書込みを検出し、これを無効にする回
路を不可することによりスタックフレーム記述子を誤書
込みから保護する発明が開示されている。
発明が解決しようとする問題点
上記先願に係わる誤書込み防止回路によれば、スタック
フレーム記述子を誤書込みから有効に保護できるが、多
少のハードウェアを追加しなければならないという問題
がある。
フレーム記述子を誤書込みから有効に保護できるが、多
少のハードウェアを追加しなければならないという問題
がある。
発明の構成
問題点を解決するための手段
上記先行技術の問題点を解決する本発明のスタックフレ
ーム記述子の管理方式は、スタックフレーム記述子を、
スタックフレームが形成されるセグメントとは異なりか
つプロシージャによる書込がオペレーティング・システ
ムによる記憶保護機能に基づき禁止されているセグメン
ト内に格納することにより、ハードウェアを追加するこ
となく、オペレーティング・システムによる既存の記憶
保護機能をそのまま利用してスタックフレーム記述子を
誤書込みから有効に保護するように構成されている。
ーム記述子の管理方式は、スタックフレーム記述子を、
スタックフレームが形成されるセグメントとは異なりか
つプロシージャによる書込がオペレーティング・システ
ムによる記憶保護機能に基づき禁止されているセグメン
ト内に格納することにより、ハードウェアを追加するこ
となく、オペレーティング・システムによる既存の記憶
保護機能をそのまま利用してスタックフレーム記述子を
誤書込みから有効に保護するように構成されている。
以下、本発明の作用を実施例と共に詳細に説明する。
実施例
第1図は、本発明の一実施例において主プロシージャの
実行状態における主記憶アドレス空間の使用状況を示す
概念図である。
実行状態における主記憶アドレス空間の使用状況を示す
概念図である。
主記憶アドレス空間のセグメント10には、主プロシー
ジャが使用するスタックフレーム11が確保されている
。このスタックフレーム11のスタックフレーム記述子
21は、セグメント10とは異なりかつ記憶保護キーな
どの手法に基づくオペレーティング・システムの記憶保
3!機能によって、プロシージャによる書込みが不能な
他のセグメント(「スタックフレーム管理セグメント」
と称する)20内に確保されている。また、実行中の主
プロシージャのスタックフレーム記述子21を指定する
ためのカレント・スタックフレーム記述子ポインタPが
、CPU内の汎用レジスタなどに確保される。
ジャが使用するスタックフレーム11が確保されている
。このスタックフレーム11のスタックフレーム記述子
21は、セグメント10とは異なりかつ記憶保護キーな
どの手法に基づくオペレーティング・システムの記憶保
3!機能によって、プロシージャによる書込みが不能な
他のセグメント(「スタックフレーム管理セグメント」
と称する)20内に確保されている。また、実行中の主
プロシージャのスタックフレーム記述子21を指定する
ためのカレント・スタックフレーム記述子ポインタPが
、CPU内の汎用レジスタなどに確保される。
主プロシージャの実行に先立ってスタックフレーム確保
ルーチンが実行され、まず、可変長あるいは固定長サイ
ズのスタックフレーム11がセグメント10内に確保さ
れる。引続き、スタックフレーム管理セグメント20内
に複数用意されているスタックフレーム記述子の格納領
域のうち空き状態にある一つが選択され、ここに、スタ
ックフレーム管理情報、プロシージャ制御情報及び呼出
し側プロシージャのプロシージャ環境情報で構成される
スタックフレーム記述子21が格納、退避される。更に
、カレント・スタックフレーム記述子ポインタPの内容
が新たに確保されたスタックフレーム記述子21を指す
ように変更される。
ルーチンが実行され、まず、可変長あるいは固定長サイ
ズのスタックフレーム11がセグメント10内に確保さ
れる。引続き、スタックフレーム管理セグメント20内
に複数用意されているスタックフレーム記述子の格納領
域のうち空き状態にある一つが選択され、ここに、スタ
ックフレーム管理情報、プロシージャ制御情報及び呼出
し側プロシージャのプロシージャ環境情報で構成される
スタックフレーム記述子21が格納、退避される。更に
、カレント・スタックフレーム記述子ポインタPの内容
が新たに確保されたスタックフレーム記述子21を指す
ように変更される。
このスタックフレーム管理セグメント20内への書込み
は、オペレーティング・システムの記憶保護機能に基づ
き、上述のスタックフレーム確保ルーチン及び後述する
スタックフレーム開放ルーチンにだけ許容されており、
プロシージャによるこのセグメントへの書込みは禁止さ
れている。
は、オペレーティング・システムの記憶保護機能に基づ
き、上述のスタックフレーム確保ルーチン及び後述する
スタックフレーム開放ルーチンにだけ許容されており、
プロシージャによるこのセグメントへの書込みは禁止さ
れている。
スタックフレーム記述子21を構成する各フィールドの
うち、aは呼出し側プロシージャのスタックフレーム記
述子へのポインタを格納するフィールド、bはスタック
フレーム11の先頭アドレスを格納するフィー−ルド、
Cはスタックフレーム11のサイズを格納するフィール
ド、dはスタックフレーム11内の引数アドレスを格納
するフィールド、eは呼出し側プロシージャへのリター
ンアドレスを格納するフィールド、fは呼出された時点
における各種レジスタ内容の退避フィールドである。ま
た、副プロシージャに引渡される引数は、スタックフレ
ーム11内の引数領域に格納されている。
うち、aは呼出し側プロシージャのスタックフレーム記
述子へのポインタを格納するフィールド、bはスタック
フレーム11の先頭アドレスを格納するフィー−ルド、
Cはスタックフレーム11のサイズを格納するフィール
ド、dはスタックフレーム11内の引数アドレスを格納
するフィールド、eは呼出し側プロシージャへのリター
ンアドレスを格納するフィールド、fは呼出された時点
における各種レジスタ内容の退避フィールドである。ま
た、副プロシージャに引渡される引数は、スタックフレ
ーム11内の引数領域に格納されている。
主プロシージャのスタックフレーム記述子21において
は、呼出し側プロシージャが存在しないため、呼出し側
プロシージャのスタックフレーム記述子へのポインタa
、引数アドレス格納フィールドd、呼出し側プロシージ
ャへのリターンアドレス格納フィールドe及び各種レジ
スタ内容の退避フィールドfはいずれも無効となってい
る。
は、呼出し側プロシージャが存在しないため、呼出し側
プロシージャのスタックフレーム記述子へのポインタa
、引数アドレス格納フィールドd、呼出し側プロシージ
ャへのリターンアドレス格納フィールドe及び各種レジ
スタ内容の退避フィールドfはいずれも無効となってい
る。
このような状態のもとで、主プロシージャが副プロシー
ジャを呼出すものとする。副プロシージャの呼出しに伴
い新たなスタックフレーム確保ルーチンが実行されると
、主記憶アドレス空間の使用状況が第2図に示すような
ものに変化する。
ジャを呼出すものとする。副プロシージャの呼出しに伴
い新たなスタックフレーム確保ルーチンが実行されると
、主記憶アドレス空間の使用状況が第2図に示すような
ものに変化する。
すなわち、スタックフレーム確保ルーチンの実行により
、まず、副プロシージャが使用するスタックフレーム1
2がセグメント10内に確保される。次に、このスタッ
クフレーム12のスタックフレーム記述子22がスタッ
クフレーム管理セグメント30内の空き領域に格納され
る。セグメント10内に確保されたスタックフレーム1
2の先頭アドレスが、セグメント記述子22の先頭アド
レス格納フィールドbに格納され、サイズmがサイズ格
納フィールドCに格納される。主プロシージャから引渡
された引数のアドレスは、引数アドレス格納フィールド
dに格納される。また、主プロシージャへのリターンア
ドレスXがフィールドeに格納され、副プロシージャの
呼出し時点における各種レジスタの内容がレジスタ内容
退避フィールドfに格納される。
、まず、副プロシージャが使用するスタックフレーム1
2がセグメント10内に確保される。次に、このスタッ
クフレーム12のスタックフレーム記述子22がスタッ
クフレーム管理セグメント30内の空き領域に格納され
る。セグメント10内に確保されたスタックフレーム1
2の先頭アドレスが、セグメント記述子22の先頭アド
レス格納フィールドbに格納され、サイズmがサイズ格
納フィールドCに格納される。主プロシージャから引渡
された引数のアドレスは、引数アドレス格納フィールド
dに格納される。また、主プロシージャへのリターンア
ドレスXがフィールドeに格納され、副プロシージャの
呼出し時点における各種レジスタの内容がレジスタ内容
退避フィールドfに格納される。
最後に、カレント・スタックフレーム記述子ポインタP
の内容が、呼出し側プロシージャのスタックフレーム記
述子21のポインタ退避フィールドaに退避されたのち
、その内容が副プロシージャのスタックフレーム記述子
31を指す値に変更される。このスタックフレーム確保
ルーチンが終了すると、副プロシージャの実行が開始さ
れる。
の内容が、呼出し側プロシージャのスタックフレーム記
述子21のポインタ退避フィールドaに退避されたのち
、その内容が副プロシージャのスタックフレーム記述子
31を指す値に変更される。このスタックフレーム確保
ルーチンが終了すると、副プロシージャの実行が開始さ
れる。
その後側プロシージャの処理が終了すると、スタックフ
レーム解放ルーチンによって、スタックフレーム12が
解放され、またプロシージャ制御情報と呼出し側プロシ
ージャのプロシージャ環境情報とが回復される。
レーム解放ルーチンによって、スタックフレーム12が
解放され、またプロシージャ制御情報と呼出し側プロシ
ージャのプロシージャ環境情報とが回復される。
すなわち、スタックフレーム記述子22の呼出し側プロ
シージャへのリターンアドレス格納フィールドeからリ
ターンアドレスXが取出され、各種レジスタ内容の退避
フィールドfの内容が対応のレジスタに戻される。更に
、カレント・スタックフレーム記述子ポインタPに、呼
出し側プロシージャのスタックフレーム記述子31のフ
ィールドaに退避されていた値が戻される。最後に、不
要となったスタックフレーム記述子31がスタックフレ
ーム管理セグメント30上で解放され、主記憶アドレス
空間の使用状態は、第1図の状態に戻る。
シージャへのリターンアドレス格納フィールドeからリ
ターンアドレスXが取出され、各種レジスタ内容の退避
フィールドfの内容が対応のレジスタに戻される。更に
、カレント・スタックフレーム記述子ポインタPに、呼
出し側プロシージャのスタックフレーム記述子31のフ
ィールドaに退避されていた値が戻される。最後に、不
要となったスタックフレーム記述子31がスタックフレ
ーム管理セグメント30上で解放され、主記憶アドレス
空間の使用状態は、第1図の状態に戻る。
発明の効果
以上詳細に説明したように、本発明のスタックフレーム
記述子の管理方式は、スタックフレーム記述子を、スタ
ックフレームが形成される主記憶上のセグメントとは異
なりかつプロシージャによる書込みがオペレーティング
・システムによる記憶保護機能に基づき禁止されている
セグメント内で管理する構成であるから、ハードウェア
をなんら付加することなく、オペレーティング・システ
ムによる既存の記憶保護機能をそのまま利用してスタッ
クフレーム記述子を誤書込みから有効に保護することが
できる。
記述子の管理方式は、スタックフレーム記述子を、スタ
ックフレームが形成される主記憶上のセグメントとは異
なりかつプロシージャによる書込みがオペレーティング
・システムによる記憶保護機能に基づき禁止されている
セグメント内で管理する構成であるから、ハードウェア
をなんら付加することなく、オペレーティング・システ
ムによる既存の記憶保護機能をそのまま利用してスタッ
クフレーム記述子を誤書込みから有効に保護することが
できる。
第1図は本発明の一実施例において主プロシージャ実行
時の主記憶アドレス空間の使用状況を示す概念図、第2
図は上記主プロシージャによって副プロシージャが呼出
されたのちの主記憶アドレス空間の使用状況を説明する
ための概念図である。 10.20・・主記憶アドレス空間の異なるセグメント
、11・・主プロシージャに割当てられたスタックフレ
ーム、12・・副プロシージャに割当てられたスタック
フレーム、21・・スタックフレーム11の記述子、2
2・・スタックフレーム12の記述子、P・・カレント
・スタックフレーム記述子を指すポインタ、 a・・呼出し側ブロシージ中のスタックフレーム記述子
のポインタ格納フィールド、 b・・スタックフレーム・アドレスの格納フィールド C・・スタックフレーム・サイズの格納フィールド d・・引数アドレスの格納フィールド、e・・呼出し側
フィールドへのリターンアドレス格納フィールド
時の主記憶アドレス空間の使用状況を示す概念図、第2
図は上記主プロシージャによって副プロシージャが呼出
されたのちの主記憶アドレス空間の使用状況を説明する
ための概念図である。 10.20・・主記憶アドレス空間の異なるセグメント
、11・・主プロシージャに割当てられたスタックフレ
ーム、12・・副プロシージャに割当てられたスタック
フレーム、21・・スタックフレーム11の記述子、2
2・・スタックフレーム12の記述子、P・・カレント
・スタックフレーム記述子を指すポインタ、 a・・呼出し側ブロシージ中のスタックフレーム記述子
のポインタ格納フィールド、 b・・スタックフレーム・アドレスの格納フィールド C・・スタックフレーム・サイズの格納フィールド d・・引数アドレスの格納フィールド、e・・呼出し側
フィールドへのリターンアドレス格納フィールド
Claims (1)
- 【特許請求の範囲】 主記憶アドレス空間がセグメントに分割され、オペレー
ティング・システムによってセグメントごとの記憶保護
が行われる電子計算機システムにおいて、 スタックフレーム管理情報、プロシージャ制御情報及び
呼出し側のプロシージャの環境情報を含むスタックフレ
ーム記述子を、スタックフレームが形成されるセグメン
トとは異なりかつプロシージャによる書込みが前記オペ
レーティング・システムによる記憶保護機能に基づき禁
止されているセグメント内で管理することを特徴とする
スタックフレーム記述子の管理方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP61075861A JPS62232054A (ja) | 1986-04-02 | 1986-04-02 | スタツクフレ−ム記述子の管理方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP61075861A JPS62232054A (ja) | 1986-04-02 | 1986-04-02 | スタツクフレ−ム記述子の管理方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPS62232054A true JPS62232054A (ja) | 1987-10-12 |
Family
ID=13588448
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP61075861A Pending JPS62232054A (ja) | 1986-04-02 | 1986-04-02 | スタツクフレ−ム記述子の管理方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPS62232054A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19846673A1 (de) * | 1998-10-09 | 2000-04-20 | Siemens Ag | Verfahren zur Verbindung von Stackmanipulationsangriffen bei Funktionsaufrufen |
-
1986
- 1986-04-02 JP JP61075861A patent/JPS62232054A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19846673A1 (de) * | 1998-10-09 | 2000-04-20 | Siemens Ag | Verfahren zur Verbindung von Stackmanipulationsangriffen bei Funktionsaufrufen |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5950221A (en) | Variably-sized kernel memory stacks | |
US7809911B2 (en) | Write protection of subroutine return addresses | |
EP1012715B1 (en) | Hardware assisted method of context switching | |
KR100848603B1 (ko) | 데이터 처리장치와 복귀상태의 저장방법 | |
JPH0114611B2 (ja) | ||
US20040122834A1 (en) | Apparatus and method for switching mode in a computer system | |
US7089242B1 (en) | Method, system, program, and data structure for controlling access to sensitive functions | |
EP0230350A2 (en) | Protection of data in a multiprogramming data processing system | |
US6895583B1 (en) | Task control block for a computing environment | |
KR100791815B1 (ko) | 컴퓨터 시스템 및 컴퓨터 시스템에서 인스트럭션을 실행하는 방법 | |
JP2850808B2 (ja) | データ処理装置およびデータ処理方法 | |
US20020013907A1 (en) | Method of preventing stack manipulation attacks during function calls | |
JPS62232054A (ja) | スタツクフレ−ム記述子の管理方式 | |
JP2004326331A (ja) | 不正メモリアクセス検知方法及びそのプログラム | |
US7814288B2 (en) | Protecting memory operations involving zero byte allocations | |
KR100928865B1 (ko) | 컴퓨터 시스템에서의 스택 확장 및 보호 방법과 그 장치 | |
JPH0484224A (ja) | スタックエリア保護回路 | |
JPH1153249A (ja) | メモリ管理方法 | |
JP2005209178A (ja) | メモリ保護装置、メモリ保護方法及びメモリ保護プログラム | |
WO1990005951A1 (en) | Method of handling unintended software interrupt exceptions | |
KR970006411B1 (ko) | 공유메모리를 사용한 운영체제 커널의 메세지 출력 방법 | |
JPS60142452A (ja) | 記憶保護方式 | |
JPH01180656A (ja) | メモリ保護装置 | |
JPH05127895A (ja) | 汎用レジスタへの書込みプロテクト方式 | |
CN119336452A (zh) | 面向星载操作系统的riscv处理器异常上下文保护和恢复方法 |