JP2008269579A - Multitask processor and method therefor - Google Patents

Multitask processor and method therefor Download PDF

Info

Publication number
JP2008269579A
JP2008269579A JP2008050848A JP2008050848A JP2008269579A JP 2008269579 A JP2008269579 A JP 2008269579A JP 2008050848 A JP2008050848 A JP 2008050848A JP 2008050848 A JP2008050848 A JP 2008050848A JP 2008269579 A JP2008269579 A JP 2008269579A
Authority
JP
Japan
Prior art keywords
task
section
program execution
tasks
state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008050848A
Other languages
Japanese (ja)
Other versions
JP4997144B2 (en
Inventor
Naoshi Uchihira
平 直 志 内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2008050848A priority Critical patent/JP4997144B2/en
Priority to US12/055,860 priority patent/US20080244592A1/en
Publication of JP2008269579A publication Critical patent/JP2008269579A/en
Application granted granted Critical
Publication of JP4997144B2 publication Critical patent/JP4997144B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To provide a stable behavior for parallel programs. <P>SOLUTION: This multitask processing device as one embodiment of the present invention is a multitask processing device for multitask-processing a plurality of tasks divided into two or more of sections in each thereof is provided with a stable set storage part for storing stable set defined with one or more section combinations between respective tasks, a program execution state calculation part for finding a set of the sections for starting execution when executing the task in the next, in every task, and a current section of each other task different from the task hereinbefore, as a program execution state, a distance calculation part for calculating a distance between each of the program execution states and the stable set, and a task execution part for selecting the task to be executed in the next, based on each calculated distance, and for executing the selected task. <P>COPYRIGHT: (C)2009,JPO&INPIT

Description

本発明は、マルチタスク処理装置およびその方法に関し、たとえばコンピュータに代表される情報処理装置のプログラム開発および実行を支援する技術の改良に関するもので、より具体的には、信頼性の高く性能が安定したプログラムを開発する技術に関するものである。   The present invention relates to a multitask processing apparatus and method therefor, for example, to improvement of technology for supporting program development and execution of an information processing apparatus typified by a computer. More specifically, the present invention relates to a highly reliable and stable performance. This is related to the technology to develop the program.

コンピュータのプログラムを開発するには、専用のプログラム開発支援装置を用いて、プログラムのソースコードを作成し、テスト実行やミスの除去(デバッグ)などを行なう。このようなプログラム開発支援装置は、エディタやテスト実行のためのシミュレータなど専用の機能を持ち、CASEツールなどとも呼ばれる。   In order to develop a computer program, a dedicated program development support device is used to create a program source code and perform test execution, error removal (debugging), and the like. Such a program development support apparatus has dedicated functions such as an editor and a simulator for test execution, and is also called a CASE tool.

本来、コンピュータのプログラムは状況に応じてコンピュータの動作を制御するものであるから、入力が変わればプログラム内容に応じて動作も変わる。しかし、このように予め設計された挙動の範囲(想定の範囲)を超えて、多様な動作を示すプログラムも存在する。そのようにプログラムの実行時の挙動が非決定的であるプログラムを非決定的なプログラムと呼ぶ。対して、前記のように入力が決まれば挙動が一意に定まるプログラムは決定的なプログラムと呼ぶ。   Originally, a computer program controls the operation of the computer in accordance with the situation, so that if the input changes, the operation also changes in accordance with the contents of the program. However, there are programs that show various operations beyond the range of behaviors (assumed range) designed in advance. A program whose behavior at the time of execution is non-deterministic is called a non-deterministic program. On the other hand, a program whose behavior is uniquely determined when an input is determined as described above is called a definitive program.

非決定的なプログラムの代表例は並行プログラムである。並行プログラムは、複数のプロセスが別々に動作しながら協調するので、各プロセスのどの部分がどのようなタイミングで実行されるかによって、全体としての動作が異なってくる。並行プログラムには、単一CPU上で複数のタスクが概念的に並行に動くマルチタスク(マルチスレッド、マルチプロセスとも呼ぶ)システムと、複数のCPU上で物理的にも並行で動く並列マルチタスクシステムがある。また、プログラムそのものには並行性がない場合でも、外部からの入力のタイミングなどに起因して実行順序に非決定性が発生し、事実上の非決定性を示すプログラムも存在する。例えば、プラントを制御するシーケンス制御(ラダー,SFC)プログラムやIF−THEN ル−ル型のプログラムにはタスクという概念がないが、外部からの入力のタイミングでル−ルの実行順序が変わってしまう場合があり非決定性を持つ。
特開平8-16429号公報 特許第3675623号 特許第3641090号 特許第3278588号
A typical example of a non-deterministic program is a concurrent program. Since a parallel program cooperates while a plurality of processes operate separately, the overall operation differs depending on which part of each process is executed and at what timing. For concurrent programs, a multitasking system (also referred to as multithreading or multiprocessing) in which multiple tasks move conceptually in parallel on a single CPU, and a parallel multitasking system in which multiple tasks move physically in parallel on multiple CPUs There is. Even if the program itself does not have concurrency, non-determinism occurs in the execution order due to the timing of input from the outside, and there are programs that exhibit de facto non-determinism. For example, a sequence control (ladder, SFC) program for controlling a plant or an IF-THEN rule type program has no concept of a task, but the execution order of the rule changes at the timing of input from the outside. It may be nondeterministic.
JP-A-8-16429 Japanese Patent No. 3675623 Patent No. 3641090 Patent No. 3278588

ところで、並行プログラムに代表される非決定的なプログラムをテスト及びデバッグする開発作業は、文献「C.E.McDowell、 D.P. Helmbold、 Debugging Concurrent Programs、 ACM Computing Surveys、 Vol.21、 No.4、 1989. 」に示されているように、決定的なプログラムの開発作業に比べて非常に困難である。これは、非決定性を持つプログラムに従来のテスト・デバッグの手法を適用した場合、プログラムが非決定的な挙動を持つために、(1)必要なテストケ−スが条件の組合せによって膨大な数になり、また(2)バグの発生自体も再現性がない、といった問題が生じるためである。この問題を解決するために従来用いられていたアプロ−チは下記の3種類に分類できる。
(1)プログラムテスト技術(並行プログラム用デバッガなど)
(2)プログラム検証技術(並行プログラムの検証など)
(3)プログラム合成手法(論理による仕様記述からプログラム生成など)
しかし、これらのアプロ−チには、
(1)個々のユ−ザのスキルに依存する部分が大きい
(2)単純化した例題のような簡単なプログラムにしか適用できない
といった問題があった。
By the way, the development work for testing and debugging a nondeterministic program typified by a concurrent program is described in documents “CE McDowell, DP Helmhold, Debugging Current Programs, ACM Computing Services, Vol.21, No.4. 1989. "is very difficult compared to definitive program development work. This is because when a conventional test / debug method is applied to a program having nondeterminism, the program has nondeterministic behavior. (1) The number of necessary test cases becomes enormous due to combinations of conditions. In addition, (2) the occurrence of the bug itself is not reproducible. Conventional approaches used to solve this problem can be classified into the following three types.
(1) Program test technology (parallel program debugger, etc.)
(2) Program verification technology (concurrent program verification, etc.)
(3) Program synthesis method (program generation from specification description by logic)
However, these approaches include
(1) A large part depends on the skill of each user (2) There is a problem that it can be applied only to a simple program such as a simplified example.

また、試験工程で十分テストを行なったプログラムでも、実際の実行時に試験工程と実行環境すなわちマシンの性能、入力のタイミング、処理系などが異なり、試験では起こらなかった非決定的な挙動により、不具合が発生する場合が多い。銀行のオンラインシステムなど高い信頼性を要求されるシステムにおいては、このようなバグが致命的な事故を引き起こす場合もある。   Even in a program that has been thoroughly tested in the test process, the test process and execution environment, that is, machine performance, input timing, processing system, etc. are different during actual execution, and problems may occur due to non-deterministic behavior that did not occur in the test. Often occurs. In a system that requires high reliability such as an online system of a bank, such a bug may cause a fatal accident.

さらに、機能上の不具合だけでなく、意図しなかった非決定的な低消費電力やメモリ使用量などが想定範囲を超えてシステムとして不具合を生じる場合もある。   Furthermore, not only functional defects but also unintended non-deterministic low power consumption, memory usage, and the like may exceed the expected range and cause problems as a system.

このような問題点を解決すべく、本出願人は、信頼性の高い並行プログラムを開発するための技術として、超逐次プログラミングを提案している(特開平8-16429号公報、特許第3675623号、特許第3641090号、特許第3278588号、米国特許第6598222号、米国特許第6275980号、米国特許第5956511号、米国特許第6067415号、米国特許第5860009号)。この技術は、並行プログラムを一旦逐次化し、そのプログラムについてテスト実行とデバッグを行ない、正しい実行ログだけをマージし、それを外れる挙動を除外したグローバル状態遷移システムから、改めて並行プログラム全体を再度生成するものである。   In order to solve such problems, the present applicant has proposed hyper sequential programming as a technique for developing a highly reliable concurrent program (Japanese Patent Laid-Open No. 8-16429, Japanese Patent No. 3756623). No. 3641090, No. 3278588, U.S. Pat. No. 6,659,822, U.S. Pat. No. 6,275,980, U.S. Pat. No. 5,565,511, U.S. Pat. No. 6,067,415, U.S. Pat. This technology serializes a concurrent program, performs test execution and debugging on the program, merges only the correct execution log, and regenerates the entire concurrent program from a global state transition system that excludes the behavior that deviates from it. Is.

しかし、この技術では、プログラムの規模に応じたサイズの状態遷移モデルを扱わなければならず、また、並行プログラムを一旦逐次化して再度生成する必要がある。このため、並行プログラムが大規模化すると全体の処理量が多くなり、効率的な適用が困難であった。   However, in this technique, it is necessary to handle a state transition model having a size corresponding to the scale of the program, and it is necessary to serialize the parallel program once and generate it again. For this reason, when the concurrent program is enlarged, the entire processing amount is increased, and it is difficult to efficiently apply it.

また、本出願人は、シナリオを用いたプログラミング支援装置を提案している。この技術では、プロセスに含まれる各部分の実行順序を状態遷移図形式のシナリオで表している。このシナリオは、ノードをエッジで接続したネットワーク状のもので、ノードが状態を表し、ノードから延びるエッジはノードが表す状態から実行可能なプログラムの部分を表し、一つのノードから複数のエッジが出て行く場合も多い。このようなシナリオの分岐から、利用者が、妥当でないエッジを削除して行くと妥当な実行順序を表すエッジがシナリオに残る。この順序を実現するための同期命令を各プロセスに埋め込むことによってユーザが認める実行順序を実現するというものである。   In addition, the present applicant has proposed a programming support apparatus using a scenario. In this technique, the execution order of each part included in a process is represented by a scenario in the form of a state transition diagram. In this scenario, nodes are connected by edges, the nodes represent the state, the edges extending from the node represent the portion of the program that can be executed from the state represented by the node, and multiple edges are output from one node. There are many cases to go. If a user deletes an invalid edge from such a scenario branch, an edge representing an appropriate execution order remains in the scenario. By embedding synchronous instructions for realizing this order in each process, the execution order recognized by the user is realized.

しかし、この技術でも、複数のプロセスを含む並行プログラム全体を状態遷移図形式で表す必要があるため、複雑な並行プログラムについてはそれに比例して複雑な状態遷移図を扱わなければならないという問題点があった。また、プログラムに埋め込む同期命令の分だけ、プログラムが複雑化して理解しにくく、容量が増大するという問題点があった。さらに、このようにプログラムに同期命令を埋め込む場合、プログラミング(コーディング)の段階からプログラム中に存在する同期命令と、上記のような実行順序を実現するために新たに埋め込まれた同期命令が相互に影響する可能性もあり、これを避けるためにはその分注意してコーディングを行なわなければならなかった。   However, even with this technology, it is necessary to represent the entire concurrent program including multiple processes in the form of a state transition diagram. Therefore, there is a problem that a complicated state transition diagram must be handled in proportion to a complex concurrent program. there were. In addition, there is a problem that the program becomes complicated and difficult to understand because of the synchronization instructions embedded in the program, and the capacity increases. Furthermore, when embedding a synchronous instruction in a program in this way, the synchronous instruction existing in the program from the stage of programming (coding) and the synchronous instruction newly embedded to realize the execution order as described above are mutually In order to avoid this, coding had to be done with great care.

また、既存の超逐次プログラミングの発明では、実行履歴(ログ)に含まれる挙動を示すタスクの実行を優先するスケジューラの提案をしていた。ここで、実行履歴(ログ)に含まれる挙動は、過去に動いた実績があるという意味で本発明における「安定集合」の1つの具体例になっている。しかし、この技術では、安定集合に含まれるか否かの判断であり、安定集合からの距離という概念はなかった。実際、安定集合が小さく、ほとんどの場合安定集合外である時には、本技術は機能しなかった。   Further, in the existing hyper sequential programming invention, a scheduler has been proposed that prioritizes the execution of tasks that exhibit behavior included in the execution history (log). Here, the behavior included in the execution history (log) is one specific example of the “stable set” in the present invention in the sense that there is a record of movement in the past. However, with this technique, there is no concept of distance from the stable set, as it is a determination of whether or not it is included in the stable set. In fact, the technology did not work when the stable set was small and in most cases outside the stable set.

さらに、本出願人は、割り込み処理のプログラミングに適した超逐次プログラミングの発明を提案している。この技術では、割り込み処理を用いるプログラムにおいて、割り込みを許可しようとする候補の箇所を仮に指定して実行をテストする。そして、利用者が実行結果を正しいと認めると、その正しい結果を発生させた候補の箇所およびその周辺の問題のない範囲に実際に割り込み許可命令が付加されるというものである。   Further, the applicant has proposed an invention of hyper sequential programming suitable for interrupt processing programming. According to this technique, in a program that uses interrupt processing, execution is tested by temporarily specifying candidate locations to be permitted for interrupt. When the user recognizes that the execution result is correct, an interrupt permission instruction is actually added to the candidate location where the correct result is generated and the surrounding area where there is no problem.

しかし、この技術では、割り込みを許可しようとする候補の箇所を予め指定しなければならない点で手数が煩雑である。特に、複数の割り込みが重なる複雑な場合に指定するのは難しかった。   However, this technique is cumbersome in that it is necessary to designate in advance a candidate location for which interruption is permitted. In particular, it was difficult to specify a complicated case where multiple interrupts overlapped.

本発明は、並行プログラムの安定した挙動を実現できるマルチタスク処理装置およびその方法を提供する。   The present invention provides a multitask processing apparatus and method capable of realizing stable behavior of concurrent programs.

本発明の一態様としてのマルチタスク処理装置は、
各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理装置であって、
各前記タスク間でのセクションの組み合わせを1つ以上定めた安定集合を記憶する安定集合記憶部と、
前記タスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションと、前記タスクと異なる他のタスクの現在のセクションとの組をプログラム実行状態として求めるプログラム実行状態算出部と、
各前記プログラム実行状態と前記安定集合との距離を計算する距離計算部と、
各計算された距離に基づき、次に実行すべきタスクを選択し実行するタスク実行部と、
を備える。
A multitask processing device according to one aspect of the present invention includes:
A multitask processing device for multitasking a plurality of tasks each divided into two or more sections,
A stable set storage unit that stores a stable set that defines one or more combinations of sections between the tasks;
For each task, a program execution state calculation unit that obtains, as a program execution state, a set of a section that starts execution when the task is executed next and a current section of another task different from the task;
A distance calculation unit for calculating a distance between each of the program execution states and the stable set;
A task execution unit that selects and executes a task to be executed next based on each calculated distance;
Is provided.

上記マルチタスク処理装置では、安定した挙動を示すことをあらかじめ保証された状態から離れた状態に、プログラムの実行状態が遷移することを抑制する効果があり、プログラムの不具合の発生を抑制する効果がある。   The multitask processing device has the effect of suppressing the transition of the execution state of the program to a state away from a state that is guaranteed in advance to exhibit a stable behavior, and the effect of suppressing the occurrence of a program defect. is there.

本発明の一態様としてのマルチタスク処理装置は、
各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理装置であって、
各タスクに含まれるセクションの特徴を表すセクション特徴値を記憶する記憶部と、
前記タスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションと、前記タスクと異なる他のタスクの現在のセクションとの組をプログラム実行状態として求めるプログラム実行状態算出部と、
各前記プログラム実行状態に含まれるセクションのセクション特徴値に基づき、次に実行すべきタスクを選択し実行するタスク実行部と、
を備える。
A multitask processing device according to one aspect of the present invention includes:
A multitask processing device for multitasking a plurality of tasks each divided into two or more sections,
A storage unit for storing section feature values representing the features of the sections included in each task;
For each task, a program execution state calculation unit that obtains, as a program execution state, a set of a section that starts execution when the task is executed next and a current section of another task different from the task;
A task execution unit that selects and executes a task to be executed next based on a section feature value of a section included in each of the program execution states;
Is provided.

上記マルチタスク処理装置では、例えば各セクションのメモリ推定使用量や想定電力使用量などのセッションが使用する計算機資源に関する特徴値を用いて、プログラムの実行状態が計算機資源を想定以上に使用する状態に遷移することを抑制する効果があり、プログラムの不具合の発生を抑制する効果がある。   In the multitask processing device, for example, using the characteristic values related to the computer resources used by the session, such as the estimated memory usage and the assumed power usage of each section, the program execution state uses the computer resources more than expected. This has the effect of suppressing transitions and the effect of suppressing the occurrence of program defects.

本発明の一態様としてのマルチタスク処理装置は、
各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理装置であって、
各前記タスク間でのセクションの組み合わせと、1つ以上の共有資源の状態との組を1つ以上定めた安定集合を記憶する安定集合記憶部と、
前記タスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションと、前記タスクと異なる他のタスクの現在のセクションとの組をプログラム実行状態として求め、また各前記プログラム実行状態において前記複数のタスクで用いられる共有資源およびその状態を特定する、プログラム実行状態算出部と、
各前記プログラム実行状態と、それぞれに対応して求められた共有資源の状態との組と前記安定集合との距離を計算する距離計算部と、
各計算された距離に基づき、次に実行すべきタスクを選択し実行するタスク実行部と、
を備えたことを特徴とする。
A multitask processing device according to one aspect of the present invention includes:
A multitask processing device for multitasking a plurality of tasks each divided into two or more sections,
A stable set storage unit that stores a stable set in which one or more combinations of sections between the tasks and one or more shared resource states are defined;
For each task, a set of a section that starts executing when the task is executed next and a current section of another task different from the task is obtained as a program execution state, and each program execution state A program execution state calculation unit for identifying a shared resource used in the plurality of tasks and its state;
A distance calculation unit for calculating a distance between each of the program execution states and the state of the shared resource obtained corresponding to each of the program execution states and the stable set;
A task execution unit that selects and executes a task to be executed next based on each calculated distance;
It is provided with.

本発明の一態様としてのマルチタスク処理装置は、
各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理装置であって、
前記タスク毎に、前記タスクのセクションと、1つ以上の共有資源の状態との組を1つ以上定めた安定集合を記憶する安定集合記憶部と、
前記タスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションと、前記タスクと異なる他のタスクの現在のセクションとの組をプログラム実行状態として求め、
各前記プログラム実行状態において前記複数のタスクで用いられる共有資源およびその状態を特定し、
前記プログラム実行状態に含まれる各セクションを前記特定した共有資源の状態と組み合わせて、それぞれセクションと前記特定した共有資源の状態とを含む複数の組を生成する、プログラム実行状態算出部と、
生成した複数の組のうち前記安定集合記憶部に記憶されている組の個数に基づいて、前記安定集合との距離を計算する距離計算部と、
前記タスク毎に計算された距離に基づき、次に実行すべきタスクを選択し実行するタスク実行部と、
を備えたことを特徴とする。
A multitask processing device according to one aspect of the present invention includes:
A multitask processing device for multitasking a plurality of tasks each divided into two or more sections,
For each task, a stable set storage unit that stores a stable set that defines one or more sets of sections of the task and one or more shared resource states;
For each task, a set of a section that starts execution when the task is executed next and a current section of another task different from the task is obtained as a program execution state,
Identify shared resources used in the plurality of tasks and their states in each of the program execution states;
A program execution state calculation unit that generates a plurality of sets each including a section and the state of the specified shared resource by combining each section included in the program execution state with the state of the specified shared resource;
A distance calculation unit that calculates a distance from the stable set based on the number of sets stored in the stable set storage unit among the plurality of generated sets;
A task execution unit that selects and executes a task to be executed next based on the distance calculated for each task;
It is provided with.

本発明の一態様としてのマルチタスク処理装置は、
各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理装置であって、
前記タスク毎に、前記タスクのセクションと、1つの共有資源の状態との組を1つ以上定めた安定集合を記憶する安定集合記憶部と、
前記タスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションと、前記タスクと異なる他のタスクの現在のセクションとの組をプログラム実行状態として求め、
前記プログラム実行状態に含まれるセクション毎に前記セクションで用いられる共有資源およびその状態を特定し、
前記プログラム実行状態に含まれるセクション毎に、前記セクションを、前記特定した共有資源の状態のそれぞれと組み合わせて、それぞれセクションと1つの特定した共有資源とを含む複数の組を生成する、プログラム実行状態算出部と、
生成した複数の組のうち前記安定集合記憶部に記憶されている組の個数に基づいて、前記安定集合との距離を計算する距離計算部と、
前記タスク毎に計算された距離に基づき、次に実行すべきタスクを選択し実行するタスク実行部と、
を備えたことを特徴とする。
A multitask processing device according to one aspect of the present invention includes:
A multitask processing device for multitasking a plurality of tasks each divided into two or more sections,
For each task, a stable set storage unit that stores a stable set in which one or more sets of the task section and one shared resource state are defined;
For each task, a set of a section that starts execution when the task is executed next and a current section of another task different from the task is obtained as a program execution state,
For each section included in the program execution state, a shared resource used in the section and its state are specified,
For each section included in the program execution state, the section is combined with each of the specified shared resource states to generate a plurality of sets each including a section and one specified shared resource. A calculation unit;
A distance calculation unit that calculates a distance from the stable set based on the number of sets stored in the stable set storage unit among the plurality of generated sets;
A task execution unit that selects and executes a task to be executed next based on the distance calculated for each task;
It is provided with.

本発明の一態様としてのマルチタスク処理装置は、
各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理装置であって、
前記タスク毎に、前記タスクのセクションと、1つ以上の共有資源の状態との組を1つ以上定めた安定集合を記憶する安定集合記憶部と、
前記タスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションと、前記タスクと異なる他のタスクの現在のセクションとの組をプログラム実行状態として求め、
前記プログラム実行状態に含まれるセクション毎に前記セクションで用いられる共有資源およびその状態を特定し、
前記プログラム実行状態に含まれるセクション毎に、前記セクションを前記特定した共有資源の状態のすべてと組み合わせて、それぞれ前記セクションと前記特定した共有資源の状態のすべてとを含む複数の組を生成する、プログラム実行状態算出部と、
生成した複数の組のうち前記安定集合記憶部に記憶されている組の個数に基づいて、前記安定集合との距離を計算する距離計算部と、
前記タスク毎に計算された距離に基づき、次に実行すべきタスクを選択し実行するタスク実行部と、
を備えたことを特徴とする。
A multitask processing device according to one aspect of the present invention includes:
A multitask processing device for multitasking a plurality of tasks each divided into two or more sections,
For each task, a stable set storage unit that stores a stable set that defines one or more sets of sections of the task and one or more shared resource states;
For each task, a set of a section that starts execution when the task is executed next and a current section of another task different from the task is obtained as a program execution state,
For each section included in the program execution state, a shared resource used in the section and its state are specified,
For each section included in the program execution state, the section is combined with all of the specified shared resource states to generate a plurality of sets each including the section and all of the specified shared resource states. A program execution state calculation unit;
A distance calculation unit that calculates a distance from the stable set based on the number of sets stored in the stable set storage unit among the plurality of generated sets;
A task execution unit that selects and executes a task to be executed next based on the distance calculated for each task;
It is provided with.

本発明の一態様としてのマルチタスク処理装置は、
各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理装置であって、
各前記タスク間でのセクションの組と、1つ以上の共有資源の状態とのペアを1つ以上定めた安定集合を記憶する安定集合記憶部と、
前記タスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションと、前記タスクと異なる他のタスクの現在のセクションとの組をプログラム実行状態として求め、また前記プログラム実行状態毎に前記プログラム実行状態で用いられる共有資源の状態を特定する、プログラム実行状態算出部と、
各前記プログラム実行状態と、それぞれに対応して求められた共有資源の状態とのペアと前記安定集合との距離をそれぞれ計算する距離計算部と、
各計算された距離に基づき、次に実行すべきタスクを選択し実行するタスク実行部と、
を備えたことを特徴とする。
A multitask processing device according to one aspect of the present invention includes:
A multitask processing device for multitasking a plurality of tasks each divided into two or more sections,
A stable set storage unit that stores a stable set that defines one or more pairs of sections between each of the tasks and one or more shared resource states;
For each task, a set of a section to be executed when the task is next executed and a current section of another task different from the task is obtained as a program execution state, and for each program execution state A program execution state calculation unit for identifying a state of a shared resource used in the program execution state;
A distance calculation unit for calculating a distance between each of the program execution states and a pair of the state of the shared resource obtained corresponding to each of the program execution states and the stable set;
A task execution unit that selects and executes a task to be executed next based on each calculated distance;
It is provided with.

本発明の一態様としてのマルチタスク処理装置は、
各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理装置であって、
前記タスク毎に、前記タスクの個々のセクションと、1つ以上の共有資源の状態との組を1つ以上定めた安定集合を記憶する安定集合記憶部と、
前記タスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションと、前記タスクと異なる他のタスクの現在のセクションとの組をプログラム実行状態として求め、
前記プログラム実行状態毎に前記複数のタスクで用いられる共有資源の状態を特定し、
前記プログラム実行状態に含まれるセクションのそれぞれを前記特定した共有資源の状態と組み合わせて、それぞれ1つの前記セクションと前記特定した共有資源の状態とを含む複数の組を生成する、プログラム実行状態算出部と、
生成した複数の組と前記安定集合とのマッチ数に基づいて、前記安定集合との距離を計算する距離計算部と、
前記タスク毎に計算された距離に基づき、次に実行すべきタスクを選択し実行するタスク実行部と、
を備えたことを特徴とする。
A multitask processing device according to one aspect of the present invention includes:
A multitask processing device for multitasking a plurality of tasks each divided into two or more sections,
For each task, a stable set storage unit that stores a stable set that defines one or more sets of individual sections of the task and one or more shared resource states;
For each task, a set of a section that starts execution when the task is executed next and a current section of another task different from the task is obtained as a program execution state,
Specifying the state of the shared resource used by the plurality of tasks for each program execution state;
A program execution state calculation unit that generates a plurality of sets each including one section and the specified shared resource state by combining each of the sections included in the program execution state with the specified shared resource state. When,
A distance calculation unit that calculates a distance to the stable set based on the number of matches between the plurality of generated sets and the stable set;
A task execution unit that selects and executes a task to be executed next based on the distance calculated for each task;
It is provided with.

本発明の一態様としてのマルチタスク処理装置は、
各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理装置であって、
前記タスク毎に、前記タスクの個々のセクションと、1つの共有資源の状態との組を1つ以上定めた安定集合を記憶する安定集合記憶部と、
前記タスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションと、前記タスクと異なる他のタスクの現在のセクションとの組をプログラム実行状態として求め、
前記プログラム実行状態に含まれるセクション毎に前記セクションで用いられる共有資源の状態を特定し、
前記プログラム実行状態に含まれるセクション毎に、前記セクションを、前記特定した共有資源の状態のそれぞれと組み合わせて、それぞれ1つの前記セクションと1つの前記特定した共有資源とを含む複数の組を生成する、プログラム実行状態算出部と、
生成した複数の組と前記安定集合とのマッチ数に基づいて、前記安定集合との距離を計算する距離計算部と、
前記タスク毎に計算された距離に基づき、次に実行すべきタスクを選択し実行するタスク実行部と、
を備えたことを特徴とする。
A multitask processing device according to one aspect of the present invention includes:
A multitask processing device for multitasking a plurality of tasks each divided into two or more sections,
For each task, a stable set storage unit that stores a stable set that defines one or more sets of individual sections of the task and one shared resource state;
For each task, a set of a section that starts execution when the task is executed next and a current section of another task different from the task is obtained as a program execution state,
For each section included in the program execution state, specify the state of the shared resource used in the section,
For each section included in the program execution state, the section is combined with each of the specified shared resource states to generate a plurality of sets each including one section and one specified shared resource. A program execution state calculation unit;
A distance calculation unit that calculates a distance to the stable set based on the number of matches between the plurality of generated sets and the stable set;
A task execution unit that selects and executes a task to be executed next based on the distance calculated for each task;
It is provided with.

本発明の一態様としてのマルチタスク処理装置は、
各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理装置であって、
前記タスク毎に、前記タスクの個々のセクションと、1つ以上の共有資源の状態との組を1つ以上定めた安定集合を記憶する安定集合記憶部と、
前記タスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションと、前記タスクと異なる他のタスクの現在のセクションとの組をプログラム実行状態として求め、
前記プログラム実行状態に含まれるセクション毎に前記セクションで用いられる共有資源の状態を特定し、
前記プログラム実行状態に含まれるセクション毎に、前記セクションを前記特定した共有資源の状態と組み合わせて、それぞれ1つの前記セクションと前記特定した共有資源の状態とを含む複数の組を生成する、プログラム実行状態算出部と、
生成した複数の組と前記安定集合とのマッチ数に基づいて、前記安定集合との距離を計算する距離計算部と、
前記タスク毎に計算された距離に基づき、次に実行すべきタスクを選択し実行するタスク実行部と、
を備えたことを特徴とする。
A multitask processing device according to one aspect of the present invention includes:
A multitask processing device for multitasking a plurality of tasks each divided into two or more sections,
For each task, a stable set storage unit that stores a stable set that defines one or more sets of individual sections of the task and one or more shared resource states;
For each task, a set of a section that starts execution when the task is executed next and a current section of another task different from the task is obtained as a program execution state,
For each section included in the program execution state, specify the state of the shared resource used in the section,
For each section included in the program execution state, the section is combined with the specified shared resource state to generate a plurality of sets each including one section and the specified shared resource state A state calculation unit;
A distance calculation unit that calculates a distance to the stable set based on the number of matches between the plurality of generated sets and the stable set;
A task execution unit that selects and executes a task to be executed next based on the distance calculated for each task;
It is provided with.

本発明の一態様としてのマルチタスク処理方法は、
各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理方法であって、
前記タスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションと、前記タスクと異なる他のタスクの現在のセクションとの組をプログラム実行状態として求め、
各前記プログラム実行状態と、各前記タスク間でのセクションの組み合わせを1つ以上定めた安定集合との距離をそれぞれ計算し、
各計算された距離に基づき、次に実行すべきタスクを選択し、
選択したタスクを実行する。
The multitask processing method as one aspect of the present invention includes:
A multitask processing method for multitasking a plurality of tasks each divided into two or more sections,
For each task, a set of a section that starts execution when the task is executed next and a current section of another task different from the task is obtained as a program execution state,
Calculating the distance between each program execution state and a stable set defining one or more combinations of sections between the tasks;
Based on each calculated distance, select the next task to perform,
Perform the selected task.

上記マルチタスク処理方法では、安定した挙動を示すことをあらかじめ保証された状態から離れた状態に、プログラムの実行状態が遷移することを抑制する効果があり、プログラムの不具合の発生を抑制する効果がある。   The multitask processing method has the effect of suppressing the transition of the program execution state to a state away from a state that is guaranteed in advance to exhibit stable behavior, and the effect of suppressing the occurrence of a program defect. is there.

本発明の一態様としてのマルチタスク処理方法は、
各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理方法であって、
前記タスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションと、前記タスクと異なる他のタスクの現在のセクションとの組をプログラム実行状態として求め、
各前記プログラム実行状態に含まれるセクションの特徴を表すセクション特徴値に基づき、次に実行すべきタスクを選択し、選択したタスクを実行する。
The multitask processing method as one aspect of the present invention includes:
A multitask processing method for multitasking a plurality of tasks each divided into two or more sections,
For each task, a set of a section that starts execution when the task is executed next and a current section of another task different from the task is obtained as a program execution state,
A task to be executed next is selected based on a section characteristic value representing a characteristic of a section included in each program execution state, and the selected task is executed.

上記マルチタスク処理方法では、例えば各セクションのメモリ推定使用量や想定電力使用量などのセッションが使用する計算機資源に関する特徴値を用いて、プログラムの実行状態が計算機資源を想定以上に使用する状態に遷移することを抑制する効果があり、プログラムの不具合の発生を抑制する効果がある。   In the multitask processing method described above, for example, using the characteristic values related to the computer resources used by the session such as the estimated memory usage and the assumed power usage of each section, the execution state of the program uses the computer resources more than expected. This has the effect of suppressing transitions and the effect of suppressing the occurrence of program defects.

本発明により、並行プログラム等の非決定性を持つプログラムにおける安定した挙動を実現できる。   According to the present invention, stable behavior in a program having nondeterminism such as a parallel program can be realized.

以下、図面を参照しながら、本発明の実施の形態について説明する。   Hereinafter, embodiments of the present invention will be described with reference to the drawings.

図1は、本実施形態を実現するために用いるコンピュータシステムのハードウェア構成を示すブロック図である。   FIG. 1 is a block diagram showing a hardware configuration of a computer system used for realizing the present embodiment.

このコンピュータシステムは、プロセッサ11と、I/Oインターフェース(バス)12と、主記憶装置13と、入出力装置(入力装置および出力装置)14と、外部記憶装置15とを備える。   This computer system includes a processor 11, an I / O interface (bus) 12, a main storage device 13, an input / output device (input device and output device) 14, and an external storage device 15.

プロセッサ11は、本実施形態の機能を実現するためのソフトウェアを実行する。プロセッサ11はOS(Operating System:オペレーティングシステム)の制御の下、複数のタスクをマルチタスク処理するのに用いられる。プロセッサ11は、I/Oインターフェース12に接続され、このI/Oインターフェース12を介して主記憶装置13等の周辺装置にアクセスすることができる。   The processor 11 executes software for realizing the functions of this embodiment. The processor 11 is used for multitask processing of a plurality of tasks under the control of an OS (Operating System). The processor 11 is connected to the I / O interface 12 and can access peripheral devices such as the main storage device 13 through the I / O interface 12.

主記憶装置13は、RAM(Random Access Memory)等のメモリであり、各タスクが情報を交換して協調動作を行うのに用いられる。   The main storage device 13 is a memory such as a RAM (Random Access Memory), and is used for each task to exchange information and perform a cooperative operation.

入出力装置14は、キーボードやポインティングデバイスなどを含み、ユーザによる各種コマンドやデータの入力を受け入れる。また入出力装置14は、CRTディスプレイなどを含み、テキスト表示又はグラフィック表示を行う。ユーザは、入出力装置14を用いて、対話的にコンピュータを操作することができる。   The input / output device 14 includes a keyboard, a pointing device, and the like, and accepts input of various commands and data by the user. The input / output device 14 includes a CRT display and the like, and performs text display or graphic display. The user can operate the computer interactively using the input / output device 14.

外部記憶装置15は、磁気ディスク装置または光磁気ディスク装置などを用いて、プロセッサ11に実行させるプログラム、および該プログラムで使用される情報を書き込み及び読み出すことができる。   The external storage device 15 can write and read a program to be executed by the processor 11 and information used in the program by using a magnetic disk device or a magneto-optical disk device.

本実施形態は主として単一CPUによるマルチタスク計算機を例として用いて説明するが、図2に示すようなマルチCPUシステム、または、共有メモリのある並列計算機、または、共有メモリのない並列計算機、または、分散ネットワーク計算機システム、などを用いても本実施形態は実現可能である。図2のマルチCPUシステムについて説明すると以下の通りである。   Although this embodiment will be described mainly using a multitask computer with a single CPU as an example, a multi-CPU system as shown in FIG. 2, a parallel computer with a shared memory, a parallel computer without a shared memory, or The present embodiment can also be realized using a distributed network computer system. The multi-CPU system in FIG. 2 will be described as follows.

このコンピュータシステムは、N台のプロセッサ101−1、101−2、…、101−Nを有し、このうち少なくとも1つのプロセッサが、本実施形態の機能を実現するためのソフトウェアを実行する。また、各プロセッサ101−1、101−2、…、101−Nはそれぞれ、並行プログラムの各タスクを同時並行的に実行するのに用いられる。これら各プロセッサ101−1、101−2、…、101−Nは、I/Oインターフェース102に接続され、このI/Oインターフェース102を介して共有メモリ(主記憶装置)103等の周辺装置にアクセスすることができる。   This computer system has N processors 101-1, 101-2,..., 101-N, and at least one of them executes software for realizing the functions of this embodiment. In addition, each of the processors 101-1, 101-2,..., 101-N is used to execute each task of the parallel program concurrently. Each of these processors 101-1, 101-2,..., 101 -N is connected to an I / O interface 102 and accesses a peripheral device such as a shared memory (main storage device) 103 via the I / O interface 102. can do.

共有メモリ103は、各プロセッサ101−1、101−2、…、101−N上で実行される各タスクが情報を交換して協調動作を行うのに用いられる。   The shared memory 103 is used by each task executed on each of the processors 101-1, 101-2, ..., 101-N to exchange information and perform a cooperative operation.

入力装置104は、キーボードおよびポインティングデバイスなどを含み、ユーザによる各種コマンドおよびデータの入力を受け入れる。出力装置105は、CRTディスプレイなどを含み、テキスト表示又はグラフィック表示を行う。ユーザは、これら入力装置104及び出力装置105を用いて、対話的にコンピュータを操作することができる。   The input device 104 includes a keyboard and a pointing device, and accepts various commands and data input by the user. The output device 105 includes a CRT display and the like, and performs text display or graphic display. The user can interactively operate the computer using the input device 104 and the output device 105.

外部記憶装置106は、磁気ディスク装置や光磁気ディスク装置などを用いて、CPUに実行させるプログラムおよび該プログラムで使用される情報を書き込み及び読み出すことができる。   The external storage device 106 can write and read programs to be executed by the CPU and information used in the programs using a magnetic disk device, a magneto-optical disk device, or the like.

本実施形態の各機能は、先に述べたように、ソフトウェアによって実現されるが、このソフトウェアが上記のような一連のハードウェア資源を利用することによって本実施形態の効果を生じさせる。したがって、各ハードウェア資源の構成および種類は、それぞれ同様の機能を果たす他の構成および種類のものに置き換えても差しつかえない。   Each function of the present embodiment is realized by software as described above, and this software produces the effects of the present embodiment by using a series of hardware resources as described above. Therefore, the configuration and type of each hardware resource may be replaced with another configuration and type that perform the same function.

図3は、本実施形態にかかるマルチタスク処理装置の機能ブロック図を示す。   FIG. 3 is a functional block diagram of the multitask processing apparatus according to the present embodiment.

このマルチタスク処理装置は、たとえばOSの一部の機能を実現するものであり、タスク実行部21、プログラム実行状態算出部22、安定距離計算部23、タスク優先度計算部(タスク選択部)24、記憶部25を備える。プログラム実行状態算出部22、安定距離計算部23、タスク優先度計算部(タスク選択部)24はたとえばOSのスケジューラの一部に含まれる。記憶部25は主記憶装置または外部記憶装置の一部に含まれる。   This multitask processing apparatus implements, for example, some functions of the OS, and includes a task execution unit 21, a program execution state calculation unit 22, a stable distance calculation unit 23, and a task priority calculation unit (task selection unit) 24. The storage unit 25 is provided. The program execution state calculation unit 22, the stable distance calculation unit 23, and the task priority calculation unit (task selection unit) 24 are included in, for example, a part of the OS scheduler. The storage unit 25 is included in a part of the main storage device or the external storage device.

このマルチタスク処理装置は、複数のタスク(並行プログラム)をマルチタスク処理する。タスクの実行はタスク実行部21により行われる。タスクには、実行されている状態、実行可能な待ち状態(実行可能待ち状態)、および実行可能でない事象待ち状態(実行不能状態)がある。図5にタスクの状態遷移図を示す。タスクが発生すると、発生したタスクは実行可能待ち状態になり(実行待ちタスクリストに格納され)、次に実行するべきタスクとして選択され実行されると、実行状態になる。実行状態にあったタスクの実行が終了すると該タスクは消滅する。また、実行状態にあるときに、タスクの切替時になると、タスクは、実行可能待ち状態になるか、事象待ち状態に遷移する。タスクが事象待ち状態にあるときに待っていた事象が発生すると、該タスクは実行可能待ち状態になる。   This multitask processing apparatus multitasks a plurality of tasks (parallel programs). The task is executed by the task execution unit 21. A task has a state of being executed, a wait state that can be executed (executable wait state), and an event wait state that is not executable (unexecutable state). FIG. 5 shows a task state transition diagram. When a task occurs, the generated task enters an executable waiting state (stored in the execution waiting task list), and enters a running state when selected and executed as a task to be executed next. When the execution of the task in the execution state is completed, the task disappears. Further, when the task is switched when it is in the execution state, the task enters an executable wait state or transitions to an event wait state. When an event that has been waiting when a task is in an event wait state occurs, the task enters an executable wait state.

ここで各タスクは、各々複数のセクション(区間)に分割されている。より詳細には、各タスクには、あらかじめ1つ以上の「チェックポイント命令」が挿入されており、このチェックポイント命令により各タスクは複数のセクションに分割される。チェックポイント命令が挿入されたタスク中の箇所は「チェックポイント」と称される。タスク1およびタスク2のJava(登録商標)言語による記述の例を以下に示す。

// タスク1
class Task1 extends Task{
private gui gui ;
public Task1(String tname, Resource r){
super(tname,r) ;
System.out.println("*** Set Up Task1 ***") ;}
public void run(){
int i = 0, j = 0 ;
while(i++ < 100){
System.out.println("*** Task1 running ***") ;
arb.check_point(this,1) ; ←チェックポイント命令
j = res.read() ;
System.out.println(j) ;
arb.check_point(this,2) ; ←チェックポイント命令
res.write(j-1) ; }
System.out.println("*** End of Task1 ***") ;
arb.check_point(this,3) ; ←チェックポイント命令
gui.task_panel.set_stop(this) ;}
public void set_gui(gui g){
gui = g ;}}
// タスク2
class Task2 extends Task{
private gui gui ;
public Task2(String tname, Resource r){
super(tname,r) ;
System.out.println("*** Set Up Task2 ***") ; }
public void run(){
int i = 0, j = 0 ;
while(i++ < 100){
System.out.println("*** Task2 running ***") ;
arb.check_point(this,1) ; ←チェックポイント命令
j = res.read() ;
System.out.println(j) ;
arb.check_point(this,2) ; ←チェックポイント命令
res.write(j+1) ;}
System.out.println("*** End of Task2 ***") ;
arb.check_point(this,3) ; ←チェックポイント命令
gui.task_panel.set_stop(this) ; }
public void set_gui(gui g){
gui = g ; }}
Here, each task is divided into a plurality of sections (sections). More specifically, one or more “checkpoint instructions” are inserted in advance in each task, and each task is divided into a plurality of sections by the checkpoint instruction. The part in the task where the checkpoint instruction is inserted is called a “checkpoint”. An example of task 1 and task 2 description in Java (registered trademark) language is shown below.

// Task 1
class Task1 extends Task {
private gui gui;
public Task1 (String tname, Resource r) {
super (tname, r);
System.out.println ("*** Set Up Task1 ***");}
public void run () {
int i = 0, j = 0;
while (i ++ <100) {
System.out.println ("*** Task1 running ***");
arb.check_point (this, 1); ← Checkpoint instruction
j = res.read ();
System.out.println (j);
arb.check_point (this, 2); ← Checkpoint instruction
res.write (j-1);}
System.out.println ("*** End of Task1 ***");
arb.check_point (this, 3); ← Checkpoint instruction
gui.task_panel.set_stop (this);}
public void set_gui (gui g) {
gui = g;}}
// Task 2
class Task2 extends Task {
private gui gui;
public Task2 (String tname, Resource r) {
super (tname, r);
System.out.println ("*** Set Up Task2 ***");}
public void run () {
int i = 0, j = 0;
while (i ++ <100) {
System.out.println ("*** Task2 running ***");
arb.check_point (this, 1); ← Checkpoint instruction
j = res.read ();
System.out.println (j);
arb.check_point (this, 2); ← Checkpoint instruction
res.write (j + 1);}
System.out.println ("*** End of Task2 ***");
arb.check_point (this, 3); ← Checkpoint instruction
gui.task_panel.set_stop (this);}
public void set_gui (gui g) {
gui = g;}}

このように各タスクは、チェックポイント命令によって複数のセクションに分割されている。タスク1およびタスク2は、それぞれ3つのチェックポイント命令によって4つのセクションに分割されている。プログラム中に同期命令(wait,notifyなど)がある場合は、その同期命令をチェックポイント命令に含めても良い。   In this way, each task is divided into a plurality of sections by the checkpoint instruction. Task 1 and task 2 are each divided into four sections by three checkpoint instructions. If there is a synchronous instruction (wait, notify, etc.) in the program, the synchronous instruction may be included in the checkpoint instruction.

タスクは、セクションとチェックポイントによるフローとして表現できる。たとえばタスク1は図4のようなセクション(SC)とチェックポイント(CP)によるフローとして表現できる。タスクの開始時点で仮想のチェックポイントCP0が存在すると定式化し、タスクの開始時点から最初のチェックポイントまでの区間はSC0とする。チェックポイント命令を実行することで現在いるセクションを識別する値が記憶される。たとえばarb.check_point(this,1)を実行すると、現在セクションSC1にいることを示す値(チェックポイント名CP1あるいはセクション名SC1)が取得され、主記憶装置13に記憶される。   A task can be expressed as a flow with sections and checkpoints. For example, task 1 can be expressed as a flow with a section (SC) and a checkpoint (CP) as shown in FIG. It is formulated that a virtual checkpoint CP0 exists at the start of the task, and the section from the start of the task to the first checkpoint is SC0. A value that identifies the current section by executing a checkpoint instruction is stored. For example, when arb.check_point (this, 1) is executed, a value (checkpoint name CP1 or section name SC1) indicating that the user is currently in the section SC1 is acquired and stored in the main storage device 13.

直前に通過した各タスクのチェックポイントの集合により、下記の例のようにプログラムの実行状態sを表現することができる。
s=(cp11,cp21,cp32,cp43)
cpij:タスクiが直前に通過した最新のチェックポイント名
または
s=(sc11,sc21,sc32,sc43)
scij:タスクiが直前に実行していた最新のセクション名
The execution state s of the program can be expressed by a set of checkpoints of each task passed immediately before as in the following example.
s = (cp11, cp21, cp32, cp43)
cpij: Name of the latest checkpoint that task i passed immediately before or s = (sc11, sc21, sc32, sc43)
scij: The latest section name that task i was executing immediately before

各タスク間でのチェックポイントの全ての組み合わせ(各タスク間でのセクションの全ての組み合わせ)は、「プログラム状態全体集合S」と称される。プログラムの実行状態sはプログラム状態全体集合Sの1つの要素である(s∈S)。プログラム実行状態sはプログラム実行状態算出部22により算出される。   All combinations of checkpoints between tasks (all combinations of sections between tasks) are referred to as “entire program state set S”. The execution state s of the program is one element of the entire program state set S (sεS). The program execution state s is calculated by the program execution state calculation unit 22.

安定したプログラムの状態が得られるとされる各タスクのチェックポイントの組の集合は「安定集合A」と称される。安定集合Aは、プログラム状態全体集合の部分集合(S⊃A)である。安定集合Aはあらかじめ与えられている。安定集合Aは記憶部25に格納されている。安定集合Aの具体例は後述する。   A set of checkpoint sets for each task for which a stable program state is obtained is referred to as a “stable set A”. The stable set A is a subset (S⊃A) of the entire program state set. A stable set A is given in advance. The stable set A is stored in the storage unit 25. A specific example of the stable set A will be described later.

プログラム実行状態s(s∈S)が、安定集合Aからどれくらい離れているかを示した指標は「安定距離Δ(s、A)」と称される。安定距離の算出は安定距離計算部23により行われる。安定距離の算出には、プログラム実行状態sと、安定集合Aと、あらかじめ与えられる距離関数(距離算出式)Δとが用いられる。距離関数Δは記憶部25に格納されている。安定距離計算部23は、たとえばタスクの切替時に、現時点で実行可能なタスクの集合Te⊂T(全タスクの集合)を抽出し、タスク集合Teに含まれる各タスクの各々に対して、次に該タスクが実行されるとした場合のプログラム実行状態を、プログラム実行状態算出部22を用いて取得する。各タスクから取得したプログラム実行状態の集合をS’ ⊂Sとする。安定距離計算部23は、記憶部25に格納されている安定集合と距離関数とを用いて、集合S’内の各プログラム実行状態に対して、安定距離を計算する。安定距離は、プログラム実行状態の安定集合からの距離を表すものであり、たとえば安定距離が小さければ小さいほど安定性が高くなるように定義される。プログラム実行状態が安定集合に含まれる場合は、距離は0である。また、すべてのプログラム実行状態が安定集合に属する場合は、通常のマルチタスク処理を行うのと同等となる。安定距離の算出の具体例については後述する。   An index indicating how far the program execution state s (sεS) is from the stable set A is referred to as “stable distance Δ (s, A)”. The stable distance is calculated by the stable distance calculator 23. For the calculation of the stable distance, a program execution state s, a stable set A, and a distance function (distance calculation formula) Δ given in advance are used. The distance function Δ is stored in the storage unit 25. For example, when switching tasks, the stable distance calculation unit 23 extracts a set of tasks Te タ ス ク T (a set of all tasks) that can be executed at the present time. For each task included in the task set Te, The program execution state when the task is executed is acquired using the program execution state calculation unit 22. A set of program execution states acquired from each task is S′⊂S. The stable distance calculation unit 23 calculates a stable distance for each program execution state in the set S ′ using the stable set and the distance function stored in the storage unit 25. The stable distance represents a distance from a stable set of program execution states, and is defined, for example, such that the smaller the stable distance, the higher the stability. If the program execution state is included in the stable set, the distance is zero. If all program execution states belong to the stable set, this is equivalent to performing normal multitask processing. A specific example of calculating the stable distance will be described later.

タスク実行部21に次に実行させるべきタスクは、タスク優先度計算部(タスク選択部)24によって求められる。タスク優先度計算部24は、タスク集合Te内の各タスクから求められた安定距離等に基づいて、次に実行するべきタスクをタスク集合Teから選択する。具体的には、安定距離が最も小さくなるようなプログラム実行状態を実現するタスクを選択する。すなわち、安定距離がより小さくなるようなプログラム実行状態を実現するタスクに高い優先度(安定タスク優先度)が付与される。タスク優先度計算部24の処理を、図6を用いて説明する。   The task to be executed next by the task execution unit 21 is obtained by a task priority calculation unit (task selection unit) 24. The task priority calculation unit 24 selects a task to be executed next from the task set Te based on the stable distance obtained from each task in the task set Te. Specifically, a task that realizes a program execution state that minimizes the stable distance is selected. That is, a high priority (stable task priority) is given to a task that realizes a program execution state in which the stable distance becomes smaller. The processing of the task priority calculation unit 24 will be described with reference to FIG.

タスク優先度計算部24は、次に実行するべきタスクを、安定距離に基づく安定タスク優先度と、プログラマが指定したタスクの優先度と、実行待ちタスクリストに到着したタスクの順序とに基づいて選択する。すなわち、タスク優先度計算部24は、
(1) プログラム中でプログラマが各タスクに対して指定した優先度(指定タスク優先度あるいは第2優先度)
(2) 安定距離に基づく各タスクの優先度(安定タスク優先度あるいは第1優先度)
(3) 実行待ちタスクリストに到着したタスクの順序(着順タスク優先度)
の3種類の優先度に基づいて、次に実行するべきタスクを選択する。
The task priority calculation unit 24 determines the next task to be executed based on the stable task priority based on the stable distance, the priority of the task specified by the programmer, and the order of the tasks arriving in the execution waiting task list. select. That is, the task priority calculation unit 24
(1) Priority specified for each task by the programmer in the program (specified task priority or second priority)
(2) Priority of each task based on stable distance (stable task priority or first priority)
(3) Order of tasks arriving on the task list waiting to be executed (priority in arrival order task)
Based on the three types of priorities, a task to be executed next is selected.

ここでは、(1)〜(3)の優先順を(1)>(2)>(3)とする実行順序ポリシーを考える。このポリシーのとき、図6のように、実行待ちタスクリストへ到着順にタスクを格納し、次に安定距離に基づく優先度で実行待ちタスクリスト内のタスクをソートし(安定タスク優先度が高いものを先頭側に配置するとともに、同じ優先度のタスク間では先に到着したものほど先頭側に配置する)、最後にプログラマが指定した優先度でソートする(プログラマが指定したタスク優先度が同じタスク間では安定優先度が高いものほど先頭側に配置する)。そして、実行待ちタスクリスト内の先頭のタスクを、次に実行するべきタスクとして選択する。これにより上記のポリシーに基づくタスクの実行が実現できる。実行順序ポリシーには上記以外のケースもある。例えば、安定性をより重視する場合は、安定距離による優先度をプログラマが指定したタスク優先度より優先する場合もありうる。この場合は、(2)>(1)>(3)となる。   Here, consider an execution order policy in which the priority order of (1) to (3) is (1)> (2)> (3). In this policy, as shown in FIG. 6, the tasks are stored in the waiting task list in the order of arrival, and then the tasks in the waiting task list are sorted according to the priority based on the stable distance (those with a high stable task priority). Are placed on the top side, and tasks with the same priority are placed on the top side as they arrive first), and finally sorted with the priority specified by the programmer (tasks with the same task priority specified by the programmer) In the middle, the higher the stability priority, the more it is placed on the top side). Then, the first task in the waiting task list is selected as a task to be executed next. As a result, task execution based on the above policy can be realized. There are cases other than the above in the execution order policy. For example, when more importance is attached to stability, the priority based on the stable distance may be given priority over the task priority specified by the programmer. In this case, (2)> (1)> (3).

