WO2023144939A1 - コンピュータ、制御方法及び制御プログラム - Google Patents

コンピュータ、制御方法及び制御プログラム Download PDF

Info

Publication number
WO2023144939A1
WO2023144939A1 PCT/JP2022/002931 JP2022002931W WO2023144939A1 WO 2023144939 A1 WO2023144939 A1 WO 2023144939A1 JP 2022002931 W JP2022002931 W JP 2022002931W WO 2023144939 A1 WO2023144939 A1 WO 2023144939A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
execution
stack
execution state
stack frame
Prior art date
Application number
PCT/JP2022/002931
Other languages
English (en)
French (fr)
Inventor
寿和 加藤
整 山本
正孝 家田
Original Assignee
三菱電機株式会社
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 三菱電機株式会社 filed Critical 三菱電機株式会社
Priority to PCT/JP2022/002931 priority Critical patent/WO2023144939A1/ja
Priority to JP2023554323A priority patent/JP7418670B2/ja
Publication of WO2023144939A1 publication Critical patent/WO2023144939A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

コンテキストスイッチ処理部(112)は、スタックポインタ値で指し示されたスタックフレームを用いて、コンテキストスイッチを行う。実行状態復元準備部(109)は、第1のプログラムが関数呼び出しにより第2のプログラムを呼び出し、第1のプログラムが実行を中断した後に、第2のプログラムが既定時間を超えて実行されている場合に、第1のプログラムの実行中断前の実行状態を復元するためのスタックフレームである、第1プログラムスタックフレームをコンテキストスイッチ処理部(112)で用いられるスタックフレームの構成に合わせて第1のプログラム用のスタック領域に構築する。また、実行状態復元準備部(109)は、スタックポインタ値に、第1プログラムスタックフレームの先頭アドレス値を設定する。

Description

コンピュータ、制御方法及び制御プログラム
 本開示は、コンピュータで行われるコンテキストスイッチに関する。
 産業機器のような組込みシステムを実現するコンピュータでは、適用先の特性に応じた制御を実現する必要がある。多様化する個々のニーズに迅速に対応するためには、共通的な機能を提供するベースプログラムと、拡張機能を提供するアドオンプログラムとをコンピュータに実装することが考えられる。
 ベースプログラムとは異なる開発元が開発するアドオンプログラムをコンピュータに実装する場合は、不具合等によりアドオンプログラムが実行時間の既定の上限を超えて実行される事象(以下、このような事象を「オーバラン」という)が発生する可能性がある。オーバランが発生すると、ベースプログラムに制御が戻らず、コンピュータが暴走する可能性がある。
 既存タスクの処理の一部として、関数呼び出しによりアドオンプログラムを実行させる場合に、オーバランが発生した際に当該タスクを強制終了するとアドオンプログラムの後で実行されるべきベースプログラムが実行されない。このため、タスクを強制終了した場合にも、コンピュータが暴走する可能性がある。
 以上より、アドオンプログラムのオーバランを検知した割込みハンドラ又は他のタスクが、アドオンプログラムの関数呼び出し直前の実行ポイントでのベースプログラムの実行状態を復元し、アドオンプログラムを無効化し、復元した実行状態に基づいてベースプログラムの後続処理を実行する必要がある。
 このような制御に関連する技術として、非特許文献1に記載の技術がある。
 非特許文献1に記載のように、C言語の標準ライブラリでは、setjmp関数及びlongjmp関数が提供されている。
 setjmp関数を実行することにより、任意の実行ポイントの実行状態を保存することができる。また、longjmp関数を実行することにより、保存しておいた実行状態を復元し、当該実行ポイント以降の処理を実行することができる。
