JPH04182741A - 計算機 - Google Patents

計算機

Info

Publication number
JPH04182741A
JPH04182741A JP31219290A JP31219290A JPH04182741A JP H04182741 A JPH04182741 A JP H04182741A JP 31219290 A JP31219290 A JP 31219290A JP 31219290 A JP31219290 A JP 31219290A JP H04182741 A JPH04182741 A JP H04182741A
Authority
JP
Japan
Prior art keywords
stack
trap
program
processing
stack pointer
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
JP31219290A
Other languages
English (en)
Inventor
Kiyoshi Nakada
清 中田
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 JP31219290A priority Critical patent/JPH04182741A/ja
Publication of JPH04182741A publication Critical patent/JPH04182741A/ja
Pending legal-status Critical Current

Links

Abstract

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

Description

【発明の詳細な説明】 [産業上の利用分野] この発明は、トラップ処理を実行可能な計算機に係り、
特に計算機の中央処理装置(CPU)がトラップ処理起
動を制御する計算機に関するものである。
[従来の技術] 計算機のCPUが処理するプログラムの実行を他のプロ
グラム、あるいはルーチンに移行させる制御方法のなか
で、外部割込み、ソフトウェアトラップ命令の実行、命
令の実行による例外の発生等に起因してあらかじめ用意
しておいたそれらに対応する処理を起動するトラップ処
理がある。
このようなトラップ処理機能を持つ計算機のCPUが複
数のスタックを管理し、上記トラップ発生時に同時にス
タックの切り換えを行う場合がある。このような機能は
、トラップ処理プログラムと被トラッププログラムの使
用するスタックを分けるために用いられるものである。
従来、上記スタック切り換えを伴うトラップ処理の制御
方式では、トラップ発生時には、被トラッププログラム
への復帰情報は前記被トラッププログラムの使用してい
たスタック(旧スタックと称する)ではなく、トラップ
処理プログラムの使用するスタック(以下、新スタック
と称する)に退避される。この制御の際に退避される上
記復帰情報は実行アドレス、プロセッサ状態等の専用レ
ジスタ値、汎用レジスタ値、スタックポインタ値等であ
る(以下、それぞれ旧実行アドレス、旧プロセッサ状態
、旧汎用レジスタ値、旧スタックポインタ値と称する。
また、これらの復帰情報をコンテキストと総称する)。
次に、前記トラップ処理プログラムの処理を終了し、前
記被トラッププログラムへ復帰する制御では、新スタッ
ク上に退避されている前記復帰情報を基に実行アドレス
、プロセッサ状態、レジスタ値等を元のレジスタ群に戻
し、スタックを旧スタックに戻して、実行を被トラップ
プログラムに戻す。
このようなトラップ制御方式では、トラップ処理終了後
に必ず同じ被トラッププログラムに戻すことを前提とし
ている。しかし、マルチタスク処理を行うオペレーティ
ングシステムのように、複数のコンテキストをソフトウ
ェアまたはハードウェアで管理している場合には、複数
の被トラッププログラムが存在し、トラップ処理から任
意の被トラッププログラムへの復帰が行われる。この処
理の場合、前記従来技術では、新スタック上に退避され
た復帰情報全てを別の復帰情報と置き換えて復帰させる
という煩雑なデータ処理が必要となり、プログラム実行
の効率を低下させていた。
[発明が解決しようとする課題] マルチタスク処理等で複数のプログラム(タスク)を管
理している場合、トラップ処理プログラムはオペレーテ
ィングシステム等の管理プログラムであり、通常計算機
のCPU (中央処理装置)1台に1つ存在する。
一方、上記タスクは、被トラッププログラムであり、1
台のCPU下に複数存在する。そして、1つのタスクか
ら管理プログラムへの移行はトラップ発生で行われ、管
理プログラムからタスク(上記タスクと同じとは限らな
い)への移行はトラップ処理からの復帰で行われる。
このようなマルチタスク処理を従来技術のトラップ制御
方式で行う場合、常に新スタック上に被トラッププログ
ラム(タスク)への復帰情報が退避されるので、計算機
のCPU上の全てのタスクそれぞれへの復帰情報(コン
テキスト)を管理するためには、それらの復帰情報を管
理する領域を設け、トラップ処理プログラムはトラップ
が発生する毎に復帰情報を前記管理領域へ格納しなくて
はならない。また、トラップ処理からの復帰時には、任
意の被トラッププログラムへ戻すために前記新スタック
上の復帰情報を戻したいプログラムへの復帰情報と交換
して退避し直さなければならない。以上の処理は、マル
チタスク処理に伴うオーバヘッドを増加させ、プログラ
ムの実行効率を低下させてしまう問題点があった。
この発明は、上記の問題点を解決するためになされたも
ので、トラップ発生の際の復帰情報のスタック先と、ト
ラップ処理からの復帰時のスタック先をスタックポイン
タにより指定管理することにより、スタックポインタ管
理のみでトラップ処理から任意のプログラムへ実行を復
帰できる計算機を得ることを目的とする。
[課題を解決するための手段] この発明に係る計算機は、トラップ処理発生時には、レ
ジスタ上の復帰情報を被トラッププログラムの使用する
旧スタック上へ退避後の旧スタックポインタの値をトラ
ップ処理プログラムへ移行した時に保持する保持手段と
、トラップ処理からの復帰時には、所定の旧スタック管
理情報を参照しながらレジスタに復帰させるための任意
の旧スタックポインタを指定する指定手段とを設けたも
のである。
[作用] この発明においては、トラップ発生の際の復帰情報を被
トラッププログラムの使用する旧スタック上へ退避し、
トラップ処理プログラムへ移行した時は、旧スタックポ
インタ値のみを保持手段に保持させ、トラップ処理から
の復帰時に、指定手段が所定の旧スタック管理情報を参
照しながら任意の旧スタックを指定し、任意の被トラッ
プブロダラムへ復帰させる。
[実施例1 第1図はこの発明の一実施例を示す計算機の構成を説明
するブロック図であり、この実施例を適用する計算機で
は、マルチタスク処理を行う管理プログラム(以下、O
8と称する)とその管理プログラムに管理されるいくつ
かのプログラム(以下、タスクと称する)が計算機のC
PUで実行されている。このとき、前記O8はトラップ
処理プログラム、前記タスクは被トラッププログラムに
それぞれ割り当てられる。トラップ制御の際のスタック
切り換えは計算機のCPUによって行われ、切り換え前
のタスクの使用していた旧スタック(以下、Uスタック
と称する)を指すポインタ(以下、Uスタックポインタ
と称する)と、切り換え後の新スタック(以下、Sスタ
ック)と称する)を指すポインタ(以下、Sスタックポ
インタと称する)を計算機のCPUがハードウェアで管
理するための手段を有する。
一方、タスクは複数存在し、Uスタックもその数だけ存
在するが、前記Uスタ・ツクポインタカ5何番目のりス
タックを指してしする力)の管理むま前1己O8が行い
、そのためのしスタック管理領域も後述する記憶装置上
に設けてl/Aる。
図において、9は計算機のCPU (中央処理装置)で
、制御回路8.スタ・ツクポインタ1,2゜レジスタ群
3を内包している。ここで、制御回路8は、本トラップ
制御等を実現する回路である。
1はSスタックポインタで、切り換え後のSスタック4
を指している。2はU、スタックポインタ、3はレジス
タ群で、計算機の現在の実行状態(コンテキスト)を保
持する装置で、実11アドレスポインタ、プロセッサ状
態後等の専用レジスタと計算等に使用する汎用レジスタ
力)らなる。7ζま暑己憶装置で、Sスタック4.tJ
スタック群5を備えており、Uスタック群5は前記タス
クの数だけのUスタック(この実施例では1〜n個)5
1〜5nから構成されている。
また、これらのしスタック群5を管理するためにUスタ
ック管理領域6も同じく記憶装置7上番こ設けられてい
る。Uスタック管理領域6は前記Uスタック51〜5n
をそれぞれ指すしスタックポインタ群を格納して管理す
る。
このように構成された計算機において、トラップ発生の
際の復帰情報を被トラッププログラムの使用する旧スタ
ック(Uスタック(この実施例では1−n個)51〜5
n)上へ退避し、トラップ処理プログラムへ移行した時
は、旧スタックポインタ値のみを保持手段(この実施例
ではりスタック管理領域6)に保持させ、トラップ処理
からの復帰時に、指定手段(Uスタックポインタ2)が
所定の旧スタック管理情報(この実施例ではoSにより
Uスタック管理領域6に記憶管理される)を参照しなが
ら任意の旧スタックを指定し、任意の被トラッププログ
ラムへ復帰させる。
以下、第2図、第3図を参照しながら計算機におけるト
ラップ発生時およびトラップ処理からの復帰前後の状態
変化について説明する。
第2図は、第1図に示した記憶装置7におけるトラップ
発生前後の状態推移を説明する概念図であり、第1図と
同一のものには同じ符号を付しである。
トラップ発生前では1番目のタスク(以下、タスク1と
称する)が実行中であり、レジスタ群3には前記タスク
1のコンテキストが保持されている。また、スタックは
Uスタック51を使用中であり、Uスタックポインタ2
がそのスタックを指している。Sスタックポインタ1は
Sスタック4を指しているがトラップ発生前なので、U
スタックポインタ2がスタックポインタとして使用され
、Uスタック51がスタックとして使用されている。
トラップが発生すると、計算機のCPUはレジスタ群3
に保持されている前記タスク1のコンテキストなUスタ
ック51に退避し、その結果Uスタックポインタ2の保
持する値も変化する。さらに、計算機のCPUは使用す
るスタックポインタをSスタックポインタ1に切り換え
るので、使用するスタックはSスタック4に切り替わる
。そして、レジスタ群3に保持される実行アドレスなど
のコンテキストをトラップ処理プログラム(O8)にす
ることによってO8に処理を移行する。
このとき、Uスタックポインタ2にはUスタック1を指
す値がそのまま保持され、O8からしスタックを参照す
るための情報として残る。以上のトラップ発生時の動作
を第4図(a)に示す。
次に、第3図を参照しながらトラップ処理からの復帰時
の動作について説明する。
第3図は第1図に示した記憶装置7におけるトラップ処
理からの復帰前後の状態推移を説明する概念図であり、
第1図と同一のものには同じ符号を付しである。なお、
第3図においては、O8の処理の結果、復帰先を元のタ
スク1とは別のタスク2にする場合に対応する。
復帰前ではトラップ処理プログラム(O8)が実行中で
あり、レジスタ群3には前記O8のコンテキストが保持
されている。また、スタックはSスタック4を使用中で
あり、Sスタックポインタ1がそのスタックを指してい
る。また、スタックはSスタック4を使用中であり、S
スタックポインタ1がそのスタックを指している。O8
がタスクを管理するための何らかの処理を行った結果、
トラップからの復帰先を、被トラッププログラムである
タスク1とは別のプログラム(以下、タスク2と称する
)にすることになっている。そのために、O8はトラッ
プからの復帰前にUスタックポインタ2の値をタスク2
のコンテキストが退避されているUスタック52を指し
ているUスタ・ツクポインタ2に交換している。Uスタ
ックポインタ値の交換は、Uスタック管理領域6の値を
基に行う。
このように、Uスタックポインタ2の値は、Uスタック
52を指しているがトラップ処理からの復帰前なので、
Sスタックポインタ1がスタックポインタとして使用さ
れ、Sスタック4がスタックとして使用されている。
トラップ処理からの復帰命令が実行されると、計算機の
CPUは使用するスタックポインタをSスタックポイン
タ1からUスタックポインタ2に切り換えるので、使用
するスタックがSスタック4からUスタック52に切り
替わることになる。
続いて、計算機のCPUはスタック(つまりUスタック
52から)から復帰情報としてタスク2のコンテキスト
をレジスタ群3へ復帰するので、結果としてタスク2に
実行が移行することとなる。
以上のトラップ処理からの復帰動作第4図(b)に示す
以上の復帰処理(タスク切り換え処理)を従来技術で行
うと、各タスクのコンテキスト全部をスタックと管理領
域の間で交換する必要があり、非常に煩雑で処理時間も
かかる。一方、この発明の制御によれば、各タスクのス
タックポインタ値のみの管理でタスク切り換え処理を行
うことができるので、O8の負担を軽減し、マルチタス
ク処理の効率を向上させることができる。
第4図(a)はこの発明に係る計算機におけるトラップ
発生処理手順の一例を示すフローチャートである。なお
、(1)〜(3)は各ステップを示す。
先ず、被トラッププログラムのコンテキストをUスタッ
クに退避しく1)、スタックポインタをUスタックポイ
ンタ2からSスタックポインタ1に切り替える(2)。
次いで、レジスタ群3にトラ・ツブ処理プログラムのコ
ンテキストをロードしく3)、処理を終了する。
第4図(b)はこの発明に係る計算機におけるトラップ
処理からの復帰処理手順の一例を示すフローチャートで
ある。なお、(1) 、  (2)は各ステップを示す
先ず、スタックポインタをSスタックポインタ1からU
スタックポインタ2に切り替える(1)。
次いで、Uスタックから復帰情報(被トラッププログラ
ムのコンテキスト)をレジスタ群3にロードしく2)、
処理を終了する。
なお、上記実施例ではトラップ発生前の旧スタックポイ
ンタ値の保持を専用レジスタによって行ったが、旧スタ
ックポインタ値を新スタックに退避することで実現して
も良い。また、トラップ処理からの復帰の際の旧スタッ
クの指定を上記と同じく専用レジスタで行ったが、旧ス
タックの指定情報を新スタック上から参照したり、復帰
命令のオペランドとして指定することで実現していもよ
い。何れの場合にも、上記実施例と同等の効果が得られ
る。
[発明の効果] 以上説明したように、この発明はトラップ処理発生時に
は、レジスタ上の復帰情報を被トラッププログラムの使
用する旧スタック上へ退避後の旧スタックポインタの値
をトラップ処理プログラムへ移行した時に保持する保持
手段と、トラップ処理からの復帰時には、所定の旧スタ
ック管理情報を参照しながらレジスタに復帰させるため
に任意の旧スタックポインタを指定する指定手段とを設
けたので、スタック切り換えを伴うトラップ処理制御に
おいて、各タスクに対応する各復帰情報を被トラッププ
ログラムのスタック上へ退避する処理を、スタックポイ
ンタのみで管理できるため、従来のような復帰情報全て
の管理領域が不要となり、トラップ処理プログラム中で
の新スタック上と上記管理領域との復帰情報の交換も不
要となる。また、復帰時に旧スタックを指定するだけで
、指定した任意の被トラッププログラムへ復帰すること
が可能となる。
従って、マルチタスク管理プログラムの処理を軽減させ
、マルチタスク処理効率を大幅に向上できる効果を奏す
る。
【図面の簡単な説明】
第1図はこの発明の一実施例を示す計算機の構成を説明
するブロック図、第2図は、第1図に示した記憶装置に
おけるトラップ、発生前後の状態推移を説明する概念図
、第3図は第1図に示した記憶装置におけるトラップ処
理からの復帰前後の状態推移を説明する概念図である。 第4図(a)はこの発明に係る計算機におけるトラップ
発生処理手順の一例を示すフローチャート、第4図(b
)はこの発明に係る計算機におけるトラップ処理からの
復帰処理手順の一例を示すフローチャートである。 図において、1はSスタックポインタ、2はUスタック
ポインタ、3はレジスタ群、4はSスタック、5はUス
タック群、6はUスタック管理領域、7は記憶装置、8
は制御回路、9はCPU(中央処理装置)である。 なお、図中の同一符号は同一または相当部分を示す。 代理人 大 岩 増 雄    (外2名)第4図 (a)                 (b)第3
図 手続補正帯(自発) 平成  年  月  日