以下、図1のマルチタスク処理装置の実行手順の具体例を示す。ここでは1つのCPU上でのマルチタスクシステムを説明するが、複数CPU上のマルチタスクシステムでも通常のスケジューラの場合と同様に拡張できる。ここで、タスク切り替えのタイミングを、チェックポイント(同期命令を含む)でのみ行う場合(ノンプリエンプティブマルチタスク:non-preemptive multitasking)と、任意のタイミングでタスク切り替えが可能な場合(プリエンプティブマルチタスク:preemptive multitasking)に分けて考える。前者の方がスケジューラのオーバーヘッドが小さいという長所があるが、緊急の割り込みタスクが扱えないなどの短所がある。   A specific example of the execution procedure of the multitask processing apparatus shown in FIG. Here, a multitask system on one CPU will be described. However, a multitask system on a plurality of CPUs can be expanded in the same manner as in a normal scheduler. Here, when task switching is performed only at checkpoints (including synchronous instructions) (non-preemptive multitasking) and when task switching is possible at any timing (preemptive multitasking: preemptive) Multitasking) The former has the advantage that the scheduler overhead is smaller, but has the disadvantage that it cannot handle urgent interrupt tasks.

図7は、ノンプリエンプティブマルチタスクにおけるスケジューラ(プログラム実行状態算出部22、安定距離計算部23、タスク優先度計算部(タスク選択部)24を含む)の実行手順を説明するフローチャートである。   FIG. 7 is a flowchart illustrating an execution procedure of a scheduler (including a program execution state calculation unit 22, a stable distance calculation unit 23, and a task priority calculation unit (task selection unit) 24) in non-preemptive multitasking.