ISO/IEC 9899:2011 Information technology - Programming languages - C
 非特許文献1に記載の技術では、マルチタスク環境において、setjmp関数を実行したタスクと異なる実行コンテキスト(割込みハンドラ又はタスク)からlongjmp関数を実行する場合に、コンピュータの動作を継続できないという課題がある。longjmp関数を実行すると、即時に実行状態が復元される。このため、コンテキストスイッチ処理又はタスクスケジューリングとの不整合が発生し、コンピュータの動作が継続できなくなる。
 具体的には、コンテキストスイッチ処理のためのタスク管理データの不整合が発生する。また、タスクスケジューリングの枠組みと異なったコンテキストスイッチを行うことになるため、タスクの実行状況によってはタスク間の優先度逆転が発生する。つまり、ベースプログラムよりも優先度が高い他のプログラムの実行がスケジューリングされている場合でも、longjmp関数の実行によりベースプログラムの実行状態が即時に復元されてしまい、タスクスケジューリングとの不整合が発生する。
 本開示は、上記のような課題を解決することを主な目的の一つとしている。具体的には、本開示は、関数呼び出しにより実行されたプログラムにオーバランが発生した場合でも、コンピュータの動作が継続できるようにすることを主な目的とする。
 本開示に係るコンピュータは、
 スタックポインタ値で指し示されたスタックフレームを用いて、コンテキストスイッチを行うコンテキストスイッチ処理部と、
 第1のプログラムが関数呼び出しにより第2のプログラムを呼び出し、前記第1のプログラムが実行を中断した後に、前記第2のプログラムが既定時間を超えて実行されている場合に、前記第1のプログラムの実行中断前の実行状態を復元するためのスタックフレームである第1プログラムスタックフレームを前記コンテキストスイッチ処理部で用いられるスタックフレームの構成に合わせて前記第1のプログラム用のスタック領域に構築するスタックフレーム構築部と、
 前記スタックポインタ値に、前記第1プログラムスタックフレームの先頭アドレス値を設定するスタックポインタ値設定部とを有する。
 本開示によれば、関数呼び出しにより実行された第2のプログラムにオーバランが発生した場合でも、コンピュータの動作を継続することができる。
実施の形態1に係るコンピュータのハードウェア構成例を示す図。 実施の形態1に係るコンピュータの機能構成例を示す図。 実施の形態1に係るコンピュータの動作の概要を示す図。 実施の形態1に係る実行状態保存処理の詳細を示すフローチャート。 実施の形態1に係る実行状態復元準備処理の詳細を示すフローチャート。
 以下、実施の形態を図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分又は相当する部分を示す。
 実施の形態1.
