JP5379906B2 - Computer, computer control method, and computer control program - Google Patents

Computer, computer control method, and computer control program Download PDF

Info

Publication number
JP5379906B2
JP5379906B2 JP2012501735A JP2012501735A JP5379906B2 JP 5379906 B2 JP5379906 B2 JP 5379906B2 JP 2012501735 A JP2012501735 A JP 2012501735A JP 2012501735 A JP2012501735 A JP 2012501735A JP 5379906 B2 JP5379906 B2 JP 5379906B2
Authority
JP
Japan
Prior art keywords
task
processor
computer
synchronous
asynchronous
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.)
Active
Application number
JP2012501735A
Other languages
Japanese (ja)
Other versions
JPWO2011105226A1 (en
Inventor
利明 新井
光司 天野
崇博 大平
直之 武田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2012501735A priority Critical patent/JP5379906B2/en
Publication of JPWO2011105226A1 publication Critical patent/JPWO2011105226A1/en
Application granted granted Critical
Publication of JP5379906B2 publication Critical patent/JP5379906B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)

Abstract

In a computer system wherein a plurality of computers having multiprocessor environments are connected via a network, task synchronization among the computers is enabled. A computer comprises a synchronous processor for processing tasks synchronously with other computers, an asynchronous processor for processing tasks asynchronously with the other computers, and a dispatcher for assigning tasks to the synchronous processor and the asynchronous processor; wherein the dispatcher determines whether or not a task is a task that should be processed synchronously with the other computers, and on the basis of the determination result, assigns synchronous tasks that should be processed synchronously with the other computers to the synchronous processor, and assigns asynchronous tasks that do not need to be processed synchronously with the other computers to the asynchronous processor.

Description

本発明は、計算機、計算機制御方法、および計算機制御プログラムに関するものである。   The present invention relates to a computer, a computer control method, and a computer control program.

計算機システムにおけるシステム稼働時間を長時間化するために、計算機を多重化する技術が存在している。この技術は、例えばデュアルシステムなどにより、ハードウェアの障害に際してもシステム内の処理を継続することが出来るものである。   In order to increase the system operation time in a computer system, there is a technique for multiplexing computers. This technology can continue processing in the system even when a hardware failure occurs, for example, by a dual system.

また、システム停止時間を最小化するための計算機として、フォールト・トレラントコンピュータ(Fault tolerant computer)がある。このフォールト・トレラントコンピュータの技術は、ハードウェアを多重化し、同一プログラムを複数のCPUで動作させて、CPUの障害時にも処理を継続可能とするものである。例えば、本出願人は分散配置に適したフォールトトレラントシステムの構成を提案している(特許文献1参照)。   Further, as a computer for minimizing the system stop time, there is a fault tolerant computer (Fault tolerant computer). This fault-tolerant computer technology multiplexes hardware and allows the same program to be operated by a plurality of CPUs so that processing can be continued even when a CPU failure occurs. For example, the present applicant has proposed a fault tolerant system configuration suitable for distributed arrangement (see Patent Document 1).

こうした従来のデュアルシステムやフォールトトレラントシステムにおいては、その実現に際して、クロック同期(ロックステップ方式)などを必要とする。そのため、専用ハードウェアに各計算機の通信インターフェースが直接接続されている計算機構成が一般的となっていた。   Such a conventional dual system or fault tolerant system requires clock synchronization (lockstep method) or the like for its realization. Therefore, a computer configuration in which the communication interface of each computer is directly connected to dedicated hardware has become common.

特開平8−314744号公報JP-A-8-314744

これまで専用ハードウェアによって各計算機が接続されていた従来のフォールトトレラントシステムの構成では、各計算機において同一時刻に同一のプログラムを実行することは可能であった。
一方、近年ではネットワークの高速化、及び計算機の汎用化に伴い、専用ハードウェアではなく、一般的なネットワークを利用して複数計算機を接続する技術が発達するとともに、計算機システムが処理する情報量の拡大に伴い、各処理ステップを複数のタスクとして分解し、マルチタスク実行可能OSが複数のタスクを切り換えながら実行するニーズがある。
In the conventional fault-tolerant system configuration in which computers are connected by dedicated hardware, it is possible to execute the same program at the same time in each computer.
On the other hand, in recent years, with the speeding up of networks and the generalization of computers, technology for connecting multiple computers using general networks instead of dedicated hardware has developed, and the amount of information processed by computer systems has increased. Along with the expansion, there is a need to disassemble each processing step as a plurality of tasks and to execute the multi-task executable OS while switching the plurality of tasks.

しかしながら、マルチタスクを実行可能なOSが搭載されたマルチプロセッサを有する計算機において、他の計算機と同期をとるべき同期タスクと、他の計算機との同期が必要ない非同期タスクとを、どのようにマルチプロセッサに実行させるかについては、考えられてこなかった。   However, in a computer having a multiprocessor on which an OS capable of executing multitasks is mounted, how to synchronize a synchronous task that should be synchronized with another computer and an asynchronous task that does not require synchronization with the other computer. I haven't thought about how to get the processor to run.

本発明は上記のような課題に鑑みてなされたものであり、マルチプロセッサ環境を有する複数の計算機をネットワークで接続した計算機システムにおいて、計算機間でのタスク同期を必要とする同期タスクと、タスク同期を必要としない非同期タスクのプロセッサへの割当についての技術を提供する。   The present invention has been made in view of the above problems, and in a computer system in which a plurality of computers having a multiprocessor environment are connected by a network, a synchronization task that requires task synchronization between the computers, and task synchronization Provide a technique for assigning asynchronous tasks to processors that do not require.

計算機は、他の計算機と同期をとってタスクを処理する同期プロセッサと、他の計算機と同期をとらずにタスクを処理する非同期プロセッサと、同期プロセッサに割り当てられたタスクの状態を管理する同期タスク管理テーブルと、非同期プロセッサに割り当てられたタスクの状態を管理する非同期タスク管理テーブルと、同期プロセッサ及び非同期プロセッサにタスクを割り当てるディスパッチャとを有する。なお、当該計算機と他の計算機は同期タスク管理テーブルの内容を、タスク制御用共有メモリ区画を介して相互に通信して交換している。 The computer has a synchronous processor that processes tasks in synchronization with other computers, an asynchronous processor that processes tasks without synchronizing with other computers, and a synchronous task that manages the state of tasks assigned to the synchronous processors. A management table; an asynchronous task management table that manages a state of a task assigned to the asynchronous processor; and a dispatcher that assigns a task to the synchronous processor and the asynchronous processor. The computer and other computers exchange the contents of the synchronous task management table by communicating with each other via the task control shared memory partition.

ディスパッチャは、タスクが他の計算機と同期をとって処理すべきタスクか否かを判断し、当該判断結果に基づいて、他の計算機と同期をとりながら処理すべき同期タスクは同期プロセッサに割当て、他の計算機との同期が不要な非同期タスクは非同期プロセッサに割当て、同期タスク又は非同期タスクのいずれとしてでも処理可能な同期・非同期タスクについて同期プロセッサ又は非同期プロセッサのどちらに割り当てるかを判定して、該当プロセッサに割当て、同期プロセッサが実行している実行中同期タスクを、他のタスクに切り替える切替ポイントを検出した場合に、実行中同期タスクの状態を待機中に変更し、当該計算機の同期タスク管理テーブルの内容と他の計算機の同期タスク管理テーブルの内容とに基づいて、当該計算機の同期タスク管理テーブルに実行可能タスクとして登録されている複数の同期タスクの内の一を選択して同期プロセッサに実行させるThe dispatcher determines whether or not the task is a task to be processed in synchronization with another computer, and based on the determination result, the synchronous task to be processed while synchronizing with the other computer is assigned to the synchronous processor, Asynchronous tasks that do not require synchronization with other computers are assigned to asynchronous processors, and it is determined whether synchronous or asynchronous tasks that can be processed as either synchronous tasks or asynchronous tasks are assigned to synchronous processors or asynchronous processors. When a switching point that is assigned to the processor and the synchronous task being executed by the synchronous processor is switched to another task is detected, the status of the synchronous task being executed is changed to waiting, and the synchronous task management table of the computer concerned And the contents of the synchronization task management table of the other computer To be executed by the synchronous processor by selecting one of a plurality of synchronization tasks registered as executable task in the period task management table.

その他本願が開示する課題やその解決方法については、発明の実施形態の欄及び図面により明らかにされる。   Other problems and solutions to be disclosed by the present application will be made clear by the embodiments of the invention and the drawings.

本発明によれば、マルチプロセッサ環境を有する複数の計算機をネットワークで接続した計算機システムにおいて、計算機間でのタスク同期を実現することができる。   According to the present invention, task synchronization between computers can be realized in a computer system in which a plurality of computers having a multiprocessor environment are connected via a network.

本実施形態の計算機システムの構成例を示す図である。It is a figure which shows the structural example of the computer system of this embodiment. 本実施形態の計算機の構成例を示す図である。It is a figure which shows the structural example of the computer of this embodiment. 本実施形態のタスク管理テーブルの構成例を示す図である。It is a figure which shows the structural example of the task management table of this embodiment. 本実施形態の非同期用のプロセッサに対して行われるディスパッチを説明する図である。It is a figure explaining the dispatch performed with respect to the processor for asynchronouss of this embodiment. 本実施形態の非同期用のプロセッサに対して行われるアン・ディスパッチを説明する図である。It is a figure explaining the undispatch performed with respect to the processor for asynchronouss of this embodiment. 本実施形態の同期用のプロセッサに対するディスパッチを説明する図である。It is a figure explaining the dispatch with respect to the processor for a synchronization of this embodiment. 同時に複数のタスクが実行可能になった場合のタスク選定処理を説明する図である。It is a figure explaining the task selection process when a several task becomes executable simultaneously. 本実施形態の同期用のプロセッサに対するアン・ディスパッチを説明する図である。It is a figure explaining the undispatch with respect to the processor for a synchronization of this embodiment. 本実施形態の切替システムコールが呼び出された場合のアン・ディスパッチを説明する図である。It is a figure explaining the undispatch when the switching system call of this embodiment is called. 本実施形態の切替システムコールが呼び出された場合のディスパッチを説明する図である。It is a figure explaining dispatch when the switching system call of this embodiment is called. 断片化したメモリに連続領域のメモリ領域を確保する処理を行うタスクの一例を示す図である。It is a figure which shows an example of the task which performs the process which secures the memory area of a continuous area in the fragmented memory. タスクを割り当てるプロセッサを切り替えて、断片化したメモリに連続領域のメモリ領域を確保する処理を行うタスクの一例を示す図である。It is a figure which shows an example of the task which switches the processor which allocates a task, and performs the process which ensures the memory area of a continuous area in the fragmented memory. 本実施形態の同期用のプロセッサから非同期用のプロセッサにタスクを割り当てるプロセッサを変更する処理を説明する図である。It is a figure explaining the process which changes the processor which allocates a task from the processor for a synchronization to the processor for an asynchronous of this embodiment. 本実施形態の非同期用のプロセッサから同期用のプロセッサにタスクを割り当てるプロセッサを変更する処理を説明する図である。It is a figure explaining the process which changes the processor which allocates a task from the asynchronous processor of this embodiment to the processor for synchronization. 本実施形態のタスクプログラムがタスクの同期または非同期を指示する場合の処理を説明する図である。It is a figure explaining the process in case the task program of this embodiment instruct | indicates synchronous or asynchronous of a task. 本実施形態の計算機間で行うタスク管理テーブルの交換がタイムアウトした場合の処理を説明する図である。It is a figure explaining processing when exchange of the task management table performed between computers of this embodiment times out. 本実施形態のタイムアウトを起こした回数を考慮するタイムアウト処理を説明する図である。It is a figure explaining the timeout process which considers the frequency | count which caused the timeout of this embodiment. Voterを含む計算機システムの構成例を示す図である。It is a figure which shows the structural example of the computer system containing Voter. Voterにおける多数決処理に参加する計算機を変更する処理を説明する図である。It is a figure explaining the process which changes the computer which participates in the majority process in Voter. 計算機における同期実行をおこなう計算機を変更する処理を説明する図である。It is a figure explaining the process which changes the computer which performs synchronous execution in a computer. ソフトウェアにエラーが生じた場合の処理を説明する図である。It is a figure explaining the process when an error arises in software. ハードウェアにエラーが生じた場合の処理を説明する図である。It is a figure explaining the process when an error arises in hardware. プロセス間通信の有無を含めてタスクプログラムの同期を行う処理を説明する図である。It is a figure explaining the process which synchronizes a task program including the presence or absence of interprocess communication. あいこ状態を考慮した多数決によるタスクの選定処理を説明する図である。It is a figure explaining the selection processing of the task by the majority vote which considered the Aiko state. 本実施形態の非同期用のプロセッサにて同期タスクの実行をシリアライズするためのタスク管理テーブルの構成例を示す図である。It is a figure which shows the structural example of the task management table for serializing execution of a synchronous task in the asynchronous processor of this embodiment. 本実施形態の非同期用のプロセッサにて同期タスクの実行をシリアライズするための処理を説明する図である。It is a figure explaining the process for serializing the execution of a synchronous task in the asynchronous processor of this embodiment. 本実施形態の同期用のプロセッサから非同期用のプロセッサに同期タスクを割り当てる際のシリアライズ処理を説明する図である。It is a figure explaining the serialization process at the time of allocating a synchronous task from the processor for a synchronization of this embodiment to the processor for an asynchronous. 本実施形態の非同期用のプロセッサから同期用のプロセッサに同期タスクを割り当てる際のシリアライズ完了処理を説明する図である。It is a figure explaining the serialization completion process at the time of allocating a synchronous task from the asynchronous processor of this embodiment to the processor for synchronization. 本実施形態のプロセッサ個別にメモリ回収を行うための構成例を示す図である。It is a figure which shows the structural example for performing memory collection | recovery separately for the processor of this embodiment. 本実施形態のプロセッサ個別にメモリ回収を行う処理を示す図である。It is a figure which shows the process which performs memory collection | recovery for each processor of this embodiment. 本実施形態のシステムにおける、同期タスクおよび非同期タスクの定義テーブルの配置を示す図である。It is a figure which shows arrangement | positioning of the definition table of a synchronous task and an asynchronous task in the system of this embodiment. 本実施形態の同期タスクおよび非同期タスクの定義テーブルの内容を説明する図である。It is a figure explaining the content of the definition table of the synchronous task of this embodiment, and an asynchronous task. 本実施形態のタスクを管理するTCBの内容を説明する図である。It is a figure explaining the content of TCB which manages the task of this embodiment. 本実施形態の同期用のプロセッサから非同期用のプロセッサに同期タスクを割り当てる際の処理を説明する図である。It is a figure explaining the process at the time of allocating a synchronous task from the processor for a synchronization of this embodiment to the processor for an asynchronous. 本実施形態の非同期用のプロセッサから同期用のプロセッサに同期タスクを割り当てる際の処理を説明する図である。It is a figure explaining the process at the time of allocating a synchronous task from the asynchronous processor of this embodiment to the processor for synchronization. 本実施形態のタスク起動処理を説明する図である。It is a figure explaining the task starting process of this embodiment.

−−−システム構成−−−
以下に実施形態について図面を用いて詳細に説明する。図1は、本実施形態の計算機システム10の構成図である。図2は計算機100A内の構成を詳細に示す図である。
--- System configuration ---
Embodiments will be described in detail below with reference to the drawings. FIG. 1 is a configuration diagram of a computer system 10 according to this embodiment. FIG. 2 is a diagram showing the configuration in the computer 100A in detail.

計算機システム10は、マルチプロセッサ環境を有する複数の計算機をネットワークで接続した計算機システムであって、計算機間でのタスク同期を行い、フォールトトレラントシステムを構成するコンピュータシステムである。
計算機システム10は、少なくとも2台の計算機100Aと計算機100Bがネットワーク400および500によって接続されている。計算機100Aと計算機100Bは同一の構成を有しており、以下では、詳細な構造については計算機100Aについてのみ説明する。
The computer system 10 is a computer system in which a plurality of computers having a multiprocessor environment are connected via a network, and is a computer system that constitutes a fault-tolerant system by performing task synchronization between computers.
In the computer system 10, at least two computers 100A and 100B are connected by networks 400 and 500. The computer 100A and the computer 100B have the same configuration, and only the computer 100A will be described in detail below for the detailed structure.

計算機100Aは、2つのプロセッサ180A(180A−1および180A−2)、タイマー170A、通信インターフェース150Aおよび160A、ならびにメモリ110Aを備え、これらはバス190Aにて接続されている。
本実施形態では、プロセッサ180A−1は、計算機100Bとの間でタスクを同期するタスク同期用として用い、プロセッサ180A−2は、計算機100Bとは独立して動作するタスク非同期用として用いるものとする。なお、タスク非同期用のプロセッサ180A−2の用途が一般的である。
The computer 100A includes two processors 180A (180A-1 and 180A-2), a timer 170A, communication interfaces 150A and 160A, and a memory 110A, which are connected by a bus 190A.
In the present embodiment, the processor 180A-1 is used for task synchronization that synchronizes tasks with the computer 100B, and the processor 180A-2 is used for task asynchronous operation that operates independently of the computer 100B. . Note that the task asynchronous processor 180A-2 is generally used.

メモリ110Aは、2つのタスクプログラム120(120Aおよび120B)、オペレーティングシステム140A、ならびに、計算機100Bとの間でのタスク同期に必要な情報を送受するためのタスク制御用共有メモリ区画130Aなどを備えている。なお、タスクプログラム120には、オペレーティングシステムを実現するために必要なシステムプログラムと、それ以外のユーザプログラムとを含む。本実施形態では、システムプログラムは不図示とし、ユーザプログラムのみをタスクプログラム120として図示することとする。   The memory 110A includes two task programs 120 (120A and 120B), an operating system 140A, a task control shared memory partition 130A for transmitting and receiving information necessary for task synchronization with the computer 100B, and the like. Yes. The task program 120 includes a system program necessary for realizing an operating system and other user programs. In this embodiment, the system program is not shown, and only the user program is shown as the task program 120.

オペレーティングシステム140Aは、複数のタスクを実行することのできるマルチタスク実行可能なオペレーティングシステムである。なお、オペレーティングシステム140Aは、プロセッサ180Aがメモリ110Aに記憶されているシステムプログラムを実行することにより実現される。すなわち、オペレーティングシステム140Aも、タスクが実行されることにより実現される。オペレーティングシステム140Aは、タスクプログラム120の実行に係る処理をタスクに分解し、各タスクをプロセッサ180A−1または180A−2に割り当てるディスパッチャ141A、タスク同期を行うためにタスク間メッセージを考慮したタスク同期を行うためのシグナル管理テーブル112A・タスク間メッセージ管理テーブル143A、プロセッサ180A−1および180A−2に割り当てたタスクに関する情報(「タスク制御ブロック;Task Control Block」という。以下、「TCB」と表記する。)を記憶する2つのタスク管理テーブル143(143A−1および143A−2)、同期計算機管理テーブル111Aを備える。タスク管理テーブル143A−1は、プロセッサ180A−1に割り当てられたタスクのTCBを記憶し、タスク管理テーブル143A−2は、プロセッサ180A−2に割り当てられたタスクのTCBを記憶する。   The operating system 140A is an operating system capable of executing a plurality of tasks and capable of executing a multitask. The operating system 140A is realized by the processor 180A executing a system program stored in the memory 110A. That is, the operating system 140A is also realized by executing a task. The operating system 140A disassembles processing related to the execution of the task program 120 into tasks, dispatcher 141A that assigns each task to the processor 180A-1 or 180A-2, and task synchronization that considers inter-task messages to perform task synchronization. Information relating to tasks assigned to the signal management table 112A and inter-task message management table 143A and the processors 180A-1 and 180A-2 (referred to as “Task Control Block”; hereinafter referred to as “TCB”). ), Two task management tables 143 (143A-1 and 143A-2) and a synchronous computer management table 111A. The task management table 143A-1 stores the TCB of the task assigned to the processor 180A-1, and the task management table 143A-2 stores the TCB of the task assigned to the processor 180A-2.

オペレーティングシステム140Aは、計算機100A内のリソースを複数のタスクに割り当てるために、プリエンプションを行う技術を提供している。プリエンプションとは、実行中のタスクを一時的に打ち切り、他のタスクにリソースを使用させることである。   The operating system 140A provides a technique for performing preemption in order to allocate resources in the computer 100A to a plurality of tasks. Preemption is to temporarily abort a task being executed so that other tasks can use the resource.

後述するように、各タスクには優先度が設定可能となっており、オペレーティングシステム140Aは、優先度に応じて、タスクの実行順序を決定する。実行優先度の高いタスクが存在する場合は、実行優先度が低いタスクはプリエンプションにより実行権限を一時的に打ち切られる。オペレーティングシステム140Aは、タスクごとに定められる所定の時間タスクを実行した場合にも、そのタスクの実行を打ち切る。   As will be described later, a priority can be set for each task, and the operating system 140A determines the task execution order according to the priority. If there is a task with a high execution priority, the execution authority of the task with a low execution priority is temporarily discontinued by preemption. Even when the operating system 140A executes a task for a predetermined time determined for each task, the execution of the task is aborted.

タスクプログラム120には、複数の命令が含まれる。図2には、タスクプログラム120Aの構成例が図示されている。タスクプログラム120Aには、制御命令列A120−1、システムコール120−2、および制御命令列B120−3が含まれている。ここでシステムコール120−2とは、タスクからオペレーティングシステム140Aに対する命令である。システムコール120−2としては、例えば、ディスクへのアクセス命令や、タイマー170Aからの時刻の取得命令などがある。オペレーティングシステム140Aは、タスクから呼び出されるシステムコールに応じて、例えば、ディスクへのアクセスや、タイマー170Aからの時刻の取得を行うなどの各種の処理を行う。   The task program 120 includes a plurality of instructions. FIG. 2 shows a configuration example of the task program 120A. The task program 120A includes a control instruction sequence A120-1, a system call 120-2, and a control instruction sequence B120-3. Here, the system call 120-2 is a command from the task to the operating system 140A. Examples of the system call 120-2 include a disk access command and a time acquisition command from the timer 170A. The operating system 140A performs various processes such as accessing the disk and acquiring the time from the timer 170A, for example, in response to a system call called from the task.

近年計算機は、より高速に処理を実行するためにキャッシュ機能を提供している。プログラムが使用する情報がキャッシュにヒットする場合、計算機が保有するメモリから情報を取得する必要がないため、高速に動作することが可能となる。本実施形態の計算機システム10では、クロック同期などを行うことなく計算機100Aと計算機100Bとは独立に動作するため、例えば、計算機100Aにおいてキャッシュに情報が格納された場合にも計算機100Bではキャッシュに情報が格納されないという状況が発生し得る。しかし、このような状況においても、後述するように、計算機100A及び100Bがタスクをディスパッチする際に、同じタスクをディスパッチするように情報を交換することにより同期を行うことが可能となっている。   In recent years, computers have provided a cache function in order to execute processing at higher speed. When the information used by the program hits the cache, it is not necessary to acquire the information from the memory held by the computer, so that it can operate at high speed. In the computer system 10 of the present embodiment, the computer 100A and the computer 100B operate independently without performing clock synchronization or the like. For example, even when information is stored in the cache in the computer 100A, the computer 100B stores information in the cache. A situation can occur where the is not stored. However, even in such a situation, as will be described later, when the computers 100A and 100B dispatch tasks, it is possible to perform synchronization by exchanging information so that the same tasks are dispatched.