まずプログラムの実行状態を抽出する。具体的には、各タスクの現時点の実行セクションを示すチェックポイントの組sを抽出する(S11)。各タスクは、チェックポイントを通過する直前のセクションに存在すると考える。   First, the execution state of the program is extracted. Specifically, a checkpoint set s indicating the current execution section of each task is extracted (S11). Each task is considered to be in the section immediately before passing the checkpoint.

次に、全タスクの集合Tから現時点で実行可能なタスクの集合Te⊂Tを抽出する(S12)。   Next, a set of tasks Te⊂T that can be executed at the present time is extracted from the set T of all tasks (S12).

次に、タスク集合Te内の各タスクに対して、該タスクが次に実行されたとした場合のプログラム実行状態を計算し、Te各タスクから得られたプログラム実行状態の集合をS’とする(S13)。   Next, for each task in the task set Te, the program execution state when the task is executed next is calculated, and the set of program execution states obtained from each Te task is S ′ ( S13).

次に、あらかじめ与えられた安定集合と距離関数とから、集合S’内の各プログラム実行状態に対して、安定距離を計算する(S14)。なお、距離を計算する際、タスク集合Te内のタスク数が、安定集合における各要素のセクション数よりも少ないとき(たとえば事象待ち状態のタスクのセクションが該要素に含まれるとき)は、タスク集合Te内のタスクのセクションのみを用いて安定距離を計算してもよい(たとえば事象待ち状態のタスクのセクションは無視するようにしてもよい)。   Next, a stable distance is calculated for each program execution state in the set S 'from a predetermined stable set and a distance function (S14). When calculating the distance, when the number of tasks in the task set Te is smaller than the number of sections of each element in the stable set (for example, when a section of a task waiting for an event is included in the element), the task set The stable distance may be calculated using only the task section in Te (for example, the section of the task waiting for an event may be ignored).

次に、各プログラム実行状態から計算された安定距離に基づき、タスク集合Te内の各タスクについて安定タスク優先度を計算する(S15)。   Next, the stable task priority is calculated for each task in the task set Te based on the stable distance calculated from each program execution state (S15).

次に、(1)指定タスク優先度、(2)安定タスク優先度、(3)着順タスク優先度を用いて、次に実行するタスクを選択する(S16)。例えば、(1)>(2)>(3)の優先順とする場合には、実行待ちタスクリスト(実行待ちキュー)内のタスクを(3)→(2)→(1)の順でソートする。ソートの結果、実行待ちタスクリストの先頭が次に実行するタスクとなる。   Next, a task to be executed next is selected using (1) designated task priority, (2) stable task priority, and (3) arrival order task priority (S16). For example, if the priority order is (1)> (2)> (3), the tasks in the execution waiting task list (execution waiting queue) are sorted in the order of (3) → (2) → (1). To do. As a result of the sorting, the top of the execution waiting task list becomes a task to be executed next.

次に、選択されたタスクを次のチェックポイントに到達するまで(次のチェックポイント命令を実行するまで)実行する(S17)。この後、ステップS11に戻る。   Next, the selected task is executed until the next checkpoint is reached (until the next checkpoint instruction is executed) (S17). Thereafter, the process returns to step S11.

以上に説明した手順の具体例を、図8に示す3つのタスクを例に説明する。   A specific example of the procedure described above will be described by taking three tasks shown in FIG. 8 as an example.

まずプログラムの実行状態を抽出する。具体的には、各タスクT1〜T3の現時点の実行セクションを示すセクションの組s=(t11,t20,t32)を抽出する(S11)。各タスクT1〜T3は、チェックポイントを通過する直前のセクションに存在すると考える。   First, the execution state of the program is extracted. Specifically, a section set s = (t11, t20, t32) indicating the current execution section of each task T1 to T3 is extracted (S11). Each task T1 to T3 is considered to exist in the section immediately before passing the checkpoint.

現時点で実行可能なタスクの集合Teを抽出する(S12)。ここでは、Te={T1,T2,T3}とする。   A set Te of tasks that can be executed at the present time is extracted (S12). Here, Te = {T1, T2, T3}.

Te内の各タスクに対して、次に該タスクが実行されたとした場合のプログラム実行状態を計算し、各タスクに対して計算されたプログラム実行状態の集合をS’とする(S13)。ここでは、S’={s1,s2,s3}, s1=(t12,t20,t32), s2=(t11,t21,t32), s=(t11,t20,t33)となる。   For each task in Te, the program execution state when the task is executed next is calculated, and the set of program execution states calculated for each task is set as S '(S13). Here, S ′ = {s1, s2, s3}, s1 = (t12, t20, t32), s2 = (t11, t21, t32), s = (t11, t20, t33).

あらかじめ与えられた安定集合と距離関数から、S’={s1,s2,s3}の各プログラム実行状態に対して、安定距離を計算する(S14)。   A stable distance is calculated for each program execution state of S ′ = {s1, s2, s3} from a previously given stable set and distance function (S14).

Te={T1,T2,T3}の各タスクの安定距離に基づき、タスクの安定タスク優先度を計算する(S15)。ここでは、T1>T2>T3だったとする。   Based on the stable distance of each task of Te = {T1, T2, T3}, the stable task priority of the task is calculated (S15). Here, it is assumed that T1> T2> T3.

(1)指定タスク優先度、(2)安定タスク優先度、(3)着順タスク優先度を用いて、次に実行するタスクを選択する(S16)。例えば、(1)>(2)>(3)の優先順の場合には、実行待ちタスクリスト(実行待ちキュー)内のタスクを(3)→(2)→(1)の順でソートをかけることにより、実行待ちタスクリスト内の先頭が次に実行するタスクとなる。ここでは、指定タスク優先度は各タスクT1,T2,T3とも同じだとし、タスクT1が選ばれたとする。   A task to be executed next is selected using (1) designated task priority, (2) stable task priority, and (3) arrival order task priority (S16). For example, when the priority order is (1)> (2)> (3), the tasks in the execution waiting task list (execution waiting queue) are sorted in the order of (3) → (2) → (1). As a result, the first task in the waiting task list becomes the next task to be executed. Here, it is assumed that the designated task priority is the same for each of the tasks T1, T2, and T3, and the task T1 is selected.

選択されたタスクT1を次のチェックポイントcp13に到達するまで実行する(S17)。この後、ステップS11に戻る。このとき、新しいプログラム実行状態はs1=(t12,t20,t32)となる。   The selected task T1 is executed until the next checkpoint cp13 is reached (S17). Thereafter, the process returns to step S11. At this time, the new program execution state is s1 = (t12, t20, t32).

図9は、プリエンプティブマルチタスクにおけるスケジューラの実行手順を説明するフローチャートである。ここでタスクの切り替えは様々な理由に基づき任意のタイミングでセクションの任意の場所で行われる。様々な理由としては、たとえば(1)外界からの信号などをトリガーに優先度の高い割込みタスクが発生した場合、(2)実行中のタスクがスケジューラーによりチェックポイント以外で事象待ち状態になった場合、(3)実行中のタスクの同期命令(notify命令)で他の優先度の高いタスクが実行可能になった場合、(4)タイマーで待っていたタスクが時間の経過により実行可能になった場合、などがある。タスクの切り替えタイミングはスケジューラにより指定される。通常、スケジューラ側で割り込み処理等のイベントが発生するとフラッグを立て、フラッグが立つとタスクの実行をいったん中断してスケジューラに制御が戻る。以下、本実行手順について説明する。   FIG. 9 is a flowchart for explaining the execution procedure of the scheduler in the preemptive multitasking. Here, task switching is performed at an arbitrary position in a section at an arbitrary timing based on various reasons. For example, (1) When a high-priority interrupt task occurs triggered by a signal from the outside world, etc. (2) When the task being executed enters an event wait state other than a checkpoint by the scheduler (3) When another high-priority task can be executed by the synchronization instruction (notify instruction) of the task being executed, (4) The task waiting in the timer can be executed over time There are cases. Task switching timing is specified by the scheduler. Normally, when an event such as an interrupt process occurs on the scheduler side, a flag is set, and when the flag is set, execution of the task is temporarily suspended and control returns to the scheduler. Hereinafter, the execution procedure will be described.

まずプログラムの実行状態を抽出する。具体的には、各タスクの直前に通過したチェックポイントの組sを抽出する(S21)。   First, the execution state of the program is extracted. Specifically, a checkpoint set s passed immediately before each task is extracted (S21).

次に、全タスクの集合Tから現時点で実行可能なタスクの集合Teを抽出する(S22)。   Next, a set Te of tasks that can be executed at the present time is extracted from the set T of all tasks (S22).

次に、Te内の各タスクに対して、次に該タスクが実行されたとした場合のプログラム実行状態を計算し、各タスクについて計算されたプログラム実行状態の集合をS’とする(S23)。チェックポイントの直前で止まっているのでない(セクションの途中で止まっている)場合は、タスクが実行された場合のプログラム実行状態は変らない。   Next, for each task in Te, the program execution state when the task is executed next is calculated, and a set of program execution states calculated for each task is set as S '(S23). If it is not stopped just before the checkpoint (stopped in the middle of a section), the program execution state when the task is executed does not change.

ステップS24〜S26は、ステップS14〜S16と同じであるため説明を省略する。   Since steps S24 to S26 are the same as steps S14 to S16, the description thereof is omitted.