***構成の説明***
 図1は、本実施の形態に係るコンピュータ100のハードウェア構成例を示す。
 なお、コンピュータ100の処理手順は、制御方法に相当する。また、コンピュータ100の処理を実現するプログラムは、制御プログラムに相当する。
 図1に示すように、コンピュータ100は、CPU200、FPU300、メモリ400及びタイマ500を備える。
 以下、CPU200、FPU300、メモリ400及びタイマ500の各々を説明する。
 CPU200はCentral Processing Unitである。CPU200は、プロセッサの一例である。
 CPU200は、メモリ400に記憶されているプログラムを呼び出し、プログラムを実行する。具体的には、CPU200は、前述したベースプログラムとアドオンプログラムを実行する。ベースプログラムは、前述したように、共通的な機能を提供するプログラムである。また、アドオンプログラムは、拡張機能を提供するプログラムである。
 なお、図面においては、ベースプログラムを単に「ベース」と表記する場合がある。同様に、アドオンプログラムを単に「アドオン」と表記する場合がある。
 また、CPU200は、後述する高優先度プログラムを実行する。
 更には、CPU200は、後述するコンピュータ100の機能構成要素を実現するプログラムを実行する。より詳細には、CPU200は、図2に示す要素のうち、タスクN処理部101のように、末尾が「部」となっている要素を実現するプログラムを実行する。
 また、CPU200は、FPU300に浮動小数点演算を行わせる場合もある。
 また、CPU200は、タイマ500を制御して時間管理を行う。
 CPU200は、PC201、SP202、制御/状態レジスタ203、汎用レジスタ204を備える。
 PC201は、プログラムカウンタである。PC201は、実行する命令のアドレス位置を保持する。
 SP202は、スタックポインタである。SP202は、スタック領域の先頭アドレスを指し示す。
 制御/状態レジスタ203は、CPU200でのプログラムの実行における設定及び状態を保持する。制御/状態レジスタ203は、制御レジスタと状態レジスタとに分離していてもよい。
 汎用レジスタ204は、プログラム実行における演算結果や参照アドレスなどの情報を保持する。
 FPU300は、Floating Point Unitである。FPU300は、浮動小数点演算を行う。
 FPU300は、制御/状態レジスタ301及び汎用レジスタ302を備える。
 制御/状態レジスタ301は、FPU300での浮動小数点演算における設定及び状態を保持する。制御/状態レジスタ301は、制御レジスタと状態レジスタに分離していてもよい。
 汎用レジスタ302は浮動小数点演算の演算結果等を保持する。
 メモリ400には、主記憶装置及び補助記憶装置が含まれる。
 メモリ400には、プログラムのコード及びデータが格納される。前述したように、メモリ400には、コンピュータ100の機能構成要素(図2の末尾が「部」の要素)を実現するプログラムが格納される。また、メモリ400には、ベースプログラム、アドオンプログラム及び高優先度プログラムも格納される。
 更に、メモリ400には、後述する図2の実行状態保存領域105が存在する。
 また、メモリ400には、スタック領域が存在する。スタック領域には、後述するタスクMのスタック領域とタスクNのスタック領域、タイマ割込みハンドラのスタック領域が存在する。
 タイマ500は、時間測定を行う機能を有する。
 また、タイマ500は、任意の時間周期でCPU200に対して割込みを発生させる機能を有する。
 ここで、本実施の形態に係るタスクおよび割込みハンドラ構成を説明する。
 本実施の形態では、CPU200は、タスクMとタスクN、タイマ割込みハンドラにおいてプログラムを実行する。
 CPU200は、タイマ割込みハンドラで、タイマ割込みハンドラ処理、オーバラン検知処理、実行状態復元準備処理、コンテキストスイッチ処理、タスクスケジューリング処理等を実行する。つまり、CPU200は、タイマ割込みハンドラで、コンピュータ100の機能構成要素(図2の末尾が「部」の要素)を実現するプログラムを実行する。
 CPU200は、タイマ割込みハンドラで、コンピュータ100の機能構成要素(図2の末尾が「部」の要素)を実現するプログラム以外のプログラムを実行してもよい。但し、以下に示すように、CPU200は、ベースプログラムとアドオンプログラムはタスクNで実行する。
 CPU200は、タスクNで、ベースプログラムとアドオンプログラムを実行する。
 また、CPU200は、タスクMで、ベースプログラム及びアドオンプログラムよりも優先度が高い高優先度プログラムを実行する場合がある。
 本実施の形態では、ベースプログラムは関数呼び出しによりアドオンプログラムを呼び出す。また、アドオンプログラムは、既定時間を超えて実行される場合がある(オーバランが発生する場合がある)。
 なお、ベースプログラムは第1のプログラムに相当する。また、アドオンプログラムは第2のプログラムに相当する。更に、高優先度プログラムは第3のプログラムに相当する。
 本実施の形態では、アドオンプログラムにオーバランが発生した場合に、コンピュータ100の動作を停止させないようにするため、ベースプログラムの実行状態を復元することを主な目的とする。
 従って、以下では、アドオンプログラムにオーバランが発生した場合におけるベースプログラムの実行状態を復元する動作を中心に説明する。
 このため、以下では、タイマ割込みハンドラでのプログラムの実行、ベースプログラム及びアドオンプログラム以外のプログラムのタスクNでの実行、高優先度プログラムのタスクMでの実行についての説明は、アドオンプログラムにオーバランが発生した場合のベースプログラムの実行状態の復元処理に関連する範囲で行う。また、アドオンプログラムにオーバランが発生していない場合のベースプログラムの実行状態の復元についても、同様である。
 図2は、本実施の形態に係るコンピュータ100の機能構成例を示す。
 図2では、アドオンプログラムにオーバランが発生した場合にベースプログラムの実行状態を復元するための機能構成要素を示している。
 コンピュータ100には、タイマ割込みハンドラでのプログラムの実行、タスクMでのプログラムの実行を制御する機能構成要素も含まれるが、図2では図示を省略している。
 タスクN処理部101は、タスクNの制御を行う。
 アドオンプログラムの関数呼び出しによりベースプログラムが実行を中断する場合は、タスクN処理部101は、後述する実行状態保存部104を呼び出す。
 タスクNスタック領域102は、メモリ400内の、タスクNが使用するスタック領域である。タスクNスタック領域102は、ベースプログラムの実行状態を復元するためのスタックフレームの構築に用いられる。
 アドオン処理部103は、アドオンプログラムの実行を制御する。
 実行状態保存部104は、タスクN処理部101により呼び出された場合に、ベースプログラムの実行中断前の実行状態を実行状態保存領域105に保存する。
 実行状態保存部104が実行状態保存領域105に保存する実行状態には、CPU200の制御/状態レジスタ203の値、汎用レジスタ204の値が含まれる。また、実行状態保存部104が実行状態保存領域105に保存する実行状態に、FPU300の制御/状態レジスタ301の値、汎用レジスタ302の値が含まれてもよい。
 実行状態保存領域105は、ベースプログラムの実行中断前の実行状態を保存するための、メモリ400内の領域である。
 実行状態保存領域105は、静的に確保された(位置が特定可能な)領域である。
 実行状態保存領域105は、タスクNスタック領域102とは異なる領域である。
 タイマ割込みハンドラ処理部106は、タイマ割込みにより起動される割込みハンドラである。タイマ割込みハンドラ処理部106は、アドオンプログラムが実行中は、オーバラン検知部107を呼び出す。
 オーバラン検知部107は、アドオンプログラムの実行時間を測定する。そして、オーバラン検知部107は、アドオンプログラムの実行時間を実行可能上限時間108と比較することで、オーバランの発生を判定する。
 実行可能上限時間108は、アドオンプログラムの実行時間の上限である。アドオンプログラムの実行時間が実行可能上限時間108を超える場合に、オーバラン検知部107はオーバランが発生したと判定する。
 実行状態復元準備部109は、アドオンプログラムのオーバランが発生した場合に、実行中断前のベースプログラムの実行状態を復元するためのスタックフレームを構築する。
 なお、以下では、実行中断前のベースプログラムの実行状態を復元するためのスタックフレームをベースプログラムスタックフレームという。ベースプログラムスタックフレームは、第1プログラムスタックフレームに相当する。
 実行状態復元準備部109は、実行状態保存部104により実行状態保存領域105に保存された実行中断前のベースプログラムの実行状態を用いて、ベースプログラムスタックフレームをタスクNスタック領域102に構築する。
 また、実行状態復元準備部109は、後述のコンテキストスイッチ処理部112で用いられるスタックフレームの構成に合わせてベースプログラムスタックフレームを構築する。
 更に、実行状態復元準備部109は、コンテキストスイッチ処理部112がタスクNを再開する際に参照するスタックポインタ値に、ベースプログラムスタックフレームの先頭アドレス値を設定する。コンテキストスイッチ処理部112がタスクNを再開する際に参照するスタックポインタ値はタスクN管理データ110に記述されている。このため、実行状態復元準備部109は、タスクN管理データ110のスタックポインタ値をベースプログラムスタックフレームの先頭アドレス値で上書きする。
 なお、実行状態復元準備部109は、スタックフレーム構築部及びスタックポインタ値設定部に相当する。また、実行状態復元準備部109により行われる処理は、スタックフレーム構築処理及びスタックポインタ値設定処理に相当する。
 タスクN管理データ110には、コンテキストスイッチ処理部112がタスクNを再開する際に参照するスタックポインタ値が記述される。また、タスクN管理データ110には、タスクNの実行状態及び優先度が記述されていてもよい。
 タスクスケジューリング処理部111は、タスクの実行状態と優先度に基づき、次にCPU200で実行するタスクを選択する。
 タスクスケジューリング処理部111は、タスクからシステムコールが呼び出された際、又は割込みハンドラの終了後に実行される。
 コンテキストスイッチ処理部112は、スタックポインタ値で指し示されたスタックフレームを用いて、コンテキストスイッチ処理を行う。
 コンテキストスイッチ処理部112は、アドオンプログラムにオーバランが発生した後、タスクNがスケジューリングされた場合に、タスクN管理データ110に記述されているスタックポインタ値を参照する。そして、コンテキストスイッチ処理部112は、スタックポインタ値に基づいてタスクNスタック領域102に構築されているスタックフレームを用いて、ベースプログラムの実行状態を復元する。
