JP2007164421A - Parallel processors, parallel processing method and parallel processing program - Google Patents

Parallel processors, parallel processing method and parallel processing program Download PDF

Info

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

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To process interruptions to be processed by respective OSes without discrepancy in a multi-OS system wherein a guest OS is operated as one of the tasks of a host OS, and to prevent the task processing of each OS from being affected by the interruption to be processed by the different OS. <P>SOLUTION: When an execution device 901 executes the guest OS 200 and when it executes a host task 110 other than that, an interruption vector rewrite part 323 rewrites the contents of an interruption vector stored by an interruption vector storage part 311. While the execution device 901 executes the OS different from the OS to process the interruption, the interruption vector indicates not an interruption processing program but switching programs 669 and 679. When the switching programs are executed by the interruption and the OS is switched, the interruption vector rewrite part 323 rewrites the interruption vector, the interruption is generated again thereafter, and the interruption processing program is executed. <P>COPYRIGHT: (C)2007,JPO&INPIT

Description

複数のプログラムを切り替えて実行することにより、並列して処理する並列処理装置に関する。特に、コンピュータを並列処理装置として機能させるプログラムを、並列処理装置が管理する複数のプログラムの一つとして実行する並列処理装置に関する。   The present invention relates to a parallel processing apparatus that performs processing in parallel by switching and executing a plurality of programs. In particular, the present invention relates to a parallel processing apparatus that executes a program that causes a computer to function as a parallel processing apparatus as one of a plurality of programs managed by the parallel processing apparatus.

従来、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)。
2. Description of the Related Art Conventionally, there is a technique for operating a plurality of multitasking OSs (hereinafter simply referred to as “OSs”) in parallel on a computer having a single CPU (Central Processing Unit).
For example, there is a multi-OS system in which two OSs coexist by operating one guest OS as a host OS, the other OS as a guest OS, and the guest OS as a task on the host OS.
In a multi-OS system, when an interrupt from hardware occurs, the interrupt cannot be processed correctly unless the OS that manages the task that should handle the interrupt is operating.
Therefore, for example, the host OS determines the OS that should process the interrupt, and if the guest OS is an interrupt that should be processed, a flag indicating that there was an interrupt is set, and then the guest When switching to the OS, the guest OS checks the flag and calls an interrupt handler of the guest OS (for example, Non-Patent Document 1).

また、ホストOS、ゲストOSという関係を設けず、複数のOSをOS切替プログラムの管理下において、OS切替プログラムが、OS切替機能、割込振分け機能、OS間通信機能などを実現することにより、複数のOSを共存させるマルチOSシステムもある(例えば、特許文献1)。
特開2001−282558号公報 米国特許5995745号
In addition, the OS switching program realizes an OS switching function, an interrupt distribution function, an inter-OS communication function, etc. under the management of the OS switching program without providing a relationship between the host OS and the guest OS. There is also a multi-OS system in which a plurality of OSs coexist (for example, Patent Document 1).
JP 2001-282558 A US Pat. No. 5,995,745

ホストOSとゲストOSとを設けるマルチOSシステムでは、各OSが個別に割込マスクを設定すると、割込処理の優先順位に矛盾が生じ、優先的に処理しなければならない割込がマスクされてしまうなどの課題がある。
また、OS切替プログラムがOSを管理するマルチOSシステムで、既存のOSを動作させようとすると、OS切替プログラムがハードウェアをエミュレートする必要があり、処理のオーバーヘッドが発生するという課題がある。
また、OS切替プログラムがハードウェアをエミュレートしない場合には、既存のOSをそのまま動作させることができず、大幅な修正が必要になるという課題がある。
In a multi-OS system provided with a host OS and a guest OS, if each OS sets an interrupt mask individually, inconsistency occurs in the priority of interrupt processing, and interrupts that must be processed preferentially are masked. There is a problem such as end.
In addition, when an OS is to be operated in a multi-OS system in which the OS switching program manages the OS, the OS switching program needs to emulate hardware, resulting in a processing overhead.
Further, when the OS switching program does not emulate hardware, the existing OS cannot be operated as it is, and there is a problem that significant correction is required.

この発明は、例えば、上記のような課題を解決するためになされたものであり、ホストOSとゲストOSとを設けるマルチOSシステムにおいて、矛盾なく割込処理を行えるようにするとともに、既存のOSをわずかに修正するだけで、利用できるようにすることを目的とする。   The present invention has been made to solve the above-described problems, for example, and in a multi-OS system provided with a host OS and a guest OS, interrupt processing can be performed without contradiction, and an existing OS The purpose is to make it possible to use it with a slight modification.

この発明にかかる並列処理装置は、
複数のプログラムをゲストタスクとして管理し、上記ゲストタスクを切り替えて実行することにより、上記複数のプログラムを並列して処理するゲスト並列処理装置としてコンピュータを機能させるゲスト並列処理プログラムと、他のプログラムとを、ホストタスクとして管理し、上記ホストタスクを切り替えて実行することにより、上記複数のプログラム及び上記他のプログラムを並列して処理する並列処理装置において、
プログラムを実行する実行装置と、
情報を記憶する記憶装置と、
上記実行装置が実行しているプログラムの実行を中断し、割込を処理する割込処理プログラムを実行することを上記実行装置に対して要求する割込信号を、上記実行装置に対して出力する割込信号入力装置と、
上記割込信号入力装置が入力する割込信号による要求に基づいて、上記実行装置が実行するプログラムを示す情報を割込ベクタとして、上記記憶装置を用いて記憶する割込ベクタ記憶部と、
上記ホストタスクのなかから、上記実行装置が実行するホストタスクを選択するタスク選択部と、
上記タスク選択部が選択したホストタスクが上記他のプログラムである場合と、上記タスク選択部が選択したホストタスクが上記ゲスト並列処理プログラムである場合とで、異なる割込ベクタを上記割込ベクタ記憶部に記憶させる割込ベクタ書換部と、
を有することを特徴とする。
The parallel processing device according to the present invention is:
A guest parallel processing program that manages a plurality of programs as guest tasks, and switches and executes the guest tasks, thereby causing the computer to function as a guest parallel processing device that processes the plurality of programs in parallel, and other programs In a parallel processing device that processes the plurality of programs and the other programs in parallel by managing the host tasks and switching and executing the host tasks,
An execution device for executing the program;
A storage device for storing information;
Interrupts the execution of the program being executed by the execution device and outputs an interrupt signal to the execution device that requests the execution device to execute an interrupt processing program for processing an interrupt. An interrupt signal input device;
Based on a request by an interrupt signal input by the interrupt signal input device, an interrupt vector storage unit that stores information indicating a program executed by the execution device as an interrupt vector using the storage device;
A task selection unit for selecting a host task to be executed by the execution device from the host tasks;
Different interrupt vectors are stored in the interrupt vector when the host task selected by the task selection unit is the other program and when the host task selected by the task selection unit is the guest parallel processing program. Interrupt vector rewriting part to be stored in the part,
It is characterized by having.

この発明によれば、例えば、ゲスト並列処理プログラム(ゲストOS)を実行中と、それ以外の場合とにおいて、異なる割込ベクタを割込ベクタ記憶部に記憶させるので、割込を処理すべきOSと異なるOSを実行中に、割込が発生した場合であっても、異なるOS下で割込処理が実行されることがなく、割込の発生による処理の混乱を回避することができるという効果を奏する。   According to the present invention, for example, different interrupt vectors are stored in the interrupt vector storage unit during execution of the guest parallel processing program (guest OS) and in other cases, so that the OS to process the interrupts Even when an interrupt is generated while an OS different from that is executed, the interrupt process is not executed under the different OS, and the confusion of the process due to the occurrence of the interrupt can be avoided. Play.

実施の形態1.
実施の形態1を、図1〜図16を用いて説明する。
図1は、この実施の形態における並列処理装置900のハードウェア構成の一例を示すハードウェア構成図である。
並列処理装置900は、実行装置901、記憶装置902、入力装置903、出力装置904、割込信号入力装置905、時計装置906を有する。
Embodiment 1 FIG.
The first embodiment will be described with reference to FIGS.
FIG. 1 is a hardware configuration diagram illustrating an example of a hardware configuration of a parallel processing device 900 according to this embodiment.
The parallel processing device 900 includes an execution device 901, a storage device 902, an input device 903, an output device 904, an interrupt signal input device 905, and a clock device 906.

実行装置901は、例えば、CPU(Central Processing Unit)などである。
実行装置901は、記憶装置902が記憶したプログラムなどを実行し、以下に説明する各機能ブロックを実現する。
なお、以下に説明する各機能ブロックは、ハードウェアやファームウェアによって実現してもよい。
The execution device 901 is, for example, a CPU (Central Processing Unit).
The execution device 901 executes a program stored in the storage device 902 and realizes each functional block described below.
Note that each functional block described below may be realized by hardware or firmware.

記憶装置902は、例えば、ROM(Read Only Memory)やRAM(Random Access Memory)などの内部記憶装置、ハードディスク装置やSD(Sequred Degital)メモリなどの外部記憶装置などである。
記憶装置902は、実行装置901が実行するプログラムのほか、入力装置903から入力した情報、実行装置901が処理した情報、出力装置904が出力する情報などを記憶する。
The storage device 902 is, for example, an internal storage device such as a ROM (Read Only Memory) or a RAM (Random Access Memory), or an external storage device such as a hard disk device or an SD (Sequential Digital) memory.
In addition to the program executed by the execution device 901, the storage device 902 stores information input from the input device 903, information processed by the execution device 901, information output by the output device 904, and the like.

入力装置903は、例えば、キーボードやマウスなどの操作入力装置、マイクなどの音声入力装置、スキャナやカメラなどの画像入力装置などである。
入力装置903は、各種情報を入力する。
また、入力装置903は、例えば、他の装置と接続するインターフェース装置であって、他の装置からの情報を入力する装置であってもよい。
The input device 903 is, for example, an operation input device such as a keyboard or a mouse, a voice input device such as a microphone, or an image input device such as a scanner or a camera.
The input device 903 inputs various information.
The input device 903 may be, for example, an interface device that is connected to another device, and may be a device that inputs information from another device.

出力装置904は、例えば、CRT(Cathode Ray Tube)装置などの画像表示装置、スピーカなどの音声出力装置、プリンタなどの画像印刷装置などである。
出力装置904は、各種情報を出力する。
また、出力装置904は、例えば、他の装置と接続するインターフェース装置であって、他の装置に対して情報を出力する装置であってもよい。
The output device 904 is, for example, an image display device such as a CRT (Cathode Ray Tube) device, an audio output device such as a speaker, or an image printing device such as a printer.
The output device 904 outputs various information.
The output device 904 may be, for example, an interface device that is connected to another device, and may be a device that outputs information to another device.

時計装置906は、例えば、発振回路とカウンタなどから構成され、現在の時刻あるいはリセット信号を受けてからの経過時間を測定する装置である。   The timepiece device 906 is configured from, for example, an oscillation circuit and a counter, and is a device that measures the current time or the elapsed time since receiving a reset signal.

割込信号入力装置905は、記憶装置902、入力装置903、出力装置904、時計装置906の状態が所定の状態になったことを検出し、実行装置901に対して、割込信号を出力する。
例えば、入力装置903が操作者の入力を受けた場合、出力装置904が画像の印刷を完了した場合、時計装置906が測定した時間が所定の時間に達した場合などに、割込信号を出力する。
なお、割込信号入力装置905は、実行装置901であるCPUの一部であってもよい。
The interrupt signal input device 905 detects that the storage device 902, the input device 903, the output device 904, and the clock device 906 are in a predetermined state, and outputs an interrupt signal to the execution device 901. .
For example, when the input device 903 receives an input from the operator, the output device 904 completes printing of an image, or the time measured by the clock device 906 reaches a predetermined time, an interrupt signal is output. To do.
Note that the interrupt signal input device 905 may be a part of the CPU that is the execution device 901.

図2は、この実施の形態における並列処理装置900において実行されるプログラム(タスク)の関係の一例を示す概念図である。
並列処理装置900において実行されるプログラムには、ホストOS100(Operating System)、ゲストOS200、ホストOS上のタスク106、OS切替用タスク107、ゲストOS上のタスク206などがある。
FIG. 2 is a conceptual diagram showing an example of the relationship of programs (tasks) executed in the parallel processing device 900 in this embodiment.
The programs executed in the parallel processing device 900 include a host OS 100 (Operating System), a guest OS 200, a task 106 on the host OS, an OS switching task 107, a task 206 on the guest OS, and the like.

ホストOS100は、並列処理装置900が処理するプログラムのうちから実行するプログラムを選択し、実行装置901に実行させる。また、実行中のプログラムを中断し、他のプログラムを実行する場合に、実行中のプログラムをあとで再開できるよう、必要な情報(コンテキスト)を保存しておき、実行再開時に復元する。
ホストOS100は、並列処理プログラムの一例である。
The host OS 100 selects a program to be executed from among the programs processed by the parallel processing device 900 and causes the execution device 901 to execute the program. In addition, when the program being executed is interrupted and another program is executed, necessary information (context) is saved so that the program being executed can be resumed later, and restored when the execution is resumed.
The host OS 100 is an example of a parallel processing program.

ホストOS100は、複数のプログラムにより構成される。ホストOS100は、スケジューラ101、割込処理103、マスク設定処理104、OS間同期処理105などを行うプログラムを有し、割込ベクタ102、マスクテーブル108などを記憶装置902を用いて記憶している。   The host OS 100 is composed of a plurality of programs. The host OS 100 has programs for performing a scheduler 101, an interrupt process 103, a mask setting process 104, an inter-OS synchronization process 105, and the like, and stores an interrupt vector 102, a mask table 108, and the like using a storage device 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)に対して通知するメッセージを処理するプログラムである。
The scheduler 101 is a program that performs processing such as scheduling of the host task 110 (guest OS 200, task 106 on the host OS, OS switching task 107, etc.).
The interrupt processing 103 is a program that is executed by the interrupt signal output from the interrupt signal input device 905 and performs processing corresponding to each interrupt cause.
The interrupt vector 102 is information indicating the interrupt process 103 executed by the interrupt signal output from the interrupt signal input device 905 (for example, an address of a memory (storage device 902) storing the interrupt process 103). .
The mask setting process 104 is a program that sets an interrupt mask for restricting the execution of the interrupt process 103 so that the interrupt process with a low priority is not executed during the execution of a process with a high priority.
The mask table 108 is information on the interrupt mask set in the mask setting process 104.
The inter-OS synchronization processing 105 is a program that processes a message notified from the host task 110 to the guest task 210 (task 206 on the guest OS).

ホストOS上のタスク106は、ホストOS100が管理するプログラムであり、並列処理装置900において、並列して処理されるプログラムである。
ホストOS上のタスク106は、他のプログラムの一例である。
The task 106 on the host OS is a program managed by the host OS 100 and is a program processed in parallel in the parallel processing device 900.
The task 106 on the host OS is an example of another program.

OS切替用タスク107は、実行装置901がゲストタスク210を実行しているときに、割込信号入力装置905が出力した割込信号に対応する割込処理がホストOS100上のものである場合に、OSをゲストOSからホストOSに切り替えるためのプログラムである。
OS切替用タスク107は、他のプログラムの一例である。
The OS switching task 107 is used when the interrupt processing corresponding to the interrupt signal output from the interrupt signal input device 905 is on the host OS 100 when the execution device 901 is executing the guest task 210. , A program for switching the OS from the guest OS to the host OS.
The OS switching task 107 is an example of another program.

ゲストOS200は、ホストOS100と同様、複数のプログラムのうちから、実行するプログラムを選択し、実行装置901に実行させるプログラムである。ホストOS100と異なる点は、並列処理装置900が処理するプログラムのうち、ゲストタスク210を管理し、それ以外のプログラム(例えば、ホストOS上のタスク106、OS切替用タスクなど)は管理しない点である。また、ゲストOS200自体が、ホストOS100の管理を受けるホストタスク110の一つである点も異なる。
ゲストOS200は、ゲスト並列処理プログラムの一例である。
Similar to the host OS 100, the guest OS 200 is a program that selects a program to be executed from a plurality of programs and causes the execution device 901 to execute the program. The difference from the host OS 100 is that the guest task 210 is managed among the programs processed by the parallel processing device 900, and other programs (for example, the task 106 on the host OS, the OS switching task, etc.) are not managed. is there. Another difference is that the guest OS 200 itself is one of the host tasks 110 that are managed by the host OS 100.
The guest OS 200 is an example of a guest parallel processing program.

ゲストOS200は、複数のプログラムで構成される。ゲストOS200は、スケジューラ201、割込処理203、マスク設定処理204、OS間同期処理205などを行うプログラムを有し、割込ベクタ202などを記憶装置902を用いて記憶している。   The guest OS 200 is composed of a plurality of programs. The guest OS 200 has programs for performing a scheduler 201, an interrupt process 203, a mask setting process 204, an inter-OS synchronization process 205, and the like, and stores an interrupt vector 202 and the like using a storage device 902.

スケジューラ201は、ゲストタスク210のスケジューリングなどの処理を行うプログラムである。
割込処理203は、割込信号入力装置905が出力した割込信号により実行され、それぞれの割込原因に対応する処理を行うプログラムである。
割込ベクタ202は、割込信号入力装置905が出力した割込信号により実行する割込処理203を示す情報(例えば、割込処理203を記憶したメモリ(記憶装置902)のアドレスなど)である。
マスク設定処理204は、優先順位の高い処理の実行中に、優先順位の低い割込処理を実行しないように、割込処理203の実行を制限するための割込マスクを設定するプログラムである。
OS間同期処理205は、ホストタスク110からゲストタスク210に対して通知されたメッセージを処理するプログラムである。
The scheduler 201 is a program that performs processing such as scheduling of the guest task 210.
The interrupt processing 203 is a program that is executed by the interrupt signal output from the interrupt signal input device 905 and performs processing corresponding to each interrupt cause.
The interrupt vector 202 is information indicating an interrupt process 203 executed by the interrupt signal output from the interrupt signal input device 905 (for example, an address of a memory (storage device 902) storing the interrupt process 203). .
The mask setting process 204 is a program that sets an interrupt mask for restricting the execution of the interrupt process 203 so that the interrupt process with a low priority is not executed during the execution of a process with a high priority.
The inter-OS synchronization process 205 is a program that processes a message notified from the host task 110 to the guest task 210.

ゲストOS上のタスク206は、ゲストOS200が管理するプログラムであり、並列処理装置900において、並列して処理されるプログラムである。
ゲストOS上のタスク206は、複数のプログラムの一例である。
The task 206 on the guest OS is a program managed by the guest OS 200, and is a program processed in parallel in the parallel processing device 900.
The task 206 on the guest OS is an example of a plurality of programs.

図3は、この実施の形態における並列処理装置900の機能ブロックの構成の一例を示すブロック構成図である。
並列処理装置900は、割込処理部310、ディスパッチ部320、スケジュール部330、優先度記憶部391、コンテキスト記憶部392などを有する。
FIG. 3 is a block configuration diagram illustrating an example of a functional block configuration of the parallel processing device 900 according to this embodiment.
The parallel processing device 900 includes an interrupt processing unit 310, a dispatch unit 320, a schedule unit 330, a priority storage unit 391, a context storage unit 392, and the like.

割込処理部310は、割込信号入力装置905が出力した割込信号に基づいて、対応する割込処理103,203を実行装置901に実行させる。
割込処理部310は、例えば、CPUのハードウェアによって実現するが、他の方法で実現してもよい。
割込処理部310は、割込ベクタ記憶部311、割込マスク記憶部312、割込処理実行部313を有する。
The interrupt processing unit 310 causes the execution device 901 to execute the corresponding interrupt processing 103 and 203 based on the interrupt signal output from the interrupt signal input device 905.
The interrupt processing unit 310 is realized by CPU hardware, for example, but may be realized by other methods.
The interrupt processing unit 310 includes an interrupt vector storage unit 311, an interrupt mask storage unit 312, and an interrupt processing execution unit 313.

割込ベクタ記憶部311は、割込ベクタ102または割込ベクタ202を記憶する。割込ベクタ記憶部311は、例えば、所定のアドレスを有するメモリ(記憶装置902)であり、割込信号の番号に対応するアドレスに、割込処理103,203を記憶したメモリ(記憶装置902)の開始アドレスを記憶する。   The interrupt vector storage unit 311 stores the interrupt vector 102 or the interrupt vector 202. The interrupt vector storage unit 311 is, for example, a memory (storage device 902) having a predetermined address, and a memory (storage device 902) that stores interrupt processing 103 and 203 at an address corresponding to the number of the interrupt signal. The start address of is stored.