ステップS27において、ステップS16で選択されたタスクをスケジューラからタスク切り替えの指示があるまで、または、次のチェックポイントに到達するまで、実行する。この後、ステップS21に戻る。   In step S27, the task selected in step S16 is executed until a task switching instruction is received from the scheduler or until the next checkpoint is reached. Thereafter, the process returns to step S21.

以下、安定集合Aおよび安定距離の具体例について説明する。   Hereinafter, specific examples of the stable set A and the stable distance will be described.

[1]機能的不具合に対する安定化その1
最もシンプルな安定集合の定義は、クリティカルセクション(計算機リソースにアクセスするセクション)に入っているタスク数の総和を1以下とするものである。クリティカルセクションはプログラムの解析により自動的に抽出することもできるが、ユーザにより指定しても良い。
[1] Stabilization against functional failures 1
The simplest definition of a stable set is one in which the total number of tasks in a critical section (section that accesses computer resources) is 1 or less. The critical section can be automatically extracted by analyzing the program, but may be specified by the user.

安定集合の定義:
A={s=(t1、t2、t3、t4)|t1、t2、t3、t4のうちクリティカルセクションに属しているタスクの総和≦1}
Definition of stable set:
A = {s = (t1, t2, t3, t4) | sum of tasks belonging to critical section among t1, t2, t3, t4 ≦ 1}

安定距離の定義:
Δ(s、A)=0 if s∈A
Δ(s、A)=1 if s∈Aでない
Definition of stable distance:
Δ (s, A) = 0 if s∈A
Δ (s, A) = 1 if not s∈A

すなわち、上記安定集合は、クリティカルセクションに入っているタスクの総数が1となるセクションの組の集合(プログラム実行状態の集合)である。評価対象となるプログラム実行状態が安定集合に入っていれば安定距離は0(第1の値)、入っていなければ安定距離は1(第2の値)である。   That is, the stable set is a set of sections (a set of program execution states) in which the total number of tasks in the critical section is 1. If the program execution state to be evaluated is in the stable set, the stable distance is 0 (first value), and if not, the stable distance is 1 (second value).

ここで、安定集合はあらかじめ計算し、記憶装置(13または15)に蓄積しておくこともできるが、プログラム実行状態が安定集合に属するか否かを毎回計算することもできる。   Here, the stable set can be calculated in advance and stored in the storage device (13 or 15), but it can also be calculated each time whether or not the program execution state belongs to the stable set.

以上により、クリティカルセクションに入るタスクの総数が1以下となるタスクの優先度が高くなり、複数のタスクが同時にクリティカルセクションに入ることを抑止できる。   As described above, the priority of tasks whose total number of tasks entering the critical section is 1 or higher is high, and a plurality of tasks can be prevented from entering the critical section at the same time.

[2]機能的不具合に対する安定化その2
本例ではクリティカルセクション(計算機リソースにアクセスする区間)に入っているタスク数の総和を安定距離として定義する。
[2] Stabilization against functional failures 2
In this example, the total number of tasks in the critical section (section in which computer resources are accessed) is defined as the stable distance.

プログラム実行状態s=(t1,t2,t3,t4)に対する安定距離の定義:
Δ(s)=t1,t2,t3,t4のうちクリティカルセクションに属しているタスクの総和(タスク数)
Definition of stable distance for program execution state s = (t1, t2, t3, t4):
Δ (s) = sum of tasks belonging to critical section among t1, t2, t3, and t4 (number of tasks)

すなわち各セクションについてクリティカルセクションに属するか否かをセクション特徴値として表すとすると(たとえばクリティカルセクションに属するセクションでは1、属さないセクションでは0とすると)、Δ(s)は、プログラム実行状態においてセクション特徴値として1をもつセクションの数に相当する。   That is, if each section is expressed as a section feature value indicating whether it belongs to a critical section (for example, 1 for a section belonging to a critical section or 0 for a section not belonging to it), Δ (s) is a section feature in the program execution state. This corresponds to the number of sections having a value of 1.

ここでは、安定集合はない(あるいは空集合)と考えることができ、特徴量だけから安定距離を計算する。すなわち、安定集合がなくても安定距離算出式だけでも機能を実現することができる。   Here, it can be considered that there is no stable set (or an empty set), and the stable distance is calculated only from the feature amount. That is, even if there is no stable set, the function can be realized only by the stable distance calculation formula.

以上により、クリティカルセクションに入るタスクの数を最小にするようなタスクのスケジューリングを行うことができる。   As described above, task scheduling that minimizes the number of tasks entering the critical section can be performed.

[3]機能的不具合に対する安定化その3
本例では、最もシンプルな安定集合の定義は、クリティカルセクション(計算機リソースにアクセスするセクション)に入っているタスク数の総和を1以下とし、クリティカルセクションに入っているタスク数の総和を安定距離として定義する。
[3] Stabilization against functional failures 3
In this example, the simplest stable set is defined as the sum of the number of tasks in the critical section (section accessing computer resources) being 1 or less and the sum of the number of tasks in the critical section as the stable distance. Define.

安定集合の定義:
A={s=(t1、t2、t3、t4)|t1、t2、t3、t4のうちクリティカルセクションに属しているタスクの総和≦1}
Definition of stable set:
A = {s = (t1, t2, t3, t4) | sum of tasks belonging to critical section among t1, t2, t3, t4 ≦ 1}

安定距離の定義:
Δ(s、A)=0 if s∈A
Δ(s、A)=クリティカルセクションに属しているタスクの総和 if s∈Aでない
Definition of stable distance:
Δ (s, A) = 0 if s∈A
Δ (s, A) = sum of tasks belonging to critical section if not s∈A

以上により、クリティカルセクションに入るタスクの総数が0または1となるタスクの優先度を最も高くし(0と1の優先度は同等)、2以上のタスクが同時にクリティカルセクションに入る場合でもタスクの数を最小にするようなタスクのスケジューリングを行うことができる。   As described above, the highest priority is given to tasks whose total number of tasks entering the critical section is 0 or 1 (priorities of 0 and 1 are equal), and the number of tasks even when two or more tasks enter the critical section at the same time. It is possible to perform task scheduling that minimizes.

[4]試験結果を用いた機能的不具合に対する安定化その1
本例では試験済みのセクションの組合せ(出荷前の試験段階において試験を行ったセクションの組合せ)を安定集合として定義する。
[4] Stabilization against functional failures using test results 1
In this example, a combination of sections that have been tested (a combination of sections that have been tested in the test stage before shipment) is defined as a stable set.

安定集合の定義:
A={s=(t1,t2,t3,t4)|t1,t2,t3,t4は試験済である}
Definition of stable set:
A = {s = (t1, t2, t3, t4) | t1, t2, t3, t4 have been tested}

安定距離の定義:
Δ(s,A)=0 if s∈A
Δ(s,A)=1 if s∈Aでない
Definition of stable distance:
Δ (s, A) = 0 if s∈A
Δ (s, A) = 1 if not s∈A

ここで、安定集合はあらかじめ計算し、記憶装置(13または15)に蓄積しておくこともできるが、状態数が大きい場合、メモリ使用量が大きくなってしまう可能性がある。安定集合に属する状態(セクションの組合せ)の集合を二分決定グラフ(BDD:Binary Decision Diagram)で効率よく表現することができる。二分決定グラフでコンパクトに表現された安定集合に対して、与えられたプログラム実行状態が含まれる(s∈A)か否かは簡単に計算できることが知られている(参考文献:Randal E. Bryant, Symbolic Boolean manipulation with ordered binary-decision diagrams, ACM Computing Surveys, Vol.24,No.3, pp.293 - 318,1992.)   Here, the stable set can be calculated in advance and stored in the storage device (13 or 15). However, if the number of states is large, the memory usage may increase. A set of states (section combinations) belonging to a stable set can be efficiently expressed by a binary decision diagram (BDD). It is known that it is easy to calculate whether a given program execution state is included (s∈A) for a stable set expressed compactly in a binary decision graph (reference: Randal E. Bryant) , Symbolic Boolean manipulation with ordered binary-decision diagrams, ACM Computing Surveys, Vol.24, No.3, pp.293-318,1992.)

以上により、試験済の組合せを優先するようなタスクスケジューリングを行うことができる。   As described above, task scheduling that gives priority to the tested combination can be performed.

[5]試験結果を用いた機能的不具合に対する安定化その2
本例でも[4]と同様に、試験済みのセクションの組合せを安定集合として定義するが、安定距離の定義が異なる。
[5] Stabilization against functional failures using test results (2)
In this example as well, as in [4], the combination of tested sections is defined as a stable set, but the definition of the stable distance is different.

安定集合の定義:
A={s=(t1,t2,t3,t4)|t1,t2,t3,t4は試験済である}
Definition of stable set:
A = {s = (t1, t2, t3, t4) | t1, t2, t3, t4 have been tested}

安定距離の定義:
Δ(s,A)=min{δ(s,s’)| s’∈A}
Definition of stable distance:
Δ (s, A) = min {δ (s, s ′) | s′∈A}

ここで、δ(s,s’)はsとs’で一致していないタスクの数である。sは評価対象となるプログラム実行状態、s’は安定集合の要素である。δ(s,s’)の算出例を図10に示す。たとえばs=(t11,t22,t31,t41)で、安定集合Aの1つの要素s1が(t12,t22,t31,t41)のとき、sとs1で一致していないタスクは1つであるため、δ(s,s1)=1となる。安定集合A内の他の要素s2〜s7についても同様にしてδ(s,s’)を求め、求めた7個のδ(s,s’)のうちの最小値が、安定距離となる。   Here, δ (s, s ′) is the number of tasks that do not match between s and s ′. s is the program execution state to be evaluated, and s' is an element of the stable set. A calculation example of δ (s, s ′) is shown in FIG. For example, when s = (t11, t22, t31, t41) and one element s1 of stable set A is (t12, t22, t31, t41), there is one task that does not match between s and s1. , Δ (s, s1) = 1. Similarly, δ (s, s ′) is obtained for the other elements s2 to s7 in the stable set A, and the minimum value of the obtained seven δ (s, s ′) is the stable distance.

以上により、試験済の組合せを優先するようなタスクスケジューリングを行うことができる。   As described above, task scheduling that gives priority to the tested combination can be performed.

以下、図11を用いて、本例についてさらに具体的に説明する。   Hereinafter, this example will be described in more detail with reference to FIG.

3つのタスクT1〜タスクT3が存在し、各タスクとも実行可能待ち状態にあるとする。すなわちタスク集合T={T1,T2,T3}である。また3つのタスクの、プログラマにより指定された優先度(指定タスク優先度)は全て同じとする。安定集合の要素は1つとし、A={s’}、s’=(CP11,CP22,CP32)であるとする。また、現在のプログラム実行状態はs=(CP11,CP22,CP30)である。   It is assumed that there are three tasks T1 to T3, and each task is in an executable wait state. That is, task set T = {T1, T2, T3}. Also, the priority (designated task priority) specified by the programmer for all three tasks is the same. Assume that there is one element of the stable set, and A = {s ′}, s ′ = (CP11, CP22, CP32). The current program execution state is s = (CP11, CP22, CP30).

タスクT1のセクションSC11の実行中に、Wait命令がありタスクT1は事象待ち状態に遷移し、タスク選択部(スケジューラ)24が、実行可能待ち状態にあるタスクT2、T3の中から次に実行すべきタスクを選択しなければならない。   During execution of section SC11 of task T1, there is a Wait instruction, and task T1 transitions to an event waiting state, and task selection unit (scheduler) 24 executes next from tasks T2 and T3 in an executable waiting state. You have to select a task to do.

タスクT2を次に実行するとした場合のプログラム実行状態は、s=(CP11,CP21,CP30)であり、安定集合からの安定距離は2(T2、T3が一致していない)である。   When the task T2 is executed next, the program execution state is s = (CP11, CP21, CP30), and the stable distance from the stable set is 2 (T2 and T3 do not match).

一方、タスクT3を次に実行するとした場合のプログラム実行状態は、s=(CP11,CP22,CP31) であり、安定集合からの安定距離は1(T3が一致していない)である。   On the other hand, when the task T3 is executed next, the program execution state is s = (CP11, CP22, CP31), and the stable distance from the stable set is 1 (T3 does not match).

そこで、スケジューラはタスクT3を選択し、タスクT3を実行状態にする。タスク実行部24は、選択されたタスクを実行する。   Therefore, the scheduler selects task T3 and puts task T3 into an execution state. The task execution unit 24 executes the selected task.

上記例では、一致していないタスク数の最小値を安定距離とし、最小の安定距離を得られるタスクを選択したが、一致しているタスク数の最大値を安定距離とし最大の安定距離が得られるタスクを選択するようにしてもよい。   In the above example, the minimum value of the number of unmatched tasks is set as the stable distance and the task that can obtain the minimum stable distance is selected. However, the maximum value of the number of matching tasks is set as the stable distance and the maximum stable distance is obtained. May be selected.

[6]試験結果を用いた機能的不具合に対する安定化その3
本例では出荷前の試験段階において試験を行った際の各セクションの試験回数の逆数の総和を安定距離として定義する(逆数を用いるのは、セクションの試験回数が多くなるほど安定距離が小さくなるようにするため)。各セクションの試験回数の逆数は、あらかじめテーブルに保存されているとする。
[6] Stabilization against functional failures using test results (3)
In this example, the sum of the reciprocal of the number of tests in each section at the test stage before shipment is defined as the stable distance. (The reciprocal is used so that the stable distance decreases as the number of section tests increases. To make). It is assumed that the reciprocal of the number of tests in each section is stored in advance in a table.

プログラム実行状態s=(t1,t2,t3,t4)に対する安定距離の定義:
Δ(s)=t1,t2,t3,t4の各セクションの試験回数の逆数の総和
Definition of stable distance for program execution state s = (t1, t2, t3, t4):
Δ (s) = sum of reciprocal number of test times of each section of t1, t2, t3, t4

すなわち各セクションの試験回数の逆数をセクション特徴値として表すことで、Δ(s)は、セクションの組合せが相対的に試験をしっかり実施しているかどうかの指標になっている。   That is, by expressing the reciprocal of the number of tests in each section as a section feature value, Δ (s) is an indicator of whether or not the combination of sections is relatively well tested.

ここでは、安定集合はない(あるいは空集合)と考えることができ、特徴量だけから安定距離を計算する。すなわち、安定集合がなくても安定距離算出式だけでも機能を実現することができる。   Here, it can be considered that there is no stable set (or an empty set), and the stable distance is calculated only from the feature amount. That is, even if there is no stable set, the function can be realized only by the stable distance calculation formula.

以上により、セクションの組合せがしっかり試験されているプログラム実行状態を実現するタスクを優先的に選択し、試験が不十分なセクション同士を同時に実行することを避けるようなスケジューリングを行うことができる。   As described above, it is possible to preferentially select a task that realizes a program execution state in which a combination of sections is firmly tested, and to perform scheduling so as to avoid simultaneously executing sections having insufficient tests.

[7]性能的不具合に対する安定化
本例において、最もシンプルな安定集合の定義は、消費電力量あるいはメモリ使用量が一定(α:想定許容量)以下となる、セクションの組の集合(プログラム実行状態の集合)を安定集合とするものである。
[7] Stabilization against performance failure In this example, the simplest definition of a stable set is a set of sections (program execution) in which power consumption or memory usage is below a certain level (α: assumed allowable amount). A set of states) is a stable set.

ここで、消費電力に関しては、複数のCPU上のスケジューリングが対象である。低消費電力化タスクスケジューリングに関しては、下記のURLから入手可能な、東京大学の研究「マルチプロセッサ の 低消費電力化タスクスケジューリングに関する研究」などがあるが、アドホックな方法であり、汎用性に欠けていた。
http://www.i.u-tokyo.ac.jp/edu/course/ipc/master/2005/RCAST/watanabe_r.pdf
Here, regarding power consumption, scheduling on a plurality of CPUs is targeted. As for low power consumption task scheduling, there is a research of the University of Tokyo “Research on low power consumption task scheduling of multiprocessor” available from the following URL, but it is an ad hoc method and lacks versatility. It was.
http://www.iu-tokyo.ac.jp/edu/course/ipc/master/2005/RCAST/watanabe_r.pdf

(1)使用メモリ量の場合その1(単一のCPU上のマルチタスクシステムを前提とする)
安定集合の定義:
A={s=(t1、t2、t3、t4)|t1、t2、t3、t4の推定メモリ使用量の総和≦α、αはシステム上問題のないメモリ使用量}
(1) In the case of the amount of used memory, 1 (assuming a multitask system on a single CPU)
Definition of stable set:
A = {s = (t1, t2, t3, t4) | sum of estimated memory usages of t1, t2, t3, and t4 ≦ α, α is a memory usage causing no problem in the system}

安定距離の定義:
Δ(s、A)=0 if s∈A
Δ(s、A)=1 if s∈Aでない
Definition of stable distance:
Δ (s, A) = 0 if s∈A
Δ (s, A) = 1 if not s∈A

(2)メモリ使用量の場合その2(単一のCPU上のマルチタスクシステムを前提とする)
安定集合の定義:
A={s=(t1,t2,t3,t4)|t1,t2,t3,t4の推定メモリ使用量の総和≦α,αはシステム上問題のないメモリ使用量}
(2) Memory usage 2 (assuming a multitasking system on a single CPU)
Definition of stable set:
A = {s = (t1, t2, t3, t4) | total sum of estimated memory usages of t1, t2, t3, t4 ≦ α, α is a memory usage with no problem in the system}

安定距離の定義:
Δ(s,A)=0 if s∈A
Δ(s,A)=t1,t2,t3,t4の推定メモリ使用量の総和 if s∈Aでない
Definition of stable distance:
Δ (s, A) = 0 if s∈A
Δ (s, A) = sum of estimated memory usage of t1, t2, t3, t4 if s∈A

推定メモリ使用量(セクション特徴値)は、あらかじめセクションごとに最大推定メモリ使用量(あるいは推定平均メモリ使用量)が計算され、テーブル形式で保存されているとする。テーブルの一例を図12に示す。推定メモリ使用量は、あらかじめそのセクションを単独で実行してメモリ使用量を計算し、それを推定メモリ使用量とする。あるいはプログラムを解析して、推定メモリ使用量を理論的に推定する。   As for the estimated memory usage (section feature value), it is assumed that the maximum estimated memory usage (or estimated average memory usage) is calculated in advance for each section and stored in a table format. An example of the table is shown in FIG. For the estimated memory usage, the section is independently executed in advance to calculate the memory usage, and this is used as the estimated memory usage. Alternatively, the program is analyzed to estimate the estimated memory usage theoretically.

以上によりメモリ使用量が許容量を超えるという状況を抑止できる。   As described above, the situation where the memory usage exceeds the allowable amount can be suppressed.

(3)メモリ使用量の場合その3(単一のCPU上のマルチタスクシステムを前提とする)
本例では各タスクで使用するメモリ使用量の総和を安定距離として定義する。
(3) Memory usage 3 (assuming a multitask system on a single CPU)
In this example, the total amount of memory used for each task is defined as a stable distance.

プログラム実行状態s=(t1,t2,t3,t4)に対する安定距離の定義:
Δ(s)=t1,t2,t3,t4の推定メモリ使用量の総和
Definition of stable distance for program execution state s = (t1, t2, t3, t4):
Δ (s) = sum of estimated memory usage of t1, t2, t3, t4

上述した「(2)消費メモリの場合その2」との相違点は、(2)ではメモリ使用量がα以内であれば、タスクの優先順位は同じなのに対し、(3)ではα以内の場合でもメモリ使用量が低いタスクが優先される。   The difference from “(2) In the case of consumed memory (2)” is that the task priority is the same if the memory usage is within α in (2), whereas it is within α in (3). But tasks with low memory usage are given priority.

以上により、メモリ使用量の総和を最小にするようなタスクのスケジューリングを行うことができる。   As described above, it is possible to perform task scheduling that minimizes the total amount of memory usage.

(4)消費電力の場合その1(複数CPU上のマルチタスクシステムを前提とする)
1チップ上のマルチコアシステムのような複数のCPU(2つ以上の実行部)上のマルチタスクシステムにおいては、各タスクは、図13に示すように、複数の実行中のタスクと、実行待ちタスクリスト(実行待ちキュー)で待っている実行待ちのタスクとに分類できる。このときタスク切り替えの対象は1つのCPUであり、他の実行中のCPUのタスク切り替えは行わない。図13では、CPU3のタスクを選択するために、以下の安定集合および安定距離に基づいてタスクの選択を行う。推定消費電力の総和の計算においては実行中のCPUのタスクも対象となることに注意する。
(4) Case 1 of power consumption (assuming multitask system on multiple CPUs)
In a multitask system on a plurality of CPUs (two or more execution units) such as a multicore system on one chip, each task includes a plurality of tasks being executed and tasks waiting for execution as shown in FIG. It can be classified into tasks waiting for execution in the list (execution queue). At this time, the target of task switching is one CPU, and the task switching of other CPUs being executed is not performed. In FIG. 13, in order to select a task of the CPU 3, the task is selected based on the following stable set and stable distance. Note that the CPU task being executed is also included in the calculation of the total estimated power consumption.

安定集合の定義:
A={s=(t1,t2,t3,t4)|t1,t2,t3,t4の中で各CPUにより実行されるタスクの推定消費電力の量の総和≦α}
Definition of stable set:
A = {s = (t1, t2, t3, t4) | total sum of estimated power consumption amounts of tasks executed by each CPU in t1, t2, t3, t4 ≦ α}

安定距離の定義:
Δ(s,A)=0 if s∈A
Δ(s,A)=1 if s∈Aでない
Definition of stable distance:
Δ (s, A) = 0 if s∈A
Δ (s, A) = 1 if not s∈A

