JP5379906B2 - Computer, computer control method, and computer control program - Google Patents
Computer, computer control method, and computer control program Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task 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
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.
これまで専用ハードウェアによって各計算機が接続されていた従来のフォールトトレラントシステムの構成では、各計算機において同一時刻に同一のプログラムを実行することは可能であった。
一方、近年ではネットワークの高速化、及び計算機の汎用化に伴い、専用ハードウェアではなく、一般的なネットワークを利用して複数計算機を接続する技術が発達するとともに、計算機システムが処理する情報量の拡大に伴い、各処理ステップを複数のタスクとして分解し、マルチタスク実行可能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.
−−−システム構成−−−
以下に実施形態について図面を用いて詳細に説明する。図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
計算機システム10は、マルチプロセッサ環境を有する複数の計算機をネットワークで接続した計算機システムであって、計算機間でのタスク同期を行い、フォールトトレラントシステムを構成するコンピュータシステムである。
計算機システム10は、少なくとも2台の計算機100Aと計算機100Bがネットワーク400および500によって接続されている。計算機100Aと計算機100Bは同一の構成を有しており、以下では、詳細な構造については計算機100Aについてのみ説明する。The
In the
計算機100Aは、2つのプロセッサ180A(180A−1および180A−2)、タイマー170A、通信インターフェース150Aおよび160A、ならびにメモリ110Aを備え、これらはバス190Aにて接続されている。
本実施形態では、プロセッサ180A−1は、計算機100Bとの間でタスクを同期するタスク同期用として用い、プロセッサ180A−2は、計算機100Bとは独立して動作するタスク非同期用として用いるものとする。なお、タスク非同期用のプロセッサ180A−2の用途が一般的である。The
In the present embodiment, the
メモリ110Aは、2つのタスクプログラム120(120Aおよび120B)、オペレーティングシステム140A、ならびに、計算機100Bとの間でのタスク同期に必要な情報を送受するためのタスク制御用共有メモリ区画130Aなどを備えている。なお、タスクプログラム120には、オペレーティングシステムを実現するために必要なシステムプログラムと、それ以外のユーザプログラムとを含む。本実施形態では、システムプログラムは不図示とし、ユーザプログラムのみをタスクプログラム120として図示することとする。
The
オペレーティングシステム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
オペレーティングシステム140Aは、計算機100A内のリソースを複数のタスクに割り当てるために、プリエンプションを行う技術を提供している。プリエンプションとは、実行中のタスクを一時的に打ち切り、他のタスクにリソースを使用させることである。
The
後述するように、各タスクには優先度が設定可能となっており、オペレーティングシステム140Aは、優先度に応じて、タスクの実行順序を決定する。実行優先度の高いタスクが存在する場合は、実行優先度が低いタスクはプリエンプションにより実行権限を一時的に打ち切られる。オペレーティングシステム140Aは、タスクごとに定められる所定の時間タスクを実行した場合にも、そのタスクの実行を打ち切る。
As will be described later, a priority can be set for each task, and the
タスクプログラム120には、複数の命令が含まれる。図2には、タスクプログラム120Aの構成例が図示されている。タスクプログラム120Aには、制御命令列A120−1、システムコール120−2、および制御命令列B120−3が含まれている。ここでシステムコール120−2とは、タスクからオペレーティングシステム140Aに対する命令である。システムコール120−2としては、例えば、ディスクへのアクセス命令や、タイマー170Aからの時刻の取得命令などがある。オペレーティングシステム140Aは、タスクから呼び出されるシステムコールに応じて、例えば、ディスクへのアクセスや、タイマー170Aからの時刻の取得を行うなどの各種の処理を行う。
The
近年計算機は、より高速に処理を実行するためにキャッシュ機能を提供している。プログラムが使用する情報がキャッシュにヒットする場合、計算機が保有するメモリから情報を取得する必要がないため、高速に動作することが可能となる。本実施形態の計算機システム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
プロセッサ180A−1は、プログラムカウンタ180A−1a、汎用レジスタ180A−1b、および制御レジスタ180A−1cを備えている。なお、プロセッサ180A−2も同様の構成である。
プログラムカウンタ180A−1aは、プロセッサ180A−1が次に実行するべき命令が格納されているメモリ110A上のアドレスを指し示すレジスタである。プロセッサ180A−1がメモリ110Aから命令を読み込む度に、読み取った命令の分だけ値が増加する。The
The
汎用レジスタ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
The control register 180A-1c is a register for instructing to reset various flags or set the operation mode of the
図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
TCB146には、ポインタ146−0が含まれる。実行可能タスクキュー144および待機状態タスクキュー145は、キューの先頭のTCB146を示すポインタを含み、実行可能タスクキュー144および待機状態タスクキュー145に格納されているTCB146のポインタ146−0には、キューにおける次のTCB146を示すポインタが格納される。キューの最後尾のTCB146のポインタ146−0にはnullが設定される。
The
また、TCB146には、タスクID146−1、プログラムカウンタ146−2、汎用レジスタ146−3、制御レジスタ146−4、割り込み可否146−5、プリエンプトタイプ146−6が含まれる。
The
タスクは、タスク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
汎用レジスタ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
本実施形態では、ディスパッチャ141Aが、プロセッサ180Aのカウンタやレジスタの内容をTCB146に設定して実行中のタスクを打ち切ることを「アン・ディスパッチ」といい、TCB146に基づいてプロセッサ180Aに新たなタスクを実行させることを「ディスパッチ」ということとする。
In the present embodiment, the
タスク制御用共有メモリ区画130は、各計算機100間で分散共有されるメモリである。タスク制御用共有メモリ区画130は、タスクの同期処理を行う頻度よりも高い頻度でOS140により計算機100間で内容の同期が行われているものとする。後述するように、タスク制御用共有メモリ区画130には、実行可能タスクキュー144に格納されているTCB146がコピーされる。これによりディスパッチャ141は、各計算機100における実行可能タスクキュー144に格納されているTCB146を交換することが可能になっている。
The task control shared
同期計算機管理テーブル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
−−−非同期ディスパッチ−−−
図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
The
ディスパッチャ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
また、ディスパッチャ141Aは、実行可能タスクキュー144のポインタに、TCB146Aの次に位置するTCB146Bを示すポインタを設定する。ディスパッチャ141Aは、プロセッサ180A−2に実行を指示する(S704)。
このようにして、プロセッサ180A−2におけるタスクの切り替えが行われる。Further, the
In this way, task switching is performed in the
−−−非同期アン・ディスパッチ−−−
図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
The
As a result, the state of the
−−−同期ディスパッチ−−−
図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
オペレーティングシステム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
図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
ディスパッチャ141Aは、実行可能タスクキュー144の内容をタスク制御用共有メモリ区画130Aに書き込む。上述したように、タスク制御用共有メモリ区画130Aは、他の計算機100と共有されているので、各計算機100の実行可能タスクキュー144の内容がタスク制御用共有メモリ区画130Aに書き込まれることになる。
The
ディスパッチャ141Aは、同期計算機管理テーブル111Aを参照し、同期を取る計算機100(以下、「同期計算機」ともいう。)がn台であることを確認する(S7131)。ディスパッチャ141Aは、同期を取る計算機100のそれぞれからタスク制御用共有メモリ区画130Aに書き込まれているTCB146のタスクID146−1のうち、タスク制御用共有メモリ区画130Aにn個存在するものがあるか否かを判断する(S7132)。ディスパッチャ141Aは、n個存在するタスクIDのうち、識別子が最も若い同期計算機100の実行可能タスクキュー144の最も先頭に近いものに対応するタスクをディスパッチするタスクとして選定する(S7133)。
The
ディスパッチャ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
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
以上のようにして、同期計算機管理テーブル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
以上のようにして、全ての計算機100において、実行可能タスクキュー144を交換した上で、全ての実行可能タスクキュー144に基づいてディスパッチすべきタスクを決定するので、全ての計算機100において同じタスクを次に割り当てるタスクに決定することができる。これにより、実行可能タスクキュー144に登録されているTCB146が計算機100によって異なる場合でも、全ての計算機100において同じタスクがディスパッチされるようにすることができる。よって、クロック同期等を行うことなく、タスクの同期を行うことができる。
As described above, after exchanging the
−−−同期アン・ディスパッチ−−−
図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
When receiving an instruction from the
−−−同期アン・ディスパッチ−−−
上記のように、ディスパッチおよびアン・ディスパッチのタイミング(切替可能ポイント)は、オペレーティングシステム140Aのディスパッチャ141Aが決定するが、タスクプログラム120がそのタイミングを指示するようにすることもできる。この場合、所定のシステムコールを呼び出すAPI(Application Program Interface)を規定しておくようにする。以下、ディスパッチやアン・ディスパッチのタイミングを決定するためのAPIに規定されたシステムコールを「切替システムコール」という。また、図2のタスクプログラム120Aに含まれるシステムコール120−2は、切替システムコールであるものとする。---- Synchronous undispatch ----
As described above, the
図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
−−−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
−−−同期・非同期の切り替え−−−
オペレーティングシステム140Aは、例えば、プログラムの起動時にユーザから指定されたオプションにより、当該プログラムの実行に係るタスクを他の計算機100と同期すべきか否かを決定することができる。ディスパッチャ141Aは、同期すべきタスクは同期用のプロセッサ180A−1に割り当て、非同期でよいタスクは非同期用のプロセッサ180A−2に割り当てる。--- Switching between synchronous and asynchronous ---
For example, the
オペレーティングシステム140Aは、タスクにおいて実行される処理に応じてタスクを同期すべきか否かを決定することもできる。例えば、タスクから同期を指示する所定のシステムコール(以下、「同期システムコール」という。)が呼び出された場合、ディスパッチャ141Aは、そのタスクを同期用のプロセッサ180A−1に割り当て、タスクから非同期を指示する所定のシステムコール(以下、「非同期システムコール」という。)が呼び出された場合には、そのタスクを非同期用のプロセッサ180A−2に割り当てるようにすることができる。
The
図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
このように、タスクにおいて実行される処理に応じて同期及び非同期を切り替えるようにすることで、同期に適さない計算機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
オペレーティングシステム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
−−−非同期タスクの同期への変更−−−
図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
When the
−−−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
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
The
タスク管理テーブル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
一方、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
−−−回数を考慮したタイムアウト処理−−−
図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
−−−Voter870を含むシステム構成−−−
図18は、計算機システム10が、計算機100Aからの出力と計算機100Bからの出力とが一致することを検証するVoter870(多数決機)を含む構成を示す図である。--- System
FIG. 18 is a diagram illustrating a configuration in which the
Voter870は、計算機システム10を構成する複数の計算機100からの出力が一致していればそのまま出力し、異なる場合には、多数決により最も一致した数の多いものを出力する多数決処理を行う。Voter870は、メモリ810、プロセッサ820、通信インターフェース860を備えており、これらがバス830により接続されている。メモリ810は、オペレーティングシステム840を備え、オペレーティングシステム840は、同期計算機管理テーブル850を備えている。同期計算機管理テーブル850は計算機100が備える同期計算機管理テーブル111と同様の構成である。同期計算機管理テーブル850には、多数決処理に参加する計算機100が登録されており、オペレーティングシステム840は、同期計算機管理テーブル850に登録されている計算機100からの出力のみについて多数決処理を行う。
The
以下、Voter870を備える計算機システム10における処理について説明する。
Hereinafter, processing in the
−−−計算機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
FIG. 19 is a diagram illustrating a process of changing the computer 100 that participates in the majority process in the
−−−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
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
−−−ソフトウェアエラーの処理−−−
図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
−−−ハードウェアエラーの処理−−−
図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
−−−タスク間通信を考慮したタスク同期処理−−−
図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
以上説明したように、例えばリアルタイムタスク等、優先度の高いプロセスの実行を行うためにプリエンプションを実行している場合に、現行のマルチタスク実行可能なオペレーティングシステムでは、タイマーに基づいた判断によりプリエンプションを行うため、プリエンプションが行われたタスク処理の進捗が計算機間で変わり、各計算機間での同期が取れなくなるところ、本実施形態によれば、複数の計算機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
また、本実施形態の計算機システム10によれば、タスクの同期をとる処理と、タスクの同期を外して非同期に処理する方式とを交互に制御し、その制御の境目で複数コアを移動させることができる。
Further, according to the
また、本実施形態の計算機システム10によれば、タスクが同期を外れるために他のコアへ移動するためのAPIやシステムコールをタスクに提供することができる。
Further, according to the
また、本実施形態の計算機システム10によれば、他のコアへ移動し同期が外れたタスクが、再び同期を取るために元のコアへ戻ってくるためのAPIやシステムコールをタスクに提供することができる。
Further, according to the
また、本実施形態の計算機システム10によれば、他計算機との同期を意識して、障害等が発生した場合に、他の計算機にエラーを通知して、エラー処理を行うことができる。
Further, according to the
したがって、高信頼システムを実現できる。 Therefore, a highly reliable system can be realized.
また、本実施形態の計算機システム10によれば、Voterによる精査の結果を受け、タスク同期の制御にフィードバックすることができる。
Further, according to the
なお、これまで示した計算機システム10をなす計算機100A、100Bにおける各機能部、Voter870における各機能部等はハードウェアとして実現してもよいし、各装置におけるメモリやHDD(Hard Disk Drive)などの適宜な記憶部に格納したプログラムとして実現するとしてもよい。この場合、各装置のCPUなど制御部がプログラム実行に合わせて記憶部より該当プログラムを読み出して、これを実行することとなる。
The function units in the
また、本実施形態の計算機100Aは、2つのプロセッサ180A−1および180A−2を備えるものとしたが、3つ以上のプロセッサを備えるようにしてもよい。
Further, the
また、計算機100Aは、複数のコアを有する1つのプロセッサのみを備えるようにしてもよい。この場合、オペレーティングシステム140Aは、各コアについてTCBを管理し、タスクのディスパッチを行うものとする。
Further, the
また、本実施形態では、実行可能タスクキュー144には優先度の高い順にTCB146が格納されているものとしたが、TCB146に優先度を記憶するようにして、実行可能タスクキュー144には、キュー以外の形態で、順番を問わずにTCB146を管理するようにしてもよい。この場合、ディスパッチャ141Aは、図4のS701において、実行可能タスクキュー144に格納されているTCB146のうち、優先度の最も高いものを選択するようにする。
In this embodiment, the
また、本実施形態では、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
以上の実施形態によって、マルチプロセッサ環境を有する複数の計算機をネットワークで接続した計算機システムにおいて、計算機間でのタスク同期が可能となる。即ち、一般的なネットワークを利用して複数計算機を接続する方式において、従来のマルチタスク動作可能な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
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
ディスパッチャ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
実行可能タスクキュー先頭のTCB146が同期タスク順序管理キュー148の先頭のタスクと同一でない場合は(S705:NO)、実行順序待機中なので実行可能タスクキューの先頭のTCBを、実行可能タスクキューの最後尾に繋ぎ直す(S707)。繋ぎなおした後に、再びS701に戻る。
If the
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
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
When the
これにより、ディスパッチャ141Aは、タスク管理テーブル143A−2の実行可能タスクキュー144に登録されたTCB146Eに基づいて、図26に示すディスパッチを行い、プロセッサ180A−2においてタスク120Bが実行される。
Accordingly, the
−−−非同期タスクの同期への変更−−−
更に本実施形態では、図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
When the
その後、同期用のプロセッサ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
更に他の実施形態を示す。本実施形態は、実施例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
−−−プロセッサ毎メモリ回収機能の処理−−−
図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
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
−−−本実施形態の同期タスクおよび非同期タスクの定義テーブルの内容−−−
図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
本実施例では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
−−−同期タスクの非同期への変更−−−
図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
When the
ディスパッチャ141Aは、タスク120BのTCB146Eの非同期実行時プロセッサ識別子146−9より、タスク120Bが実行される非同期用プロセッサ識別子を取得する。すなわち、非同期用プロセッサ180A−2であるという情報を取得する(S1000)。非同期用のプロセッサ180A−2に対応するタスク管理テーブル143A−2の実行可能タスクキュー144に、タスク120BについてのTCB146Eを登録する(S743)。非同期実行用プロセッサ180A−2用タスク管理テーブル内の同期タスク順序管理キュー148の最後尾にタスク120Bへのリンクを登録する(S745)。
The
これにより、ディスパッチャ141Aは、タスク管理テーブル143A−2の実行可能タスクキュー144に登録されたTCB146Eに基づいて、図26に示すディスパッチを行い、プロセッサ180A−2においてタスク120Bが実行される。
Accordingly, the
−−−非同期タスクの同期への変更−−−
図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
When the
ディスパッチャ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
これにより、ディスパッチャ141Aは、タスク管理テーブル143A−1の実行可能タスクキュー144に登録されたTCB146Eに基づいて、図26に示すディスパッチを行い、プロセッサ180A−1においてタスク120Bが実行される。
Thereby, the
−−−タスクの起動処理−−−
図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
タスクが起動される場合、ディスパッチャ141は記録媒体600内の同期タスク非同期タスク管理テーブル610より、起動を指定されたタスク名610−1を選出する(S1002)。該当したタスク名610−1の行からタスクの種類610−3を参照し、該当タスクの種類が同期か、非同期か、または同期,非同期両方かを判定する。
When the task is activated, the
同期タスクと判断された場合、当該タスクを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
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
ステップ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
(5)(3)に記載の計算機であって、
前記所定の命令は、ユーザプログラムからオペレーティングシステムに対するシステムコールであること、を特徴とする計算機。(5) The computer according to (3),
The computer according to
(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
(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
(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
147
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.
前記同期プロセッサ又は前記非同期プロセッサのいずれにも実行され得るタスクとは、当該計算機が有するメモリの回収タスクである計算機。 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.
前記メモリの回収タスクの実行契機を判断するために用いられる閾値は、メモリの空き容量についての閾値であり、前記同期プロセッサ用の閾値の方が前記非同期プロセッサ用の閾値より小さく設定されている計算機。 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.
前記同期プロセッサ又は前記非同期プロセッサのいずれにも実行され得るタスクとは、当該計算機が有するメモリの回収タスクである計算機。 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.
前記メモリの回収タスクの実行契機を判断するために用いられる閾値は、メモリの空き容量についての閾値であり、前記同期プロセッサ用の閾値の方が前記非同期プロセッサ用の閾値より小さく設定されている計算機。 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
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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009003537A (en) * | 2007-06-19 | 2009-01-08 | Mitsubishi Electric Corp | Computer |
Family Cites Families (2)
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 |
-
2011
- 2011-02-10 JP JP2012501735A patent/JP5379906B2/en active Active
- 2011-02-10 WO PCT/JP2011/052880 patent/WO2011105226A1/en active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009003537A (en) * | 2007-06-19 | 2009-01-08 | Mitsubishi Electric Corp | Computer |
Cited By (1)
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 |