***動作の説明***
 先ず、図3を参照して、本実施の形態に係るコンピュータ100の動作の概要を説明する。
 図3の(a)は、タイマ割込みハンドラとタスクNで実行される処理を時系列に示している。図3の(a)では、左から右に向かって時間が経過しているものとする。
 図3の(b)では、図3の(a)の実行状態復元準備処理(S307)を実行した直後の時点でのタスクNスタック領域102のスタック構成を示す。実行状態復元準備処理(S307)を実行した直後の時点で、タスクNスタック領域102には、「割込み発生により保存された実行状態情報」と「アドオンプログラムにより使用された領域」と「ベースプログラムスタックフレーム」が存在する。
 「アドオンプログラムにより使用された領域」は、アドオンプログラムの実行のために使用されたタスクNスタック領域102の一部である。
 「割込み発生により保存された実行状態情報」は、タイマ割込みの発生によりタイマ割込みハンドラが起動される際にタスクNスタック領域102に保存されるタスクNの実行状態情報である。なお、「割込み発生により保存された実行状態情報」がタスクNスタック領域102に保存される際に、タスクN管理データ110のスタックポインタ値は、「割込み発生により保存された実行状態情報」の先頭アドレス値で更新される。
 図3の(a)では、タスクNにて、タスクN処理部101によりベースプログラムが実行されている(S301)。
 次に、タスクNでは、ベースプログラムが関数呼び出しによりアドオンプログラムを呼び出す(S303)直前に、タスクN処理部101が実行状態保存部104を呼び出す。そして、実行状態保存部104がベースプログラムの実行状態を実行状態保存領域105に保存する(S302)。
 実行状態保存部104は、例えば、制御/状態レジスタ203の値、汎用レジスタ204の値、制御/状態レジスタ301の値、汎用レジスタ302の値等を実行状態として実行状態保存領域105に保存する。
 また、実行状態保存部104は、実行状態保存領域105にスタックポインタを保存する(S302)。実行状態保存領域105に保存するスタックポインタには、タスクNスタック領域102の現時点での先頭アドレス値が示される。
 ベースプログラムが関数呼び出しによりアドオンプログラムを呼び出す(S303)と、タスクN処理部101は、ベースプログラムの実行を中断し、アドオン処理部103を呼び出す。
 アドオン処理部103は、アドオンプログラムを実行する(S304)。
 また、タスクN処理部101は、タイマ割込みハンドラ処理部106にアドオンプログラムの実行が開始したことを通知する。タイマ割込みハンドラ処理部106は、オーバラン検知部107を呼び出す。
 不具合等によりアドオンプログラムにオーバランが発生すると(S305)、タイマ割込みハンドラにて、オーバラン検知部107がアドオンプログラムのオーバランを検知する(S306)。オーバラン検知部107は実行状態復元準備部109を呼び出す。
 次に、タイマ割込みハンドラにて、実行状態復元準備部109が、実行状態の復元のための準備を行う(S307)。具体的には、実行状態復元準備部109は、図3の(b)に示すように、実行状態保存領域105に保存されたスタックポインタを参照してアドオンプログラム実行直前のタスクNスタック領域102の先頭アドレス値を特定する。更に、実行状態復元準備部109は、実行状態保存領域105からベースプログラムの実行状態を取得する。そして、実行状態復元準備部109は、特定した先頭アドレスの上部(スタック伸長方向)に、実行状態保存領域105から取得した実行状態を内容とするベースプログラムスタックフレームをタスクNスタック領域102に構築する。
 更に、実行状態復元準備部109は、タスクN管理データ110のスタックポインタをベースプログラムスタックフレームの先頭アドレス値で上書きする。なお、上書きされる前のタスクN管理データ110のスタックポインタは、タイマ割込みハンドラの起動により中断された、オーバランしたアドオンプログラムを実行中のタスクNの実行状態情報の先頭アドレスを指している。
 S307の時点では、ベースプログラムの実行状態の復元の準備までが行われ、実行状態の復元は行われない。
 その後、タイマ割込みハンドラでは、タスクスケジューリングのタイミングでコンテキストスイッチ処理部112によりコンテキストスイッチ処理が行われる(S308)。つまり、タスクスケジューリング処理部111によりタスクNでのベースプログラムの実行の再開がスケジューリングされた時点で、コンテキストスイッチ処理部112がベースプログラムのためのコンテキストスイッチ処理を行う。
 なお、タスクNでベースプログラムよりも優先度が高いタスクMでの高優先度プログラムの実行が先にスケジューリングされている場合は、タスクMでの高優先度プログラムの実行が完了した後に、ベースプログラムの実行の再開がスケジューリングされた時点で、ベースプログラムのためのコンテキストスイッチ処理が行われる。
 ベースプログラムのためのコンテキストスイッチ処理では、コンテキストスイッチ処理部112がタスクN管理データ110に記述されているスタックポインタ値を参照する。そして、コンテキストスイッチ処理部112は、スタックポインタ値に基づいてタスクNスタック領域102に構築されているスタックフレームを用いて、ベースプログラムの実行状態を復元する。
 次に、図3の実行状態保存処理(S302)及び実行状態復元準備処理(S307)の詳細を説明する。
 図4は、実行状態保存処理(S302)の詳細を示すフローチャートである。
 図5は、実行状態復元準備処理(S307)の詳細を示すフローチャートである。
 先ず、図4を参照して、実行状態保存処理(S302)の詳細を説明する。
 ステップS401において、タスクN処理部101は、ベースプログラムの実行中に関数呼び出しによるアドオンプログラムの呼び出しが発生した否かを判定する。
 関数呼び出しによるアドオンプログラムの呼び出しが発生した場合(ステップS401でYES)は、タスクN処理部101は実行状態保存部104を呼び出し、処理がステップS402に進む。
 ステップS402では、実行状態保存部104が、ベースプログラムの中断前の実行状態とスタックポインタを実行状態保存領域105に格納する。前述したように、実行状態保存部104が実行状態保存領域105に保存する実行状態には、例えば、制御/状態レジスタ203の値、汎用レジスタ204の値、FPU300の制御/状態レジスタ301の値、汎用レジスタ302の値が含まれる。
 また、スタックポインタには、タスクNスタック領域102の現時点での先頭アドレス値が示される。
 次に、ステップS403において、タスクN処理部101がベースプログラムの実行を中断する。
 更に、ステップS404において、タスクN処理部101がアドオン処理部103を呼び出し、アドオン処理部103がアドオンプログラムの実行を開始する。
 次に、図5を参照して、実行状態復元準備処理(S307)の詳細を説明する。
 オーバラン検知部107によりアドオンプログラムにオーバランが発生したと判定された場合に(ステップS501でYES)、実行状態復元準備部109がオーバラン検知部107に呼び出される。
 そして、ステップS502において、実行状態復元準備部109は、実行状態保存領域105に保存されたスタックポインタを参照してアドオンプログラム実行直前のタスクNスタック領域102の先頭アドレス値を特定する。
 次に、ステップS503において、実行状態復元準備部109は、実行状態保存領域105からベースプログラムの中断前の実行状態を取得する。
 次に、ステップS504において、実行状態復元準備部109は、ステップS502で特定した先頭アドレスの上部(スタック伸長方向)に、ステップS503で取得した実行状態を内容とするベースプログラムスタックフレームをタスクNスタック領域102に構築する。
 次に、ステップS505において、実行状態復元準備部109は、タスクN管理データ110のスタックポインタを、ステップS504で構築したベースプログラムスタックフレームの先頭アドレス値で上書きする。
***実施の形態の効果の説明***
 本実施の形態では、オーバランが発生した際に、即時に実行状態の復元処理を行うのではなく、実行状態を復元するための準備(スタックフレームの構築)に留めている。そして、本実施の形態では、タスクスケジューリングのタイミングでベースプログラムの実行状態を復元する。
 このため、本実施の形態によれば、実行状態の復元処理と、コンテキストスイッチ処理及びタスクスケジューリングとの整合性を図ることができ、コンピュータの動作を継続することができる。
 なお、本実施の形態で説明した処理手順は一例である。
 このため、本実施の形態で説明した処理手順の一部のみを実施しても構わない。
 また、本実施の形態で説明した処理手順の少なくとも一部と、本実施の形態で説明していない処理手順とを組み合わせて実施しても構わない。
 また、本実施の形態に記載された構成及び処理手順を必要に応じて変更してもよい。
***ハードウェア構成の補足説明***
 最後に、コンピュータ100のハードウェア構成の補足説明を行う。
 CPU200及びFPU300は、プロセッシングを行うIC(Integrated Circuit)である。
 メモリ400は、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ、HDD(Hard Disk Drive)等である。
 また、メモリ400には、OS(Operating System)も記憶されている。
 そして、OSの少なくとも一部がCPU200により実行される。
 CPU200はOSの少なくとも一部を実行しながら、タスクN処理部101、アドオン処理部103、実行状態保存部104、タイマ割込みハンドラ処理部106,オーバラン検知部107、実行状態復元準備部109、タスクスケジューリング処理部111及びコンテキストスイッチ処理部112の機能を実現するプログラムを実行する。
 CPU200がOSを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
 また、タスクN処理部101、アドオン処理部103、実行状態保存部104、タイマ割込みハンドラ処理部106,オーバラン検知部107、実行状態復元準備部109、タスクスケジューリング処理部111及びコンテキストスイッチ処理部112の処理の結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、メモリ400、制御/状態レジスタ203、汎用レジスタ204、制御/状態レジスタ301及び汎用レジスタ302の少なくともいずれかに記憶される。
 また、タスクN処理部101、アドオン処理部103、実行状態保存部104、タイマ割込みハンドラ処理部106,オーバラン検知部107、実行状態復元準備部109、タスクスケジューリング処理部111及びコンテキストスイッチ処理部112の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記録媒体に格納されていてもよい。そして、タスクN処理部101、アドオン処理部103、実行状態保存部104、タイマ割込みハンドラ処理部106,オーバラン検知部107、実行状態復元準備部109、タスクスケジューリング処理部111及びコンテキストスイッチ処理部112の機能を実現するプログラムが格納された可搬記録媒体を流通させてもよい。
 また、タスクN処理部101、アドオン処理部103、実行状態保存部104、タイマ割込みハンドラ処理部106,オーバラン検知部107、実行状態復元準備部109、タスクスケジューリング処理部111及びコンテキストスイッチ処理部112の少なくともいずれかの「部」を、「回路」又は「工程」又は「手順」又は「処理」又は「サーキットリー」に読み替えてもよい。
 また、タスクN処理部101、アドオン処理部103、実行状態保存部104、タイマ割込みハンドラ処理部106,オーバラン検知部107、実行状態復元準備部109、タスクスケジューリング処理部111及びコンテキストスイッチ処理部112の少なくともいずれかは、処理回路により実現されてもよい。処理回路は、例えば、ロジックIC(Integrated Circuit)、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)である。
 なお、本明細書では、プロセッサと処理回路との上位概念を、「プロセッシングサーキットリー」という。
 つまり、プロセッサと処理回路とは、それぞれ「プロセッシングサーキットリー」の具体例である。
 100 コンピュータ、101 タスクN処理部、102 タスクNスタック領域、103 アドオン処理部、104 実行状態保存部、105 実行状態保存領域、106 タイマ割込みハンドラ処理部、107 オーバラン検知部、108 実行可能上限時間、109 実行状態復元準備部、110 タスクN管理データ、111 タスクスケジューリング処理部、112 コンテキストスイッチ処理部、200 CPU、201 PC、202 SP、203 制御/状態レジスタ、204 汎用レジスタ、300 FPU、301 制御/状態レジスタ、302 汎用レジスタ、400 メモリ、500 タイマ。

Claims (7)

  1.  スタックポインタ値で指し示されたスタックフレームを用いて、コンテキストスイッチを行うコンテキストスイッチ処理部と、
     第1のプログラムが関数呼び出しにより第2のプログラムを呼び出し、前記第1のプログラムが実行を中断した後に、前記第2のプログラムが既定時間を超えて実行されている場合に、前記第1のプログラムの実行中断前の実行状態を復元するためのスタックフレームである第1プログラムスタックフレームを前記コンテキストスイッチ処理部で用いられるスタックフレームの構成に合わせて前記第1のプログラム用のスタック領域に構築するスタックフレーム構築部と、
     前記スタックポインタ値に、前記第1プログラムスタックフレームの先頭アドレス値を設定するスタックポインタ値設定部とを有するコンピュータ。
  2.  前記コンテキストスイッチ処理部は、
     前記第1のプログラムの実行の再開がスケジューリングされた時点で、前記スタックポインタ値を参照し、前記スタックポインタ値に設定された前記第1プログラムスタックフレームの先頭アドレス値に基づいて前記第1プログラムスタックフレームを用いて、前記第1のプログラムの実行中断前の実行状態を復元する請求項1に記載のコンピュータ。
  3.  前記コンテキストスイッチ処理部は、
     前記第1のプログラムよりも優先度が高い第3のプログラムの実行が前記第1のプログラムの実行の再開よりも先にスケジューリングされている場合は、前記第3のプログラムの実行が完了した後に、前記第1のプログラムの実行の再開がスケジューリングされた時点で、前記第1のプログラムの実行中断前の実行状態を復元する請求項2に記載のコンピュータ。
  4.  前記コンピュータは、更に、
     前記第1のプログラムの実行中断前の実行状態を前記第1のプログラムのスタック領域以外の記憶領域に保存する実行状態保存部を有し、
     前記スタックフレーム構築部は、
     前記実行状態保存部により前記記憶領域に保存された前記第1のプログラムの実行中断前の実行状態を用いて、前記第1プログラムスタックフレームを前記第1のプログラム用のスタック領域に構築する請求項1に記載のコンピュータ。
  5.  前記実行状態保存部は、
     前記第1のプログラムの実行中断前の実行状態の少なくとも一部として、前記コンピュータに含まれる制御レジスタの前記第1のプログラムの実行中断前の値、前記コンピュータに含まれる状態レジスタの前記第1のプログラムの実行中断前の値、及び前記コンピュータに含まれる汎用レジスタの前記第1のプログラムの実行中断前の値の少なくともいずれかを前記記憶領域に保存する請求項4に記載のコンピュータ。
  6.  スタックポインタ値で指し示されたスタックフレームを用いて、コンテキストスイッチ処理を行うコンピュータに含まれるプロセッサが、第1のプログラムが関数呼び出しにより第2のプログラムを呼び出し、前記第1のプログラムが実行を中断した後に、前記第2のプログラムが既定時間を超えて実行されている場合に、前記第1のプログラムの実行中断前の実行状態を復元するためのスタックフレームである第1プログラムスタックフレームを前記コンテキストスイッチ処理で用いられるスタックフレームの構成に合わせて前記第1のプログラム用のスタック領域に構築し、
     前記プロセッサが、前記スタックポインタ値に、前記第1プログラムスタックフレームの先頭アドレス値を設定する制御方法。
  7.  スタックポインタ値で指し示されたスタックフレームを用いて、コンテキストスイッチを行うコンテキストスイッチ処理と、
     第1のプログラムが関数呼び出しにより第2のプログラムを呼び出し、前記第1のプログラムが実行を中断した後に、前記第2のプログラムが既定時間を超えて実行されている場合に、前記第1のプログラムの実行中断前の実行状態を復元するためのスタックフレームである第1プログラムスタックフレームを前記コンテキストスイッチ処理で用いられるスタックフレームの構成に合わせて前記第1のプログラム用のスタック領域に構築するスタックフレーム構築処理と、
     前記スタックポインタ値に、前記第1プログラムスタックフレームの先頭アドレス値を設定するスタックポインタ値設定処理とをコンピュータに実行させる制御プログラム。