ここで推定消費電力(セクション特徴値)は、あらかじめセクションごとに推定最大消費量(あるいは推定平均消費量)として計算され、テーブル形式で保存されているとする。テーブルの一例を図12に示す。推定消費電力は、あらかじめそのセクションを単独で実行して、消費電力量を計算し、それを推定消費量とする。あるいはプログラムを解析して、消費電力量を理論的に推定する。   Here, it is assumed that the estimated power consumption (section feature value) is calculated in advance as the estimated maximum consumption (or estimated average consumption) for each section and stored in a table format. An example of the table is shown in FIG. For the estimated power consumption, the section is executed alone in advance, the power consumption is calculated, and this is used as the estimated power consumption. Alternatively, the program is analyzed to estimate the power consumption theoretically.

以上により、消費電力が許容量を超えるという状況を抑止できる。   As described above, the situation where the power consumption exceeds the allowable amount can be suppressed.

(5)消費電力の場合その2(複数CPU上のマルチタスクシステムを前提とする)
本例では各タスクで使用する推定消費電力の総和を安定距離として定義する。
(5) Case 2 of power consumption (assuming multitask system on multiple CPUs)
In this example, the total estimated power consumption used in each task is defined as a stable distance.

プログラム実行状態s=(t1,t2,t3,t4)に対する安定距離の定義:
Δ(s)=t1,t2,t3,t4の推定消費電力量の総和
Definition of stable distance for program execution state s = (t1, t2, t3, t4):
Δ (s) = sum of estimated power consumption of t1, t2, t3, t4

以上により、消費電力量を最小にするようなタスクのスケジューリングを行うことができる。   As described above, it is possible to perform task scheduling that minimizes power consumption.

[8]プログラム作成時に設定された特徴量を用いた安定化その1
並行プログラムの不具合は、作成時にしっかり検討されたメイン処理ではなく、非メイン処理の組合せで発生することが多い。本例ではメイン処理と非メイン処理(例外処理など)を区別するメイン処理特徴量を用いた安定距離を定義する。具体的には、メイン処理であるセクションの特徴量は0、非メイン処理であるセクションの特徴量は1とする。この特徴量は、プログラム作成時に作成者が設定し、実行時はテーブル形式で保存されているとする。
[8] Stabilization using feature values set when creating a program (1)
In many cases, the failure of the concurrent program is caused by a combination of non-main processes rather than the main process that has been thoroughly studied at the time of creation. In this example, a stable distance is defined using a main processing feature amount that distinguishes main processing from non-main processing (exception processing or the like). Specifically, the feature quantity of the section that is the main process is 0, and the feature quantity of the section that is the non-main process is 1. It is assumed that the feature amount is set by the creator at the time of creating the program and stored in a table format at the time of execution.

プログラム実行状態s=(t1,t2,t3,t4)に対する安定距離の定義:
Δ(s)=t1,t2,t3,t4のメイン処理特徴量の総和
Definition of stable distance for program execution state s = (t1, t2, t3, t4):
Δ (s) = sum of main processing feature values of t1, t2, t3, and t4

ここでは、安定集合はない(あるいは空集合)と考えることができ、特徴量だけから安定距離を計算する。すなわち、安定集合がなくても安定距離算出式だけでも機能を実現することができる。   Here, it can be considered that there is no stable set (or an empty set), and the stable distance is calculated only from the feature amount. That is, even if there is no stable set, the function can be realized only by the stable distance calculation formula.

以上により、非メイン処理がなるべく同時に実行されることのないように、タスクのスケジューリングを行うことができる。   As described above, task scheduling can be performed so that non-main processing is not executed at the same time.

[9]プログラム作成時に設定された特徴量を用いた安定化その2
並行プログラムの不具合は、密接に絡み合ったタスク間の処理の組合せで発生することが多い。本例ではプログラム作成時に設定したタスクのセクション間の密接度を特徴量(セクション密接度特徴量)として安定距離を定義する。具体的には、全てのセクション間の密接度を、プログラム作成時に作成者が設定し、実行時はテーブル形式で保存されているとする。現実的には、すべての組合せを設定する必要はなく、作成者が安定性に不安を持つ場合のみ0以上の密接度特徴量を設定し、それ以外は密接度特徴量を0としても良い。また、プログラム解析手法により変数の共有度などから密接度特徴量を自動計算することもできる。具体的な計算手法として、Myers のモジュール強度/接合度(G.J.Myers,Composite/Structured Design, Van Nostrand Reinhold, 1978.)を用いることもできる。
[9] Stabilization using feature values set when creating the program (2)
A failure of a concurrent program often occurs with a combination of processes between closely intertwined tasks. In this example, the stable distance is defined with the closeness between the sections of the task set at the time of creating the program as the feature amount (section closeness feature amount). Specifically, it is assumed that the degree of closeness between all sections is set by the creator at the time of creating a program and stored in a table format at the time of execution. In reality, it is not necessary to set all the combinations, and a closeness feature amount of 0 or more may be set only when the creator is uneasy about stability, and the closeness feature amount may be set to 0 otherwise. In addition, the closeness feature amount can be automatically calculated from the degree of sharing of variables by a program analysis method. As a specific calculation method, Myers' module strength / jointness (GJMyers, Composite / Structured Design, Van Nostrand Reinhold, 1978.) can also be used.

プログラム実行状態s=(t1,t2,t3,t4)に対する安定距離の定義:
Δ(s)=t1,t2,t3,t4の各セクションの組合せの密接度特徴量の総和
Definition of stable distance for program execution state s = (t1, t2, t3, t4):
Δ (s) = total sum of closeness feature quantities of combinations of sections of t1, t2, t3, and t4

以上により、非メイン処理がなるべく同時に実行されることのないように、タスクのスケジューリングを行うことができる。   As described above, task scheduling can be performed so that non-main processing is not executed at the same time.

図14は、マルチタスク処理装置を有する機器(監視対象装置)28と、この監視対象装置28にネットワークを介して接続された遠隔監視装置30とを示す。この遠隔監視装置30は、監視対象装置28のプログラム実行状態を監視し、この監視に基づき安定集合を作成し、作成した安定集合を監視対象装置28に送り込んで、監視対象装置28で使用する安定集合を更新する。これにより、出荷後の機器の使用状況にあわせて機器の機能的・性能的安定性を向上させることできる。従来は、プログラムの不具合の報告からバグの特定、プログラムの修正までに時間を要し、その間多くの機器で不具合が発生するという問題があったが、機器をネットワークを介して監視し、不具合にいたるプログラム実行状態を安定集合から外したり、実績上安定性が確認された実行状態を安定集合に追加することにより、他の機器での不具合の再発を防止できる。   FIG. 14 shows a device (monitoring target device) 28 having a multitask processing device, and a remote monitoring device 30 connected to the monitoring target device 28 via a network. The remote monitoring device 30 monitors the program execution state of the monitoring target device 28, creates a stable set based on this monitoring, sends the created stable set to the monitoring target device 28, and uses it in the monitoring target device 28. Update the set. As a result, the functional and performance stability of the device can be improved in accordance with the usage status of the device after shipment. Previously, it took time to report bugs, identify bugs, and correct programs. During that time, there were problems with many devices. By removing the various program execution states from the stable set and adding execution states that have been confirmed to be stable in actual performance to the stable set, it is possible to prevent a failure from occurring in another device.

以下、監視対象装置28および遠隔監視装置30により行われる処理の手順について説明する。この手順は大きく以下のステップ1〜ステップ3からなる。   Hereinafter, a procedure of processing performed by the monitoring target device 28 and the remote monitoring device 30 will be described. This procedure is mainly composed of the following steps 1 to 3.

ステップ1:遠隔監視装置30における監視部31が監視対象装置28のプログラムの実行状態を監視する。 Step 1: The monitoring unit 31 in the remote monitoring device 30 monitors the execution state of the program of the monitoring target device 28.

ステップ2:遠隔監視装置30における安定集合作成部32が、監視の結果に基づき安定集合の改訂版を作成する。 Step 2: The stable set creation unit 32 in the remote monitoring device 30 creates a revised version of the stable set based on the monitoring result.

ステップ3:遠隔監視装置30における安定集合送信部33が、作成された安定集合改定版を監視対象装置28に送り込み、安定集合を差し替える(更新する)。 Step 3: The stable set transmission unit 33 in the remote monitoring device 30 sends the prepared stable set revised version to the monitoring target device 28, and replaces (updates) the stable set.

以下各ステップの詳細について、上述した実施例[1]機能的不具合に対する安定化その1、[2]機能的不具合に対する安定化その2、[4]試験結果を用いた機能的不具合に対する安定化その1、[5]試験結果を用いた機能的不具合に対する安定化その2、を想定して説明する。   In the following, the details of each step are as follows: [1] Stabilization against functional failure No. 1, [2] Stabilization against functional failure No. 2, [4] Stabilization against functional failure using test results 1. [5] Stabilization for functional failure using test results No. 2 will be described.

ステップ1:遠隔監視装置30における監視部31が監視対象装置28のプログラム実行状態を監視する。   Step 1: The monitoring unit 31 in the remote monitoring device 30 monitors the program execution state of the monitoring target device 28.

具体的には、安定距離が0より大きい場合のプログラム実行において、不具合が発生したか否かを遠隔監視装置30が、監視対象装置28における通知部26からの通知に基づき、監視する。通知部26は、安定距離が0より大きい場合のタスクの実行のたびに、そのときのプログラム実行状態と不具合の発生の有無とを通知する。不具合が発生しなかった場合は、監視部31は、通知されたプログラム実行状態を安定集合追加候補sとして抽出し、安定集合追加候補集合SCに記憶する(SC←SC∪{s})。逆に、安定距離が0にもかかわらず、不具合が発生した場合は、安定集合削除候補集合NSCに記憶する(NSC←NSC∪{s})。ここで、不具合の検出は、システムダウンまたはハングアップの検知から可能であり、リセットボタン等の操作履歴から自動判定することもできる。あるいは、ユーザからのフィードバック操作(不具合通知のボタンを押すなど)から検出することもできる。いったん安定集合追加候補集SCに登録されても、その後のプログラム実行で安定集合追加候補sにおける不具合が検出されれば当該候補sをSCから削除する。図11の場合、安定距離1のs2=(CP11,CP22,CP31)を実行して不具合が発生しなければ、s2=(CP11,CP22,CP31)を抽出し、集合SCに追加する。ここでは、安定集合削除候補集合NSCへの追加はなかったとする。   Specifically, in the program execution when the stable distance is greater than 0, the remote monitoring device 30 monitors whether a failure has occurred based on the notification from the notification unit 26 in the monitoring target device 28. Each time the task is executed when the stable distance is greater than 0, the notification unit 26 notifies the program execution state at that time and whether or not a failure has occurred. If no failure has occurred, the monitoring unit 31 extracts the notified program execution state as a stable set addition candidate s and stores it in the stable set addition candidate set SC (SC ← SC∪ {s}). On the other hand, if a failure occurs despite the stable distance being 0, it is stored in the stable set deletion candidate set NSC (NSC ← NSC∪ {s}). Here, the failure can be detected from detection of system down or hang-up, and can be automatically determined from an operation history of a reset button or the like. Alternatively, it can also be detected from a feedback operation from the user (such as pressing a failure notification button). Once registered in the stable set addition candidate collection SC, if a defect in the stable set addition candidate s is detected in the subsequent program execution, the candidate s is deleted from the SC. In the case of FIG. 11, if s2 = (CP11, CP22, CP31) of stable distance 1 is executed and no problem occurs, s2 = (CP11, CP22, CP31) is extracted and added to the set SC. Here, it is assumed that there is no addition to the stable set deletion candidate set NSC.

ステップ2:監視の結果に基づき安定集合の改訂版を作成する。   Step 2: Create a revised version of the stable set based on the monitoring results.

具体的には、ある指定された期間で蓄積された安定集合追加候補の集合SCをオリジナルの安定集合Aに追加し、安定集合の改訂版A’を作成する(A’←A∪SC)。図11の場合、A’={s2}になる。ここでは説明の簡単のためオリジナルの安定集合Aは空集合であるとしている。安定集合削除候補集合NSCがある場合は、安定集合からNSCを削除したモノ(A’←A−NSC)を改訂版のA’とする。   Specifically, a set SC of stable set addition candidates accumulated in a specified period is added to the original stable set A to create a revised version A ′ of the stable set (A ′ ← A ← SC). In the case of FIG. 11, A ′ = {s2}. Here, for simplicity of explanation, the original stable set A is assumed to be an empty set. When there is a stable set deletion candidate set NSC, a thing (A ′ ← A−NSC) obtained by deleting the NSC from the stable set is set as a revised version A ′.

ステップ3:作成された安定集合改定版を監視対象装置30に送り、監視対象装置30における更新部27が安定集合を差し替える。   Step 3: The created stable set revision is sent to the monitoring target device 30, and the update unit 27 in the monitoring target device 30 replaces the stable set.

具体的には、監視対象装置30の安定集合Aを安定集合改訂版A’で置き換える。   Specifically, the stable set A of the monitoring target device 30 is replaced with a stable set revised version A ′.

図11の場合、AをA’={s2}で置き換える。置き換えた後は、s2=(CP11,CP22.CP31)は安定距離が0になる。   In the case of FIG. 11, A is replaced with A '= {s2}. After the replacement, s2 = (CP11, CP22.CP31) has a stable distance of zero.

なお、上記の例では安定集合を更新を行ったが、安定集合の変わりに安定距離の更新を行うこともできる。   In the above example, the stable set is updated. However, the stable distance can be updated instead of the stable set.

上記の例では、監視対象装置が1台であったが、図15に複数の監視対象装置を1台の遠隔監視装置で監視し、更新用の安定集合を作成する例を示す。   In the above example, there is one monitoring target device. FIG. 15 shows an example in which a plurality of monitoring target devices are monitored by one remote monitoring device and a stable set for updating is created.

ステップ1:遠隔監視装置30における監視部31が各監視対象装置28のプログラム実行状態を監視し、前述の手順と同様に各監視対象装置28ごとに安定集合追加候補集合SC1,SC2,SC3,および安定集合削除候補集合NSC1,NSC2,NSC3を算出する。   Step 1: The monitoring unit 31 in the remote monitoring device 30 monitors the program execution state of each monitored device 28, and in the same manner as described above, for each monitored device 28, stable set addition candidate sets SC1, SC2, SC3, and The stable set deletion candidate sets NSC1, NSC2, and NSC3 are calculated.

ステップ2:監視の結果に基づき安定集合の改訂版を作成する。   Step 2: Create a revised version of the stable set based on the monitoring results.

具体的には、各監視対象装置28ごとに算出された安定集合追加候補集合SC1,SC2,SC3の共通集合を安定集合追加候補集合SCとし、安定集合削除候補集合NSC1,NSC2,NSC3の和集合を安定集合削除候補集合NSCとする。SCとNSCから安定集合改定版(A’=(A∪SC)-NSC)を算出する。他の算出方法として、N箇所以上の遠隔監視装置から同じ追加/削除候補があった場合に、それをSCあるいはNSCとするなどの方法がある。   Specifically, the common set of stable set addition candidate sets SC1, SC2, SC3 calculated for each monitored device 28 is defined as a stable set addition candidate set SC, and the union of stable set deletion candidate sets NSC1, NSC2, NSC3 Is a stable set deletion candidate set NSC. A stable set revision (A ′ = (A∪SC) −NSC) is calculated from SC and NSC. As another calculation method, there is a method in which when there are the same addition / deletion candidates from N or more remote monitoring apparatuses, they are designated as SC or NSC.

ステップ3:作成された安定集合改定版を各監視対象装置28に送り、監視対象装置30における更新部27が安定集合を差し替える。   Step 3: The created stable set revision is sent to each monitoring target device 28, and the updating unit 27 in the monitoring target device 30 replaces the stable set.

これまでの例では、安定集合はプログラム実行状態を要素として定義されたが、セクション実行系列、または、実行可能タスク集合と選択されたタスクの組、を安定集合とすることもできる。以下これについて、[10]、[11]において、説明する。   In the examples so far, the stable set has been defined with the program execution state as an element, but a section execution sequence or a set of an executable task set and a selected task may be a stable set. This will be described below in [10] and [11].

[10]試験済みのセクション実行系列を用いた安定化
本例では試験済みのセクション実行系列を安定集合として定義する。例えば、直前のプログラム実行状態s1で実行されたセクションti1と次のプログラム実行状態s2で実行するセクションti2とするとき、試験済みのセクション実行系列は、試験時に蓄積され、実行時にはテーブル形式で保存されているとする。本例では、セクション実行系列の長さは2としているが、2以上の系列を保存しても良い。
[10] Stabilization using a tested section execution sequence In this example, a tested section execution sequence is defined as a stable set. For example, when a section ti1 executed in the immediately preceding program execution state s1 and a section ti2 executed in the next program execution state s2, the section execution sequence that has been tested is accumulated at the time of testing and stored in a table format at the time of execution. Suppose that In this example, the length of the section execution sequence is 2, but two or more sequences may be stored.

安定集合の定義:
A={t11t12,t21t22,t31t32,t41t42},t11t12,t21t22,t31t32,t41t42は試験済のセクション実行系列である。
Definition of stable set:
A = {t11t12, t21t22, t31t32, t41t42}, t11t12, t21t22, t31t32, and t41t42 are tested section execution sequences.

安定距離の定義:
Δ(s2,A)=0 if ti1tj2∈A,ti1はs1で実行されたセクション,ti2はs2で実行されたセクション
Δ(s2,A)=1 if ti1tj2∈Aでない,ti1はs1で実行されたセクション,ti2はs2で実行されたセクション
Definition of stable distance:
Δ (s2, A) = 0 if ti1tj2∈A, ti1 is the section executed at s1, ti2 is the section executed at s2, Δ (s2, A) = 1 if ti1tj2∈A, ti1 is executed at s1 Section, ti2 is the section executed in s2

以上により、試験済みのセクション実行系列を優先するようなタスクスケジューリングを行うことができる。   As described above, it is possible to perform task scheduling that gives priority to a section execution sequence that has been tested.

図16に試験済みのセクション実行系列を安定集合とした場合のスケジューラの実行手順を示す。まず、プログラムの実行状態s1を抽出し(S31)、次に現時点で実行可能なタスク集合Teを抽出(S32)、タスク集合Te内の各タスクに対してプログラム実行状態s2を計算(S33)、s1と各プログラム実行状態s2から上記の定義に基づき安定距離を計算する(S34)。各プログラム実行状態s2から計算された安定距離に基づき、タスク集合Te内の各タスクについて安定タスク優先度を計算する(S35)。安定タスク優先度に基づきタスクスケジューリングを行う。   FIG. 16 shows the execution procedure of the scheduler when the tested section execution sequence is a stable set. First, the program execution state s1 is extracted (S31), then the currently executable task set Te is extracted (S32), and the program execution state s2 is calculated for each task in the task set Te (S33). Based on the above definition, a stable distance is calculated from s1 and each program execution state s2 (S34). Based on the stable distance calculated from each program execution state s2, a stable task priority is calculated for each task in the task set Te (S35). Task scheduling is performed based on stable task priority.

[11]試験済みの実行可能タスク集合と選択されたタスクの組を用いた安定化
本例では実行可能タスク集合(実行可能待ち状態にあるタスクの集合)と選択されたタスクの組を安定集合として定義する。例えば、直前のプログラム実行状態s1における実行可能なタスク集合SSと次のプログラム実行状態s2で実行するセクションscとするとき、(SS,sc)を、実行可能タスク集合と選択されたタスクの組とする。試験済みの実行可能タスク集合と選択されたタスクとの組は、試験時に蓄積され、実行時にはテーブル形式で保存されているとする。
[11] Stabilization using a tested executable task set and a selected set of tasks In this example, an executable task set (a set of tasks waiting for execution) and a selected set of tasks are set as a stable set. Define as For example, when a task set SS that can be executed in the previous program execution state s1 and a section sc that is executed in the next program execution state s2, (SS, sc) is a set of the executable task set and the selected task. To do. Assume that a set of the testable executable task set and the selected task is accumulated at the time of testing and stored in a table format at the time of execution.

安定集合の定義:
A={(SS,sc)|SSとscは試験済み}。
Definition of stable set:
A = {(SS, sc) | SS and sc have been tested}.

安定距離の定義:
Δ(s2,A)=0 if s1の実行可能タスク集合SSとs2で選択されたセクションscの組みはAに含まれる。
Δ(s2,A)=1 if s1の実行可能タスク集合SSとs2で選択されたセクションscの組みはAに含まれない。
Definition of stable distance:
A set of executable task sets SS of Δ (s2, A) = 0 if s1 and section sc selected by s2 is included in A.
A set of executable task set SS of if (s2, A) = 1 if s1 and section sc selected by s2 is not included in A.

以上により、試験済みのタスク選択パターンと一致するタスクを優先して選択するタスクスケジューリングを行うことができる。   As described above, it is possible to perform task scheduling that preferentially selects a task that matches the tested task selection pattern.

図17に試験済みの実行可能タスク集合と選択されたタスクの組を安定集合とした場合のスケジューラの実行手順を示す。まず、プログラムの実行状態s1を抽出し(S41)、次に現時点で実行可能なタスク集合Teを抽出(S42)、タスク集合Te内の各タスクに対してプログラム実行状態s2を計算(S43),タスク集合Teをs1における実行可能タスクの集合SSとして決定し、各プログラム実行状態s2で実行されるべきセクションをscとして決定する(S44)。プログラム実行状態SSと各scを用いてそれぞれ安定距離を計算し、タスク集合Te内の各タスクについて安定タスク優先度を計算する(S45)。安定タスク優先度に基づきタスクスケジューリングを行う。   FIG. 17 shows an execution procedure of the scheduler when a set of tested executable task sets and selected tasks is a stable set. First, the program execution state s1 is extracted (S41), then the currently executable task set Te is extracted (S42), and the program execution state s2 is calculated for each task in the task set Te (S43), The task set Te is determined as the set SS of executable tasks in s1, and the section to be executed in each program execution state s2 is determined as sc (S44). A stable distance is calculated using the program execution state SS and each sc, and a stable task priority is calculated for each task in the task set Te (S45). Task scheduling is performed based on stable task priority.