Claims (1)

    【特許請求の範囲】
  1.  トラップ処理の実行に伴って複数のスタックを記憶媒
    体上で管理して、前記トラップ処理の実行時に所望のス
    タックへの切り換えを行いマルチタスク処理を実行する
    計算機において、前記トラップ処理発生時には、レジス
    タ上の復帰情報を被トラッププログラムの使用する旧ス
    タック上へ退避後の前記旧スタックポインタの値をトラ
    ップ処理プログラムへ移行した時に保持する保持手段と
    、前記トラップ処理からの復帰時には、所定の旧スタッ
    ク管理情報を参照しながら前記レジスタに復帰させるた
    めの任意の前記旧スタックポインタを指定する指定手段
    とを具備したことを特徴とする計算機。
JP31219290A 1990-11-16 1990-11-16 計算機 Pending JPH04182741A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP31219290A JPH04182741A (ja) 1990-11-16 1990-11-16 計算機

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP31219290A JPH04182741A (ja) 1990-11-16 1990-11-16 計算機

Publications (1)

Publication Number Publication Date
JPH04182741A true JPH04182741A (ja) 1992-06-30

Family

ID=18026324

Family Applications (1)

Application Number Title Priority Date Filing Date
JP31219290A Pending JPH04182741A (ja) 1990-11-16 1990-11-16 計算機

