JPH08123698A - プログラム構造 - Google Patents

プログラム構造

Info

Publication number
JPH08123698A
JPH08123698A JP28612894A JP28612894A JPH08123698A JP H08123698 A JPH08123698 A JP H08123698A JP 28612894 A JP28612894 A JP 28612894A JP 28612894 A JP28612894 A JP 28612894A JP H08123698 A JPH08123698 A JP H08123698A
Authority
JP
Japan
Prior art keywords
stack
task
interrupt
interrupt processing
register
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
JP28612894A
Other languages
English (en)
Inventor
Kiyoshi Satomi
清 里見
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP28612894A priority Critical patent/JPH08123698A/ja
Publication of JPH08123698A publication Critical patent/JPH08123698A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 マルチタスクシステムにおいて、割り込み処
理が使用するスタックを共通化しRAMサイズを節約す
る。 【構成】 割り込み処理が発生したときに、戻りPカウ
ンタBにスタックAの中断ポイント、及びワークエリア
Pxにいずれのスタックが退避したかを記憶したのちに
スタックポインタを割り込み処理側に切替え、上記割り
込み処理が終了したときに戻りPカウンタB、及びワー
クエリアPxに記憶されたデータに基づきCPUレジス
タセットCに退避したスタックポインタを復帰させるよ
うにする。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、マルチタスクシステム
を実行する場合に、メモリの容量を節約するプログラム
構造に関するものである。
【0002】
【従来の技術】最近では、コンピュータによる仕事の単
位であるタスクを、一度に2以上こなすことができるマ
ルチタスクシステムが一般的になってきている。このマ
ルチタスクシステムを用いることによって、複数のタス
クを終了させることなく切替えて実行することができる
ようになる。
【0003】図4はマルチタスクシステムにおける、R
AM(Random Access Memory)の使用状況の一例を摸式
的に示す図である。これらの図は、各タスクが使用する
メモリ領域(以下、スタックという)毎に示されてい
る。すなわち、RAM上にはマルチタスクシステムによ
って実行される複数のタスク1、タスク2・・・タスク
nの複数のスタックが構築されることとなる。
【0004】各スタックは、タスクが使用するスタック
A(A1 〜An )、戻りPカウンタ(Program Counter
)B(B1 〜Bn )、CPUレジスタセットC(C1
〜Cn、割り込み処理が使用するスタックD(D1 〜Dn
)などによって構成されている。タスクが使用するス
タックAは現在実行されているタスクが動作するエリ
ア、戻りPカウンタBは現在実行されているタスクの処
理ステップなどの処理ポイントを随時記憶するエリアで
ある。また、CPUレジスタセットCはスタックDにお
いて割り込み処理が実行されるときに現在実行中のタス
クが退避するエリアである。
【0005】上記した割り込み処理とはタスク(通常処
理)が実行されているときに、このタスクを一時的に中
断して、例えばタイマ等の制御により所定の時間毎に実
行される処理や、リモートコマンダ等によって実行され
る処理である。そして割り込み処理が使用するスタック
1 、D2 ・・・Dn ではすべて同じ内容の処理が実行
される。例えば図4(a)に示したタスク1が実行され
ているときに、割り込み処理が発生した場合は、タスク
1が実行されているスタックA1 とともに構築されてい
る割り込み処理用のスタックD1 において実行されるこ
ととなる。また同じように同図(b)に示されているタ
スク2が実行されているときに割り込み処理が実行され
る場合は、タスク2が実行されているスタックA2 とと
もに構築されている割り込み処理用のスタックD2 にお
いて実行されることとなる。
【0006】割り込み処理が行われる場合は、スタック
1 で実行されているタスク1は一時中断してCPUレ
ジスタC1 に退避することとなり、このとき戻りPカウ
ンタB1 に中断ポイントが記憶される。そして割り込み
処理が終了すると戻りPカウンタB1 に記憶された中断
ポイントに戻って処理を再開する。このように、各スタ
ックに通常処理、及び割り込み処理用のスタックを構築
することにより、マルチタスクシステムによって複数の
タスクを実行中に所定の割り込み処理を行うことができ
るようになっている。
【0007】
【発明が解決しようとする課題】しかしながら、図4に
示したスタック構造では、タスク側で使用するスタック
A、割り込み処理側で使用するスタックD及びCPUレ
ジスタセットCを各タスク毎に確保しているので、タス
ク数が増加する場合はそれにともないRAMの容量も増
加することとなり、大容量のメモリが必要になってく
る。また、割り込み処理側で使用するスタックサイズ
が、割り込み処理毎に変更されると、すべてのスタック
サイズに影響をあたえるため、トラブルが発生しやすく
なるという問題点がある。
【0008】
【課題を解決するための手段】本発明はこのような問題
点を解決するためになされたもので、マルチタスクシス
テムを実行するn個のスタックと、上記n個のスタック
個々に対応して構築され、各スタックの中断ポイントを
記憶するプログラムカウンタと、上記n個の各スタック
に対して共有されて機能する割り込み処理スタックと、
割り込み処理が発生したときに実行中のスタックが退避
されるCPUレジスタと、上記割り込み処理によって上
記n個のスタックのいずれのスタックが上記CPUレジ
スタに退避したかを記憶するスタックレジスタにより構
成され、上記割り込み処理が発生したときに、プログラ
ムカウンタにスタックの中断ポイント、及び上記スタッ
クレジスタにいずれのスタックが退避したかを記憶した
のちにスタックポインタを割り込み処理側に切替え、上
記割り込み処理が終了したときに上記プログラムカウン
タ、及び上記スタックレジスタに記憶されたデータに基
づき上記CPUレジスタに退避したスタックを復帰させ
てスタック側の処理を再開させるようにする。また、上
記割り込み処理スタック、及びCPUレジスタ、及びス
タックレジスタをそれぞれ複数構成し多重割り込みに対
応するように構築する。
【0009】
【作用】本発明によれば、割り込み処理が使用するメモ
リの容量を削減して節約することができるようになる。
【0010】
【実施例】以下、本発明の実施例を説明する。図1
(a)(b)(c)(d)(e)は本実施例のプログラ
ム構造を摸式的に示す図であり、図4と同一部分は同一
符号を付して説明を省略する。本実施例のプログラム構
造のタスク1〜nのスタックは、同図(a)(b)
(c)に示されているように、タスク側で使用するスタ
ックA1 〜An 及び戻りPカウンタB1 〜Bn で構成さ
れ、同図(d)に示されているように割り込み処理側の
スタックDr、及びCPUレジスタセットCrはスタッ
ク1〜nとは別に構築されている。そしてタスク1〜n
に割り込み処理が発生した場合は割り込み処理側のスタ
ックDr、及びCPUレジスタセットCrを共有して処
理を行うこととなる。
【0011】つまり、図4で説明した従来のプログラム
構造と比較して、各スタックに対応して構築された割り
込み処理側のスタックD1 〜Dn 、及びCPUレジスタ
セットC1 〜Cn が占める容量が削減されることとな
る。また、本発明では割り込み処理側のスタックDrと
ともに、スタックレジスタPxが設けられ、どのタスク
がCPUレジスタセットCrに退避したか(スタックポ
インタ)を記憶するようになされている。
【0012】例えば同図(a)に示されているタスク1
が実行されているときに割り込み処理を行う場合は、タ
スク1で実行されているCPU内容を同図(d)に示さ
れているCPUレジスタセットCrに退避させる。この
とき、スタックレジスタPxにはCPUレジスタセット
Crに現在タスク1が退避していることが記憶され、さ
らに、戻りPカウンタB1 にタスクの中断ポイントを記
憶する。そして、割り込みが終了するとスタックレジス
タPx及び戻りPカウンタB1したがいタスク1の所定
のポイントから処理が再開されることとなる。
【0013】図2は実施例のマルチタスクシステムにお
ける割り込み処理を示すフローチャートである。なお、
この図に示されているフローチャートは複数の割り込み
処理を同時に受け付ける多重割り込みを禁止した場合の
一例を示している。まず、ステップS001で割り込みが禁
止とされ、これによって多重割り込みが禁止されること
となる。そして、現在実行中のタスクのスタックポイン
タをスタックレジスタPxに退避させて(S002)、スタ
ックポインタを割り込み側のスタックに切替え(S00
3)、さらに、図1(d)に示したCPUレジスタセッ
トCrに現在まで実行していたタスクのCPUレジスタ
を退避させる(S004)。なお、実行が中断されたタスク
の中断ポイントはそのタスクの戻りPカウンタB(B1
〜Bn のいずれか)に記憶されている。このように、ス
テップS002〜S004の処理を経た後にステップS005におい
て割り込み処理が行われることとなる。
【0014】割り込み処理が行われた後は、まずステッ
プS004でCPUレジスタセットCrに退避させたCPU
レジスタを復帰させる(S006)。そしてさらに、ステッ
プS002でスタックレジスタに退避させたスタックポイン
タを復帰させて割り込み処理を終了させ(S007)、他の
割り込み処理を許可するようにする(S008)。割り込み
処理が行われたのちに再開されるタスクの開始ポイント
は、元のスタックの戻りPカウンタBに記録されたポイ
ントとされ、このポイントから割り込み処理によって中
断されたタスクが再開されることとなる(S009)。
【0015】また図3のフローチャートに示されている
ように、割り込み処理を行っている最中でも他の割り込
み処理を受け付ける多重割り込み処理に対応することも
できる。この場合図1(e)に示したようにCPUレジ
スタセットCr(Cr1 、Cr2 ・・・)、スタックD
r(Dr1 、Dr2 ・・・)、スタックレジスタPx
(Px1 、Px2 ・・・)を割り込み処理の数に対応し
て複数構成する。
【0016】多重割り込み処理を行う場合は、割り込み
処理がタスク側の処理を実行中に発生したか、又は割り
込み処理中に発生したかをチェックするために、割り込
みカウンタFを設けて現在実行中の処理を判別するよう
にする。すなわち、割り込みカウンタFが例えば『0』
である場合はタスク側の処理を実行中、また割り込みカ
ウンタFが『0』以外の『1』、『2』、『3』・・・
である場合は割り込み処理を実行中にその数値に対応し
た数の割り込み処理が発生したこととなる。
【0017】まず、初期設定として割り込みカウンタF
に『0』を設定する(S101)。そして割り込み処理が発
生すると(S102)、ここでは一旦割り込み処理を禁止し
て(S103)、割り込みカウンタの判別をおこなう(S10
4)。このとき、割り込みカウンタFが『0』である場
合、はタスク処理への割り込みを行うためにステップS1
05に進み、割り込みカウンタFが『0』以外である場合
は既に実行されている割り込み処理に対して割り込みを
行うためにステップS105を迂回してステップS106に進
む。
【0018】ステップS105では先程図2に示したステッ
プS002〜S003と同様に、タスク側のスタックポインタを
退避して、スタックポインタを割り込みスタック側に切
替え、さらにステップS106で割り込みカウンタFのイン
クリメント処理がなされる。そして実行していたタスク
のCPUレジスタを退避した後に(S107)割り込みが許
可され(S108)、第Fの割り込み処理が行われることと
なる(S109)。
【0019】ステップS109で割り込み処理が行われてい
るときにステップS110で割り込み処理の発生が検出され
ると、ステップS111に進み第Fの割り込み処理のレジス
タを退避させ、再びステップS103にもどり所定の処理が
なされることとなる。つまり、多重割り込みの場合、そ
の割り込みの回数だけステップS106で割り込みカウンタ
がインクリメントされようになる。したがって、割り込
み処理が発生する間はステップS103〜S111の処理を繰り
返して第Fの割り込み処理が行われる。
【0020】また、ステップS110で割り込み処理がない
と判別された場合はステップS112に進み、ステップS103
〜S111で行われている第Fの割り込み処理が終了したか
否をが判別する。ここで第Fの割り込み処理が終了して
いないと判別されるとステップS109に戻り第Fの割り込
み処理が続けられる。また第Fの割り込み処理が終了し
たと判別されるとステップS113に進み割り込みが禁止さ
れる。そして割り込みカウンタFがデクリメントされ
(S114)、割り込みカウンタFが『0』か否かを判別す
る(S115)。ここで割り込みカウンタFが『0』でない
場合は第Fの割り込み処理のレジスタ及び戻りPカウン
タB、すなわち今まで実行していた割り込み処理の前の
割り込み処理についてのレジスタ及び戻りPカウンタを
復帰させ(S116)、ステップS108にもどり第Fの割り込
み処理が行われる。つまり、割り込みカウンタFをデク
リメントすることによって、現在までに割り込んだ処理
を順次さかのぼって実行していくこととなる。
【0021】また、割り込みカウンタFが『0』である
場合は、割り込み処理がすべて終了したこととなり、タ
スク側のスタックのレジスタを復帰(S117)、さらにタ
スク側のスタックポインタを復帰させ(S118)、割り込
みを許可した後にタスク側の処理へと移行するようにす
る。
【0022】
【発明の効果】以上、説明したように本発明はマルチタ
スクシステムにおいてタスクが使用するスタックを複数
構成しても、割り込み処理が利用するスタックを共通化
しているので、メモリの容量を(タスク数−1)×(退
避するCPUレジスタセット+割り込み側で使用するス
タック数)だけ節約することができるようになる。した
がって、小容量のメモリでマルチタスクシステムを稼働
することが可能となる。また、多重割り込みが発生した
場合でも、その多重割り込み処理用のスタックは割り込
み処理スタック上に構築されるので、メモリ節約を実現
することができるという利点がある。
【図面の簡単な説明】
【図1】本発明の実施例のスタック構造を摸式的に示す
図である。
【図2】実施例の割り込み処理の流れを説明するフロー
チャートである。
【図3】実施例の多重割り込み処理の流れを説明するフ
ローチャートである。
【図4】従来のマルチタスクシステムにおけるスタック
構造を摸式的に示す図である。
【符号の説明】
A タスク側で使用するスタック B 戻りPカウンタ C CPUレジスタセット D 割り込み処理で使用するスタック Px スタックレジスタ

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 マルチタスクシステムを実行するn個の
    スタックと、 上記n個のスタック個々に対応して構築され、各スタッ
    クの中断ポイントを記憶するプログラムカウンタと、 上記n個の各スタックに対して共有されて機能する割り
    込み処理スタックと、 割り込み処理が発生したときに実行中のスタックが退避
    されるCPUレジスタと、 上記割り込み処理によって上記n個のスタックのいずれ
    のスタックが上記CPUレジスタに退避したかを記憶す
    るスタックレジスタにより構成され、 上記割り込み処理が発生したときに、プログラムカウン
    タにスタックの中断ポイント、及び上記スタックレジス
    タにいずれのスタックが退避したかを記憶したのちにス
    タックポインタを割り込み処理側に切替え、上記割り込
    み処理が終了したときに上記プログラムカウンタ、及び
    上記スタックレジスタに記憶されたデータに基づき上記
    CPUレジスタに退避したスタックを復帰させるように
    したことを特徴とするプログラム構造。
  2. 【請求項2】 上記割り込み処理スタック、及びCPU
    レジスタ、及びスタックレジスタをそれぞれ複数構成し
    多重割り込みに対応するようにしたことを特徴とする請
    求項1に記載のプログラム構造。
JP28612894A 1994-10-27 1994-10-27 プログラム構造 Pending JPH08123698A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP28612894A JPH08123698A (ja) 1994-10-27 1994-10-27 プログラム構造

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP28612894A JPH08123698A (ja) 1994-10-27 1994-10-27 プログラム構造

Publications (1)

Publication Number Publication Date
JPH08123698A true JPH08123698A (ja) 1996-05-17

Family

ID=17700297

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28612894A Pending JPH08123698A (ja) 1994-10-27 1994-10-27 プログラム構造

Country Status (1)

Country Link
JP (1) JPH08123698A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001022222A1 (fr) * 1999-09-17 2001-03-29 Keihin Corporation Unite de commande d'une automobile

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001022222A1 (fr) * 1999-09-17 2001-03-29 Keihin Corporation Unite de commande d'une automobile

Similar Documents

Publication Publication Date Title
EP1189137A1 (en) Interruption managing device and interruption managing method
KR970016979A (ko) 다중 처리 시스템에서 타스크의 큐잉 시스템 및 방법
JPH02144630A (ja) データ処理装置
US20050028159A1 (en) Memory managing system and task controller in multitask system
US7003610B2 (en) System and method for handling shared resource writes arriving via non-maskable interrupts (NMI) in single thread non-mission critical systems with limited memory space
US6820153B2 (en) Interrupt processing and memory management method in an operation processing device and a device using the same
JPH08123698A (ja) プログラム構造
KR101838474B1 (ko) 다중프로세서 시스템에서의 예외 제어
JP2003058381A (ja) プログラムによる例外処理設定を可能にしたプロセッサ
JP2000076081A (ja) タスクマネージャー及びプログラム記録媒体
JP2008225710A (ja) コンピュータシステム及び該システムで用いられるプロセス切替え方法
JPH03163630A (ja) プロセッサのスタック制御方法
JPH04155532A (ja) タスク切替方式
JP3022398B2 (ja) 仮想計算機方式
JPH10247161A (ja) メモリ管理方式
JPS6373425A (ja) イベント処理順序制御方式
JPH02110739A (ja) マルチタスク用中央処理装置
JPH0495137A (ja) オペレーティングシステムのコンテキスト切替方式
JPH03142531A (ja) タスク多重起動制御方式
JPH11242601A (ja) タスク切り替えシステム
JPH02113363A (ja) マルチプロセッサシステムにおけるタイムスライス制御方式
WO2005085994A2 (en) Multi-tasking data processing system
JPS61125648A (ja) システム・コ−ル制御方式
JPH08329226A (ja) 画像形成装置
JPH0486919A (ja) マイクロプログラム制御装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040127

A521 Written amendment

Effective date: 20040319

Free format text: JAPANESE INTERMEDIATE CODE: A523

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040831