以下、共有資源(たとえばタスク間で共有される変数、構造化データまたはオブジェクト)を考慮した安定化について、[12]〜[15]において、説明する。   Hereinafter, stabilization considering shared resources (for example, variables shared between tasks, structured data, or objects) will be described in [12] to [15].

[12]タスクの状態(セクション)と、共有資源とを用いた安定化その1
複数のタスクの状態(セクション)が、複数の共有資源の状態に対して試験済みであるような、複数のタスクの状態と複数の共有資源の状態との組み合わせs=(ts,rs)を安定集合として定義する。通常は、すべてのタスクの状態とすべての共有資源との組合せs=(ts,rs)を安定集合とするが、信頼性の観点で考慮しなくても良いタスクや共有資源に関しては対象外としても良い。
[12] Stabilization using task state (section) and shared resources (1)
Stable combination of multiple task states and multiple shared resource states s = (ts, rs), where multiple task states (sections) have been tested against multiple shared resource states Define as a set. Normally, the combination s = (ts, rs) of all task states and all shared resources is a stable set, but tasks and shared resources that do not need to be considered from the viewpoint of reliability are excluded. Also good.

安定集合の定義:
A={(ts,rs)|(ts,rs)が試験済み}
ここでts=(t1,t2,t3,…)、rs=(r1,r2,r3,…)である。tsはタスクの状態(セクション)の集合(tiはタスクiの状態)、rsは、tsに関連する共有資源の状態の集合(riは共有資源iの状態)を示す。tsはプログラム実行状態に相当する。
Definition of stable set:
A = {(ts, rs) | (ts, rs) tested}
Here, ts = (t1, t2, t3,...), Rs = (r1, r2, r3,...). ts is a set of task states (sections) (ti is the state of task i), and rs is a set of shared resource states related to ts (ri is the state of shared resource i). ts corresponds to the program execution state.

安定距離の定義:
Δ(s,A)=0 if s∈A,
Δ(s,A)=1 if s∈Aでない
安定距離の計算例を示すと、図18に示すタスクおよび共有資源の例では、状態(s1i,s2j,s3k,r1l,r2m)が試験済みか(安定集合Aに属するか)どうかを判定し、属するときは0,属さないときは1となる。
Definition of stable distance:
Δ (s, A) = 0 if s∈A,
Δ (s, A) = 1 if s∈A is not shown. In the example of the stable distance, whether the state (s1i, s2j, s3k, r1l, r2m) has been tested in the example of task and shared resource shown in FIG. It is determined whether or not (belongs to stable set A).

本例で定義した安定集合を用いたタスク選択処理の詳細は、図7または図9のフローチャートの処理と同様である。   Details of the task selection process using the stable set defined in this example are the same as those in the flowchart of FIG. 7 or FIG.

ただしステップS13またはS23では、プログラム実行状態の他に、このプログラム実行状態において用いられる共有資源の状態を求める。また、ステップS14またはS24では、求めたプログラム実行状態と共有資源の状態との組と、上記安定集合との距離を、上記定義に従い、計算する。   However, in step S13 or S23, in addition to the program execution state, the state of the shared resource used in this program execution state is obtained. In step S14 or S24, the distance between the obtained set of program execution state and shared resource state and the stable set is calculated according to the above definition.

[13]タスクの状態と、共有資源とを用いた安定化その2
個々のタスクの状態(セクション)が、複数の共有資源の状態に対して試験済みであるような、複数のタスクの状態と複数の共有資源の状態との組み合わせを安定集合s=(ts,rs)として定義する。通常は、すべてのタスクの状態とすべての共有資源との組合せs=(ts,rs)を安定集合とするが、信頼性の観点で考慮しなくても良いタスクや共有資源に関しては対象外としても良い。
[13] Stabilization using task state and shared resources (2)
A combination of a plurality of task states and a plurality of shared resource states such that each task state (section) has been tested for a plurality of shared resource states is a stable set s = (ts, rs ). Normally, the combination s = (ts, rs) of all task states and all shared resources is a stable set, but tasks and shared resources that do not need to be considered from the viewpoint of reliability are excluded. Also good.

安定集合の定義:
A={(ts,rs)|tsの各tiに対して(ti,rs)が試験済み}
ここでts=(t1,t2,t3,…)、rs=(r1,r2,r3,…)である。ti∈{t1,t2,t3…}はタスクの状態、rsは、共有資源の状態の集合を示す。すなわち、実施例[12]がタスクの集合と共有資源の集合の組に対して試験済みかどうかで安定集合を定義したのに対し、本実施例では、各タスク状態と共有資源の集合の組に対して試験済みかどうかで安定集合を定義している。
Definition of stable set:
A = {(ts, rs) | (ti, rs) tested for each ti of ts}
Here, ts = (t1, t2, t3,...), Rs = (r1, r2, r3,...). ti∈ {t1, t2, t3...} represents a task state, and rs represents a set of shared resource states. That is, while the embodiment [12] defines a stable set depending on whether or not a set of tasks and a set of shared resources has been tested, in this embodiment, a set of task states and a set of shared resources. A stable set is defined by whether or not it has been tested.

安定距離の定義:
Δ(s,A)=0 if s∈A,
Δ(s,A)=(タスク数)−((ti,rs)が試験済みであるタスク数) if s∈Aでない
安定距離の計算例を示すと、図18に示す例では、状態(s1i,s2j,s3k,r1l,r2m)を分解して(s1i,r1l,r2m)(s2j,r1l,r2m)(s3k,r1l,r2m)を取得し、それぞれ試験済みかどうか判定する。仮に1つのみが試験済みのときは、安定距離はタスク数3−1=2となる。ただし、準備として、あらかじめ試験時の実行ログから、試験済みの(ts,rs)を取得し、これを複数の(ti, res)に分解して、リストLに格納しておく。安定集合は論理的な概念であり、実際のアルゴリズムでは、安定距離がゼロであれば安定集合に含まれるものとする。
Definition of stable distance:
Δ (s, A) = 0 if s∈A,
Δ (s, A) = (number of tasks) − (number of tasks for which (ti, rs) has been tested) if s∈A is not shown. In the example shown in FIG. 18, in the example shown in FIG. , s2j, s3k, r1l, r2m) to obtain (s1i, r1l, r2m) (s2j, r1l, r2m) (s3k, r1l, r2m), and determine whether each has been tested. If only one has been tested, the stable distance is the number of tasks 3-1 = 2. However, as preparation, (ts, rs) that have been tested are acquired in advance from the execution log at the time of testing, and this is decomposed into a plurality of (ti, res) and stored in the list L. The stable set is a logical concept, and in an actual algorithm, if the stable distance is zero, it is included in the stable set.

本例で定義した安定集合を用いたタスク選択処理の詳細は、図7または図9のフローチャートの処理と同様である。   Details of the task selection process using the stable set defined in this example are the same as those in the flowchart of FIG. 7 or FIG.

ただしステップS13またはS23では、プログラム実行状態の他に、複数の共有資源の状態を求める。   However, in step S13 or S23, in addition to the program execution state, the states of a plurality of shared resources are obtained.

そして、ステップS14またはS24では、求めたプログラム実行状態に含まれる個々のセクション(タスクの状態)を、求めた共有資源の状態と組み合わせて複数の組を生成する。そして、生成した複数の組のうちリストLに含まれていない組数(生成した複数の組とリストLとのマッチ数としてもよい)を安定距離として計算する。   In step S14 or S24, a plurality of sets are generated by combining individual sections (task states) included in the obtained program execution state with the obtained shared resource state. Then, the number of pairs that are not included in the list L among the plurality of generated pairs (may be the number of matches between the plurality of generated sets and the list L) is calculated as a stable distance.

ステップS15またはS25では、選択されたタスクの(ti,rs)が試験済みであること、安定距離が小さいことの優先順位で、高い安定タスク優先度を付与するものとする。   In step S15 or S25, it is assumed that a high stable task priority is given in the priority order that (ti, rs) of the selected task has been tested and that the stable distance is small.

[14]タスクの状態と、共有資源とを用いた安定化その3
個々のタスクの状態に対し、それぞれに関係する個々の共有資源の状態が試験済みであるような、複数のタスクの状態と複数の共有資源の状態との組み合わせを安定集合として定義する。ここで、タスクが共有資源と関係するとは、タスクが共有資源を利用(参照、更新など)することを意味する。
[14] Stabilization using task state and shared resources (3)
For each task state, a combination of a plurality of task states and a plurality of shared resource states is defined as a stable set such that the state of each shared resource related to each task has been tested. Here, that a task is related to a shared resource means that the task uses (refers to, updates, etc.) the shared resource.

安定集合の定義:
A={(ts,rs)|tsの各tiおよびタスクiに関係する各資源rik∈{r1,r2,r3,…}に対して(ti,rik)が試験済み}
ここでts=(t1,t2,t3,…)、rs=(r1,r2,r3,…)である。ti∈{t1,t2,t3…}はタスクiの状態、{ri1,ri2,ri3,…}は、状態tiに関係する共有資源の状態の集合、rik∈{ri1,ri2,ri3,…}は、状態tiに関係する個々の共有資源の状態を示す。
Definition of stable set:
A = {(ts, rs) | (ti, rik) tested for each resource rik∈ {r1, r2, r3, ...} related to each ti and task i of ts}
Here, ts = (t1, t2, t3,...), Rs = (r1, r2, r3,...). ti∈ {t1, t2, t3 ...} is the state of task i, {ri1, ri2, ri3, ...} is a set of shared resource states related to state ti, rik∈ {ri1, ri2, ri3, ...} Indicates the state of each shared resource related to the state ti.

安定距離の定義:
Δ(s,A)=(タスクと、関連する共有資源との組数)−((ti,rik)が試験済みであるタスク数)
安定距離の計算例を示すと、図18に示す例では、状態(s1i,s2j,s3k,r1l,r2m)を分解して(s1i,r1l)(s2j,r1l)(s2j,r2m)(s3k,r2m)の4つの組を取得し、それぞれ試験済みかどうか判定する。仮に1つのみが試験済みのときは、安定距離は組数4−1=3となる。ただし、準備として、あらかじめ試験時の実行ログから、試験済みの(ts,rs)を取得し、これを複数の(ti, rik)に分解して、リストLに格納しておく。安定集合は論理的な概念であり、実際のアルゴリズムでは、安定距離がゼロであれば安定集合に含まれるものとする。
Definition of stable distance:
Δ (s, A) = (number of tasks and associated shared resources)-(number of tasks for which (ti, rik) has been tested)
In the example shown in FIG. 18, the state (s1i, s2j, s3k, r1l, r2m) is decomposed to obtain (s1i, r1l) (s2j, r1l) (s2j, r2m) (s3k, Acquire four sets of r2m) and determine whether each has been tested. If only one has been tested, the stable distance is the number of pairs 4-1 = 3. However, as preparation, (ts, rs) that have already been tested are acquired from the execution log at the time of testing, and this is decomposed into a plurality of (ti, rik) and stored in the list L. The stable set is a logical concept, and in an actual algorithm, if the stable distance is zero, it is included in the stable set.

本例で定義した安定集合を用いたタスク選択処理の詳細は、図7または図9のフローチャートの処理と同様である。   Details of the task selection process using the stable set defined in this example are the same as those in the flowchart of FIG. 7 or FIG.

ただしステップS13またはS23では、プログラム実行状態の他に、各タスクの状態に関連する共有資源の状態を求める。   However, in step S13 or S23, in addition to the program execution state, the state of the shared resource related to the state of each task is obtained.

そして、ステップS14またはS24では、求めたプログラム実行状態に含まれる個々のセクション(タスクの状態)を、それぞれ対応する個々の共有資源の状態と組み合わせて複数の組を生成する。そして、生成した複数の組のうちリストLに含まれていない組数(生成した複数の組とリストLとのマッチ数としてもよい)を安定距離として得る。   In step S14 or S24, a plurality of sets are generated by combining individual sections (task states) included in the obtained program execution state with corresponding individual shared resource states. Then, the number of sets that are not included in the list L (may be the number of matches between the plurality of generated sets and the list L) among the plurality of generated sets is obtained as the stable distance.

ステップS15またはS25では、選択されたタスクiに対して、タスクiの状態tiと関係する共有資源の状態との組(ti,rki)が試験済みであること、安定距離が小さいことの優先順位で、高い安定タスク優先度を付与するものとする。   In step S15 or S25, for the selected task i, the priority order that the pair (ti, rki) of the task i state ti and the state of the shared resource related to the task i has been tested and that the stable distance is small Therefore, a high stable task priority is given.

[15]タスクの状態と、共有資源とを用いた安定化その4
個々のタスクの状態に対し、それぞれに関係する複数の共有資源の状態が試験済みであるような、複数のタスクの状態と複数の共有資源の状態との組み合わせを安定集合s=(ts,rs)として定義する。
[15] Stabilization using task state and shared resources (4)
For each task state, a combination of a plurality of task states and a plurality of shared resource states such that the states of the plurality of shared resources related to each have been tested is a stable set s = (ts, rs ).

安定集合の定義:
A={(ts,rs)|tsの各tiおよびタスクiに関係する共有資源の集合の状態rsi⊂rsに対して、(ti,rsi)が試験済み}
ここでts=(t1,t2,t3,…)、rs=(r1,r2,r3,…), rsi=(ri1, ri2, ri3,…)である。ti∈{t1,t2,t3…}はタスクの状態、rsi⊂rsは、状態tiに関係する共有資源の状態の集合(すなわち、rsiはrsの部分集合)、rik(=ri1,ri2,ri3,…)は、rsiに含まれる個々の共有資源の状態を示す。
Definition of stable set:
A = {(ts, rs) | (ti, rsi) has been tested for the state rsi⊂rs of the set of shared resources related to each ti and task i of ts}
Here, ts = (t1, t2, t3,...), Rs = (r1, r2, r3,...), Rsi = (ri1, ri2, ri3,...). ti∈ {t1, t2, t3 ...} is the task state, rsi⊂rs is the set of shared resource states related to the state ti (ie, rsi is a subset of rs), rik (= ri1, ri2, ri3 , ...) indicates the state of each shared resource included in rsi.

安定距離の定義:
Δ(s,A)=(タスク数)−((ti,rsi)が試験済みであるタスク数)
安定距離の計算例を示すと、図18に示した例では、状態(s1i,s2j,s3k,r11,r2m)を分解して(s1i,r11)(s2j,r1l,r2m)(s3k,r2m)の3つの組を取得し、それぞれ試験済みかどうか判定する。仮に1つのみが試験済みのときは、安定距離は組数4−1=3となる。ただし、準備として、あらかじめ試験時の実行ログから、試験済みの(ts,rs)を取得し、これを複数の(ti, rsi)に分解して、リストLに格納しておく。安定集合は論理的な概念であり、実際のアルゴリズムでは、安定距離がゼロであれば安定集合に含まれるものとする。
Definition of stable distance:
Δ (s, A) = (number of tasks)-((ti, rsi) is the number of tested tasks)
An example of calculating the stable distance is as follows. In the example shown in FIG. 18, the state (s1i, s2j, s3k, r11, r2m) is decomposed (s1i, r11) (s2j, r1l, r2m) (s3k, r2m) Are obtained, and it is determined whether each has been tested. If only one has been tested, the stable distance is the number of pairs 4-1 = 3. However, as preparation, (ts, rs) that have been tested are acquired in advance from the execution log at the time of testing, and this is divided into a plurality of (ti, rsi) and stored in the list L. The stable set is a logical concept, and in an actual algorithm, if the stable distance is zero, it is included in the stable set.

本例で定義した安定集合を用いたタスク選択処理の詳細は、図7または図9のフローチャートの処理と同様である。   Details of the task selection process using the stable set defined in this example are the same as those in the flowchart of FIG. 7 or FIG.

ただしステップS13またはS23では、プログラム実行状態の他に、各タスクに関連する共有資源の状態を求める。   However, in step S13 or S23, in addition to the program execution state, the state of the shared resource related to each task is obtained.

そして、ステップS14またはS24では、求めたプログラム実行状態に含まれる個々のセクション(タスクの状態)を、それぞれ対応する1つ以上の共有資源の状態と組み合わせて複数の組を生成する。そして、生成した複数の組のうちリストLに含まれていない組数(生成した複数の組とリストLとのマッチ数としてもよい)を安定距離として得る。   In step S14 or S24, a plurality of sets are generated by combining each section (task state) included in the obtained program execution state with one or more corresponding shared resource states. Then, the number of sets that are not included in the list L (may be the number of matches between the plurality of generated sets and the list L) among the plurality of generated sets is obtained as the stable distance.

ステップS15またはS25では、選択されたタスクの(ti,rsi)が試験済みであること、安定距離が小さいことの優先順位で、高い安定タスク優先度を付与するものとする。   In step S15 or S25, it is assumed that a high stable task priority is given in the priority order that (ti, rsi) of the selected task has been tested and that the stable distance is small.

[16]観測不変条件(likely invariant)を用いた安定化
[12]〜[15]では、タスクの状態と、共有資源とを用いた安定化について説明したが、試験済みの共有資源を集約するのは、集約数が爆発的に多くなり、現実的でない場合が多い。そこで本例では、試験済みのタスク状態および共有資源状態の特徴をマクロ的に観測不変条件として取得し、取得した観測不変条件に基づき安定化を図る。
[16] Stabilization using observationally invariant [12] to [15] explained the stabilization using the task state and shared resources, but the tested shared resources are aggregated. Often, the number of aggregations increases explosively and is often not realistic. Therefore, in this example, the characteristics of the tested task state and shared resource state are acquired as observation invariant conditions in a macro manner, and stabilization is achieved based on the acquired observation invariant conditions.