Country Status (1)

Country Link
JP (1) JPH04182741A (ja)

Similar Documents

Publication Publication Date Title
JPH0353328A (ja) レジスタ退避回復方法ならびに処理装置
US20020073410A1 (en) Replacing software at a telecommunications platform
JPS62221732A (ja) 情報処理装置
US7434222B2 (en) Task context switching RTOS
US6820153B2 (en) Interrupt processing and memory management method in an operation processing device and a device using the same
US6332199B1 (en) Restoring checkpointed processes including adjusting environment variables of the processes
JPH04182741A (ja) 計算機
JPH08235011A (ja) 異なる環境空間での連続運転方法およびそのための装置
JPS62151940A (ja) レジスタ退避/復帰方式
JPH01217635A (ja) レジスタ退避方式
JPS61184643A (ja) 仮想計算機の起動制御方式
JPH02163834A (ja) マルチ・タスク処理方式
JPH076045A (ja) 多重処理システムにおけるメモリ管理方法
JPH0333954A (ja) 情報処理装置
JP2004021610A (ja) タスク管理装置
JPH0421028A (ja) レジスタ管理方法
JPH08185341A (ja) Cpuシミュレータ
JPH04155532A (ja) タスク切替方式
Timmerman et al. Can Windows NT 4.0 be used as an RTOS?
JPH0340139A (ja) マルチタスクシステムにおけるコンテキスト切換方法
JPH0222736A (ja) 中央処理装置
JPH06149593A (ja) マルチタスク実行装置
JPH0830466A (ja) マルチタスク切り換え制御方法
JPH10289113A (ja) 計算機のレジスタコンテキストの保存/復元方式
JPS62140158A (ja) 情報処理装置