割込マスク記憶部312は、割込マスクを記憶する。割込マスク記憶部312は、例えば、CPUの割込マスクレジスタであり、割込処理を許可する割込信号を示す情報を、割込マスクとして記憶する。
割込マスクは、例えば、割込信号の種類と同じ数のビット(割込マスクパターン)を有し、割込信号との論理積をとることにより、割込処理を許可する割込信号だけを抽出する。
また、例えば、割込マスクは、割込レベルを示す整数値(割込マスクレベル)であり、割込信号のレベルと割込マスクの値とを比較して、割込信号のレベルのほうが低い場合に、割込処理を許可しないものであってもよい。
The interrupt mask storage unit 312 stores an interrupt mask. The interrupt mask storage unit 312 is, for example, an interrupt mask register of the CPU, and stores information indicating an interrupt signal permitting interrupt processing as an interrupt mask.
The interrupt mask has, for example, the same number of bits (interrupt mask pattern) as the type of interrupt signal, and by taking the logical product with the interrupt signal, only the interrupt signal that permits interrupt processing is obtained. Extract.
Also, for example, the interrupt mask is an integer value (interrupt mask level) indicating the interrupt level, and the interrupt signal level is lower when the interrupt signal level is compared with the interrupt mask value. In some cases, interrupt processing may not be permitted.

割込処理実行部313は、割込マスク記憶部312が記憶した割込マスクにより許可された割込信号を割込信号入力装置905が出力した場合に、実行装置901が実行しているプログラムの実行を中断させ、割込ベクタ記憶部311が記憶した割込ベクタによって示される割込処理103,203を、実行装置901に実行させる。
例えば、現在のPC(Program Counter)の値をスタックに退避し、割込信号に対応する割込ベクタの値を、PCに読み込む。
When the interrupt signal input device 905 outputs an interrupt signal permitted by the interrupt mask stored in the interrupt mask storage unit 312, the interrupt processing execution unit 313 executes a program executed by the execution device 901. The execution is interrupted, and the execution device 901 is caused to execute the interrupt processing 103 and 203 indicated by the interrupt vector stored in the interrupt vector storage unit 311.
For example, the current PC (Program Counter) value is saved in the stack, and the interrupt vector value corresponding to the interrupt signal is read into the PC.

ディスパッチ部320(ディスパッチャともいう)は、実行装置901が実行するホストタスク110を切り替える際(タスク切替時)、それまで実行していたホストタスク110を、あとで再開できるよう、ホストタスク110の実行に必要な情報(PCの値、レジスタの値、メモリ(記憶装置902)が記憶したスタックや一時変数の値など。以下「コンテキスト」という)をコンテキスト記憶部392に記憶させておく。ディスパッチ部320は、中断したホストタスク110を再開する際、コンテキスト記憶部392が記憶したコンテキストを読み出して、復元し、中断前の続きが実行できるようにする。
ディスパッチ部320は、実行装置901がスケジューラ101を実行することにより実現する。
The dispatch unit 320 (also referred to as a dispatcher) executes the host task 110 so that the host task 110 executed so far can be resumed later when the host task 110 executed by the execution device 901 is switched (when the task is switched). Information (PC value, register value, stack and temporary variable value stored in the memory (storage device 902), etc., hereinafter referred to as “context”) is stored in the context storage unit 392. When resuming the suspended host task 110, the dispatch unit 320 reads and restores the context stored in the context storage unit 392 so that the continuation before the suspension can be executed.
The dispatch unit 320 is realized by the execution device 901 executing the scheduler 101.

ディスパッチ部320は、コンテキスト書換部321、割込ベクタ書換部323、マスク設定部324などを有する。
コンテキスト書換部321は、実行を中断するホストタスク110のコンテキストをコンテキスト記憶部392に記憶させ、実行を再開するホストタスク110のコンテキストを、コンテキスト記憶部392から復元する。
The dispatch unit 320 includes a context rewriting unit 321, an interrupt vector rewriting unit 323, a mask setting unit 324, and the like.
The context rewriting unit 321 stores the context of the host task 110 whose execution is interrupted in the context storage unit 392 and restores the context of the host task 110 whose execution is resumed from the context storage unit 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のコンテキストとして、保存・復元する。
The interrupt vector rewriting unit 323 stores the interrupt vector stored in the interrupt vector storage unit 311 in the context storage unit 392 and restores it when the OS is switched.
Here, “when OS is switched”, among the host tasks 110, the execution of the guest OS 200 is interrupted and the other host tasks 110 (the task 106 on the host OS, the task 107 for OS switching, etc.) are executed. In other words, conversely, the execution of the guest OS 200 is executed by interrupting the execution of other host tasks 110 (the task 106 on the host OS, the OS switching task 107, etc.).
Since each OS manages the interrupt processes 103 and 203, it is necessary to rewrite the interrupt vector stored in the interrupt vector storage unit 311 when switching the OS. Therefore, the interrupt vector rewriting unit 323 saves and restores the interrupt vector stored in the interrupt vector storage unit 311 as the OS context.

マスク設定部324は、タスク切替時に、割込マスク記憶部312が記憶した割込マスクをコンテキスト記憶部392に記憶させ、復元する(マスク設定処理104)。
この実施の形態では、割込マスクも、タスクのコンテキストの一部として、タスク切替時に保存・復元する。
The mask setting unit 324 stores and restores the interrupt mask stored in the interrupt mask storage unit 312 in the context storage unit 392 when switching tasks (mask setting process 104).
In this embodiment, the interrupt mask is also saved and restored as part of the task context at the time of task switching.

コンテキスト記憶部392は、記憶装置902を用いて、コンテキストおよび割込マスクをホストタスク110ごとに記憶する。また、コンテキスト記憶部392は、記憶装置902を用いて、割込ベクタをOSごとに記憶する。   The context storage unit 392 uses the storage device 902 to store the context and the interrupt mask for each host task 110. Further, the context storage unit 392 stores an interrupt vector for each OS using the storage device 902.

優先度記憶部391は、記憶装置902を用いて、ホストタスク110の優先度を記憶する。
「優先度」とは、ホストタスク110を実行する優先順位を示す情報である。実行可能な状態にあるホストタスク110が複数ある場合に、どのホストタスク110を実行するかを判断する基準となり、優先度に基づいて判断した優先順位が最も高いホストタスク110を実行する。
The priority storage unit 391 stores the priority of the host task 110 using the storage device 902.
“Priority” is information indicating the priority of executing the host task 110. When there are a plurality of host tasks 110 in an executable state, the host task 110 having the highest priority determined based on the priority is executed as a reference for determining which host task 110 is to be executed.

スケジュール部330(スケジューラともいう)は、優先度記憶部391が記憶した優先度に基づいて、実行装置901が実行するホストタスク110を選択する。
スケジュール部330は、実行装置901がスケジューラ101を実行することにより実現する。
The scheduling unit 330 (also referred to as a scheduler) selects the host task 110 to be executed by the execution device 901 based on the priority stored in the priority storage unit 391.
The schedule unit 330 is realized by the execution device 901 executing the scheduler 101.

スケジュール部330は、実行可能判断部331、タスク選択部332、マスクテーブル生成部333、マスクテーブル記憶部334などを有する。   The schedule unit 330 includes an executable determination unit 331, a task selection unit 332, a mask table generation unit 333, a mask table storage unit 334, and the like.

実行可能判断部331は、ホストタスク110が実行可能な状態であるか否かを判断する。
「実行可能な状態」とは、ホストタスク110が、そのタスクを実行するために必要な情報、リソースがすべて揃っていて、実行装置901が空けば、すぐにでも実行できる状態にあることをいう。
これに対して、「実行可能な状態でない」とは、ホストタスク110が、例えば、入力待ち、出力完了待ち、タイミング調整、他のタスクの処理結果待ち、メモリ不足などにより、実行装置901が利用可能であっても、すぐには実行できない状態にあることをいう。
The executable determination unit 331 determines whether the host task 110 is in an executable state.
The “executable state” means that the host task 110 is ready to be executed as soon as all information and resources necessary for executing the task are available and the execution device 901 is available. .
On the other hand, “not ready for execution” means that the host task 110 uses the execution device 901 due to, for example, waiting for input, waiting for output completion, timing adjustment, waiting for processing results of other tasks, or lack of memory. Even if it is possible, it means that it cannot be executed immediately.

タスク選択部332は、実行可能判断部331が実行可能な状態であると判断したホストタスク110について、優先度記憶部391が記憶した優先度に基づいて、優先順位を算出し、もっとも優先順位の高いホストタスク110を選択する。   The task selection unit 332 calculates priority based on the priority stored in the priority storage unit 391 for the host task 110 determined to be in an executable state by the executable determination unit 331, and has the highest priority. Select a higher host task 110.

マスクテーブル生成部333は、優先度記憶部391が記憶した優先度に基づいて、マスクテーブル108を生成し、マスクテーブル記憶部334に記憶させる。
マスクテーブル記憶部334は、マスクテーブル生成部333が生成したマスクテーブル108を記憶する。
The mask table generation unit 333 generates the mask table 108 based on the priority stored in the priority storage unit 391 and stores it in the mask table storage unit 334.
The mask table storage unit 334 stores the mask table 108 generated by the mask table generation unit 333.

割込処理103,203は、原則として、割込信号入力装置905が割込信号を出力したときに実行するものなので、スケジュール部330、ディスパッチ部320の管理外で実行され、優先順位という概念がない。
しかし、緊急度の高い処理を実行中に、緊急度の低い割込についての割込処理が発生することを防ぐ必要があるため、割込マスクによって、緊急度の低い割込処理の発生を防ぐ。
したがって、割込マスクによって割込処理を禁止された割込処理は、その割込マスクを設定したホストタスク110よりも、優先順位が低いと考えることができる。
Since the interrupt processes 103 and 203 are executed when the interrupt signal input device 905 outputs an interrupt signal in principle, they are executed outside the management of the schedule unit 330 and the dispatch unit 320, and the concept of priority order is used. Absent.
However, since it is necessary to prevent interrupt processing for interrupts with low urgency during execution of processing with high urgency, the interrupt mask prevents the occurrence of interrupt processing with low urgency. .
Therefore, it can be considered that an interrupt process whose interrupt process is prohibited by the interrupt mask has a lower priority than the host task 110 that sets the interrupt mask.

図4は、この実施の形態におけるタスクの優先順位の一例を示す概念図である。
割込処理タスク111〜115は、割込信号入力装置905が割込信号を出力したときに実行される割込処理103である。割込処理タスク111〜115は、スケジュール部330の管理外にあり、厳密な意味での「タスク」ではないが、ここでは、割込マスクにより、通常のタスクとの間に優先順位を考えることができるので、ホストタスク110の一種として扱う。
FIG. 4 is a conceptual diagram showing an example of task priorities in this embodiment.
Interrupt processing tasks 111 to 115 are interrupt processing 103 executed when the interrupt signal input device 905 outputs an interrupt signal. The interrupt processing tasks 111 to 115 are not managed by the scheduling unit 330 and are not “tasks” in a strict sense, but here, priority is considered between the normal task and the interrupt mask. Therefore, it is treated as a kind of host task 110.

通常処理タスク121〜125は、ホストOS上のタスク106であり、通常の処理を行う。
通常処理タスク121〜125は、優先度記憶部391が記憶した優先度に基づいて、優先順位が定められており、この図では、上にいくほど優先順位が高いものとして記述している。
The normal processing tasks 121 to 125 are tasks 106 on the host OS and perform normal processing.
The normal processing tasks 121 to 125 have priorities determined on the basis of the priorities stored in the priority storage unit 391. In this figure, the priorities are described as having higher priorities.

通常処理タスク121〜125には、割込処理タスク111〜115の処理結果を待つものがある。例えば、通常処理タスク121は、割込処理タスク111の処理結果を待って、実行可能な状態でなくなることがある。同様に、通常処理タスク122,123,125は、それぞれ、割込処理タスク112,113,115の処理結果を待つ。また、通常処理タスク124は、割込処理タスクの処理結果を待つことがないタスクである。   Some of the normal processing tasks 121 to 125 wait for the processing results of the interrupt processing tasks 111 to 115. For example, the normal processing task 121 may not be executable after waiting for the processing result of the interrupt processing task 111. Similarly, the normal processing tasks 122, 123, and 125 wait for the processing results of the interrupt processing tasks 112, 113, and 115, respectively. The normal processing task 124 is a task that does not wait for the processing result of the interrupt processing task.

通常処理タスク121のほうが通常処理タスク122よりも優先順位が高いので、通常処理タスク121が実行可能な状態である間は、通常処理タスク122が実行可能な状態となっても、タスク選択部332は通常処理タスク121を選択し、通常処理タスク122を実行することはない。
すなわち、通常処理タスク122が処理結果を待っている割込処理タスク112の処理が終了して、通常処理タスク122が実行可能な状態となっても、通常処理タスク121が実行可能な状態でなくなるまで、待つことになる。
したがって、割込発生時に割込処理タスク112をすぐ実行する必要はなく、通常処理タスク121が終わるまで待つことができる。
そこで、通常処理タスク121を実行中は、割込処理タスク112の実行を許可しないよう割込マスクを設定することにより、優先順位の高い通常処理タスク121の実行が中断されないようにする。
すなわち、割込処理タスク112の優先順位は、通常処理タスク121と通常処理タスク122との間であると考えることができる。
Since the normal processing task 121 has a higher priority than the normal processing task 122, the task selection unit 332 is in a state where the normal processing task 122 can be executed while the normal processing task 121 is in an executable state. Selects the normal processing task 121 and does not execute the normal processing task 122.
That is, even if the processing of the interrupt processing task 112 for which the normal processing task 122 is waiting for the processing result is completed and the normal processing task 122 becomes executable, the normal processing task 121 is not in an executable state. Until you wait.
Therefore, it is not necessary to immediately execute the interrupt processing task 112 when an interrupt occurs, and it is possible to wait until the normal processing task 121 ends.
Therefore, while the normal processing task 121 is being executed, an interrupt mask is set so that execution of the interrupt processing task 112 is not permitted, so that execution of the normal processing task 121 having a higher priority is not interrupted.
That is, the priority order of the interrupt processing task 112 can be considered to be between the normal processing task 121 and the normal processing task 122.

このように、各タスクの優先度と、それぞれのタスクが待つ割込処理とがわかれば、各タスクを実行中に設定すべき割込マスクを算出することができる。   As described above, if the priority of each task and the interrupt process that each task waits for are known, an interrupt mask to be set during execution of each task can be calculated.

マスクテーブル生成部333は、このようにして、ホストタスク110ごとの割込マスクを生成する。   In this way, the mask table generation unit 333 generates an interrupt mask for each host task 110.

ゲストOS200は、ホストタスク110の一つとして、優先順位を有する。この例では、通常処理タスク122よりも優先順位が低く、通常処理タスク123よりも優先順位が高いものとして、ゲストOS200の優先度が設定され、優先度記憶部391が記憶している。   The guest OS 200 has priority as one of the host tasks 110. In this example, the priority of the guest OS 200 is set and stored in the priority storage unit 391 on the assumption that the priority is lower than that of the normal processing task 122 and higher than that of the normal processing task 123.

OS切替用タスク107は、ゲストOS200よりも優先順位を高く設定する。なお、OS切替用タスク107とゲストOS200との間の優先順位を有するホストタスク110がないほうが好ましい。   The OS switching task 107 sets a higher priority than the guest OS 200. It is preferable that there is no host task 110 having a priority between the OS switching task 107 and the guest OS 200.

ゲストOS200が管理するゲストタスク210には、例えば、割込処理タスク211〜212、通常処理タスク221〜223などがある。これらのタスクも、ゲストOS200の管理内において、優先順位を有する。あるいは、ゲストOS200におけるタスク管理は、優先順位に基づくものでなくてもよい。   The guest task 210 managed by the guest OS 200 includes, for example, interrupt processing tasks 211 to 212, normal processing tasks 221 to 223, and the like. These tasks also have priorities in the management of the guest OS 200. Alternatively, task management in the guest OS 200 may not be based on priority.

ここで、ホストタスク110およびゲストタスク210全体の優先順位を考えると、ゲストOS200自体が、ホストOS100が管理するホストタスク110の一つであるため、ゲストタスク210の全体における優先順位は、ゲストOS200より優先順位の高いOS切替用タスク107より高くなることはなく、また、ゲストOS200より優先順位の低い割込処理タスク113より低くなることはない。   Here, considering the priority order of the host task 110 and the guest task 210 as a whole, the guest OS 200 itself is one of the host tasks 110 managed by the host OS 100. Therefore, the priority order of the guest task 210 as a whole is the guest OS 200. It does not become higher than the OS switching task 107 with higher priority, and does not become lower than the interrupt processing task 113 with lower priority than the guest OS 200.

ゲストOS200が管理するゲストタスク210においても、通常処理タスク221〜223が割込処理タスク211〜212の処理結果を待つ場合がある。そこで、ゲストOS200も、割込処理タスク211〜212を管理し、割込マスクの設定などを行う場合がある。   Even in the guest task 210 managed by the guest OS 200, the normal processing tasks 221 to 223 may wait for the processing results of the interrupt processing tasks 211 to 212. Therefore, the guest OS 200 may also manage the interrupt processing tasks 211 to 212 and set an interrupt mask.

図5は、この実施の形態におけるホストタスク110の優先順位と、割込の優先順位との関係の一例を示す概念図である。
通常処理タスクの優先順位は、優先度記憶部391が記憶した優先度により定まる。
割込処理タスクの優先順位は、それぞれの割込処理タスクの処理結果を待つ通常処理タスクの優先順位により定まる。
FIG. 5 is a conceptual diagram showing an example of the relationship between the priority order of the host task 110 and the interrupt priority order in this embodiment.
The priority order of the normal processing tasks is determined by the priority stored in the priority storage unit 391.
The priority order of interrupt processing tasks is determined by the priority order of normal processing tasks waiting for the processing result of each interrupt processing task.

通常処理タスクの優先制御は、スケジュール部330が行う。
割込処理タスクの優先制御は、割込マスク記憶部312に割込マスクを設定することにより行う。
The scheduling unit 330 performs priority control of normal processing tasks.
The priority control of the interrupt processing task is performed by setting an interrupt mask in the interrupt mask storage unit 312.

スケジューラ101のマスクテーブル生成部333は、ホストタスク110の起動時に、この関係にしたがって、割込マスクのレベルとタスクの優先度を設定する。
ゲストOS200は、優先度Tgを有する。
ゲストOS200で処理する割込処理タスクは、割込優先度Ix+1〜Iyを有する。
ゲストOS200より高い優先度で実行するホストタスク110は、優先度Tg+1以上の優先度を有する。
優先度Tg+1以上の優先度を有するホストタスク110実行時には、優先度Iy以下の割込処理をマスクする。
また、ゲストOS200において、ゲストタスク210の処理が割込処理と競合しないようにするために割込をマスクするときは、割込優先度Iy以下の割込をマスクする。
The mask table generation unit 333 of the scheduler 101 sets the interrupt mask level and task priority according to this relationship when the host task 110 is activated.
The guest OS 200 has a priority Tg.
The interrupt processing task processed by the guest OS 200 has interrupt priorities Ix + 1 to Iy.
The host task 110 executed with a higher priority than the guest OS 200 has a priority of Tg + 1 or higher.
When executing a host task 110 having a priority level Tg + 1 or higher, an interrupt process with a priority level Iy or lower is masked.
Further, in the guest OS 200, when interrupts are masked so that the processing of the guest task 210 does not conflict with the interrupt processing, interrupts having an interrupt priority level Iy or less are masked.

ここで、ゲストタスク210の優先制御は、ゲストOS200が行うので、ホストOS100が関知するところではない。しかし、ゲストOS200以外のホストタスク110を実行中であっても、ゲストOS200で処理すべき割込信号が発生する場合はあるので、割込マスクによって制御する必要がある。   Here, since priority control of the guest task 210 is performed by the guest OS 200, the host OS 100 is not concerned. However, even when a host task 110 other than the guest OS 200 is being executed, an interrupt signal to be processed by the guest OS 200 may be generated, and therefore it is necessary to control the interrupt task using an interrupt mask.