PCT/JP2022/002931 2022-01-26 2022-01-26 コンピュータ、制御方法及び制御プログラム WO2023144939A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/JP2022/002931 WO2023144939A1 (ja) 2022-01-26 2022-01-26 コンピュータ、制御方法及び制御プログラム
JP2023554323A JP7418670B2 (ja) 2022-01-26 2022-01-26 コンピュータ、制御方法及び制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2022/002931 WO2023144939A1 (ja) 2022-01-26 2022-01-26 コンピュータ、制御方法及び制御プログラム

Publications (1)

Publication Number Publication Date
WO2023144939A1 true WO2023144939A1 (ja) 2023-08-03

Family

ID=87471188

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2022/002931 WO2023144939A1 (ja) 2022-01-26 2022-01-26 コンピュータ、制御方法及び制御プログラム

Country Status (2)

Country Link
JP (1) JP7418670B2 (ja)
WO (1) WO2023144939A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63268044A (ja) * 1987-04-24 1988-11-04 Nec Corp ウオツチ・ドツグ・タイマ
JP2005316599A (ja) * 2004-04-27 2005-11-10 Matsushita Electric Ind Co Ltd 割込制御装置
JP2009157542A (ja) * 2007-12-26 2009-07-16 Nec Electronics Corp 情報処理装置及びそのスタックポインタ更新方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63268044A (ja) * 1987-04-24 1988-11-04 Nec Corp ウオツチ・ドツグ・タイマ
JP2005316599A (ja) * 2004-04-27 2005-11-10 Matsushita Electric Ind Co Ltd 割込制御装置
JP2009157542A (ja) * 2007-12-26 2009-07-16 Nec Electronics Corp 情報処理装置及びそのスタックポインタ更新方法

Also Published As

Publication number Publication date
JP7418670B2 (ja) 2024-01-19
JPWO2023144939A1 (ja) 2023-08-03

Similar Documents

Publication Publication Date Title
JP5413515B2 (ja) 仮想計算機のデータ複製方法、情報処理装置及びプログラム
US8429669B2 (en) Virtual machine switching control by prefetching information out of and updating a set of processor control information based on a bitmap having update status
US5745770A (en) Method and apparatus for servicing simultaneous I/O trap and debug traps in a microprocessor
CN107704314B (zh) 用于迁移虚拟机的方法和装置
JP4068106B2 (ja) リアルタイム組込み簡易モニタプログラム
US20120331464A1 (en) Virtual machine system and virtual machine system control method
JP5026494B2 (ja) 高速で起動するコンピュータ
JP2002268914A (ja) 特権命令の実行を監視する方法
KR100745888B1 (ko) 데이터 처리 시스템에서 스레드들을 핸들링하기 위한 방법및 장치
US20230126437A1 (en) Service processing method and apparatus, electronic device, and storage medium
US20110040958A1 (en) Method of switching computer operating systems
WO2023274027A1 (zh) 用户态中断请求的处理方法及装置
US20220229658A1 (en) Application downtime reduction using detached mode operation during operating system updates
CN112579162A (zh) 异构isa平台上硬件和软件协调的对高级特征选入的方法
CN112286847B (zh) 一种提升系统外部中断响应速度的方法、装置和控制器
WO2023144939A1 (ja) コンピュータ、制御方法及び制御プログラム
JPS63279328A (ja) 仮想計算機システムのゲスト実行制御方式
US6332199B1 (en) Restoring checkpointed processes including adjusting environment variables of the processes
US11726811B2 (en) Parallel context switching for interrupt handling
KR101785540B1 (ko) 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 방법 및 장치
JP2006039763A (ja) ゲストosデバッグ支援方法及び仮想計算機マネージャ
TWI822685B (zh) 內容資料管理
WO2024024102A1 (ja) 計算機システム、タスクスケジューラ装置、待ちプロセス起床方法およびプログラム
JPH05165652A (ja) タスク切替え制御方法
JP4114632B2 (ja) チェックポインティング方式及びプログラム

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 2023554323

Country of ref document: JP

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22923806

Country of ref document: EP

Kind code of ref document: A1