JPH03163630A - プロセッサのスタック制御方法 - Google Patents

プロセッサのスタック制御方法

Info

Publication number
JPH03163630A
JPH03163630A JP30426489A JP30426489A JPH03163630A JP H03163630 A JPH03163630 A JP H03163630A JP 30426489 A JP30426489 A JP 30426489A JP 30426489 A JP30426489 A JP 30426489A JP H03163630 A JPH03163630 A JP H03163630A
Authority
JP
Japan
Prior art keywords
stack
interrupt processing
processing
level
interruption
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP30426489A
Other languages
English (en)
Inventor
Toshinobu Akitomi
利伸 秋冨
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP30426489A priority Critical patent/JPH03163630A/ja
Publication of JPH03163630A publication Critical patent/JPH03163630A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 [産業上の利用分野] 本発明は、プロセッサのスタック制御方法、特にオペレ
ーティングシステムの割込制御に関する。
〔従来の技術] 第3図は、レベル0とレベル1の二つのリングレベルに
よるメモリ保護機能を持ったプロセッサにおける従来の
スタック制御の説明図である。
図において、タスク(1)は、レペル0のスタック(3
)とレベル1のスタック(4)によってメモリ保持され
、このスタック(3)と(4)は、タスク管理テーブル
(2)によって管理されている。
このメインのタスク(1)に対し、割込処理A(5)、
割込処理B(6)、及び割込処理C(7)が示され、こ
の各割込処理(5)、(6)、(7)は、タスク(1〉
と同様に、レベルOとレベル1のスタック(3A)と(
4A)、(3B)と(4B)、及び(3C)と(4C)
をそれぞれ静的に確保している。これらの各スタック(
3A).(4A)は割込処理管理テーブルA(8)に、
(3B)(4B)は割込処理管理テーブルB(9)に、
(3C).  (4C)は割込処理管理テーブルC(1
0)にそれぞれ管理されている。
このような構成において、タスク(1)がレベル1で動
作中であると、タスク管理テーブル(2:に示されたレ
ベル1のスタック(4)が使用される。その後タスク(
1)がレベル0にあるサブルーチンまたはQSルーチン
を呼び出すと、タスク管理テーブル(2)により、レベ
ル0のスタック(3)に切り替えられる。このようなタ
スク(1:のプログラム実行中に、非同期に割込処理A
が発生すると、QSの割込制御ルーチンが呼び出され、
現在のレジスタ値、スタックポインタ等がタスク管理テ
ーブル(2)にセーブされ、その後割込処理A(5)が
呼び出される。この時、割込処理A(5)は、独自の管
理テーブルA(8)を持っており、その管理テーブルA
(8)に示されるレベル1のスタック(4A)あるいは
レベル0のスタック(3A)が、実行される割込処理A
(5)のプログラムのレベルに合せて切り替えられる。
これらのスタック(3A).(4A)は、割込処理A(
5)が登録される時、静的に確保されているものである
さらに、割込処理A(5)が実行中に、割込処理B(6
)が発生すると、再びQSの割込制御ルーチンが呼び出
され、レジスタ値やスタックポインタ等が割込処理管理
テーブルA(8)にセーブされ、それから割込処理B(
6)が呼び出される。
この時、割込処理B(6)は独自の管理テーブルB(9
)を持っており、そこに示されているレベル1のスタッ
ク(4B)またはレベル0のスタック(3B)が、実行
される割込処理B(6)のプログラムのレベルに応じて
切り替えられる。さらに、割込処理C(7)が発生した
場合も割込処理B(6)の場合と同様に処理される。
[発明が解決しようとする課題] 従来のプロセッサのスタック制御方法は、以上のような
構成だったので、常に個々の割込処理管理テーブルにス
タックがそれぞれ配設されて個々の専属割込処理管理テ
ーブルとによって管理されており、割込処理のためのス
タック数は、割込処理数とリングレベルの数の積に等し
《なり、スタックだけに必要なメモリ量が極めて多量に
必要となってしまい、メモリ不足またはメモリ使用効率
の低下が生じるという問題があった。
この発明は係る課題を解決するためになされたもので、
割込処理に使用するスタックのメモリサイズを必要最低
限に抑え、スタックの内容を保護しながら動作するスタ
ック制御を行うことを目的とする。
[課題を解決するための手段] この発明にかかるプロセッサのスタック制御方法は、複
数の割込処理に対し、各リングレベル毎に一つずつの一
組のスックを用意し、複数の割込発生時においてもこの
一組のスタックを共用すると共に、各割込処理中に使用
したスタックの内容が、次の割込処理発生によって破壊
されることがないように、割込発生時のスタックポイン
タを次に呼び出されて割込処理を行う割込処理管理テー
ブルに動的に設定し、割込処理完了後円滑に前の処理に
復帰できるようにしたものである。
[作用] この発明によるスタックの制御方法によれば、割込発生
時に、その割込処理を行う割込処理管理テーブルに、割
込発生前の状態をベースアドレスとして設定するもので
あるから、各レベルのスタックの処理再開位置が自動的
に割り当てられ、従って、一組のスタックで複数の割込
処理管理テーブルに対応できるものとなる。
また、割込発生時に割込処理を行う割込処理管理テーブ
ルが、前の処理のスタックポインタデータを持っている
ので、割込処理完了後にその前の状態に円滑に移行でき
、割込発生前のスタックの内容が害されることもない。
[実施例1 次に、この発明の一実施例を図によって説明する。
第1図において示されたタスク(1)は、リングレベル
Oのスタック(3)とリングレベル1のスタック(4)
とを従属管理するタスク管理テーブル(2)によって処
理される。
すなわち、レベル1で実行する場合は、レベル1のスタ
ック(4)を使用し、タスク(1)がレベル0にあるサ
ブルーチンまたはQSルーチン等を呼び出した場合レベ
ル0のスタック(3)を使用する。これらのスタック(
3)と(4)は、タスク管理テーブル(2)によって管
理されている。
これに対し非同期に発生する割込処理A(5)、割込処
理B (6) 、及び割込処理C(7)等がある場合は
、タスク(1)と同様にそれぞれ割込処理管理テーブル
(8)、(9)及び(10)が用意されており、それら
の割込処理管理テーブル(8)、(9)、(10)は、
各レベル(この実施例の場合は0レベルと1レベルのニ
レベル)に一個ずつ設けた割込処理用の共用スタック(
3x)と(4X)のベースアドレスを管理している。第
1図においては、割込処理管理テーブルA(8)は、レ
ベル0の共用スタック(3X)のスタックエリア(3A
)の初期値と、レベル1の共用スタック(4X)のスタ
ックエリア(4A)の初期値を持ち、割込処理管理テー
ブルB(9)は、レベル0の共用スタック(3X)のス
タックエリア(3B)と、レベル1の共用スタック(4
X)のスタックエリア(4B)の初期値を持っているこ
とが示されている。
これらのベースアドレスは、割込処理が動作していない
場合、初期値を持っているが、割込発生時には、その割
込に該当する割込処理管理テーブルのスタックのベース
アドレスを管理しているエリアに、動的に新しいスタッ
クベースアドレスが設定されるようになっている。
このようなふるまいをするこの発明の動作が第2図に示
されている。まず、割込処理の登録あるいは、システム
初期化において、割込処理の実行環境を生成する時、初
期発生手段(S1)により予め割込処理用のスタックを
複数のリングレベルごとに1個ずつ確保しておく。
通常のタスク(1)の処理中は、タスク管理テーブル(
2)によって管理゛されたスタック(3)または(4)
を使用している。このタスク(1)が実行中に非同期に
割込処理A(5)が発生すると、該当する割込処理を選
択する選択手段(S2)が実行され、割込処理A(5)
が選び出される。
次に、(S3)により、割込処理中の割込かどうか判定
する。この時、タスク(1)が実行中であったため、設
定手段(S 4 2)が実行され、割込処理A(5)の
割込処理管理テーブルA(8)のスタックベースポイン
タ値に、初期値を設定する。
その後(S5)により割込処理A(5)が呼び出される
割込処理A(5)が実行中は、レベル1のプログラムが
動作している間はレベル1の共用スタック(4X)を使
用し、スタックエリア(4A)に値が格納される。また
、レベル0のプログラムが動作している間は、レペル0
の共用スタック(3X)を使用し、スタックエリア(3
A)に値が格納されていく。
次に、割込処理A(5)が実行中に、非同期に割込処理
Bが発生すると、選択手段(S2)により、新たに割込
処理B(6)が選択される。その後、判定手段(S3)
により割込処理中の割込発生か判定する。この場合、割
込処理A(5)の実行中であったため設定手段(S41
)により、割込処理管理テーブルB(9)のスタックベ
ースポインタのエリアに現在のスタックポインタを各レ
ベル毎に設定する。そして、呼出手段(S5)により、
割込処理B(6)を呼び出す。割込処理B(6)は、割
込処理A(5)と同様にレベルlの共用スタック(4X
)またはレベル0の共用スタック(3X〉を使用するが
、割込処理管理テーブルB(9)により、スタックのベ
ースアドレスが、割込処理A(5)で使用中のスタック
エリア(3A)(4A)を破壊しないように設定された
ため、スタックエリア(3B).  (4B)を使用す
ることになる。
次に、割込処理Bの処理が終了すると、設定手段(S 
4 3)が実行され、割込発生時のスタックポインタが
、割込処理管理テーブルB(9)を基に再設定され、中
断していた割込処理A(5)の割込発生点へ復帰処理(
S6)により復帰する。
さらに、割込処理A(5)の処理が終了すると、設定手
段(S 4 3)により、割込発生時のスタックポイン
タがタスク(1)に設定され、中断していたタスク(1
)へ、復帰処理(S6)により復帰する。
なお、上記実施例では、リングレベル0と1の2レベル
がある場合を示したが、プロセッサあるいはオペレーテ
ィングシステムによっては、2つ以上の複数のリングレ
ベルにおいても、上記実施例と同様の効果を奏する。
また、スタックのベースアドレスを設定する設定手段で
は、格納エリアに割込処理管理テーブルを用いたが、複
数のスタックベースアドレスを格納するエリア、例えば
スタックやスタックベースアドレス格納域などを用いて
も良い。
[発明の効果] この発明は以上説明したとおり、割込処理用のスタック
を各リングレベル毎に一個の一組にまとめて共用する構
成により、割込用のスタックサイズの合計を、想定され
る割込処理数に左右されず一定にでき、また、全体的な
スタックサイズを小さくできる効果がある。
【図面の簡単な説明】
第1図は、この発明の一実施例のスタック制御の説明図
、第2図は第1図に示す実施例の動作を示すフローチャ
ート、第3図は従来のスタック制御の説明図である。 図において、(1)はタスク、(2)はタスク管理テー
ブル、(3)はレベルOのスタック、(4)はレベル1
のスタック、(5)は割込処理A,(6)は割込処理B
,(7)は割込処理C1(8)は割込処理管理テーブル
A,(9)は割込処理管理テーブルB,(10)は割込
処理管理テーブルCである。

Claims (1)

    【特許請求の範囲】
  1. 複数のリングレベルのスタックとタスク管理テーブルと
    により動作するプロセッサにおいて、複数の割込処理管
    理テーブルとこの複数の割込処理管理テーブルに相応す
    る複数のスタックエリアをそれぞれ備える一組の割込処
    理用の共用スタックとを設け、割込処理が生じた場合に
    、その割込処理が以前の割込処理動作中に生じた際はそ
    の時点の以前の割込処理動作のスタックポインタをスタ
    ックベースアドレスに設定し、以前の割込処理動作がな
    かった際はスタックベースアドレスを初期値に設定した
    後に該当割込処理を呼び出して処理し、しかる後に、前
    記設定したスタックベースアドレスに復帰することを特
    徴とするプロセッサのスタック制御方法。
JP30426489A 1989-11-21 1989-11-21 プロセッサのスタック制御方法 Pending JPH03163630A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP30426489A JPH03163630A (ja) 1989-11-21 1989-11-21 プロセッサのスタック制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP30426489A JPH03163630A (ja) 1989-11-21 1989-11-21 プロセッサのスタック制御方法

Publications (1)

Publication Number Publication Date
JPH03163630A true JPH03163630A (ja) 1991-07-15

Family

ID=17930957

Family Applications (1)

Application Number Title Priority Date Filing Date
JP30426489A Pending JPH03163630A (ja) 1989-11-21 1989-11-21 プロセッサのスタック制御方法

Country Status (1)

Country Link
JP (1) JPH03163630A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000046572A (ko) * 1998-12-31 2000-07-25 강병호 마이크로프로세서의 인터럽트 스택 제어방법
JP2013522750A (ja) * 2010-03-15 2013-06-13 アーム・リミテッド 例外イベントを取り扱うための装置および方法
CN104050415A (zh) * 2013-03-15 2014-09-17 英特尔公司 用于系统调用的稳健且高性能的指令

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000046572A (ko) * 1998-12-31 2000-07-25 강병호 마이크로프로세서의 인터럽트 스택 제어방법
JP2013522750A (ja) * 2010-03-15 2013-06-13 アーム・リミテッド 例外イベントを取り扱うための装置および方法
CN104050415A (zh) * 2013-03-15 2014-09-17 英特尔公司 用于系统调用的稳健且高性能的指令
JP2014182799A (ja) * 2013-03-15 2014-09-29 Intel Corp システムコールのためのロバスト且つ高性能な命令

Similar Documents

Publication Publication Date Title
JP2883784B2 (ja) マイクロコンピュータ
EP1189137A1 (en) Interruption managing device and interruption managing method
JPH03163630A (ja) プロセッサのスタック制御方法
US6820153B2 (en) Interrupt processing and memory management method in an operation processing device and a device using the same
JP3110866B2 (ja) マイクロプロセッサ
JPS6386035A (ja) スタツクのプ−ル管理方式
JPS62151940A (ja) レジスタ退避/復帰方式
JP3717722B2 (ja) リアルタイムosのメモリ領域を用いたタスク管理方法
JP2585818B2 (ja) プログラムの呼び出し処理装置
JP2790472B2 (ja) 多重会話処理制御方式
JPS5878237A (ja) デ−タ転送処理切換方法
JP2885631B2 (ja) オペレーティングシステム管理装置およびオペレーティングシステム管理方法
JPH03257567A (ja) リンクパックエリア管理方式
JPH02173826A (ja) データ処理装置
JPH06230980A (ja) 割込み回路
JPS6353650A (ja) 計算機
JPH0954697A (ja) マイクロプロセッサ
JPH03142531A (ja) タスク多重起動制御方式
JPS62184542A (ja) 割込み装置
JPH0764802A (ja) リアルタイムシステムのシミュレーション装置
JPH04155532A (ja) タスク切替方式
JPH0497435A (ja) 例外処理制御方式
JPH07295836A (ja) 半導体集積回路装置
JPH02217931A (ja) コンピュータシステム
JPH08123698A (ja) プログラム構造