プロセッサ180A−1は、プログラムカウンタ180A−1a、汎用レジスタ180A−1b、および制御レジスタ180A−1cを備えている。なお、プロセッサ180A−2も同様の構成である。
プログラムカウンタ180A−1aは、プロセッサ180A−1が次に実行するべき命令が格納されているメモリ110A上のアドレスを指し示すレジスタである。プロセッサ180A−1がメモリ110Aから命令を読み込む度に、読み取った命令の分だけ値が増加する。
The processor 180A-1 includes a program counter 180A-1a, general-purpose registers 180A-1b, and control registers 180A-1c. The processor 180A-2 has the same configuration.
The program counter 180A-1a is a register indicating an address on the memory 110A in which an instruction to be executed next by the processor 180A-1 is stored. Each time processor 180A-1 reads an instruction from memory 110A, the value increases by the amount of the read instruction.

汎用レジスタ180A−1bは、各種の値を記憶するレジスタである。汎用レジスタ180A−1bは、プロセッサ180A−1が行う演算処理などに用いられる。
制御レジスタ180A−1cは、各種のフラグをリセットし、あるいはプロセッサ180A−1の動作モードを特定のモード(例えば、低消費電力モード)にするように指示するためのレジスタである。
General-purpose registers 180A-1b are registers that store various values. The general-purpose register 180A-1b is used for arithmetic processing performed by the processor 180A-1.
The control register 180A-1c is a register for instructing to reset various flags or set the operation mode of the processor 180A-1 to a specific mode (for example, a low power consumption mode).

図3は、タスク管理テーブル143の構成例を示す図である。計算機100Aで実行されるタスクは、生成されてから消滅するまでの間、実行中の状態、実行可能であるがまだ実行されていない状態(実行可能状態)、条件成就や入力などを待機している状態(待機状態)の間でその状態が遷移する。タスク管理テーブル143には、実行可能状態であるタスクに係るTCB146が格納される実行可能タスクキュー144、待機状態であるタスクに係るTCB146が格納される待機状態タスクキュー145、および実行中のタスクのTCB146を格納する実行中タスク147が含まれる。一般的には実行可能タスクキュー144には、優先度の高い順にTCB146が格納され、先頭から順にタスクがディスパッチされることにより、優先度が高い順にタスクがディスパッチされるようになっている。   FIG. 3 is a diagram illustrating a configuration example of the task management table 143. The task executed by the computer 100A waits for the state being executed, the state that can be executed but not yet executed (executable state), the fulfillment of the condition, the input, etc. The state transitions between existing states (standby states). The task management table 143 includes an executable task queue 144 that stores a TCB 146 related to a task in an executable state, a standby task queue 145 that stores a TCB 146 related to a task in a standby state, and a task being executed A running task 147 that stores the TCB 146 is included. In general, the TCB 146 is stored in the executable task queue 144 in the descending order of priority, and tasks are dispatched in order from the top by dispatching the tasks in order from the top.

TCB146には、ポインタ146−0が含まれる。実行可能タスクキュー144および待機状態タスクキュー145は、キューの先頭のTCB146を示すポインタを含み、実行可能タスクキュー144および待機状態タスクキュー145に格納されているTCB146のポインタ146−0には、キューにおける次のTCB146を示すポインタが格納される。キューの最後尾のTCB146のポインタ146−0にはnullが設定される。   The TCB 146 includes a pointer 146-0. The executable task queue 144 and the standby task queue 145 include pointers indicating the TCB 146 at the head of the queue. The pointers 146-0 of the TCB 146 stored in the executable task queue 144 and the standby task queue 145 include queues. A pointer indicating the next TCB 146 is stored. A null is set in the pointer 146-0 of the TCB 146 at the end of the queue.

また、TCB146には、タスクID146−1、プログラムカウンタ146−2、汎用レジスタ146−3、制御レジスタ146−4、割り込み可否146−5、プリエンプトタイプ146−6が含まれる。   The TCB 146 includes a task ID 146-1, a program counter 146-2, a general purpose register 146-3, a control register 146-4, an interrupt enable / disable 146-5, and a preemption type 146-6.

タスクは、タスクID146−1により識別される。プログラムカウンタ146−2は、プロセッサ180A−1のプログラムカウンタ180A−1aに設定される値である。   The task is identified by a task ID 146-1. The program counter 146-2 is a value set in the program counter 180A-1a of the processor 180A-1.

汎用レジスタ146−3は、プロセッサ180A−1の汎用レジスタ180A−1bに設定される値である。制御レジスタ146−4は、プロセッサ180A−1の制御レジスタ180A−1cに設定される値である。ディスパッチャ141Aは、プロセッサ180A−1において実行中のタスクの実行を打ち切って他のタスクに切り替える場合に、プログラムカウンタ180A−1a、汎用レジスタ180A−1b、および制御レジスタ180A−1cの内容をTCB146に設定して、タスクが実行可能状態である場合には実行可能タスクキュー144に追加し、タスクが待機状態である場合には、待機状態タスクキュー145に追加し、実行可能タスクキュー144から1つTCB146を読み出して、TCB146のプログラムカウンタ146−2、汎用レジスタ146−3、および制御レジスタ146−4の内容をプロセッサ180A−1に設定することにより、タスクの切り替えを行う。   The general register 146-3 is a value set in the general register 180A-1b of the processor 180A-1. The control register 146-4 is a value set in the control register 180A-1c of the processor 180A-1. The dispatcher 141A sets the contents of the program counter 180A-1a, the general-purpose register 180A-1b, and the control register 180A-1c in the TCB 146 when the execution of the task being executed in the processor 180A-1 is stopped and switched to another task. If the task is in an executable state, the task is added to the executable task queue 144. If the task is in a standby state, the task is added to the standby state task queue 145, and one TCB 146 is added from the executable task queue 144. And the contents of the program counter 146-2, general-purpose register 146-3, and control register 146-4 of the TCB 146 are set in the processor 180A-1, thereby switching tasks.

本実施形態では、ディスパッチャ141Aが、プロセッサ180Aのカウンタやレジスタの内容をTCB146に設定して実行中のタスクを打ち切ることを「アン・ディスパッチ」といい、TCB146に基づいてプロセッサ180Aに新たなタスクを実行させることを「ディスパッチ」ということとする。   In the present embodiment, the dispatcher 141A setting the counter and register contents of the processor 180A in the TCB 146 and aborting the task being executed is referred to as “undispatch”, and a new task is assigned to the processor 180A based on the TCB 146. The execution is referred to as “dispatching”.

タスク制御用共有メモリ区画130は、各計算機100間で分散共有されるメモリである。タスク制御用共有メモリ区画130は、タスクの同期処理を行う頻度よりも高い頻度でOS140により計算機100間で内容の同期が行われているものとする。後述するように、タスク制御用共有メモリ区画130には、実行可能タスクキュー144に格納されているTCB146がコピーされる。これによりディスパッチャ141は、各計算機100における実行可能タスクキュー144に格納されているTCB146を交換することが可能になっている。   The task control shared memory section 130 is a memory that is distributed and shared among the computers 100. It is assumed that the task control shared memory partition 130 synchronizes the contents between the computers 100 by the OS 140 at a frequency higher than the frequency at which the task synchronization processing is performed. As will be described later, the TCB 146 stored in the executable task queue 144 is copied to the task control shared memory partition 130. As a result, the dispatcher 141 can exchange the TCB 146 stored in the executable task queue 144 in each computer 100.

同期計算機管理テーブル111は、同期をとろうとする計算機100を示す識別情報に対応付けて、当該計算機100と同期がとれているか否かを示すフラグやステータス情報を管理する。
シグナル管理テーブル112には、タスク間通信のためにシグナルが発生するごとに、発生したシグナルに関する情報がキューとして登録される。
The synchronous computer management table 111 manages flags and status information indicating whether or not synchronization with the computer 100 is established in association with identification information indicating the computer 100 to be synchronized.
Every time a signal is generated for communication between tasks, information regarding the generated signal is registered in the signal management table 112 as a queue.

以下、本実施形態における計算機制御方法の実際手順について図に基づき説明する。以下で説明する計算機制御方法に対応する各種動作は、計算機システム10を構成する各装置のRAM(Random Access Memory)に読み出して実行するプログラムによって実現される。そして、このプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。   Hereinafter, the actual procedure of the computer control method according to the present embodiment will be described with reference to the drawings. Various operations corresponding to the computer control method described below are realized by a program that is read and executed in a RAM (Random Access Memory) of each device constituting the computer system 10. And this program is comprised from the code | cord | chord for performing the various operation | movement demonstrated below.

−−−非同期ディスパッチ−−−
図4は、非同期用のプロセッサ180A−2に対して行われるディスパッチ(待ち状態からディスパッチ)を説明する図である。なお、一般的なプロセッサに対するディスパッチの処理も、図4に示すようなものになる。
ディスパッチャ141Aは、タスク管理テーブル143A−2の実行可能タスクキュー144より、先頭のTCB146Aを選定する(S701)。すなわち、ディスパッチャ141Aは、実行可能タスクキュー144のポインタが示すTCB146Aを選定する。
--- Asynchronous dispatch ---
FIG. 4 is a diagram for explaining the dispatch (dispatch from the wait state) performed for the asynchronous processor 180A-2. Note that dispatch processing for a general processor is also as shown in FIG.
The dispatcher 141A selects the first TCB 146A from the executable task queue 144 of the task management table 143A-2 (S701). That is, the dispatcher 141A selects the TCB 146A indicated by the pointer of the executable task queue 144.

ディスパッチャ141Aは、選定したTCB146Aより、プログラムカウンタ情報146−2の情報をプログラムカウンタ180A−2aに格納し、汎用レジスタ情報146−3の情報を汎用レジスタ180A−2bに格納し、制御レジスタの情報146−4を制御レジスタ180A−2cに格納する(S702)。ディスパッチャ141Aは、実行中タスク147のポインタが示すTCB146Eを待機状態タスクキュー145の最後尾に追加する。すなわち、ディスパッチャ141は、待機状態タスクキュー145のポインタが示すTCB146Cから、TCB146のポインタ146−0がnullになる最後尾のTCB146Dまで辿り、最後尾のTCB146Dのポインタ146−0にTCB146Eを示すポインタを設定し、TCB146Eのポインタ146−0にnullを設定する。ディスパッチャ141Aは、実行可能タスクキュー144の先頭から選定したTCB146Aを実行中タスク147として設定する。すなわち、ディスパッチャ141Aは、TCB146Aを示すポインタを実行中タスク147のポインタに設定する(S703)。   From the selected TCB 146A, the dispatcher 141A stores the information of the program counter information 146-2 in the program counter 180A-2a, the information of the general register information 146-3 in the general register 180A-2b, and the control register information 146. -4 is stored in the control register 180A-2c (S702). The dispatcher 141A adds the TCB 146E indicated by the pointer of the executing task 147 to the end of the waiting state task queue 145. That is, the dispatcher 141 traces from the TCB 146C indicated by the pointer of the waiting state task queue 145 to the last TCB 146D where the pointer 146-0 of the TCB 146 becomes null, and sets the pointer indicating the TCB 146E to the pointer 146-0 of the last TCB 146D. And set null to the pointer 146-0 of the TCB 146E. The dispatcher 141A sets the TCB 146A selected from the head of the executable task queue 144 as the executing task 147. That is, the dispatcher 141A sets the pointer indicating the TCB 146A as the pointer of the executing task 147 (S703).

また、ディスパッチャ141Aは、実行可能タスクキュー144のポインタに、TCB146Aの次に位置するTCB146Bを示すポインタを設定する。ディスパッチャ141Aは、プロセッサ180A−2に実行を指示する(S704)。
このようにして、プロセッサ180A−2におけるタスクの切り替えが行われる。
Further, the dispatcher 141A sets a pointer indicating the TCB 146B positioned next to the TCB 146A in the pointer of the executable task queue 144. The dispatcher 141A instructs the processor 180A-2 to execute (S704).
In this way, task switching is performed in the processor 180A-2.

−−−非同期アン・ディスパッチ−−−
図5は、非同期用プロセッサ180A−2に対して行われるアン・ディスパッチ(ディスパッチから待ち状態)を説明する図である。なお、一般的なプロセッサに対するアン・ディスパッチの処理も、図5に示すようなものになる。
ディスパッチャ141Aは、プロセッサ180A−2に実行中断を指示し(S705)、プロセッサ180A−2の状態を、実行中タスク147のポインタが示すTCB146Aに退避する。すなわち、ディスパッチャ141Aは、プログラムカウンタ180A−2aの情報をプログラムカウンタ情報146−2に格納し、汎用レジスタ180A−2bの情報を汎用レジスタ情報146−3に格納し、制御レジスタ180A−2cの情報を制御レジスタ情報146−4に格納する(S706)。
これにより、プロセッサ180A−2の状態がTCB146Aに退避され、アン・ディスパッチ処理が終了する。
--- Asynchronous undispatching ---
FIG. 5 is a diagram for explaining undispatching (waiting state from dispatch) performed for the asynchronous processor 180A-2. An undispatch process for a general processor is also as shown in FIG.
The dispatcher 141A instructs the processor 180A-2 to suspend execution (S705), and saves the state of the processor 180A-2 to the TCB 146A indicated by the pointer of the executing task 147. That is, the dispatcher 141A stores the information of the program counter 180A-2a in the program counter information 146-2, stores the information of the general register 180A-2b in the general register information 146-3, and stores the information of the control register 180A-2c. The information is stored in the control register information 146-4 (S706).
As a result, the state of the processor 180A-2 is saved in the TCB 146A, and the undispatch process ends.

−−−同期ディスパッチ−−−
図6は、ディスパッチャ141によるオペレーティングシステム140内での同期用のプロセッサ180A−1に対する同期ディスパッチを説明する図である。図6に示す処理は、オペレーティングシステム140内タスク同期制御(待ち状態からディスパッチ)である。一般的なディスパッチとの違いはステップS714の前に同期処理が行われることである。なお、図6のS714は、図4のS702〜S704に対応する。
---- Synchronous dispatch ---
FIG. 6 is a diagram for explaining the synchronous dispatch to the processor 180A-1 for synchronization in the operating system 140 by the dispatcher 141. The processing shown in FIG. 6 is task synchronization control within the operating system 140 (dispatching from a wait state). The difference from general dispatch is that synchronization processing is performed before step S714. Note that S714 in FIG. 6 corresponds to S702 to S704 in FIG.

オペレーティングシステム140Aにおいてディスパッチャ141Aが起動されると(S710)、ディスパッチャ141Aは、計算機100Bのディスパッチャ141Bとの間で、タスク管理テーブル143A−1内の実行可能タスクキュー144(以下、「実行可能タスクキュー144A」という。)の内容と、タスク管理テーブル143B−1内の実行可能タスクキュー144(以下、「実行可能タスクキュー144B」という。)の内容とを通信インターフェース160および150を介して交換し、各同期計算機100Aと100Bの制御用共有メモリ区画130A、130Bに各々格納する(S712)。ディスパッチャ141Aは、実行可能タスクキュー144Aに登録されているTCB146と、実行可能タスクキュー144Bに登録されているTCB146との両方の情報を制御用共有メモリ区画130より取得し、優先度を含めて一致化しているかを確認し、次にプロセッサ180A−1に割り当てるべきタスクを選定する。(S713)。   When the dispatcher 141A is activated in the operating system 140A (S710), the dispatcher 141A makes an executable task queue 144 (hereinafter, “executable task queue” in the task management table 143A-1 with the dispatcher 141B of the computer 100B. 144A ") and the contents of the executable task queue 144 (hereinafter referred to as" executable task queue 144B ") in the task management table 143B-1 are exchanged via the communication interfaces 160 and 150. The data is stored in the control shared memory partitions 130A and 130B of the respective synchronous computers 100A and 100B (S712). The dispatcher 141A acquires both the information of the TCB 146 registered in the executable task queue 144A and the TCB 146 registered in the executable task queue 144B from the control shared memory partition 130, and includes the priority and matches. Next, a task to be assigned to the processor 180A-1 is selected. (S713).

図7は、プロセッサ180A−1に割り当てるべき(ディスパッチするべき)タスクが存在する場合のタスクの選定処理の一例を説明する図である。各計算機100において同一優先度の実行可能タスクキュー141に同時に複数のタスクが存在する場合を想定している。   FIG. 7 is a diagram for explaining an example of task selection processing when there is a task to be allocated (dispatched) to the processor 180A-1. It is assumed that each computer 100 has a plurality of tasks in the executable task queue 141 having the same priority at the same time.

ディスパッチャ141Aは、実行可能タスクキュー144の内容をタスク制御用共有メモリ区画130Aに書き込む。上述したように、タスク制御用共有メモリ区画130Aは、他の計算機100と共有されているので、各計算機100の実行可能タスクキュー144の内容がタスク制御用共有メモリ区画130Aに書き込まれることになる。   The dispatcher 141A writes the contents of the executable task queue 144 to the task control shared memory partition 130A. As described above, since the task control shared memory partition 130A is shared with other computers 100, the contents of the executable task queue 144 of each computer 100 are written to the task control shared memory partition 130A. .

ディスパッチャ141Aは、同期計算機管理テーブル111Aを参照し、同期を取る計算機100(以下、「同期計算機」ともいう。)がn台であることを確認する(S7131)。ディスパッチャ141Aは、同期を取る計算機100のそれぞれからタスク制御用共有メモリ区画130Aに書き込まれているTCB146のタスクID146−1のうち、タスク制御用共有メモリ区画130Aにn個存在するものがあるか否かを判断する(S7132)。ディスパッチャ141Aは、n個存在するタスクIDのうち、識別子が最も若い同期計算機100の実行可能タスクキュー144の最も先頭に近いものに対応するタスクをディスパッチするタスクとして選定する(S7133)。   The dispatcher 141A refers to the synchronous computer management table 111A and confirms that there are n computers 100 (hereinafter also referred to as “synchronous computers”) to be synchronized (S7131). Whether the dispatcher 141A has n task IDs 146-1 of the TCB 146 written in the task control shared memory partition 130A from each of the computers 100 to be synchronized exists in the task control shared memory partition 130A. Is determined (S7132). The dispatcher 141A selects a task corresponding to the task closest to the head of the executable task queue 144 of the synchronous computer 100 having the youngest identifier among n task IDs as a task to be dispatched (S7133).

ディスパッチャ141Aは、上記n個存在するタスクID146−1がない場合には、タスクID146−1がn個タスク制御用共有メモリ区画130Aに書き込まれるまで、所定のタイムアウト時間待機する。タイムアウト時間が経過しても、n個のタスクID146−1が書き込まれない場合には、いずれかの計算機100の同期が外れた事が考えられる。そこで、タイムアウト時間が経過した場合、ディスパッチャ141Aは、nを1つ減算し(S7134)、nが2より多い場合には(S7135:NO)、n個のタスクID146−1がタスク制御用共有メモリ区画130Aに書き込まれているか否かを判断する(S7136)。ディスパッチャ141Aは、上記n個のタスクID146−1が存在する場合(S7136:YES)、当該タスクID146−1のうち識別子が最も若い計算機100の実行可能タスクキュー144の最も先頭に近いものを選択し、選択したタスクID146−1が実行可能タスクキュー144に含まれていない計算機100を、同期外れを起こした計算機100として、同期計算機管理テーブル111Aより除外する(S7137)。ディスパッチャ141Aは、S7133に進み、同期が外れた計算機100を除外した上で、上記選択したタスクIDに対応するタスクをディスパッチするタスクとして選定する。ディスパッチャ141Aは、n個のタスクID146−1がタスク制御用共有メモリ区画130Aに書き込まれていない場合には(S7136)、S7134に戻り、さらにnを1減算する。   If there are no n task IDs 146-1, the dispatcher 141A waits for a predetermined timeout period until n task IDs 146-1 are written in the task control shared memory partition 130A. If n task IDs 146-1 are not written even after the time-out period elapses, it is possible that one of the computers 100 is out of synchronization. Therefore, when the time-out period has elapsed, the dispatcher 141A subtracts 1 from n (S7134), and when n is greater than 2 (S7135: NO), n task IDs 146-1 are shared memory for task control. It is determined whether or not data is written in the partition 130A (S7136). If the n task IDs 146-1 exist (S7136: YES), the dispatcher 141A selects the task ID 146-1 that is closest to the top of the executable task queue 144 of the computer 100 with the smallest identifier. The computer 100 in which the selected task ID 146-1 is not included in the executable task queue 144 is excluded from the synchronous computer management table 111A as the computer 100 that has lost synchronization (S7137). The dispatcher 141A proceeds to S7133, excludes the computer 100 out of synchronization, and selects the task corresponding to the selected task ID as a task to be dispatched. If the n task IDs 146-1 are not written in the task control shared memory partition 130A (S7136), the dispatcher 141A returns to S7134 and further subtracts 1 from n.

nが2以下、すなわち同期している計算機100が2台以下となり、多数決が取れない場合、もしくは、nが1で同期する計算機100が1台しか存在しなくなった場合には(S7135:YES)、ディスパッチャ141Aは、同期計算機100のうち識別子の最も若い計算機100を同期計算機管理テーブル111Aに残し、その他の計算機100を同期計算機管理テーブル111Aから除外する(S7138)。ディスパッチャ141Aは、S7133に進み、同期計算機管理テーブル111Aに残された計算機100の実行可能タスクキュー144の最も先頭のタスクID146−1に対応するタスクをディスパッチするタスクとして選定する。   When n is 2 or less, that is, when there are 2 or less synchronized computers 100 and a majority vote cannot be obtained, or when there is only one computer 100 synchronized with n being 1 (S7135: YES) The dispatcher 141A leaves the computer 100 having the youngest identifier among the synchronous computers 100 in the synchronous computer management table 111A and excludes the other computers 100 from the synchronous computer management table 111A (S7138). The dispatcher 141A proceeds to S7133 and selects the task corresponding to the first task ID 146-1 of the executable task queue 144 of the computer 100 left in the synchronous computer management table 111A as a task to be dispatched.

以上のようにして、同期計算機管理テーブル111を使用し、同期計算機情報を更新しながら多数決によりタスクの選定が行われる。   As described above, using the synchronous computer management table 111, tasks are selected by majority vote while updating the synchronous computer information.

図7の処理によりディスパッチすべきタスクが選定されると、ディスパッチャ141Aは、図4のS702〜S704と同様に、選定したタスクのTCB146の内容をプロセッサ180A−1に設定して、プロセッサ180A−1に選定したタスクを実行させる(S714)。   When a task to be dispatched is selected by the processing of FIG. 7, the dispatcher 141A sets the content of the TCB 146 of the selected task in the processor 180A-1 similarly to S702 to S704 of FIG. The selected task is executed (S714).

以上のようにして、全ての計算機100において、実行可能タスクキュー144を交換した上で、全ての実行可能タスクキュー144に基づいてディスパッチすべきタスクを決定するので、全ての計算機100において同じタスクを次に割り当てるタスクに決定することができる。これにより、実行可能タスクキュー144に登録されているTCB146が計算機100によって異なる場合でも、全ての計算機100において同じタスクがディスパッチされるようにすることができる。よって、クロック同期等を行うことなく、タスクの同期を行うことができる。   As described above, after exchanging the executable task queue 144 in all the computers 100, the task to be dispatched is determined based on all the executable task queues 144. The next task to be assigned can be determined. As a result, even when the TCB 146 registered in the executable task queue 144 differs depending on the computer 100, the same task can be dispatched in all the computers 100. Therefore, tasks can be synchronized without performing clock synchronization or the like.

−−−同期アン・ディスパッチ−−−
図8は、ディスパッチャ141によるオペレーティングシステム140内での同期用のプロセッサ180A−1に対するアン・ディスパッチを説明する図である。図8に示す処理は、オペレーティングシステム140内タスク同期制御(実行状態から待ち状態)である。
ディスパッチャ141Aは、オペレーティングシステム140Aからタスク120Bを待機させる旨の指示を受けると(S715)、プロセッサ180A−1が実行中であるタスク120Bの情報を回収する(S716)。すなわち、ディスパッチャ141Aは、図5のS705およびS706と同様に、プロセッサ180A−1に実行を中断するように指示し、プロセッサ180A−1のプログラムカウンタ180A−1a、汎用レジスタ180A−1bおよび制御レジスタ180A−1cの内容を、タスク管理テーブル143A−1に含まれる実行中タスク147のポインタが示すTCB146Eに設定する。ディスパッチャ141Aは、TCB146Eを、タスク管理テーブル143A−1の待ち状態タスクキュー145に移動する(S717)。
---- Synchronous undispatch ----
FIG. 8 is a diagram for explaining undispatch to the processor 180A-1 for synchronization in the operating system 140 by the dispatcher 141. The processing shown in FIG. 8 is task synchronization control within the operating system 140 (from the execution state to the waiting state).
When receiving an instruction from the operating system 140A to wait for the task 120B (S715), the dispatcher 141A collects information on the task 120B being executed by the processor 180A-1 (S716). That is, the dispatcher 141A instructs the processor 180A-1 to suspend execution in the same manner as S705 and S706 in FIG. 5, and the program counter 180A-1a, general-purpose register 180A-1b, and control register 180A of the processor 180A-1 The contents of -1c are set in the TCB 146E indicated by the pointer of the running task 147 included in the task management table 143A-1. The dispatcher 141A moves the TCB 146E to the waiting state task queue 145 of the task management table 143A-1 (S717).

−−−同期アン・ディスパッチ−−−
上記のように、ディスパッチおよびアン・ディスパッチのタイミング(切替可能ポイント)は、オペレーティングシステム140Aのディスパッチャ141Aが決定するが、タスクプログラム120がそのタイミングを指示するようにすることもできる。この場合、所定のシステムコールを呼び出すAPI(Application Program Interface)を規定しておくようにする。以下、ディスパッチやアン・ディスパッチのタイミングを決定するためのAPIに規定されたシステムコールを「切替システムコール」という。また、図2のタスクプログラム120Aに含まれるシステムコール120−2は、切替システムコールであるものとする。
---- Synchronous undispatch ----
As described above, the dispatcher 141A of the operating system 140A determines the dispatch and undispatch timing (switchable point), but the task program 120 can also indicate the timing. In this case, an API (Application Program Interface) for calling a predetermined system call is specified. Hereinafter, a system call defined in the API for determining the timing of dispatch or undispatch is referred to as a “switching system call”. Also, it is assumed that the system call 120-2 included in the task program 120A of FIG. 2 is a switching system call.

図9は、切替システムコールが呼び出された場合のアン・ディスパッチを説明する図である。図9に示す処理は、ディスパッチャ141によるタスク内でのAPIを介したタスク同期制御(実行状態から待ち状態)である。システムコール120−2がアン・ディスパッチを指示する切替システムコールであり、タスクがシステムコール120−2を呼び出すと(S720)、ディスパッチャ141Aは、図8のS716、S717の処理を行う。   FIG. 9 is a diagram for explaining undispatching when a switching system call is called. The processing shown in FIG. 9 is task synchronous control (from the execution state to the waiting state) via the API in the task by the dispatcher 141. When the system call 120-2 is a switching system call that instructs undispatching, and the task calls the system call 120-2 (S720), the dispatcher 141A performs the processing of S716 and S717 in FIG.

−−−APIによる同期ディスパッチ−−−
図10は、切替システムコールが呼び出された場合のディスパッチを説明する図である。図10に示す処理は、ディスパッチャ141によるタスク内でのAPIを介したタスク同期制御(待ち状態から実行状態)である。システムコール120−2がディスパッチを指示する切替システムコールであり、タスクが、切替先としてタスク120Aを指定してシステムコール120−2を呼び出した場合(S730)、ディスパッチャ141Aは、タスク管理テーブル143A−1内の待ち状態タスクキュー145に格納されている、タスク120Aに係るTCB146を、実行可能タスクキュー144に移動する(S732)。ディスパッチャ141Aは、計算機100Bのディスパッチャ141Bとの間で、タスク管理テーブル143A−1およびタスク管理テーブル143B−1内の実行可能タスクキュー144に格納されているTCB146A、146Bを通信インターフェース160および150を介して交換する(S733)。ディスパッチャ141Aは、タスク管理テーブル143A−1の実行可能タスクキュー144に登録されているTCB146と、タスク管理テーブル143B−1の実行可能タスクキュー144に登録されているTCB146との両方に基づいて、次にプロセッサ180A−1に割り当てるべきタスクを選定する(S734)。ディスパッチャ141Aは、図4のS702−S704と同様に、選定したタスクのTCB146の内容をプロセッサ180A−1に設定して、プロセッサ180A−1に選定したタスクを実行させる(S735)。
--- Synchronous dispatch by API ---
FIG. 10 is a diagram for explaining dispatch when the switching system call is called. The processing shown in FIG. 10 is task synchronization control (from waiting state to executing state) via an API within the task by the dispatcher 141. When the system call 120-2 is a switching system call instructing dispatch, and the task calls the system call 120-2 with the task 120A specified as the switching destination (S730), the dispatcher 141A displays the task management table 143A- The TCB 146 related to the task 120A stored in the waiting state task queue 145 in 1 is moved to the executable task queue 144 (S732). The dispatcher 141A communicates with the dispatcher 141B of the computer 100B via the communication interfaces 160 and 150 through the TCBs 146A and 146B stored in the task management table 143A-1 and the executable task queue 144 in the task management table 143B-1. Are exchanged (S733). The dispatcher 141A performs the following based on both the TCB 146 registered in the executable task queue 144 of the task management table 143A-1 and the TCB 146 registered in the executable task queue 144 of the task management table 143B-1. A task to be assigned to the processor 180A-1 is selected (S734). The dispatcher 141A sets the contents of the TCB 146 of the selected task in the processor 180A-1 and causes the processor 180A-1 to execute the selected task, similarly to S702 to S704 in FIG. 4 (S735).

−−−同期・非同期の切り替え−−−
オペレーティングシステム140Aは、例えば、プログラムの起動時にユーザから指定されたオプションにより、当該プログラムの実行に係るタスクを他の計算機100と同期すべきか否かを決定することができる。ディスパッチャ141Aは、同期すべきタスクは同期用のプロセッサ180A−1に割り当て、非同期でよいタスクは非同期用のプロセッサ180A−2に割り当てる。
--- Switching between synchronous and asynchronous ---
For example, the operating system 140A can determine whether or not a task related to the execution of the program should be synchronized with another computer 100 by an option specified by the user when the program is started. The dispatcher 141A assigns a task to be synchronized to the synchronization processor 180A-1, and assigns a task that may be asynchronous to the asynchronous processor 180A-2.

オペレーティングシステム140Aは、タスクにおいて実行される処理に応じてタスクを同期すべきか否かを決定することもできる。例えば、タスクから同期を指示する所定のシステムコール(以下、「同期システムコール」という。)が呼び出された場合、ディスパッチャ141Aは、そのタスクを同期用のプロセッサ180A−1に割り当て、タスクから非同期を指示する所定のシステムコール(以下、「非同期システムコール」という。)が呼び出された場合には、そのタスクを非同期用のプロセッサ180A−2に割り当てるようにすることができる。   The operating system 140A can also determine whether to synchronize tasks according to the processing performed in the tasks. For example, when a predetermined system call for instructing synchronization is called from a task (hereinafter referred to as “synchronous system call”), the dispatcher 141A assigns the task to the processor 180A-1 for synchronization, and makes the task asynchronous. When a predetermined system call to be instructed (hereinafter referred to as “asynchronous system call”) is called, the task can be assigned to the asynchronous processor 180A-2.

図11は、断片化したメモリに連続領域のメモリ領域を確保する処理を行うタスクの一例を示す図である。すなわち、連続したメモリ領域が確保できるか否かが判断され(S12001)、連続したメモリ領域が確保できない場合には(S12001:NO)、メモリの回収タスクが起動され(S12002)、連続したメモリ領域を確保できる場合には(S12001:YES)、当該連続したメモリ領域を確保することになる(S12003)。各計算機100におけるメモリの使用状況等は異なることが多いので、図11のタスクが同期用のプロセッサ180A−1にディスパッチされてしまうと、同期を取ることが難しくなる場合がある。そこで、連続したメモリ領域の確保を行う処理など、各計算機100の状態に依存する処理(以下、「環境依存処理」という。)を行うタスクを同期用のプロセッサ180A−1に割り当てる場合には、図12に示すように、環境依存処理を行う前にタスクを非同期とし、環境依存処理の後に処理を行う場合にはタスクを同期するようにすることができる。すなわち、タスクが非同期システムコールを呼び出すと(S12004)、ディスパッチャ141Aは、当該タスクを同期用プロセッサ180A−1から非同期用プロセッサ180A−2に割り当てを変更することで、非同期に上記図11と同様にして連続したメモリ領域が確保されることになる。なお、プロセッサ180A間のタスクの割り当ての変更処理の詳細については後述する。次に、タスクが同期システムコールを呼び出すと(S12005)、ディスパッチャ141Aは、非同期用プロセッサ180A−2から同期用のプロセッサ180A−1に当該タスクの割り当てを変更し、これによりそれ以後のタスクは同期をとって実行されることになる。   FIG. 11 is a diagram illustrating an example of a task for performing a process of securing a continuous memory area in a fragmented memory. That is, it is determined whether or not a continuous memory area can be secured (S12001). If a continuous memory area cannot be secured (S12001: NO), a memory collection task is activated (S12002), and the continuous memory area Can be secured (S12001: YES), the continuous memory area is secured (S12003). Since the use status of the memory in each computer 100 is often different, if the task of FIG. 11 is dispatched to the synchronization processor 180A-1, it may be difficult to synchronize. Therefore, when assigning a task for performing processing depending on the state of each computer 100 (hereinafter referred to as “environment-dependent processing”), such as processing for securing a continuous memory area, to the processor 180A-1 for synchronization, As shown in FIG. 12, the task can be made asynchronous before the environment-dependent processing is performed, and the task can be synchronized when the processing is performed after the environment-dependent processing. That is, when a task calls an asynchronous system call (S12004), the dispatcher 141A changes the assignment of the task from the synchronous processor 180A-1 to the asynchronous processor 180A-2, thereby performing the same operation as in FIG. Thus, a continuous memory area is secured. Details of the task assignment change process between the processors 180A will be described later. Next, when a task invokes a synchronous system call (S12005), the dispatcher 141A changes the assignment of the task from the asynchronous processor 180A-2 to the synchronous processor 180A-1, and thereby the subsequent tasks are synchronized. Will be executed.

このように、タスクにおいて実行される処理に応じて同期及び非同期を切り替えるようにすることで、同期に適さない計算機100それぞれの資源や環境に応じた処理を行う場合には、非同期でタスクを実行し、それ以外の場合には同期させてタスクを実行するようにすることもできる。   In this way, by switching between synchronous and asynchronous depending on the processing executed in the task, when performing processing according to the resources and environment of each computer 100 that is not suitable for synchronization, the task is executed asynchronously. In other cases, the task can be executed synchronously.

−−−同期タスクの非同期への変更−−−
図13は、同期用のプロセッサ180A−1から非同期用のプロセッサ180A−2にタスクを割り当てるプロセッサを変更する、オペレーティングシステム140内における同期タスクの非同期化処理を説明する図である。図13に示す処理は、オペレーティングシステム140内タスク同期制御(実行状態から別コアでの非同期実行状態)である。
---- Change the synchronous task to asynchronous ---
FIG. 13 is a diagram for explaining a synchronization task desynchronization process in the operating system 140 in which a processor to which a task is allocated from the synchronization processor 180A-1 to the asynchronous processor 180A-2 is changed. The processing shown in FIG. 13 is task synchronous control within the operating system 140 (asynchronous execution state in another core from the execution state).

オペレーティングシステム140Aが、ディスパッチャ141Aにタスク120Bを非同期にするように指示した場合(S740)、ディスパッチャ141Aは、同期用のプロセッサ180A−1が実行しているタスク120Bの情報を回収する(S741)。すなわち、ディスパッチャ141Aは、図5のS705、S706と同様に、プロセッサ180A−1に実行を中断するように指示し、プロセッサ180A−1のプログラムカウンタ180A−1a、汎用レジスタ180A−1bおよび制御レジスタ180A−1cの内容を、タスク管理テーブル180A−1に含まれる実行中タスク147のポインタが示すTCB146Eに設定する。ディスパッチャ141Aは、プロセッサ180A−1に対応するタスク管理テーブル143A−1からタスク120Bに対応するTCB146Eを削除し(S742)、非同期用のプロセッサ180A−2に対応するタスク管理テーブル143A−2の実行可能タスクキュー144に、タスク120BについてのTCB146Eを登録する(S743)。これにより、ディスパッチャ141Aは、タスク管理テーブル143A−2の実行可能タスクキュー144に登録されたTCB146Eに基づいて、図4に示すディスパッチを行い、プロセッサ180A−2においてタスク120Bが実行される(S744)。   When the operating system 140A instructs the dispatcher 141A to make the task 120B asynchronous (S740), the dispatcher 141A collects information on the task 120B being executed by the synchronization processor 180A-1 (S741). That is, the dispatcher 141A instructs the processor 180A-1 to suspend execution in the same manner as S705 and S706 in FIG. 5, and the program counter 180A-1a, general-purpose register 180A-1b, and control register 180A of the processor 180A-1 The contents of -1c are set in the TCB 146E indicated by the pointer of the running task 147 included in the task management table 180A-1. The dispatcher 141A deletes the TCB 146E corresponding to the task 120B from the task management table 143A-1 corresponding to the processor 180A-1 (S742), and the task management table 143A-2 corresponding to the asynchronous processor 180A-2 can be executed. The TCB 146E for the task 120B is registered in the task queue 144 (S743). As a result, the dispatcher 141A performs dispatch shown in FIG. 4 based on the TCB 146E registered in the executable task queue 144 of the task management table 143A-2, and the task 120B is executed in the processor 180A-2 (S744). .

−−−非同期タスクの同期への変更−−−
図14は、非同期用のプロセッサ180A−2から同期用のプロセッサ180A−1にタスクを割り当てるプロセッサを変更する処理を説明する図である。図14に示す処理は、オペレーティングシステム140内タスク同期制御(別コアでの非同期実行状態から同期コアでのディスパッチ)である。
オペレーティングシステム140Aが、ディスパッチャ141Aにタスク120Bを同期するように指示した場合(S750)、ディスパッチャ141Aは、プロセッサ180A−2が実行しているタスク120Bの情報を回収する(S751)。すなわち、ディスパッチャ141Aは、図5のS705、S706と同様に、プロセッサ180A−2に実行を中断するように指示し、プロセッサ180A−2のプログラムカウンタ180A−2a、汎用レジスタ180A−2bおよび制御レジスタ180A−2cの内容を、タスク管理テーブル180A−2に含まれる実行中タスク147のポインタが示すTCB146Eに設定する。ディスパッチャ141Aは、プロセッサ180A−2に対応するタスク管理テーブル143A−2からタスク120Bに対応するTCB146Eを削除し(S752)、同期用のプロセッサ180A−1に対応するタスク管理テーブル143A−1の実行可能タスクキュー144に、タスク120BについてのTCB146Eを登録する(S753)。これにより、ディスパッチャ141Aは、図6のS712〜714と同様に計算機100Bのディスパッチャ141Bとの間で、タスク管理テーブル143A−1およびタスク管理テーブル143B−1内の実行可能タスクキュー144に格納されているTCB146A、146Bを通信インターフェース160および150を介して交換し(S754)、タスク管理テーブル143A−1の実行可能タスクキュー144に登録されているTCB146と、タスク管理テーブル143B−1の実行可能タスクキュー144に登録されているTCB146との両方に基づいて、次にプロセッサ180A−1に割り当てるべきタスクを選定する(S755)。これにより、ディスパッチャ141Aは、タスク管理テーブル143A−1の実行可能タスクキュー144に登録されたTCB146Eに基づいて、図4に示すディスパッチを行い、プロセッサ180A−1においてタスク120Bが実行される(S756)。
---- Changing asynchronous task to synchronous ---
FIG. 14 is a diagram illustrating a process of changing a processor that assigns a task from the asynchronous processor 180A-2 to the synchronous processor 180A-1. The process shown in FIG. 14 is the task synchronous control in the operating system 140 (from the asynchronous execution state in another core to the dispatch in the synchronous core).
When the operating system 140A instructs the dispatcher 141A to synchronize the task 120B (S750), the dispatcher 141A collects information on the task 120B being executed by the processor 180A-2 (S751). That is, the dispatcher 141A instructs the processor 180A-2 to suspend execution in the same manner as S705 and S706 in FIG. 5, and the program counter 180A-2a, general-purpose register 180A-2b, and control register 180A of the processor 180A-2. -2c is set in the TCB 146E indicated by the pointer of the running task 147 included in the task management table 180A-2. The dispatcher 141A deletes the TCB 146E corresponding to the task 120B from the task management table 143A-2 corresponding to the processor 180A-2 (S752), and the task management table 143A-1 corresponding to the synchronization processor 180A-1 can be executed. The TCB 146E for the task 120B is registered in the task queue 144 (S753). Thereby, the dispatcher 141A is stored in the task management table 143A-1 and the executable task queue 144 in the task management table 143B-1 with the dispatcher 141B of the computer 100B in the same manner as S712-714 in FIG. The TCBs 146A and 146B are exchanged via the communication interfaces 160 and 150 (S754), and the TCB 146 registered in the executable task queue 144 of the task management table 143A-1 and the executable task queue of the task management table 143B-1 A task to be assigned to the processor 180A-1 next is selected based on both the TCB 146 registered in 144 (S755). As a result, the dispatcher 141A performs the dispatch shown in FIG. 4 based on the TCB 146E registered in the executable task queue 144 of the task management table 143A-1, and the task 120B is executed in the processor 180A-1 (S756). .

−−−APIによるタスクの同期非同期の変更−−−
タスクプログラム120がタスクの同期または非同期を指示するようにすることもできる。この場合、タスクの同期または非同期を指示するシステムコール(以下、「同期システムコール」または「非同期システムコール」という。)を呼び出すAPIを規定しておくようにする。図15はこの場合における、同期プロセッサと非同期プロセッサとの間でのタスクの移動によるタスク内での同期タスクの非同期化・同期化処理を説明する図である。タスク120Bから非同期システムコールが呼び出された場合(S760)、ディスパッチャ141Aは、図13のS741〜S744の処理を行う。また、タスク120Bから同期システムコールが呼び出された場合には(S770)、ディスパッチャ141Aは、図14のS751〜S756の処理を行う。
これにより、タスクプログラムから任意に同期または非同期への変更を指定することが可能となる。
--- Synchronous / asynchronous change of tasks by API ---
It is also possible for the task program 120 to instruct synchronous or asynchronous task. In this case, an API for invoking a system call (hereinafter referred to as “synchronous system call” or “asynchronous system call”) for instructing the synchronization or asynchronous task is defined. FIG. 15 is a diagram for explaining the asynchronous task synchronization / synchronization process in the task by moving the task between the synchronous processor and the asynchronous processor in this case. When the asynchronous system call is called from the task 120B (S760), the dispatcher 141A performs the processes of S741 to S744 in FIG. When the synchronous system call is called from the task 120B (S770), the dispatcher 141A performs the processes of S751 to S756 in FIG.
As a result, it is possible to arbitrarily specify a change from synchronous to asynchronous to the task program.

−−−タイムアウト処理−−−
図16は、例えば図6のS712などにおいて、計算機100Aと計算機100Bとの間で行うタスク管理テーブル143の交換がタイムアウトした場合の処理を説明する図である。図16に示す処理は、計算機100の同期外れ判定(時間での判定)による同期タスク待ちのタイムアウト処理である。
ディスパッチャ141Aは、処理を開始した時刻を取得して(S781)、タスク管理テーブル143A−1およびタスク管理テーブル143B−1内の実行可能タスクキュー144に格納されているTCB146A、146Bを通信インターフェース160および150を介して交換し、各同期計算機100A、100Bのタスク制御用共有メモリ区画130A、130Bに各々のTCB146を格納する(S782)。
--- Timeout processing ---
FIG. 16 is a diagram for explaining processing when the exchange of the task management table 143 between the computer 100A and the computer 100B times out in S712 of FIG. 6, for example. The process shown in FIG. 16 is a time-out process for waiting for a synchronous task based on out-of-synchronization determination (determination by time) of the computer 100.
The dispatcher 141A obtains the time when the process was started (S781), and uses the TCBs 146A and 146B stored in the task management table 143A-1 and the executable task queue 144 in the task management table 143B-1 as the communication interface 160 and The TCB 146 is stored in the task control shared memory partitions 130A and 130B of the respective synchronous computers 100A and 100B (S782).

タスク管理テーブル143A−1の実行可能タスクキュー144に登録されているTCB146と、計算機100Bから取得したタスク管理テーブル143B−1の実行可能タスクキュー144に格納されているTCB146とが一致していれば(S783:YES)、図6のS713、S714と同様に、ディスパッチャ141Aは、タスク管理テーブル143A−1の実行可能タスクキュー144に登録されているTCB146と、タスク管理テーブル143B−1の実行可能タスクキュー144に登録されているTCB146との両方に基づいて、次にプロセッサ180A−1に割り当てるべきタスクを選定する(S785)。ディスパッチャ141Aは、図4のS702〜S704と同様に、選定したタスクのTCB146の内容をプロセッサ180A−1に設定して、プロセッサ180A−1に選定したタスクを実行させる(S786)。   If the TCB 146 registered in the executable task queue 144 of the task management table 143A-1 matches the TCB 146 stored in the executable task queue 144 of the task management table 143B-1 acquired from the computer 100B (S783: YES), similarly to S713 and S714 of FIG. 6, the dispatcher 141A has the TCB 146 registered in the executable task queue 144 of the task management table 143A-1 and the executable task of the task management table 143B-1. Next, a task to be allocated to the processor 180A-1 is selected based on both the TCB 146 registered in the queue 144 (S785). The dispatcher 141A sets the contents of the TCB 146 of the selected task in the processor 180A-1 and causes the processor 180A-1 to execute the selected task, similarly to S702 to S704 in FIG. 4 (S786).

一方、TCB146が一致しなければ(S783:NO)、ディスパッチャ141Aは、上記S781で取得した時刻から現在時刻までの時間が所定の時間を越えたか否かにより、タイムアウトを起こしたか否かを判定する(S784)。タイムアウトを起こしていなければ(S784:NO)、ディスパッチャ141Aは、S782からの処理を繰り返す。タイムアウトを起こしていれば(S784:YES)、ディスパッチャ141Aは、実行可能タスクを多数決により決定する(S787)。すなわち、各計算機の実行可能タスクキュー144について、登録されているTCB146に基づいてタスクを選定していき、最も多く選定されたタスクを選定するようにする。最も多く選定されたタスクが複数存在する場合には、例えば、予め計算機の優先度を決めておき、優先度の高い計算機について選定されたタスクを優先して選定するようにする。ディスパッチャ141Aは、タスク制御用共有メモリ区画130Aを参照し、多数決により選定されなかった計算機100を特定し、特定した計算機100を示す識別情報に対応づけて、当該計算機100と同期がとれていない旨を示す情報を同期計算機管理テーブル111Aに登録する(S788)。ディスパッチャ141Aは、図4のS702〜S704と同様に、選定したタスクのTCB146の内容をプロセッサ180A−1に設定して、プロセッサ180A−1に選定したタスクを実行させる(S789)。   On the other hand, if the TCB 146 does not match (S783: NO), the dispatcher 141A determines whether or not a timeout has occurred depending on whether or not the time from the time acquired in S781 to the current time has exceeded a predetermined time. (S784). If no timeout has occurred (S784: NO), the dispatcher 141A repeats the processing from S782. If a timeout has occurred (S784: YES), the dispatcher 141A determines an executable task by majority vote (S787). That is, for the executable task queue 144 of each computer, a task is selected based on the registered TCB 146, and the most frequently selected task is selected. When there are a plurality of tasks selected most frequently, for example, the priority of the computer is determined in advance, and the task selected for the computer with a high priority is selected with priority. The dispatcher 141A refers to the task control shared memory partition 130A, identifies the computer 100 that has not been selected by majority vote, and associates it with the identification information indicating the identified computer 100, and is not synchronized with the computer 100 Is registered in the synchronous computer management table 111A (S788). The dispatcher 141A sets the contents of the TCB 146 of the selected task in the processor 180A-1 and causes the processor 180A-1 to execute the selected task, similarly to S702 to S704 in FIG. 4 (S789).

−−−回数を考慮したタイムアウト処理−−−
図17は、上述した図16のタイムアウト処理においてタイムアウトを起こした回数を考慮する処理を説明する図である。図17に示す処理は、計算機100の同期外れ判定(回数での判定)による同期タスク待ちのタイムアウト処理である。図17のS790〜S797の処理は、図16のS781〜S788と同様である。ディスパッチャ141Aは、S797の後、カウンタをインクリメントして、カウンタが所定の設定回数を超えたか否かを判定し(S798)、カウンタが設定回数を超えていなければ(S798:NO)、観察実行とする(S799)。観察実行とは、例えば計算機識別子が多数決において高い優先度を持っていたとしても、優先度が最低として扱う方式である。つまり、図7のS7138において、識別子の若い計算機が観察実行状態であれば、S7138では識別子の年取った方が残る。カウンタが設定回数を超えていれば(S798:YES)、計算機を再起動する(S800)。
---- Timeout processing considering the number of times ---
FIG. 17 is a diagram for explaining processing that takes into account the number of times timeout has occurred in the timeout processing of FIG. 16 described above. The process shown in FIG. 17 is a time-out process for waiting for a synchronous task based on the out-of-synchronization determination (determination based on the number of times) of the computer 100. The processing in S790 to S797 in FIG. 17 is the same as S781 to S788 in FIG. After S797, the dispatcher 141A increments the counter to determine whether or not the counter has exceeded a predetermined number of times (S798). If the counter has not exceeded the set number of times (S798: NO), the observation execution is performed. (S799). The observation execution is a method in which, for example, even if the computer identifier has a high priority in the majority decision, the priority is treated as the lowest. That is, in S7138 in FIG. 7, if a computer with a young identifier is in the observation execution state, the older identifier is left in S7138. If the counter exceeds the set number of times (S798: YES), the computer is restarted (S800).

−−−Voter870を含むシステム構成−−−
図18は、計算機システム10が、計算機100Aからの出力と計算機100Bからの出力とが一致することを検証するVoter870(多数決機)を含む構成を示す図である。
--- System configuration including Voter 870 ---
FIG. 18 is a diagram illustrating a configuration in which the computer system 10 includes a Voter 870 (majority machine) that verifies that the output from the computer 100A matches the output from the computer 100B.

Voter870は、計算機システム10を構成する複数の計算機100からの出力が一致していればそのまま出力し、異なる場合には、多数決により最も一致した数の多いものを出力する多数決処理を行う。Voter870は、メモリ810、プロセッサ820、通信インターフェース860を備えており、これらがバス830により接続されている。メモリ810は、オペレーティングシステム840を備え、オペレーティングシステム840は、同期計算機管理テーブル850を備えている。同期計算機管理テーブル850は計算機100が備える同期計算機管理テーブル111と同様の構成である。同期計算機管理テーブル850には、多数決処理に参加する計算機100が登録されており、オペレーティングシステム840は、同期計算機管理テーブル850に登録されている計算機100からの出力のみについて多数決処理を行う。   The voter 870 outputs the output from the plurality of computers 100 constituting the computer system 10 as they are, and if they are different from each other, performs the majority process that outputs the most matched number by majority vote. The Voter 870 includes a memory 810, a processor 820, and a communication interface 860, which are connected by a bus 830. The memory 810 includes an operating system 840, and the operating system 840 includes a synchronous computer management table 850. The synchronous computer management table 850 has the same configuration as the synchronous computer management table 111 provided in the computer 100. The computer 100 participating in the majority process is registered in the synchronous computer management table 850, and the operating system 840 performs the majority process only for the output from the computer 100 registered in the synchronous computer management table 850.

以下、Voter870を備える計算機システム10における処理について説明する。   Hereinafter, processing in the computer system 10 including the Voter 870 will be described.

−−−計算機100からVoter870への通知処理−−−
図19は、Voter870における多数決処理に参加する計算機100を変更する処理を説明する図である。図19に示す処理は、同期計算機管理情報の送受信(計算機100からVoter870)であり、タスク同期外れした計算機100をVoter870へ通知し、出力結果の多数決に参加できないようにするものである。計算機100Aのディスパッチャ141Aは、上述した図16のS788や図17のS797において、多数決により選定されなかった計算機100をVoter870に通知し(S841)、Voter870のオペレーティングシステム840は、同期計算機管理テーブル850から、通知された計算機100を削除する(S842)。これにより、タイムアウトした計算機100はVoter870による多数決処理に参加しないようにすることができる。
--- Notification process from computer 100 to Voter 870 ---
FIG. 19 is a diagram illustrating a process of changing the computer 100 that participates in the majority process in the Voter 870. The processing shown in FIG. 19 is transmission / reception of synchronous computer management information (from computer 100 to Voter 870), and notifies computer 870 of out of task synchronization so that it cannot participate in the majority of output results. The dispatcher 141A of the computer 100A notifies the computer 870 of the computer 100 that has not been selected by the majority vote in S788 of FIG. 16 or S797 of FIG. 17 (S841), and the operating system 840 of the Voter 870 uses the synchronous computer management table 850. The notified computer 100 is deleted (S842). Accordingly, the computer 100 that has timed out can be prevented from participating in the majority process by the Voter 870.

−−−Voter870から計算機100への通知処理−−−
図20は、計算機100における多数決処理に参加する計算機100を変更する処理を説明する図である。図20に示す処理は、同期計算機管理情報の送受信(Voter870から計算機100)であり、Voter870において出力結果の多数決負けを起こした計算機100を他の計算機100に通知し、同期をとって同期計算機管理テーブル111から当該計算機100を除外するものである。Voter870のオペレーティングシステム840は、上記多数決処理において選定されなかった計算機100を、全ての計算機100に通知する(S843)。計算機100のディスパッチャ141は、Voter870から通知された計算機100を同期計算機管理テーブルから削除する(S844)。
--- Notification process from the Voter 870 to the computer 100 ---
FIG. 20 is a diagram for explaining processing for changing the computer 100 that participates in the majority processing in the computer 100. The process shown in FIG. 20 is transmission / reception of synchronous computer management information (from Voter 870 to computer 100). The computer 100 that caused majority vote of the output result in the Voter 870 is notified to other computers 100, and synchronous computer management is performed in synchronization. The computer 100 is excluded from the table 111. The operating system 840 of the Voter 870 notifies all the computers 100 of the computers 100 that have not been selected in the majority process (S843). The dispatcher 141 of the computer 100 deletes the computer 100 notified from the Voter 870 from the synchronous computer management table (S844).

−−−ソフトウェアエラーの処理−−−
図21は、ソフトウェアにエラーが生じた場合の処理を説明する図である。図21に示す処理は、オペレーティングシステム140内タスク同期制御(待ち状態からディスパッチ)におけるエラーハンドリング処理(ソフトウェアエラー)であり、一般的なディスパッチとの違いはS714の前に同期処理が発生することである。ディスパッチャ141AによりS711〜S714の処理が行われた後、タスクにエラーが発生した場合(S900)、ディスパッチャ141Aは、タスクがエラーを出力していれば(S901:YES)、エラー処理を行うプログラムを構成するタスクについてのTCB146を、実行可能タスクキュー144の先頭に移動し(S902)、エラーを出力していなければ(S901:NO)、図6のS711と同様に実行可能状態にあるタスクを1つ選定する(S903)。ディスパッチャ141Aは、計算機100Bのディスパッチャ141Bとの間で、タスク管理テーブル143A−1およびタスク管理テーブル143B−1内の実行可能タスクキュー144に格納されているTCB146A、146Bを通信インターフェース160および150を介して交換し(S904)、タスク管理テーブル143A−1の実行可能タスクキュー144に登録されているTCB146と、タスク管理テーブル143B−1の実行可能タスクキュー144に登録されているTCB146との両方に基づいて、次にプロセッサ180A−1に割り当てるべきタスクを選定する(S905)。ディスパッチャ141は、図4のS702〜S704と同様に、選定したタスクのTCB146の内容をプロセッサ180A−1に設定して、プロセッサ180A−1に選定したタスクを実行させる(S906)。
---- Software error handling ---
FIG. 21 is a diagram for explaining processing when an error occurs in software. The process shown in FIG. 21 is an error handling process (software error) in task synchronization control within the operating system 140 (dispatch from the wait state), and the difference from general dispatch is that the synchronization process occurs before S714. is there. If an error occurs in the task after the processing of S711 to S714 is performed by the dispatcher 141A (S900), the dispatcher 141A, if the task outputs an error (S901: YES), a program for performing error processing If the TCB 146 for the task to be configured is moved to the head of the executable task queue 144 (S902) and no error is output (S901: NO), the task in the executable state is set to 1 as in S711 of FIG. Is selected (S903). The dispatcher 141A communicates with the dispatcher 141B of the computer 100B via the communication interfaces 160 and 150 through the TCBs 146A and 146B stored in the task management table 143A-1 and the executable task queue 144 in the task management table 143B-1. (S904), based on both the TCB 146 registered in the executable task queue 144 of the task management table 143A-1 and the TCB 146 registered in the executable task queue 144 of the task management table 143B-1. Next, a task to be assigned to the processor 180A-1 is selected (S905). The dispatcher 141 sets the content of the TCB 146 of the selected task in the processor 180A-1 and causes the processor 180A-1 to execute the selected task, similarly to S702 to S704 in FIG. 4 (S906).

−−−ハードウェアエラーの処理−−−
図22は、ハードウェアにエラーが生じた場合の処理を説明する図である。図22に示す処理は、オペレーティングシステム140内タスク同期制御(待ち状態からディスパッチ)におけるエラーハンドリング処理(ハードウェアエラー)であり、一般的なディスパッチとの違いはS714の前に同期処理が行われることである。ディスパッチャ141AによりS711〜S714の処理が行われた後、ハードウェアにエラーが発生したことを、監視タスクやオペレーティングシステム140Aが検知した場合(S910)、ディスパッチャ141Aは、エラーが存在していれば(S911:YES)、他の計算機100Bにエラーの内容を示すエラー情報の複製を送信し(S912)、エラー処理を行うプログラムを構成するタスクについてのTCB146を、実行可能タスクキュー144の先頭に移動する(S913)。エラーが存在しなければ(S911:NO)、ディスパッチャ141Aは、図6のS711と同様に実行可能状態にあるタスクを1つ選定する(S914)。ディスパッチャ141Aは、計算機100Bのディスパッチャ141Bとの間で、タスク管理テーブル143A−1およびタスク管理テーブル143B−1内の実行可能タスクキュー144に格納されているTCB146A−146Bを通信インターフェース160および150を介して交換し(S915)、タスク管理テーブル143A−1の実行可能タスクキュー144に登録されているTCB146と、タスク管理テーブル143B−1の実行可能タスクキュー144に登録されているTCB146との両方に基づいて、次にプロセッサ180A−1に割り当てるべきタスクを選定する(S916)。ディスパッチャ141は、図4のS702−S704と同様に、選定したタスクのTCB146の内容をプロセッサ180A−1に設定して、プロセッサ180A−1に選定したタスクを実行させる(S917)。
--- Hardware error handling ---
FIG. 22 is a diagram for explaining processing when an error occurs in hardware. The process shown in FIG. 22 is an error handling process (hardware error) in task synchronization control within the operating system 140 (dispatch from the wait state), and the difference from general dispatch is that the synchronization process is performed before S714. It is. After the processing of S711 to S714 is performed by the dispatcher 141A, when the monitoring task or the operating system 140A detects that an error has occurred in the hardware (S910), if the dispatcher 141A has an error ( S911: YES), a copy of the error information indicating the error content is transmitted to the other computer 100B (S912), and the TCB 146 for the task constituting the program that performs the error processing is moved to the head of the executable task queue 144. (S913). If there is no error (S911: NO), the dispatcher 141A selects one task in an executable state as in S711 of FIG. 6 (S914). The dispatcher 141A communicates the TCB 146A-146B stored in the task management table 143A-1 and the executable task queue 144 in the task management table 143B-1 with the dispatcher 141B of the computer 100B via the communication interfaces 160 and 150. (S915), based on both the TCB 146 registered in the executable task queue 144 of the task management table 143A-1 and the TCB 146 registered in the executable task queue 144 of the task management table 143B-1. Next, a task to be assigned to the processor 180A-1 is selected (S916). The dispatcher 141 sets the contents of the TCB 146 of the selected task in the processor 180A-1 and causes the processor 180A-1 to execute the selected task, similarly to S702 to S704 in FIG. 4 (S917).

−−−タスク間通信を考慮したタスク同期処理−−−
図23は、計算機100において同期タスクが実行されている場合に、同期タスク間通信をプロセス間通信の有無を含めてタスクプログラムの同期を行う処理を説明する図である。
---- Task synchronization processing considering inter-task communication ----
FIG. 23 is a diagram for explaining processing for synchronizing the task program including the presence or absence of the inter-process communication when the computer 100 is executing the synchronous task.

オペレーティングシステム140Aがタスクからタスク間通信の相手先への通信の依頼を受けると(S920)、オペレーティングシステム140Aは、タスク間通信の内容をタスク間メッセージ管理テーブル142A・シグナル管理テーブル112Aにキューとしてつないで管理し(S921)、計算機100Bのディスパッチャ141Bとの間で、タスク管理テーブル143A−1およびタスク管理テーブル143B−1内の実行可能タスクキュー144に格納されているTCB146A−146Bと、シグナル管理テーブル112A及び112Bとタスク間メッセージテーブル142A及び142Bに記憶されている情報とを通信インターフェース160および150を介して交換し、タスク制御用共有メモリ区画130A−130Bに各々格納する(S923)。ディスパッチャ141Aは、タスク管理テーブル143A−1の実行可能タスクキュー144に登録されているTCB146と、タスク管理テーブル143B−1の実行可能タスクキュー144に登録されているTCB146とが、同期タスクへの通信有無を含めて一致しているか否かを確認する。すなわち、ディスパッチャ141Aは、全ての実行可能キュー144A及び144Bに登録されている全てのTCB146について、タスクID146−1に対応する情報をシグナル管理テーブル112A又は112Bに登録されている場合、タスクID146−1に対応する情報をシグナル管理テーブル112A及び112Bのそれぞれから取得し、取得した情報の内容が一致していなければ、当該TCB146を実行可能キュー144Aから削除して待機状態タスクキュー145に追加する(S924)。ディスパッチャ141Aは、上記図7の処理と同様にして、次にプロセッサ180A−1に割り当てるべきタスクを選定する(S925)。ディスパッチャ141Aは、図4のS702−S704と同様に、選定したタスクのTCB146の内容をプロセッサ180A−1に設定して、プロセッサ180A−1に選定したタスクを実行させる(S926)。ディスパッチャ141Aは、ディスパッチしたタスクに係るTCB146のタスクID146−1に対応する情報がシグナル管理テーブル112Aに登録されている場合には、通信内容をタスク通信の相手先に通達する(S927)。このようにして、次に実行するタスクを決定する際に、シグナル管理テーブル145に登録されているタスク間通信の内容が計算機100Aと計算機100Bとの間で一致することを確認することにより、タスク間通信が行われている場合でも、タスク間通信の内容に影響を与えることなく、計算機100Aと計算機100Bとの間でディスパッチの同期を行うことが可能となる。   When the operating system 140A receives a communication request from the task to the other party of the inter-task communication (S920), the operating system 140A queues the contents of the inter-task communication as a queue in the inter-task message management table 142A and the signal management table 112A. (TC92146A-146B stored in the task management table 143A-1 and the executable task queue 144 in the task management table 143B-1 with the dispatcher 141B of the computer 100B, and the signal management table 112A and 112B and information stored in the inter-task message tables 142A and 142B are exchanged via the communication interfaces 160 and 150, and task control shared memory partitions 130A-130B are exchanged. Each stored (S923). In the dispatcher 141A, the TCB 146 registered in the executable task queue 144 of the task management table 143A-1 and the TCB 146 registered in the executable task queue 144 of the task management table 143B-1 communicate with the synchronous task. Check whether they match, including presence or absence. That is, the dispatcher 141A, when all the TCBs 146 registered in all the executable queues 144A and 144B have information corresponding to the task ID 146-1 registered in the signal management table 112A or 112B, the task ID 146-1. Is acquired from each of the signal management tables 112A and 112B, and if the contents of the acquired information do not match, the TCB 146 is deleted from the executable queue 144A and added to the waiting state task queue 145 (S924). ). The dispatcher 141A selects a task to be assigned to the processor 180A-1 next (S925) in the same manner as the processing of FIG. The dispatcher 141A sets the contents of the TCB 146 of the selected task in the processor 180A-1 and causes the processor 180A-1 to execute the selected task, similarly to S702 to S704 of FIG. 4 (S926). If the information corresponding to the task ID 146-1 of the TCB 146 related to the dispatched task is registered in the signal management table 112A, the dispatcher 141A notifies the communication content to the other party of the task communication (S927). In this way, when determining the task to be executed next, by confirming that the contents of the inter-task communication registered in the signal management table 145 match between the computer 100A and the computer 100B, the task Even when inter-communication is performed, dispatch synchronization can be performed between the computer 100A and the computer 100B without affecting the contents of inter-task communication.

以上説明したように、例えばリアルタイムタスク等、優先度の高いプロセスの実行を行うためにプリエンプションを実行している場合に、現行のマルチタスク実行可能なオペレーティングシステムでは、タイマーに基づいた判断によりプリエンプションを行うため、プリエンプションが行われたタスク処理の進捗が計算機間で変わり、各計算機間での同期が取れなくなるところ、本実施形態によれば、複数の計算機100の間でタスク管理テーブル143を交換し、複数のタスク管理テーブル143に基づいて次にディスパッチするタスクを決定することができる。すなわち、ある計算機100において実行可能となっているタスクであっても、他の計算機100において実行可能となっていなければ、ディスパッチの対象として選定されないようにすることができる。これにより、複数の計算機100の間でディスパッチするタスクの同期を取ることが可能となる。   As described above, when preemption is performed to execute a process with high priority, such as a real-time task, the current multi-tasking operating system performs preemption based on a determination based on a timer. For this reason, the progress of the task processing for which preemption has been performed changes between computers, and synchronization between the computers cannot be achieved. According to this embodiment, the task management table 143 is exchanged among a plurality of computers 100. The task to be dispatched next can be determined based on the plurality of task management tables 143. That is, even a task that can be executed on a certain computer 100 can be prevented from being selected as a dispatch target if it is not executable on another computer 100. As a result, it is possible to synchronize tasks dispatched among a plurality of computers 100.

また、キャッシュに該当情報がヒットしたか否かにより、システムコール(例:ハードディスクドライブへのデータ読み取り指示等)が発行されたりされなかったりすることが考えられるが、この場合にも、従来のマルチタスク実行可能なオペレーティングシステムではタスク処理スピードの変化が生じて同期が取れなくなるところ、本実施形態によれば、全ての計算機100において実行可能となったタスクのみをディスパッチするようにすることができるので、タスク処理スピードが変化した場合であっても、複数の計算機100間でディスパッチの同期を取ることが可能となる。   Also, depending on whether or not the corresponding information hits the cache, a system call (eg, a data read instruction to the hard disk drive) may not be issued. In a task-executable operating system, a change in task processing speed occurs and synchronization cannot be achieved. However, according to the present embodiment, only tasks that can be executed in all the computers 100 can be dispatched. Even when the task processing speed changes, it is possible to synchronize dispatch among a plurality of computers 100.

また、マルチコアやマルチプロセッサ環境において、本実施形態の計算機システム10によれば、タスク内の処理フローの一部においてタスクを割り当てるコアやプロセッサを変更することができる。   Further, in a multi-core or multi-processor environment, the computer system 10 of this embodiment can change the core or processor to which a task is assigned in a part of the processing flow within the task.

また、本実施形態の計算機システム10によれば、タスクの同期をとる処理と、タスクの同期を外して非同期に処理する方式とを交互に制御し、その制御の境目で複数コアを移動させることができる。   Further, according to the computer system 10 of the present embodiment, the process of synchronizing the tasks and the method of asynchronously processing the tasks out of synchronization are controlled alternately, and a plurality of cores are moved at the boundary of the control. Can do.

また、本実施形態の計算機システム10によれば、タスクが同期を外れるために他のコアへ移動するためのAPIやシステムコールをタスクに提供することができる。   Further, according to the computer system 10 of the present embodiment, an API or a system call for moving to another core can be provided to a task because the task is out of synchronization.

また、本実施形態の計算機システム10によれば、他のコアへ移動し同期が外れたタスクが、再び同期を取るために元のコアへ戻ってくるためのAPIやシステムコールをタスクに提供することができる。   Further, according to the computer system 10 of the present embodiment, an API or system call for returning to the original core for providing synchronization to a task that has been moved to another core and out of synchronization is provided to the task. be able to.

また、本実施形態の計算機システム10によれば、他計算機との同期を意識して、障害等が発生した場合に、他の計算機にエラーを通知して、エラー処理を行うことができる。   Further, according to the computer system 10 of this embodiment, when a failure or the like occurs in consideration of synchronization with another computer, an error can be notified to another computer and error processing can be performed.

したがって、高信頼システムを実現できる。   Therefore, a highly reliable system can be realized.

また、本実施形態の計算機システム10によれば、Voterによる精査の結果を受け、タスク同期の制御にフィードバックすることができる。   Further, according to the computer system 10 of the present embodiment, it is possible to receive the result of the scrutiny by Voter and feed back to the task synchronization control.

なお、これまで示した計算機システム10をなす計算機100A、100Bにおける各機能部、Voter870における各機能部等はハードウェアとして実現してもよいし、各装置におけるメモリやHDD(Hard Disk Drive)などの適宜な記憶部に格納したプログラムとして実現するとしてもよい。この場合、各装置のCPUなど制御部がプログラム実行に合わせて記憶部より該当プログラムを読み出して、これを実行することとなる。   The function units in the computers 100A and 100B constituting the computer system 10 shown so far, the function units in the Voter 870, and the like may be realized as hardware, or may be a memory or an HDD (Hard Disk Drive) in each device. It may be realized as a program stored in an appropriate storage unit. In this case, a control unit such as a CPU of each device reads the corresponding program from the storage unit in accordance with the program execution and executes it.

また、本実施形態の計算機100Aは、2つのプロセッサ180A−1および180A−2を備えるものとしたが、3つ以上のプロセッサを備えるようにしてもよい。   Further, the computer 100A according to the present embodiment includes the two processors 180A-1 and 180A-2, but may include three or more processors.

また、計算機100Aは、複数のコアを有する1つのプロセッサのみを備えるようにしてもよい。この場合、オペレーティングシステム140Aは、各コアについてTCBを管理し、タスクのディスパッチを行うものとする。   Further, the computer 100A may include only one processor having a plurality of cores. In this case, the operating system 140A manages the TCB for each core and dispatches tasks.

また、本実施形態では、実行可能タスクキュー144には優先度の高い順にTCB146が格納されているものとしたが、TCB146に優先度を記憶するようにして、実行可能タスクキュー144には、キュー以外の形態で、順番を問わずにTCB146を管理するようにしてもよい。この場合、ディスパッチャ141Aは、図4のS701において、実行可能タスクキュー144に格納されているTCB146のうち、優先度の最も高いものを選択するようにする。   In this embodiment, the TCB 146 is stored in the executable task queue 144 in descending order of priority. However, the priority is stored in the TCB 146 so that the queue is stored in the executable task queue 144. The TCB 146 may be managed regardless of the order. In this case, the dispatcher 141A selects the highest priority among the TCBs 146 stored in the executable task queue 144 in S701 of FIG.

また、本実施形態では、Voter870による多数決処理は、出力が一致する計算機100を複数のグループに分けた場合に、所属する計算機100の数が同じであるグループが複数存在する状態(あいこ状態)を考慮していなかったが、あいこ状態を考慮するようにしてもよい。図24は、あいこ状態を考慮する場合のVoter870による多数決処理を説明する図である。この場合、各計算機100には、重複しない番号(計算機No)を割り当てておくものとする。また、図24の処理では、計算機100から出力される内容を重複なく抽出して比較対象値とし、各計算機100からの出力をその比較対象値に対する投票として、多数決処理を説明する。Voter870は、次に投票数の多い比較対象値を選び(S8701)、選んだ比較対象値に対する投票数と同じ投票数の他の比較対象値が存在する場合(あいこ状態)には(S8702:YES)、計算機Noが最も小さい計算機100が投票した比較対象値を出力するようにし(S8703)、あいこ状態でない場合には(S8702:NO)、選んだ比較対象値を出力する(S8704)。これにより、あいこ状態を考慮した多数決処理により、出力を決定することができる。なお、計算機No以外にも、例えば、計算機100に優先度を割り当てておき、優先度に応じて、Voter870が出力を選択するようにしてもよい。   Further, in the present embodiment, the majority process by the Voter 870 is a state where there are a plurality of groups having the same number of computers 100 to which the computer 100 belongs (aiko state) when the computers 100 having the same output are divided into a plurality of groups. Although not taken into consideration, it is also possible to take into account the situation. FIG. 24 is a diagram for explaining the majority process by the Voter 870 in the case of taking into account the situation. In this case, a non-overlapping number (computer number) is assigned to each computer 100. In the process of FIG. 24, the majority process will be described with the contents output from the computers 100 extracted without duplication as comparison target values, and the outputs from the computers 100 as votes for the comparison target values. The voter 870 selects a comparison target value having the next largest number of votes (S8701), and when another comparison target value equal to the number of votes for the selected comparison target value exists (in the Aiko state) (S8702: YES) The comparison target value voted by the computer 100 having the smallest computer No is output (S8703), and when it is not in the idle state (S8702: NO), the selected comparison target value is output (S8704). As a result, the output can be determined by the majority process in consideration of the condition. In addition to the computer No, for example, a priority may be assigned to the computer 100, and the Voter 870 may select an output according to the priority.

以上の実施形態によって、マルチプロセッサ環境を有する複数の計算機をネットワークで接続した計算機システムにおいて、計算機間でのタスク同期が可能となる。即ち、一般的なネットワークを利用して複数計算機を接続する方式において、従来のマルチタスク動作可能なOSは、タスクスケジュールの中で他の計算機の挙動を意識するように作られてはいなかった。したがって、従来技術では、例えば、プリエンプションが行われたタスク処理の進捗が計算機間で異なってしまう状況や、キャッシュに該当情報がヒットしたか否かにより、計算機によってシステムコール(例:ハードディスクドライブへのデータ読み取り指示等)が発行されたりされなかったりという違いが生じる状況などに対処することが出来ていない。これにより、タスク開始や終了のタイミングを各計算機間で合わせることができず、ひいては計算機間での同期は取れなくなってしまっていた。つまり従来技術における構成や処理内容を、一般的なネットワークにて複数計算機を接続する方式に単に適用したとしても、フォールトトレラントシステムに求められる要求をそもそも満たせなくなっていた。本実施例ではこのような従来技術の課題を解決し、各々がマルチプロセッサを有する複数の計算機間でのタスク同期が可能となる。   According to the above embodiment, task synchronization between computers can be performed in a computer system in which a plurality of computers having a multiprocessor environment are connected via a network. That is, in a method of connecting a plurality of computers using a general network, a conventional OS capable of multitasking has not been made so as to be aware of the behavior of other computers in the task schedule. Therefore, in the prior art, for example, depending on the situation in which the progress of task processing for which preemption has been performed differs between computers, or whether the corresponding information has been hit in the cache, the computer makes a system call (for example, to the hard disk drive). It is not possible to deal with the situation where there is a difference such as whether or not data reading instructions are issued. As a result, the task start and end timings cannot be matched between computers, and as a result, synchronization between computers cannot be achieved. That is, even if the configuration and processing contents in the prior art are simply applied to a method of connecting a plurality of computers in a general network, the requirements for a fault tolerant system cannot be satisfied in the first place. In this embodiment, such a problem of the prior art is solved, and task synchronization is possible among a plurality of computers each having a multiprocessor.

次に他の実施形態について説明する。本実施形態では、実施例1において、複数の同期タスクについて一部の処理が同期用プロセッサから非同期用プロセッサに割り当てが変更され、一時的に非同期用プロセッサにて実行されることになった場合を想定している。この時、これら複数の同期タスクについて複数計算機間での同期を一時的にとることができなくなる。そこで、各計算機において非同期用プロセッサで実行される同期タスクの実行順序を管理し、非同期用プロセッサに同期タスクが割り当てられた順序に従って、同期タスクが非同期用プロセッサで実行されるよう制御する方法を説明する。尚、本実施例において特に説明しない限り、システムの構成、処理方法は実施例1と同様である。   Next, another embodiment will be described. In the present embodiment, in the first embodiment, when a part of processing for a plurality of synchronous tasks is changed from the synchronous processor to the asynchronous processor and temporarily executed by the asynchronous processor. Assumed. At this time, the plurality of synchronization tasks cannot be temporarily synchronized among a plurality of computers. Therefore, how to manage the execution order of synchronous tasks executed by asynchronous processors on each computer and control synchronous tasks to be executed by asynchronous processors according to the order in which synchronous tasks are assigned to asynchronous processors is explained. To do. The system configuration and processing method are the same as those in the first embodiment unless otherwise described in the present embodiment.

−−非同期実行用プロセッサでの同期タスクのディスパッチ−−
まず、本実施形態では、図3に示すタスク管理テーブル143に代えて図25に示すタスク管理テーブル143−2が使用される。図25に示すタスク管理テーブル143−2は、図3に加え同期タスク順序管理キュー148があり、同期実行用プロセッサから同期タスクが非同期実行用プロセッサへ割当変更された順序で当該同期タスクのTCBへのリンク194がつながっている。各リンク194は、同期用プロセッサのタスク管理テーブル143から非同期プロセッサ用のタスク管理テーブル143に移し変えられ、実行可能タスクキュー144につなげられた同期タスクのTCBへのポインタを少なくとも保持している。更に図25には図示していないが、各TCB146にはタスクの種類146−7が追加されている。このタスクの種類146−7はタスクが同期タスクであるか非同期タスクであるかを示す情報が格納されている。
更に本実施例では図4に示す一般的・タスク非同期ディスパッチ処理に代えて図26に示す一般的・タスク非同期ディスパッチ処理が実行される。図26に示す処理には、図4に示す処理に更にS705〜S707が追加されており、図26に示す処理を実行すると、非同期用のプロセッサ180A−2に対して、同期タスクの実行順序を管理しつつディスパッチを実行することができる。
-Dispatch of synchronous tasks in asynchronous processor-
First, in this embodiment, a task management table 143-2 shown in FIG. 25 is used instead of the task management table 143 shown in FIG. The task management table 143-2 shown in FIG. 25 has a synchronous task order management queue 148 in addition to FIG. 3, and the synchronous task is transferred from the synchronous execution processor to the asynchronous execution processor in the order in which the synchronous task is reassigned to the TCB of the synchronous task. Link 194 is connected. Each link 194 is moved from the task management table 143 for the synchronous processor to the task management table 143 for the asynchronous processor, and holds at least a pointer to the TCB of the synchronous task connected to the executable task queue 144. Further, although not shown in FIG. 25, a task type 146-7 is added to each TCB 146. This task type 146-7 stores information indicating whether the task is a synchronous task or an asynchronous task.
Further, in this embodiment, the general / task asynchronous dispatch process shown in FIG. 26 is executed instead of the general / task asynchronous dispatch process shown in FIG. 26 further includes S705 to S707 in addition to the process shown in FIG. 4. When the process shown in FIG. 26 is executed, the execution order of the synchronous tasks is set to the asynchronous processor 180A-2. Dispatch can be executed while managing.

ディスパッチャ141Aは、タスク管理テーブル143−2の実行可能タスクキュー144より、先頭のTCB146を選定する(S701)。すなわち、ディスパッチャ141Aは、実行可能タスクキュー144のポインタが示すTCB146Aを選定する。ディスパッチャ141Aは、実行可能タスクキュー先頭のTCB146が同期タスクか確認する(S705)。この確認は、TCB146のタスクの種類146−7を確認することによって行われる。このTCB146が非同期タスクであればS702を実行する。TCB146が同期タスクであれば(S705:YES)、ディスパッチャ141Aは、実行可能タスクキュー先頭のTCB146が同期タスク順序管理キュー148の先頭のタスクと同一か確認する(S706)。すなわち、この確認により同期タスクが非同期実行用プロセッサで処理される順番を制御することができる。もし、実行可能タスクキュー先頭のTCB146が同期タスク順序管理キュー148の先頭のタスクと同一であれば(S706:YES)、S702を実行する。   The dispatcher 141A selects the first TCB 146 from the executable task queue 144 of the task management table 143-2 (S701). That is, the dispatcher 141A selects the TCB 146A indicated by the pointer of the executable task queue 144. The dispatcher 141A checks whether the TCB 146 at the head of the executable task queue is a synchronous task (S705). This confirmation is performed by confirming the task type 146-7 of the TCB 146. If this TCB 146 is an asynchronous task, S702 is executed. If the TCB 146 is a synchronous task (S705: YES), the dispatcher 141A confirms whether the TCB 146 at the head of the executable task queue is the same as the head task of the synchronous task order management queue 148 (S706). In other words, the order in which synchronous tasks are processed by the asynchronous execution processor can be controlled by this confirmation. If the TCB 146 at the head of the executable task queue is the same as the head task of the synchronous task order management queue 148 (S706: YES), S702 is executed.

実行可能タスクキュー先頭のTCB146が同期タスク順序管理キュー148の先頭のタスクと同一でない場合は(S705:NO)、実行順序待機中なので実行可能タスクキューの先頭のTCBを、実行可能タスクキューの最後尾に繋ぎ直す(S707)。繋ぎなおした後に、再びS701に戻る。   If the TCB 146 at the head of the executable task queue is not the same as the head task of the synchronous task order management queue 148 (S705: NO), the TCB at the head of the executable task queue is the end of the executable task queue because the execution order is waiting. Reconnect to the tail (S707). After reconnecting, the process returns to S701 again.

S705またはS706にて実行可能タスクが選定されると、ディスパッチャ141Aは、選定したTCB146Aより、プログラムカウンタ情報146−2の情報をプログラムカウンタ180A−2aに格納し、汎用レジスタ情報146−3の情報を汎用レジスタ180A−2bに格納し、制御レジスタの情報146−4を制御レジスタ180A−2cに格納する(S702)。ディスパッチャ141Aは、実行中タスク147のポインタが示すTCB146Eを待機状態タスクキュー145の最後尾に追加する。すなわち、ディスパッチャ141Aは、待機状態タスクキュー145のポインタが示すTCB146Cから、TCB146のポインタ146−0がnullになる最後尾のTCB146Dまで辿り、最後尾のTCB146Dのポインタ146−0にTCB146Eを示すポインタを設定し、TCB146Eのポインタ146−0にnullを設定する。ディスパッチャ141Aは、実行可能タスクキュー144の先頭から選定したTCB146Aを実行中タスク147として設定する。すなわち、ディスパッチャ141Aは、TCB146Aを示すポインタを実行中タスク147のポインタに設定する(S703)。また、ディスパッチャ141Aは、実行可能タスクキュー144のポインタに、TCB146Aの次に位置するTCB146Bを示すポインタを設定する。ディスパッチャ141Aは、プロセッサ180A−2に実行を指示する(S704)。
この処理ステップにより、複数の同期タスクが非同期実行用プロセッサにて実行され、複数計算機間での同期を一時的にとらない場合においても、計算機内での実行順序を規定することができる。
When the executable task is selected in S705 or S706, the dispatcher 141A stores the information of the program counter information 146-2 in the program counter 180A-2a from the selected TCB 146A, and the information of the general-purpose register information 146-3. The information is stored in the general-purpose register 180A-2b, and the control register information 146-4 is stored in the control register 180A-2c (S702). The dispatcher 141A adds the TCB 146E indicated by the pointer of the executing task 147 to the end of the waiting state task queue 145. That is, the dispatcher 141A traces from the TCB 146C indicated by the pointer of the waiting state task queue 145 to the last TCB 146D where the pointer 146-0 of the TCB 146 becomes null, and sets the pointer indicating the TCB 146E to the pointer 146-0 of the last TCB 146D. And set null to the pointer 146-0 of the TCB 146E. The dispatcher 141A sets the TCB 146A selected from the head of the executable task queue 144 as the executing task 147. That is, the dispatcher 141A sets the pointer indicating the TCB 146A as the pointer of the executing task 147 (S703). Further, the dispatcher 141A sets a pointer indicating the TCB 146B positioned next to the TCB 146A in the pointer of the executable task queue 144. The dispatcher 141A instructs the processor 180A-2 to execute (S704).
With this processing step, even when a plurality of synchronous tasks are executed by the asynchronous execution processor and synchronization between a plurality of computers is not temporarily established, the execution order within the computers can be defined.

−−−同期タスクの非同期への変更−−−
更に本実施形態では、図13に示す処理に代えて図27に示す処理を用いて、同期用のプロセッサ180A−1から非同期用のプロセッサ180A−2にタスクを割り当てるプロセッサを変更する。図27においては図13におけるS744に変えてS745が実行される結果、同期タスクの実行をシリアライズするための登録処理が行われる。
オペレーティングシステム140Aが、ディスパッチャ141Aにタスク120Bを非同期にするように指示した場合(S740)、ディスパッチャ141Aは、同期用のプロセッサ180A−1が実行しているタスク120Bの情報を回収する(S741)。すなわち、ディスパッチャ141Aは、図5のS705、S706と同様に、プロセッサ180A−1に実行を中断するように指示し、プロセッサ180A−1のプログラムカウンタ180A−1a、汎用レジスタ180A−1bおよび制御レジスタ180A−1cの内容を、タスク管理テーブル180A−1に含まれる実行中タスク147のポインタが示すTCB146Eに設定する。ディスパッチャ141Aは、プロセッサ180A−1に対応するタスク管理テーブル143A−1からタスク120Bに対応するTCB146Eを削除し(S742)、非同期用のプロセッサ180A−2に対応するタスク管理テーブル143A−2の実行可能タスクキュー144に、タスク120BについてのTCB146Eを登録する(S743)。非同期実行用プロセッサ180A−2用タスク管理テーブル内の同期タスク順序管理キュー148の最後尾にタスク120Bへのリンク149を登録する(S745)。
---- Change the synchronous task to asynchronous ---
Further, in the present embodiment, the processor shown in FIG. 27 is used instead of the process shown in FIG. 13, and the processor that assigns the task from the synchronous processor 180A-1 to the asynchronous processor 180A-2 is changed. In FIG. 27, as a result of executing S745 in place of S744 in FIG. 13, registration processing for serializing the execution of the synchronization task is performed.
When the operating system 140A instructs the dispatcher 141A to make the task 120B asynchronous (S740), the dispatcher 141A collects information on the task 120B being executed by the synchronization processor 180A-1 (S741). That is, the dispatcher 141A instructs the processor 180A-1 to suspend execution in the same manner as S705 and S706 in FIG. 5, and the program counter 180A-1a, general-purpose register 180A-1b, and control register 180A of the processor 180A-1 The contents of -1c are set in the TCB 146E indicated by the pointer of the running task 147 included in the task management table 180A-1. The dispatcher 141A deletes the TCB 146E corresponding to the task 120B from the task management table 143A-1 corresponding to the processor 180A-1 (S742), and the task management table 143A-2 corresponding to the asynchronous processor 180A-2 can be executed. The TCB 146E for the task 120B is registered in the task queue 144 (S743). The link 149 to the task 120B is registered at the end of the synchronous task order management queue 148 in the task management table for the asynchronous execution processor 180A-2 (S745).

これにより、ディスパッチャ141Aは、タスク管理テーブル143A−2の実行可能タスクキュー144に登録されたTCB146Eに基づいて、図26に示すディスパッチを行い、プロセッサ180A−2においてタスク120Bが実行される。   Accordingly, the dispatcher 141A performs dispatch shown in FIG. 26 based on the TCB 146E registered in the executable task queue 144 of the task management table 143A-2, and the task 120B is executed in the processor 180A-2.

−−−非同期タスクの同期への変更−−−
更に本実施形態では、図14に示す処理に代えて図28に示す処理を用いて、非同期用のプロセッサ180A−2から同期用のプロセッサ180A−1にタスクを割り当てるプロセッサを変更する。図28においては、図14の処理に更にS757が追加されることによって、同期タスクのシリアライズが行われる。
オペレーティングシステム140Aが、ディスパッチャ141Aにタスク120Bを同期するように指示した場合(S750)、ディスパッチャ141Aは、プロセッサ180A−2が実行しているタスク120Bの情報を回収する(S751)。すなわち、ディスパッチャ141Aは、図5のS705、S706と同様に、プロセッサ180A−2に実行を中断するように指示し、プロセッサ180A−2のプログラムカウンタ180A−2a、汎用レジスタ180A−2bおよび制御レジスタ180A−2cの内容を、タスク管理テーブル180A−2に含まれる実行中タスク147のポインタが示すTCB146Eに設定する。ディスパッチャ141Aは、プロセッサ180A−2に対応するタスク管理テーブル143A−2からタスク120Bに対応するTCB146Eを削除し(S752)、非同期実行用プロセッサ180A−2用タスク管理テーブル内の同期タスク順序管理キュー148からタスク120Bへのリンクを削除する(S752)。
---- Changing asynchronous task to synchronous ---
Furthermore, in the present embodiment, the processor shown in FIG. 28 is used instead of the process shown in FIG. 14 to change the processor that assigns the task from the asynchronous processor 180A-2 to the synchronous processor 180A-1. In FIG. 28, the synchronization task is serialized by further adding S757 to the processing of FIG.
When the operating system 140A instructs the dispatcher 141A to synchronize the task 120B (S750), the dispatcher 141A collects information on the task 120B being executed by the processor 180A-2 (S751). That is, the dispatcher 141A instructs the processor 180A-2 to suspend execution in the same manner as S705 and S706 in FIG. 5, and the program counter 180A-2a, general-purpose register 180A-2b, and control register 180A of the processor 180A-2. -2c is set in the TCB 146E indicated by the pointer of the running task 147 included in the task management table 180A-2. The dispatcher 141A deletes the TCB 146E corresponding to the task 120B from the task management table 143A-2 corresponding to the processor 180A-2 (S752), and the synchronous task order management queue 148 in the task management table for the asynchronous execution processor 180A-2. The link to task 120B is deleted (S752).

その後、同期用のプロセッサ180A−1に対応するタスク管理テーブル143A−1の実行可能タスクキュー144に、タスク120BについてのTCB146Eを登録する(S753)。これにより、ディスパッチャ141Aは、図6のS712〜714と同様に計算機100Bのディスパッチャ141Bとの間で、タスク管理テーブル143A−1およびタスク管理テーブル143B−1内の実行可能タスクキュー144に格納されているTCB146A−146Bを通信インターフェース160および150を介して交換し(S754)、タスク管理テーブル143A−1の実行可能タスクキュー144に登録されているTCB146と、タスク管理テーブル143B−1の実行可能タスクキュー144に登録されているTCB146との両方に基づいて、次にプロセッサ180A−1に割り当てるべきタスクを選定する(S755)。これにより、ディスパッチャ141Aは、タスク管理テーブル143A−1の実行可能タスクキュー144に登録されたTCB146Eに基づいて、図26に示すディスパッチを行い、プロセッサ180A−1においてタスク120Bが実行される(S756)。   Thereafter, the TCB 146E for the task 120B is registered in the executable task queue 144 of the task management table 143A-1 corresponding to the synchronization processor 180A-1 (S753). Thereby, the dispatcher 141A is stored in the task management table 143A-1 and the executable task queue 144 in the task management table 143B-1 with the dispatcher 141B of the computer 100B in the same manner as S712-714 in FIG. TCB 146A-146B are exchanged via communication interfaces 160 and 150 (S754), TCB 146 registered in executable task queue 144 in task management table 143A-1 and executable task queue in task management table 143B-1 A task to be assigned to the processor 180A-1 next is selected based on both the TCB 146 registered in 144 (S755). Thereby, the dispatcher 141A performs the dispatch shown in FIG. 26 based on the TCB 146E registered in the executable task queue 144 of the task management table 143A-1, and the task 120B is executed in the processor 180A-1 (S756). .

更に他の実施形態を示す。本実施形態は、実施例1又は実施例2において、メモリ回収タスクの同期用プロセッサによる実行を抑制するための構成を示す。尚、本実施例において特に説明しない限り、システムの構成、処理は実施例1または実施例2と同様である。   Yet another embodiment is shown. This embodiment shows a configuration for suppressing execution of a memory collection task by a synchronization processor in the first or second embodiment. The system configuration and processing are the same as those in the first or second embodiment unless otherwise described in the present embodiment.

−−−プロセッサ毎メモリ回収機能を含むシステム構成−−−
本実施形態は、図1に示すシステム構成に代えて図29に示すシステム構成を有する。図29に示すシステムは、図1のシステムに加えて、メモリ回収タスクプログラム120Cを有し、またオペレーティングシステム140A内にプロセッサ毎メモリ回収閾値管理テーブル113を含む。
--- System configuration including memory recovery function for each processor ---
This embodiment has a system configuration shown in FIG. 29 instead of the system configuration shown in FIG. The system shown in FIG. 29 has a memory collection task program 120C in addition to the system of FIG. 1, and also includes a per-processor memory collection threshold value management table 113 in the operating system 140A.

−−−プロセッサ毎メモリ回収機能の処理−−−
図30は、メモリ取得時にメモリ取得前にフォアグラウンドで行われるメモリ回収処理とバックグラウンドにて行われるメモリ回収処理における、メモリ回収タスクの処理の一例である。この処理はメモリ回収タスクプログラム120Cが実行されることによって行われる。
メモリ回収タスクはタスク管理テーブル143よりメモリ回収タスクを実行するCPUを検知する(S121)。すなわち、プロセッサ毎に設定されているメモリ回収閾値を取得するため、まずはメモリ回収タスクを実行する可能性のあるプロセッサの識別を行う。次に検知されたプロセッサ毎に、当該プロセッサについてのメモリ回収閾値以下に現在のメモリ空き容量が達し、メモリを圧迫しているかを確認する(S122)。メモリ空き容量がメモリ回収閾値以下に達していた場合、当該プロセッサにメモリ回収を実行させる(S123)。非同期用プロセッサは同期用プロセッサよりも高い頻度でメモリ回収タスクが稼動する様に、非同期用プロセッサのメモリ回収閾値は同期用プロセッサのメモリ回収閾値より厳しく(大きく)してある。この結果、図11や図12に示した様な同期タスクがメモリ取得の一環でフォアグラウンドにてメモリ回収タスクを動作させることを、抑止することができる。
--- Processing memory recovery function for each processor ---
FIG. 30 is an example of a memory recovery task process in a memory recovery process performed in the foreground before memory acquisition and a memory recovery process performed in the background at the time of memory acquisition. This process is performed by executing the memory collection task program 120C.
The memory collection task detects the CPU that executes the memory collection task from the task management table 143 (S121). That is, in order to acquire the memory recovery threshold set for each processor, first, a processor that may execute the memory recovery task is identified. Next, for each detected processor, it is confirmed whether the current memory free capacity has reached the memory recovery threshold value for the processor and the memory is being compressed (S122). If the free memory capacity has reached the memory recovery threshold or less, the processor is made to execute memory recovery (S123). The memory recovery threshold of the asynchronous processor is made stricter (larger) than the memory recovery threshold of the synchronization processor so that the memory recovery task operates more frequently than the asynchronous processor. As a result, it is possible to prevent the synchronous task as shown in FIGS. 11 and 12 from operating the memory collection task in the foreground as part of memory acquisition.

尚、メモリ回収タスクは一例である。その他のタスクについても、同期用プロセッサと非同期用プロセッサとでタスクの実行契機の判断基準となる閾値を異なる値にしておくことによって、同期用プロセッサではなく非同期用プロセッサに当該タスクをなるべく実行させ、あるいは逆に非同期用プロセッサではなく同期用プロセッサに当該タスクをなるべく実行させるよう構成することができる。   Note that the memory collection task is an example. As for other tasks, by setting different threshold values as criteria for determining the task execution timing between the synchronous processor and the asynchronous processor, the asynchronous processor instead of the synchronous processor executes the task as much as possible. Or, conversely, it is possible to configure the synchronous processor to execute the task as much as possible instead of the asynchronous processor.

更に他の実施形態を示す。本実施形態は、実施例1乃至実施例3において、タスクを同期用プロセッサ又は非同期用プロセッサに割り当てる際の処理の一例を示す。尚、本実施例において特に説明しない限り、システムの構成、処理は実施例1乃至実施例3と同様である。   Yet another embodiment is shown. This embodiment shows an example of processing when assigning a task to a synchronous processor or an asynchronous processor in the first to third embodiments. The system configuration and processing are the same as those in the first to third embodiments unless otherwise described in the present embodiment.

−−−システム構成−−−
−−−同期および非同期タスクの定義テーブルの配置−−−
図31に示すシステムは、図29に示すシステムに加えて、記録媒体600および同期タスク非同期タスク定義テーブル610を含む。同期タスク非同期タスク定義テーブル610は、図31に示す記録媒体600の他、外部の記録媒体に置くことも可能である。
--- System configuration ---
--- Placement of definition tables for synchronous and asynchronous tasks ----
The system shown in FIG. 31 includes a recording medium 600 and a synchronous task asynchronous task definition table 610 in addition to the system shown in FIG. The synchronous task asynchronous task definition table 610 can be placed on an external recording medium in addition to the recording medium 600 shown in FIG.

−−−本実施形態の同期タスクおよび非同期タスクの定義テーブルの内容−−−
図32は、計算機100Aの同期タスク非同期タスク定義テーブル610の内容の一例である。同期タスク非同期タスク定義テーブル610には、タスク名610−1と、実行時のタスクID610−2、タスクの種別610−3、同期用プロセッサ項目610−4、および非同期用プロセッサ項目610−5が格納されている。タスクの種別には、「同期」「非同期」「同期・非同期」があっる。「同期」はタスクを同期タスクとして起動する場合、「非同期」はタスクを非同期タスクとして起動する場合、「同期・非同期」はタスクを同期タスクとしてでも非同期タスクとしてでも起動可能な場合をあらわす。同期プロセッサ項目610−4は、タスクの種別610−3が「同期」又は「同期・非同期」の場合に当該タスクを実行する同期用プロセッサを指定する情報である。非同期プロセッサ項目610−5は、タスクの種別が「同期」である場合には当該同期タスクが一時的な非同期処理を行う場合にその非同期処理を実行するべき非同期用プロセッサを指定する情報であり、タスクの種別が「非同期」または「同期・非同期」である場合に当該タスクを実行すべき非同期用プロセッサを指定する情報である。
--- Contents of definition table of synchronous task and asynchronous task of this embodiment ---
FIG. 32 is an example of the contents of the synchronous task asynchronous task definition table 610 of the computer 100A. The synchronous task asynchronous task definition table 610 stores a task name 610-1, an execution task ID 610-2, a task type 610-3, a synchronous processor item 610-4, and an asynchronous processor item 610-5. Has been. The task types include “synchronous”, “asynchronous”, and “synchronous / asynchronous”. “Synchronous” indicates that the task is activated as a synchronous task, “Asynchronous” indicates that the task is activated as an asynchronous task, and “Synchronous / asynchronous” indicates that the task can be activated as either a synchronous task or an asynchronous task. The synchronous processor item 610-4 is information for designating a synchronous processor that executes the task when the task type 610-3 is “synchronous” or “synchronous / asynchronous”. Asynchronous processor item 610-5 is information for designating an asynchronous processor to execute asynchronous processing when the synchronous task performs temporary asynchronous processing when the task type is "synchronous". This is information specifying an asynchronous processor that should execute the task when the task type is “asynchronous” or “synchronous / asynchronous”.

本実施例では2つのプロセッサを有する計算機での例を示すが、2つ以上のプロセッサを有する計算機であっても同期タスク非同期タスク定義テーブル610は利用可能である。   In this embodiment, an example of a computer having two processors is shown, but the synchronous task / asynchronous task definition table 610 can be used even in a computer having two or more processors.

−−−タスクを管理するTCBの内容−−−
図31に示すシステムが有するタスク管理テーブル143は、図3に示すタスク管理テーブルとは異なる構成を有する。具体的にはタスク管理テーブル143内のTCB146の構成が異なる。そこで図33にTCB146の構成の一例を示す。図33に示すTCB146は、図3に示すTCBに加え、同期タスクや非同期タスクなどタスクの種類を示すタスクの種類146−7、同期タスクを実行する同期用プロセッサを指定する同期実行時プロセッサ識別子146−8、同期タスクの中で一時的に非同期処理を行う場合にその非同期処理を実行する非同期用プロセッサ、もしくは非同期タスクを実行する非同期用プロセッサを指定する非同期実行時プロセッサ識別子146−9の項目を有する。
--- Contents of TCB for managing tasks ---
The task management table 143 included in the system illustrated in FIG. 31 has a configuration different from that of the task management table illustrated in FIG. Specifically, the configuration of the TCB 146 in the task management table 143 is different. FIG. 33 shows an example of the configuration of the TCB 146. 33, the TCB 146 shown in FIG. 3, in addition to the TCB shown in FIG. 3, a task type 146-7 indicating a task type such as a synchronous task and an asynchronous task, and a processor identifier 146 at the time of synchronous execution designating a processor for synchronization executing the synchronous task -8. When an asynchronous process is temporarily performed in a synchronous task, an asynchronous processor processor 146-9 for specifying an asynchronous processor that executes the asynchronous process or an asynchronous processor that executes the asynchronous task Have.

−−−同期タスクの非同期への変更−−−
図34は、同期用のプロセッサ180A−1から非同期用のプロセッサ180A−2にタスクを割り当てるプロセッサを変更する際、非同期用プロセッサを定義情報から判定し非同期処理を行う方法を説明する図である。
オペレーティングシステム140Aが、ディスパッチャ141Aにタスク120Bを非同期にするように指示した場合(S740)、ディスパッチャ141Aは、同期用のプロセッサ180A−1が実行しているタスク120Bの情報を回収する(S741)。すなわち、ディスパッチャ141Aは、図5のS705、S706と同様に、プロセッサ180A−1に実行を中断するように指示し、プロセッサ180A−1のプログラムカウンタ180A−1a、汎用レジスタ180A−1bおよび制御レジスタ180A−1cの内容を、タスク管理テーブル180A−1に含まれる実行中タスク147のポインタが示すTCB146Eに設定する。ディスパッチャ141Aは、プロセッサ180A−1に対応するタスク管理テーブル143A−1からタスク120Bに対応するTCB146Eを削除する(S742)。
---- Change the synchronous task to asynchronous ---
FIG. 34 is a diagram for explaining a method of performing asynchronous processing by determining an asynchronous processor from definition information when changing a processor to which a task is assigned from the synchronous processor 180A-1 to the asynchronous processor 180A-2.
When the operating system 140A instructs the dispatcher 141A to make the task 120B asynchronous (S740), the dispatcher 141A collects information on the task 120B being executed by the synchronization processor 180A-1 (S741). That is, the dispatcher 141A instructs the processor 180A-1 to suspend execution in the same manner as S705 and S706 in FIG. 5, and the program counter 180A-1a, general-purpose register 180A-1b, and control register 180A of the processor 180A-1 The contents of -1c are set in the TCB 146E indicated by the pointer of the running task 147 included in the task management table 180A-1. The dispatcher 141A deletes the TCB 146E corresponding to the task 120B from the task management table 143A-1 corresponding to the processor 180A-1 (S742).

ディスパッチャ141Aは、タスク120BのTCB146Eの非同期実行時プロセッサ識別子146−9より、タスク120Bが実行される非同期用プロセッサ識別子を取得する。すなわち、非同期用プロセッサ180A−2であるという情報を取得する(S1000)。非同期用のプロセッサ180A−2に対応するタスク管理テーブル143A−2の実行可能タスクキュー144に、タスク120BについてのTCB146Eを登録する(S743)。非同期実行用プロセッサ180A−2用タスク管理テーブル内の同期タスク順序管理キュー148の最後尾にタスク120Bへのリンクを登録する(S745)。   The dispatcher 141A acquires an asynchronous processor identifier for executing the task 120B from the asynchronous execution processor identifier 146-9 of the TCB 146E of the task 120B. That is, information indicating that the processor 180A-2 is asynchronous is acquired (S1000). The TCB 146E for the task 120B is registered in the executable task queue 144 of the task management table 143A-2 corresponding to the asynchronous processor 180A-2 (S743). A link to the task 120B is registered at the end of the synchronous task order management queue 148 in the task management table for the asynchronous execution processor 180A-2 (S745).

これにより、ディスパッチャ141Aは、タスク管理テーブル143A−2の実行可能タスクキュー144に登録されたTCB146Eに基づいて、図26に示すディスパッチを行い、プロセッサ180A−2においてタスク120Bが実行される。   Accordingly, the dispatcher 141A performs dispatch shown in FIG. 26 based on the TCB 146E registered in the executable task queue 144 of the task management table 143A-2, and the task 120B is executed in the processor 180A-2.

−−−非同期タスクの同期への変更−−−
図35は、非同期用のプロセッサ180A−2から同期用のプロセッサ180A−1にタスクを割り当てるプロセッサを変更する際のシリアライズ完了処理を説明する図である。
オペレーティングシステム140Aが、ディスパッチャ141Aにタスク120Bを同期するように指示した場合(S750)、ディスパッチャ141Aは、プロセッサ180A−2が実行しているタスク120Bの情報を回収する(S751)。すなわち、ディスパッチャ141Aは、図5のS705、S706と同様に、プロセッサ180A−2に実行を中断するように指示し、プロセッサ180A−2のプログラムカウンタ180A−2a、汎用レジスタ180A−2bおよび制御レジスタ180A−2cの内容を、タスク管理テーブル180A−2に含まれる実行中タスク147のポインタが示すTCB146Eに設定する。ディスパッチャ141Aは、プロセッサ180A−2に対応するタスク管理テーブル143A−2からタスク120Bに対応するTCB146Eを削除し(S752)、非同期実行用プロセッサ180A−2用タスク管理テーブル内の同期タスク順序管理キュー148からタスク120Bへのリンクを削除する(S756)。
---- Changing asynchronous task to synchronous ---
FIG. 35 is a diagram for describing serialization completion processing when changing the processor that assigns a task from the asynchronous processor 180A-2 to the synchronous processor 180A-1.
When the operating system 140A instructs the dispatcher 141A to synchronize the task 120B (S750), the dispatcher 141A collects information on the task 120B being executed by the processor 180A-2 (S751). That is, the dispatcher 141A instructs the processor 180A-2 to suspend execution in the same manner as S705 and S706 in FIG. 5, and the program counter 180A-2a, general-purpose register 180A-2b, and control register 180A of the processor 180A-2. -2c is set in the TCB 146E indicated by the pointer of the running task 147 included in the task management table 180A-2. The dispatcher 141A deletes the TCB 146E corresponding to the task 120B from the task management table 143A-2 corresponding to the processor 180A-2 (S752), and the synchronous task order management queue 148 in the task management table for the asynchronous execution processor 180A-2. The link to task 120B is deleted (S756).

ディスパッチャ141Aは、タスク120BのTCB146Eの同期実行プロセッサ識別子146−8より、タスク120Bが実行される同期用プロセッサ識別子を取得する。すなわち、180Aー1であるという情報を取得する(S1001)。その後、同期用のプロセッサ180A−1に対応するタスク管理テーブル143A−1の実行可能タスクキュー144に、タスク120BについてのTCB146Eを登録する(S753)。これにより、ディスパッチャ141Aは、図6のS712〜714と同様に計算機100Bのディスパッチャ141Bとの間で、タスク管理テーブル143A−1およびタスク管理テーブル143B−1内の実行可能タスクキュー144に格納されているTCB146A−146Bを通信インターフェース160および150を介して交換し(S754)、タスク管理テーブル143A−1の実行可能タスクキュー144に登録されているTCB146と、タスク管理テーブル143B−1の実行可能タスクキュー144に登録されているTCB146との両方に基づいて、次にプロセッサ180A−1に割り当てるべきタスクを選定する(S755)。   The dispatcher 141A acquires the synchronization processor identifier for executing the task 120B from the synchronization execution processor identifier 146-8 of the TCB 146E of the task 120B. That is, the information that it is 180A-1 is acquired (S1001). Thereafter, the TCB 146E for the task 120B is registered in the executable task queue 144 of the task management table 143A-1 corresponding to the synchronization processor 180A-1 (S753). Thereby, the dispatcher 141A is stored in the task management table 143A-1 and the executable task queue 144 in the task management table 143B-1 with the dispatcher 141B of the computer 100B in the same manner as S712-714 in FIG. TCB 146A-146B are exchanged via communication interfaces 160 and 150 (S754), TCB 146 registered in executable task queue 144 in task management table 143A-1 and executable task queue in task management table 143B-1 A task to be assigned to the processor 180A-1 next is selected based on both the TCB 146 registered in 144 (S755).

これにより、ディスパッチャ141Aは、タスク管理テーブル143A−1の実行可能タスクキュー144に登録されたTCB146Eに基づいて、図26に示すディスパッチを行い、プロセッサ180A−1においてタスク120Bが実行される。   Thereby, the dispatcher 141A performs the dispatch shown in FIG. 26 based on the TCB 146E registered in the executable task queue 144 of the task management table 143A-1, and the task 120B is executed in the processor 180A-1.

−−−タスクの起動処理−−−
図36は、同期タスク・非同期タスク、またはメモリ回収タスクのように必要に応じて同期タスクからも非同期タスクからも起動されるタスクの起動プロセスを説明する図である。図36に示す処理をディスパッチャ141によって実行される。
--- Task activation process ---
FIG. 36 is a diagram for explaining a process for starting a task that is started from both a synchronous task and an asynchronous task as necessary, such as a synchronous task / asynchronous task or a memory collection task. The process shown in FIG. 36 is executed by the dispatcher 141.

タスクが起動される場合、ディスパッチャ141は記録媒体600内の同期タスク非同期タスク管理テーブル610より、起動を指定されたタスク名610−1を選出する(S1002)。該当したタスク名610−1の行からタスクの種類610−3を参照し、該当タスクの種類が同期か、非同期か、または同期,非同期両方かを判定する。   When the task is activated, the dispatcher 141 selects a task name 610-1 designated to be activated from the synchronous task asynchronous task management table 610 in the recording medium 600 (S1002). The task type 610-3 is referenced from the row of the corresponding task name 610-1, and it is determined whether the type of the corresponding task is synchronous, asynchronous, or both synchronous and asynchronous.

同期タスクと判断された場合、当該タスクを610−4に示されるプロセッサで実行するために、メモリ確保などの起動処理を実行する(S1006)。更に、該当タスク用TCB146を生成し、TCB146内のタスクの種類146−7に該当する同期タスク非同期タスク定義テーブル610のタスクの種類610−3の情報を書き込み、TCB146内の同期実行時プロセッサ識別子146−8に該当する同期タスク非同期タスク定義テーブル610の同期プロセッサ610−4を書き込み、TCB146内の非同期実行時プロセッサ識別子146−9に該当する同期タスク非同期タスク定義テーブル610の非同期プロセッサ610−9の情報を書き込む(S1007)。ディスパッチャ141は当該タスクのTCB146を同期実行時プロセッサ識別子146−8にて示されるプロセッサのタスク管理テーブル143A−1へ登録する(S1008)
ステップS1003で非同期タスクと判断された場合(S1003:YES)、当該タスクを610−5に示されるプロセッサで実行するために、メモリ確保などの起動処理を実行する(S1010)。該当タスク用TCB146を生成し、TCB146内のタスクの種類146−7に該当する同期タスク非同期タスク定義テーブル610のタスクの種類610−3の情報を書き込み、TCB146内の同期実行時プロセッサ識別子146−8に該当する同期タスク非同期タスク定義テーブル610の同期プロセッサ610−4を書き込み、TCB146内の非同期実行時プロセッサ識別子146−9に該当する同期タスク非同期タスク定義テーブル610の非同期プロセッサ610−5の情報を書き込む(S1007)。ディスパッチャ141は当該タスクのTCB146を146−9にて示されるプロセッサのタスク管理テーブル143A−2へ登録する(S1011)。
If it is determined that the task is a synchronous task, in order to execute the task by the processor indicated by 610-4, a startup process such as memory allocation is executed (S1006). Further, the TCB 146 for the corresponding task is generated, the information of the task type 610-3 in the synchronous task asynchronous task definition table 610 corresponding to the task type 146-7 in the TCB 146 is written, and the processor identifier 146 at the time of synchronous execution in the TCB 146 is written. The synchronous processor 610-4 of the synchronous task asynchronous task definition table 610 corresponding to −8 is written, and the information of the asynchronous processor 610-9 of the synchronous task asynchronous task definition table 610 corresponding to the processor identifier 146-9 at the time of asynchronous execution in the TCB 146 is written. Is written (S1007). The dispatcher 141 registers the TCB 146 of the task in the task management table 143A-1 of the processor indicated by the processor identifier 146-8 at the time of synchronous execution (S1008).
When it is determined in step S1003 that the task is an asynchronous task (S1003: YES), in order to execute the task by the processor indicated by 610-5, a startup process such as memory allocation is executed (S1010). The TCB 146 for the corresponding task is generated, the information of the task type 610-3 in the synchronous task asynchronous task definition table 610 corresponding to the task type 146-7 in the TCB 146 is written, and the processor identifier 146-8 at the time of synchronous execution in the TCB 146 The synchronous processor 610-4 of the synchronous task corresponding to the asynchronous task definition table 610 is written, and the information of the asynchronous processor 610-5 of the synchronous task asynchronous task definition table 610 corresponding to the processor identifier 146-9 at the time of asynchronous execution in the TCB 146 is written. (S1007). The dispatcher 141 registers the TCB 146 of the task in the processor task management table 143A-2 indicated by 146-9 (S1011).

ステップS1003で「同期・非同期」タスクと判断された場合、該当タスクの起動を指示した親タスクの実行プロセッサ識別子が、同期タスク非同期タスク管理テーブル610の同期プロセッサ610−4に含まれるか確認する(S1004)。同期プロセッサ610−4に含まれる場合はS1006へ進み(S1004:YES)、同期タスクとしての起動ステップを踏む。同期プロセッサ610−4に該当しない場合は(S1004:NO)、該当タスクの起動を指示した親タスクの実行プロセッサ識別子が同期タスク非同期タスク管理テーブル610の非同期プロセッサ610−5に含まれるか確認する(S1005)。非同期プロセッサ610−5に含まれる場合はS1010に進み(S1005:YES)、非同期タスクとしての起動ステップを踏む。その他該当タスクの起動を指示した親タスクの実行プロセッサ識別子が同期タスク非同期タスク管理テーブル610の非同期プロセッサ610−5に含まれない場合は想定外の起動指示としてタスクの起動を中止し起動を終了する(S1005:NO)。   If it is determined in step S1003 that the task is a “synchronous / asynchronous” task, it is confirmed whether the execution processor identifier of the parent task instructing the activation of the task is included in the synchronous processor 610-4 of the synchronous task asynchronous task management table 610 ( S1004). If it is included in the synchronization processor 610-4, the process proceeds to S1006 (S1004: YES), and an activation step as a synchronization task is performed. If it does not correspond to the synchronous processor 610-4 (S1004: NO), it is confirmed whether the execution processor identifier of the parent task instructing activation of the corresponding task is included in the asynchronous processor 610-5 of the synchronous task asynchronous task management table 610 ( S1005). If it is included in the asynchronous processor 610-5, the process proceeds to S1010 (S1005: YES), and an activation step as an asynchronous task is performed. In addition, when the execution processor identifier of the parent task instructing activation of the corresponding task is not included in the asynchronous processor 610-5 of the synchronous task asynchronous task management table 610, the activation of the task is stopped as an unexpected activation instruction and the activation is terminated. (S1005: NO).

以上、本発明について、その実施の形態に基づき具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。   Although the present invention has been specifically described above based on the embodiment thereof, the present invention is not limited to this, and various modifications can be made without departing from the scope of the present invention.

例えば発明の実施形態を、以下のようにとらえることもできる。   For example, the embodiment of the invention can be understood as follows.

(1)複数のタスクを時分割で実行する計算機であって、
他の計算機と通信可能に接続され、
前記タスクを実行するタスク処理部と、
前記各タスクについて、前記タスクの状態を示す情報であるタスク制御ブロックを記憶する管理テーブルと、
前記他の計算機から前記管理テーブルを取得する管理テーブル取得部と、
前記タスク処理部が実行しているタスクである実行中タスクを、他のタスクである切替タスクに切り替えるべきタイミングである切替可能ポイントを検出する切替可能ポイント検出部と、
前記切替可能ポイントが検出された場合に、当該計算機が備える前記管理テーブルに記憶されている前記タスク制御ブロックと、前記他の計算機から取得した前記管理テーブルに含まれる前記タスク制御ブロックとに基づいて前記切替タスクを決定し、前記タスク処理部が実行するタスクを前記切替タスクに切り替えるディスパッチャと、を備える計算機。
(1) A computer that executes a plurality of tasks in a time-sharing manner,
It is connected so that it can communicate with other computers.
A task processing unit for executing the task;
For each task, a management table that stores a task control block that is information indicating the state of the task;
A management table acquisition unit for acquiring the management table from the other computer;
A switchable point detection unit that detects a switchable point that is a timing at which a task that is being executed by the task processing unit is to be switched to a switching task that is another task;
When the switchable point is detected, based on the task control block stored in the management table included in the computer and the task control block included in the management table acquired from the other computer And a dispatcher that determines the switching task and switches the task executed by the task processing unit to the switching task.

(2)(1)に記載の計算機であって、
前記複数の計算機のそれぞれにおいて、前記切替可能ポイントが検出されたか否かを示す切替情報を交換する切替情報交換部を備え、
前記ディスパッチャは、前記切替情報に基づいて前記各計算機が前記切替可能ポイントを検出したか否かを判定し、所定数の前記計算機が前記切替可能ポイントを検出している場合に、前記切替タスクを決定する計算機。(3)(1)に記載の計算機であって、
前記切替可能ポイント検出部は、前記実行中タスクが所定の命令を呼び出したか否かにより、前記切替可能ポイントを検出する計算機。
(2) The computer according to (1),
In each of the plurality of computers, comprising a switching information exchange unit for exchanging switching information indicating whether or not the switchable point has been detected,
The dispatcher determines whether or not each computer has detected the switchable point based on the switching information, and when a predetermined number of the computers have detected the switchable point, the dispatcher performs the switching task. Calculator to determine. (3) The computer according to (1),
The switchable point detecting unit is a computer that detects the switchable point depending on whether or not the executing task has called a predetermined command.

(4)(3)に記載の計算機であって、
前記所定の命令は、前記実行中タスク以外のタスクから値を取得する命令であること、を特徴とする計算機。
(4) The computer according to (3),
The computer according to claim 1, wherein the predetermined instruction is an instruction for obtaining a value from a task other than the task being executed.

(5)(3)に記載の計算機であって、
前記所定の命令は、ユーザプログラムからオペレーティングシステムに対するシステムコールであること、を特徴とする計算機。
(5) The computer according to (3),
The computer according to claim 1, wherein the predetermined instruction is a system call from the user program to the operating system.

(6)(3)に記載の計算機であって、
前記実行中タスクに含まれる条件分岐、前記条件分岐において用いられる変数に値を設定する命令を特定する条件分岐特定部を備え、
前記所定の命令は、前記条件分岐において用いられる変数に値を設定する命令であること、を特徴とする計算機。
(6) The computer according to (3),
A conditional branch specifying unit for specifying a conditional branch included in the task under execution and an instruction for setting a value in a variable used in the conditional branch;
The computer according to claim 1, wherein the predetermined instruction is an instruction for setting a value in a variable used in the conditional branch.

(7)(1)に記載の計算機であって、
前記管理テーブルには、前記実行中タスクに係る前記タスク制御ブロックを格納する第1の格納領域と、実行可能な状態にある前記タスクに係る前記タスク制御ブロックを格納する第2の格納領域と、待ち状態にある前記タスクに係る前記タスク制御ブロックを格納する第3の格納領域とが含まれ、
前記ディスパッチャは、当該計算機が備える前記管理テーブルに含まれる前記第2の格納領域と、前記他の計算機から取得した前記管理テーブルに含まれる前記第2の格納領域との両方に格納されている前記タスク制御ブロックに対応する前記タスクを前記切替タスクとして決定すること、を特徴とする計算機。
(7) The computer according to (1),
In the management table, a first storage area for storing the task control block relating to the task being executed, a second storage area for storing the task control block relating to the task in an executable state, A third storage area for storing the task control block relating to the task in a waiting state,
The dispatcher is stored in both the second storage area included in the management table included in the computer and the second storage area included in the management table acquired from the other computer. A computer that determines the task corresponding to a task control block as the switching task.

(8)(7)に記載の計算機であって、
前記タスク制御ブロックには前記タスクの優先度が設定され、
前記ディスパッチャは、当該計算機が備える前記管理テーブルに含まれる前記第2の格納領域と、前記他の計算機から取得した前記管理テーブルに含まれる前記第2の格納領域との両方に格納されている前記タスク制御ブロックが複数存在する場合、前記タスク制御ブロックの前記優先度に応じて前記切替タスクを決定すること、を特徴とする計算機。
(8) The computer according to (7),
In the task control block, the priority of the task is set,
The dispatcher is stored in both the second storage area included in the management table included in the computer and the second storage area included in the management table acquired from the other computer. When there are a plurality of task control blocks, the switching task is determined according to the priority of the task control block.

(9)(3)に記載の計算機であって、
前記タスクを特定する情報に対応付けて、前記切替可能ポイントを検出するための前記命令を記憶する命令記憶部を備え、
前記切替可能ポイント検出部は、前記実行中タスクに対応する前記命令を前記命令記憶部から読み出し、前記読み出した命令を前記実行中タスクが呼び出すか否かにより、前記切替可能ポイントを検出すること、を特徴とする計算機。
(9) The computer according to (3),
An instruction storage unit that stores the instruction for detecting the switchable point in association with information specifying the task,
The switchable point detection unit reads the instruction corresponding to the task under execution from the instruction storage unit, and detects the switchable point depending on whether the in-execution task calls the read instruction; A computer characterized by

(10)(3)に記載の計算機であって、
前記所定の命令は、所定のAPIとして定義されている関数の呼び出しであること、を特徴とする計算機。
(10) The computer according to (3),
The computer according to claim 1, wherein the predetermined instruction is a call of a function defined as a predetermined API.

(11)(1)に記載の計算機であって、
オペレーティングシステムが動作し、
前記オペレーティングシステムはユーザプログラムを実行し、
前記切替可能ポイント検出部は、前記実行中タスクが前記ユーザプログラムに係るタスクである場合に、前記実行中タスクに応じて、前記実行中タスクに含まれている所定の命令の実行前の時点、または、前記所定の命令の実行後の時点のいずれかを前記切替可能ポイントとして決定すること、を特徴とする計算機。
(11) The computer according to (1),
The operating system works,
The operating system executes a user program;
The switchable point detection unit, when the running task is a task related to the user program, according to the running task, a point in time before execution of a predetermined instruction included in the running task, Alternatively, any one of the time points after execution of the predetermined instruction is determined as the switchable point.

(12)(1)に記載の計算機であって、
タスク間通信を行うタスクを特定する情報に対応付けて、前記タスク間通信の通信状態を示す情報を記憶するシグナル管理テーブルと、
前記他の計算機から前記シグナル管理テーブルを取得するシグナル管理テーブル取得部と、を備え、
前記ディスパッチャは、前記切替タスクを決定する際に、当該計算機が備える前記シグナル管理テーブルに記憶されている前記通信状態を示す情報と、前記他の計算機から取得した前記シグナル管理テーブルに含まれる前記通信状態を示す情報とが一致するタスクを決定すること、を特徴とする計算機。
(12) The computer according to (1),
A signal management table that stores information indicating a communication state of the inter-task communication in association with information for identifying a task performing inter-task communication;
A signal management table acquisition unit for acquiring the signal management table from the other computer,
When the dispatcher determines the switching task, the dispatcher includes information indicating the communication state stored in the signal management table included in the computer, and the communication included in the signal management table acquired from the other computer. A computer characterized by determining a task that matches information indicating a state.

(13)(1)に記載の計算機であって、
第1および第2の前記タスク処理部を有し、
前記ディスパッチャは、
前記第1のタスク処理部について前記切替タスクを決定する場合には、当該計算機が備える前記管理テーブルに記憶されている前記タスク制御ブロックと、前記他の計算機から取得した前記管理テーブルに記憶されている前記タスク制御ブロックとに基づいて、前記切替タスクを決定し、
前記第2のタスク処理部について前記切替タスクを決定する場合には、当該計算機が備える前記管理テーブルに記憶されている前記タスク制御ブロックのみに基づいて、前記切替タスクを決定すること、を特徴とする計算機。
(13) The computer according to (1),
Having the first and second task processing units;
The dispatcher is
When determining the switching task for the first task processing unit, the task control block stored in the management table included in the computer and the management table acquired from the other computer are stored. Determining the switching task based on the task control block,
When determining the switching task for the second task processing unit, the switching task is determined based only on the task control block stored in the management table included in the computer. Calculator to do.

(14)(13)に記載の計算機であって、
前記タスクの処理に応じて、前記タスクを前記第1および第2のタスク処理部のいずれかに割り当てるタスク割当部を備えること、を特徴とする計算機。
(14) The computer according to (13),
A computer, comprising: a task allocation unit that allocates the task to one of the first and second task processing units according to the processing of the task.

(15)(14)に記載の計算機であって、
前記第1のタスク処理部に割り当てられている第1のタスクが、当該タスクの割り当てを前記第1のタスク処理部から前記第2のタスク処理部に変更するタイミングを指定する命令である切替可能シグナルを呼び出した場合に、前記ディスパッチャは、前記第1のタスクを他の第2のタスクに切り替え、前記タスク割当部は、前記第1のタスクを前記第2のタスク処理部に割り当てること、を特徴とする計算機。
(15) The computer according to (14),
The first task assigned to the first task processing unit can be switched as an instruction that specifies the timing for changing the task assignment from the first task processing unit to the second task processing unit. When the signal is called, the dispatcher switches the first task to another second task, and the task assignment unit assigns the first task to the second task processing unit. A featured calculator.

(16)(2)に記載の計算機であって、
前記ディスパッチャは、所定時間内に前記所定数の前記計算機が前記切替可能ポイントを検出したか否かを判定し、
前記所定時間内に前記切替可能ポイントを検出していない他の前記計算機に対して、同期が外れた旨を通知する同期外通知部を備えること、を特徴とする計算機。
(16) The computer according to (2),
The dispatcher determines whether or not the predetermined number of the computers has detected the switchable point within a predetermined time,
A computer comprising an out-of-synchronization notification unit for notifying that other computers that have not detected the switchable point within the predetermined time are out of synchronization.

(17)(16)に記載の計算機であって、
前記他の計算機と通信可能に接続される多数決機に通信可能に接続され、
前記同期外通知部はさらに、前記所定時間内に前記切替可能ポイントを検出していない前記他の計算機である同期外計算機を指定して、前記同期外計算機の同期が外れた旨を示す同期外通知を前記多数決機に送信し、
前記多数決機は、
前記同期外通知を受信する同期外通知受信部と、
前記同期外通知に指定された前記同期外計算機以外の前記計算機による演算結果を比較して、同一になった数の最も多い前記演算結果を出力する多数決出力部と、を特徴とする計算機。
(17) The computer according to (16),
Communicatively connected to a majority machine that is communicably connected to the other computer,
The out-of-sync notification unit further specifies an out-of-sync computer that is the other computer that has not detected the switchable point within the predetermined time, and indicates that the out-of-sync computer is out of sync. Send a notification to the majority machine,
The majority machine is
An out-of-sync notification receiver that receives the out-of-sync notification;
And a majority output unit that compares the calculation results of the computers other than the non-synchronized computer designated in the out-of-synchronization notification and outputs the largest number of the same calculation results.

(18)(1)に記載の計算機であって、
前記他の計算機と通信可能に接続される多数決機と通信可能に接続され、
前記多数決機は、
前記計算機による演算結果を比較して、同一になった数の最も多い前記演算結果である多数決結果を出力する多数決出力部と、
前記多数決結果と異なる前記演算結果を出力した前記計算機を前記各計算機に通知するエラー通知部とを備え、
前記ディスパッチャは、当該計算機が備える前記管理テーブルに記憶されている前記タスク制御ブロックと、前記多数決結果と異なる前記演算結果を出力した前記計算機以外の前記計算機から取得した前記管理テーブルに記憶されている前記タスク制御ブロックとに基づいて、前記切替タスクを決定すること、を特徴とする計算機。
(18) The computer according to (1),
Communicatively connected to the majority machine communicatively connected to the other computer,
The majority machine is
A majority output unit that compares the calculation results by the computer and outputs the majority result that is the largest number of the same calculation results;
An error notification unit for notifying each of the computers that output the calculation results different from the majority result,
The dispatcher is stored in the management table acquired from the computer other than the computer that has output the calculation result different from the majority decision result and the task control block stored in the management table of the computer. And determining the switching task based on the task control block.

(19)(1)に記載の計算機であって、
計算機個別のエラーが発生したとき、エラー情報を計算機間で通信し、計算機間で同期をとってエラー処理を行うこと、を特徴とする計算機。
(19) The computer according to (1),
A computer characterized in that when an error occurs in each computer, error information is communicated between the computers and error processing is performed in synchronization between the computers.

(20)(1)に記載の計算機であって、
タスクにおいてプログラムエラーが発生したとき、ディスパッチャが当該エラーを同期して処理すること、を特徴とする計算機。
(20) The computer according to (1),
A computer characterized in that when a program error occurs in a task, a dispatcher processes the error synchronously.

(21)複数のタスクを時分割で実行する計算機の制御方法であって、
他の前記計算機と通信可能に接続され、前記タスクを実行するタスク処理部と、
前記各タスクについて、前記タスクの状態を示す情報であるタスク制御ブロックを記憶する管理テーブルとを備える計算機が、
前記タスク処理部が実行しているタスクである実行中タスクを、他のタスクである切替タスクに切り替えるべきタイミングである切替可能ポイントを検出し、
前記他の計算機から前記管理テーブルを取得し、
前記切替可能ポイントが検出された場合に、当該計算機が備える前記管理テーブルに記憶されている前記タスク制御ブロックと、前記他の計算機から取得した前記管理テーブルに含まれる前記タスク制御ブロックとに基づいて前記切替タスクを決定し、
前記タスク処理部が実行するタスクを前記切替タスクに切り替えること、を特徴とする計算機の制御方法。
(21) A computer control method for executing a plurality of tasks in a time-sharing manner,
A task processing unit that is communicably connected to the other computer and executes the task;
A computer comprising a management table that stores a task control block that is information indicating the state of the task for each task,
Detecting a switchable point that is a timing at which a task that is being executed by the task processing unit should be switched to a switching task that is another task,
Obtaining the management table from the other computer;
When the switchable point is detected, based on the task control block stored in the management table included in the computer and the task control block included in the management table acquired from the other computer Determine the switching task,
A computer control method comprising switching a task executed by the task processing unit to the switching task.

(22)複数のタスクを時分割で実行するためのプログラムであって、
他の前記計算機と通信可能に接続され、前記タスクを実行するタスク処理部と、前記各タスクについて、前記タスクの状態を示す情報であるタスク制御ブロックを記憶する管理テーブルとを備える計算機に、
前記タスク処理部が実行しているタスクである実行中タスクを、他のタスクである切替タスクに切り替えるべきタイミングである切替可能ポイントを検出するステップと、
前記他の計算機から前記管理テーブルを取得するステップと、
前記切替可能ポイントが検出された場合に、当該計算機が備える前記管理テーブルに記憶されている前記タスク制御ブロックと、前記他の計算機から取得した前記管理テーブルに含まれる前記タスク制御ブロックとに基づいて、前記切替タスクを決定するステップと、
前記タスク処理部が実行するタスクを前記切替タスクに切り替えるステップと、を実行させるためのプログラム。
(22) A program for executing a plurality of tasks in a time-sharing manner,
A computer that is communicably connected to the other computer and includes a task processing unit that executes the task, and a management table that stores a task control block that is information indicating the state of the task for each task.
Detecting a switchable point that is a timing at which a task that is being executed by the task processing unit should be switched to a switching task that is another task;
Obtaining the management table from the other computer;
When the switchable point is detected, based on the task control block stored in the management table included in the computer and the task control block included in the management table acquired from the other computer Determining the switching task;
And a step for switching the task executed by the task processing unit to the switching task.

(23)(15)に記載の計算機であって、
前記タスクの状態を示す情報であるタスク制御ブロックを記憶する前記管理テーブルには、前記実行中タスクに係る前記タスク制御ブロックを格納する第1の格納領域と、実行可能な状態にある前記タスクに係る前記タスク制御ブロックを格納する第2の格納領域と、待ち状態にある前記タスクに係る前記タスク制御ブロックを格納する第3の格納領域と、前記第1のタスク処理部に割り当てられている第1のタスクが、当該タスクの割り当てを前記第1のタスク処理部から前記第2のタスク処理部に変更するタイミングの順序を格納する第4の格納領域と、
を備える計算機。
(23) The computer according to (15),
In the management table that stores a task control block that is information indicating the state of the task, a first storage area that stores the task control block related to the task being executed, and the task that is in an executable state A second storage area for storing the task control block, a third storage area for storing the task control block for the task in a waiting state, and a first storage area allocated to the first task processing unit. A fourth storage area for storing the order of timing when one task changes the assignment of the task from the first task processing unit to the second task processing unit;
A computer with

(24)(23)に記載の計算機であって、
前記第1のタスク処理部に割り当てられている第1のタスクが、当該タスクの割り当てを前記第1のタスク処理部から前記第2のタスク処理部に変更するタイミングを指定する命令である切替可能シグナルを呼び出した場合に、前記ディスパッチャは、前記第1のタスクを他の第2のタスクに切り替え、前記第1のタスク処理部に割り当てられている第1のタスクが、当該タスクの割り当てを前記第1のタスク処理部から前記第2のタスク処理部に変更するタイミングの順序を格納する第4の格納領域に追加登録し、前記タスク割当部は、前記第4の格納領域にて実行順序が訪れたときのみ前記第1のタスクを前記第2のタスク処理部に割り当てること、
を特徴とする計算機。
(24) The computer according to (23),
The first task assigned to the first task processing unit can be switched as an instruction that specifies the timing for changing the task assignment from the first task processing unit to the second task processing unit. When the signal is called, the dispatcher switches the first task to another second task, and the first task assigned to the first task processing unit assigns the task to the second task. The timing of changing from the first task processing unit to the second task processing unit is additionally registered in a fourth storage area for storing, and the task allocation unit has an execution order in the fourth storage area. Assigning the first task to the second task processing unit only when visiting,
A computer characterized by

(25)(23)に記載の計算機であって、
前記第2のタスク処理部に割り当てられている第1のタスクが、当該タスクの割り当てを前記第2のタスク処理部から前記第1のタスク処理部に変更するタイミングを指定する命令である切替可能シグナルを呼び出した場合に、前記ディスパッチャは、前記第4の格納領域から当該タスクの前記順序情報を削除し、前記第2のタスク処理部に割り当てられている第1のタスクが、当該タスクの割り当てを前記第2のタスク処理部から前記第1のタスク処理部に割り当てること、
を特徴とする計算機。
(25) The computer according to (23),
The first task assigned to the second task processing unit is a switchable instruction that specifies the timing for changing the task assignment from the second task processing unit to the first task processing unit. When the signal is called, the dispatcher deletes the order information of the task from the fourth storage area, and the first task assigned to the second task processing unit assigns the task to the task. Assigning from the second task processing unit to the first task processing unit,
A computer characterized by

(26)(15)に記載の計算機であって、
前記第1のタスク処理部と第2のタスク処理部で実行するメモリ回収タスクと、
前記メモリ回収タスクが起動するメモリ空き容量状況の閾値を格納するタスク処理部毎メモリ回収閾値管理格納部と、
を有する特徴とする計算機。
(26) The computer according to (15),
A memory recovery task to be executed by the first task processing unit and the second task processing unit;
A memory collection threshold value management storage unit for each task processing unit that stores a threshold value of a memory free space situation that the memory collection task starts;
A computer having the characteristics of:

(27)(26)に記載の計算機であって、
前記タスク処理部毎メモリ回収閾値管理処理部に、前記同期タスクが実行される処理部のメモリ回収閾値よりも他のタスク処理部でのメモリ回収閾値が先に閾値条件に合致する閾値有し、同期タスク実行処理部より先に他のタスク処理部にてメモリ回収を実行すること、
を特徴とする計算機。
(27) The computer according to (26),
The memory collection threshold management processing unit for each task processing unit has a threshold that matches the threshold condition first in the memory collection threshold in other task processing units than the memory collection threshold of the processing unit in which the synchronous task is executed, Executing memory recovery in other task processing units prior to the synchronous task execution processing unit,
A computer characterized by

10 計算機システム
100A,100B 計算機
110A、110B メモリ
120A、120B タスクプログラム
140A、140B オペレーティングシステム
141A、141B ディスパッチャ
142A、142B タスク間メッセージ管理テーブル
143A−1、143A−2 タスク管理テーブル
143B−1、143B−2 タスク管理テーブル
111A、111B 同期計算機管理テーブル
112A、112B シグナル管理テーブル
144 実行可能タスクキュー
145 待機状態タスクキュー
146 TCB
147 実行中タスク
130A、130B タスク制御用共有メモリ区画
150A、150B 通信インターフェース
160A、160B 通信インターフェース
170A、170B タイマー
180A−1、180A−2、180B−1、180B−2 プロセッサ
180A−1a、180A−2a プログラムカウンタ
180A−1b、180A−2b 汎用レジスタ
180A−1c、180A−2c 制御レジスタ
190A、190B バス
148 同期タスク順序管理キュー
149 同期タスク順序管理用ポインタ
120C メモリ回収タスクプログラム
113B プロセッサ毎メモリ回収閾値管理テーブル
600 記録媒体
610 同期タスク非同期タスク定義テーブル
10 Computer system 100A, 100B Computer 110A, 110B Memory 120A, 120B Task program 140A, 140B Operating system 141A, 141B Dispatcher 142A, 142B Intertask message management table 143A-1, 143A-2 Task management table 143B-1, 143B-2 Task management tables 111A and 111B Synchronous computer management tables 112A and 112B Signal management table 144 Executable task queue 145 Standby task queue 146 TCB
147 Tasks 130A, 130B Task control shared memory partitions 150A, 150B Communication interfaces 160A, 160B Communication interfaces 170A, 170B Timers 180A-1, 180A-2, 180B-1, 180B-2 Processors 180A-1a, 180A-2a Program counters 180A-1b, 180A-2b General purpose registers 180A-1c, 180A-2c Control registers 190A, 190B Bus 148 Synchronous task order management queue 149 Synchronous task order management pointer 120C Memory recovery task program 113B Memory recovery threshold management table for each processor 600 Recording medium 610 Synchronous task Asynchronous task definition table

Claims (17)

他の計算機と同じタスクを処理する計算機であって、
前記他の計算機と同期をとってタスクを処理する同期プロセッサと、
前記他の計算機と同期をとらずにタスクを処理する非同期プロセッサと、
前記同期プロセッサに割り当てられたタスクの状態を管理する同期タスク管理テーブルと、前記非同期プロセッサに割り当てられたタスクの状態を管理する非同期タスク管理テーブルと、
前記同期プロセッサ及び前記非同期プロセッサにタスクを割り当てるディスパッチャを有しており、
当該計算機と前記他の計算機は前記同期タスク管理テーブルの内容を、タスク制御用共有メモリ区画を介して相互に通信して交換しており、
前記ディスパッチャは、
タスクが前記他の計算機と同期をとって処理すべきタスクか否かを判断し、当該判断結果に基づいて、前記他の計算機と同期をとりながら処理すべき同期タスクは前記同期プロセッサに割当て、前記他の計算機との同期が不要な非同期タスクは前記非同期プロセッサに割当て、同期タスク又は非同期タスクのいずれとしてでも処理可能な同期・非同期タスクについて前記同期プロセッサ又は前記非同期プロセッサのどちらに割り当てるかを判定して、該当プロセッサに割当て、
前記同期プロセッサが実行している実行中同期タスクを、他のタスクに切り替える切替ポイントを検出した場合に、前記実行中同期タスクの状態を待機中に変更し、
当該計算機の前記同期タスク管理テーブルの内容と前記他の計算機の前記同期タスク管理テーブルの内容とに基づいて、当該計算機の前記同期タスク管理テーブルに実行可能タスクとして登録されている複数の同期タスクの内の一を選択して前記同期プロセッサに実行させる計算機。
A computer that handles the same tasks as other computers,
A synchronous processor for processing a task in synchronization with the other computer;
An asynchronous processor for processing a task without synchronizing with the other computer;
A synchronous task management table for managing a state of a task assigned to the synchronous processor, an asynchronous task management table for managing a state of a task assigned to the asynchronous processor,
A dispatcher for assigning tasks to the synchronous processor and the asynchronous processor;
The computer and the other computer exchange the contents of the synchronous task management table by communicating with each other via a shared memory partition for task control,
The dispatcher is
It is determined whether the task is a task to be processed in synchronization with the other computer, and based on the determination result, a synchronous task to be processed while synchronizing with the other computer is assigned to the synchronous processor, Asynchronous tasks that do not require synchronization with other computers are assigned to the asynchronous processor, and it is determined whether the synchronous processor or asynchronous task that can be processed as either a synchronous task or an asynchronous task is assigned to the synchronous processor or the asynchronous processor. Assign to the processor,
When a switching point for switching the running synchronization task being executed by the synchronization processor to another task is detected, the status of the running synchronization task is changed to waiting,
Based on the contents of the synchronization task management table of the computer and the contents of the synchronization task management table of the other computer, a plurality of synchronization tasks registered as executable tasks in the synchronization task management table of the computer. A computer that selects one of them and causes the synchronous processor to execute it .
請求項記載の計算機であって、
前記ディスパッチャは、当該計算機の前記同期タスク管理テーブルと、前記他の計算機の前記同期タスク管理テーブルの双方に、実行可能タスクとして登録されている同期タスクを選択して、前記同期プロセッサに実行させる計算機。
The computer according to claim 1 ,
The dispatcher selects a synchronization task registered as an executable task in both the synchronization task management table of the computer and the synchronization task management table of the other computer, and causes the synchronization processor to execute the selected task. .
請求項記載の計算機であって、
前記ディスパッチャは、前記同期プロセッサが実行している実行中同期タスクを非同期プロセッサに割り当てる切替ポイントを検出した場合に、前記実行中同期タスクを前記同期タスク管理テーブルから削除して、前記非同期タスク管理テーブルに当該同期タスクを実行可能タスクとして登録する計算機。
A computer according to claim 2 , wherein
The dispatcher deletes the running synchronous task from the synchronous task management table and detects the asynchronous task management table when detecting a switching point for assigning the running synchronous task executed by the synchronous processor to the asynchronous processor. A computer that registers the synchronous task as an executable task.
請求項記載の計算機であって、
前記ディスパッチャは、前記同期プロセッサから前記非同期プロセッサへ割当を変更した前記同期タスクを再び前記同期プロセッサに割り当てる場合に、当該同期タスクを前記非同期タスク管理テーブルから削除して、前記同期タスク管理テーブルに実行可能タスクとして登録し、
前記他の計算機との間で前記同期タスク管理テーブルの内容を交換して、前記計算機の前記同期タスク管理テーブルの内容と前記他の計算機の前記同期タスク管理テーブルの内容とに基づいて、前記計算機の前記同期タスク管理テーブルに実行可能タスクとして登録されている複数の同期タスクの内の一を選択して前記同期プロセッサに実行させる計算機。
The computer according to claim 3 , wherein
When the dispatcher assigns the synchronous task whose assignment has been changed from the synchronous processor to the asynchronous processor to the synchronous processor again, the dispatcher deletes the synchronous task from the asynchronous task management table and executes the synchronous task on the synchronous task management table. Register as possible tasks,
The content of the synchronous task management table is exchanged with the other computer, and based on the content of the synchronous task management table of the computer and the content of the synchronous task management table of the other computer A computer that selects one of a plurality of synchronization tasks registered as executable tasks in the synchronization task management table and causes the synchronization processor to execute the selected task.
請求項記載の計算機であって、
前記切替ポイントは、前記実行中同期タスクが呼び出した、オペレーションシステムへのシステムコールである計算機。
The computer according to claim 4 , wherein
The switching point is a computer that is a system call to the operation system that is called by the executing synchronous task.
請求項記載の計算機であって、
前記切替ポイントは、前記実行中同期タスクが呼び出した、他のタスクから値を取得、もしくは埋め込みをするための命令である計算機。
The computer according to claim 4 , wherein
The switching point is a computer that is an instruction for acquiring or embedding a value from another task called by the executing synchronous task.
請求項記載の計算機であって、
前記非同期タスク管理テーブルは、複数の同期タスクを当該非同期タスク管理テーブルに割り当てられる順番に管理しており、
前記ディスパッチャは、前記順番に基づいて前記非同期プロセッサに実行させる同期タスクを選択する計算機。
The computer according to claim 4 , wherein
The asynchronous task management table manages a plurality of synchronous tasks in the order assigned to the asynchronous task management table,
The dispatcher is a computer that selects a synchronous task to be executed by the asynchronous processor based on the order.
請求項記載の計算機であって、
前記他の計算機から前記切替ポイントを検知した旨の通知を所定の時間内に受信しない場合に、当該他の計算機に同期が外れている旨の通知を送信する計算機。
The computer according to claim 4 , wherein
A computer that transmits a notification that the synchronization is lost to the other computer when the notification that the switching point has been detected is not received within a predetermined time from the other computer.
請求項記載の計算機であって、
前記同期プロセッサ又は前記非同期プロセッサのいずれにも実行され得るタスクについて前記ディスパッチャは、当該タスクの起動を指示した親タスクが割り当てられているプロセッサの種別に基づいて、当該親タスクが同期プロセッサに割り当てられている場合には当該タスクを同期プロセッサに、当該親タスクが非同期プロセッサに割り当てられている場合には非同期プロセッサに当該タスクを割り当てる計算機。
The computer according to claim 1 ,
For a task that can be executed by either the synchronous processor or the asynchronous processor, the dispatcher assigns the parent task to the synchronous processor based on the type of the processor to which the parent task instructing activation of the task is assigned. A computer that assigns the task to the synchronous processor if the task is assigned, and assigns the task to the asynchronous processor if the parent task is assigned to the asynchronous processor.
請求項記載の計算機であって、
更に記憶装置を有しており、
前記記憶装置は、前記同期プロセッサ又は前記非同期プロセッサのいずれにも実行され得るタスクについて、当該同期プロセッサおよび当該非同期プロセッサ各々について、当該タスクの実行契機を判断するために用いられる閾値を格納しており、
前記同期プロセッサ用の前記閾値は、前記非同期プロセッサ用の前記閾値とは異なる値に設定されている計算機。
A computer according to claim 9 , wherein
It also has a storage device,
The storage device stores a threshold value used to determine an execution timing of the task for each of the synchronous processor and the asynchronous processor with respect to a task that can be executed by either the synchronous processor or the asynchronous processor. ,
The computer in which the threshold value for the synchronous processor is set to a value different from the threshold value for the asynchronous processor.
請求項10記載の計算機であって、
前記同期プロセッサ又は前記非同期プロセッサのいずれにも実行され得るタスクとは、当該計算機が有するメモリの回収タスクである計算機。
The computer according to claim 10 , wherein
A task that can be executed by either the synchronous processor or the asynchronous processor is a computer that is a memory collection task of the computer.
請求項11記載の計算機であって、
前記メモリの回収タスクの実行契機を判断するために用いられる閾値は、メモリの空き容量についての閾値であり、前記同期プロセッサ用の閾値の方が前記非同期プロセッサ用の閾値より小さく設定されている計算機。
A computer according to claim 11 , wherein
The threshold value used for determining the execution timing of the memory recovery task is a threshold value regarding the free capacity of the memory, and the threshold value for the synchronous processor is set to be smaller than the threshold value for the asynchronous processor. .
他の計算機と同じタスクを処理する計算機であって、
前記他の計算機と同期をとってタスクを処理する同期プロセッサと、
前記他の計算機と同期をとらずにタスクを処理する非同期プロセッサと、
当該同期プロセッサ及び当該非同期プロセッサにタスクを割り当てるディスパッチャを有しており、
前記ディスパッチャによって前記同期プロセッサ又は前記非同期プロセッサのいずれにも実行され得るタスクには、当該同期プロセッサおよび当該非同期プロセッサ各々について、当該タスクの実行契機を判断するために用いられる閾値が設定されており、
前記同期プロセッサ用の前記閾値は、前記非同期プロセッサ用の前記閾値とは異なる値に設定されており、
前記同期プロセッサは前記同期プロセッサ用の前記閾値に基づいて、前記タスクの実行契機を判断し、
前記非同期プロセッサは前記非同期プロセッサ用の前記閾値に基づいて、前記タスクの実行契機を判断する計算機。
A computer that handles the same tasks as other computers,
A synchronous processor for processing a task in synchronization with the other computer;
An asynchronous processor for processing a task without synchronizing with the other computer;
A dispatcher for assigning tasks to the synchronous processor and the asynchronous processor;
For a task that can be executed by either the synchronous processor or the asynchronous processor by the dispatcher, a threshold used to determine the execution timing of the task is set for each of the synchronous processor and the asynchronous processor,
The threshold for the synchronous processor is set to a value different from the threshold for the asynchronous processor;
The synchronous processor determines an execution timing of the task based on the threshold for the synchronous processor;
The asynchronous processor is a computer that determines an execution timing of the task based on the threshold value for the asynchronous processor.
請求項13記載の計算機であって、
前記同期プロセッサ又は前記非同期プロセッサのいずれにも実行され得るタスクとは、当該計算機が有するメモリの回収タスクである計算機。
The computer according to claim 13 , wherein
A task that can be executed by either the synchronous processor or the asynchronous processor is a computer that is a memory collection task of the computer.
請求項14記載の計算機であって、
前記メモリの回収タスクの実行契機を判断するために用いられる閾値は、メモリの空き容量についての閾値であり、前記同期プロセッサ用の閾値の方が前記非同期プロセッサ用の閾値より小さく設定されている計算機。
The computer according to claim 14 , wherein
The threshold value used for determining the execution timing of the memory recovery task is a threshold value regarding the free capacity of the memory, and the threshold value for the synchronous processor is set to be smaller than the threshold value for the asynchronous processor. .
他の計算機と同じタスクを処理する計算機の制御方法であって、
前記他の計算機と同期をとってタスクを処理する同期プロセッサと、前記他の計算機と同期をとらずにタスクを処理する非同期プロセッサと、前記同期プロセッサに割り当てられたタスクの状態を管理する同期タスク管理テーブルと、前記非同期プロセッサに割り当てられたタスクの状態を管理する非同期タスク管理テーブルと、前記同期プロセッサ及び前記非同期プロセッサにタスクを割り当てるディスパッチャとを有し、前記他の計算機との間で、前記同期タスク管理テーブルの内容を、タスク制御用共有メモリ区画を介して相互に通信して交換している計算機において、前記ディスパッチャが、
タスクが前記他の計算機と同期をとって処理すべきタスクか否かを判断し、当該判断結果に基づいて、前記他の計算機と同期をとりながら処理すべき同期タスクは前記同期プロセッサに割当て、前記他の計算機との同期が不要な非同期タスクは前記非同期プロセッサに割当て、同期タスク又は非同期タスクのいずれとしてでも処理可能な同期・非同期タスクについて前記同期プロセッサ又は前記非同期プロセッサのどちらに割り当てるかを判定して、該当プロセッサに割当て、
前記同期プロセッサが実行している実行中同期タスクを、他のタスクに切り替える切替ポイントを検出した場合に、前記実行中同期タスクの状態を待機中に変更し、
当該計算機の前記同期タスク管理テーブルの内容と前記他の計算機の前記同期タスク管理テーブルの内容とに基づいて、当該計算機の前記同期タスク管理テーブルに実行可能タスクとして登録されている複数の同期タスクの内の一を選択して前記同期プロセッサに実行させる計算機制御方法。
A computer control method that processes the same tasks as other computers,
A synchronous processor that processes a task in synchronization with the other computer, an asynchronous processor that processes a task without synchronizing with the other computer, and a synchronous task that manages the state of a task assigned to the synchronous processor has a management table, and asynchronous task management table for managing the status of the tasks assigned to the asynchronous processor, and a dispatcher assign tasks to the synchronous processor and the asynchronous processor, between said another computer, the In a computer that exchanges the contents of a synchronous task management table by communicating with each other via a shared memory partition for task control, the dispatcher includes:
It is determined whether the task is a task to be processed in synchronization with the other computer, and based on the determination result, a synchronous task to be processed while synchronizing with the other computer is assigned to the synchronous processor, Asynchronous tasks that do not require synchronization with other computers are assigned to the asynchronous processor, and it is determined whether the synchronous processor or asynchronous task that can be processed as either a synchronous task or an asynchronous task is assigned to the synchronous processor or the asynchronous processor. Assign to the processor,
When a switching point for switching the running synchronization task being executed by the synchronization processor to another task is detected, the status of the running synchronization task is changed to waiting,
Based on the contents of the synchronization task management table of the computer and the contents of the synchronization task management table of the other computer, a plurality of synchronization tasks registered as executable tasks in the synchronization task management table of the computer. A computer control method for selecting one of them and causing the synchronous processor to execute it .
他の計算機と同じタスクを処理する計算機であって、前記他の計算機と同期をとってタスクを処理する同期プロセッサと、前記他の計算機と同期をとらずにタスクを処理する非同期プロセッサと、前記同期プロセッサに割り当てられたタスクの状態を管理する同期タスク管理テーブルと、前記非同期プロセッサに割り当てられたタスクの状態を管理する非同期タスク管理テーブルと、前記同期プロセッサ及び前記非同期プロセッサにタスクを割り当てるディスパッチャとを有し、前記他の計算機との間で、前記同期タスク管理テーブルの内容を、タスク制御用共有メモリ区画を介して相互に通信して交換している計算機において、前記ディスパッチャ
タスクが前記他の計算機と同期をとって処理すべきタスクか否かを判断し、当該判断結果に基づいて、前記他の計算機と同期をとりながら処理すべき同期タスクは前記同期プロセッサに割当て、前記他の計算機との同期が不要な非同期タスクは前記非同期プロセッサに割当て、同期タスク又は非同期タスクのいずれとしてでも処理可能な同期・非同期タスクについて前記同期プロセッサ又は前記非同期プロセッサのどちらに割り当てるかを判定して、該当プロセッサに割当てる処理と、
前記同期プロセッサが実行している実行中同期タスクを、他のタスクに切り替える切替ポイントを検出した場合に、前記実行中同期タスクの状態を待機中に変更する処理と、
当該計算機の前記同期タスク管理テーブルの内容と前記他の計算機の前記同期タスク管理テーブルの内容とに基づいて、当該計算機の前記同期タスク管理テーブルに実行可能タスクとして登録されている複数の同期タスクの内の一を選択して前記同期プロセッサに実行させる処理と
を実行させる計算機制御プログラム。
A computer which processes the same task with other computers, a synchronization processor for processing tasks in synchronism with the other computer, and an asynchronous processor for processing tasks without synchronized with the other computer, the A synchronous task management table for managing a state of a task assigned to a synchronous processor, an asynchronous task management table for managing a state of a task assigned to the asynchronous processor, and a dispatcher for assigning a task to the synchronous processor and the asynchronous processor; the a, between said another computer, the contents of the synchronization task management table, in a computer that is exchanged in communication with one another via a shared memory partition for the task control, the dispatcher,
It is determined whether the task is a task to be processed in synchronization with the other computer, and based on the determination result, a synchronous task to be processed while synchronizing with the other computer is assigned to the synchronous processor, Asynchronous tasks that do not require synchronization with other computers are assigned to the asynchronous processor, and it is determined whether the synchronous processor or asynchronous task that can be processed as either a synchronous task or an asynchronous task is assigned to the synchronous processor or the asynchronous processor. And assigning to the processor,
A process of changing the state of the running synchronous task to standby when a switching point for switching the running synchronous task being executed by the synchronous processor to another task is detected;
Based on the contents of the synchronization task management table of the computer and the contents of the synchronization task management table of the other computer, a plurality of synchronization tasks registered as executable tasks in the synchronization task management table of the computer. A process of selecting one of them and causing the synchronous processor to execute
A computer control program that executes
JP2012501735A 2010-02-26 2011-02-10 Computer, computer control method, and computer control program Active JP5379906B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012501735A JP5379906B2 (en) 2010-02-26 2011-02-10 Computer, computer control method, and computer control program

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP2010042848 2010-02-26
JP2010042848 2010-02-26
JP2010190256 2010-08-27
JP2010190256 2010-08-27
JP2012501735A JP5379906B2 (en) 2010-02-26 2011-02-10 Computer, computer control method, and computer control program
PCT/JP2011/052880 WO2011105226A1 (en) 2010-02-26 2011-02-10 Computer, computer control method, and computer control program

Publications (2)

Publication Number Publication Date
JPWO2011105226A1 JPWO2011105226A1 (en) 2013-06-20
JP5379906B2 true JP5379906B2 (en) 2013-12-25

Family

ID=44506640

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012501735A Active JP5379906B2 (en) 2010-02-26 2011-02-10 Computer, computer control method, and computer control program

Country Status (2)

Country Link
JP (1) JP5379906B2 (en)
WO (1) WO2011105226A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101867866B1 (en) * 2017-03-23 2018-06-18 주식회사 노트스퀘어 Method and Apparatus for optimizing target program dynamically

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009003537A (en) * 2007-06-19 2009-01-08 Mitsubishi Electric Corp Computer

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11312148A (en) * 1998-04-28 1999-11-09 Hitachi Ltd Method and device for synchronizing barrier
DE102005061393A1 (en) * 2005-12-22 2007-07-05 Robert Bosch Gmbh Software module distributing method for control device of motor vehicle, involves classifying and allocating software modules to control devices based on security-relevant classification features

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009003537A (en) * 2007-06-19 2009-01-08 Mitsubishi Electric Corp Computer

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101867866B1 (en) * 2017-03-23 2018-06-18 주식회사 노트스퀘어 Method and Apparatus for optimizing target program dynamically

Also Published As

Publication number Publication date
JPWO2011105226A1 (en) 2013-06-20
WO2011105226A1 (en) 2011-09-01

Similar Documents

Publication Publication Date Title
US9798595B2 (en) Transparent user mode scheduling on traditional threading systems
WO2017166777A1 (en) Task scheduling method and device
KR0137406B1 (en) Fault tolerant computer system
US8082315B2 (en) Programming idiom accelerator for remote update
US8886919B2 (en) Remote update programming idiom accelerator with allocated processor resources
US6625638B1 (en) Management of a logical partition that supports different types of processors
US20200133718A1 (en) Virtual machine migration task management
WO2007112635A1 (en) Embedded operating system of smart card and the method for processing the task
CN111831411B (en) Task processing method and device, storage medium and electronic equipment
US10565135B2 (en) Information processing device, information processing method, main processor core, program, information processing method, and sub processor core
EP2833264A1 (en) Virtual computer schedule method
EP4102367A1 (en) Message format indicator for resource-constrained devices
WO2019178178A1 (en) Thread scheduling for multithreaded data processing environments
JP5379906B2 (en) Computer, computer control method, and computer control program
JP6219514B2 (en) Computing device that provides virtual multipath state access, remote computing device for virtual multipath, method for providing virtual multipath state access, method for virtual multipath, computing device, multiple methods for computing device And a machine-readable recording medium
JP6774147B2 (en) Control device
US12061936B2 (en) Computer system and program execution method
WO2013051067A1 (en) Computer and computer-control method
JP6446315B2 (en) Multiplexing computer storage area matching device
CN102681881B (en) Across machine dispatching method and system thereof
KR101085393B1 (en) Method and apparatus for executing command to multitasking a plurality of process
JP5867630B2 (en) Multi-core processor system, multi-core processor system control method, and multi-core processor system control program
JP6036690B2 (en) Distributed execution system and distributed program execution method
JP2012164075A (en) Storage synchronization system, virtual machine, storage synchronization method and program
CN118511157A (en) Work implement for resilient management of multiple work implement workloads on an accelerator device

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130528

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130725

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: 20130917

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130927

R150 Certificate of patent or registration of utility model

Ref document number: 5379906

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150