しかし、ゲストOS200による割込制御は、ゲストOS200が処理すべき割込に関するものに限られる。
ホストOS100が処理すべき割込のうち、ゲストOS200よりも優先順位の高い割込は、ゲストOS200の実行中は、常に許可される。これをゲストOS200から見ると、そのような割込は、NMI(No Maskable Interupt)と同じであり、ゲストOS200の制御対象ではない。
また、ホストOS100が処理すべき割込のうち、ゲストOS200よりも優先順位の低い割込は、ゲストOS200の実行中は、常に禁止される。これをゲストOS200から見ると、そのような割込はないのと同じである。
However, the interrupt control by the guest OS 200 is limited to those related to the interrupt to be processed by the guest OS 200.
Of the interrupts to be processed by the host OS 100, interrupts having a higher priority than the guest OS 200 are always permitted during execution of the guest OS 200. When this is viewed from the guest OS 200, such an interrupt is the same as NMI (No Maskable Interrupt) and is not a control target of the guest OS 200.
Of the interrupts to be processed by the host OS 100, interrupts having a lower priority than the guest OS 200 are always prohibited during execution of the guest OS 200. Seeing this from the guest OS 200, it is the same as not having such an interrupt.

したがって、ゲストOS200は、ゲストOS200が処理すべき割込だけを制御すればよく、ホストOS100が処理すべき割込を考慮する必要はない。   Therefore, the guest OS 200 need only control the interrupts to be processed by the guest OS 200, and does not need to consider the interrupts to be processed by the host OS 100.

図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に設定する。
FIG. 6 is a diagram showing an example of the contents of the mask table 108 generated by the mask table generation unit 333 and stored in the mask table storage unit 334 in this embodiment.
The mask table 108 is a table having a task priority 611 and an interrupt mask level 612.
The task priority 611 is the priority of each task. If the task priority stored in the priority storage unit 391 is the same, the interrupt mask level is also the same, so the interrupt mask level is stored for each task priority, not for each host task 110. Note that it may be stored for each host task 110.
The interrupt mask level 612 is an interrupt mask set in the interrupt mask storage unit 312 when executing the host task 110 having the task priority 611.
For example, when executing the host task 110 with the task priority Tm, the interrupt mask Mn is set in the interrupt mask storage unit 312. The interrupt mask Mn indicates an interrupt mask that masks all interrupts having an interrupt priority level In or lower in FIG.
When executing the host task 110 (guest OS 200) with the task priority Tg, an interrupt mask My that masks interrupts with an interrupt priority level Ix or lower and permits interrupts with an interrupt priority level Ix + 1 or higher. Is set in the interrupt mask storage unit 312.

図7は、この実施の形態における割込ベクタ記憶部311が記憶する割込ベクタの一例を示す図である。
割込ベクタ記憶部311が記憶している割込ベクタは、OS切替時に、割込ベクタ書換部323が書き換えることにより、割込ベクタ102または割込ベクタ202を記憶している。
実行装置901が、ホストタスク110のうち、ゲストOS200(あるいは、その管理下にあるゲストタスク210)を実行している場合、割込ベクタ記憶部311は割込ベクタ202を記憶している。
また、実行装置901が、ゲストOS200以外のホストタスク110を実行している場合、割込ベクタ記憶部311は割込ベクタ102を記憶している。
FIG. 7 is a diagram showing an example of an interrupt vector stored in the interrupt vector storage unit 311 in this embodiment.
The interrupt vector stored in the interrupt vector storage unit 311 is stored in the interrupt vector 102 or the interrupt vector 202 by being rewritten by the interrupt vector rewriting unit 323 when the OS is switched.
When the execution device 901 executes the guest OS 200 (or the guest task 210 under the management) of the host tasks 110, the interrupt vector storage unit 311 stores the interrupt vector 202.
When the execution device 901 executes a host task 110 other than the guest OS 200, the interrupt vector storage unit 311 stores the interrupt vector 102.

割込ベクタは、割込信号に対応して実行する割込処理を示す情報である。この例では、6種類の割込621〜632に対応する割込ベクタを記憶している。
割込621〜632のうち、割込621〜624は、ホストOS100上で処理すべき割込であるものとする。また、割込631〜632は、ゲストOS200上で処理すべき割込であるものとする。
また、割込621〜632は、図中、上に記載したもののほうが優先順位が高く、下にいくほど、優先順位が下がるものとする。
The interrupt vector is information indicating an interrupt process executed in response to the interrupt signal. In this example, interrupt vectors corresponding to six types of interrupts 621 to 632 are stored.
Of the interrupts 621 to 632, the interrupts 621 to 624 are interrupts to be processed on the host OS 100. Also, interrupts 631 to 632 are interrupts to be processed on the guest OS 200.
In addition, the interrupts 621 to 632 have a higher priority in the order described above in the figure, and the priority is lowered as it goes down.

実行装置901がゲストOS200以外のホストタスク110を実行している際の割込ベクタ102のうち、ホストOS100が処理すべき割込621〜624に対応する割込ベクタ641〜644は、それぞれの割込を処理する割込処理プログラム661〜664を示す。
これに対し、ゲストOS200が処理すべき割込631〜632はゲストOS200が実行中でないと処理できないため、割込ベクタ649は、割込を処理する割込処理プログラム671〜672ではなく、切替プログラム669を示す。
Of the interrupt vectors 102 when the execution device 901 executes a host task 110 other than the guest OS 200, the interrupt vectors 641 to 644 corresponding to the interrupts 621 to 624 to be processed by the host OS 100 are the respective interrupt vectors. 3 shows interrupt processing programs 661 to 664 for processing the error.
On the other hand, since the interrupts 631 to 632 to be processed by the guest OS 200 cannot be processed unless the guest OS 200 is executing, the interrupt vector 649 is not an interrupt processing program 671 to 672 for processing an interrupt, but a switching program. 669 is shown.

実行装置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としておいてもよい。
Of the interrupt vectors 202 when the execution device 901 is executing the guest OS 200, the interrupt vectors 651 to 652 corresponding to the interrupts 631 to 632 to be processed by the guest OS 200 are interrupt requests for processing the respective interrupts. The process program 671-672 is shown.
On the other hand, the interrupt vector 659 corresponding to the interrupts 621 to 622 to be processed by the host OS 100 indicates the switching program 679 instead of the interrupt processing programs 661 to 664 for processing the interrupt.
Note that when the execution device 901 is executing the guest OS 200, interrupts 623 to 624 having a low priority are not generated due to the interrupt mask. Therefore, in this example, the interrupt vector corresponding to the interrupts 623 to 624 is left blank. However, the interrupt vector corresponding to the interrupts 623 to 624 may also be set as the interrupt vector 659.

次に、動作について説明する。   Next, the operation will be described.

図8は、この実施の形態において、ホストタスク110起動時におけるスケジュール部330のタスク起動処理の流れの一例を示すフローチャート図である。   FIG. 8 is a flowchart showing an example of a task activation process flow of the schedule unit 330 when the host task 110 is activated in this embodiment.

ホストOS100は、ホストOS上のタスク106およびゲストOS200をホストタスク110として生成(起動)する際、優先度およびタスク実行時にかけておく割込マスクを設定する。
あらかじめ、マスクテーブル生成部333が、マスクテーブル108を生成し、マスクテーブル記憶部334が記憶している。
When the host OS 100 generates (starts up) the task 106 and the guest OS 200 on the host OS as the host task 110, the host OS 100 sets a priority and an interrupt mask to be used when executing the task.
In advance, the mask table generation unit 333 generates the mask table 108 and the mask table storage unit 334 stores the mask table 108.

ホストOS100がタスク起動要求を受けると、タスク起動処理を開始する。   When the host OS 100 receives a task activation request, it starts task activation processing.

S11において、スケジュール部330が、優先度記憶部391が記憶した優先度に基づいて、起動するホストタスク110の優先度を算出する。
あるいは、タスク起動時にホストタスク110の優先度を指定することとし、スケジュール部330が、優先度記憶部391に優先度を記憶することとしてもよい。その場合、必要に応じて、マスクテーブル生成部333が、マスクテーブル108を再生成してもよい。
In S <b> 11, the schedule unit 330 calculates the priority of the host task 110 to be activated based on the priority stored in the priority storage unit 391.
Alternatively, the priority of the host task 110 may be designated when the task is activated, and the scheduling unit 330 may store the priority in the priority storage unit 391. In that case, the mask table generation unit 333 may regenerate the mask table 108 as necessary.

S12において、スケジュール部330が、S11で算出した優先度に基づいて、マスクテーブル記憶部334が記憶したマスクテーブル108から、割込マスクを算出する。   In S12, the schedule unit 330 calculates an interrupt mask from the mask table 108 stored in the mask table storage unit 334 based on the priority calculated in S11.

S13において、コンテキスト記憶部392が、起動するホストタスク110のコンテキストを記憶するための記憶領域を確保する。   In S13, the context storage unit 392 secures a storage area for storing the context of the host task 110 to be activated.

S14において、コンテキスト記憶部392が、S12で算出した割込マスクを、S13で確保した記憶領域に記憶する。   In S14, the context storage unit 392 stores the interrupt mask calculated in S12 in the storage area secured in S13.

S15において、実行可能判断部331が、起動するホストタスク110を、実行可能タスクリストに登録する。また、それ以外の通常のタスク起動時に行う処理を行う。   In S15, the executable determination unit 331 registers the host task 110 to be activated in the executable task list. In addition, processing that is performed when other normal tasks are started is performed.

実際に、タスク選択部332がホストタスク110を選択し、実行装置901がホストタスク110を実行する場合、ディスパッチ部320がコンテキストを復元する。コンテキスト記憶部392が記憶しているタスクのコンテキストには、S14で記憶した割込マスクが含まれているので、マスク設定部324が割込マスク記憶部312に記憶させる。
したがって、ホストタスク110が実行されている間、ホストタスク110よりも優先順位の低い割込処理を禁止する割込マスクを、割込マスク記憶部312に設定することとなる。
Actually, when the task selection unit 332 selects the host task 110 and the execution device 901 executes the host task 110, the dispatch unit 320 restores the context. Since the context of the task stored in the context storage unit 392 includes the interrupt mask stored in S <b> 14, the mask setting unit 324 stores the interrupt mask in the interrupt mask storage unit 312.
Therefore, while the host task 110 is being executed, an interrupt mask that prohibits interrupt processing having a lower priority than the host task 110 is set in the interrupt mask storage unit 312.

ここで、ゲストOS200(図5の優先度Tg)よりも優先順位が高い(例えば、優先度Tz)ホストタスク110を実行している間は、ゲストOS200が処理すべき割込処理(割込優先度Ix+1〜Iy)を禁止する割込マスクMzを割込マスク記憶部312に設定するので、ゲストOS200が処理すべき割込が入ることがない。
したがって、ゲストOS200よりも優先順位が高いホストタスク110の実行が、ゲストOSが処理すべき割込処理による影響を受けることはない。
Here, during execution of the host task 110 having a higher priority (eg, priority Tz) than the guest OS 200 (priority Tg in FIG. 5), the interrupt processing (interrupt priority) to be processed by the guest OS 200 Since the interrupt mask Mz prohibiting the degree Ix + 1 to Iy) is set in the interrupt mask storage unit 312, there is no interrupt to be processed by the guest OS 200.
Therefore, the execution of the host task 110 having a higher priority than the guest OS 200 is not affected by the interrupt process to be processed by the guest OS.

また、ゲストOS200の中で割込マスクを変更する場合は、割込優先度がIyより高い割込は常に許可し、割込優先度がIx+1より低い割込は常に禁止することとして、割込マスクMx〜Myを用いることとする。
これにより、ゲストOS200が割込マスクを変更しても、ゲストOS200より優先順位が高い割込処理が禁止されることはない。
In addition, when changing the interrupt mask in the guest OS 200, interrupts with interrupt priority higher than Iy are always permitted, and interrupts with interrupt priority lower than Ix + 1 are always prohibited. The masks Mx to My are used.
Thereby, even if the guest OS 200 changes the interrupt mask, an interrupt process having a higher priority than the guest OS 200 is not prohibited.

図9は、この実施の形態におけるスケジュール部330のスケジュール処理の流れの一例を示すフローチャート図である。
スケジュール部330は、実行可能な状態にあるホストタスク110のなかから、もっとも優先順位の高いホストタスク110を選択する。
FIG. 9 is a flowchart showing an example of the flow of schedule processing of the schedule unit 330 in this embodiment.
The schedule unit 330 selects the host task 110 having the highest priority from the host tasks 110 in an executable state.

S21(実行可能判断工程)において、実行可能判断部331が、実行可能タスクリストから実行可能な状態にあるホストタスク110を判別する。
実行可能タスクリストには、起動されているホストタスク110が登録されており、それぞれのホストタスク110が実行可能な状態にあるか否かを記憶している。実行可能タスクリストは、実行可能判断部331が記憶装置902を用いて記憶している。
In S21 (executable determination step), the executable determination unit 331 determines the host task 110 in an executable state from the executable task list.
In the executable task list, the activated host tasks 110 are registered, and whether each host task 110 is in an executable state is stored. The executable task list is stored by the executable determination unit 331 using the storage device 902.

S22において、タスク選択部332が、S21で実行可能判断部331が実行可能な状態にあると判断したホストタスク110について、優先度記憶部391が記憶した優先度に基づいて、優先順位を算出する。   In S22, the task selection unit 332 calculates a priority order for the host task 110 that is determined to be executable by the executable determination unit 331 in S21 based on the priority stored in the priority storage unit 391. .

S23(タスク選択工程)において、タスク選択部332が、S22で算出した優先順位が最も高いホストタスク110を選択する。   In S23 (task selection step), the task selection unit 332 selects the host task 110 having the highest priority calculated in S22.

S24において、ディスパッチ部320が、タスク切替処理を行う。すなわち、実行中のホストタスク110のコンテキストをコンテキスト記憶部392に保存し、S23でタスク選択部332が選択したタスクのコンテキストをコンテキスト記憶部392から復元する。   In S24, the dispatch unit 320 performs a task switching process. That is, the context of the host task 110 being executed is stored in the context storage unit 392, and the context of the task selected by the task selection unit 332 in S23 is restored from the context storage unit 392.

S25において、実行装置901が、S23でタスク選択部332が選択したホストタスク110を実行する。   In S25, the execution device 901 executes the host task 110 selected by the task selection unit 332 in S23.

その後、実行中のホストタスク110が、終了・休眠(実行可能な状態でない)などにより中断した場合、S21へ戻る。   Thereafter, when the running host task 110 is interrupted due to termination or sleep (not in an executable state), the process returns to S21.

図10は、この実施の形態におけるディスパッチ部320のタスク切替処理の流れの一例を示すフローチャート図である。
これは、スケジュール処理におけるタスク切替処理(S24)の内容を詳しく説明したものである。
FIG. 10 is a flowchart showing an example of the task switching processing flow of the dispatch unit 320 in this embodiment.
This details the contents of the task switching process (S24) in the schedule process.

S31において、コンテキスト記憶部392が、実行中のホストタスク110のコンテキストを記憶する(コンテキストのセーブ)。このコンテキストには、ホストタスク110実行時に設定していた割込マスクも含む。   In S31, the context storage unit 392 stores the context of the host task 110 being executed (save context). This context also includes the interrupt mask set when the host task 110 is executed.

S32において、割込ベクタ書換部323が、OS切替が発生するか否かを判断する。
S33において、OS切替がある場合には、S34へ進む。OS切替がない場合には、S37へ進む。
In S32, the interrupt vector rewriting unit 323 determines whether or not OS switching occurs.
If there is OS switching in S33, the process proceeds to S34. If there is no OS switching, the process proceeds to S37.

S34において、割込ベクタを書き換えている途中に割込が発生しないよう、ディスパッチ部320が、割込を禁止する。
なお、ここでの「割込禁止」とは、割込マスクによる禁止ではなく、すべての割込を禁止する。例えば、実行装置901が割込禁止命令を実行する。
In S <b> 34, the dispatch unit 320 prohibits the interrupt so that no interrupt occurs during the rewriting of the interrupt vector.
Note that “interrupt prohibited” here is not prohibited by an interrupt mask, but prohibits all interrupts. For example, the execution device 901 executes an interrupt prohibition instruction.

S35において、割込ベクタ書換部323が、割込ベクタ記憶部311が記憶した割込ベクタを読み出し、OSのコンテキストとして、コンテキスト記憶部392が記憶する(割込ベクタのセーブ)。   In S35, the interrupt vector rewriting unit 323 reads the interrupt vector stored in the interrupt vector storage unit 311 and the context storage unit 392 stores it as the OS context (saving the interrupt vector).

S36(割込ベクタ書換工程)において、割込ベクタ書換部323が、コンテキスト記憶部392が記憶した切替先のOSのコンテキストを読み出し、割込ベクタ記憶部311が記憶する(割込ベクタのリストア)。   In S36 (interrupt vector rewriting process), the interrupt vector rewriting unit 323 reads the context of the switching destination OS stored in the context storage unit 392, and the interrupt vector storage unit 311 stores it (restores the interrupt vector). .

S37において、コンテキスト書換部321が、コンテキスト記憶部392が記憶した切替先のホストタスク110のコンテキストを読み出し、復元する。また、マスク設定部324が、割込マスクを復元する(コンテキストのリストア)。   In S <b> 37, the context rewriting unit 321 reads the context of the switching destination host task 110 stored in the context storage unit 392 and restores it. The mask setting unit 324 restores the interrupt mask (context restore).

S38において、ディスパッチ部320が、割込禁止を解除する。例えば、実行装置901が割込禁止解除命令を実行する。   In S38, the dispatch unit 320 cancels the prohibition of interrupt. For example, the execution device 901 executes an interrupt prohibition release command.

なお、割込ベクタをOSのコンテキストではなく、タスクのコンテキストとして、コンテキスト記憶部392がタスクごとに記憶(ゲストOS200以外のホストタスク110の割込ベクタは、すべて同じ)しておくこととすれば、タスク切替時に、OS切替があるかどうかを判断する必要はない。   Note that the context storage unit 392 stores the interrupt vector not as an OS context but as a task context for each task (all interrupt vectors of the host task 110 other than the guest OS 200 are the same). It is not necessary to determine whether there is OS switching when switching tasks.

図11は、この実施の形態において、割込信号入力時における割込処理部310の割込処理の流れの一例を示すフローチャート図である。   FIG. 11 is a flowchart showing an example of the flow of interrupt processing of the interrupt processing unit 310 when an interrupt signal is input in this embodiment.

S41において、割込処理実行部313が、割込信号入力装置905が出力した割込信号を検出する。   In S <b> 41, the interrupt process execution unit 313 detects the interrupt signal output by the interrupt signal input device 905.

S42において、割込処理実行部313が、割込マスク記憶部312が記憶した割込マスクに基づいて、その割込信号に対応する割込処理が許可されているか禁止されているかを判断する。   In S <b> 42, the interrupt process execution unit 313 determines whether the interrupt process corresponding to the interrupt signal is permitted or prohibited based on the interrupt mask stored in the interrupt mask storage unit 312.

S43において、許可されている場合には、S44へ進む。禁止されている場合には、処理を終了する。   If permitted in S43, the process proceeds to S44. If it is prohibited, the process is terminated.

S44において、同じ割込が重複して発生しないよう、割込処理実行部313が、割込を禁止する(割込のブロック)。   In S44, the interrupt process execution unit 313 prohibits interrupts (blocks of interrupts) so that the same interrupts do not occur repeatedly.

S45において、実行装置901が、割込ベクタ記憶部311が記憶した割込ベクタが示すプログラムを実行する。   In S45, the execution device 901 executes the program indicated by the interrupt vector stored in the interrupt vector storage unit 311.

次に、S45で実行されるプログラムの処理内容について、説明する。   Next, processing contents of the program executed in S45 will be described.

図12は、この実施の形態において、割込信号入力時に実行される割込処理プログラム661〜664の割込処理の流れの一例を示すフローチャート図である。   FIG. 12 is a flowchart showing an example of the interrupt processing flow of the interrupt processing programs 661 to 664 executed when an interrupt signal is input in this embodiment.

割込処理プログラム661〜664は、ホストOS100が処理すべき割込を処理するプログラムであり、ホストOS100の管理下にあるものである。   The interrupt processing programs 661 to 664 are programs for processing interrupts to be processed by the host OS 100, and are under the management of the host OS 100.

S51において、割込信号入力装置905が、割込信号の出力を停止する。例えば、実行装置901が割込停止命令を実行し、割込信号入力装置905に対して割込処理の開始を通知する(割込のアクノリッジ)。これを受けた割込信号入力装置905は、割込信号の出力を停止する。   In S51, the interrupt signal input device 905 stops outputting the interrupt signal. For example, the execution device 901 executes an interrupt stop instruction and notifies the interrupt signal input device 905 of the start of the interrupt process (interrupt acknowledge). Receiving this, the interrupt signal input device 905 stops outputting the interrupt signal.

割込がマスクされていたり、禁止されていたりして、割込処理を開始できない場合、すぐに割込信号の出力を止めてしまうと、割込処理ができず、支障を来たす。そこで、割込信号入力装置905は、割込処理が開始したことを確認するまで、割込信号を出力し続ける(割込信号のアサート)。
そのため、割込信号入力装置905に対して、割込処理が開始したことを通知し、割込信号を停止させる必要がある。
If the interrupt process cannot be started because the interrupt is masked or prohibited, if the interrupt signal output is stopped immediately, the interrupt process cannot be performed, causing a problem. Therefore, the interrupt signal input device 905 continues to output the interrupt signal until it is confirmed that the interrupt process has started (assertion of the interrupt signal).
Therefore, it is necessary to notify the interrupt signal input device 905 that the interrupt processing has started and stop the interrupt signal.

S52において、実行装置901が、割込禁止を解除する。割込信号入力装置905が割込信号の出力を停止したので、同じ割込が重複して発生する心配がなくなり、もっと優先順位の高い割込が発生した場合に、その割込の処理ができるようにするためである。
なお、割込マスクはそのままなので、割込禁止を解除しても、優先順位の低い割込は発生しない。
In S52, the execution device 901 releases the prohibition of interrupt. Since the interrupt signal input device 905 stops outputting the interrupt signal, there is no need to worry about the same interrupt being duplicated, and if an interrupt with a higher priority occurs, the interrupt can be processed. It is for doing so.
Since the interrupt mask remains unchanged, even if the interrupt prohibition is canceled, an interrupt with a low priority does not occur.

S53において、実行装置901が、それぞれの割込に対応する処理を行う。   In S53, the execution device 901 performs processing corresponding to each interrupt.

S54において、割込処理の結果を待っていた通常処理タスクを起床する(タスクのウェイクアップ)。
割込処理の結果を待っていた通常処理タスクとは、その割込処理の結果がないと、実行可能な状態とならないホストタスク110である。実行可能判断部331が、そのホストタスク110を実行可能な状態にないものとして、実行可能タスクリストに登録しているので、これを実行可能な状態であるという内容に書き換える。
In S54, the normal processing task waiting for the result of the interrupt processing is woken up (task wakeup).
The normal processing task waiting for the result of the interrupt processing is the host task 110 that cannot be executed without the result of the interrupt processing. Since the executable determination unit 331 registers the host task 110 in the executable task list as not being in an executable state, the host task 110 is rewritten to be in an executable state.

割込処理終了後、実行可能判断部331が、割込処理の結果を待っていた通常処理タスクを実行可能と判断する(S21)ので、実行可能なホストタスク110のなかに、もっと優先順位の高いホストタスク110がなければ、タスク選択部332が、そのタスクを選択し(S23)、タスクが切り替わる(S24)。   After completion of the interrupt process, the executable determination unit 331 determines that the normal process task waiting for the result of the interrupt process can be executed (S21). If there is no high host task 110, the task selection unit 332 selects the task (S23), and the task is switched (S24).

なお、ゲストOS200の管理下にある割込処理プログラム671〜672の処理の流れも、これと同様であるので、ここでは説明を省略する。ただし、ゲストOS200の管理下にある割込処理プログラム671〜672が起床する通常処理タスクは、ゲストOS200の管理下にあるゲストタスク210なので、実行可能などうかの判断等はすべてゲストOS200が行い、実行可能判断部331等は関与しない。   Note that the processing flow of the interrupt processing programs 671 to 672 under the management of the guest OS 200 is the same as that described above, and a description thereof will be omitted here. However, the normal processing task that the interrupt processing program 671 to 672 under the management of the guest OS 200 wakes up is the guest task 210 under the management of the guest OS 200. The executable determination unit 331 or the like is not involved.

図13は、この実施の形態において、割込信号入力時に実行される切替プログラム669のOS切替処理の流れの一例を示すフローチャート図である。
切替プログラム669は、実行装置901がゲストOS200以外のホストタスク110を実行中に、ゲストOS200で処理すべき割込が発生した場合に実行される。
FIG. 13 is a flowchart showing an example of the flow of OS switching processing of the switching program 669 executed when an interrupt signal is input in this embodiment.
The switching program 669 is executed when an interrupt to be processed by the guest OS 200 occurs while the execution device 901 executes the host task 110 other than the guest OS 200.

S61において、切替プログラム669がゲストOS200を起床する。
すなわち、実行可能判断部331が、ゲストOS200を実行可能な状態にあるものとして、実行可能タスクリストに登録する。
In S61, the switching program 669 wakes up the guest OS 200.
That is, the executable determination unit 331 registers the guest OS 200 in the executable task list as being executable.

ゲストOS200よりも優先順位の高いホストタスク110を実行中は、ゲストOS200で処理すべき割込は、割込マスクにより禁止されているため、発生しない。
したがって、切替プログラム669が実行されるのは、ゲストOS200よりも優先順位の低いホストタスク110を実行している場合(またはホストOS100がアイドル状態である場合)である。
While the host task 110 having a higher priority than the guest OS 200 is being executed, an interrupt to be processed by the guest OS 200 is prohibited because of the interrupt mask, and thus does not occur.
Therefore, the switching program 669 is executed when the host task 110 having a lower priority than the guest OS 200 is executed (or when the host OS 100 is in an idle state).

したがって、割込処理終了後、ゲストOS200が、実行可能なホストタスク110のなかで、もっとも優先順位の高いホストタスク110となり、タスクが切り替わる(S24)。   Therefore, after the interrupt process is completed, the guest OS 200 becomes the host task 110 having the highest priority among the executable host tasks 110, and the task is switched (S24).

タスク切替処理において、OS切替がある(S33)ので、割込ベクタをゲストOS200のものに書き換える(S36)。また、ゲストOS200実行時のコンテキストが復元される(S37)。
その後、割込禁止が解除される(S38)。
Since there is OS switching in the task switching process (S33), the interrupt vector is rewritten to that of the guest OS 200 (S36). Further, the context at the time of executing the guest OS 200 is restored (S37).
Thereafter, the prohibition of interrupt is released (S38).

この時点で、割込信号入力装置905は、割込信号の出力を停止していない(S51に相当する処理をしていない)ので、再び割込が発生する。   At this time, the interrupt signal input device 905 has not stopped outputting the interrupt signal (the processing corresponding to S51 is not performed), so that the interrupt occurs again.

割込信号自体は同じであるが、割込ベクタが書き換わっているので、実行されるプログラムは、切替プログラム669ではなく、割込処理プログラム671〜672である。また、ゲストOS200実行時のコンテキストが復元されているので、支障なく、割込の処理が行われる。   Although the interrupt signal itself is the same, but the interrupt vector is rewritten, the program to be executed is not the switching program 669 but the interrupt processing programs 671 to 672. Further, since the context at the time of execution of the guest OS 200 is restored, the interrupt process is performed without any trouble.

また、ゲストOS200内で、割込マスクを書き換えている場合には、割込マスクが復元されて(S37)から、割込禁止が解除される(S38)ので、発生した割込が、ゲストOS200がマスクしたい割込である場合には、割込処理は開始されない。   Further, when the interrupt mask is rewritten in the guest OS 200, the interrupt mask is restored (S37), and then the prohibition of interrupt is released (S38). If is an interrupt to be masked, the interrupt process is not started.

したがって、いずれの場合も、ゲストOS200が期待する通りの動作が保証される。   Therefore, in any case, the operation as expected by the guest OS 200 is guaranteed.

図14は、この実施の形態において、割込信号入力時における切替プログラム679のOS切替処理の流れの一例を示すフローチャート図である。
切替プログラム679は、実行装置901がゲストOS200を実行中に、ホストOS100が処理すべき割込が発生した場合に実行される。
FIG. 14 is a flowchart showing an example of the flow of OS switching processing of the switching program 679 when an interrupt signal is input in this embodiment.
The switching program 679 is executed when an interrupt to be processed by the host OS 100 occurs while the execution device 901 is executing the guest OS 200.

S71において、切替プログラム679がOS切替用タスク107を起床する。
すなわち、実行可能判断部331が、OS切替用タスク107を実行可能な状態にあるものとして、実行可能タスクリストに登録する。
ここで、切替プログラム679は、ゲストOS200の管理下にあるので、ゲストタスク210を起床することはできるが、ホストタスク110であるOS切替用タスク107を直接、起床することはできない。
しかし、ゲストOS200自体が、ホストOS100の管理下にあるホストタスク110の一つであるため、ゲストOS200からOS切替用タスク107を起床することができる。
In S71, the switching program 679 wakes up the OS switching task 107.
That is, the executable determination unit 331 registers the OS switching task 107 in the executable task list as being executable.
Here, since the switching program 679 is under the management of the guest OS 200, the guest task 210 can be woken up, but the OS switching task 107, which is the host task 110, cannot be woken up directly.
However, since the guest OS 200 itself is one of the host tasks 110 under the management of the host OS 100, the OS switching task 107 can be woken up from the guest OS 200.

ゲストOS200を実行中は、ホストOS100で処理すべき割込のうち、ゲストOS200よりも優先順位の低い割込は、割込マスクにより禁止されているため、発生しない。
したがって、切替プログラム679が実行されるのは、ホストOS100で処理すべき割込のうち、ゲストOS200よりも優先順位の高い割込が発生した場合に限られる。
While the guest OS 200 is being executed, among the interrupts to be processed by the host OS 100, interrupts having a lower priority than the guest OS 200 are prohibited because they are prohibited by the interrupt mask.
Therefore, the switching program 679 is executed only when an interrupt having a higher priority than the guest OS 200 occurs among interrupts to be processed by the host OS 100.

また、ゲストOS200を実行中であるので、ゲストOS200よりも優先順位の高いホストタスク110のなかに、実行可能な状態にあるものは存在しない。   Further, since the guest OS 200 is being executed, none of the host tasks 110 having higher priority than the guest OS 200 are in an executable state.

OS切替用タスク107は、ゲストOS200よりも優先順位を高く設定してあるので、割込処理終了後、OS切替用タスク107が、実行可能なホストタスク110のなかで、もっとも優先順位の高いホストタスク110となり、タスクが切り替わる(S24)。   Since the OS switching task 107 has a higher priority than the guest OS 200, the host having the highest priority among the host tasks 110 that can be executed by the OS switching task 107 after the interruption process is completed. Task 110 is reached and the task is switched (S24).

タスク切替処理において、OS切替がある(S33)ので、割込ベクタをホストOS100のものに書き換える(S36)。
その後、割込禁止が解除される。(S38)。
Since there is OS switching in the task switching process (S33), the interrupt vector is rewritten to that of the host OS 100 (S36).
Thereafter, the interrupt prohibition is released. (S38).

この時点で、割込信号入力装置905は、割込信号の出力を停止していない(S51に相当する処理をしていない)ので、再び割込が発生する。   At this time, the interrupt signal input device 905 has not stopped outputting the interrupt signal (the processing corresponding to S51 is not performed), so that the interrupt occurs again.

割込信号自体は同じであるが、割込ベクタが書き換わっているので、実行されるプログラムは、切替プログラム679ではなく、割込処理プログラム661〜662である。したがって、支障なく、割込の処理が行われる。   Although the interrupt signal itself is the same, the interrupt vector is rewritten, so the program to be executed is not the switching program 679 but the interrupt processing programs 661 to 662. Therefore, the interruption process is performed without any trouble.

また、ゲストOS200内で、割込マスクを書き換えていても、ホストOS100が処理すべき割込のうち、ゲストOS200よりも優先順位の高い割込は制御対象ではなく、優先順位の高い割込を許可する範囲内でしか、割込マスクを書き換えないので、支障なく、優先順位の高い割込の処理が行われる。
逆に、ゲストOS200内では、ホストOS100が処理すべき割込のうち、ゲストOS200よりも優先順位の低い割込も制御対象ではなく、優先順位の低い割込を禁止する範囲内でしか、割込マスクを書き換えないので、優先順位の低い割込が発生することはない。
In addition, even if the interrupt mask is rewritten in the guest OS 200, interrupts having higher priority than the guest OS 200 among interrupts to be processed by the host OS 100 are not controlled, and interrupts with higher priority are selected. Since the interrupt mask is rewritten only within the permitted range, interrupt processing with a high priority is performed without any trouble.
On the other hand, in the guest OS 200, among the interrupts to be processed by the host OS 100, interrupts having a lower priority than the guest OS 200 are not controlled, and only interrupts within a range in which interrupts having a lower priority are prohibited. Since the interrupt mask is not rewritten, an interrupt with a low priority does not occur.

したがって、どの割込信号が発生した場合でも、常に、正常に割込処理をすることができる。   Therefore, even if any interrupt signal is generated, the interrupt process can always be performed normally.

図15は、この実施の形態におけるOS切替用タスク107のOS切替処理の流れの一例を示すフローチャート図である。
OS切替用タスク107は、OS切替を発生させるためのダミーであり、特に処理すべき内容はない。
FIG. 15 is a flowchart showing an example of the OS switching processing flow of the OS switching task 107 in this embodiment.
The OS switching task 107 is a dummy for causing OS switching, and there is no content to be processed.

OS切替用タスク107は、ゲストOS200の起動と同時に起動される。   The OS switching task 107 is activated simultaneously with the activation of the guest OS 200.

S76において、OS切替用タスク107は、休眠処理をする(タスクのスリープ)。
休眠処理とは、なんらかの事象が発生を待つため、実行可能な状態でないタスクが、実行可能でなくなったことをOSに通知し、実行装置901が他のタスクを実行できるようにすることである。
休眠処理は、ホストタスクが実行可能な状態にないことを通知する処理の一例である。
In step S76, the OS switching task 107 performs a sleep process (task sleep).
The sleep process is waiting for the occurrence of some event, so that a task that is not in an executable state is notified to the OS that the execution device 901 can execute another task.
The sleep process is an example of a process for notifying that the host task is not in an executable state.

OS切替用タスク107は、もともと処理すべき内容がないタスクであるため、起動後すぐに休眠する。
その後、切替プログラム679により起床させられる。OS切替用タスク107が起床したことでOS切替が発生し、すでに目的を達したので、OS切替用タスク107が処理すべき内容はない。
そこで、S76に戻り、OS切替用タスク107は、再び休眠する。
Since the OS switching task 107 originally has no contents to be processed, the OS switching task 107 sleeps immediately after activation.
Thereafter, the user is woken up by the switching program 679. Since the OS switching task 107 has been woken up, OS switching has occurred and the purpose has already been achieved, so there is no content to be processed by the OS switching task 107.
Therefore, the process returns to S76, and the OS switching task 107 again sleeps.

図16は、この実施の形態におけるゲストOS200のスケジュール処理の流れの一例を示すフローチャート図である。
なお、ゲストOS200は、既存のOSをわずかな修正で利用するものであるため、多くの部分が既存のOSと同一である。
したがって、ゲストOS200は、もととなる既存のOSと同様のブロック構成を有するものであって、様々な構成があり得る。
ここでは一例として、ゲストOS200が、図3で説明したホストOS100と同様のブロック構成を有するものとして説明する。
FIG. 16 is a flowchart showing an example of a schedule process flow of the guest OS 200 in this embodiment.
Since the guest OS 200 uses the existing OS with slight modifications, many parts are the same as the existing OS.
Therefore, the guest OS 200 has the same block configuration as that of the existing existing OS, and can have various configurations.
Here, as an example, the guest OS 200 will be described as having the same block configuration as the host OS 100 described with reference to FIG.

S81において、ゲストOS200のスケジュール部が、ゲストタスク210が実行可能な状態であるかを判断する。
S82において、実行可能なゲストタスク210がある場合には、S83へ進む。実行可能なゲストタスク210がない場合には、S86へ進む。
In S81, the schedule part of the guest OS 200 determines whether or not the guest task 210 can be executed.
If there is an executable guest task 210 in S82, the process proceeds to S83. If there is no executable guest task 210, the process proceeds to S86.

S83において、ゲストOS200のスケジュール部が、実行可能なゲストタスク210のなかから、実行するゲストタスク210を選択する。選択の方法は、ホストOS100と同様、優先順位によるものであってもよいし、実行時間が平等となるように選択してもよい。   In S83, the schedule part of the guest OS 200 selects the guest task 210 to be executed from the executable guest tasks 210. As with the host OS 100, the selection method may be based on priority, or may be selected so that the execution times are equal.

S84において、ゲストOS200のディスパッチ部が、それまで実行していたゲストタスク210のコンテキストを保存し、選択したゲストタスク210のコンテキストを復元する。   In S84, the dispatch unit of the guest OS 200 saves the context of the guest task 210 that has been executed so far, and restores the context of the selected guest task 210.

S85において、実行装置901が、選択したゲストタスク210を実行する。   In S85, the execution device 901 executes the selected guest task 210.

その後、実行したゲストタスク210が、終了・休眠などにより中断した場合、S81へ戻る。   After that, when the executed guest task 210 is interrupted due to termination or sleep, the process returns to S81.

S86において、ゲストOS200は、実行可能なゲストタスク210がないので、休眠処理をする。
すなわち、いずれかのゲストタスク210が実行可能な状態となるまで、ゲストOS200自体が実行可能な状態でないものとして、ホストOS100に通知し、実行装置901が他のホストタスク110を実行できるようにする。
In S86, the guest OS 200 performs a sleep process because there is no guest task 210 that can be executed.
That is, until one of the guest tasks 210 becomes executable, the host OS 100 is notified that the guest OS 200 itself is not in an executable state, so that the execution device 901 can execute another host task 110. .

この処理により、ゲストOS200よりも優先順位の低いホストタスク110も、実行の機会を得られるようになる。   By this processing, the host task 110 having a lower priority than the guest OS 200 can also get an opportunity to execute.

この実施の形態における並列処理装置によれば、ゲストOS200の実行中と、それ以外の場合とにおいて、異なる割込ベクタを割込ベクタ記憶部311に記憶させるので、割込を処理すべきOSと異なるOSを実行中に、割込が発生した場合であっても、異なるOS下で割込処理が実行されることがなく、割込の発生による処理の混乱を回避することができるという効果を奏する。   According to the parallel processing device in this embodiment, different interrupt vectors are stored in the interrupt vector storage unit 311 during execution of the guest OS 200 and in other cases. Even if an interrupt occurs while executing a different OS, the interrupt process is not executed under the different OS, and the confusion of the process due to the occurrence of the interrupt can be avoided. Play.

この実施の形態における並列処理装置によれば、割込を処理すべきOSと異なるOSを実行中に、割込が発生した場合、OS切替処理を行い、その後再び割込が発生するので、割込を処理すべきOSが適切に割込を処理することができるという効果を奏する。   According to the parallel processing device of this embodiment, when an interrupt occurs while executing an OS different from the OS that should process the interrupt, the OS switching process is performed, and then the interrupt occurs again. There is an effect that the OS that should process the interrupt can appropriately process the interrupt.

この実施の形態における並列処理装置によれば、ゲストOS200を実行中でない場合に、ゲストOS200で処理すべき割込が発生した場合に、ゲストOS200を起床させ、OSを切り替えるので、適切なOSのもとで、割込処理を実行することができるという効果を奏する。   According to the parallel processing device in this embodiment, when the guest OS 200 is not being executed and the interrupt to be processed by the guest OS 200 occurs, the guest OS 200 is woken up and the OS is switched. Originally, the effect that an interruption process can be performed is produced.

この実施の形態における並列処理装置によれば、ゲストOS200を実行中に、ホストOS100で処理すべき割込が発生した場合に、ゲストOS200の実行を中断し、OSを切り替えるので、適切なOSのもとで、割込処理を実行することができるという効果を奏する。   According to the parallel processing device in this embodiment, when an interrupt to be processed by the host OS 100 occurs while the guest OS 200 is being executed, the execution of the guest OS 200 is interrupted and the OS is switched. Originally, the effect that an interruption process can be performed is produced.

この実施の形態における並列処理装置によれば、簡単なOS切替用タスク107を起動しておくだけで、OS切替処理ができるので、既存のOSをホストOS100、ゲストOS200として利用する際に加えるべき変更が少なく、既存のOSを有効に利用することができ、開発コストを抑えることができるという効果を奏する。   According to the parallel processing device of this embodiment, OS switching processing can be performed by simply starting the OS switching task 107, so that it should be added when the existing OS is used as the host OS 100 and the guest OS 200. There are few changes, the existing OS can be used effectively, and the development cost can be reduced.

この実施の形態における並列処理装置によれば、割込処理を開始するまで、割込信号入力装置905が割込信号を出力するので、OS切替処理後、再び割込が発生し、割込を処理すべき割込処理プログラムを支障なく実行できるという効果を奏する。   According to the parallel processing device in this embodiment, the interrupt signal input device 905 outputs an interrupt signal until the interrupt processing is started. Therefore, an interrupt is generated again after the OS switching processing, and the interrupt is interrupted. There is an effect that the interrupt processing program to be processed can be executed without any trouble.

この実施の形態における並列処理装置によれば、割込を処理すべきOSと異なるOSを実行中に割込が発生した場合に実行される切替プログラム669,679が、割込停止命令を含まないので、OS切替後、再び割込が発生し、割込を処理すべき割込処理プログラムを支障なく実行できるという効果を奏する。   According to the parallel processing device in this embodiment, the switching programs 669 and 679 that are executed when an interrupt occurs while an OS different from the OS that should process the interrupt is not included in the interrupt stop instruction. Therefore, an interrupt occurs again after OS switching, and an interrupt processing program that should process the interrupt can be executed without any trouble.

この実施の形態における並列処理装置によれば、ホストタスク110の優先順位に基づいて、実行するホストタスク110を選択するので、優先順位の高いタスクが実行可能であれば、優先順位の低いタスクが実行されることはなく、優先順位の低いタスクが待っている割込処理の実行を延期することができるという効果を奏する。   According to the parallel processing device of this embodiment, the host task 110 to be executed is selected based on the priority order of the host task 110. Therefore, if a task with a high priority can be executed, a task with a low priority is selected. It is not executed, and there is an effect that it is possible to postpone the execution of the interrupt process waiting for a task with a low priority.

この実施の形態における並列処理装置によれば、割込処理の結果を待っているタスクの優先順位に基づいて、割込処理に優先順位を設け、割込処理の優先順位に基づいて、割込のマスク制御を行うので、優先順位の高い処理の実行中は、優先順位の低い割込が発生せず、割込の衝突を回避することができるという効果を奏する。   According to the parallel processing device of this embodiment, priority is given to the interrupt processing based on the priority of the task waiting for the result of the interrupt processing, and the interrupt is processed based on the priority of the interrupt processing. Since the mask control is performed, an interrupt having a low priority is not generated during execution of a process having a high priority, and an interrupt collision can be avoided.

この実施の形態における並列処理装置によれば、ゲストOS200が行う割込制御が、ホストOS100が処理すべき割込に影響を与えることがないので、既存のOSをゲストOS200として利用する際に加えるべき変更が少なく、既存のOSを有効に利用することができ、開発コストを抑えることができるという効果を奏する。   According to the parallel processing device in this embodiment, the interrupt control performed by the guest OS 200 does not affect the interrupt to be processed by the host OS 100, and therefore is added when the existing OS is used as the guest OS 200. There are few changes to be made, the existing OS can be used effectively, and the development cost can be reduced.

この実施の形態における並列処理装置によれば、ホストOS100が処理すべき割込を、ゲストOS200が意識する必要がないので、既存のOSをゲストOS200として利用する際に加えるべき変更が少なく、既存のOSを有効に利用することができ、開発コストを抑えることができるという効果を奏する。   According to the parallel processing device in this embodiment, since the guest OS 200 does not need to be aware of the interrupt to be processed by the host OS 100, there are few changes to be made when using the existing OS as the guest OS 200, and the existing OS The OS can be used effectively, and the development cost can be reduced.

この実施の形態における並列処理装置によれば、ゲストOS200が制御する割込の範囲を限定するので、ゲストOS200による割込制御と、ホストOS100による割込制御とが矛盾することなく、並存できるという効果を奏する。   According to the parallel processing device in this embodiment, since the range of interrupts controlled by the guest OS 200 is limited, the interrupt control by the guest OS 200 and the interrupt control by the host OS 100 can coexist without contradiction. There is an effect.

この実施の形態における並列処理装置によれば、割込マスクにより、ゲストOS200よりも優先順位の高いホストタスク110の実行中は、ゲストOS200で処理すべき割込が発生しないので、ホストOS100の処理に、ゲストOS200で処理すべき割込の影響が出ないという効果を奏する。   According to the parallel processing device in this embodiment, the interrupt mask to be processed by the guest OS 200 does not occur during execution of the host task 110 having a higher priority than the guest OS 200 due to the interrupt mask. In addition, there is an effect that there is no influence of an interrupt to be processed by the guest OS 200.

この実施の形態における並列処理装置によれば、割込マスクにより、ゲストOS200の実行中は、ゲストOS200よりも優先順位の低い割込が発生せず、ゲストOS200の処理に、ホストOS100で処理すべき優先順位の低い割込の影響が出ないという効果を奏する。   According to the parallel processing device of this embodiment, due to the interrupt mask, interrupts having a lower priority than the guest OS 200 do not occur during execution of the guest OS 200, and the host OS 100 performs processing for the guest OS 200. There is an effect that there is no influence of an interrupt with a low priority.

この実施の形態における並列処理装置によれば、ゲストOS200上に実行可能なゲストタスク210がない場合に、ゲストOS200自体が休眠状態となるので、ゲストOS200よりも優先順位の低いタスクにも、実行の機会が与えられるという効果を奏する。   According to the parallel processing device of this embodiment, when there is no guest task 210 that can be executed on the guest OS 200, the guest OS 200 itself is in a dormant state. It has the effect of being given the opportunity.

この実施の形態における並列処理装置によれば、ゲストOS200上に実行可能なゲストタスク210がない場合に、ゲストOS200が実行可能な状態でないことをホストOS100に通知する処理を実行するので、ゲストOS200が休眠状態であることを、ホストOS100が判別できるという効果を奏する。   According to the parallel processing device in this embodiment, when there is no guest task 210 that can be executed on the guest OS 200, the guest OS 200 is notified that the guest OS 200 is not in an executable state. This is advantageous in that the host OS 100 can determine that is in a dormant state.

この実施の形態における並列処理装置によれば、ゲストOS200が休眠中に、ゲストOS200が処理すべき割込が発生した場合に、ゲストOS200を起床するので、割込を適切に処理できるという効果を奏する。   According to the parallel processing device in this embodiment, the guest OS 200 is awakened when an interrupt to be processed by the guest OS 200 occurs while the guest OS 200 is sleeping, so that the interrupt can be appropriately processed. Play.

この実施の形態における並列処理方法によれば、ゲストOS200の実行中と、それ以外の場合とにおいて、異なる割込ベクタを割込ベクタ記憶部311に記憶させるので、割込を処理すべきOSと異なるOSを実行中に、割込が発生した場合であっても、異なるOS下で割込処理が実行されることがなく、割込の発生による処理の混乱を回避することができるという効果を奏する。   According to the parallel processing method in this embodiment, different interrupt vectors are stored in the interrupt vector storage unit 311 during execution of the guest OS 200 and in other cases. Even if an interrupt occurs while executing a different OS, the interrupt process is not executed under the different OS, and the confusion of the process due to the occurrence of the interrupt can be avoided. Play.

この実施の形態における並列処理プログラムによれば、ゲストOS200の実行中と、それ以外の場合とにおいて、異なる割込ベクタを割込ベクタ記憶部311に記憶させるので、割込を処理すべきOSと異なるOSを実行中に、割込が発生した場合であっても、異なるOS下で割込処理が実行されることがなく、割込の発生による処理の混乱を回避することができる並列処理装置900として、コンピュータを機能させることができるという効果を奏する。   According to the parallel processing program in this embodiment, different interrupt vectors are stored in the interrupt vector storage unit 311 during execution of the guest OS 200 and in other cases. A parallel processing device capable of avoiding confusion in processing due to the occurrence of an interrupt, even if an interrupt occurs during execution of a different OS, without interrupt processing being performed under the different OS As 900, there is an effect that the computer can function.

以上のように、ゲストOS200のスケジュール部が、実行可能なゲストタスク210がない場合(アイドル時)に、ホストOS100上の休眠処理(スリープ)を行い、ゲストOS200で処理すべき割込が入ったら、ゲストOS200を、ホストOS100が起床させる処理(ウェイクアップ)を行うので、ゲストOSの優先順位を一番下以外にすることが可能となる。   As described above, when there is no guest task 210 that can be executed by the scheduling unit of the guest OS 200 (when idle), the sleep processing on the host OS 100 is performed and an interrupt to be processed by the guest OS 200 is input. Since the guest OS 200 performs processing (wake-up) for the host OS 100 to wake up, the priority of the guest OS can be other than the lowest.

また、ゲストOS200の中で割込マスクを行う場合は、マスクレベルをゲストOS200で扱う割込の優先順位以下としているため、優先順位の高いホストタスク110の処理が割込マスクにより遅延されることがない。
また、ゲストOS200より高い優先順位のホストタスク110の実行中は、優先順位の低い割込処理をマスクするため、優先順位の高いホストタスク110の処理が優先順位の低い割込処理の影響を受けない。
In addition, when interrupt masking is performed in the guest OS 200, the mask level is set to be equal to or lower than the priority of interrupts handled by the guest OS 200, so that the processing of the host task 110 having a higher priority is delayed by the interrupt mask. There is no.
In addition, during execution of the host task 110 with a higher priority than the guest OS 200, the interrupt processing with a lower priority is masked, so that the processing of the host task 110 with a higher priority is affected by the interrupt processing with a lower priority. Absent.

これにより、ホストOS100としてリアルタイムOSを用い、ゲストOS200として非リアルタイムOSを用いた場合であっても、割込の整合性を保つことができ、リアルタイムOSのリアルタイム性を確保することができる。
また、非リアルタイムOSの割込処理が、時間制約を考慮していない場合であっても、割込の整合性が保たれているので、リアルタイムOSのリアルタイム性を確保することができる。
As a result, even when a real-time OS is used as the host OS 100 and a non-real-time OS is used as the guest OS 200, interrupt consistency can be maintained and the real-time property of the real-time OS can be ensured.
Further, even when the interrupt processing of the non-real-time OS does not consider the time constraint, since the consistency of the interrupt is maintained, the real-time property of the real-time OS can be ensured.

また、ゲストOS200が管理するゲストタスク210がすべて実行不可能な状態である場合に、ゲストOS200が休眠処理(スリープ)を行うので、ゲストOS200よりも優先順位が低いホストタスク110にも実行の機会が与えられる。したがって、ゲストOS200を一番低い優先順位とする必要がない。
これにより、ホストタスク110によって実行装置901を占有されて、ゲストタスク210が処理すべき割込に対する処理が実行できないことによって、例えば、タイマー割込による時間管理において、時間が不正になったり、バッファを持った入出力デバイスのバッファがオーバーフローしたりアンダーフローしたりするといった障害が発生することを回避することができる。
Further, when all the guest tasks 210 managed by the guest OS 200 are in an inexecutable state, the guest OS 200 performs a sleep process (sleep), so that the host task 110 having a lower priority than the guest OS 200 has an opportunity to execute it. Is given. Therefore, the guest OS 200 does not need to have the lowest priority.
As a result, the execution device 901 is occupied by the host task 110 and the processing for the interrupt to be processed by the guest task 210 cannot be executed. It is possible to avoid the occurrence of a failure such as an overflow or underflow of the buffer of the input / output device having the.

実施の形態2.
実施の形態2を、図17〜図21を用いて説明する。
この実施の形態における並列処理装置900のハードウェア構成は、実施の形態1で説明したものと同様なので、ここでは説明を省略する。
Embodiment 2. FIG.
The second embodiment will be described with reference to FIGS.
Since the hardware configuration of the parallel processing apparatus 900 in this embodiment is the same as that described in the first embodiment, the description thereof is omitted here.

図17は、この実施の形態における並列処理装置900の機能ブロックの構成の一例を示すブロック構成図である。
なお、実施の形態1で説明した機能ブロックと共通するブロックについては、共通の符号を付し、説明を省略する。
FIG. 17 is a block configuration diagram showing an example of a functional block configuration of the parallel processing device 900 according to this embodiment.
In addition, about the block which is common in the functional block demonstrated in Embodiment 1, a common code | symbol is attached | subjected and description is abbreviate | omitted.

並列処理装置900は、タスク間メッセージ処理部341、OS間同期用データ記憶部393などを有する。   The parallel processing device 900 includes an inter-task message processing unit 341, an inter-OS synchronization data storage unit 393, and the like.

タスク間メッセージ処理部341は、ホストタスク110が他のタスク(ホストタスク110またはゲストタスク210)に対して通知するメッセージを処理する。
例えば、あるホストタスク110が他のタスクに対して通知すべきメッセージを生成した場合、タスク間メッセージ処理部341が、そのメッセージを取得する。
タスク間メッセージ処理部341は、そのメッセージの通知先であるホストタスク110が、そのメッセージを待っていることにより、休眠している場合、実行可能判断部331が記憶した実行可能タスクリストを書き換えて実行可能な状態とすることにより、そのメッセージを待っていたホストタスク110を起床する。
タスク間メッセージ処理部341は、実行装置901がOS間同期処理105を実行することにより実現する。
The inter-task message processing unit 341 processes a message that the host task 110 notifies other tasks (the host task 110 or the guest task 210).
For example, when a certain host task 110 generates a message to be notified to another task, the inter-task message processing unit 341 acquires the message.
The inter-task message processing unit 341 rewrites the executable task list stored in the executable determination unit 331 when the host task 110 that is the notification destination of the message is sleeping due to waiting for the message. The host task 110 that has been waiting for the message is woken up by making it executable.
The inter-task message processing unit 341 is realized by the execution device 901 executing the inter-OS synchronization processing 105.

メッセージの通知先タスクがホストタスク110ではなく、ゲストタスク210である場合、ゲストタスク210はゲストOS200の管理下にあり、実行可能判断部331が実行可能か否かを把握していない。したがって、タスク間メッセージ処理部341は、直接、通知先のゲストタスク210を起床することはできない。   When the notification task of the message is not the host task 110 but the guest task 210, the guest task 210 is under the management of the guest OS 200, and the executable determination unit 331 does not know whether it can be executed. Therefore, the inter-task message processing unit 341 cannot wake up the guest task 210 that is the notification destination directly.

そこで、OS間同期用データを用いて、通知先のゲストタスク210を間接的に起床する。   Therefore, the guest task 210 that is the notification destination is woken up indirectly using the inter-OS synchronization data.

OS間同期用データ記憶部393は、記憶装置902を用いて、OS間同期用データを記憶する。
OS間同期用データ記憶部393は、通知先記憶部の一例である。
OS間同期用データは、異なるOSの管理下にあるタスクを起床するために用いられるデータである。
The inter-OS synchronization data storage unit 393 uses the storage device 902 to store inter-OS synchronization data.
The inter-OS synchronization data storage unit 393 is an example of a notification destination storage unit.
The inter-OS synchronization data is data used to wake up a task under the management of a different OS.

図18は、この実施の形態におけるOS間同期用データ記憶部393が記憶したOS間同期用データ400のデータ構造の一例を示す図である。
OS間同期用データ400は、ゲストOS上の同期用データ401、フラグ402を有する。OS間同期用データ400は、起動しているゲストタスク210ごとに、あるいは、メッセージの通知を待っているゲストタスク210ごとに、存在する。したがって、あるゲストタスク210に対してメッセージを通知する場合は、通知先のゲストタスク210に対応するOS間同期用データ400を用いる。
FIG. 18 is a diagram showing an example of the data structure of the inter-OS synchronization data 400 stored in the inter-OS synchronization data storage unit 393 in this embodiment.
The inter-OS synchronization data 400 includes synchronization data 401 and a flag 402 on the guest OS. The inter-OS synchronization data 400 exists for each activated guest task 210 or for each guest task 210 waiting for a message notification. Therefore, when notifying a message to a certain guest task 210, the inter-OS synchronization data 400 corresponding to the guest task 210 that is the notification destination is used.

ゲストOS上の同期用データ401は、ゲストOS200内において、ゲストタスク210同士がやり取りするメッセージである。   The synchronization data 401 on the guest OS is a message exchanged between the guest tasks 210 in the guest OS 200.

フラグ402は、ゲストタスク210がホストタスク110からのメッセージを待っているか否かを示す。
ゲストタスク210がホストタスク110からのメッセージを待つため、休眠状態になった場合に、フラグ402をセットする。
ホストタスク110からメッセージが通知され、ゲストタスク210が実行可能になった場合に、フラグ402をクリアする。
The flag 402 indicates whether the guest task 210 is waiting for a message from the host task 110.
Since the guest task 210 waits for a message from the host task 110, the flag 402 is set when the guest task 210 enters a sleep state.
When a message is notified from the host task 110 and the guest task 210 becomes executable, the flag 402 is cleared.

ゲストタスク210同士でメッセージをやり取りする場合は、ゲストOS200が、そのメッセージの通知先を把握し、ゲストタスク210を起床することができるので、フラグ402は必要ない。
しかし、ホストタスク110からゲストタスク210に対してメッセージが通知された場合、通知先のゲストタスク210をゲストOS200が把握するために、フラグ402を利用する。
When the guest task 210 exchanges messages, the guest OS 200 can grasp the notification destination of the message and wake up the guest task 210, so the flag 402 is not necessary.
However, when a message is notified from the host task 110 to the guest task 210, the flag 402 is used for the guest OS 200 to grasp the guest task 210 that is the notification destination.

なお、既存のOSを修正してゲストOS200として利用する場合には、既存のOSがタスク間通信に使用しているデータ構造を修正して、OS間同期用データ400として利用する。この場合、フラグ402を追加する修正をするだけでよいので、わずかな修正で済ませることができ、既存のOSを最大限利用できるので、開発コストを抑えることができる。   When the existing OS is modified and used as the guest OS 200, the data structure used by the existing OS for inter-task communication is modified and used as the inter-OS synchronization data 400. In this case, it is only necessary to make a correction to add the flag 402, so that a slight correction can be completed, and the existing OS can be used to the maximum, so that the development cost can be suppressed.

次に、動作について説明する。   Next, the operation will be described.

図19は、この実施の形態におけるゲストOS200のスケジュール処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で説明したゲストOS200のスケジュール処理の工程と共通する工程については、共通の符号を付し、説明を省略する。
FIG. 19 is a flowchart showing an example of a flow of schedule processing of the guest OS 200 in this embodiment.
Note that steps common to the schedule processing steps of the guest OS 200 described in the first embodiment are denoted by the same reference numerals and description thereof is omitted.

T21において、ゲストOS200のスケジュール部が、S85で実行していたゲストタスク210が実行を中断した理由を判別する。
T22において、ゲストタスク210が中断した理由が、ホストタスク110からのメッセージ待ちである場合には、T23へ進む。ホストタスク110からのメッセージ待ちでない場合には、S81へ戻る。
In T21, the schedule part of the guest OS 200 determines the reason why the guest task 210 executed in S85 interrupted execution.
If the reason why the guest task 210 is interrupted at T22 is waiting for a message from the host task 110, the process proceeds to T23. If not waiting for a message from the host task 110, the process returns to S81.

T23において、ゲストOS200のスケジュール部(OS間同期処理部)が、OS間同期用データ記憶部393が記憶したOS間同期用データ400から、メッセージ待ちのゲストタスク210についてのフラグ402を取得する。
例えば、ゲストタスク210が使用するOS間同期用データ400の識別子をゲストタスク210が指定し、OS間同期処理部が、指定された識別子によって識別されるOS間同期用データ400を、OS間同期用データ記憶部393から読み出して、フラグ402を取得する。
At T23, the schedule unit (inter-OS synchronization processing unit) of the guest OS 200 acquires the flag 402 for the guest task 210 waiting for a message from the inter-OS synchronization data 400 stored in the inter-OS synchronization data storage unit 393.
For example, the guest task 210 specifies the identifier of the OS synchronization data 400 used by the guest task 210, and the OS synchronization processing unit converts the OS synchronization data 400 identified by the specified identifier. The flag 402 is acquired by reading from the data storage unit 393.

T24において、ゲストOS200のスケジュール部(OS間同期処理部)が、T23で取得したフラグ402を、ホストタスク110からのメッセージ待ちのため休眠状態であることを示す内容に書き換えて、OS間同期用データ記憶部393に記憶させる。   At T24, the schedule unit (inter-OS synchronization processing unit) of the guest OS 200 rewrites the flag 402 acquired at T23 to a content indicating that the host task 110 is in a sleep state waiting for a message from the host task 110, and for synchronization between OSs. The data is stored in the data storage unit 393.

T25において、ゲストOS200のスケジュール部が、S85で実行を中断したメッセージ待ちのゲストタスク210を、実行可能な状態でない(休眠状態)として記憶する(ゲストOS上のタスクのスリープ)。
その後、S81へ戻る。
At T25, the scheduling unit of the guest OS 200 stores the guest task 210 waiting for the message whose execution has been suspended in S85 as not being executable (sleeping state) (task sleep on the guest OS).
Thereafter, the process returns to S81.

これにより、ホストOS100は、フラグ402を見ることによって、そのゲストタスク210がホストタスク110からのメッセージ待ちであるか否かを判別できる。   Thus, the host OS 100 can determine whether or not the guest task 210 is waiting for a message from the host task 110 by looking at the flag 402.

図20は、この実施の形態におけるスケジュール部330のスケジュール処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で説明したスケジュール部330のスケジュール処理の工程と共通する工程については、共通する符号を付し、ここでは説明を省略する。
FIG. 20 is a flowchart showing an example of the flow of schedule processing of the schedule unit 330 in this embodiment.
In addition, about the process which is common with the process of the schedule process of the schedule part 330 demonstrated in Embodiment 1, the same code | symbol is attached | subjected and description is abbreviate | omitted here.

T11において、タスク間メッセージ処理部341が、S25で実行していたホストタスク110が通知したメッセージの通知先を判別する。
T12において、S25で実行していたホストタスク110が他のタスクに対してメッセージを通知していない場合には、S21に戻る。S25で実行していたホストタスク110が他のホストタスク110に対してメッセージを通知する場合には、T13へ進む。S25で実行していたホストタスク110がゲストタスク210に対してメッセージを通知する場合には、T15へ進む。
In T11, the inter-task message processing unit 341 determines the notification destination of the message notified by the host task 110 executed in S25.
In T12, when the host task 110 executed in S25 has not sent a message to other tasks, the process returns to S21. When the host task 110 executed in S25 notifies the other host task 110 of a message, the process proceeds to T13. When the host task 110 executed in S25 notifies the guest task 210 of a message, the process proceeds to T15.

T13において、実行可能判断部331が、メッセージの通知先であるホストタスク110が、そのメッセージを待つために休眠しているか否かを判断する。そのメッセージを待っていた場合には、T14へ進む。そのメッセージを待つために休眠しているのではない場合には、S21に戻る。   In T13, the executable determination unit 331 determines whether or not the host task 110 that is the message notification destination is sleeping to wait for the message. When waiting for the message, the process proceeds to T14. If the user is not sleeping to wait for the message, the process returns to S21.

T14において、実行可能判断部331が、メッセージの通知先でるホストタスク110が実行可能な状態になったものとして、実行可能タスクリストに登録する。
その後、S21に戻る。
At T14, the executable determination unit 331 registers the host task 110, which is the message notification destination, in the executable task list as being ready for execution.
Thereafter, the process returns to S21.

T15において、タスク間メッセージ処理部341が、OS間同期用データ記憶部393が記憶したOS間同期用データから、通知先のゲストタスク210についてのフラグ402を取得する。
例えば、T23においてゲストタスク210が指定したOS間同期用データ400の識別子と同じ識別子を、ホストタスク110が指定し、タスク間メッセージ処理部341が、指定された識別子によって識別されるOS間同期用データ400を、OS間同期用データ記憶部393から読み出して、フラグ402を取得する。
At T15, the inter-task message processing unit 341 acquires the flag 402 for the guest task 210 that is the notification destination from the inter-OS synchronization data stored in the inter-OS synchronization data storage unit 393.
For example, the host task 110 designates the same identifier as the identifier of the inter-OS synchronization data 400 designated by the guest task 210 in T23, and the inter-task message processing unit 341 identifies the inter-OS synchronization identified by the designated identifier. The data 400 is read from the inter-OS synchronization data storage unit 393, and the flag 402 is acquired.

T16において、タスク間メッセージ処理部341が、T15で取得したフラグ402から、通知先のゲストタスク210が、ホストタスク110からのメッセージを待つために休眠しているか否かを判断する。ホストタスク110からのメッセージを待っていた場合には、T17へ進む。ホストタスク110からのメッセージを待つために休眠しているのではない場合には、S21に戻る。   At T16, the inter-task message processing unit 341 determines from the flag 402 acquired at T15 whether the notified guest task 210 is sleeping to wait for a message from the host task 110. When waiting for a message from the host task 110, the process proceeds to T17. If it is not sleeping to wait for a message from the host task 110, the process returns to S21.

T17において、タスク間メッセージ処理部341が、T15で取得したフラグ402を、起床要求を示す内容に書き換えて、OS間同期用データ記憶部393に記憶させる。   At T17, the inter-task message processing unit 341 rewrites the flag 402 acquired at T15 with the content indicating the wake-up request, and stores it in the inter-OS synchronization data storage unit 393.

T18において、割込信号入力装置905が割込信号を出力し、S21に戻る。
ここで割込信号入力装置905が出力する割込信号は、異なるOSのタスク間でのメッセージのやり取りが発生したことを示す信号である。
例えば、GPIO(General Purpose Input/Output:汎用入出力装置)(出力装置904)の出力線を、割込信号入力装置905に結線し、GPIOに対する出力を行うことで、割込信号を出力する。
あるいは、他の用途に使用していないDMA(Direct Memory Access)コントローラを使って、最小単位のデータをメモリ(記憶装置902)間で転送することにより、その完了を通知する割込信号を出力してもよい。
もしくは、ハードウェアを使用せず、例えば、SWI(Softwere Interupt)命令を実行することで、割込信号を出力してもよい。
At T18, the interrupt signal input device 905 outputs an interrupt signal, and the process returns to S21.
Here, the interrupt signal output from the interrupt signal input device 905 is a signal indicating that a message has been exchanged between tasks of different OSs.
For example, an output signal of a GPIO (General Purpose Input / Output: general-purpose input / output device) (output device 904) is connected to an interrupt signal input device 905 and output to GPIO is output.
Alternatively, a DMA (Direct Memory Access) controller that is not used for other purposes is used to transfer the minimum unit of data between memories (storage device 902), thereby outputting an interrupt signal that notifies the completion. May be.
Alternatively, the interrupt signal may be output by executing, for example, a SWI (Software Interrupt) instruction without using hardware.

この割込信号は、ゲストOS200で処理すべき割込を発生させるものである。したがって、この割込処理の優先順位は、ゲストOS200より高く、ゲストOS200より優先順位の高いホストタスク110より低い。
したがって、ゲストOS200より優先順位の高いホストタスク110の実行中は、割込マスクにより、この割込についての処理は行わない。これにより、無駄なOS切替等は発生しない。
This interrupt signal is for generating an interrupt to be processed by the guest OS 200. Therefore, the priority of this interrupt process is higher than that of the guest OS 200 and lower than that of the host task 110 having a higher priority than the guest OS 200.
Therefore, during the execution of the host task 110 having a higher priority than the guest OS 200, processing for this interrupt is not performed due to the interrupt mask. Thereby, useless OS switching or the like does not occur.

図21は、この実施の形態において、T18で入力した割込信号による割込を処理する割込処理プログラムのOS間通信割込処理の流れの一例を示すフローチャート図である。
OS間通信割込処理を行う割込処理プログラムは、ゲストOS200の管理下にある割込処理プログラムである。
したがって、この割込信号入力後、実施の形態1で説明したタスク切替処理、割込ベクタ書換処理などが発生する。その後、OS間通信割込処理が開始する。
FIG. 21 is a flowchart showing an example of the flow of the inter-OS communication interrupt process of the interrupt processing program for processing the interrupt by the interrupt signal input at T18 in this embodiment.
An interrupt processing program that performs inter-OS communication interrupt processing is an interrupt processing program under the management of the guest OS 200.
Therefore, after this interrupt signal is input, the task switching process, the interrupt vector rewriting process, etc. described in the first embodiment occur. Thereafter, the inter-OS communication interrupt process starts.

T31において、ゲストOS200のスケジュール部(OS間同期処理部)が、OS間同期用データ記憶部393が記憶したOS間同期用データ400を読み出し、起床要求を示すフラグ402が設定されているものを探し、メッセージの通知先であるゲストタスク210を判別する。   At T31, the schedule section (inter-OS synchronization processing section) of the guest OS 200 reads the inter-OS synchronization data 400 stored in the inter-OS synchronization data storage section 393, and the flag 402 indicating the wake-up request is set. The guest task 210 that is the message notification destination is determined.

T32において、ゲストOS200のスケジュール部(OS間同期処理部)が、T31で読み出したフラグ402をクリアして、OS間同期用データ記憶部393に記憶させる。   At T32, the schedule unit (inter-OS synchronization processing unit) of the guest OS 200 clears the flag 402 read out at T31 and stores it in the inter-OS synchronization data storage unit 393.

T33において、ゲストOS200のスケジュール部が、メッセージの通知先であるゲストタスクを起床する。   At T33, the schedule unit of the guest OS 200 wakes up the guest task that is the message notification destination.

これにより、ホストタスク110がメッセージを通知した通知先であるゲストタスク210を起床させることができる。   As a result, the guest task 210 that is the notification destination to which the host task 110 has notified the message can be woken up.

また、割込処理によって、通知先のゲストタスク210を起床させるので、ゲストOS200が他のゲストタスク210の実行中に、実行を中断していた場合であっても、ゲストOS200の実行再開時に、通知先のゲストタスク210のほうが、実行を中断していたゲストタスク210よりも優先順位が高い場合に、実行を中断していたゲストタスク210の実行を再開するのではなく、通知先のゲストタスク210の実行を、すぐに開始できる。
スケジュール部330のスケジュール処理において、T18で割込を発生させず、T17でOS間同期用データ記憶部393を書き換えるのみとして、ゲストOS200が実行を再開した場合、実行を中断していたゲストタスク210の実行を再開する。割込が発生しないので、通知先のゲストタスク210のほうが優先順位が高い場合であっても、実行を中断していたゲストタスク210の処理が一段落するまでは、通知先のゲストタスク210が起床されない。
T18で割込信号を発生させることにより、そのような処理の遅延が生じないようにすることができる。
In addition, since the guest task 210 to be notified is woken up by the interrupt process, even when the guest OS 200 is interrupted while the other guest task 210 is executing, when the execution of the guest OS 200 is resumed, When the priority of the notification destination guest task 210 is higher than the priority of the guest task 210 whose execution has been interrupted, the notification of the guest task 210 whose execution has been interrupted is not resumed. The execution of 210 can begin immediately.
In the schedule processing of the schedule unit 330, when the guest OS 200 resumes execution without generating an interrupt at T18 and only rewriting the inter-OS synchronization data storage unit 393 at T17, the guest task 210 that has suspended execution Resume execution. Since no interrupt occurs, even if the notification destination guest task 210 has a higher priority, the notification destination guest task 210 wakes up until the processing of the guest task 210 that has been suspended is completed. Not.
By generating an interrupt signal at T18, such processing delay can be prevented.

この実施の形態における並列処理装置によれば、ホストタスク110がゲストタスク210に対して通知するメッセージを生成した場合に、割込信号入力装置905が割込信号を出力するので、メッセージの通知を待っていたゲストタスク210の処理が遅延することがないという効果を奏する。   According to the parallel processing device in this embodiment, when the host task 110 generates a message to be notified to the guest task 210, the interrupt signal input device 905 outputs an interrupt signal. There is an effect that the processing of the waiting guest task 210 is not delayed.

この実施の形態における並列処理装置によれば、既存のOSがタスク間通信のために有しているデータ構造をわずかに修正するだけで、OS間同期用データ400として利用できるので、既存のOSをゲストOS200として利用する際に必要な修正点が少なく、開発コストを抑えることができるという効果を奏する。   According to the parallel processing device in this embodiment, the existing OS can be used as the inter-OS synchronization data 400 by slightly modifying the data structure that the existing OS has for inter-task communication. There are few correction points required when using as a guest OS 200, and the development cost can be suppressed.

この実施の形態における並列処理装置によれば、割込信号により起動されたゲストOS200の割込処理プログラムにおいて、OS間同期用データ400に基づいて、メッセージの通知先であるゲストタスク210を判別する処理を行うので、メッセージの通知を待っていたゲストタスク210を起床することができるという効果を奏する。   According to the parallel processing device in this embodiment, in the interrupt processing program of the guest OS 200 activated by the interrupt signal, the guest task 210 that is the message notification destination is determined based on the inter-OS synchronization data 400. Since the process is performed, the guest task 210 waiting for the message notification can be woken up.

なお、ゲストタスク210がホストタスク110に対してメッセージを通知した場合には、ゲストOS200がホストOS100の管理下にあるホストタスク110の一つなので、ゲストOS200からホストOS100に対して、通知先のホストタスク110の起床を要求することができる。   When the guest task 210 notifies the host task 110 of a message, since the guest OS 200 is one of the host tasks 110 under the control of the host OS 100, the guest OS 200 notifies the host OS 100 of the notification destination. The wake-up of the host task 110 can be requested.

以上のように、ホストOS100上のタスクから割込を入れ、ゲストOS200上の割込処理の中でゲストタスク210を起床するので、ホストタスク110からゲストタスク210を起床することができる。   As described above, an interrupt is entered from a task on the host OS 100, and the guest task 210 is woken up in the interrupt process on the guest OS 200. Therefore, the guest task 210 can be woken up from the host task 110.

これにより、ゲストOS200側で、データの到着をポーリングする必要がないので、ポーリング処理によるオーバーヘッドがなく、また、次のポーリングのタイミングまで処理が遅延することもない。   Thereby, since it is not necessary to poll the arrival of data on the guest OS 200 side, there is no overhead due to the polling process, and the process is not delayed until the next polling timing.

実施の形態3.
実施の形態3を、図22〜図26を用いて説明する。
この実施の形態における並列処理装置900のハードウェア構成は、実施の形態1で説明したものと同様であるので、ここでは説明を省略する。
Embodiment 3 FIG.
A third embodiment will be described with reference to FIGS.
Since the hardware configuration of the parallel processing apparatus 900 in this embodiment is the same as that described in the first embodiment, description thereof is omitted here.

図22は、この実施の形態における並列処理装置900において実行されるプログラム(タスク)の関係の一例を示す概念図である。
なお、実施の形態1で説明したプログラムまたはデータと共通するプログラムまたはデータについては、同一の符号を付し、ここでは説明を省略する。
FIG. 22 is a conceptual diagram showing an example of the relationship of programs (tasks) executed in the parallel processing device 900 in this embodiment.
Note that programs or data that are the same as the programs or data described in Embodiment 1 are assigned the same reference numerals, and descriptions thereof are omitted here.

ホストOS100は、ゲストOS優先度情報151を保有する。
ゲストOS優先度情報151は、ゲストOS200の優先度をどのように変化させるかについての情報である。
The host OS 100 has guest OS priority information 151.
The guest OS priority information 151 is information on how to change the priority of the guest OS 200.

ホストOS100が管理するホストタスク110の一つとして、優先度制御タスク109がある。
優先度制御タスク109は、ゲストOSの優先度を変化させる処理を行うプログラムである。
One of the host tasks 110 managed by the host OS 100 is a priority control task 109.
The priority control task 109 is a program that performs processing for changing the priority of the guest OS.

図23は、この実施の形態における並列処理装置900の機能ブロックの構成の一例を示すブロック構成図である。
なお、実行の形態1で説明したブロックと共通する機能ブロックについては、同一の符号を付し、ここでは説明を省略する。
FIG. 23 is a block configuration diagram showing an example of a functional block configuration of the parallel processing device 900 according to this embodiment.
Note that functional blocks that are common to the blocks described in the first embodiment are given the same reference numerals, and description thereof is omitted here.

並列処理装置900は、ゲストOS優先度情報記憶部394、優先度書換部351などを有する。   The parallel processing device 900 includes a guest OS priority information storage unit 394, a priority rewriting unit 351, and the like.

ゲストOS優先度情報記憶部394は、ゲストOS優先度情報151を記憶装置を用いて記憶する。   The guest OS priority information storage unit 394 stores guest OS priority information 151 using a storage device.

優先度書換部351は、ゲストOS優先度情報記憶部394が記憶したゲストOS優先度情報に基づいて、優先度記憶部391が記憶したゲストOS200の優先度を書き換える。このとき、時計装置906が測定した経過時間によって、ゲストOS200の優先度を変化させる。
優先度書換部351は、実行装置901が優先度制御タスク109を実行することにより実現する。
The priority rewriting unit 351 rewrites the priority of the guest OS 200 stored in the priority storage unit 391 based on the guest OS priority information stored in the guest OS priority information storage unit 394. At this time, the priority of the guest OS 200 is changed according to the elapsed time measured by the clock device 906.
The priority rewriting unit 351 is realized by the execution device 901 executing the priority control task 109.

図24は、この実施の形態におけるゲストOS優先度情報記憶部394が記憶したゲストOS優先度情報151のデータ構造の一例を示す図である。   FIG. 24 is a diagram showing an example of the data structure of the guest OS priority information 151 stored in the guest OS priority information storage unit 394 in this embodiment.

ゲストOS優先度情報151は、例えば、優先実行期間の優先度501、優先実行期間の時間502、非優先実行期間の時間503を示すデータである。   The guest OS priority information 151 is data indicating, for example, the priority 501 of the priority execution period, the time 502 of the priority execution period, and the time 503 of the non-priority execution period.

優先実行期間の優先度501は、ゲストOS200を高い優先度で実行する場合の優先度を示す。
優先実行期間の時間502は、ゲストOS200を高い優先度で実行する期間の時間を示す。
非優先実行期間の時間503は、ゲストOS200を最低の優先度で実行する期間の時間を示す。
The priority 501 of the priority execution period indicates a priority when the guest OS 200 is executed with a high priority.
A priority execution period time 502 indicates a period of time during which the guest OS 200 is executed with a high priority.
The non-priority execution period time 503 indicates the time period during which the guest OS 200 is executed with the lowest priority.

図25は、この実施の形態におけるタスクの優先順位の一例を示す概念図である。
優先度書換部351がゲストOS200の優先度を書き換えることにより、ホストタスク110間の優先順位は、左側の状態と右側の状態との間を行き来する。
FIG. 25 is a conceptual diagram showing an example of task priorities in this embodiment.
As the priority rewriting unit 351 rewrites the priority of the guest OS 200, the priority between the host tasks 110 goes back and forth between the left state and the right state.

ゲストOS200を高い優先度で実行する期間(優先実行期間)は、左側の状態となる。
この状態では、ゲストOS200が休眠状態とならない限り、ゲストOS200よりも優先順位の低い通常処理タスク123〜125を、タスク選択部332が選択することはなく、通常処理タスク123〜125が実行されることはない。
また、ゲストOS200よりも優先順位の低い割込処理タスク113,115を実行させる割込は、割込マスクによりマスクされるので、ゲストOS200が休眠状態とならない限り、割込処理タスク113,115を実行させる割込は発生せず、割込処理タスク113,115が実行されることもない。
The period during which the guest OS 200 is executed with high priority (priority execution period) is in the state on the left side.
In this state, unless the guest OS 200 enters a sleep state, the task selection unit 332 does not select the normal processing tasks 123 to 125 having a lower priority than the guest OS 200, and the normal processing tasks 123 to 125 are executed. There is nothing.
Also, interrupts that cause the interrupt processing tasks 113 and 115 having a lower priority than the guest OS 200 to be executed are masked by the interrupt mask, so that the interrupt processing tasks 113 and 115 are executed unless the guest OS 200 enters a sleep state. Interrupts to be executed are not generated, and the interrupt processing tasks 113 and 115 are not executed.

ゲストOS200が多数のゲストタスク210を管理している場合、そのゲストタスク210がすべて実行不可能な状態となることは稀であり、したがって、ゲストOS200が休眠状態になることも稀である。
いくら優先順位が低いタスクであっても、ある程度は定期的に実行する機会が与えられなければ、処理に支障を来たす可能性がある。
When the guest OS 200 manages a large number of guest tasks 210, it is rare that all of the guest tasks 210 are in an inexecutable state, and therefore the guest OS 200 is rarely in a sleep state.
Even if the task has a low priority, if there is no opportunity to execute it regularly to some extent, it may interfere with the processing.

そこで、この実施の形態では、ゲストOS200の優先順位を強制的に下げることにより、優先順位の低いタスクにも実行の機会を与えるものとする。   Therefore, in this embodiment, the priority of the guest OS 200 is forcibly lowered to give an execution opportunity to a task with a low priority.

優先度書換部351が時計装置906を用いて優先実行期間を開始してからの経過時間を測定する。優先度書換部351は、優先実行期間の時間502が経過した場合に、優先度記憶部391が記憶したゲストOS200の優先度を、最低の優先度に書き換える。   The priority rewriting unit 351 uses the clock device 906 to measure the elapsed time since the priority execution period was started. The priority rewriting unit 351 rewrites the priority of the guest OS 200 stored in the priority storage unit 391 to the lowest priority when the time 502 of the priority execution period has elapsed.

ゲストOS200を低い優先度で実行する期間(非優先実行期間)は、右側の状態となる。
この状態では、他のホストタスク110がすべて実行不可能な状態とならない限り、ゲストOS200が実行されることはない。
その代わり、通常処理タスク123〜125や割込処理タスク113,115のような優先順位が低いタスクにも、実行の機会が与えられる。
The period during which the guest OS 200 is executed with a low priority (non-priority execution period) is in the state on the right side.
In this state, the guest OS 200 is not executed unless all the other host tasks 110 become inexecutable.
Instead, execution opportunities are also given to low priority tasks such as the normal processing tasks 123 to 125 and the interrupt processing tasks 113 and 115.

なお、優先度制御タスク109は、実行装置901がゲストOS200を実行している際であっても実行する必要があるので、ゲストOS200よりも高い優先順位を有する。   Since the priority control task 109 needs to be executed even when the execution device 901 is executing the guest OS 200, it has a higher priority than the guest OS 200.

図26は、この実施の形態における優先度書換部351のゲストOS優先度制御処理の流れの一例を示すフローチャート図である。   FIG. 26 is a flowchart showing an example of the flow of the guest OS priority control process of the priority rewriting unit 351 in this embodiment.

T61において、優先度書換部351が、ゲストOS優先度情報記憶部394が記憶したゲストOS優先度情報500から、優先実行期間の優先度501を取得する。   In T61, the priority rewriting unit 351 acquires the priority 501 of the priority execution period from the guest OS priority information 500 stored in the guest OS priority information storage unit 394.

T62において、優先度記憶部391が、T61で優先度書換部351が取得した優先実行期間の優先度501を、ゲストOSの優先度として記憶する(優先実行期間の開始)。   In T62, the priority storage unit 391 stores the priority 501 of the priority execution period acquired by the priority rewriting unit 351 in T61 as the priority of the guest OS (start of the priority execution period).

T63において、優先度書換部351が、ゲストOS優先度情報記憶部394が記憶したゲストOS優先度情報500から、優先実行期間の時間502を取得する。   In T63, the priority rewriting unit 351 acquires the priority execution period time 502 from the guest OS priority information 500 stored in the guest OS priority information storage unit 394.

T64において、優先度書換部351が、T63で取得した優先実行期間の時間502を、時計装置906に設定する。
ここで、時計装置906は、設定した時間が経過すると、割込信号入力装置905にそのことを通知し、割込信号を発生させるものとする。
At T64, the priority rewriting unit 351 sets the time 502 of the priority execution period acquired at T63 in the clock device 906.
Here, when the set time elapses, the clock device 906 notifies the interrupt signal input device 905 of the fact and generates an interrupt signal.

T65において、優先度書換部351は、時計装置906からの割込があるまで、優先度制御タスク109を休眠状態とする。   In T65, the priority rewriting unit 351 causes the priority control task 109 to be in a sleep state until an interrupt from the clock device 906 occurs.

その後、時計装置906に設定した優先実行期間の時間502が経過すると、時計装置906からの割込により、優先度制御タスク109が起床し、T66以下の処理が再開される。   Thereafter, when the time 502 of the priority execution period set in the clock device 906 elapses, the priority control task 109 is woken up by an interrupt from the clock device 906, and the processes after T66 are resumed.

T66において、優先度記憶部391が、最低の優先度を、ゲストOS200の優先度として記憶する(優先実行期間の終了、非優先実行期間の開始)。   At T66, the priority storage unit 391 stores the lowest priority as the priority of the guest OS 200 (end of the priority execution period, start of the non-priority execution period).

T67において、優先度書換部351が、ゲストOS優先度情報記憶部394が記憶したゲストOS優先度情報500から、非優先実行期間の時間503を取得する。   In T67, the priority rewriting unit 351 acquires the non-priority execution period time 503 from the guest OS priority information 500 stored in the guest OS priority information storage unit 394.

T68において、優先度書換部351が、T67で取得した非優先実行期間の時間503を、時計装置906に設定する。   At T68, the priority rewriting unit 351 sets the time 503 of the non-priority execution period acquired at T67 in the clock device 906.

T69において、優先度書換部351は、時計装置906からの割込があるまで、優先度制御タスク109を休眠状態とする。   In T69, the priority rewriting unit 351 puts the priority control task 109 into a sleep state until an interrupt from the clock device 906 occurs.

その後、時計装置906に設定した非優先実行期間の時間503が経過すると、時計装置906からの割込により、優先度制御タスク109が起床し、処理が再開されてT61に戻る。   Thereafter, when the non-priority execution period time 503 set in the clock device 906 elapses, the priority control task 109 is woken up by an interrupt from the clock device 906, the processing is resumed, and the process returns to T61.

これにより、ゲストOS200は、高い優先順位で実行される期間と、低い優先順位で実行される期間とを交互に繰り返すこととなる。   As a result, the guest OS 200 alternately repeats the period of execution with a high priority and the period of execution with a low priority.

なお、この例では、非優先実行期間におけるゲストOS200の優先順位を、最低の優先順位としているが、必ずしも最低の優先順位でなくてもよい。
しかし、非優先実行期間におけるゲストOS200の優先順位を最低の優先順位とすれば、ゲストOS200が休眠状態とならなくても、他のすべてのホストタスク110に実行の機会を与えることができる。
In this example, the priority order of the guest OS 200 in the non-priority execution period is the lowest priority order, but it does not necessarily have to be the lowest priority order.
However, if the priority of the guest OS 200 in the non-priority execution period is set to the lowest priority, even if the guest OS 200 is not in the sleep state, an execution opportunity can be given to all the other host tasks 110.

既存のOSは、他のOSのタスクとして動作することを想定していないので、管理するタスクがすべて休眠状態となっても、OS自体は休眠状態とならない(S86に相当する処理がない)。
したがって、非優先実行期間におけるゲストOS200の優先順位を最低の優先順位とすることとすれば、既存のOSをゲストOS200として利用する場合、休眠処理(S86)を加える修正をしなくてもよいので、開発コストを抑えることができる。
Since the existing OS is not assumed to operate as a task of another OS, the OS itself does not enter a sleep state even if all managed tasks are in a sleep state (there is no processing corresponding to S86).
Therefore, if the priority of the guest OS 200 in the non-priority execution period is set to the lowest priority, when the existing OS is used as the guest OS 200, the sleep processing (S86) need not be modified. Development costs can be reduced.

また、この例では、ゲストOS200の優先度が2種類あり、2つの優先度の期間を繰り返す構成としているが、優先度の数は2種類に限らず、もっと多くてもよい。   In this example, there are two types of priority of the guest OS 200 and the period of two priorities is repeated. However, the number of priorities is not limited to two and may be larger.

また、この例では、ゲストOS200が実行されたか否かにかかわらず、所定の時間が経過した場合に、優先度を書き換えることとしているが、ゲストOS200が実行された時間だけを測定して、所定の時間実行した場合に、優先度を書き換えることとしてもよい。   In this example, the priority is rewritten when a predetermined time has passed regardless of whether or not the guest OS 200 is executed. However, only the time when the guest OS 200 is executed is measured, The priority may be rewritten when it is executed for a period of time.

また、ホストタスク110が、ゲストOS優先度情報記憶部394が記憶したゲストOS優先度情報500を書き換えることにより、例えば、ゲストタスク210が処理すべき処理量と、ゲストOS200以外のホストタスク110が処理すべき処理量とによって、ゲストOS200の優先実行期間の時間や、優先度を変化させることができる。これにより、処理の負荷に応じたOSの切替が可能となる。   Further, the host task 110 rewrites the guest OS priority information 500 stored in the guest OS priority information storage unit 394, so that, for example, the processing amount to be processed by the guest task 210 and the host tasks 110 other than the guest OS 200 can be processed. Depending on the amount of processing to be processed, the time and priority of the guest OS 200 can be changed. As a result, the OS can be switched according to the processing load.

この実施の形態における並列処理装置によれば、優先度書換部351がゲストOS200の優先度を定期的に変化させるので、優先実行期間においてゲストOS200よりも低い優先順位をもつホストタスク110にも、定期的に実行の機会が与えられるという効果を奏する。   According to the parallel processing device in this embodiment, since the priority rewriting unit 351 periodically changes the priority of the guest OS 200, the host task 110 having a lower priority than the guest OS 200 in the priority execution period can also be used. There is an effect that regular execution opportunities are given.

この実施の形態における並列処理装置によれば、非優先実行期間におけるゲストOS200の優先順位を最低順位とするので、既存のOSをゲストOS200として利用する場合に必要な修正が少なく、開発コストを抑えることができるという効果を奏する。   According to the parallel processing device of this embodiment, since the priority order of the guest OS 200 in the non-priority execution period is set to the lowest order, there are few modifications required when using an existing OS as the guest OS 200, and the development cost is suppressed. There is an effect that can be.

以上説明した並列処理装置が用いるタスクの起動方法は、
ホストOSの1つのタスクとしてゲストOSが動作するマルチOSの構成において、タスクの優先度と割込処理の優先度をもとに、タスク起動時にタスク優先度と割込マスクの設定値に関して、割込処理がより高い優先度のタスクの処理を阻害しないよう定めたことを特徴とする。
The task activation method used by the parallel processing device described above is:
In a multi-OS configuration in which the guest OS operates as one task of the host OS, the task priority and interrupt mask setting values are assigned at task startup based on the task priority and interrupt processing priority. It is characterized in that it is determined that the processing of the embedded process does not hinder the processing of the task with a higher priority.

以上説明した並列処理装置によるマルチOSシステムにおける割込マスク設定処理は、
ゲストOSで処理する割込をマスクするとき、ゲストOSで扱う最も高い優先度の割込レベルで割込マスクをすることにより、ゲストOSの割込マスクがゲストOSよりも高い優先度の割込処理を阻害しないようにしたことを特徴とする。
The interrupt mask setting process in the multi-OS system by the parallel processing device described above is
When masking interrupts to be processed by the guest OS, the interrupt mask of the guest OS has a higher priority than the guest OS by masking the interrupt at the highest priority interrupt level handled by the guest OS. It is characterized by not inhibiting the treatment.

以上説明した並列処理装置によるマルチOSシステムは、
ゲストOSにおいて実行すべき処理が存在しない場合、ホストOSのスリープ(sleep)を呼び出して、CPUを手放すことを特徴とする。
The multi-OS system using the parallel processing device described above is
When there is no processing to be executed in the guest OS, the sleep of the host OS is called to release the CPU.

以上説明した並列処理装置によるマルチOSシステムは、
ゲストOSがスリープ状態で、ゲストOSで処理したい割込が発生した時、ホストOS側でゲストOSをウェイクアップ(wakeup)させることを特徴とする。
The multi-OS system using the parallel processing device described above is
When the guest OS is in a sleep state and an interrupt to be processed by the guest OS occurs, the host OS wakes up the guest OS.

以上説明した並列処理装置によるマルチOSシステムは、
ゲストOS上でスリープしているタスクをホストOSからウェイクアップするとき、ホストOS側からゲストOS側で処理する割込を発生させ、ゲストOS側が割込処理の中でゲストOS上のタスクをウェイクアップさせることを特徴とする。
The multi-OS system using the parallel processing device described above is
When a task that is sleeping on the guest OS is woken up from the host OS, an interrupt to be processed on the guest OS side is generated from the host OS side, and the guest OS side wakes up the task on the guest OS in the interrupt processing. It is made to raise.

以上説明した並列処理装置によるマルチOSシステムは、
ホストOSの1つのタスクとしてゲストOSが動作するマルチOSの構成において、ゲストOSの優先度を時間の経過とともに上下させることを特徴とする。
The multi-OS system using the parallel processing device described above is
In a multi-OS configuration in which a guest OS operates as one task of the host OS, the priority of the guest OS is raised or lowered with the passage of time.

実施の形態1における並列処理装置900のハードウェア構成の一例を示すハードウェア構成図。FIG. 2 is a hardware configuration diagram illustrating an example of a hardware configuration of a parallel processing device 900 according to the first embodiment. 実施の形態1における並列処理装置900において実行されるプログラム(タスク)の関係の一例を示す概念図。FIG. 3 is a conceptual diagram illustrating an example of a relationship between programs (tasks) executed in the parallel processing device 900 according to the first embodiment. 実施の形態1における並列処理装置900の機能ブロックの構成の一例を示すブロック構成図。FIG. 3 is a block configuration diagram illustrating an example of a functional block configuration of the parallel processing device 900 according to the first embodiment. 実施の形態1におけるタスクの優先順位の一例を示す概念図。FIG. 3 is a conceptual diagram illustrating an example of task priorities in the first embodiment. 実施の形態1におけるホストタスク110の優先順位と、割込の優先順位との関係の一例を示す概念図。FIG. 3 is a conceptual diagram illustrating an example of a relationship between a priority order of a host task 110 and an interrupt priority order in the first embodiment. 実施の形態1において、マスクテーブル生成部333が生成し、マスクテーブル記憶部334が記憶するマスクテーブル108の内容の一例を示す図。6 is a diagram illustrating an example of the contents of a mask table 108 generated by a mask table generation unit 333 and stored in a mask table storage unit 334 in Embodiment 1. FIG. 実施の形態1における割込ベクタ記憶部311が記憶する割込ベクタの一例を示す図。FIG. 6 is a diagram showing an example of an interrupt vector stored in an interrupt vector storage unit 311 in the first embodiment. 実施の形態1において、ホストタスク110起動時におけるスケジュール部330のタスク起動処理の流れの一例を示すフローチャート図。FIG. 6 is a flowchart showing an example of a task activation process flow of the schedule unit 330 when the host task 110 is activated in the first embodiment. 実施の形態1におけるスケジュール部330のスケジュール処理の流れの一例を示すフローチャート図。FIG. 3 is a flowchart showing an example of a schedule process flow of a schedule unit 330 according to the first embodiment. 実施の形態1におけるディスパッチ部320のタスク切替処理の流れの一例を示すフローチャート図。FIG. 4 is a flowchart showing an example of a task switching process flow of a dispatch unit 320 according to the first embodiment. 実施の形態1において、割込信号入力時における割込処理部310の割込処理の流れの一例を示すフローチャート図。FIG. 3 is a flowchart showing an example of a flow of interrupt processing of an interrupt processing unit 310 when an interrupt signal is input in the first embodiment. 実施の形態1において、割込信号入力時に実行される割込処理プログラム661〜664の割込処理の流れの一例を示すフローチャート図。The flowchart figure which shows an example of the flow of the interruption process of the interruption process programs 661-664 performed at the time of interrupt signal input in Embodiment 1. FIG. 実施の形態1において、割込信号入力時に実行される切替プログラム669のOS切替処理の流れの一例を示すフローチャート図。The flowchart figure which shows an example of the flow of OS switching processing of the switching program 669 performed at the time of interrupt signal input in Embodiment 1. FIG. 実施の形態1において、割込信号入力時における切替プログラム679のOS切替処理の流れの一例を示すフローチャート図。The flowchart figure which shows an example of the flow of OS switching processing of the switching program 679 at the time of interrupt signal input in Embodiment 1. FIG. 実施の形態1におけるOS切替用タスク107のOS切替処理の流れの一例を示すフローチャート図。FIG. 5 is a flowchart showing an example of a flow of OS switching processing of an OS switching task 107 in the first embodiment. 実施の形態1におけるゲストOS200のスケジュール処理の流れの一例を示すフローチャート図。FIG. 6 is a flowchart showing an example of a flow of schedule processing of the guest OS 200 in the first embodiment. 実施の形態2における並列処理装置900の機能ブロックの構成の一例を示すブロック構成図。FIG. 6 is a block configuration diagram illustrating an example of a functional block configuration of a parallel processing device 900 according to a second embodiment. 実施の形態2におけるOS間同期用データ記憶部393が記憶したOS間同期用データ400のデータ構造の一例を示す図。The figure which shows an example of the data structure of the data 400 for OS synchronization which the data storage part 393 for OS synchronization in Embodiment 2 memorize | stored. 実施の形態2におけるゲストOS200のスケジュール処理の流れの一例を示すフローチャート図。FIG. 10 is a flowchart showing an example of a flow of schedule processing of the guest OS 200 in the second embodiment. 実施の形態2におけるスケジュール部330のスケジュール処理の流れの一例を示すフローチャート図。FIG. 9 is a flowchart showing an example of a schedule process flow of a schedule unit 330 according to the second embodiment. 実施の形態2において、T18で入力した割込信号による割込を処理する割込処理プログラムのOS間通信割込処理の流れの一例を示すフローチャート図。The flowchart figure which shows an example of the flow of the inter-OS communication interruption process of the interruption process program which processes the interruption by the interruption signal input by T18 in Embodiment 2. 実施の形態3における並列処理装置900において実行されるプログラム(タスク)の関係の一例を示す概念図。FIG. 10 is a conceptual diagram illustrating an example of a relationship between programs (tasks) executed in the parallel processing device 900 according to the third embodiment. 実施の形態3における並列処理装置900の機能ブロックの構成の一例を示すブロック構成図。FIG. 10 is a block configuration diagram illustrating an example of a functional block configuration of a parallel processing device 900 according to a third embodiment. 実施の形態3におけるゲストOS優先度情報記憶部394が記憶したゲストOS優先度情報151のデータ構造の一例を示す図。FIG. 14 is a diagram illustrating an example of a data structure of guest OS priority information 151 stored in a guest OS priority information storage unit 394 according to the third embodiment. 実施の形態3におけるタスクの優先順位の一例を示す概念図。FIG. 10 is a conceptual diagram illustrating an example of task priorities in the third embodiment. 実施の形態3における優先度書換部351のゲストOS優先度制御処理の流れの一例を示すフローチャート図。FIG. 10 is a flowchart illustrating an example of a flow of guest OS priority control processing of a priority rewriting unit 351 according to the third embodiment.

符号の説明Explanation of symbols

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 時計装置。   100 Host OS, 101, 201 Scheduler, 102, 202 Interrupt vector, 103, 203 Interrupt processing, 104, 204 Mask setting processing, 105, 205 Inter-OS synchronization processing, 106 Task on host OS, 107 OS switching task , 108 Mask table, 109 Priority control task, 110 Host task, 111 to 115, 211 to 212 Interrupt processing task, 121 to 125, 221 to 223 Normal processing task, 151 Guest OS priority information, 200 Guest OS, 206 Task on guest OS, 210 Guest task, 310 Interrupt processing unit, 311 Interrupt vector storage unit, 312 Interrupt mask storage unit, 313 Interrupt processing execution unit, 320 Dispatch unit, 321 Context rewriting unit, 323 Interrupt vector Rewriting unit, 324 mask Fixed part, 330 Schedule part, 331 Executable judgment part, 332 Task selection part, 333 Mask table generation part, 334 Mask table storage part, 341 Inter-task message processing part, 351 Priority rewriting part, 391 Priority storage part, 392 Context storage unit, 393 OS synchronization data storage unit, 394 guest OS priority information storage unit, 400 OS synchronization data, 401 guest OS synchronization data, 402 flag, 501 priority of priority execution period, 502 Priority execution period time, 503 Non-priority execution period time, 611 Task priority, 612 Interrupt mask level, 621 to 632 interrupt, 641 to 659 interrupt vector, 661 to 664, 671 to 672 Interrupt processing program, 669, 679 switching program, 900 parallel processing device , 901 execution device, 902 storage device, 903 input device, 904 output device, 905 interrupt signal input device, 906 clock device.

Claims (15)

複数のプログラムをゲストタスクとして管理し、上記ゲストタスクを切り替えて実行することにより、上記複数のプログラムを並列して処理するゲスト並列処理装置としてコンピュータを機能させるゲスト並列処理プログラムと、他のプログラムとを、ホストタスクとして管理し、上記ホストタスクを切り替えて実行することにより、上記複数のプログラム及び上記他のプログラムを並列して処理する並列処理装置において、
プログラムを実行する実行装置と、
情報を記憶する記憶装置と、
上記実行装置が実行しているプログラムの実行を中断し、割込を処理する割込処理プログラムを実行することを上記実行装置に対して要求する割込信号を、上記実行装置に対して出力する割込信号入力装置と、
上記割込信号入力装置が入力する割込信号による要求に基づいて、上記実行装置が実行するプログラムを示す情報を割込ベクタとして、上記記憶装置を用いて記憶する割込ベクタ記憶部と、
上記ホストタスクのなかから、上記実行装置が実行するホストタスクを選択するタスク選択部と、
上記タスク選択部が選択したホストタスクが上記他のプログラムである場合と、上記タスク選択部が選択したホストタスクが上記ゲスト並列処理プログラムである場合とで、異なる割込ベクタを上記割込ベクタ記憶部に記憶させる割込ベクタ書換部と、
を有することを特徴とする並列処理装置。
A guest parallel processing program that manages a plurality of programs as guest tasks, and switches and executes the guest tasks, thereby causing the computer to function as a guest parallel processing device that processes the plurality of programs in parallel, and other programs In a parallel processing device that processes the plurality of programs and the other programs in parallel by managing the host tasks and switching and executing the host tasks,
An execution device for executing the program;
A storage device for storing information;
Interrupts the execution of the program being executed by the execution device and outputs an interrupt signal to the execution device that requests the execution device to execute an interrupt processing program for processing an interrupt. An interrupt signal input device;
Based on a request by an interrupt signal input by the interrupt signal input device, an interrupt vector storage unit that stores information indicating a program executed by the execution device as an interrupt vector using the storage device;
A task selection unit for selecting a host task to be executed by the execution device from the host tasks;
Different interrupt vectors are stored in the interrupt vector when the host task selected by the task selection unit is the other program and when the host task selected by the task selection unit is the guest parallel processing program. Interrupt vector rewriting part to be stored in the part,
A parallel processing apparatus comprising:
上記割込ベクタ書換部は、
上記タスク選択部が選択したホストタスクが上記他のプログラムである場合に、上記割込ベクタ記憶部に、
上記ゲストタスクの一つである割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込ベクタとして、上記ゲスト並列処理プログラムを実行可能な状態とする切替プログラムを示す割込ベクタを記憶させ、
上記ホストタスクの一つである割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込ベクタとして、上記割込信号が上記実行装置に対して実行することを要求する上記ホストタスクの一つである割込処理プログラムを示す割込ベクタを記憶させる
ことを特徴とする請求項1に記載の並列処理装置。
The above interrupt vector rewriting part
When the host task selected by the task selection unit is the other program, the interrupt vector storage unit stores
A switching program that makes the guest parallel processing program executable as an interrupt vector for an interrupt signal that requests the execution device to execute an interrupt processing program that is one of the guest tasks. Memorize the interrupt vector
As an interrupt vector for an interrupt signal that requests the execution device to execute an interrupt processing program that is one of the host tasks, the interrupt signal is executed to the execution device. 2. The parallel processing apparatus according to claim 1, wherein an interrupt vector indicating an interrupt processing program which is one of the requested host tasks is stored.
上記割込ベクタ書換部は、
上記タスク選択部が選択したプログラムが上記ゲスト並列処理プログラムである場合に、上記割込ベクタ記憶部に、
上記ゲストタスクの一つである割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込ベクタとして、上記割込信号が上記実行装置に対して実行することを要求する上記ゲストタスクの一つである割込処理プログラムを示す割込ベクタを記憶させ、
上記ホストタスクの一つである割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込ベクタとして、上記ゲスト並列処理プログラムよりも優先順位が高い他のプログラムを実行可能な状態とする切替プログラムを示す割込ベクタを記憶させる
ことを特徴とする請求項1に記載の並列処理装置。
The above interrupt vector rewriting part
When the program selected by the task selection unit is the guest parallel processing program, the interrupt vector storage unit stores
As an interrupt vector for an interrupt signal that requests the execution device to execute an interrupt processing program that is one of the guest tasks, the interrupt signal is executed to the execution device. Store the interrupt vector indicating the interrupt processing program that is one of the above guest tasks to request,
Another program having a higher priority than the guest parallel processing program is used as an interrupt vector for an interrupt signal that requests the execution device to execute an interrupt processing program that is one of the host tasks. The parallel processing apparatus according to claim 1, wherein an interrupt vector indicating a switching program to be executed is stored.
上記割込信号入力装置は、更に、
上記実行装置が上記切替プログラムを実行した場合に、上記割込信号を上記実行装置に対して出力する
ことを特徴とする請求項2または請求項3に記載の並列処理装置。
The interrupt signal input device further includes:
4. The parallel processing device according to claim 2, wherein when the execution device executes the switching program, the interrupt signal is output to the execution device.
上記割込信号入力装置は、
上記実行装置に上記割込信号を出力した後、上記実行装置が上記割込処理プログラムを実行するまでの間、上記割込信号を上記実行装置に対して出力する
ことを特徴とする請求項1に記載の並列処理装置。
The interrupt signal input device is
2. The interrupt signal is output to the execution device after the interrupt signal is output to the execution device until the execution device executes the interrupt processing program. The parallel processing device according to 1.
上記割込信号入力装置は、上記実行装置に上記割込信号を入力した後、割込信号の出力を停止する割込停止命令を上記実行装置が実行するまでの間、上記割込信号を上記実行装置に対して出力し、
上記割込処理プログラムは、上記割込停止命令を含み、
上記切替プログラムは、上記割込停止命令を含まない
ことを特徴とする請求項2または請求項3に記載の並列処理装置。
After the interrupt signal input device inputs the interrupt signal to the execution device, the interrupt signal is input to the execution device until the execution device executes an interrupt stop command for stopping the output of the interrupt signal. Output to the execution unit,
The interrupt processing program includes the interrupt stop instruction,
The parallel processing apparatus according to claim 2, wherein the switching program does not include the interrupt stop instruction.
上記並列処理装置は、更に、
上記割込信号入力装置が上記実行装置に対して出力する割込信号の要求により、割込処理プログラムを実行することを上記実行装置に対して許可するか否かを示す情報を割込マスクとして、上記記憶装置を用いて記憶する割込マスク記憶部と、
上記タスク選択部が選択したプログラムが上記ゲスト並列処理プログラムよりも優先順位の高いプログラムである場合に、上記割込マスク記憶部に、上記ゲストタスクである割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込マスクとして、上記ゲストタスクである割込処理プログラムを実行することを上記実行装置に対して許可しないことを示す割込マスクを記憶させ、
上記タスク選択部が選択したプログラムが上記ゲスト並列処理プログラムである場合に、上記割込マスク記憶部に、上記ゲスト並列処理プログラムよりも優先順位の低い上記ホストタスクである割込処理プログラムを実行することを上記実行装置に対して要求する割込信号についての割込マスクとして、上記ゲスト並列処理プログラムよりも優先順位の低い上記ホストタスクである割込処理プログラムを実行することを上記実行装置に対して許可しないことを示す割込マスクを記憶させるマスク設定部と、
を有することを特徴とする請求項1に記載の並列処理装置。
The parallel processing device further includes:
Information indicating whether or not the execution device is permitted to execute an interrupt processing program in response to a request for an interrupt signal output from the interrupt signal input device to the execution device is used as an interrupt mask. An interrupt mask storage unit for storing using the storage device;
When the program selected by the task selection unit is a program having a higher priority than the guest parallel processing program, the execution of the interrupt processing program as the guest task is executed in the interrupt mask storage unit. As an interrupt mask for an interrupt signal requested to the device, store an interrupt mask indicating that the execution device is not permitted to execute the interrupt processing program that is the guest task,
When the program selected by the task selection unit is the guest parallel processing program, the interrupt processing program that is the host task having a lower priority than the guest parallel processing program is executed in the interrupt mask storage unit As an interrupt mask for an interrupt signal for requesting the execution device, the execution device that executes the interrupt processing program, which is the host task having a lower priority than the guest parallel processing program, is executed. A mask setting unit for storing an interrupt mask indicating that it is not permitted,
The parallel processing apparatus according to claim 1, comprising:
上記並列処理装置は、更に、
上記実行装置が上記ホストタスクを実行すべき優先順位を示す情報を優先度として、上記記憶装置を用いて記憶する優先度記憶部と、
上記実行装置が上記ホストタスクを実行可能な状態であるか否かを判断する実行可能判断部と、
を有し、
上記タスク選択部は、
上記実行可能判断部が実行可能な状態であると判断したホストタスクのうちから、上記優先度記憶部が記憶した優先度に基づいて、上記実行装置が実行するホストタスクを選択する
ことを特徴とする請求項1に記載の並列処理装置。
The parallel processing device further includes:
A priority storage unit that stores information indicating the priority order in which the execution device should execute the host task as a priority, using the storage device;
An executable determination unit that determines whether the execution device is in a state in which the host task can be executed;
Have
The task selector above
Selecting a host task to be executed by the execution device based on the priority stored in the priority storage unit from among the host tasks determined to be executable by the executable determination unit. The parallel processing device according to claim 1.
上記実行可能判断部は、
上記ゲストタスクのすべてが実行可能な状態でない場合に、上記ゲスト並列処理プログラムが実行可能な状態でないと判断する
ことを特徴とする請求項8に記載の並列処理装置。
The executable determination unit is
The parallel processing apparatus according to claim 8, wherein when all of the guest tasks are not executable, the guest parallel processing program is determined not to be executable.
上記実行可能判断部は、
上記実行装置が上記ホストタスクを実行している場合に、上記ホストタスクが実行可能な状態でないことを通知する処理を、上記実行装置が実行した場合に、上記ホストタスクが実行可能な状態でないと判断し、
上記ゲスト並列処理プログラムは、
上記ゲストタスクのすべてが実行可能な状態でない場合に、実行可能な状態でないことを通知する処理を含む
ことを特徴とする請求項8に記載の並列処理装置。
The executable determination unit is
When the execution device executes the host task, the host device is not in an executable state when the execution device executes a process for notifying that the host task is not in an executable state. Judgment
The guest parallel processing program is
9. The parallel processing apparatus according to claim 8, further comprising a process of notifying that the guest task is not executable when all of the guest tasks are not executable.
上記並列処理装置は、
経過時間を測定する時計装置と、
上記時計装置が測定した経過時間に基づいて、上記優先度記憶部が記憶した上記ゲスト並列処理プログラムの優先度を書き換える優先度書換部と、
を有することを特徴とする請求項8に記載の並列処理装置。
The parallel processing device
A clock device for measuring elapsed time;
A priority rewriting unit for rewriting the priority of the guest parallel processing program stored in the priority storage unit based on the elapsed time measured by the clock device;
The parallel processing device according to claim 8, comprising:
上記割込信号入力装置は、更に、
上記他のプログラムから通知されるメッセージを待っていることにより実行可能な状態でない上記ゲストタスクである通知待ちプログラムに対して通知するメッセージを、上記実行装置が上記他のプログラムを実行することにより生成した場合に、
上記通知待ちプログラムを実行可能な状態とする上記ゲストタスクである割込処理プログラムを実行することを上記実行装置に対して要求する割込信号を、上記実行装置に対して出力する
ことを特徴とする請求項1に記載の並列処理装置。
The interrupt signal input device further includes:
The execution device generates a message to be notified to the notification waiting program that is the guest task that is not executable by waiting for a message notified from the other program, by the execution device executing the other program If
An interrupt signal for requesting the execution device to execute the interrupt processing program that is the guest task for making the notification waiting program executable is output to the execution device. The parallel processing device according to claim 1.
上記並列処理装置は、更に、
上記通知待ちプログラムに対して通知するメッセージを、上記実行装置が上記他のプログラムを実行することにより生成した場合に、上記通知待ちプログラムを示す情報を上記記憶装置を用いて記憶する通知先記憶部を有し、
上記通知待ちプログラムに対して通知するメッセージを、上記実行装置が上記他のプログラムを実行することにより生成した場合に、上記割込信号入力装置が上記実行装置に対して出力する割込信号の要求に基づいて上記実行装置が実行する割込処理プログラムは、上記通知先記憶部が記憶した情報に基づいて、上記実行装置が上記通知待ちプログラムを判断する処理を含む
ことを特徴とする請求項12に記載の並列処理装置。
The parallel processing device further includes:
A notification destination storage unit that stores information indicating the notification waiting program using the storage device when the execution device generates the message to be notified to the notification waiting program by executing the other program. Have
Request for an interrupt signal that the interrupt signal input device outputs to the execution device when the execution device generates the message to be notified to the notification waiting program by executing the other program 13. The interrupt processing program executed by the execution device based on the notification includes a process in which the execution device determines the notification waiting program based on information stored in the notification destination storage unit. The parallel processing device according to 1.
プログラムを実行する実行装置と、
情報を記憶する記憶装置と、
上記実行装置が実行しているプログラムの実行を中断し、割込を処理する割込処理プログラムを実行することを上記実行装置に対して要求する割込信号を、上記実行装置に対して出力する割込信号入力装置と、
上記割込信号入力装置が入力する割込信号による要求に基づいて、上記実行装置が実行するプログラムを示す情報を割込ベクタとして、上記記憶装置を用いて記憶する割込ベクタ記憶部と、
を有する並列処理装置が、
複数のプログラムをゲストタスクとして管理し、上記ゲストタスクを切り替えて実行することにより、上記複数のプログラムを並列して処理するゲスト並列処理装置としてコンピュータを機能させるゲスト並列処理プログラムと、他のプログラムとを、ホストタスクとして管理し、上記ホストタスクを切り替えて実行することにより、上記複数のプログラム及び上記他のプログラムを並列して処理する並列処理方法において、
タスク選択部が、上記ホストタスクのなかから、上記実行装置が実行するホストタスクを選択するタスク選択工程と、
割込ベクタ書換部が、
上記タスク選択工程において上記タスク選択部が選択したホストタスクが上記他のプログラムである場合と、上記タスク選択部が選択したホストタスクが上記ゲスト並列処理プログラムである場合とで、異なる割込ベクタを上記割込ベクタ記憶部に記憶させる割込ベクタ書換工程と、
を有することを特徴とする並列処理方法。
An execution device for executing the program;
A storage device for storing information;
Interrupts the execution of the program being executed by the execution device and outputs an interrupt signal to the execution device that requests the execution device to execute an interrupt processing program for processing an interrupt. An interrupt signal input device;
Based on a request by an interrupt signal input by the interrupt signal input device, an interrupt vector storage unit that stores information indicating a program executed by the execution device as an interrupt vector using the storage device;
A parallel processing device having
A guest parallel processing program that manages a plurality of programs as guest tasks, and switches and executes the guest tasks, thereby causing the computer to function as a guest parallel processing device that processes the plurality of programs in parallel, and other programs In a parallel processing method for processing the plurality of programs and the other programs in parallel by managing the host tasks and switching and executing the host tasks.
A task selection step for selecting a host task to be executed by the execution device from among the host tasks;
Interrupt vector rewriting part
Different interrupt vectors are used when the host task selected by the task selection unit in the task selection step is the other program and when the host task selected by the task selection unit is the guest parallel processing program. An interrupt vector rewriting step to be stored in the interrupt vector storage unit;
A parallel processing method characterized by comprising:
コンピュータを、請求項1に記載の並列処理装置として機能させることを特徴とする並列処理プログラム。   A parallel processing program for causing a computer to function as the parallel processing device according to claim 1.
JP2005359069A 2005-12-13 2005-12-13 Parallel processing device, parallel processing method, and parallel processing program Expired - Fee Related JP4523910B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005359069A JP4523910B2 (en) 2005-12-13 2005-12-13 Parallel processing device, parallel processing method, and parallel processing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005359069A JP4523910B2 (en) 2005-12-13 2005-12-13 Parallel processing device, parallel processing method, and parallel processing program

Publications (2)

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

Family

ID=38247252

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005359069A Expired - Fee Related JP4523910B2 (en) 2005-12-13 2005-12-13 Parallel processing device, parallel processing method, and parallel processing program

Country Status (1)

Country Link
JP (1) JP4523910B2 (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008001776A1 (en) 2006-06-26 2008-01-03 Shin-Etsu Chemical Co., Ltd. Process for producing optical fiber base and apparatus therefor
JP2009123184A (en) * 2007-10-24 2009-06-04 Toshiba Corp Information processing apparatus
WO2009133669A1 (en) * 2008-04-28 2009-11-05 パナソニック株式会社 Virtual computer control device, virtual computer control method, and virtual computer control program
JP2013537657A (en) * 2010-06-23 2013-10-03 インターナショナル・ビジネス・マシーンズ・コーポレーション Method for converting message signal interrupt to I / O adapter event notification to guest operating system
JP2014038391A (en) * 2012-08-10 2014-02-27 Konica Minolta Inc Image forming apparatus
US9338320B2 (en) 2012-08-10 2016-05-10 Konica Minolta, Inc. Image forming apparatus and method of controlling the same
US9361251B2 (en) 2010-10-22 2016-06-07 Mitsubishi Electric Corporation Interrupt signal accepting apparatus and computer apparatus managing operations of at least two operating systems

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05108380A (en) * 1991-10-21 1993-04-30 Mitsubishi Electric Corp Data processing system
JPH06236286A (en) * 1993-02-09 1994-08-23 Seiko Epson Corp Information processor
JP2004259106A (en) * 2003-02-27 2004-09-16 Ntt Data Corp Multi-operating system control method, program for making computer perform method, and multi-operating system control device
JP2004318538A (en) * 2003-04-17 2004-11-11 Fujitsu Ltd Method for monitoring performance
JP2005071161A (en) * 2003-08-26 2005-03-17 Fujitsu Ltd Task management program and task controller
JP2005234658A (en) * 2004-02-17 2005-09-02 Fujitsu Ltd Task management program and task management device

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05108380A (en) * 1991-10-21 1993-04-30 Mitsubishi Electric Corp Data processing system
JPH06236286A (en) * 1993-02-09 1994-08-23 Seiko Epson Corp Information processor
JP2004259106A (en) * 2003-02-27 2004-09-16 Ntt Data Corp Multi-operating system control method, program for making computer perform method, and multi-operating system control device
JP2004318538A (en) * 2003-04-17 2004-11-11 Fujitsu Ltd Method for monitoring performance
JP2005071161A (en) * 2003-08-26 2005-03-17 Fujitsu Ltd Task management program and task controller
JP2005234658A (en) * 2004-02-17 2005-09-02 Fujitsu Ltd Task management program and task management device

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008001776A1 (en) 2006-06-26 2008-01-03 Shin-Etsu Chemical Co., Ltd. Process for producing optical fiber base and apparatus therefor
JP2009123184A (en) * 2007-10-24 2009-06-04 Toshiba Corp Information processing apparatus
WO2009133669A1 (en) * 2008-04-28 2009-11-05 パナソニック株式会社 Virtual computer control device, virtual computer control method, and virtual computer control program
US8468533B2 (en) 2008-04-28 2013-06-18 Panasonic Corporation Virtual machine control device, method, and program wherein a switching task used to switch to the highest priority virtual machines is the highest priority task in the current virtual machine and the virtual machine that is the switching target
JP5405320B2 (en) * 2008-04-28 2014-02-05 パナソニック株式会社 Virtual machine control device, virtual machine control method, and virtual machine control program
JP2013537657A (en) * 2010-06-23 2013-10-03 インターナショナル・ビジネス・マシーンズ・コーポレーション Method for converting message signal interrupt to I / O adapter event notification to guest operating system
US9361251B2 (en) 2010-10-22 2016-06-07 Mitsubishi Electric Corporation Interrupt signal accepting apparatus and computer apparatus managing operations of at least two operating systems
JP2014038391A (en) * 2012-08-10 2014-02-27 Konica Minolta Inc Image forming apparatus
US9338320B2 (en) 2012-08-10 2016-05-10 Konica Minolta, Inc. Image forming apparatus and method of controlling the same

Also Published As

Publication number Publication date
JP4523910B2 (en) 2010-08-11

Similar Documents

Publication Publication Date Title
JP4580845B2 (en) Task execution device
JP5323828B2 (en) Virtual machine control device, virtual machine control program, and virtual machine control circuit
US7472214B2 (en) Real-time embedded simple monitor method and computer product
JP4523910B2 (en) Parallel processing device, parallel processing method, and parallel processing program
TWI307477B (en)
US7853743B2 (en) Processor and interrupt controlling method
US20060010446A1 (en) Method and system for concurrent execution of multiple kernels
JP4345630B2 (en) Information processing apparatus, interrupt processing control method, and computer program
JP2009265963A (en) Information processing system and task execution control method
US7043729B2 (en) Reducing interrupt latency while polling
JP2005056067A (en) Dma transfer controller
KR20140127341A (en) Method and system for scheduling requests in a portable computing device
US10229077B2 (en) Method for data transfer between real-time tasks using a DMA memory controller
US20130191617A1 (en) Computer system, computer system control method, computer system control program, and integrated circuit
US20210026651A1 (en) Wake-up and scheduling of functions with context hints
JP2006243864A (en) Processor and information processing method
JP4675891B2 (en) Task scheduling apparatus, task scheduling method, task scheduling program, recording medium, and transmission medium
JP2001282558A (en) Multi-operating computer system
JP2004078683A (en) Computer system and shared memory controlling method
JPWO2018211865A1 (en) Vehicle control device
Parikh et al. Performance parameters of RTOSs; comparison of open source RTOSs and benchmarking techniques
JP2007323256A (en) Interruption control method and information processor
JP2006004092A (en) Computer system
KR101119458B1 (en) Asynchronous communications technique
WO2023144878A1 (en) Intra-server delay control device, intra-server delay control method, and program

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 Written amendment

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 Written amendment

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