ここで、観測不変条件(likely invariant)とは、あらかじめ用意されたテストケースに対して、(複数のタスクを含む)プログラムを実行したときのログ(プログラム実行状態の履歴)から抽出された不変条件(実行ログにおいて常に満たされている条件)である。たとえば、変数に対して成立する条件、または変数間に成立する条件などがあり、前者の例として、変数Xに関して、X=1, 0<X<100, X!=nullがある。なお、観測不変条件の検出にはマサチューセッツ工科大学のM. Ernstの研究グループが開発したDaikon(http://people.csail.mit.edu.mernst/pubs/daikon-tool-scp2007.pdf)、Agitor社のAgitator(http://www.agitar.com/)を用いることができる。   Here, the observation invariant (likely invariant) is the invariant extracted from the log (program execution state history) when a program (including multiple tasks) is executed for a test case prepared in advance. (Conditions that are always satisfied in the execution log). For example, there are conditions that hold for variables, conditions that hold between variables, and the former example includes X = 1, 0 <X <100, X! = Null for variable X. In addition, Daikon (http: //people.csail.mit.edu.mernst/pubs/daikon-tool-scp2007.pdf), Agitor developed by M. Ernst's research group at Massachusetts Institute of Technology Agitator (http://www.agitar.com/) can be used.

本例では、各タスクの状態(セクション)と、それぞれに関係する共有資源(たとえば変数あるいはオブジェクト)の状態との関係が、観測不変条件を満たすような、複数のタスクの状態と、複数の共有資源の状態との組み合わせを安定集合として定義する。   In this example, the state (section) of each task and the state of the shared resource (for example, variable or object) related to each state satisfy the observation invariant condition, and the multiple shared states The combination with the resource state is defined as a stable set.

安定集合の定義:
A={(ts,rs)|tsの各tiに対して(ti,rsi)が観測不変条件を満たす}
ここでts=(t1,t2,t3,…)、rs=(r1,r2,r3,…), rsi=(ri1, ri2, ri3,…)である。ti∈{t1,t2,t3…}はタスクの状態、rsi⊂rsは、状態tiに関係する共有資源の状態の集合(すなわち、rsiはrsの部分集合)、rik(=ri1,ri2,ri3,…)は、rsiに含まれる個々の共有資源の状態を示す。
Definition of stable set:
A = {(ts, rs) | (ti, rsi) satisfies the observation invariance condition for each ti of ts}
Here, ts = (t1, t2, t3,...), Rs = (r1, r2, r3,...), Rsi = (ri1, ri2, ri3,...). ti∈ {t1, t2, t3 ...} is the task state, rsi⊂rs is the set of shared resource states related to the state ti (ie, rsi is a subset of rs), rik (= ri1, ri2, ri3 , ...) indicates the state of each shared resource included in rsi.

安定距離の定義:
Δ(s,A)=(タスク数)−((ti,rsi)が観測不変条件を満たすタスク数)
実際の計算では、準備として、各tiにおける共有変数の観測不変条件を実行ログから計算しておきリストLに格納する。そして、リストLに基づき、(ti,rsi)が観測不変条件を満たすか否かを判定する。なお、安定集合は論理的な概念であり、実際のアルゴリズムでは、安定距離がゼロであれば安定集合に含まれるものとする。
Definition of stable distance:
Δ (s, A) = (number of tasks)-((ti, rsi) is the number of tasks that satisfy the observation invariant)
In actual calculation, as preparation, the observation invariant condition of the shared variable at each ti is calculated from the execution log and stored in the list L. Then, based on the list L, it is determined whether (ti, rsi) satisfies the observation invariant condition. The stable set is a logical concept, and in an actual algorithm, if the stable distance is zero, it is included in the stable set.

本例で定義した安定集合を用いたタスク選択処理の詳細は、図7または図9のフローチャートの処理と同様である。   Details of the task selection process using the stable set defined in this example are the same as those in the flowchart of FIG. 7 or FIG.

ただしステップS13またはS23では、プログラム実行状態の他に、個々のタスクの状態に関連する共有資源の状態を求める。   However, in step S13 or S23, the state of the shared resource related to the state of each task is obtained in addition to the program execution state.

そして、ステップS14またはS24では、求めたプログラム実行状態に含まれる個々のセクションを、それぞれ対応する共有資源の状態と組み合わせて複数の組を生成する。そして、生成した複数の組が観測不変条件を満たす数をタスク数から引いたものを安定距離として得る。   In step S14 or S24, a plurality of sets are generated by combining each section included in the obtained program execution state with the corresponding shared resource state. Then, the number obtained by subtracting the number of the generated plurality of sets satisfying the observation invariant from the number of tasks is obtained as the stable distance.

ステップS15またはS25では、選択されたタスクの(ti,rsi)が観測不変条件を満たすこと、安定距離が小さいことの優先順位で、高い安定タスク優先度を付与するものとする。   In step S15 or S25, it is assumed that a high stable task priority is given in the priority order that (ti, rsi) of the selected task satisfies the observation invariant condition and the stable distance is small.

以下、観測不変条件に基づくタスク選択処理の具体例を3つ説明する。   Hereinafter, three specific examples of task selection processing based on the observation invariant conditions will be described.

(例1) タスクが2つで、共有資源が変数である例を、図19を用いて説明する。   (Example 1) An example in which there are two tasks and a shared resource is a variable will be described with reference to FIG.

図19における2つのタスクは、Task1とTask2であり、共有資源は2つの共有変数X,Yである。観測不変条件(likely invariant)は、linvを用いて、以下のように2つ取得されているものとする。
linv(cp12,{X,Y})={Y!=null}:cp12に続くセクションでは、共有資源X,Yに関して、Yはヌルではない
linv(cp22,{X,Y})={X!=null}:cp22に続くセクションでは、共有資源X,Yに関して、Xはヌルではない
The two tasks in FIG. 19 are Task1 and Task2, and the shared resource is two shared variables X and Y. Two observation invariants (likely invariant) are acquired using linv as follows.
linv (cp12, {X, Y}) = {Y! = null}: In the section following cp12, Y is not null for shared resources X and Y
linv (cp22, {X, Y}) = {X! = null}: In the section following cp22, X is not null for shared resources X and Y

上記の場合、Task1とTask2とは、両方がcp12とcp12に進むまで、次のセクションには進まないように制御される。これによりnullの変数で演算を行うことに起因するバグを回避できる。   In the above case, Task1 and Task2 are controlled not to proceed to the next section until both proceed to cp12 and cp12. This avoids bugs caused by operations on null variables.

また、図19において、観測不変条件が
linv(cp12,{X,Y})={Y=1}:cp12に続くセクションでは、共有資源X,Yに関して、Yは1である
linv(cp22,{X,Y})={X!=null}:cp22に続くセクションでは、共有資源X,Yに関して、Xはヌルではない
であるとする。
In FIG. 19, the observation invariant condition is
linv (cp12, {X, Y}) = {Y = 1}: In the section following cp12, Y is 1 for shared resources X and Y
linv (cp22, {X, Y}) = {X! = null}: In the section following cp22, for shared resources X and Y, X is not null.

この場合、Task1とTask2とは、両方がcp12とcp12に進むまで、次のセクションには進まないように制御される。また、ここでは、満たしている条件が厳しい(制約が多い)タスクを優先するルールが用いるとすると、両タスクともcp12,cp22に位置するときは、Task1を先に処理するように制御される。すなわち{Y=1}の条件は、X!=nullよりも制約が厳しい。   In this case, Task1 and Task2 are controlled not to proceed to the next section until both proceed to cp12 and cp12. Also, here, if a rule that prioritizes a task that satisfies strict conditions (many restrictions) is used, when both tasks are located at cp12 and cp22, the task 1 is controlled to be processed first. That is, the condition of {Y = 1} is more restrictive than X! = Null.

(例2) タスクが2つで、共有資源がオブジェクトの場合の例を、図20を用いて説明する。   (Example 2) An example in which there are two tasks and the shared resource is an object will be described with reference to FIG.

図20における2つのタスクは、Task1とTask2であり、共有資源は2つのオブジェクトsignal1, signal2である。観測不変条件(likely invariant)は、linvを用いて、以下のように取得されているものとする。   The two tasks in FIG. 20 are Task1 and Task2, and the shared resources are two objects signal1 and signal2. It is assumed that the observation invariant (likely invariant) is obtained as follows using linv.

linv(cp13,{signal1,signal2})={signal1.status==green, signal2.status==red}:cp13に続くセクションでは、共有資源signal1,signal2に関して、signal1のstatusはgreenであり、signal2のstatusはredである。   linv (cp13, {signal1, signal2}) = {signal1.status == green, signal2.status == red}: In the section following cp13, for shared resources signal1 and signal2, the status of signal1 is green and signal2 status is red.

linv(cp23,{signal1,signal2})={signal1.status==red, signal2.status==green}:cp23に続くセクションでは、共有資源signal1,signal2に関して、signal1のstatusはredであり、signal2のstatusはgreenである。   linv (cp23, {signal1, signal2}) = {signal1.status == red, signal2.status == green}: In the section following cp23, for shared resources signal1 and signal2, the status of signal1 is red and signal2 status is green.

上記の制約に基づいてタイミング安定化を図ることにより、signal1とsignal2とが同時にgreenの状態で、Task1とTask2とが関数do1(),do2()を動かしてしまうバグを回避できる。すなわちdo1()とdo2()をそれぞれ同時に動かすことを禁止する暗黙の仕様があり、それが試験時の実行ログで満たされていた場合に、上記観測不変条件に基づくタスク選択を行うことで、この仕様を実現できる。   By trying to stabilize timing based on the above constraints, it is possible to avoid a bug in which Task1 and Task2 move the functions do1 () and do2 () while signal1 and signal2 are in the green state at the same time. In other words, there is an implicit specification that prohibits simultaneously running do1 () and do2 (), and when it is satisfied with the execution log at the time of testing, by performing task selection based on the above observation invariant condition, This specification can be realized.

(例3) タスクが3つで、共有資源がオブジェクトの場合の例を、図21を用いて説明する。   (Example 3) An example in which there are three tasks and the shared resource is an object will be described with reference to FIG.

図21における3つのタスクは、Taski(i=1,2,3)であり、共有資源は3つのオブジェクトsignali(i=1,2,3)である。観測不変条件(likely invariant)は、linvを用いて、以下のように取得されているものとする。   The three tasks in FIG. 21 are Taski (i = 1, 2, 3), and the shared resource is three objects signali (i = 1, 2, 3). It is assumed that the observation invariant (likely invariant) is obtained as follows using linv.

linv(cp13,{signal1,signal2})={signal1.status==green, signal2.status==red}:cp13に続くセクションでは、共有資源signal1,signal2に関して、signal1のstatusはgreenであり、signal2のstatusはredである。   linv (cp13, {signal1, signal2}) = {signal1.status == green, signal2.status == red}: In the section following cp13, for shared resources signal1 and signal2, the status of signal1 is green and signal2 status is red.

linv(cp23,{signal2,signal3})={signal2.status==green, signal3.status==red}:cp23に続くセクションでは、共有資源signal2,signal3に関して、signal2のstatusはgreenであり、signa3のstatusはredである。   linv (cp23, {signal2, signal3}) = {signal2.status == green, signal3.status == red}: In the section following cp23, for shared resource signal2, signal3, status of signal2 is green and signa3 status is red.

linv(cp33,{signal3,signal1})={signal3.status==green, signal1.status==red}:cp33に続くセクションでは、共有資源signal3,signal1に関して、signal3のstatusはgreenであり、signa11のstatusはredである。   linv (cp33, {signal3, signal1}) = {signal3.status == green, signal1.status == red}: In the section following cp33, for shared resources signal3 and signal1, the status of signal3 is green and signa11 status is red.

上記の制約に基づいてタイミング安定化を図ることにより、do1()とdo2()、do2()とdo3()、do3()とdo1()をそれぞれ同時に動かしてしまうバグを回避できる。すなわちdo1()とdo2()、do2()とdo3()、do3()とdo1()をそれぞれ同時に動かすことを禁止する暗黙の仕様があり、それが試験時の実行ログで満たされていた場合に、上記観測不変条件に基づくタスク選択を行うことで、この仕様を実現できる。   By trying to stabilize timing based on the above constraints, it is possible to avoid bugs that cause do1 () and do2 (), do2 () and do3 (), and do3 () and do1 () to move simultaneously. In other words, there is an implicit specification that prohibits the simultaneous movement of do1 () and do2 (), do2 () and do3 (), do3 () and do1 (), which were satisfied with the execution log at the time of testing In this case, this specification can be realized by performing task selection based on the observation invariant condition.

次に、先に説明した図14のシステムにおいて、観測不変条件に基づく安定集合を用いる場合における、安定集合の更新処理について説明する。   Next, the update process of the stable set when the stable set based on the observation invariant condition is used in the system described above with reference to FIG. 14 will be described.

遠隔監視装置30における監視部31が監視対象装置28のプログラムの実行状態を監視する。監視対象装置20の記憶部25には、出荷時の安定集合(観測不変条件に基づく安定集合)が格納されている。観測不変条件を求めた実行ログを格納しておくこともできる。   The monitoring unit 31 in the remote monitoring device 30 monitors the program execution state of the monitoring target device 28. The storage unit 25 of the monitoring target device 20 stores a stable set at the time of shipment (a stable set based on observation invariant conditions). It is also possible to store an execution log that determines the observation invariant conditions.

遠隔監視装置30における安定集合作成部32が、観測不変条件を満たしかつ不具合が発生しないときの、監視部31により逐次監視されるプログラム実行状態をトレース情報(実行ログ)として収集する。そして、プログラム安定集合作成部32で既存の観測不変条件と新しく蓄積された実行ログから観測不変条件を更新し、新しい安定集合を導く。ここで、既存の実行ログを活用することもできる。   The stable set creation unit 32 in the remote monitoring device 30 collects, as trace information (execution log), program execution states that are sequentially monitored by the monitoring unit 31 when the observation invariant condition is satisfied and no failure occurs. Then, the program stable set creation unit 32 updates the observation invariant condition from the existing observation invariant condition and the newly accumulated execution log, and derives a new stable set. Here, an existing execution log can also be used.

安定集合送信部33は、更新された安定集合を監視対象装置30に送り、監視対象装置30における更新部27が安定集合を差し替える。   The stable set transmission unit 33 sends the updated stable set to the monitoring target device 30, and the updating unit 27 in the monitoring target device 30 replaces the stable set.

監視対象装置28で不具合が発生した場合は、安定集合の逸脱履歴(安定集合から逸脱したときのプログラム実行状態)と、トレース情報を用いて、不具合の原因を特定してもよい。   When a failure occurs in the monitoring target device 28, the cause of the failure may be specified using the deviation history of the stable set (the program execution state when the departure from the stable set) and the trace information.

以上説明したように、本発明の実施の形態によれば、信頼性(機能安定性)および品質安定性の高いプログラムを開発・実行を支援する技術を提供でき、大規模なプログラムについても機能的および性能的な安定性の高いプログラムを効率的に開発できるので、プログラム開発における生産性が向上する。   As described above, according to the embodiment of the present invention, it is possible to provide a technology for supporting development and execution of a program having high reliability (functional stability) and high quality stability, and even a large-scale program can be functional. In addition, since a program with high performance stability can be efficiently developed, productivity in program development is improved.

本実施形態を実現するために用いるコンピュータシステムのハードウェア構成を示すブロック図。The block diagram which shows the hardware constitutions of the computer system used in order to implement | achieve this embodiment. マルチCPUシステムを示す図。The figure which shows a multi-CPU system. 本実施形態にかかるマルチタスク処理装置の機能ブロック図。The functional block diagram of the multitask processing apparatus concerning this embodiment. タスクをセクションとチェックポイントとによるフローとして表現した図。A diagram representing a task as a flow of sections and checkpoints. タスクの状態遷移図。Task state transition diagram. タスク優先度計算部の処理を説明する図。The figure explaining the process of a task priority calculation part. ノンプリエンプティブマルチタスクにおけるスケジューラの実行手順を説明するフローチャート。The flowchart explaining the execution procedure of the scheduler in non-preemptive multitasking. 図7の手順の具体例を説明するための3つのタスクの例を示す図。The figure which shows the example of three tasks for demonstrating the specific example of the procedure of FIG. プリエンプティブマルチタスクにおけるスケジューラの実行手順を説明するフローチャート。The flowchart explaining the execution procedure of the scheduler in preemptive multitasking. 安定距離の算出例を示す図。The figure which shows the example of calculation of stable distance. 実施例[5]の具体例を説明する図。The figure explaining the specific example of Example [5]. セクションごとのメモリ使用量と消費電力との例を示す図。The figure which shows the example of the memory usage and power consumption for every section. 複数CPU上のマルチタスクシステムの場合のタスク選択の例を示す図。The figure which shows the example of the task selection in the case of the multitask system on multiple CPU. マルチタスク処理装置とネットワークを介して接続された遠隔監視装置を示す図。The figure which shows the remote monitoring apparatus connected with the multitask processing apparatus via the network. 複数のマルチタスク処理装置とネットワークを介して接続された遠隔監視装置を示す図。The figure which shows the remote monitoring apparatus connected with the some multitask processing apparatus via the network. スケジューラの他の実行手順例を説明するフローチャート。The flowchart explaining the other example of an execution procedure of a scheduler. スケジューラのさらに他の実行手順例を説明するフローチャート。12 is a flowchart for explaining another example of the execution procedure of the scheduler. タスクの状態と、共有資源とを用いた安定化その1〜その4を説明する図。The figure explaining the 1st-the 4th using the state of a task, and a shared resource. 観測不変条件を用いた安定化の例1を説明する図。The figure explaining the example 1 of stabilization using an observation invariant condition. 観測不変条件を用いた安定化の例2を説明する図。The figure explaining the example 2 of stabilization using an observation invariant condition. 観測不変条件を用いた安定化の例3を説明する図。The figure explaining the example 3 of stabilization using an observation invariant condition.

符号の説明Explanation of symbols

21:タスク実行部
22:プログラム実行状態算出部(セクション算出部)
23:安定距離計算部
24:タスク優先度計算部(タスク選択部)
25:記憶部
26:通知部
27:更新部
28:監視対象装置
30:遠隔監視装置
31:監視部
32:安定集合作成部
33:安定集合送信部
21: Task execution unit 22: Program execution state calculation unit (section calculation unit)
23: Stable distance calculation unit 24: Task priority calculation unit (task selection unit)
25: storage unit 26: notification unit 27: update unit 28: monitoring target device 30: remote monitoring device 31: monitoring unit 32: stable set creation unit 33: stable set transmission unit

Claims (25)

各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理装置であって、
各前記タスク間でのセクションの組み合わせを1つ以上定めた安定集合を記憶する安定集合記憶部と、
前記タスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションと、前記タスクと異なる他のタスクの現在のセクションとの組をプログラム実行状態として求めるプログラム実行状態算出部と、
各前記プログラム実行状態と前記安定集合との距離を計算する距離計算部と、
各計算された距離に基づき、次に実行すべきタスクを選択し実行するタスク実行部と、
を備えたマルチタスク処理装置。
A multitask processing device for multitasking a plurality of tasks each divided into two or more sections,
A stable set storage unit that stores a stable set that defines one or more combinations of sections between the tasks;
For each task, a program execution state calculation unit that obtains, as a program execution state, a set of a section that starts execution when the task is executed next and a current section of another task different from the task;
A distance calculation unit for calculating a distance between each of the program execution states and the stable set;
A task execution unit that selects and executes a task to be executed next based on each calculated distance;
A multitask processing device.
前記距離計算部は、前記プログラム実行状態と同じセクションの組み合わせが前記安定集合に含まれる場合は第1の値を前記距離として計算し、含まれない場合は第2の値を前記距離として計算し、
前記タスク実行部は、前記第1の値をもつタスクの中から前記次に実行すべきタスクを優先的に選択する、
ことを特徴とする請求項1に記載のマルチタスク処理装置。
The distance calculation unit calculates a first value as the distance when the same combination of sections as the program execution state is included in the stable set, and calculates a second value as the distance when the combination is not included. ,
The task execution unit preferentially selects the task to be executed next from among the tasks having the first value;
The multitask processing device according to claim 1.
前記安定集合記憶部に含まれる各前記セクションの組み合わせは、所定の計算機資源にアクセスするタスクの総数が第1閾値以下になるセクションの組み合わせ、または、各タスクによるメモリ使用量の合計が第2閾値以下になるセクションの組み合わせであることを特徴とする請求項1または2に記載のマルチタスク処理装置。   The combination of sections included in the stable set storage unit is a combination of sections in which the total number of tasks accessing a predetermined computer resource is equal to or less than a first threshold, or the total memory usage by each task is a second threshold. The multitask processing apparatus according to claim 1, wherein the multitask processing apparatus is a combination of the following sections. 前記距離計算部は、前記プログラム実行状態と、前記安定集合記憶部に含まれる各前記セクションの組み合わせとの間で、セクションの不一致数をそれぞれ計算し、各計算された不一致数のうちの最小値を前記距離として得ることを特徴とする請求項1に記載のマルチタスク処理装置。   The distance calculation unit calculates the number of mismatches of sections between the program execution state and the combination of sections included in the stable set storage unit, and the minimum value of the calculated number of mismatches The multitask processing apparatus according to claim 1, wherein the distance is obtained as the distance. 前記距離計算部は、前記プログラム実行状態と、前記安定集合記憶部に含まれる各前記セクションの組み合わせとの間でセクションの一致数をそれぞれ計算し、各計算された一致数のうちの最大値を前記距離として得ることを特徴とする請求項1に記載のマルチタスク処理装置。   The distance calculation unit calculates the number of matching sections between the program execution state and each combination of sections included in the stable set storage unit, and calculates the maximum value among the calculated number of matchings. The multitask processing apparatus according to claim 1, wherein the multitask processing apparatus is obtained as the distance. 各セクションと、メモリ使用量とを対応づけた情報を保持するメモリ使用情報保持部をさらに備え、
前記安定集合記憶部に含まれる各前記セクションの組み合わせは、各タスクによるメモリ使用量の合計が第2閾値以下になるセクションの組み合わせであり、
前記距離計算部は、前記プログラム実行状態と同じセクションの組み合わせが前記安定集合に含まれる場合は第1の値を前記距離として計算し、含まれない場合は各セクションに対応するメモリ使用量の合計を前記距離として計算する、
ことを特徴とする請求項1に記載のマルチタスク処理装置。
A memory usage information holding unit for holding information in which each section is associated with a memory usage amount;
The combination of the sections included in the stable set storage unit is a combination of sections in which the total memory usage by each task is equal to or less than a second threshold value,
The distance calculation unit calculates a first value as the distance when the same combination of sections as the program execution state is included in the stable set, and when not included, the total of memory usage corresponding to each section As the distance,
The multitask processing device according to claim 1.
各セクションと、消費電力量とを対応づけた情報を保持する消費電力情報保持部をさらに備え、
前記タスク実行部は各々個別にタスクを実行する2つ以上の実行部を有し、
各前記セクションの組み合わせは、各前記実行部により実行されるタスクによる消費電力量の合計が第3閾値以下になるセクションの組み合わせであり、
前記プログラム実行状態算出部は、実行中のタスク以外の各タスクについて、前記実行中のタスクの現在のセクションと、空いている実行部に次に実行させるとしたときに実行が開始されるセクションとの組を前記プログラム実行状態として算出し、
前記距離計算部は、各前記プログラム実行状態について、前記プログラム実行状態と同じセクションの組み合わせが前記安定集合に含まれるときは第1の値を前記距離として計算し、含まれないときは第2の値を前記距離として計算する、
ことを特徴とする請求項1に記載のマルチタスク処理装置。
A power consumption information holding unit that holds information in which each section is associated with a power consumption amount;
The task execution unit has two or more execution units that individually execute tasks,
The combination of the sections is a combination of sections in which the total power consumption by the tasks executed by the execution units is equal to or less than a third threshold value.
The program execution state calculation unit includes, for each task other than the task being executed, a current section of the task that is being executed, a section that is to be executed when a free execution unit is next executed, Is calculated as the program execution state,
The distance calculation unit calculates, for each program execution state, a first value as the distance when the same combination of sections as the program execution state is included in the stable set, and a second value when the combination is not included Calculating the value as the distance,
The multitask processing device according to claim 1.
各セクションと、消費電力量とを対応づけた情報を保持する消費電力情報保持部をさらに備え、
前記タスク実行部は各々個別にタスクを実行する2つ以上の実行部を有し、
各前記セクションの組み合わせは、各前記実行部により実行されるタスクによる消費電力量の合計が第3閾値以下になるセクションの組み合わせであり、
前記プログラム実行状態算出部は、実行中のタスク以外の各タスクについて、前記実行中のタスクの現在のセクションと、空いている実行部に次に実行させるとしたときに実行が開始されるセクションとの組を前記プログラム実行状態として算出し、
前記距離計算部は、各前記プログラム実行状態について、前記プログラム実行状態と同じセクションの組み合わせが前記安定集合に含まれるときは第1の値を前記距離として計算し、含まれないときは前記プログラム実行状態に含まれる各セクションに対応する消費電力量の合計を前記距離として計算する、
ことを特徴とする請求項1に記載のマルチタスク処理装置。
A power consumption information holding unit that holds information in which each section is associated with a power consumption amount;
The task execution unit has two or more execution units that individually execute tasks,
The combination of the sections is a combination of sections in which the total power consumption by the tasks executed by the execution units is equal to or less than a third threshold value.
The program execution state calculation unit includes, for each task other than the task being executed, a current section of the task that is being executed, a section that is to be executed when a free execution unit is next executed, Is calculated as the program execution state,
The distance calculation unit calculates, for each program execution state, the first value as the distance when the same combination of sections as the program execution state is included in the stable set, and when not included, the program execution Calculating the total power consumption corresponding to each section included in the state as the distance;
The multitask processing device according to claim 1.
前記タスク実行部は、
前記プログラム実行状態と前記安定集合から計算された距離に基づき各タスクの第1優先度を決定し、
最も高い第1優先度をもつタスクが1つの場合は該タスクを前記次に実行すべきタスクとして選択し、
最も高い第1優先度をもつタスクが2つ以上ある場合は、前記最も高い第1優先度をもつタスクのうち、あらかじめ指定された優先度である第2優先度が最も高いタスクを選択し、
選択されたタスクが1つのときは該タスクを前記次に実行するべきタスクとして選択し、
選択されたタスクが2つ以上存在する場合は、選択されたタスクのうち最も早く実行待ち状態になったタスクを前記次に実行すべきタスクとして選択する、
ことを特徴とする請求項1に記載のマルチタスク処理装置。
The task execution unit
Determining a first priority of each task based on a distance calculated from the program execution state and the stable set;
If there is one task with the highest first priority, select the task as the task to be executed next,
When there are two or more tasks having the highest first priority, the task having the highest second priority, which is a priority specified in advance, is selected from the tasks having the highest first priority.
When the selected task is one, select the task as the task to be executed next,
If there are two or more selected tasks, the task that is in the waiting state for execution first among the selected tasks is selected as the task to be executed next.
The multitask processing device according to claim 1.
前記タスク実行部は、あらかじめ指定された優先度である第2優先度に基づき最も第2優先度の高いタスクを選択し、
選択されたタスクが1つの場合はこのタスクを前記次に実行すべきタスクとして選択し、
選択されたタスクが2つ以上の場合は、選択された前記2つ以上のタスクについて計算された前記距離に基づき、前記選択された2つ以上のタスクについてそれぞれ第1優先度を決定し、
最も高い第1優先度をもつタスクが1つのときは該タスクを前記次に実行するべきタスクとして選択し、
最も高い第1優先度をもつタスクが2つ以上存在するときは、前記最も高い第1優先度をもつタスクのうち最も早く実行可能待ち状態になったタスクを前記次に実行すべきタスクとして選択する、
ことを特徴とする請求項1に記載のマルチタスク処理装置。
The task execution unit selects a task having the highest second priority based on a second priority that is a priority specified in advance.
If there is one task selected, select this task as the next task to be executed,
If there are two or more selected tasks, a first priority is determined for each of the two or more selected tasks based on the distance calculated for the two or more selected tasks;
When there is one task having the highest first priority, the task is selected as the task to be executed next,
When there are two or more tasks having the highest first priority, the task having the highest waiting state among the tasks having the highest first priority is selected as the task to be executed next. To
The multitask processing device according to claim 1.
前記タスク実行部によるタスクの実行により所定の不具合が発生したか否かを検査し、前記タスクに対応するプログラム実行状態と、不具合の発生の有無を示す情報とを、あらかじめ指定された遠隔監視装置に通知する通知部と、
前記遠隔監視装置から更新された安定集合を表すデータを受信し、受信したデータにより前記安定集合記憶部内の安定集合を更新する更新部と、
をさらに備えたことを特徴とする請求項1に記載のマルチタスク処理装置。
A remote monitoring device that inspects whether or not a predetermined failure has occurred due to the execution of the task by the task execution unit, and that indicates a program execution state corresponding to the task and information indicating whether or not a failure has occurred in advance. A notification unit to notify
An update unit that receives data representing a stable set updated from the remote monitoring device, and updates the stable set in the stable set storage unit with the received data;
The multitask processing device according to claim 1, further comprising:
各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理装置であって、
N(Nは2以上の整数)個のセクションからなるセクション系列を1つ以上定めた安定集合を記憶する安定集合記憶部と、
前記タスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションを求めるセクション算出部と、
直前に実行されたN-1回の各セクションと前記セクション算出部により求められたセクションとからなるセクション系列と、前記安定集合との距離を前記タスク毎に計算する距離計算部と、
各計算された距離に基づき、次に実行すべきタスクを選択し実行するタスク実行部と、
を備えたマルチタスク処理装置。
A multitask processing device for multitasking a plurality of tasks each divided into two or more sections,
A stable set storage unit for storing a stable set in which one or more section series including N (N is an integer of 2 or more) sections are defined;
For each task, a section calculation unit for obtaining a section to be executed when the task is executed next,
A distance calculation unit that calculates the distance between the section series consisting of each N-1 times executed immediately before and the section obtained by the section calculation unit, and the stable set for each task;
A task execution unit that selects and executes a task to be executed next based on each calculated distance;
A multitask processing device.
各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理装置であって、
1つ以上のタスクと、セクションとの組を1つ以上定めた安定集合を記憶する安定集合記憶部と、
前記複数のタスクのうち実行可能状態にあるタスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションを求めるセクション算出部と、
前記実行可能状態にあるタスク集合を、前記実行可能状態にあるタスク毎に求められたセクションと組み合わせて得られる複数の組と、前記安定集合との距離を計算する距離計算部と、
各計算された距離に基づき、前記実行可能状態にあるタスクの中から次に実行すべきタスクを選択し実行するタスク実行部と、
を備えたマルチタスク処理装置。
A multitask processing device for multitasking a plurality of tasks each divided into two or more sections,
A stable set storage unit that stores a stable set in which one or more tasks and one or more sets of sections are defined;
For each task in an executable state among the plurality of tasks, a section calculation unit for obtaining a section to be executed when the task is executed next,
A distance calculation unit for calculating a distance between a plurality of sets obtained by combining the task set in the executable state with a section obtained for each task in the executable state, and the stable set;
A task execution unit that selects and executes a task to be executed next from among the tasks in the executable state based on each calculated distance;
A multitask processing device.
各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理装置であって、
各前記タスクに含まれるセクションの特徴を表すセクション特徴値を記憶する記憶部と、
前記タスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションと、前記タスクと異なる他のタスクの現在のセクションとの組をプログラム実行状態として求めるプログラム実行状態算出部と、
各前記プログラム実行状態に含まれるセクションのセクション特徴値に基づき、次に実行すべきタスクを選択し実行するタスク実行部と、
を備えたマルチタスク処理装置。
A multitask processing device for multitasking a plurality of tasks each divided into two or more sections,
A storage unit for storing a section feature value representing a feature of a section included in each of the tasks;
For each task, a program execution state calculation unit that obtains, as a program execution state, a set of a section that starts execution when the task is executed next and a current section of another task different from the task;
A task execution unit that selects and executes a task to be executed next based on a section feature value of a section included in each of the program execution states;
A multitask processing device.
前記セクション特徴値は、前記セクション特徴値に対応する前記セクションにおいて前記タスクが所定の計算機資源にアクセスするか否かを示し、
前記タスク実行部は、前記プログラム実行状態ごとに前記所定の計算機資源にアクセスするタスク数を計算し、前記タスク数が最も小さいプログラム実行状態に対応するタスクを選択する、
ことを特徴とする請求項14に記載のマルチタスク処理装置。
The section feature value indicates whether the task accesses a predetermined computer resource in the section corresponding to the section feature value;
The task execution unit calculates the number of tasks for accessing the predetermined computer resource for each program execution state, and selects a task corresponding to the program execution state with the smallest number of tasks.
The multitask processing apparatus according to claim 14, wherein:
前記セクション特徴値は、前記セクション特徴値に対応する前記セクションで消費されるメモリ使用量を示し、
前記タスク実行部は、前記プログラム実行状態ごとに各セクションのメモリ使用量の合計を計算し、前記メモリ使用量の合計が最小となるプログラム実行状態に対応するタスクを選択する、
ことを特徴とする請求項14に記載のマルチタスク処理装置。
The section feature value indicates a memory usage consumed in the section corresponding to the section feature value;
The task execution unit calculates the total memory usage of each section for each program execution state, and selects a task corresponding to the program execution state that minimizes the total memory usage.
The multitask processing apparatus according to claim 14, wherein:
前記タスク実行部は、各々個別にタスクを実行する2つ以上の実行部を有し、
前記セクション特徴値は、前記セクション特徴値に対応する前記セクションで消費される電力消費量を示し、
前記プログラム実行状態算出部は、実行中のタスク以外の各タスクについて、前記実行中のタスクの現在のセクションと、空いている実行部に次に実行させるとしたときに実行が開始されるセクションとの組を前記プログラム実行状態として算出し、
前記タスク実行部は、各前記プログラム実行状態に含まれるセクションの電力消費量の合計をそれぞれ計算し、前記電力消費量の合計が最小となるプログラム実行状態に対応するタスクを選択する、
ことを特徴とする請求項18に記載のマルチタスク処理装置。
The task execution unit includes two or more execution units that individually execute tasks,
The section feature value indicates a power consumption consumed in the section corresponding to the section feature value,
The program execution state calculation unit includes, for each task other than the task being executed, a current section of the task that is being executed, a section that is to be executed when a free execution unit is next executed, Is calculated as the program execution state,
The task execution unit calculates the total power consumption of sections included in each program execution state, and selects a task corresponding to the program execution state that minimizes the total power consumption.
The multitask processing device according to claim 18.
各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理装置であって、
各前記タスク間でのセクションの組と、1つ以上の共有資源の状態とのペアを1つ以上定めた安定集合を記憶する安定集合記憶部と、
前記タスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションと、前記タスクと異なる他のタスクの現在のセクションとの組をプログラム実行状態として求め、また前記プログラム実行状態毎に前記プログラム実行状態で用いられる共有資源の状態を特定する、プログラム実行状態算出部と、
各前記プログラム実行状態と、それぞれに対応して求められた共有資源の状態とのペアと前記安定集合との距離をそれぞれ計算する距離計算部と、
各計算された距離に基づき、次に実行すべきタスクを選択し実行するタスク実行部と、
を備えたことを特徴とするマルチタスク処理装置。
A multitask processing device for multitasking a plurality of tasks each divided into two or more sections,
A stable set storage unit that stores a stable set that defines one or more pairs of sections between each of the tasks and one or more shared resource states;
For each task, a set of a section to be executed when the task is next executed and a current section of another task different from the task is obtained as a program execution state, and for each program execution state A program execution state calculation unit for identifying a state of a shared resource used in the program execution state;
A distance calculation unit for calculating a distance between each of the program execution states and a pair of the state of the shared resource obtained corresponding to each of the program execution states and the stable set;
A task execution unit that selects and executes a task to be executed next based on each calculated distance;
A multitask processing apparatus comprising:
各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理装置であって、
前記タスク毎に、前記タスクの個々のセクションと、1つ以上の共有資源の状態との組を1つ以上定めた安定集合を記憶する安定集合記憶部と、
前記タスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションと、前記タスクと異なる他のタスクの現在のセクションとの組をプログラム実行状態として求め、
前記プログラム実行状態毎に前記複数のタスクで用いられる共有資源の状態を特定し、
前記プログラム実行状態に含まれるセクションのそれぞれを前記特定した共有資源の状態と組み合わせて、それぞれ1つの前記セクションと前記特定した共有資源の状態とを含む複数の組を生成する、プログラム実行状態算出部と、
生成した複数の組と前記安定集合とのマッチ数に基づいて、前記安定集合との距離を計算する距離計算部と、
前記タスク毎に計算された距離に基づき、次に実行すべきタスクを選択し実行するタスク実行部と、
を備えたことを特徴とするマルチタスク処理装置。
A multitask processing device for multitasking a plurality of tasks each divided into two or more sections,
For each task, a stable set storage unit that stores a stable set that defines one or more sets of individual sections of the task and one or more shared resource states;
For each task, a set of a section that starts execution when the task is executed next and a current section of another task different from the task is obtained as a program execution state,
Specifying the state of the shared resource used by the plurality of tasks for each program execution state;
A program execution state calculation unit that generates a plurality of sets each including one section and the specified shared resource state by combining each of the sections included in the program execution state with the specified shared resource state. When,
A distance calculation unit that calculates a distance to the stable set based on the number of matches between the plurality of generated sets and the stable set;
A task execution unit that selects and executes a task to be executed next based on the distance calculated for each task;
A multitask processing apparatus comprising:
各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理装置であって、
前記タスク毎に、前記タスクの個々のセクションと、1つの共有資源の状態との組を1つ以上定めた安定集合を記憶する安定集合記憶部と、
前記タスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションと、前記タスクと異なる他のタスクの現在のセクションとの組をプログラム実行状態として求め、
前記プログラム実行状態に含まれるセクション毎に前記セクションで用いられる共有資源の状態を特定し、
前記プログラム実行状態に含まれるセクション毎に、前記セクションを、前記特定した共有資源の状態のそれぞれと組み合わせて、それぞれ1つの前記セクションと1つの前記特定した共有資源とを含む複数の組を生成する、プログラム実行状態算出部と、
生成した複数の組と前記安定集合とのマッチ数に基づいて、前記安定集合との距離を計算する距離計算部と、
前記タスク毎に計算された距離に基づき、次に実行すべきタスクを選択し実行するタスク実行部と、
を備えたことを特徴とするマルチタスク処理装置。
A multitask processing device for multitasking a plurality of tasks each divided into two or more sections,
For each task, a stable set storage unit that stores a stable set that defines one or more sets of individual sections of the task and one shared resource state;
For each task, a set of a section that starts execution when the task is executed next and a current section of another task different from the task is obtained as a program execution state,
For each section included in the program execution state, specify the state of the shared resource used in the section,
For each section included in the program execution state, the section is combined with each of the specified shared resource states to generate a plurality of sets each including one section and one specified shared resource. A program execution state calculation unit;
A distance calculation unit that calculates a distance to the stable set based on the number of matches between the plurality of generated sets and the stable set;
A task execution unit that selects and executes a task to be executed next based on the distance calculated for each task;
A multitask processing apparatus comprising:
各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理装置であって、
前記タスク毎に、前記タスクの個々のセクションと、1つ以上の共有資源の状態との組を1つ以上定めた安定集合を記憶する安定集合記憶部と、
前記タスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションと、前記タスクと異なる他のタスクの現在のセクションとの組をプログラム実行状態として求め、
前記プログラム実行状態に含まれるセクション毎に前記セクションで用いられる共有資源の状態を特定し、
前記プログラム実行状態に含まれるセクション毎に、前記セクションを前記特定した共有資源の状態と組み合わせて、それぞれ1つの前記セクションと前記特定した共有資源の状態とを含む複数の組を生成する、プログラム実行状態算出部と、
生成した複数の組と前記安定集合とのマッチ数に基づいて、前記安定集合との距離を計算する距離計算部と、
前記タスク毎に計算された距離に基づき、次に実行すべきタスクを選択し実行するタスク実行部と、
を備えたことを特徴とするマルチタスク処理装置。
A multitask processing device for multitasking a plurality of tasks each divided into two or more sections,
For each task, a stable set storage unit that stores a stable set that defines one or more sets of individual sections of the task and one or more shared resource states;
For each task, a set of a section that starts execution when the task is executed next and a current section of another task different from the task is obtained as a program execution state,
For each section included in the program execution state, specify the state of the shared resource used in the section,
For each section included in the program execution state, the section is combined with the specified shared resource state to generate a plurality of sets each including one section and the specified shared resource state A state calculation unit;
A distance calculation unit that calculates a distance to the stable set based on the number of matches between the plurality of generated sets and the stable set;
A task execution unit that selects and executes a task to be executed next based on the distance calculated for each task;
A multitask processing apparatus comprising:
前記安定集合記憶部に記憶された安定集合は、試験済のセクションと共有資源の組の集合であることを特徴とする請求項18ないし21のいずれか一項に記載のマルチタスク処理装置。   The multitask processing apparatus according to any one of claims 18 to 21, wherein the stable set stored in the stable set storage unit is a set of a set of a tested section and a shared resource. 前記安定集合記憶部に記憶された安定集合は、テストケースに対して前記複数のタスクを実行することにより観測された、セクションと共有資源とに関する観測不変条件を満たすものであることを特徴とする請求項21に記載のマルチタスク処理装置。   The stable set stored in the stable set storage unit satisfies an observation invariant condition regarding a section and a shared resource, which is observed by executing the plurality of tasks on a test case. The multitask processing device according to claim 21. 各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理方法であって、
前記タスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションと、前記タスクと異なる他のタスクの現在のセクションとの組をプログラム実行状態として求め、
各前記プログラム実行状態と、各タスク間でのセクションの組み合わせを1つ以上定めた安定集合との距離をそれぞれ計算し、
各計算された距離に基づき、次に実行すべきタスクを選択し実行する、
ことを特徴とするマルチタスク処理方法。
A multitask processing method for multitasking a plurality of tasks each divided into two or more sections,
For each task, a set of a section that starts execution when the task is executed next and a current section of another task different from the task is obtained as a program execution state,
Calculating the distance between each program execution state and a stable set that defines one or more combinations of sections between tasks;
Based on each calculated distance, select and execute the next task to execute,
A multitask processing method characterized by the above.
各々2つ以上のセクションに分割された複数のタスクをマルチタスク処理するマルチタスク処理方法であって、
前記タスク毎に、前記タスクを次に実行するとしたときに実行が開始されるセクションと、前記タスクと異なる他のタスクの現在のセクションとの組をプログラム実行状態として求め、
各前記プログラム実行状態に含まれるセクションの特徴を表すセクション特徴値に基づき、次に実行すべきタスクを選択し実行する、
ことを特徴とするマルチタスク処理方法。
A multitask processing method for multitasking a plurality of tasks each divided into two or more sections,
For each task, a set of a section that starts execution when the task is executed next and a current section of another task different from the task is obtained as a program execution state,
Selecting and executing a task to be executed next based on a section feature value representing a feature of a section included in each of the program execution states;
A multitask processing method characterized by the above.
JP2008050848A 2007-03-27 2008-02-29 Multitask processing apparatus and method Expired - Fee Related JP4997144B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008050848A JP4997144B2 (en) 2007-03-27 2008-02-29 Multitask processing apparatus and method
US12/055,860 US20080244592A1 (en) 2007-03-27 2008-03-26 Multitask processing device and method

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2007081241 2007-03-27
JP2007081241 2007-03-27
JP2008050848A JP4997144B2 (en) 2007-03-27 2008-02-29 Multitask processing apparatus and method

Publications (2)

Publication Number Publication Date
JP2008269579A true JP2008269579A (en) 2008-11-06
JP4997144B2 JP4997144B2 (en) 2012-08-08

Family

ID=40048931

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008050848A Expired - Fee Related JP4997144B2 (en) 2007-03-27 2008-02-29 Multitask processing apparatus and method

Country Status (1)

Country Link
JP (1) JP4997144B2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012001776A1 (en) * 2010-06-29 2012-01-05 富士通株式会社 Multicore system, method of scheduling and scheduling program
JP2017215738A (en) * 2016-05-31 2017-12-07 株式会社日立超エル・エス・アイ・システムズ Computer system and control method of computer system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03240137A (en) * 1990-02-17 1991-10-25 Nippon Telegr & Teleph Corp <Ntt> Reproducing method for execution of parallel program
JPH09114693A (en) * 1995-10-13 1997-05-02 Toshiba Corp Program development supporting device and program execution device
JP2001134466A (en) * 1999-11-08 2001-05-18 Fujitsu Ltd Debug device and debug method and program recording medium

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03240137A (en) * 1990-02-17 1991-10-25 Nippon Telegr & Teleph Corp <Ntt> Reproducing method for execution of parallel program
JPH09114693A (en) * 1995-10-13 1997-05-02 Toshiba Corp Program development supporting device and program execution device
JP2001134466A (en) * 1999-11-08 2001-05-18 Fujitsu Ltd Debug device and debug method and program recording medium

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012001776A1 (en) * 2010-06-29 2012-01-05 富士通株式会社 Multicore system, method of scheduling and scheduling program
JP5585651B2 (en) * 2010-06-29 2014-09-10 富士通株式会社 Multi-core system, scheduling method and scheduling program
JP2017215738A (en) * 2016-05-31 2017-12-07 株式会社日立超エル・エス・アイ・システムズ Computer system and control method of computer system

Also Published As

Publication number Publication date
JP4997144B2 (en) 2012-08-08

Similar Documents

Publication Publication Date Title
Huang et al. ShuffleDog: characterizing and adapting user-perceived latency of android apps
Nasri et al. Response-time analysis of limited-preemptive parallel DAG tasks under global scheduling
CN102609296B (en) Virtual machine branching and parallel execution
US8392930B2 (en) Resource contention log navigation with thread view and resource view pivoting via user selections
Tan et al. Visual, log-based causal tracing for performance debugging of mapreduce systems
US8813035B2 (en) Paradigm for concurrency testcase generation
US20090193298A1 (en) System and method of fault detection, diagnosis and prevention for complex computing systems
US9152389B2 (en) Trace generating unit, system, and program of the same
US20080244592A1 (en) Multitask processing device and method
US20110016452A1 (en) Method and system for identifying regression test cases for a software
Guo et al. Fault tolerant MapReduce-MPI for HPC clusters
Tang et al. Generating test cases to expose concurrency bugs in android applications
Jayaram et al. FfDL: A flexible multi-tenant deep learning platform
WO2015027403A1 (en) Testing multi-threaded applications
Wozniak et al. MPI jobs within MPI jobs: A practical way of enabling task-level fault-tolerance in HPC workflows
JP4997144B2 (en) Multitask processing apparatus and method
Schumacher et al. SCandal: SystemC analysis for nondeterminism anomalies
Orton et al. Refactoring traces to identify concurrency improvements
Cordeiro et al. Shaker: a tool for detecting more flaky tests faster
Long et al. Mutation-based exploration of a method for verifying concurrent Java components
Ehlers Self-adaptive performance monitoring for component-based software systems
Aradhya et al. Multicore embedded worst-case task design issues and analysis using machine learning logic
Herold et al. Optimizing one-sided communication of parallel applications using critical path methods
Jia et al. Architecturing dynamic data race detection as a Cloud-based Service
Klusáček et al. The importance of complete data sets for job scheduling simulations

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101021

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120131

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120330

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120514

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

Free format text: PAYMENT UNTIL: 20150518

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20150518

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees