JP4523910B2 - 並列処理装置及び並列処理方法及び並列処理プログラム - Google Patents

並列処理装置及び並列処理方法及び並列処理プログラム Download PDF

Info

Publication number
JP4523910B2
JP4523910B2 JP2005359069A JP2005359069A JP4523910B2 JP 4523910 B2 JP4523910 B2 JP 4523910B2 JP 2005359069 A JP2005359069 A JP 2005359069A JP 2005359069 A JP2005359069 A JP 2005359069A JP 4523910 B2 JP4523910 B2 JP 4523910B2
Authority
JP
Japan
Prior art keywords
interrupt
guest
task
host
program
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.)
Expired - Fee Related
Application number
JP2005359069A
Other languages
English (en)
Other versions
JP2007164421A (ja
Inventor
孝之 伊藤
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 JP2005359069A priority Critical patent/JP4523910B2/ja
Publication of JP2007164421A publication Critical patent/JP2007164421A/ja
Application granted granted Critical
Publication of JP4523910B2 publication Critical patent/JP4523910B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

複数のプログラムを切り替えて実行することにより、並列して処理する並列処理装置に関する。特に、コンピュータを並列処理装置として機能させるプログラムを、並列処理装置が管理する複数のプログラムの一つとして実行する並列処理装置に関する。
従来、1つのCPU(Central Proccessing Unit)を有するコンピュータ上で、複数のマルチタスクOS(Operating System)(以下、単に「OS」という)を並列して動作させる技術がある。
例えば、一方のOSをホストOSとし、他方のOSをゲストOSとして、ゲストOSをホストOS上の1つのタスクとして動作させることにより、2つのOSを共存させるマルチOSシステムがある。
マルチOSシステムにおいては、ハードウェアからの割込が発生した場合、その割込を処理すべきタスクを管理しているOSが動作していないと、正しく割込を処理することができない。
そのため、例えば、ホストOSが割込を処理すべきOSを判断し、ゲストOSが処理すべき割込である場合には、割込があったことを示すフラグをセットしておき、その後、ゲストOSに切り替わったときに、ゲストOSがフラグをチェックして、ゲストOSの割込ハンドラを呼び出す(例えば、非特許文献1)。
また、ホストOS、ゲストOSという関係を設けず、複数のOSをOS切替プログラムの管理下において、OS切替プログラムが、OS切替機能、割込振分け機能、OS間通信機能などを実現することにより、複数のOSを共存させるマルチOSシステムもある(例えば、特許文献1)。
特開2001−282558号公報 米国特許5995745号
ホストOSとゲストOSとを設けるマルチOSシステムでは、各OSが個別に割込マスクを設定すると、割込処理の優先順位に矛盾が生じ、優先的に処理しなければならない割込がマスクされてしまうなどの課題がある。
また、OS切替プログラムがOSを管理するマルチOSシステムで、既存のOSを動作させようとすると、OS切替プログラムがハードウェアをエミュレートする必要があり、処理のオーバーヘッドが発生するという課題がある。
また、OS切替プログラムがハードウェアをエミュレートしない場合には、既存のOSをそのまま動作させることができず、大幅な修正が必要になるという課題がある。
この発明は、例えば、上記のような課題を解決するためになされたものであり、ホストOSとゲストOSとを設けるマルチOSシステムにおいて、矛盾なく割込処理を行えるようにするとともに、既存のOSをわずかに修正するだけで、利用できるようにすることを目的とする。
この発明にかかる並列処理装置は、
複数のプログラムをゲストタスクとして管理し、上記ゲストタスクを切り替えて実行することにより、上記複数のプログラムを並列して処理するゲスト並列処理装置としてコンピュータを機能させるゲスト並列処理プログラムと、他のプログラムとを、ホストタスクとして管理し、上記ホストタスクを切り替えて実行することにより、上記複数のプログラム及び上記他のプログラムを並列して処理する並列処理装置において、
プログラムを実行する実行装置と、
情報を記憶する記憶装置と、
上記実行装置が実行しているプログラムの実行を中断し、割込を処理する割込処理プログラムを実行することを上記実行装置に対して要求する割込信号を、上記実行装置に対して出力する割込信号入力装置と、
上記割込信号入力装置が入力する割込信号による要求に基づいて、上記実行装置が実行するプログラムを示す情報を割込ベクタとして、上記記憶装置を用いて記憶する割込ベクタ記憶部と、
上記ホストタスクのなかから、上記実行装置が実行するホストタスクを選択するタスク選択部と、
上記タスク選択部が選択したホストタスクが上記他のプログラムである場合と、上記タスク選択部が選択したホストタスクが上記ゲスト並列処理プログラムである場合とで、異なる割込ベクタを上記割込ベクタ記憶部に記憶させる割込ベクタ書換部と、
を有することを特徴とする。
この発明によれば、例えば、ゲスト並列処理プログラム(ゲストOS)を実行中と、それ以外の場合とにおいて、異なる割込ベクタを割込ベクタ記憶部に記憶させるので、割込を処理すべきOSと異なるOSを実行中に、割込が発生した場合であっても、異なるOS下で割込処理が実行されることがなく、割込の発生による処理の混乱を回避することができるという効果を奏する。
実施の形態1.
実施の形態1を、図1〜図16を用いて説明する。
図1は、この実施の形態における並列処理装置900のハードウェア構成の一例を示すハードウェア構成図である。
並列処理装置900は、実行装置901、記憶装置902、入力装置903、出力装置904、割込信号入力装置905、時計装置906を有する。
実行装置901は、例えば、CPU(Central Processing Unit)などである。
実行装置901は、記憶装置902が記憶したプログラムなどを実行し、以下に説明する各機能ブロックを実現する。
なお、以下に説明する各機能ブロックは、ハードウェアやファームウェアによって実現してもよい。
記憶装置902は、例えば、ROM(Read Only Memory)やRAM(Random Access Memory)などの内部記憶装置、ハードディスク装置やSD(Sequred Degital)メモリなどの外部記憶装置などである。
記憶装置902は、実行装置901が実行するプログラムのほか、入力装置903から入力した情報、実行装置901が処理した情報、出力装置904が出力する情報などを記憶する。
入力装置903は、例えば、キーボードやマウスなどの操作入力装置、マイクなどの音声入力装置、スキャナやカメラなどの画像入力装置などである。
入力装置903は、各種情報を入力する。
また、入力装置903は、例えば、他の装置と接続するインターフェース装置であって、他の装置からの情報を入力する装置であってもよい。
出力装置904は、例えば、CRT(Cathode Ray Tube)装置などの画像表示装置、スピーカなどの音声出力装置、プリンタなどの画像印刷装置などである。
出力装置904は、各種情報を出力する。
また、出力装置904は、例えば、他の装置と接続するインターフェース装置であって、他の装置に対して情報を出力する装置であってもよい。
時計装置906は、例えば、発振回路とカウンタなどから構成され、現在の時刻あるいはリセット信号を受けてからの経過時間を測定する装置である。
割込信号入力装置905は、記憶装置902、入力装置903、出力装置904、時計装置906の状態が所定の状態になったことを検出し、実行装置901に対して、割込信号を出力する。
例えば、入力装置903が操作者の入力を受けた場合、出力装置904が画像の印刷を完了した場合、時計装置906が測定した時間が所定の時間に達した場合などに、割込信号を出力する。
なお、割込信号入力装置905は、実行装置901であるCPUの一部であってもよい。
図2は、この実施の形態における並列処理装置900において実行されるプログラム(タスク)の関係の一例を示す概念図である。
並列処理装置900において実行されるプログラムには、ホストOS100(Operating System)、ゲストOS200、ホストOS上のタスク106、OS切替用タスク107、ゲストOS上のタスク206などがある。
ホストOS100は、並列処理装置900が処理するプログラムのうちから実行するプログラムを選択し、実行装置901に実行させる。また、実行中のプログラムを中断し、他のプログラムを実行する場合に、実行中のプログラムをあとで再開できるよう、必要な情報(コンテキスト)を保存しておき、実行再開時に復元する。
ホストOS100は、並列処理プログラムの一例である。
ホストOS100は、複数のプログラムにより構成される。ホストOS100は、スケジューラ101、割込処理103、マスク設定処理104、OS間同期処理105などを行うプログラムを有し、割込ベクタ102、マスクテーブル108などを記憶装置902を用いて記憶している。
スケジューラ101は、ホストタスク110(ゲストOS200、ホストOS上のタスク106、OS切替用タスク107など)のスケジューリングなどの処理を行うプログラムである。
割込処理103は、割込信号入力装置905が出力した割込信号により実行され、それぞれの割込原因に対応する処理を行うプログラムである。
割込ベクタ102は、割込信号入力装置905が出力した割込信号により実行する割込処理103を示す情報(例えば、割込処理103を記憶したメモリ(記憶装置902)のアドレスなど)である。
マスク設定処理104は、優先順位の高い処理の実行中に、優先順位の低い割込処理を実行しないように、割込処理103の実行を制限するための割込マスクを設定するプログラムである。
マスクテーブル108は、マスク設定処理104において設定する割込マスクについての情報である。
OS間同期処理105は、ホストタスク110からゲストタスク210(ゲストOS上のタスク206)に対して通知するメッセージを処理するプログラムである。
ホストOS上のタスク106は、ホストOS100が管理するプログラムであり、並列処理装置900において、並列して処理されるプログラムである。
ホストOS上のタスク106は、他のプログラムの一例である。
OS切替用タスク107は、実行装置901がゲストタスク210を実行しているときに、割込信号入力装置905が出力した割込信号に対応する割込処理がホストOS100上のものである場合に、OSをゲストOSからホストOSに切り替えるためのプログラムである。
OS切替用タスク107は、他のプログラムの一例である。
ゲストOS200は、ホストOS100と同様、複数のプログラムのうちから、実行するプログラムを選択し、実行装置901に実行させるプログラムである。ホストOS100と異なる点は、並列処理装置900が処理するプログラムのうち、ゲストタスク210を管理し、それ以外のプログラム(例えば、ホストOS上のタスク106、OS切替用タスクなど)は管理しない点である。また、ゲストOS200自体が、ホストOS100の管理を受けるホストタスク110の一つである点も異なる。
ゲストOS200は、ゲスト並列処理プログラムの一例である。
ゲストOS200は、複数のプログラムで構成される。ゲストOS200は、スケジューラ201、割込処理203、マスク設定処理204、OS間同期処理205などを行うプログラムを有し、割込ベクタ202などを記憶装置902を用いて記憶している。
スケジューラ201は、ゲストタスク210のスケジューリングなどの処理を行うプログラムである。
割込処理203は、割込信号入力装置905が出力した割込信号により実行され、それぞれの割込原因に対応する処理を行うプログラムである。
割込ベクタ202は、割込信号入力装置905が出力した割込信号により実行する割込処理203を示す情報(例えば、割込処理203を記憶したメモリ(記憶装置902)のアドレスなど)である。
マスク設定処理204は、優先順位の高い処理の実行中に、優先順位の低い割込処理を実行しないように、割込処理203の実行を制限するための割込マスクを設定するプログラムである。
OS間同期処理205は、ホストタスク110からゲストタスク210に対して通知されたメッセージを処理するプログラムである。
ゲストOS上のタスク206は、ゲストOS200が管理するプログラムであり、並列処理装置900において、並列して処理されるプログラムである。
ゲストOS上のタスク206は、複数のプログラムの一例である。
図3は、この実施の形態における並列処理装置900の機能ブロックの構成の一例を示すブロック構成図である。
並列処理装置900は、割込処理部310、ディスパッチ部320、スケジュール部330、優先度記憶部391、コンテキスト記憶部392などを有する。
割込処理部310は、割込信号入力装置905が出力した割込信号に基づいて、対応する割込処理103,203を実行装置901に実行させる。
割込処理部310は、例えば、CPUのハードウェアによって実現するが、他の方法で実現してもよい。
割込処理部310は、割込ベクタ記憶部311、割込マスク記憶部312、割込処理実行部313を有する。
割込ベクタ記憶部311は、割込ベクタ102または割込ベクタ202を記憶する。割込ベクタ記憶部311は、例えば、所定のアドレスを有するメモリ(記憶装置902)であり、割込信号の番号に対応するアドレスに、割込処理103,203を記憶したメモリ(記憶装置902)の開始アドレスを記憶する。
割込マスク記憶部312は、割込マスクを記憶する。割込マスク記憶部312は、例えば、CPUの割込マスクレジスタであり、割込処理を許可する割込信号を示す情報を、割込マスクとして記憶する。
割込マスクは、例えば、割込信号の種類と同じ数のビット(割込マスクパターン)を有し、割込信号との論理積をとることにより、割込処理を許可する割込信号だけを抽出する。
また、例えば、割込マスクは、割込レベルを示す整数値(割込マスクレベル)であり、割込信号のレベルと割込マスクの値とを比較して、割込信号のレベルのほうが低い場合に、割込処理を許可しないものであってもよい。
割込処理実行部313は、割込マスク記憶部312が記憶した割込マスクにより許可された割込信号を割込信号入力装置905が出力した場合に、実行装置901が実行しているプログラムの実行を中断させ、割込ベクタ記憶部311が記憶した割込ベクタによって示される割込処理103,203を、実行装置901に実行させる。
例えば、現在のPC(Program Counter)の値をスタックに退避し、割込信号に対応する割込ベクタの値を、PCに読み込む。
ディスパッチ部320(ディスパッチャともいう)は、実行装置901が実行するホストタスク110を切り替える際(タスク切替時)、それまで実行していたホストタスク110を、あとで再開できるよう、ホストタスク110の実行に必要な情報(PCの値、レジスタの値、メモリ(記憶装置902)が記憶したスタックや一時変数の値など。以下「コンテキスト」という)をコンテキスト記憶部392に記憶させておく。ディスパッチ部320は、中断したホストタスク110を再開する際、コンテキスト記憶部392が記憶したコンテキストを読み出して、復元し、中断前の続きが実行できるようにする。
ディスパッチ部320は、実行装置901がスケジューラ101を実行することにより実現する。
ディスパッチ部320は、コンテキスト書換部321、割込ベクタ書換部323、マスク設定部324などを有する。
コンテキスト書換部321は、実行を中断するホストタスク110のコンテキストをコンテキスト記憶部392に記憶させ、実行を再開するホストタスク110のコンテキストを、コンテキスト記憶部392から復元する。
割込ベクタ書換部323は、OS切替時に、割込ベクタ記憶部311が記憶した割込ベクタをコンテキスト記憶部392に記憶させ、復元する。
ここで、「OS切替時」とは、ホストタスク110のうち、ゲストOS200の実行を中断して、それ以外のホストタスク110(ホストOS上のタスク106、OS切替用タスク107など)を実行する場合、あるいは逆に、それ以外のホストタスク110(ホストOS上のタスク106、OS切替用タスク107など)の実行を中断して、ゲストOS200を実行する場合をいう。
割込処理103,203の管理は、各OSが行っているので、OS切替時には、割込ベクタ記憶部311が記憶した割込ベクタを書き換える必要がある。そこで、割込ベクタ書換部323は、割込ベクタ記憶部311が記憶した割込ベクタを、OSのコンテキストとして、保存・復元する。
マスク設定部324は、タスク切替時に、割込マスク記憶部312が記憶した割込マスクをコンテキスト記憶部392に記憶させ、復元する(マスク設定処理104)。
この実施の形態では、割込マスクも、タスクのコンテキストの一部として、タスク切替時に保存・復元する。
コンテキスト記憶部392は、記憶装置902を用いて、コンテキストおよび割込マスクをホストタスク110ごとに記憶する。また、コンテキスト記憶部392は、記憶装置902を用いて、割込ベクタをOSごとに記憶する。
優先度記憶部391は、記憶装置902を用いて、ホストタスク110の優先度を記憶する。
「優先度」とは、ホストタスク110を実行する優先順位を示す情報である。実行可能な状態にあるホストタスク110が複数ある場合に、どのホストタスク110を実行するかを判断する基準となり、優先度に基づいて判断した優先順位が最も高いホストタスク110を実行する。
スケジュール部330(スケジューラともいう)は、優先度記憶部391が記憶した優先度に基づいて、実行装置901が実行するホストタスク110を選択する。
スケジュール部330は、実行装置901がスケジューラ101を実行することにより実現する。
スケジュール部330は、実行可能判断部331、タスク選択部332、マスクテーブル生成部333、マスクテーブル記憶部334などを有する。
実行可能判断部331は、ホストタスク110が実行可能な状態であるか否かを判断する。
「実行可能な状態」とは、ホストタスク110が、そのタスクを実行するために必要な情報、リソースがすべて揃っていて、実行装置901が空けば、すぐにでも実行できる状態にあることをいう。
これに対して、「実行可能な状態でない」とは、ホストタスク110が、例えば、入力待ち、出力完了待ち、タイミング調整、他のタスクの処理結果待ち、メモリ不足などにより、実行装置901が利用可能であっても、すぐには実行できない状態にあることをいう。
タスク選択部332は、実行可能判断部331が実行可能な状態であると判断したホストタスク110について、優先度記憶部391が記憶した優先度に基づいて、優先順位を算出し、もっとも優先順位の高いホストタスク110を選択する。
マスクテーブル生成部333は、優先度記憶部391が記憶した優先度に基づいて、マスクテーブル108を生成し、マスクテーブル記憶部334に記憶させる。
マスクテーブル記憶部334は、マスクテーブル生成部333が生成したマスクテーブル108を記憶する。
割込処理103,203は、原則として、割込信号入力装置905が割込信号を出力したときに実行するものなので、スケジュール部330、ディスパッチ部320の管理外で実行され、優先順位という概念がない。
しかし、緊急度の高い処理を実行中に、緊急度の低い割込についての割込処理が発生することを防ぐ必要があるため、割込マスクによって、緊急度の低い割込処理の発生を防ぐ。
したがって、割込マスクによって割込処理を禁止された割込処理は、その割込マスクを設定したホストタスク110よりも、優先順位が低いと考えることができる。
図4は、この実施の形態におけるタスクの優先順位の一例を示す概念図である。
割込処理タスク111〜115は、割込信号入力装置905が割込信号を出力したときに実行される割込処理103である。割込処理タスク111〜115は、スケジュール部330の管理外にあり、厳密な意味での「タスク」ではないが、ここでは、割込マスクにより、通常のタスクとの間に優先順位を考えることができるので、ホストタスク110の一種として扱う。
通常処理タスク121〜125は、ホストOS上のタスク106であり、通常の処理を行う。
通常処理タスク121〜125は、優先度記憶部391が記憶した優先度に基づいて、優先順位が定められており、この図では、上にいくほど優先順位が高いものとして記述している。
通常処理タスク121〜125には、割込処理タスク111〜115の処理結果を待つものがある。例えば、通常処理タスク121は、割込処理タスク111の処理結果を待って、実行可能な状態でなくなることがある。同様に、通常処理タスク122,123,125は、それぞれ、割込処理タスク112,113,115の処理結果を待つ。また、通常処理タスク124は、割込処理タスクの処理結果を待つことがないタスクである。
通常処理タスク121のほうが通常処理タスク122よりも優先順位が高いので、通常処理タスク121が実行可能な状態である間は、通常処理タスク122が実行可能な状態となっても、タスク選択部332は通常処理タスク121を選択し、通常処理タスク122を実行することはない。
すなわち、通常処理タスク122が処理結果を待っている割込処理タスク112の処理が終了して、通常処理タスク122が実行可能な状態となっても、通常処理タスク121が実行可能な状態でなくなるまで、待つことになる。
したがって、割込発生時に割込処理タスク112をすぐ実行する必要はなく、通常処理タスク121が終わるまで待つことができる。
そこで、通常処理タスク121を実行中は、割込処理タスク112の実行を許可しないよう割込マスクを設定することにより、優先順位の高い通常処理タスク121の実行が中断されないようにする。
すなわち、割込処理タスク112の優先順位は、通常処理タスク121と通常処理タスク122との間であると考えることができる。
このように、各タスクの優先度と、それぞれのタスクが待つ割込処理とがわかれば、各タスクを実行中に設定すべき割込マスクを算出することができる。
マスクテーブル生成部333は、このようにして、ホストタスク110ごとの割込マスクを生成する。
ゲストOS200は、ホストタスク110の一つとして、優先順位を有する。この例では、通常処理タスク122よりも優先順位が低く、通常処理タスク123よりも優先順位が高いものとして、ゲストOS200の優先度が設定され、優先度記憶部391が記憶している。
OS切替用タスク107は、ゲストOS200よりも優先順位を高く設定する。なお、OS切替用タスク107とゲストOS200との間の優先順位を有するホストタスク110がないほうが好ましい。
ゲストOS200が管理するゲストタスク210には、例えば、割込処理タスク211〜212、通常処理タスク221〜223などがある。これらのタスクも、ゲストOS200の管理内において、優先順位を有する。あるいは、ゲストOS200におけるタスク管理は、優先順位に基づくものでなくてもよい。
ここで、ホストタスク110およびゲストタスク210全体の優先順位を考えると、ゲストOS200自体が、ホストOS100が管理するホストタスク110の一つであるため、ゲストタスク210の全体における優先順位は、ゲストOS200より優先順位の高いOS切替用タスク107より高くなることはなく、また、ゲストOS200より優先順位の低い割込処理タスク113より低くなることはない。
ゲストOS200が管理するゲストタスク210においても、通常処理タスク221〜223が割込処理タスク211〜212の処理結果を待つ場合がある。そこで、ゲストOS200も、割込処理タスク211〜212を管理し、割込マスクの設定などを行う場合がある。
図5は、この実施の形態におけるホストタスク110の優先順位と、割込の優先順位との関係の一例を示す概念図である。
通常処理タスクの優先順位は、優先度記憶部391が記憶した優先度により定まる。
割込処理タスクの優先順位は、それぞれの割込処理タスクの処理結果を待つ通常処理タスクの優先順位により定まる。
通常処理タスクの優先制御は、スケジュール部330が行う。
割込処理タスクの優先制御は、割込マスク記憶部312に割込マスクを設定することにより行う。
スケジューラ101のマスクテーブル生成部333は、ホストタスク110の起動時に、この関係にしたがって、割込マスクのレベルとタスクの優先度を設定する。
ゲストOS200は、優先度Tgを有する。
ゲストOS200で処理する割込処理タスクは、割込優先度Ix+1〜Iyを有する。
ゲストOS200より高い優先度で実行するホストタスク110は、優先度Tg+1以上の優先度を有する。
優先度Tg+1以上の優先度を有するホストタスク110実行時には、優先度Iy以下の割込処理をマスクする。
また、ゲストOS200において、ゲストタスク210の処理が割込処理と競合しないようにするために割込をマスクするときは、割込優先度Iy以下の割込をマスクする。
ここで、ゲストタスク210の優先制御は、ゲストOS200が行うので、ホストOS100が関知するところではない。しかし、ゲストOS200以外のホストタスク110を実行中であっても、ゲストOS200で処理すべき割込信号が発生する場合はあるので、割込マスクによって制御する必要がある。
しかし、ゲストOS200による割込制御は、ゲストOS200が処理すべき割込に関するものに限られる。
ホストOS100が処理すべき割込のうち、ゲストOS200よりも優先順位の高い割込は、ゲストOS200の実行中は、常に許可される。これをゲストOS200から見ると、そのような割込は、NMI(No Maskable Interupt)と同じであり、ゲストOS200の制御対象ではない。
また、ホストOS100が処理すべき割込のうち、ゲストOS200よりも優先順位の低い割込は、ゲストOS200の実行中は、常に禁止される。これをゲストOS200から見ると、そのような割込はないのと同じである。
したがって、ゲストOS200は、ゲストOS200が処理すべき割込だけを制御すればよく、ホストOS100が処理すべき割込を考慮する必要はない。
図6は、この実施の形態において、マスクテーブル生成部333が生成し、マスクテーブル記憶部334が記憶するマスクテーブル108の内容の一例を示す図である。
マスクテーブル108は、タスク優先度611、割込マスクレベル612を有するテーブルである。
タスク優先度611は、各タスクの優先度である。優先度記憶部391が記憶したタスク優先度が同じであれば、割込マスクレベルも同じになるので、ホストタスク110ごとではなく、タスク優先度ごとに、割込マスクレベルを記憶する。なお、ホストタスク110ごとに記憶することとしてもよい。
割込マスクレベル612は、タスク優先度611を有するホストタスク110を実行する際、割込マスク記憶部312に設定する割込マスクである。
例えば、タスク優先度Tmのホストタスク110を実行する際には、割込マスクMnを割込マスク記憶部312に設定する。割込マスクMnとは、図5における割込優先度In以下の割込をすべてマスクする割込マスクを示す。
また、タスク優先度Tgのホストタスク110(ゲストOS200)を実行する際には、割込優先度Ix以下の割込をマスクし、割込優先度Ix+1以上の割込を許可する割込マスクMyを割込マスク記憶部312に設定する。
図7は、この実施の形態における割込ベクタ記憶部311が記憶する割込ベクタの一例を示す図である。
割込ベクタ記憶部311が記憶している割込ベクタは、OS切替時に、割込ベクタ書換部323が書き換えることにより、割込ベクタ102または割込ベクタ202を記憶している。
実行装置901が、ホストタスク110のうち、ゲストOS200(あるいは、その管理下にあるゲストタスク210)を実行している場合、割込ベクタ記憶部311は割込ベクタ202を記憶している。
また、実行装置901が、ゲストOS200以外のホストタスク110を実行している場合、割込ベクタ記憶部311は割込ベクタ102を記憶している。
割込ベクタは、割込信号に対応して実行する割込処理を示す情報である。この例では、6種類の割込621〜632に対応する割込ベクタを記憶している。
割込621〜632のうち、割込621〜624は、ホストOS100上で処理すべき割込であるものとする。また、割込631〜632は、ゲストOS200上で処理すべき割込であるものとする。
また、割込621〜632は、図中、上に記載したもののほうが優先順位が高く、下にいくほど、優先順位が下がるものとする。
実行装置901がゲストOS200以外のホストタスク110を実行している際の割込ベクタ102のうち、ホストOS100が処理すべき割込621〜624に対応する割込ベクタ641〜644は、それぞれの割込を処理する割込処理プログラム661〜664を示す。
これに対し、ゲストOS200が処理すべき割込631〜632はゲストOS200が実行中でないと処理できないため、割込ベクタ649は、割込を処理する割込処理プログラム671〜672ではなく、切替プログラム669を示す。
実行装置901がゲストOS200を実行している際の割込ベクタ202のうち、ゲストOS200が処理すべき割込631〜632に対応する割込ベクタ651〜652は、それぞれの割込を処理する割込処理プログラム671〜672を示す。
これに対し、ホストOS100が処理すべき割込621〜622に対応する割込ベクタ659は、割込を処理する割込処理プログラム661〜664ではなく、切替プログラム679を示す。
なお、実行装置901がゲストOS200を実行している際は、割込マスクにより、優先順位の低い割込623〜624は発生しない。そこでこの例では、割込623〜624に対応する割込ベクタは空欄にしている。しかし、割込623〜624に対応する割込ベクタも、割込ベクタ659としておいてもよい。
次に、動作について説明する。
図8は、この実施の形態において、ホストタスク110起動時におけるスケジュール部330のタスク起動処理の流れの一例を示すフローチャート図である。
ホストOS100は、ホストOS上のタスク106およびゲストOS200をホストタスク110として生成(起動)する際、優先度およびタスク実行時にかけておく割込マスクを設定する。
あらかじめ、マスクテーブル生成部333が、マスクテーブル108を生成し、マスクテーブル記憶部334が記憶している。
ホストOS100がタスク起動要求を受けると、タスク起動処理を開始する。
S11において、スケジュール部330が、優先度記憶部391が記憶した優先度に基づいて、起動するホストタスク110の優先度を算出する。
あるいは、タスク起動時にホストタスク110の優先度を指定することとし、スケジュール部330が、優先度記憶部391に優先度を記憶することとしてもよい。その場合、必要に応じて、マスクテーブル生成部333が、マスクテーブル108を再生成してもよい。
S12において、スケジュール部330が、S11で算出した優先度に基づいて、マスクテーブル記憶部334が記憶したマスクテーブル108から、割込マスクを算出する。
S13において、コンテキスト記憶部392が、起動するホストタスク110のコンテキストを記憶するための記憶領域を確保する。
S14において、コンテキスト記憶部392が、S12で算出した割込マスクを、S13で確保した記憶領域に記憶する。
S15において、実行可能判断部331が、起動するホストタスク110を、実行可能タスクリストに登録する。また、それ以外の通常のタスク起動時に行う処理を行う。
実際に、タスク選択部332がホストタスク110を選択し、実行装置901がホストタスク110を実行する場合、ディスパッチ部320がコンテキストを復元する。コンテキスト記憶部392が記憶しているタスクのコンテキストには、S14で記憶した割込マスクが含まれているので、マスク設定部324が割込マスク記憶部312に記憶させる。
したがって、ホストタスク110が実行されている間、ホストタスク110よりも優先順位の低い割込処理を禁止する割込マスクを、割込マスク記憶部312に設定することとなる。
ここで、ゲストOS200(図5の優先度Tg)よりも優先順位が高い(例えば、優先度Tz)ホストタスク110を実行している間は、ゲストOS200が処理すべき割込処理(割込優先度Ix+1〜Iy)を禁止する割込マスクMzを割込マスク記憶部312に設定するので、ゲストOS200が処理すべき割込が入ることがない。
したがって、ゲストOS200よりも優先順位が高いホストタスク110の実行が、ゲストOSが処理すべき割込処理による影響を受けることはない。
また、ゲストOS200の中で割込マスクを変更する場合は、割込優先度がIyより高い割込は常に許可し、割込優先度がIx+1より低い割込は常に禁止することとして、割込マスクMx〜Myを用いることとする。
これにより、ゲストOS200が割込マスクを変更しても、ゲストOS200より優先順位が高い割込処理が禁止されることはない。
図9は、この実施の形態におけるスケジュール部330のスケジュール処理の流れの一例を示すフローチャート図である。
スケジュール部330は、実行可能な状態にあるホストタスク110のなかから、もっとも優先順位の高いホストタスク110を選択する。
S21(実行可能判断工程)において、実行可能判断部331が、実行可能タスクリストから実行可能な状態にあるホストタスク110を判別する。
実行可能タスクリストには、起動されているホストタスク110が登録されており、それぞれのホストタスク110が実行可能な状態にあるか否かを記憶している。実行可能タスクリストは、実行可能判断部331が記憶装置902を用いて記憶している。
S22において、タスク選択部332が、S21で実行可能判断部331が実行可能な状態にあると判断したホストタスク110について、優先度記憶部391が記憶した優先度に基づいて、優先順位を算出する。
S23(タスク選択工程)において、タスク選択部332が、S22で算出した優先順位が最も高いホストタスク110を選択する。
S24において、ディスパッチ部320が、タスク切替処理を行う。すなわち、実行中のホストタスク110のコンテキストをコンテキスト記憶部392に保存し、S23でタスク選択部332が選択したタスクのコンテキストをコンテキスト記憶部392から復元する。
S25において、実行装置901が、S23でタスク選択部332が選択したホストタスク110を実行する。
その後、実行中のホストタスク110が、終了・休眠(実行可能な状態でない)などにより中断した場合、S21へ戻る。
図10は、この実施の形態におけるディスパッチ部320のタスク切替処理の流れの一例を示すフローチャート図である。
これは、スケジュール処理におけるタスク切替処理(S24)の内容を詳しく説明したものである。
S31において、コンテキスト記憶部392が、実行中のホストタスク110のコンテキストを記憶する(コンテキストのセーブ)。このコンテキストには、ホストタスク110実行時に設定していた割込マスクも含む。
S32において、割込ベクタ書換部323が、OS切替が発生するか否かを判断する。
S33において、OS切替がある場合には、S34へ進む。OS切替がない場合には、S37へ進む。
S34において、割込ベクタを書き換えている途中に割込が発生しないよう、ディスパッチ部320が、割込を禁止する。
なお、ここでの「割込禁止」とは、割込マスクによる禁止ではなく、すべての割込を禁止する。例えば、実行装置901が割込禁止命令を実行する。
S35において、割込ベクタ書換部323が、割込ベクタ記憶部311が記憶した割込ベクタを読み出し、OSのコンテキストとして、コンテキスト記憶部392が記憶する(割込ベクタのセーブ)。
S36(割込ベクタ書換工程)において、割込ベクタ書換部323が、コンテキスト記憶部392が記憶した切替先のOSのコンテキストを読み出し、割込ベクタ記憶部311が記憶する(割込ベクタのリストア)。
S37において、コンテキスト書換部321が、コンテキスト記憶部392が記憶した切替先のホストタスク110のコンテキストを読み出し、復元する。また、マスク設定部324が、割込マスクを復元する(コンテキストのリストア)。
S38において、ディスパッチ部320が、割込禁止を解除する。例えば、実行装置901が割込禁止解除命令を実行する。
なお、割込ベクタをOSのコンテキストではなく、タスクのコンテキストとして、コンテキスト記憶部392がタスクごとに記憶(ゲストOS200以外のホストタスク110の割込ベクタは、すべて同じ)しておくこととすれば、タスク切替時に、OS切替があるかどうかを判断する必要はない。
図11は、この実施の形態において、割込信号入力時における割込処理部310の割込処理の流れの一例を示すフローチャート図である。
S41において、割込処理実行部313が、割込信号入力装置905が出力した割込信号を検出する。
S42において、割込処理実行部313が、割込マスク記憶部312が記憶した割込マスクに基づいて、その割込信号に対応する割込処理が許可されているか禁止されているかを判断する。
S43において、許可されている場合には、S44へ進む。禁止されている場合には、処理を終了する。
S44において、同じ割込が重複して発生しないよう、割込処理実行部313が、割込を禁止する(割込のブロック)。
S45において、実行装置901が、割込ベクタ記憶部311が記憶した割込ベクタが示すプログラムを実行する。
次に、S45で実行されるプログラムの処理内容について、説明する。
図12は、この実施の形態において、割込信号入力時に実行される割込処理プログラム661〜664の割込処理の流れの一例を示すフローチャート図である。
割込処理プログラム661〜664は、ホストOS100が処理すべき割込を処理するプログラムであり、ホストOS100の管理下にあるものである。
S51において、割込信号入力装置905が、割込信号の出力を停止する。例えば、実行装置901が割込停止命令を実行し、割込信号入力装置905に対して割込処理の開始を通知する(割込のアクノリッジ)。これを受けた割込信号入力装置905は、割込信号の出力を停止する。
割込がマスクされていたり、禁止されていたりして、割込処理を開始できない場合、すぐに割込信号の出力を止めてしまうと、割込処理ができず、支障を来たす。そこで、割込信号入力装置905は、割込処理が開始したことを確認するまで、割込信号を出力し続ける(割込信号のアサート)。
そのため、割込信号入力装置905に対して、割込処理が開始したことを通知し、割込信号を停止させる必要がある。
S52において、実行装置901が、割込禁止を解除する。割込信号入力装置905が割込信号の出力を停止したので、同じ割込が重複して発生する心配がなくなり、もっと優先順位の高い割込が発生した場合に、その割込の処理ができるようにするためである。
なお、割込マスクはそのままなので、割込禁止を解除しても、優先順位の低い割込は発生しない。
S53において、実行装置901が、それぞれの割込に対応する処理を行う。
S54において、割込処理の結果を待っていた通常処理タスクを起床する(タスクのウェイクアップ)。
割込処理の結果を待っていた通常処理タスクとは、その割込処理の結果がないと、実行可能な状態とならないホストタスク110である。実行可能判断部331が、そのホストタスク110を実行可能な状態にないものとして、実行可能タスクリストに登録しているので、これを実行可能な状態であるという内容に書き換える。
割込処理終了後、実行可能判断部331が、割込処理の結果を待っていた通常処理タスクを実行可能と判断する(S21)ので、実行可能なホストタスク110のなかに、もっと優先順位の高いホストタスク110がなければ、タスク選択部332が、そのタスクを選択し(S23)、タスクが切り替わる(S24)。
なお、ゲストOS200の管理下にある割込処理プログラム671〜672の処理の流れも、これと同様であるので、ここでは説明を省略する。ただし、ゲストOS200の管理下にある割込処理プログラム671〜672が起床する通常処理タスクは、ゲストOS200の管理下にあるゲストタスク210なので、実行可能などうかの判断等はすべてゲストOS200が行い、実行可能判断部331等は関与しない。
図13は、この実施の形態において、割込信号入力時に実行される切替プログラム669のOS切替処理の流れの一例を示すフローチャート図である。
切替プログラム669は、実行装置901がゲストOS200以外のホストタスク110を実行中に、ゲストOS200で処理すべき割込が発生した場合に実行される。
S61において、切替プログラム669がゲストOS200を起床する。
すなわち、実行可能判断部331が、ゲストOS200を実行可能な状態にあるものとして、実行可能タスクリストに登録する。
ゲストOS200よりも優先順位の高いホストタスク110を実行中は、ゲストOS200で処理すべき割込は、割込マスクにより禁止されているため、発生しない。
したがって、切替プログラム669が実行されるのは、ゲストOS200よりも優先順位の低いホストタスク110を実行している場合(またはホストOS100がアイドル状態である場合)である。
したがって、割込処理終了後、ゲストOS200が、実行可能なホストタスク110のなかで、もっとも優先順位の高いホストタスク110となり、タスクが切り替わる(S24)。
タスク切替処理において、OS切替がある(S33)ので、割込ベクタをゲストOS200のものに書き換える(S36)。また、ゲストOS200実行時のコンテキストが復元される(S37)。
その後、割込禁止が解除される(S38)。
この時点で、割込信号入力装置905は、割込信号の出力を停止していない(S51に相当する処理をしていない)ので、再び割込が発生する。
割込信号自体は同じであるが、割込ベクタが書き換わっているので、実行されるプログラムは、切替プログラム669ではなく、割込処理プログラム671〜672である。また、ゲストOS200実行時のコンテキストが復元されているので、支障なく、割込の処理が行われる。
また、ゲストOS200内で、割込マスクを書き換えている場合には、割込マスクが復元されて(S37)から、割込禁止が解除される(S38)ので、発生した割込が、ゲストOS200がマスクしたい割込である場合には、割込処理は開始されない。
したがって、いずれの場合も、ゲストOS200が期待する通りの動作が保証される。
図14は、この実施の形態において、割込信号入力時における切替プログラム679のOS切替処理の流れの一例を示すフローチャート図である。
切替プログラム679は、実行装置901がゲストOS200を実行中に、ホストOS100が処理すべき割込が発生した場合に実行される。
S71において、切替プログラム679がOS切替用タスク107を起床する。
すなわち、実行可能判断部331が、OS切替用タスク107を実行可能な状態にあるものとして、実行可能タスクリストに登録する。
ここで、切替プログラム679は、ゲストOS200の管理下にあるので、ゲストタスク210を起床することはできるが、ホストタスク110であるOS切替用タスク107を直接、起床することはできない。
しかし、ゲストOS200自体が、ホストOS100の管理下にあるホストタスク110の一つであるため、ゲストOS200からOS切替用タスク107を起床することができる。
ゲストOS200を実行中は、ホストOS100で処理すべき割込のうち、ゲストOS200よりも優先順位の低い割込は、割込マスクにより禁止されているため、発生しない。
したがって、切替プログラム679が実行されるのは、ホストOS100で処理すべき割込のうち、ゲストOS200よりも優先順位の高い割込が発生した場合に限られる。
また、ゲストOS200を実行中であるので、ゲストOS200よりも優先順位の高いホストタスク110のなかに、実行可能な状態にあるものは存在しない。
OS切替用タスク107は、ゲストOS200よりも優先順位を高く設定してあるので、割込処理終了後、OS切替用タスク107が、実行可能なホストタスク110のなかで、もっとも優先順位の高いホストタスク110となり、タスクが切り替わる(S24)。
タスク切替処理において、OS切替がある(S33)ので、割込ベクタをホストOS100のものに書き換える(S36)。
その後、割込禁止が解除される。(S38)。
この時点で、割込信号入力装置905は、割込信号の出力を停止していない(S51に相当する処理をしていない)ので、再び割込が発生する。
割込信号自体は同じであるが、割込ベクタが書き換わっているので、実行されるプログラムは、切替プログラム679ではなく、割込処理プログラム661〜662である。したがって、支障なく、割込の処理が行われる。
また、ゲストOS200内で、割込マスクを書き換えていても、ホストOS100が処理すべき割込のうち、ゲストOS200よりも優先順位の高い割込は制御対象ではなく、優先順位の高い割込を許可する範囲内でしか、割込マスクを書き換えないので、支障なく、優先順位の高い割込の処理が行われる。
逆に、ゲストOS200内では、ホストOS100が処理すべき割込のうち、ゲストOS200よりも優先順位の低い割込も制御対象ではなく、優先順位の低い割込を禁止する範囲内でしか、割込マスクを書き換えないので、優先順位の低い割込が発生することはない。
したがって、どの割込信号が発生した場合でも、常に、正常に割込処理をすることができる。
図15は、この実施の形態におけるOS切替用タスク107のOS切替処理の流れの一例を示すフローチャート図である。
OS切替用タスク107は、OS切替を発生させるためのダミーであり、特に処理すべき内容はない。
OS切替用タスク107は、ゲストOS200の起動と同時に起動される。
S76において、OS切替用タスク107は、休眠処理をする(タスクのスリープ)。
休眠処理とは、なんらかの事象が発生を待つため、実行可能な状態でないタスクが、実行可能でなくなったことをOSに通知し、実行装置901が他のタスクを実行できるようにすることである。
休眠処理は、ホストタスクが実行可能な状態にないことを通知する処理の一例である。
OS切替用タスク107は、もともと処理すべき内容がないタスクであるため、起動後すぐに休眠する。
その後、切替プログラム679により起床させられる。OS切替用タスク107が起床したことでOS切替が発生し、すでに目的を達したので、OS切替用タスク107が処理すべき内容はない。
そこで、S76に戻り、OS切替用タスク107は、再び休眠する。
図16は、この実施の形態におけるゲストOS200のスケジュール処理の流れの一例を示すフローチャート図である。
なお、ゲストOS200は、既存のOSをわずかな修正で利用するものであるため、多くの部分が既存のOSと同一である。
したがって、ゲストOS200は、もととなる既存のOSと同様のブロック構成を有するものであって、様々な構成があり得る。
ここでは一例として、ゲストOS200が、図3で説明したホストOS100と同様のブロック構成を有するものとして説明する。
S81において、ゲストOS200のスケジュール部が、ゲストタスク210が実行可能な状態であるかを判断する。
S82において、実行可能なゲストタスク210がある場合には、S83へ進む。実行可能なゲストタスク210がない場合には、S86へ進む。
S83において、ゲストOS200のスケジュール部が、実行可能なゲストタスク210のなかから、実行するゲストタスク210を選択する。選択の方法は、ホストOS100と同様、優先順位によるものであってもよいし、実行時間が平等となるように選択してもよい。
S84において、ゲストOS200のディスパッチ部が、それまで実行していたゲストタスク210のコンテキストを保存し、選択したゲストタスク210のコンテキストを復元する。
S85において、実行装置901が、選択したゲストタスク210を実行する。
その後、実行したゲストタスク210が、終了・休眠などにより中断した場合、S81へ戻る。
S86において、ゲストOS200は、実行可能なゲストタスク210がないので、休眠処理をする。
すなわち、いずれかのゲストタスク210が実行可能な状態となるまで、ゲストOS200自体が実行可能な状態でないものとして、ホストOS100に通知し、実行装置901が他のホストタスク110を実行できるようにする。
この処理により、ゲストOS200よりも優先順位の低いホストタスク110も、実行の機会を得られるようになる。
この実施の形態における並列処理装置によれば、ゲストOS200の実行中と、それ以外の場合とにおいて、異なる割込ベクタを割込ベクタ記憶部311に記憶させるので、割込を処理すべきOSと異なるOSを実行中に、割込が発生した場合であっても、異なるOS下で割込処理が実行されることがなく、割込の発生による処理の混乱を回避することができるという効果を奏する。
この実施の形態における並列処理装置によれば、割込を処理すべきOSと異なるOSを実行中に、割込が発生した場合、OS切替処理を行い、その後再び割込が発生するので、割込を処理すべきOSが適切に割込を処理することができるという効果を奏する。
この実施の形態における並列処理装置によれば、ゲストOS200を実行中でない場合に、ゲストOS200で処理すべき割込が発生した場合に、ゲストOS200を起床させ、OSを切り替えるので、適切なOSのもとで、割込処理を実行することができるという効果を奏する。
この実施の形態における並列処理装置によれば、ゲストOS200を実行中に、ホストOS100で処理すべき割込が発生した場合に、ゲストOS200の実行を中断し、OSを切り替えるので、適切なOSのもとで、割込処理を実行することができるという効果を奏する。
この実施の形態における並列処理装置によれば、簡単なOS切替用タスク107を起動しておくだけで、OS切替処理ができるので、既存のOSをホストOS100、ゲストOS200として利用する際に加えるべき変更が少なく、既存のOSを有効に利用することができ、開発コストを抑えることができるという効果を奏する。
この実施の形態における並列処理装置によれば、割込処理を開始するまで、割込信号入力装置905が割込信号を出力するので、OS切替処理後、再び割込が発生し、割込を処理すべき割込処理プログラムを支障なく実行できるという効果を奏する。
この実施の形態における並列処理装置によれば、割込を処理すべきOSと異なるOSを実行中に割込が発生した場合に実行される切替プログラム669,679が、割込停止命令を含まないので、OS切替後、再び割込が発生し、割込を処理すべき割込処理プログラムを支障なく実行できるという効果を奏する。
この実施の形態における並列処理装置によれば、ホストタスク110の優先順位に基づいて、実行するホストタスク110を選択するので、優先順位の高いタスクが実行可能であれば、優先順位の低いタスクが実行されることはなく、優先順位の低いタスクが待っている割込処理の実行を延期することができるという効果を奏する。
この実施の形態における並列処理装置によれば、割込処理の結果を待っているタスクの優先順位に基づいて、割込処理に優先順位を設け、割込処理の優先順位に基づいて、割込のマスク制御を行うので、優先順位の高い処理の実行中は、優先順位の低い割込が発生せず、割込の衝突を回避することができるという効果を奏する。
この実施の形態における並列処理装置によれば、ゲストOS200が行う割込制御が、ホストOS100が処理すべき割込に影響を与えることがないので、既存のOSをゲストOS200として利用する際に加えるべき変更が少なく、既存のOSを有効に利用することができ、開発コストを抑えることができるという効果を奏する。
この実施の形態における並列処理装置によれば、ホストOS100が処理すべき割込を、ゲストOS200が意識する必要がないので、既存のOSをゲストOS200として利用する際に加えるべき変更が少なく、既存のOSを有効に利用することができ、開発コストを抑えることができるという効果を奏する。
この実施の形態における並列処理装置によれば、ゲストOS200が制御する割込の範囲を限定するので、ゲストOS200による割込制御と、ホストOS100による割込制御とが矛盾することなく、並存できるという効果を奏する。
この実施の形態における並列処理装置によれば、割込マスクにより、ゲストOS200よりも優先順位の高いホストタスク110の実行中は、ゲストOS200で処理すべき割込が発生しないので、ホストOS100の処理に、ゲストOS200で処理すべき割込の影響が出ないという効果を奏する。
この実施の形態における並列処理装置によれば、割込マスクにより、ゲストOS200の実行中は、ゲストOS200よりも優先順位の低い割込が発生せず、ゲストOS200の処理に、ホストOS100で処理すべき優先順位の低い割込の影響が出ないという効果を奏する。
この実施の形態における並列処理装置によれば、ゲストOS200上に実行可能なゲストタスク210がない場合に、ゲストOS200自体が休眠状態となるので、ゲストOS200よりも優先順位の低いタスクにも、実行の機会が与えられるという効果を奏する。
この実施の形態における並列処理装置によれば、ゲストOS200上に実行可能なゲストタスク210がない場合に、ゲストOS200が実行可能な状態でないことをホストOS100に通知する処理を実行するので、ゲストOS200が休眠状態であることを、ホストOS100が判別できるという効果を奏する。
この実施の形態における並列処理装置によれば、ゲストOS200が休眠中に、ゲストOS200が処理すべき割込が発生した場合に、ゲストOS200を起床するので、割込を適切に処理できるという効果を奏する。
この実施の形態における並列処理方法によれば、ゲストOS200の実行中と、それ以外の場合とにおいて、異なる割込ベクタを割込ベクタ記憶部311に記憶させるので、割込を処理すべきOSと異なるOSを実行中に、割込が発生した場合であっても、異なるOS下で割込処理が実行されることがなく、割込の発生による処理の混乱を回避することができるという効果を奏する。
この実施の形態における並列処理プログラムによれば、ゲストOS200の実行中と、それ以外の場合とにおいて、異なる割込ベクタを割込ベクタ記憶部311に記憶させるので、割込を処理すべきOSと異なるOSを実行中に、割込が発生した場合であっても、異なるOS下で割込処理が実行されることがなく、割込の発生による処理の混乱を回避することができる並列処理装置900として、コンピュータを機能させることができるという効果を奏する。
以上のように、ゲストOS200のスケジュール部が、実行可能なゲストタスク210がない場合(アイドル時)に、ホストOS100上の休眠処理(スリープ)を行い、ゲストOS200で処理すべき割込が入ったら、ゲストOS200を、ホストOS100が起床させる処理(ウェイクアップ)を行うので、ゲストOSの優先順位を一番下以外にすることが可能となる。
また、ゲストOS200の中で割込マスクを行う場合は、マスクレベルをゲストOS200で扱う割込の優先順位以下としているため、優先順位の高いホストタスク110の処理が割込マスクにより遅延されることがない。
また、ゲストOS200より高い優先順位のホストタスク110の実行中は、優先順位の低い割込処理をマスクするため、優先順位の高いホストタスク110の処理が優先順位の低い割込処理の影響を受けない。
これにより、ホストOS100としてリアルタイムOSを用い、ゲストOS200として非リアルタイムOSを用いた場合であっても、割込の整合性を保つことができ、リアルタイムOSのリアルタイム性を確保することができる。
また、非リアルタイムOSの割込処理が、時間制約を考慮していない場合であっても、割込の整合性が保たれているので、リアルタイムOSのリアルタイム性を確保することができる。
また、ゲストOS200が管理するゲストタスク210がすべて実行不可能な状態である場合に、ゲストOS200が休眠処理(スリープ)を行うので、ゲストOS200よりも優先順位が低いホストタスク110にも実行の機会が与えられる。したがって、ゲストOS200を一番低い優先順位とする必要がない。
これにより、ホストタスク110によって実行装置901を占有されて、ゲストタスク210が処理すべき割込に対する処理が実行できないことによって、例えば、タイマー割込による時間管理において、時間が不正になったり、バッファを持った入出力デバイスのバッファがオーバーフローしたりアンダーフローしたりするといった障害が発生することを回避することができる。
実施の形態2.
実施の形態2を、図17〜図21を用いて説明する。
この実施の形態における並列処理装置900のハードウェア構成は、実施の形態1で説明したものと同様なので、ここでは説明を省略する。
図17は、この実施の形態における並列処理装置900の機能ブロックの構成の一例を示すブロック構成図である。
なお、実施の形態1で説明した機能ブロックと共通するブロックについては、共通の符号を付し、説明を省略する。
並列処理装置900は、タスク間メッセージ処理部341、OS間同期用データ記憶部393などを有する。
タスク間メッセージ処理部341は、ホストタスク110が他のタスク(ホストタスク110またはゲストタスク210)に対して通知するメッセージを処理する。
例えば、あるホストタスク110が他のタスクに対して通知すべきメッセージを生成した場合、タスク間メッセージ処理部341が、そのメッセージを取得する。
タスク間メッセージ処理部341は、そのメッセージの通知先であるホストタスク110が、そのメッセージを待っていることにより、休眠している場合、実行可能判断部331が記憶した実行可能タスクリストを書き換えて実行可能な状態とすることにより、そのメッセージを待っていたホストタスク110を起床する。
タスク間メッセージ処理部341は、実行装置901がOS間同期処理105を実行することにより実現する。
メッセージの通知先タスクがホストタスク110ではなく、ゲストタスク210である場合、ゲストタスク210はゲストOS200の管理下にあり、実行可能判断部331が実行可能か否かを把握していない。したがって、タスク間メッセージ処理部341は、直接、通知先のゲストタスク210を起床することはできない。
そこで、OS間同期用データを用いて、通知先のゲストタスク210を間接的に起床する。
OS間同期用データ記憶部393は、記憶装置902を用いて、OS間同期用データを記憶する。
OS間同期用データ記憶部393は、通知先記憶部の一例である。
OS間同期用データは、異なるOSの管理下にあるタスクを起床するために用いられるデータである。
図18は、この実施の形態におけるOS間同期用データ記憶部393が記憶したOS間同期用データ400のデータ構造の一例を示す図である。
OS間同期用データ400は、ゲストOS上の同期用データ401、フラグ402を有する。OS間同期用データ400は、起動しているゲストタスク210ごとに、あるいは、メッセージの通知を待っているゲストタスク210ごとに、存在する。したがって、あるゲストタスク210に対してメッセージを通知する場合は、通知先のゲストタスク210に対応するOS間同期用データ400を用いる。
ゲストOS上の同期用データ401は、ゲストOS200内において、ゲストタスク210同士がやり取りするメッセージである。
フラグ402は、ゲストタスク210がホストタスク110からのメッセージを待っているか否かを示す。
ゲストタスク210がホストタスク110からのメッセージを待つため、休眠状態になった場合に、フラグ402をセットする。
ホストタスク110からメッセージが通知され、ゲストタスク210が実行可能になった場合に、フラグ402をクリアする。
ゲストタスク210同士でメッセージをやり取りする場合は、ゲストOS200が、そのメッセージの通知先を把握し、ゲストタスク210を起床することができるので、フラグ402は必要ない。
しかし、ホストタスク110からゲストタスク210に対してメッセージが通知された場合、通知先のゲストタスク210をゲストOS200が把握するために、フラグ402を利用する。
なお、既存のOSを修正してゲストOS200として利用する場合には、既存のOSがタスク間通信に使用しているデータ構造を修正して、OS間同期用データ400として利用する。この場合、フラグ402を追加する修正をするだけでよいので、わずかな修正で済ませることができ、既存のOSを最大限利用できるので、開発コストを抑えることができる。
次に、動作について説明する。
図19は、この実施の形態におけるゲストOS200のスケジュール処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で説明したゲストOS200のスケジュール処理の工程と共通する工程については、共通の符号を付し、説明を省略する。
T21において、ゲストOS200のスケジュール部が、S85で実行していたゲストタスク210が実行を中断した理由を判別する。
T22において、ゲストタスク210が中断した理由が、ホストタスク110からのメッセージ待ちである場合には、T23へ進む。ホストタスク110からのメッセージ待ちでない場合には、S81へ戻る。
T23において、ゲストOS200のスケジュール部(OS間同期処理部)が、OS間同期用データ記憶部393が記憶したOS間同期用データ400から、メッセージ待ちのゲストタスク210についてのフラグ402を取得する。
例えば、ゲストタスク210が使用するOS間同期用データ400の識別子をゲストタスク210が指定し、OS間同期処理部が、指定された識別子によって識別されるOS間同期用データ400を、OS間同期用データ記憶部393から読み出して、フラグ402を取得する。
T24において、ゲストOS200のスケジュール部(OS間同期処理部)が、T23で取得したフラグ402を、ホストタスク110からのメッセージ待ちのため休眠状態であることを示す内容に書き換えて、OS間同期用データ記憶部393に記憶させる。
T25において、ゲストOS200のスケジュール部が、S85で実行を中断したメッセージ待ちのゲストタスク210を、実行可能な状態でない(休眠状態)として記憶する(ゲストOS上のタスクのスリープ)。
その後、S81へ戻る。
これにより、ホストOS100は、フラグ402を見ることによって、そのゲストタスク210がホストタスク110からのメッセージ待ちであるか否かを判別できる。
図20は、この実施の形態におけるスケジュール部330のスケジュール処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で説明したスケジュール部330のスケジュール処理の工程と共通する工程については、共通する符号を付し、ここでは説明を省略する。
T11において、タスク間メッセージ処理部341が、S25で実行していたホストタスク110が通知したメッセージの通知先を判別する。
T12において、S25で実行していたホストタスク110が他のタスクに対してメッセージを通知していない場合には、S21に戻る。S25で実行していたホストタスク110が他のホストタスク110に対してメッセージを通知する場合には、T13へ進む。S25で実行していたホストタスク110がゲストタスク210に対してメッセージを通知する場合には、T15へ進む。
T13において、実行可能判断部331が、メッセージの通知先であるホストタスク110が、そのメッセージを待つために休眠しているか否かを判断する。そのメッセージを待っていた場合には、T14へ進む。そのメッセージを待つために休眠しているのではない場合には、S21に戻る。
T14において、実行可能判断部331が、メッセージの通知先でるホストタスク110が実行可能な状態になったものとして、実行可能タスクリストに登録する。
その後、S21に戻る。
T15において、タスク間メッセージ処理部341が、OS間同期用データ記憶部393が記憶したOS間同期用データから、通知先のゲストタスク210についてのフラグ402を取得する。
例えば、T23においてゲストタスク210が指定したOS間同期用データ400の識別子と同じ識別子を、ホストタスク110が指定し、タスク間メッセージ処理部341が、指定された識別子によって識別されるOS間同期用データ400を、OS間同期用データ記憶部393から読み出して、フラグ402を取得する。
T16において、タスク間メッセージ処理部341が、T15で取得したフラグ402から、通知先のゲストタスク210が、ホストタスク110からのメッセージを待つために休眠しているか否かを判断する。ホストタスク110からのメッセージを待っていた場合には、T17へ進む。ホストタスク110からのメッセージを待つために休眠しているのではない場合には、S21に戻る。
T17において、タスク間メッセージ処理部341が、T15で取得したフラグ402を、起床要求を示す内容に書き換えて、OS間同期用データ記憶部393に記憶させる。
T18において、割込信号入力装置905が割込信号を出力し、S21に戻る。
ここで割込信号入力装置905が出力する割込信号は、異なるOSのタスク間でのメッセージのやり取りが発生したことを示す信号である。
例えば、GPIO(General Purpose Input/Output:汎用入出力装置)(出力装置904)の出力線を、割込信号入力装置905に結線し、GPIOに対する出力を行うことで、割込信号を出力する。
あるいは、他の用途に使用していないDMA(Direct Memory Access)コントローラを使って、最小単位のデータをメモリ(記憶装置902)間で転送することにより、その完了を通知する割込信号を出力してもよい。
もしくは、ハードウェアを使用せず、例えば、SWI(Softwere Interupt)命令を実行することで、割込信号を出力してもよい。
この割込信号は、ゲストOS200で処理すべき割込を発生させるものである。したがって、この割込処理の優先順位は、ゲストOS200より高く、ゲストOS200より優先順位の高いホストタスク110より低い。
したがって、ゲストOS200より優先順位の高いホストタスク110の実行中は、割込マスクにより、この割込についての処理は行わない。これにより、無駄なOS切替等は発生しない。
図21は、この実施の形態において、T18で入力した割込信号による割込を処理する割込処理プログラムのOS間通信割込処理の流れの一例を示すフローチャート図である。
OS間通信割込処理を行う割込処理プログラムは、ゲストOS200の管理下にある割込処理プログラムである。
したがって、この割込信号入力後、実施の形態1で説明したタスク切替処理、割込ベクタ書換処理などが発生する。その後、OS間通信割込処理が開始する。
T31において、ゲストOS200のスケジュール部(OS間同期処理部)が、OS間同期用データ記憶部393が記憶したOS間同期用データ400を読み出し、起床要求を示すフラグ402が設定されているものを探し、メッセージの通知先であるゲストタスク210を判別する。
T32において、ゲストOS200のスケジュール部(OS間同期処理部)が、T31で読み出したフラグ402をクリアして、OS間同期用データ記憶部393に記憶させる。
T33において、ゲストOS200のスケジュール部が、メッセージの通知先であるゲストタスクを起床する。
これにより、ホストタスク110がメッセージを通知した通知先であるゲストタスク210を起床させることができる。
また、割込処理によって、通知先のゲストタスク210を起床させるので、ゲストOS200が他のゲストタスク210の実行中に、実行を中断していた場合であっても、ゲストOS200の実行再開時に、通知先のゲストタスク210のほうが、実行を中断していたゲストタスク210よりも優先順位が高い場合に、実行を中断していたゲストタスク210の実行を再開するのではなく、通知先のゲストタスク210の実行を、すぐに開始できる。
スケジュール部330のスケジュール処理において、T18で割込を発生させず、T17でOS間同期用データ記憶部393を書き換えるのみとして、ゲストOS200が実行を再開した場合、実行を中断していたゲストタスク210の実行を再開する。割込が発生しないので、通知先のゲストタスク210のほうが優先順位が高い場合であっても、実行を中断していたゲストタスク210の処理が一段落するまでは、通知先のゲストタスク210が起床されない。
T18で割込信号を発生させることにより、そのような処理の遅延が生じないようにすることができる。
この実施の形態における並列処理装置によれば、ホストタスク110がゲストタスク210に対して通知するメッセージを生成した場合に、割込信号入力装置905が割込信号を出力するので、メッセージの通知を待っていたゲストタスク210の処理が遅延することがないという効果を奏する。
この実施の形態における並列処理装置によれば、既存のOSがタスク間通信のために有しているデータ構造をわずかに修正するだけで、OS間同期用データ400として利用できるので、既存のOSをゲストOS200として利用する際に必要な修正点が少なく、開発コストを抑えることができるという効果を奏する。
この実施の形態における並列処理装置によれば、割込信号により起動されたゲストOS200の割込処理プログラムにおいて、OS間同期用データ400に基づいて、メッセージの通知先であるゲストタスク210を判別する処理を行うので、メッセージの通知を待っていたゲストタスク210を起床することができるという効果を奏する。
なお、ゲストタスク210がホストタスク110に対してメッセージを通知した場合には、ゲストOS200がホストOS100の管理下にあるホストタスク110の一つなので、ゲストOS200からホストOS100に対して、通知先のホストタスク110の起床を要求することができる。
以上のように、ホストOS100上のタスクから割込を入れ、ゲストOS200上の割込処理の中でゲストタスク210を起床するので、ホストタスク110からゲストタスク210を起床することができる。
これにより、ゲストOS200側で、データの到着をポーリングする必要がないので、ポーリング処理によるオーバーヘッドがなく、また、次のポーリングのタイミングまで処理が遅延することもない。
実施の形態3.
実施の形態3を、図22〜図26を用いて説明する。
この実施の形態における並列処理装置900のハードウェア構成は、実施の形態1で説明したものと同様であるので、ここでは説明を省略する。
図22は、この実施の形態における並列処理装置900において実行されるプログラム(タスク)の関係の一例を示す概念図である。
なお、実施の形態1で説明したプログラムまたはデータと共通するプログラムまたはデータについては、同一の符号を付し、ここでは説明を省略する。
ホストOS100は、ゲストOS優先度情報151を保有する。
ゲストOS優先度情報151は、ゲストOS200の優先度をどのように変化させるかについての情報である。
ホストOS100が管理するホストタスク110の一つとして、優先度制御タスク109がある。
優先度制御タスク109は、ゲストOSの優先度を変化させる処理を行うプログラムである。
図23は、この実施の形態における並列処理装置900の機能ブロックの構成の一例を示すブロック構成図である。
なお、実行の形態1で説明したブロックと共通する機能ブロックについては、同一の符号を付し、ここでは説明を省略する。
並列処理装置900は、ゲストOS優先度情報記憶部394、優先度書換部351などを有する。
ゲストOS優先度情報記憶部394は、ゲストOS優先度情報151を記憶装置を用いて記憶する。
優先度書換部351は、ゲストOS優先度情報記憶部394が記憶したゲストOS優先度情報に基づいて、優先度記憶部391が記憶したゲストOS200の優先度を書き換える。このとき、時計装置906が測定した経過時間によって、ゲストOS200の優先度を変化させる。
優先度書換部351は、実行装置901が優先度制御タスク109を実行することにより実現する。
図24は、この実施の形態におけるゲストOS優先度情報記憶部394が記憶したゲストOS優先度情報151のデータ構造の一例を示す図である。
ゲストOS優先度情報151は、例えば、優先実行期間の優先度501、優先実行期間の時間502、非優先実行期間の時間503を示すデータである。
優先実行期間の優先度501は、ゲストOS200を高い優先度で実行する場合の優先度を示す。
優先実行期間の時間502は、ゲストOS200を高い優先度で実行する期間の時間を示す。
非優先実行期間の時間503は、ゲストOS200を最低の優先度で実行する期間の時間を示す。
図25は、この実施の形態におけるタスクの優先順位の一例を示す概念図である。
優先度書換部351がゲストOS200の優先度を書き換えることにより、ホストタスク110間の優先順位は、左側の状態と右側の状態との間を行き来する。
ゲストOS200を高い優先度で実行する期間(優先実行期間)は、左側の状態となる。
この状態では、ゲストOS200が休眠状態とならない限り、ゲストOS200よりも優先順位の低い通常処理タスク123〜125を、タスク選択部332が選択することはなく、通常処理タスク123〜125が実行されることはない。
また、ゲストOS200よりも優先順位の低い割込処理タスク113,115を実行させる割込は、割込マスクによりマスクされるので、ゲストOS200が休眠状態とならない限り、割込処理タスク113,115を実行させる割込は発生せず、割込処理タスク113,115が実行されることもない。
ゲストOS200が多数のゲストタスク210を管理している場合、そのゲストタスク210がすべて実行不可能な状態となることは稀であり、したがって、ゲストOS200が休眠状態になることも稀である。
いくら優先順位が低いタスクであっても、ある程度は定期的に実行する機会が与えられなければ、処理に支障を来たす可能性がある。
そこで、この実施の形態では、ゲストOS200の優先順位を強制的に下げることにより、優先順位の低いタスクにも実行の機会を与えるものとする。
優先度書換部351が時計装置906を用いて優先実行期間を開始してからの経過時間を測定する。優先度書換部351は、優先実行期間の時間502が経過した場合に、優先度記憶部391が記憶したゲストOS200の優先度を、最低の優先度に書き換える。
ゲストOS200を低い優先度で実行する期間(非優先実行期間)は、右側の状態となる。
この状態では、他のホストタスク110がすべて実行不可能な状態とならない限り、ゲストOS200が実行されることはない。
その代わり、通常処理タスク123〜125や割込処理タスク113,115のような優先順位が低いタスクにも、実行の機会が与えられる。
なお、優先度制御タスク109は、実行装置901がゲストOS200を実行している際であっても実行する必要があるので、ゲストOS200よりも高い優先順位を有する。
図26は、この実施の形態における優先度書換部351のゲストOS優先度制御処理の流れの一例を示すフローチャート図である。
T61において、優先度書換部351が、ゲストOS優先度情報記憶部394が記憶したゲストOS優先度情報500から、優先実行期間の優先度501を取得する。
T62において、優先度記憶部391が、T61で優先度書換部351が取得した優先実行期間の優先度501を、ゲストOSの優先度として記憶する(優先実行期間の開始)。
T63において、優先度書換部351が、ゲストOS優先度情報記憶部394が記憶したゲストOS優先度情報500から、優先実行期間の時間502を取得する。
T64において、優先度書換部351が、T63で取得した優先実行期間の時間502を、時計装置906に設定する。
ここで、時計装置906は、設定した時間が経過すると、割込信号入力装置905にそのことを通知し、割込信号を発生させるものとする。
T65において、優先度書換部351は、時計装置906からの割込があるまで、優先度制御タスク109を休眠状態とする。
その後、時計装置906に設定した優先実行期間の時間502が経過すると、時計装置906からの割込により、優先度制御タスク109が起床し、T66以下の処理が再開される。
T66において、優先度記憶部391が、最低の優先度を、ゲストOS200の優先度として記憶する(優先実行期間の終了、非優先実行期間の開始)。
T67において、優先度書換部351が、ゲストOS優先度情報記憶部394が記憶したゲストOS優先度情報500から、非優先実行期間の時間503を取得する。
T68において、優先度書換部351が、T67で取得した非優先実行期間の時間503を、時計装置906に設定する。
T69において、優先度書換部351は、時計装置906からの割込があるまで、優先度制御タスク109を休眠状態とする。
その後、時計装置906に設定した非優先実行期間の時間503が経過すると、時計装置906からの割込により、優先度制御タスク109が起床し、処理が再開されてT61に戻る。
これにより、ゲストOS200は、高い優先順位で実行される期間と、低い優先順位で実行される期間とを交互に繰り返すこととなる。
なお、この例では、非優先実行期間におけるゲストOS200の優先順位を、最低の優先順位としているが、必ずしも最低の優先順位でなくてもよい。
しかし、非優先実行期間におけるゲストOS200の優先順位を最低の優先順位とすれば、ゲストOS200が休眠状態とならなくても、他のすべてのホストタスク110に実行の機会を与えることができる。
既存のOSは、他のOSのタスクとして動作することを想定していないので、管理するタスクがすべて休眠状態となっても、OS自体は休眠状態とならない(S86に相当する処理がない)。
したがって、非優先実行期間におけるゲストOS200の優先順位を最低の優先順位とすることとすれば、既存のOSをゲストOS200として利用する場合、休眠処理(S86)を加える修正をしなくてもよいので、開発コストを抑えることができる。
また、この例では、ゲストOS200の優先度が2種類あり、2つの優先度の期間を繰り返す構成としているが、優先度の数は2種類に限らず、もっと多くてもよい。
また、この例では、ゲストOS200が実行されたか否かにかかわらず、所定の時間が経過した場合に、優先度を書き換えることとしているが、ゲストOS200が実行された時間だけを測定して、所定の時間実行した場合に、優先度を書き換えることとしてもよい。
また、ホストタスク110が、ゲストOS優先度情報記憶部394が記憶したゲストOS優先度情報500を書き換えることにより、例えば、ゲストタスク210が処理すべき処理量と、ゲストOS200以外のホストタスク110が処理すべき処理量とによって、ゲストOS200の優先実行期間の時間や、優先度を変化させることができる。これにより、処理の負荷に応じたOSの切替が可能となる。
この実施の形態における並列処理装置によれば、優先度書換部351がゲストOS200の優先度を定期的に変化させるので、優先実行期間においてゲストOS200よりも低い優先順位をもつホストタスク110にも、定期的に実行の機会が与えられるという効果を奏する。
この実施の形態における並列処理装置によれば、非優先実行期間におけるゲストOS200の優先順位を最低順位とするので、既存のOSをゲストOS200として利用する場合に必要な修正が少なく、開発コストを抑えることができるという効果を奏する。
以上説明した並列処理装置が用いるタスクの起動方法は、
ホストOSの1つのタスクとしてゲストOSが動作するマルチOSの構成において、タスクの優先度と割込処理の優先度をもとに、タスク起動時にタスク優先度と割込マスクの設定値に関して、割込処理がより高い優先度のタスクの処理を阻害しないよう定めたことを特徴とする。
以上説明した並列処理装置によるマルチOSシステムにおける割込マスク設定処理は、
ゲストOSで処理する割込をマスクするとき、ゲストOSで扱う最も高い優先度の割込レベルで割込マスクをすることにより、ゲストOSの割込マスクがゲストOSよりも高い優先度の割込処理を阻害しないようにしたことを特徴とする。
以上説明した並列処理装置によるマルチOSシステムは、
ゲストOSにおいて実行すべき処理が存在しない場合、ホストOSのスリープ(sleep)を呼び出して、CPUを手放すことを特徴とする。
以上説明した並列処理装置によるマルチOSシステムは、
ゲストOSがスリープ状態で、ゲストOSで処理したい割込が発生した時、ホストOS側でゲストOSをウェイクアップ(wakeup)させることを特徴とする。
以上説明した並列処理装置によるマルチOSシステムは、
ゲストOS上でスリープしているタスクをホストOSからウェイクアップするとき、ホストOS側からゲストOS側で処理する割込を発生させ、ゲストOS側が割込処理の中でゲストOS上のタスクをウェイクアップさせることを特徴とする。
以上説明した並列処理装置によるマルチOSシステムは、
ホストOSの1つのタスクとしてゲストOSが動作するマルチOSの構成において、ゲストOSの優先度を時間の経過とともに上下させることを特徴とする。
実施の形態1における並列処理装置900のハードウェア構成の一例を示すハードウェア構成図。 実施の形態1における並列処理装置900において実行されるプログラム(タスク)の関係の一例を示す概念図。 実施の形態1における並列処理装置900の機能ブロックの構成の一例を示すブロック構成図。 実施の形態1におけるタスクの優先順位の一例を示す概念図。 実施の形態1におけるホストタスク110の優先順位と、割込の優先順位との関係の一例を示す概念図。 実施の形態1において、マスクテーブル生成部333が生成し、マスクテーブル記憶部334が記憶するマスクテーブル108の内容の一例を示す図。 実施の形態1における割込ベクタ記憶部311が記憶する割込ベクタの一例を示す図。 実施の形態1において、ホストタスク110起動時におけるスケジュール部330のタスク起動処理の流れの一例を示すフローチャート図。 実施の形態1におけるスケジュール部330のスケジュール処理の流れの一例を示すフローチャート図。 実施の形態1におけるディスパッチ部320のタスク切替処理の流れの一例を示すフローチャート図。 実施の形態1において、割込信号入力時における割込処理部310の割込処理の流れの一例を示すフローチャート図。 実施の形態1において、割込信号入力時に実行される割込処理プログラム661〜664の割込処理の流れの一例を示すフローチャート図。 実施の形態1において、割込信号入力時に実行される切替プログラム669のOS切替処理の流れの一例を示すフローチャート図。 実施の形態1において、割込信号入力時における切替プログラム679のOS切替処理の流れの一例を示すフローチャート図。 実施の形態1におけるOS切替用タスク107のOS切替処理の流れの一例を示すフローチャート図。 実施の形態1におけるゲストOS200のスケジュール処理の流れの一例を示すフローチャート図。 実施の形態2における並列処理装置900の機能ブロックの構成の一例を示すブロック構成図。 実施の形態2におけるOS間同期用データ記憶部393が記憶したOS間同期用データ400のデータ構造の一例を示す図。 実施の形態2におけるゲストOS200のスケジュール処理の流れの一例を示すフローチャート図。 実施の形態2におけるスケジュール部330のスケジュール処理の流れの一例を示すフローチャート図。 実施の形態2において、T18で入力した割込信号による割込を処理する割込処理プログラムのOS間通信割込処理の流れの一例を示すフローチャート図。 実施の形態3における並列処理装置900において実行されるプログラム(タスク)の関係の一例を示す概念図。 実施の形態3における並列処理装置900の機能ブロックの構成の一例を示すブロック構成図。 実施の形態3におけるゲストOS優先度情報記憶部394が記憶したゲストOS優先度情報151のデータ構造の一例を示す図。 実施の形態3におけるタスクの優先順位の一例を示す概念図。 実施の形態3における優先度書換部351のゲストOS優先度制御処理の流れの一例を示すフローチャート図。
符号の説明
100 ホストOS、101,201 スケジューラ、102,202 割込ベクタ、103,203 割込処理、104,204 マスク設定処理、105,205 OS間同期処理、106 ホストOS上のタスク、107 OS切替用タスク、108 マスクテーブル、109 優先度制御タスク、110 ホストタスク、111〜115,211〜212 割込処理タスク、121〜125,221〜223 通常処理タスク、151 ゲストOS優先度情報、200 ゲストOS、206 ゲストOS上のタスク、210 ゲストタスク、310 割込処理部、311 割込ベクタ記憶部、312 割込マスク記憶部、313 割込処理実行部、320 ディスパッチ部、321 コンテキスト書換部、323 割込ベクタ書換部、324 マスク設定部、330 スケジュール部、331 実行可能判断部、332 タスク選択部、333 マスクテーブル生成部、334 マスクテーブル記憶部、341 タスク間メッセージ処理部、351 優先度書換部、391 優先度記憶部、392 コンテキスト記憶部、393 OS間同期用データ記憶部、394 ゲストOS優先度情報記憶部、400 OS間同期用データ、401 ゲストOS上の同期用データ、402 フラグ、501 優先実行期間の優先度、502 優先実行期間の時間、503 非優先実行期間の時間、611 タスク優先度、612 割込マスクレベル、621〜632 割込、641〜659 割込ベクタ、661〜664,671〜672 割込処理プログラム、669,679 切替プログラム、900 並列処理装置、901 実行装置、902 記憶装置、903 入力装置、904 出力装置、905 割込信号入力装置、906 時計装置。

Claims (17)

  1. 複数のプログラムをゲストタスクとして管理し、上記ゲストタスクを切り替えて実行することにより、上記複数のプログラムを並列して処理するゲスト並列処理装置としてコンピュータを機能させるゲスト並列処理プログラムと、他のプログラムとを、ホストタスクとして管理し、上記ホストタスクを切り替えて実行することにより、上記複数のプログラム及び上記他のプログラムを並列して処理する並列処理装置において、
    プログラムを実行する実行装置と、
    情報を記憶する記憶装置と、
    上記実行装置が実行しているプログラムの実行を中断し、割込を処理する割込処理プログラムを実行することを上記実行装置に対して要求する割込信号を、上記実行装置に対して出力する割込信号入力装置と、
    上記割込信号入力装置が力する割込信号による要求に基づいて、上記実行装置が実行するプログラムを示す情報を割込ベクタとして、上記記憶装置を用いて記憶する割込ベクタ記憶部と、
    上記ホストタスクのなかから、上記実行装置が実行するホストタスクを選択するタスク選択部と、
    上記タスク選択部が選択したホストタスクが上記他のプログラムである場合と、上記タスク選択部が選択したホストタスクが上記ゲスト並列処理プログラムである場合とで、異なる割込ベクタを上記割込ベクタ記憶部に記憶させる割込ベクタ書換部とを有し上記割込ベクタ書換部は、上記タスク選択部が選択したホストタスクが上記他のプログラムである場合に、上記割込ベクタ記憶部に、上記ゲストタスクの一つである割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込ベクタとして、上記ゲスト並列処理プログラムを実行可能な状態とする切替プログラムを示す割込ベクタ記憶させ、上記ホストタスクの一つである割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込ベクタとして、上記割込信号が上記実行装置に対して実行することを要求する上記ホストタスクの一つである割込処理プログラムを示す割込ベクタを記憶させることを特徴とする並列処理装置。
  2. 複数のプログラムをゲストタスクとして管理し、上記ゲストタスクを切り替えて実行することにより、上記複数のプログラムを並列して処理するゲスト並列処理装置としてコンピュータを機能させるゲスト並列処理プログラムと、他のプログラムとを、ホストタスクとして管理し、上記ホストタスクを切り替えて実行することにより、上記複数のプログラム及び上記他のプログラムを並列して処理する並列処理装置において、
    プログラムを実行する実行装置と、
    情報を記憶する記憶装置と、
    上記実行装置が実行しているプログラムの実行を中断し、割込を処理する割込処理プログラムを実行することを上記実行装置に対して要求する割込信号を、上記実行装置に対して出力する割込信号入力装置と、
    上記割込信号入力装置が力する割込信号による要求に基づいて、上記実行装置が実行するプログラムを示す情報を割込ベクタとして、上記記憶装置を用いて記憶する割込ベクタ記憶部と、
    上記ホストタスクのなかから、上記実行装置が実行するホストタスクを選択するタスク選択部と、
    上記タスク選択部が選択したホストタスクが上記他のプログラムである場合と、上記タスク選択部が選択したホストタスクが上記ゲスト並列処理プログラムである場合とで、異なる割込ベクタを上記割込ベクタ記憶部に記憶させる割込ベクタ書換部とを有し
    上記割込ベクタ書換部は、上記タスク選択部が選択したホストタスクが上記ゲスト並列処理プログラムである場合に、上記割込ベクタ記憶部に、上記ゲストタスクの一つである割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込ベクタとして、上記割込信号が上記実行装置に対して実行することを要求する上記ゲストタスクの一つである割込処理プログラムを示す割込ベクタ記憶させ、記ホストタスクの一つである割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込ベクタとして、上記ゲスト並列処理プログラムよりも優先順位が高い他のプログラムを実行可能な状態とする切替プログラムを示す割込ベクタを記憶させることを特徴とする並列処理装置。
  3. 複数のプログラムをゲストタスクとして管理し、上記ゲストタスクを切り替えて実行することにより、上記複数のプログラムを並列して処理するゲスト並列処理装置としてコンピュータを機能させるゲスト並列処理プログラムと、他のプログラムとを、ホストタスクとして管理し、上記ホストタスクを切り替えて実行することにより、上記複数のプログラム及び上記他のプログラムを並列して処理する並列処理装置において、
    プログラムを実行する実行装置と、
    情報を記憶する記憶装置と、
    上記実行装置が実行しているプログラムの実行を中断し、割込を処理する割込処理プログラムを実行することを上記実行装置に対して要求する割込信号を、上記実行装置に対して出力する割込信号入力装置と、
    上記割込信号入力装置が力する割込信号による要求に基づいて、上記実行装置が実行するプログラムを示す情報を割込ベクタとして、上記記憶装置を用いて記憶する割込ベクタ記憶部と、
    上記ホストタスクのなかから、上記実行装置が実行するホストタスクを選択するタスク選択部と、
    上記ゲストタスクの一つであるゲスト割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込ベクタとして、上記タスク選択部が選択したホストタスクが上記他のプログラムである場合は上記ゲスト並列処理プログラムを実行可能な状態する切替プログラムを示す割込ベクタを上記割込ベクタ記憶部に記憶させ、上記タスク選択部が選択したホストタスクが上記ゲスト並列処理プログラムである場合は上記割込信号が上記実行装置に対して実行することを要求すゲスト割込処理プログラムを示す割込ベクタを上記割込ベクタ記憶部に記憶させる割込ベクタ書換部を有することを特徴とする並列処理装置。
  4. 複数のプログラムをゲストタスクとして管理し、上記ゲストタスクを切り替えて実行することにより、上記複数のプログラムを並列して処理するゲスト並列処理装置としてコンピュータを機能させるゲスト並列処理プログラムと、他のプログラムとを、ホストタスクとして管理し、上記ホストタスクを切り替えて実行することにより、上記複数のプログラム及び上記他のプログラムを並列して処理する並列処理装置において、
    プログラムを実行する実行装置と、
    情報を記憶する記憶装置と、
    上記実行装置が実行しているプログラムの実行を中断し、割込を処理する割込処理プログラムを実行することを上記実行装置に対して要求する割込信号を、上記実行装置に対して出力する割込信号入力装置と、
    上記割込信号入力装置が力する割込信号による要求に基づいて、上記実行装置が実行するプログラムを示す情報を割込ベクタとして、上記記憶装置を用いて記憶する割込ベクタ記憶部と、
    上記ホストタスクのなかから、上記実行装置が実行するホストタスクを選択するタスク選択部と、
    上記ホストタスクの一つであるホスト割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込ベクタとして、上記タスク選択部が選択したホストタスクが上記他のプログラムである場合は上記割込信号が上記実行装置に対して実行することを要求するホスト割込処理プログラムを示す割込ベクタを上記割込ベクタ記憶部に記憶させ、上記タスク選択部が選択したホストタスクが上記ゲスト並列処理プログラムである場合は上記ゲスト並列処理プログラムよりも優先順位が高い他のプログラムを実行可能状態とす切替プログラムを示す割込ベクタを上記割込ベクタ記憶部に記憶させる割込ベクタ書換部を有することを特徴とする並列処理装置。
  5. 複数のプログラムをゲストタスクとして管理し、上記ゲストタスクを切り替えて実行することにより、上記複数のプログラムを並列して処理するゲスト並列処理装置としてコンピュータを機能させるゲスト並列処理プログラムと、他のプログラムとを、ホストタスクとして管理し、上記ホストタスクを切り替えて実行することにより、上記複数のプログラム及び上記他のプログラムを並列して処理する並列処理装置において、
    プログラムを実行する実行装置と、
    情報を記憶する記憶装置と、
    上記実行装置が実行しているプログラムの実行を中断し、割込を処理する割込処理プログラムを実行することを上記実行装置に対して要求する割込信号を、上記実行装置に対して出力する割込信号入力装置と、
    上記割込信号入力装置が力する割込信号による要求に基づいて、上記実行装置が実行するプログラムを示す情報を割込ベクタとして、上記記憶装置を用いて記憶する割込ベクタ記憶部と、
    上記ホストタスクのなかから、上記実行装置が実行するホストタスクを選択するタスク選択部と、
    上記ゲストタスクの一つであるゲスト割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込ベクタとして、上記タスク選択部が選択したホストタスクが上記他のプログラムである場合は上記ゲスト並列処理プログラムを実行可能な状態する切替プログラムを示す割込ベクタを上記割込ベクタ記憶部に記憶させ、上記タスク選択部が選択したホストタスクが上記ゲスト並列処理プログラムである場合は上記割込信号が上記実行装置に対して実行することを要求するゲスト割込処理プログラムを示す割込ベクタを上記割込ベクタ記憶部に記憶させ、上記ホストタスクの一つであるホスト割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込ベクタして、上記タスク選択部が選択したホストタスクが上記他のプログラムある場合は上記割込信号が上記実行装置に対して実行することを要求するホスト割込処理プログラムを示す割込ベクタを上記割込ベクタ記憶部に記憶させ上記タスク選択部が選択したホストタスクが上記ゲスト並列処理プログラムである場合は上記ゲスト並列処理プログラムよりも優先順位が高い他のプログラムを実行可能状態とす切替プログラムを示す割込ベクタを上記割込ベクタ記憶部に記憶させる割込ベクタ書換部を有することを特徴とする並列処理装置。
  6. 上記割込信号入力装置は、更に、
    上記実行装置が上記切替プログラムを実行した場合に、上記割込信号を上記実行装置に対して出力する
    ことを特徴とする請求項1乃至請求項5のいずれかに記載の並列処理装置。
  7. 上記割込信号入力装置は、
    上記実行装置に対して上記割込信号を出力した後、上記実行装置が上記割込処理プログラムを実行するまでの間、上記割込信号を上記実行装置に対して出力する
    ことを特徴とする請求項1乃至請求項6のいずれかに記載の並列処理装置。
  8. 上記割込信号入力装置は、上記実行装置に対して上記割込信号を力した後、割込信号の出力を停止させる割込停止命令を上記実行装置が実行するまでの間、上記割込信号を上記実行装置に対して出力し、
    上記割込処理プログラムは、上記割込停止命令を含み、
    上記切替プログラムは、上記割込停止命令を含まないことを特徴とする請求項1乃至請求項7のいずれかに記載の並列処理装置。
  9. プログラムを実行する実行装置と、情報を記憶する記憶装置と、上記実行装置が実行しているプログラムの実行を中断し、割込を処理する割込処理プログラムを実行することを上記実行装置に対して要求する割込信号を、上記実行装置に対して出力する割込信号入力装置と、上記割込信号入力装置が入力する割込信号による要求に基づいて、上記実行装置が実行するプログラムを示す情報を割込ベクタとして、上記記憶装置を用いて記憶する割込ベクタ記憶部を有する並列処理装置が、
    複数のプログラムをゲストタスクとして管理し、上記ゲストタスクを切り替えて実行することにより、上記複数のプログラムを並列して処理するゲスト並列処理装置としてコンピュータを機能させるゲスト並列処理プログラムと、他のプログラムとを、ホストタスクとして管理し、上記ホストタスクを切り替えて実行することにより、上記複数のプログラム及び上記他のプログラムを並列して処理する並列処理方法において、
    タスク選択部が、上記ホストタスクのなかから、上記実行装置が実行するホストタスクを選択するタスク選択工程と、
    割込ベクタ書換部が、上記タスク選択工程において上記タスク選択部が選択したホストタスクが上記他のプログラムである場合と、上記タスク選択部が選択したホストタスクが上記ゲスト並列処理プログラムである場合とで、異なる割込ベクタを上記割込ベクタ記憶部に記憶させる割込ベクタ書換工程とを有し
    上記タスク選択部が選択したホストタスクが上記他のプログラムである場合、上記割込ベクタ書換工程において、上記割込ベクタ書換部が、上記割込ベクタ記憶部に、上記ゲストタスクの一つである割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込ベクタとして、上記ゲスト並列処理プログラムを実行可能な状態とする切替プログラムを示す割込ベクタ記憶させ、上記ホストタスクの一つである割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込ベクタとして、上記割込信号が上記実行装置に対して実行することを要求する上記ホストタスクの一つである割込処理プログラムを示す割込ベクタを記憶させることを特徴とする並列処理方法。
  10. プログラムを実行する実行装置と、情報を記憶する記憶装置と、上記実行装置が実行しているプログラムの実行を中断し、割込を処理する割込処理プログラムを実行することを上記実行装置に対して要求する割込信号を、上記実行装置に対して出力する割込信号入力装置と、上記割込信号入力装置が入力する割込信号による要求に基づいて、上記実行装置が実行するプログラムを示す情報を割込ベクタとして、上記記憶装置を用いて記憶する割込ベクタ記憶部を有する並列処理装置が、
    複数のプログラムをゲストタスクとして管理し、上記ゲストタスクを切り替えて実行することにより、上記複数のプログラムを並列して処理するゲスト並列処理装置としてコンピュータを機能させるゲスト並列処理プログラムと、他のプログラムとを、ホストタスクとして管理し、上記ホストタスクを切り替えて実行することにより、上記複数のプログラム及び上記他のプログラムを並列して処理する並列処理方法において、
    タスク選択部が、上記ホストタスクのなかから、上記実行装置が実行するホストタスクを選択するタスク選択工程と、
    割込ベクタ書換部が、上記タスク選択工程において上記タスク選択部が選択したホストタスクが上記他のプログラムである場合と、上記タスク選択部が選択したホストタスクが上記ゲスト並列処理プログラムである場合とで、異なる割込ベクタを上記割込ベクタ記憶部に記憶させる割込ベクタ書換工程とを有し
    上記タスク選択部が選択したホストタスクが上記ゲスト並列処理プログラムである場合に、上記割込ベクタ書換工程において、上記割込ベクタ書換部が、上記割込ベクタ記憶部に、上記ゲストタスクの一つである割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込ベクタとして、上記割込信号が上記実行装置に対して実行することを要求する上記ゲストタスクの一つである割込処理プログラムを示す割込ベクタ記憶させ、上記ホストタスクの一つである割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込ベクタとして、上記ゲスト並列処理プログラムよりも優先順位が高い他のプログラムを実行可能な状態とする切替プログラムを示す割込ベクタを記憶させることを特徴とする並列処理方法。
  11. プログラムを実行する実行装置と、情報を記憶する記憶装置と、上記実行装置が実行しているプログラムの実行を中断し、割込を処理する割込処理プログラムを実行することを上記実行装置に対して要求する割込信号を、上記実行装置に対して出力する割込信号入力装置と、上記割込信号入力装置が力する割込信号による要求に基づいて、上記実行装置が実行するプログラムを示す情報を割込ベクタとして、上記記憶装置を用いて記憶する割込ベクタ記憶部とを有する並列処理装置が、
    複数のプログラムをゲストタスクとして管理し、上記ゲストタスクを切り替えて実行することにより、上記複数のプログラムを並列して処理するゲスト並列処理装置としてコンピュータを機能させるゲスト並列処理プログラムと、他のプログラムとを、ホストタスクとして管理し、上記ホストタスクを切り替えて実行することにより、上記複数のプログラム及び上記他のプログラムを並列して処理する並列処理方法において、
    タスク選択部が、上記ホストタスクのなかから、上記実行装置が実行するホストタスクを選択するタスク選択工程と
    上記ゲストタスクの一つであるゲスト割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込ベクタとして、上記タスク選択工程において上記タスク選択部が選択したホストタスクが上記他のプログラムである場合は、割込ベクタ書換部が、上記ゲスト並列処理プログラムを実行可能な状態する切替プログラムを示す割込ベクタを上記割込ベクタ記憶部に記憶させ、上記タスク選択部が選択したホストタスクが上記ゲスト並列処理プログラムである場合は、上記割込ベクタ書換部が上記割込信号が上記実行装置に対して実行することを要求すゲスト割込処理プログラムを示す割込ベクタを上記割込ベクタ記憶部に記憶させる割込ベクタ書換工程を有することを特徴とする並列処理方法。
  12. プログラムを実行する実行装置と、情報を記憶する記憶装置と、上記実行装置が実行しているプログラムの実行を中断し、割込を処理する割込処理プログラムを実行することを上記実行装置に対して要求する割込信号を、上記実行装置に対して出力する割込信号入力装置と、上記割込信号入力装置が力する割込信号による要求に基づいて、上記実行装置が実行するプログラムを示す情報を割込ベクタとして、上記記憶装置を用いて記憶する割込ベクタ記憶部とを有する並列処理装置が、
    複数のプログラムをゲストタスクとして管理し、上記ゲストタスクを切り替えて実行することにより、上記複数のプログラムを並列して処理するゲスト並列処理装置としてコンピュータを機能させるゲスト並列処理プログラムと、他のプログラムとを、ホストタスクとして管理し、上記ホストタスクを切り替えて実行することにより、上記複数のプログラム及び上記他のプログラムを並列して処理する並列処理方法において、
    タスク選択部が、上記ホストタスクのなかから、上記実行装置が実行するホストタスクを選択するタスク選択工程と
    上記ホストタスクの一つであるホスト割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込ベクタとして、上記タスク選択工程において上記タスク選択部が選択したホストタスクが上記他のプログラムである場合は、割込ベクタ書換部が、上記割込信号が上記実行装置に対して実行するこを要求するホスト割込処理プログラムを示す割込ベクタを上記割込ベクタ記憶部に記憶させ、上記タスク選択部が選択したホストタスクが上記ゲスト並列処理プログラムである場合は、上記割込ベクタ書換部が上記ゲスト並列処理プログラムよりも優先順位が高い他のプログラムを実行可能状態とす切替プログラムを示す割込ベクタを上記割込ベクタ記憶部に記憶させる割込ベクタ書換工程ことを特徴とする並列処理方法。
  13. プログラムを実行する実行装置と、情報を記憶する記憶装置と、上記実行装置が実行しているプログラムの実行を中断し、割込を処理する割込処理プログラムを実行することを上記実行装置に対して要求する割込信号を、上記実行装置に対して出力する割込信号入力装置と、上記割込信号入力装置が力する割込信号による要求に基づいて、上記実行装置が実行するプログラムを示す情報を割込ベクタとして、上記記憶装置を用いて記憶する割込ベクタ記憶部とを有する並列処理装置が、
    複数のプログラムをゲストタスクとして管理し、上記ゲストタスクを切り替えて実行することにより、上記複数のプログラムを並列して処理するゲスト並列処理装置としてコンピュータを機能させるゲスト並列処理プログラムと、他のプログラムとを、ホストタスクとして管理し、上記ホストタスクを切り替えて実行することにより、上記複数のプログラム及び上記他のプログラムを並列して処理する並列処理方法において、
    タスク選択部が、上記ホストタスクのなかから、上記実行装置が実行するホストタスクを選択するタスク選択工程と
    上記ゲストタスクの一つであるゲスト割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込ベクタとして、上記タスク選択工程において上記タスク選択部が選択したホストタスクが上記他のプログラムである場合は、割込ベクタ書換部が、上記ゲスト並列処理プログラムを実行可能な状態する切替プログラムを示す割込ベクタを上記割込ベクタ記憶部に記憶させ、上記タスク選択部が選択したホストタスクが上記ゲスト並列処理プログラムである場合は、上記割込ベクタ書換部が、上記割込信号が上記実行装置に対して実行することを要求するゲスト割込処理プログラムを示す割込ベクタを上記割込ベクタ記憶部に記憶させ、上記ホストタスクの一つであるホスト割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込ベクタして、上記タスク選択工程において上記タスク選択部が選択したホストタスクが上記他のプログラムある場合は、上記割込ベクタ書換部が、上記割込信号が上記実行装置に対して実行することを要求するホスト割込処理プログラムを示す割込ベクタを上記割込ベクタ記憶部に記憶させ、上記タスク選択部が選択したホストタスクが上記ゲスト並列処理プログラムである場合は上記割込ベクタ書換部が上記ゲスト並列処理プログラムよりも優先順位が高い他のプログラムを実行可能状態とす切替プログラムを示す割込ベクタを上記割込ベクタ記憶部に記憶させる割込ベクタ書換工程を有することを特徴とする並列処理方法。
  14. 上記割込信号入力装置は、更に、上記実行装置が上記切替プログラムを実行した場合に、上記割込信号を上記実行装置に対して出力することを特徴とする請求項9乃至請求項13のいずれかに記載の並列処理方法。
  15. 上記割込信号入力装置は、上記実行装置に対して上記割込信号を出力した後、上記実行装置が上記割込処理プログラムを実行するまでの間、上記割込信号を上記実行装置に対して出力することを特徴とする請求項9乃至請求項14のいずれかに記載の並列処理装置。
  16. 上記割込信号入力装置は、上記実行装置に対して上記割込信号を出力した後、割込信号の出力を停止させる割込停止命令を上記実行装置が実行するまでの間、上記割込信号を上記実行装置に対して出力し、
    上記割込処理プログラムは、上記割込停止命令を含み、
    上記切替プログラムは、上記割込停止命令を含まないことを特徴とする請求項9乃至請求項15のいずれかに記載の並列処理方法。
  17. コンピュータを、請求項1乃至請求項8のいずれかに記載の並列処理装置として機能させることを特徴とする並列処理プログラム。
JP2005359069A 2005-12-13 2005-12-13 並列処理装置及び並列処理方法及び並列処理プログラム Expired - Fee Related JP4523910B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005359069A JP4523910B2 (ja) 2005-12-13 2005-12-13 並列処理装置及び並列処理方法及び並列処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005359069A JP4523910B2 (ja) 2005-12-13 2005-12-13 並列処理装置及び並列処理方法及び並列処理プログラム

Publications (2)

Publication Number Publication Date
JP2007164421A JP2007164421A (ja) 2007-06-28
JP4523910B2 true JP4523910B2 (ja) 2010-08-11

Family

ID=38247252

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005359069A Expired - Fee Related JP4523910B2 (ja) 2005-12-13 2005-12-13 並列処理装置及び並列処理方法及び並列処理プログラム

Country Status (1)

Country Link
JP (1) JP4523910B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5046753B2 (ja) 2006-06-26 2012-10-10 信越化学工業株式会社 光ファイバ母材の製造方法及びその装置
JP5082939B2 (ja) * 2007-10-24 2012-11-28 富士通モバイルコミュニケーションズ株式会社 情報処理装置
WO2009133669A1 (ja) * 2008-04-28 2009-11-05 パナソニック株式会社 仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラム
US8468284B2 (en) * 2010-06-23 2013-06-18 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification to a guest operating system
CN103180829B (zh) 2010-10-22 2016-08-03 三菱电机株式会社 中断信号接收装置及计算机装置
US9338320B2 (en) 2012-08-10 2016-05-10 Konica Minolta, Inc. Image forming apparatus and method of controlling the same
JP5725303B2 (ja) * 2012-08-10 2015-05-27 コニカミノルタ株式会社 画像形成装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05108380A (ja) * 1991-10-21 1993-04-30 Mitsubishi Electric Corp データ処理システム
JPH06236286A (ja) * 1993-02-09 1994-08-23 Seiko Epson Corp 情報処理装置
JP3863117B2 (ja) * 2003-02-27 2006-12-27 株式会社エヌ・ティ・ティ・データ マルチオペレーティングシステム制御方法、およびその方法をコンピュータに実行させるプログラム、ならびにマルチオペレーティングシステム制御装置
JP2004318538A (ja) * 2003-04-17 2004-11-11 Fujitsu Ltd 性能モニタリング方式
JP3953449B2 (ja) * 2003-08-26 2007-08-08 富士通株式会社 タスク管理プログラムおよびタスク制御装置
JP4112511B2 (ja) * 2004-02-17 2008-07-02 富士通株式会社 タスク管理プログラムおよびタスク管理装置

Also Published As

Publication number Publication date
JP2007164421A (ja) 2007-06-28

Similar Documents

Publication Publication Date Title
JP4580845B2 (ja) タスク実行装置
JP5323828B2 (ja) 仮想計算機制御装置、仮想計算機制御プログラム及び仮想計算機制御回路
US7853743B2 (en) Processor and interrupt controlling method
TWI307477B (ja)
KR100934533B1 (ko) 연산 처리 시스템, 컴퓨터 시스템 상에서의 태스크 제어 방법, 및 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
JP3507822B2 (ja) コンピュータ装置およびその省電力制御方法
JP4345630B2 (ja) 情報処理装置、割り込み処理制御方法、並びにコンピュータ・プログラム
US20060010446A1 (en) Method and system for concurrent execution of multiple kernels
CN100380329C (zh) 处理器及信息处理方法
CN101689127A (zh) 虚拟计算机控制装置、虚拟计算机控制方法及虚拟计算机控制程序
US7043729B2 (en) Reducing interrupt latency while polling
JP2005056067A (ja) Dma転送制御装置
JP2002099433A (ja) 演算処理システム及び演算処理制御方法、タスク管理システム及びタスク管理方法、並びに記憶媒体
US7472214B2 (en) Real-time embedded simple monitor method and computer product
US10229077B2 (en) Method for data transfer between real-time tasks using a DMA memory controller
CN102057357A (zh) 多处理器系统
JP4523910B2 (ja) 並列処理装置及び並列処理方法及び並列処理プログラム
CN100576175C (zh) 用于多个内核的并行执行的方法和系统
JP2006243864A (ja) プロセッサおよび情報処理方法
JPWO2018211865A1 (ja) 車両制御装置
JP2012003510A (ja) 計算機及び転送プログラム
KR101119458B1 (ko) 비동기 통신 기술
JP2006004092A (ja) コンピュータシステム
JP2008225710A (ja) コンピュータシステム及び該システムで用いられるプロセス切替え方法
JP2006163983A (ja) リアルタイムosシミュレーション方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080528

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100104

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100303

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100330

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100506

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100525

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100528

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130604

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees