JP3658420B2 - 分散処理システム - Google Patents
分散処理システム Download PDFInfo
- Publication number
- JP3658420B2 JP3658420B2 JP07561094A JP7561094A JP3658420B2 JP 3658420 B2 JP3658420 B2 JP 3658420B2 JP 07561094 A JP07561094 A JP 07561094A JP 7561094 A JP7561094 A JP 7561094A JP 3658420 B2 JP3658420 B2 JP 3658420B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- processing
- computer
- priority
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
- G06F9/4862—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
Description
【産業上の利用分野】
本発明は、複数の計算機がネットワークに接続され、複数のプログラムを協調して実行する分散処理システムに関連し、特に、優先順位を用いてリアルタイム性を実現する分散処理システムの構成および方式に関する。
【0002】
【従来の技術】
単一計算機(マルチプロセッサ型計算機を含む)からのみ構成される計算機システムにおいて、リアルタイム性を保証する場合、従来から、優先順位を用いて順序制御を行う方法がある。このような優先順位制御の一例として、プレンティス・ホール社(Prentice-Hall, Inc.)刊行のA.S.タンネンバウム著「オペレーティングシステムズ・デザイン・アンド・インプリメンテーション」,1987年,82〜84頁(A.S.Tanenbaum:Operating Systems - Design and Implementation, 1987, pp.82−84)がある。
【0003】
さらに、例えば、特開平2−113362 号公報に記載されている方式は、分散処理システムの各処理ノード間でメッセージ通信を行う際に、該メッセージに優先度を付随させ、優先度の高いメッセージから順に処理を行うものである(以降、この方式を従来技術1と呼ぶ)。
【0004】
また、別の従来の方式として、例えば、特開平5−35701号公報に記載されている方式がある。この方式は、複数の処理装置を有した分散処理システムで処理要求を行う際に、処理待ち許容時間を指定し、各処理装置での予定処理待ち時間を調べ、予定処理待ち時間が処理待ち許容時間より短い処理装置に該処理要求を割り当てるものがある。処理待ち許容時間を満たす処理装置がなければ、最も短い予定処理待ち時間となる処理装置に該処理要求を割り当てる。各処理装置に割り当てられた処理要求は基本的に古いものから順に処理される(以降、この方式を従来技術2と呼ぶ)。
【0005】
またさらに、例えば、特開平5−35701号公報に記載されるように、処理要求発行の際に、処理待ち許容時間と同時に前記従来技術1と同様の優先順位も付加し、処理要求の割当て後に、割り当てられた処理装置で該優先順位の順に処理を実行させる方法(以降、これを従来技術3と呼ぶ)もある。
【0006】
【発明が解決しようとする課題】
複数の計算機が各々個別のオペレーティングシステムによって管理される分散処理システムにおいては、各々の計算機で個別にプログラムの優先順位が管理される。このため、分散処理システム全体に渡る優先順位の統一的な管理を行えず、性能,負荷の異なる計算機を有する分散処理システムにおいては、ある計算機の優先順位が意味する緊急性と別の計算機の優先順位が表わす緊急性とが異なる場合がある。例えば、性能の高い計算機と性能の低い計算機とでは、同じ優先順位0であっても、高性能計算機で実行した方が速く終了する。同様に、負荷の重い計算機と負荷の軽い計算機との間でも、優先順位の示す意味が異なってくる。また、複数の異なった種類の計算機を有する分散処理システムでは、各々の計算機の優先順位体系自体が異なる場合がある。例えば、優先順位の範囲が0〜255である計算機と優先順位の範囲が0〜127である計算機とは、優先順位の値に互換性がない。同様に、優先順位0を最高優先順位と見なす計算機と優先順位
255を最高優先順位と見なす計算機との間で、同一の優先順位を使用することはできない。
【0007】
前記従来技術1は、このような分散処理システムにおける個々の計算機の性能,負荷および機種の違いを考慮せず、単に優先度を付随してメッセージを送信する方法である。このため、メッセージ送信先計算機の性能が低い、若しくは、負荷が重いような条件では、望ましい速さで処理を実行して貰えない可能性があり、リアルタイム性を保証できないことがある。
【0008】
さらに、前記従来技術1では、複数の計算機で処理が行われる際に、優先順位の低い処理依頼が優先順位の高い処理依頼よりも速く完了するという逆転現象が起こり得る。例えば、処理Aを優先度5で計算機Aに依頼し、処理Bを優先度1で計算機Bに依頼するとする(優先度の値が小さい方が高い優先順位を表わすものとする)。このとき、本来ならば、処理Bが処理Aより速く完了していなければならないが、計算機Bの性能が計算機Aに比べて低い、または、計算機Bの負荷が重い場合には、優先順位の低い処理Aが優先順位の高い処理Bよりも速く完了してしまう可能性がある。
【0009】
さらにまた、前記従来技術1では、一つの計算機に処理が集中すること、特に、一つの計算機に優先度の高い処理が集中することを考慮していないため、これらの優先度の高い処理が集中した計算機では、リアルタイム性保証がさらに困難となるという課題がある。
【0010】
前記従来技術2は、各処理装置での予定処理待ち時間を正確に計算できれば、個々の処理要求に関してはある程度のリアルタイム性保証に使用することが可能である。しかし、この方式では、既に各処理装置にある程度の数の処理要求が割り当てられている場合に、新たに発生した処理待ち許容時間の短い処理要求の時間制約条件を満たせないことがある。例えば、処理待ち許容時間の長い処理要求が既に処理装置に割り当てられており、かつ、これらに先んじて新たに発生した処理要求を処理することができれば全ての処理要求の時間制約条件を満たすことができる場合にも、順に処理要求を割り当てていくため、新たに発生した処理要求の時間制約条件を満たせないことがある。すなわち、負荷がある程度高い状況で発生した緊急性の高い処理要求を直ちに処理することができず、厳密なリアルタイム性を保証することができないという問題点がある。
【0011】
さらにまた、前記従来技術3は、(1)各処理装置への処理要求割り当ては、処理待ち許容時間を充足する処理装置を選択し、(2)各処理装置での処理要求の実行順序は指定した優先順位の示す順に実行する、という方式である。従来技術3によれば、新たに発生した処理待ち許容時間の短い処理要求に対して、高い優先順位を設定することにより、上記従来技術2の欠点をある程度解決することができる。しかし、この方式では、新たに割り当てられた高い優先順位の処理要求を優先して処理するため、既に処理待ち許容時間を満たすと判断されて、割り当てられている低い優先順位を有する処理要求の処理待ち許容時間が満たされなくなることがあるという課題がある。例えば、処理待ち許容時間1分,優先順位5の処理要求Aが、処理待ち許容時間を満たすことができると判断されて、処理装置Aに割り付けられている状況で、新たに、処理待ち許容時間30秒,優先順位1の処理要求Bが処理装置Aに割り付けられたとする。このとき、新たな処理要求Bが先に処理されることになる。これによって、既に割り付けられ、処理待ち許容時間を満たすことが保証されていた筈の処理要求Aがこの時間制約条件を満たせないことが起こり得る。
【0012】
さらに、前記従来技術3では、従来技術1と同様に、同一処理待ち許容時間で優先順位の異なる処理要求を複数の処理装置に割り当てた場合、該処理装置の負荷,性能の違いによって、優先順位の低い処理依頼が優先順位の高い処理依頼よりも速く完了するという逆転現象が起こり得るという課題がある。
【0013】
本発明の目的は、これら上記のリアルタイム性保証に関する課題を解決し、分散処理システムにおける、より厳密なリアルタイム性を実現することである。特に、性能,負荷および機種の異なる計算機を含み得る分散処理システムにおいて、各々の計算機の優先順位を統一的に管理することによって、さらに厳密なリアルタイム性を実現することである。
【0014】
【課題を解決するための手段】
本発明では、分散処理システムの個々の計算機の優先順位を統一的に管理する概念として、次の二つの概念のうち、いずれか一方を用いる。
【0015】
・処理の緊急度:処理をどの程度の迅速さで完了させたいかを示すシステム全体で共通の相対値
・処理の時間制約:処理をどの程度の時間で完了させたいかを示す絶対値
これら各々の概念を用いて分散処理システムの個々の計算機の優先順位を統一的に管理するため手段を、以下、処理の緊急度を使用する場合と処理の時間制約を使用する場合とに分けて説明する。
【0016】
(A)処理の緊急度を用いて管理するための手段
本発明では、上記目的を達成するために、各計算機の性能,負荷の少なくとも一方と、プログラムが実行する処理の緊急度とを考慮して、プログラムの実行に適した優先順位を決定する優先順位決定手段を設けることを特徴とする。
【0017】
具体的には、該優先順位決定手段はその構成要素として以下の五つの手段を有し、これらの手段が協調して動作することにより、処理の緊急度を使用して、上記目的を達成する分散処理システム管理を行うことができる。なお、下記五つの全ての手段を同時に設ける必要はない。
【0018】
(1)計算機の性能と負荷に応じて、処理の緊急度と優先順位との変換を行う優先順位変換手段
(2)優先順位変換手段の示す優先順位にしたがって、処理を実行するプログラムの優先順位を変更する優先順位変更手段
(3)各計算機の性能,負荷の少なくとも一方と、プログラムが実行する処理の緊急度とを考慮して、プログラムの実行に適した計算機を決定する計算機選択手段
(4)複数の同一処理を行うプログラムが存在し、かつ、該プログラムに処理を依頼する際に、各計算機の性能,負荷の少なくとも一方と、処理の緊急度とを考慮して、該複数の同一処理を行うプログラムの中から最適な優先順位を有するプログラムを決定するプログラム選択手段
(5)プログラム選択手段が示すプログラムに対して新たに依頼された処理を転送する処理転送手段
(B)処理の時間制約を用いて管理するための手段
本発明では、上記目的を達成するために、各計算機の性能,負荷の少なくとも一方と、プログラムが実行する処理の時間制約,処理量とを考慮して、プログラムの実行に適した優先順位を決定する優先順位決定手段を設けることを特徴とする。
【0019】
具体的には、該優先順位決定手段はその構成要素として以下の八つの手段を有し、これらの手段が協調して動作することにより、処理の時間制約を使用して、上記目的を達成する分散処理システム管理を行うことができる。なお、下記八つの全ての手段を同時に設ける必要はない。
【0020】
(1)計算機の性能と負荷に応じて、処理の時間制約,処理量と優先順位との変換を行う優先順位変換手段
(2)優先順位変換手段の示す優先順位にしたがって、処理を実行するプログラムの優先順位を変更する優先順位変更手段
(3)他計算機との通信時間を予測する通信時間予測手段
(4)各計算機の性能,負荷の少なくとも一方と、プログラムが実行する処理の時間制約,処理量とを考慮して、プログラムの実行に適した計算機を決定する計算機選択手段
(5)複数の同一処理を行うプログラムが存在し、かつ、該プログラムに処理を依頼する際に、各計算機の性能,負荷の少なくとも一方と、処理の時間制約,処理量とを考慮して、該複数の同一処理を行うプログラムの中から最適な優先順位を有するプログラムを決定するプログラム選択手段
(6)プログラム選択手段が示すプログラムに対して新たに依頼された処理を転送する処理転送手段
(7)計算機の性能,負荷,処理量に応じて、該プログラムが実行中の処理の処理時間を予測する処理時間予測手段
(8)処理時間予測手段が示す予測処理時間が該処理に要求される時間制約を満足しない際に、該処理が要求された時点からの経過時間と該要求される時間制約から新たに時間制約を設定する時間制約設定手段
【0021】
【作用】
前記課題を解決するための手段が有する作用について、処理の緊急度を使用する場合と処理の時間制約を使用する場合とに分けて説明する。
【0022】
(A)処理の緊急度を用いて管理する場合
優先順位決定手段は、各計算機の性能,負荷の少なくとも一方と、プログラムが実行する処理の緊急度とを考慮して、プログラムの実行に適した優先順位を決定する。これにより、同一緊急度を有した処理を複数の計算機で実行する場合に、高性能計算機では低い優先順位を、低性能計算機では高い優先順位を与え、各計算機の性能の違いにかかわらず、同程度の迅速さで処理を完了させることができる。同様に、高負荷計算機では高い優先順位を、低負荷計算機では低い優先順位を与え、各計算機の負荷の違いにかかわらず、同程度の迅速さで処理を完了させることができる。また、各計算機の性能と負荷を考慮して、処理の緊急度から個々の計算機での優先順位を決定するため、低い緊急度の処理が高い緊急度の処理に先んじて完了するという逆転現象を避けることも可能となる。すなわち、従来技術に比べて、より厳密なリアルタイム性を保証することが可能となる。優先順位決定手段の構成要素である五つの手段は以下の作用を有する。
【0023】
優先順位変換手段は、処理の緊急度と優先順位との対応を示す優先順位対応表を有し、該優先順位対応表を用いることにより、処理の緊急度と優先順位との変換を行う。優先順位対応表の内容は計算機の性能,負荷および機種に応じて変更させる。
【0024】
優先順位変更手段は、優先順位変換手段によって示された優先順位にしたがって、プログラムの優先順位を変更させる。優先順位変換手段と優先順位変更手段によって、同一緊急度を有する処理が性能,負荷の異なるいずれの計算機においても同程度の迅速さで実行されることを保証できるようになる。
【0025】
計算機選択手段は、計算機性能情報と計算機負荷情報とからなる計算機情報を参照し、指定された処理の緊急度の負荷が均等に分散されるように計算機を選択し、プログラムを実行させる。計算機性能情報は各計算機の性能を示したテーブル,計算機負荷情報は各計算機の負荷を処理の緊急度毎に示したテーブルであり、計算機上の負荷が変化した場合、該変化量を計算機負荷情報に反映させる。これにより、緊急度の高い処理が一つの計算機に集中するといった現象がなくなり、各計算機におけるリアルタイム性保証をより厳密に行うことが可能となる。
【0026】
プログラム選択手段は、同一処理を行うプログラムの情報を纏めたプログラム位置データベースを用い、複数の同一処理を行うプログラムの中から、指定された処理の緊急度に一致するプログラムを選択し、該プログラムに処理を依頼させる。プログラム位置データベースは、同一処理を行うプログラムについて、その優先順位または緊急度と、プログラムが動作する計算機とを記憶する。これにより、前記優先順位変更手段が存在しない場合でも、複数の緊急度の異なるプログラムを用意して、これらのうちから最も適した緊急度のプログラムに対して処理を依頼し、望ましい迅速さで処理を実行させることが可能となる。
【0027】
処理転送手段は、プログラムが処理を実行中に新たに処理を依頼された際に、プログラム選択手段に別の同一処理を行うプログラムの位置を尋ね、その結果指定されたプログラムに対して処理依頼を転送する。これによって、処理実行中のプログラムに新たに依頼された処理を、該プログラムの処理が終了するまで待たせることなく、別の同程度の迅速さで処理できる(同一緊急度の)プログラムで実行させることが可能となり、より厳密なリアルタイム性保証を実現することができる。
【0028】
(B)処理の時間制約を用いて管理する場合
優先順位決定手段は、各計算機の性能,負荷の少なくとも一方と、プログラムが実行する処理の時間制約,処理量とを考慮して、プログラムの実行に適した優先順位を決定する。これにより、各計算機の性能と負荷に応じて、処理の時間制約,処理量を個々の計算機の優先順位に変換して実行させ、新たに発生した時間制約の短い処理を、既に割り付けられている時間制約の長い処理に先んじて実行させるといったことが可能となる。また、処理の時間制約は計算機性能と負荷に応じて、計算機の優先順位に変換できるため、既に計算機に割り付けられている処理の時間制約が近付いている場合に、処理の時間制約を短くして再びより高い優先順位を決定し、新たに発生した処理が、既に割り付けられている処理の実行を妨げないようにすることもできる。すなわち、従来技術に比べて、より厳密なリアルタイム性を保証することが可能となる。優先順位決定手段の構成要素である八つの手段は以下の作用を有する。
【0029】
優先順位変換手段は、単位処理量当たりの時間制約と優先順位との対応を示す優先順位対応表を有し、該優先順位対応表を用いることにより、処理の時間制約,処理量と優先順位との変換を行う。優先順位対応表の内容は計算機の性能,負荷および機種に応じて変更させる。
【0030】
優先順位変更手段は、優先順位変換手段によって示された優先順位にしたがって、プログラムの優先順位を変更させる。優先順位変換手段と優先順位変更手段によって、処理を時間制約に対応した各計算機の優先順位で実行させ、時間制約の短い処理を他のより時間制約の緩い処理の前に実行させるといったことが可能となり、分散処理システムにおける各処理のリアルタイム性をより厳密に保証することができる。また、時間制約の長い処理であっても、他処理を優先的に処理させている間に、処理が行われないまま該時間制約が近付いてくることがあり、この際には、短くなった時間制約に応じて優先順位をより高く再設定し、この優先順位で処理を実行させることが可能となる。
【0031】
通信時間予測手段は、個々の計算機間の通信時間を保持する通信時間表を有し、要求に応じて、各計算機との通信に要する時間を通知する。これにより、計算機間の通信時間が無視できない場合に、処理の時間制約をより厳密に設定することが可能となる。
【0032】
計算機選択手段は、計算機性能情報と計算機負荷情報とからなる計算機情報を参照し、指定された単位処理量当たりの時間制約の負荷が均等に分散されるように計算機を選択し、プログラムを実行させる。計算機性能情報は各計算機の性能を示したテーブル,計算機負荷情報は各計算機の負荷を単位処理量当たりの時間制約毎に示したテーブルであり、計算機上の負荷が変化した場合、該変化量を計算機負荷情報に反映させる。これにより、処理の時間制約の短い処理が一つの計算機に集中するといった現象がなくなり、各計算機におけるリアルタイム性保証をより厳密に行うことが可能となる。
【0033】
プログラム選択手段は、同一処理を行うプログラムの情報を纏めたプログラム位置データベースを用い、複数の同一処理を行うプログラムの中から、指定された単位処理量当たりの時間制約に一致するプログラムを選択し、該プログラムに処理を依頼させる。プログラム位置データベースは、同一処理を行うプログラムについて、その優先順位,時間制約のいずれか一つと、プログラムが動作する計算機とを記憶する。これにより、前記優先順位変更手段が存在しない場合でも、複数の時間制約の異なるプログラムを用意して、これらのうちから最も適した時間制約のプログラムに対して処理を依頼し、望ましい迅速さで処理を実行させることが可能となる。
【0034】
処理転送手段は、プログラムが処理を実行中に新たに処理を依頼された際に、プログラム選択手段に別の同一処理を行うプログラムの位置を尋ね、その結果指定されたプログラムに対して処理依頼を転送する。これによって、処理実行中のプログラムに新たに依頼された処理を、該プログラムの処理が終了するまで待たせることなく、別の同程度の時間制約を有するプログラムで実行させることが可能となり、より厳密なリアルタイム性保証を実現することができる。
【0035】
処理時間予測手段は、プログラムが実行しなければならない残り処理量と該プログラムの単位処理量当たりの時間制約とから、処理完了までの時間を計算する。
【0036】
時間制約設定手段は、処理依頼時に指定された処理の時間制約と処理実行の経過時間とから、新たな処理の時間制約を決定する。処理時間予測手段と時間制約設定手段によって、プログラムが現在の優先順位で実行される場合に処理の時間制約を満たすか否かを判定し、時間制約を満たせないと判定される場合には、より短い時間制約を設定できる。新たに設定した時間制約を用いて、前記優先順位変換手段と優先順位変更手段がより高い優先順位をプログラムに与えることや、該新しい時間制約を満たし得る別の同一プログラムに処理を転送,実行させることができ、結果的に最初に与えられた時間制約を満たすように管理することが可能となる。
【0037】
【実施例】
本発明の実施例を図面を用いて説明する。まず、緊急度を用いた一連の実施例を示し、その後、時間制約を用いた実施例を記述する。
【0038】
(A)処理の緊急度を用いる場合
図1に本発明の第一の実施例である分散処理システムの構成を示す。複数の計算機がネットワークに接続され、各計算機上のプログラムが互いに協調して動作する。100〜103は計算機である。図中では4台の計算機が接続されたシステム構成を示すが、これ以上若しくはこれ以下の計算機数でシステムを構成することは可能である。110は通信バス,光ファイバ,クロスバ結合網等のネットワークである。各計算機上のプログラムはネットワーク110を介して互いに通信を行う。計算機100および101のみ、計算機内部の詳細を示した。各計算機は中央処理装置120,主記憶装置121,入出力制御装置122等から構成され、内部バス125を用いてデータの授受を行う。個々の計算機では、中央処理装置120等の性能が異なることがある。入出力制御装置122はそれぞれ、通常、ディスク等の外部記憶装置123,端末124と接続され、外部とのデータの授受を行う。主記憶装置121上にはユーザプログラム130〜136,プライオリティキュー140〜141,スケジューラ142〜143,優先順位変換手続き手段144〜145,優先順位変更手続き手段146〜147が存在して、中央処理装置120によって処理される。一般には、個々の計算機にオペレーティングシステムが存在して、計算機上の各プログラムの実行状況を管理する。プライオリティキュー,スケジューラはオペレーティングシステムの一部であることが多い。図1ではオペレーティングシステムの記述を省略した。ユーザプログラム130〜136は、単独で若しくは互いに協調して処理を実行する。ユーザプログラムの数,各計算機への配置方法は任意である。
【0039】
図1に示すようなマルチプロセッサ型計算機システムや分散処理システムにおいて複数のプログラムが協調して動作する場合には、各計算機上のユーザプログラムは、通常、オペレーティングシステムの待ち行列等によって順序管理が行われるが、ユーザプログラム間で処理の緊急性が異なることがある。このため、それぞれのプログラムに優先順位を与え、該優先順位ごとに待ち行列を構成して実行順序を管理する。プライオリティキュー140〜141が各計算機での優先順位ごとの待ち行列を構成している。図1に示す実施例では、計算機100が0〜255の範囲の優先順位を、計算機101が0〜127の範囲の優先順位を所有していると仮定している。該優先順位それぞれに対して待ち行列が構成され、これを用いてスケジューラ142〜143が次に実行すべきプログラムを決定する。プライオリティキューの構成要素はプログラム構造体であり(プログラム構造体の一例が160〜166である)、それぞれ、ユーザプログラムの情報を所有する。主記憶装置121上に存在するユーザプログラム130〜136以外に、プログラムD,E,F等のプログラム構造体がプライオリティキューに存在するが、これらは、主記憶装置121上に配置されているプログラムではなく、外部記憶装置123上に存在するプログラムである。プログラムD,E,F等は、必要なプログラム,データを外部記憶装置123から主記憶装置121上に転送した後、実行することができる。
【0040】
上記分散処理システムに対して処理を依頼する際には、該分散処理システムの各ユーザが、新たに各人のユーザプログラムを該分散処理システムのいずれかの計算機上で動作させるか、若しくは、既に存在しているプログラムに対して、入力手段より、データを入力して処理を行わせる。分散処理システム上の各プログラムは、必要に応じて互いに通信を行いつつ、処理を実行し、その結果をユーザに返却、若しくは、いずれかの計算機の端末に表示することとなる。すなわち、分散処理システムへの入力とは、端末などの入力手段を介して、分散処理システムへプログラム又はプログラムに対するデータを入力することである。また、分散処理システムからの出力とは、分散処理システムで処理されたプログラムの処理結果が、端末などの画面表示等として、出力されることである。
【0041】
スケジューラ142〜143はプライオリティキュー140〜141の内容にしたがって、次に実行すべきプログラムを決定する。本実施例では、計算機100の優先順位0の待ち行列がプログラムA(ユーザプログラム130),優先順位1の待ち行列がプログラムB(ユーザプログラム131)およびプログラムC(ユーザプログラム132)から構成されている。このため、スケジューラ142が優先順位番号の小さいプログラムから処理を実行する方針を持つ場合、このプライオリティキューの構成では、プログラムA,B,C,D,E,F,…の順に実行されることになる。プライオリティキュー140〜141およびスケジューラ142〜143は、通常、オペレーティングシステムの一部であり、オペレーティングシステムの種類によっては、スケジューラのプログラム実行順序決定方針が前述の順序と異なることがある。なお、以降、優先順位番号が小さいほど、優先順位が高い(より先に実行される)と仮定して実施例を説明する。
【0042】
このように、プログラムの実行順序を考慮して各プログラムに優先順位を与えることにより、緊急性の異なるプログラムを同一計算機内で一様に扱うことができる。しかし、性能,負荷および機種の異なる計算機間では互いの優先順位に互換性がない。このため、本実施例では、分散処理システム内で共通の概念である緊急度を導入して、性能,負荷および機種の異なる複数の計算機から構成される分散処理システムでの優先順位の統一管理を行う。緊急度は分散処理システム全体に適用されるグローバルな優先順位と見なすことができる。本実施例では、0〜31の範囲で緊急度を指定できると仮定している。本実施例で緊急度を導入するために設けた手段が、優先順位変換手続き手段144〜145および、優先順位変更手続き手段146〜147である。以降、優先順位と同様、緊急度の値が小さいほど、緊急性が高いと仮定して実施例を説明する。
【0043】
優先順位変換手続き手段144〜145は、分散処理システムにおいて共通のデータである緊急度と計算機固有のデータである優先順位とを変換する手段である。本実施例は、優先順位変換手続き手段144〜145内に優先順位対応表150〜151を設ける。優先順位対応表150〜151は緊急度と計算機固有の優先順位との対応を示した表である。計算機100では、緊急度0が優先順位0あるいは1に対応し、緊急度1が優先順位2乃至4に対応する。これに対し、計算機100よりも性能の低い計算機101では、緊急度0が優先順位0に、緊急度1が優先順位1に対応し、同一の緊急度に対して高い優先順位が与えられる。これによって、同一緊急度でプログラムを実行した場合に、同程度の迅速さで処理が完了することを保証する。また、計算機の負荷に応じて優先順位対応表150〜151の内容を変更し、負荷の重い計算機では、同一緊急度が高い優先順位に対応するように設定する。優先順位変換手続き手段144〜145は優先順位対応表150〜151を用いて、与えられた緊急度から優先順位への変換、および、優先順位から緊急度への変換を行う。
【0044】
優先順位対応表150〜151を図1に示す配列構造で作成することは可能であるが、同一緊急度に複数の優先順位が対応するため、緊急度から優先順位への変換が効率的に行えない。図2に緊急度と優先順位との変換を効率的に行うための優先順位対応表150のデータ構造の一例をC言語で記述した。緊急度と優先順位との変換を容易にするために、二つの配列を組み合わせて優先順位対応表を作成する。優先順位対応表において、優先順位から緊急度への変換は一意に行えるため、配列170を用いる。緊急度から優先順位への変換は1対多の変換であるため、各々の緊急度に対して、最小の優先順位と最大の優先順位を記憶する構造体を用いる(配列171)。各配列要素が示す値はデータ構造172に示すものとなる。このデータ構造を用いる場合、緊急度uと優先順位pとの変換は、以下のように行えばよい。
【0045】
(1)優先順位から緊急度への変換:
u←to_urgency[p]
(2)緊急度から優先順位への変換:
p←to_priority[u].startからto_priority[u].endの間のいずれかかの整数値
なお、本実施例では、緊急度と優先順位とを1対多の関係に固定している。このため、優先順位から緊急度への変換を単純配列で実現しているが、緊急度の範囲が実施例に示す範囲に比べて大きい場合には、緊急度と優先順位との対応を多対多若しくは多対1の関係に設定できる。多対多の関係の場合、配列170を配列171と同様の構成とする必要がある。多対1の関係の場合には、配列170と配列171の構成を入れ換えることによって優先順位対応表を実現できる。なお、優先順位の範囲,緊急度の範囲を変更する場合には、配列170〜171の要素数を変更しなければならない。
【0046】
図1および図2の例では、優先順位対応表150〜151を用いて緊急度と優先順位との変換を行っているが、優先順位対応表を用いない構成方法もある。図3に優先順位対応表を用いない優先順位変換手続き手段144の内容を示した。なお、図3ではC言語を用いて表現している。180が緊急度から優先順位への変換式であり、181が優先順位から緊急度への変換手続きである。本実施例では、最適な計算式として優先順位が緊急度の二乗に比例するものを選択しているが、個々の分散処理システムで最適な計算式を実験的に導出し、これを一次式、あるいは、多次式で表現することは可能である。この実施例では、比例係数として、負荷当たりの計算機性能を用いている。本実施例では、負荷をプライオリティキュー内のプログラム数(実行可能プログラム数)、性能は10MIPS(1MIPSは一秒間に百万回命令を実行可能な性能)を単位とするCPU(中央処理装置)性能で表わすと都合がよい。この変換手続きを用いることにより、プログラム当たりのCPU性能が高ければ、同一緊急度に対して低い優先順位(優先順位番号大)を設定でき、プログラム当たりのCPU性能が低ければ、同一緊急度に対して高い優先順位(優先順位番号小)を設定できる。
【0047】
図1の優先順位変更手続き手段146〜147は優先順位変換手続き手段144〜145によって計算された計算機固有の優先順位にしたがって、各プログラムの優先順位を変更する。例えば、図1では、プログラムJ(ユーザプログラム133)の状態が緊急度1,優先順位4である。このプログラムの緊急度が1から0に変化すると仮定すると、優先順位変換手続き手段144によって緊急度から優先順位への変換が行われ、新たな優先順位として0(優先順位を1としてもよい)が得られる。この値を用いて、優先順位変更手続き手段146はユーザプログラム133の優先順位を0に変更する。同時に、プログラムJのプログラム構造体163を優先順位0の待ち行列に繋ぎ換える。
【0048】
優先順位変換手続き手段144〜145と優先順位変更手続き手段146〜147はいずれも、オペレーティングシステムの一部、若しくは、オペレーティングシステムと協調して動作するサービスプログラムである。サービスプログラムとしてこれらの手続きを構成する場合は、優先順位変更手続き手段146〜147はプログラムの優先順位の変更をオペレーティングシステムに依頼する形式を採用する必要がある。依頼されたオペレーティングシステムが実際に優先順位の変更と待ち行列におけるプログラム構造体の繋ぎ換えを行う。
【0049】
次に、本実施例に示した優先順位変換手続き,優先順位変更手続きを用いて、計算機間で緊急度を用いて処理を依頼する方式について説明する。リアルタイム分散処理システムでは、計算機間で処理を依頼する際に、どの程度迅速に処理を完了してほしいかを示すことにより、システム構築を容易にすることができる。このため、本発明では、依頼元プログラムが処理依頼時に緊急度を指定できるようにする。図4は本発明における緊急度指定方法をC言語で記述した一例である。190は処理依頼の先頭引数に緊急度を指定する方法、191は処理依頼の最終引数に緊急度を指定する方法である。なお、ユーザプログラムがこれを直接記述する必要はなく、コンパイラ,トランスレータが190および191の形式に翻訳する方法を用いることも可能である。
【0050】
図5に上記緊急度指定方法を用いた処理依頼の流れの概要を示した。符号100〜101,110,130〜136,140〜147,150〜151,160〜166は図1と同一である。計算機102〜103並びに計算機内の詳細は省略している。本実施例では、ユーザプログラム133がユーザプログラム136に処理を依頼する際の流れを示す。通信200〜206が該処理の流れである。本発明では、図面において通信を示す矢印記号の隣に記したデータが、該通信で送られる重要なデータを示すものとしている。ユーザプログラム133はプライオリティキュー140内では優先順位4(プログラム構造体163)を有している。ユーザプログラム133は、第一に、優先順位から緊急度への変換を優先順位変換手続き手段144に対して依頼する(通信200)。図5では、計算機100の優先順位4が緊急度1に対応しているので、優先順位変換手続き手段144は変換結果として緊急度1を返答する(通信201)。次に、ユーザプログラム133は受理した緊急度1を用いて、図4の緊急度指定方式190または191で、ユーザプログラム136に対して処理を依頼する(通信202)。計算機101では、緊急度1指定の通信を受信すると、該緊急度を計算機固有の優先順位に変換し、変換結果の優先順位でユーザプログラム136を実行させなければならない。ユーザプログラム136は緊急度1を指定して、優先順位変更手続き手段147に優先順位の変更を依頼する(通信203)。優先順位変更手続き手段147は優先順位変換手続き手段145に緊急度から優先順位への変換を依頼する(通信204)。図5では、緊急度1が計算機101の優先順位1に対応する。優先順位変換手続き手段145は変換結果として、優先順位1を優先順位変更手続き手段147に通知し、ユーザプログラム136が優先順位1で実行されなければならないことを知らせる(通信205)。最後に、優先順位変更手続き手段147はプライオリティキュー141内のプログラム構造体166(ユーザプログラム136に対応するプログラム構造体)を優先順位1の待ち行列に繋ぎ換えさせる(通信206)。
【0051】
これにより、異なる計算機上に存在する処理依頼元および依頼先プログラムの優先順位を分散処理システム全体に共通の概念である緊急度を用いて統一的に管理することができる。なお、処理依頼元プログラムが予め自己の緊急度を認識している場合には、計算機固有の優先順位から緊急度への変換処理(通信200および201)は不要である。さらにまた、自己の緊急度と異なる緊急度で処理を依頼することも可能であり、この場合にも、直接緊急度を指定して処理依頼を行えばよい。
【0052】
本実施例で図1に示した優先順位対応表150〜151はそれぞれ、計算機の性能を考慮して割り当てられるが、実際には、計算機の負荷によって処理の完了までの時間が異なってくる。このため、本実施例では、計算機負荷が変化する度に優先順位対応表150〜151を変化させる。図6に優先順位対応表の内容変更方法210を示した。
【0053】
本実施例では、負荷(実行可能プログラム数)が一定量増減した場合、優先順位対応表の内容を変更する。ここで、前回優先順位対応表の内容を変更した後の負荷の変化量を総負荷変化量と呼ぶ。負荷が変化した場合、総負荷変化量に今回変化した負荷量を足し込み(処理211)、この結果、総負荷変化量が正の一定値以上となるか(処理212)、若しくは、総負荷変化量が負の一定値以下となるか(処理213)を判定する。正の一定値以上であれば、負荷が一定量増加したことを示すので、優先順位対応表の緊急度境界を上にずらし(処理214)、総負荷変化量が負の一定値以下であれば、負荷が一定量減少したことを示すため、優先順位対応表の緊急度境界を下にずらす(処理215)。優先順位対応表の内容を変更した場合には、最後に、総負荷変化量に0を設定し(処理216)、再び総負荷変化量の計数を最初から行う。
【0054】
処理214および処理215で優先順位対応表の緊急度境界を上下にずらす意味について、図7を用いて説明する。優先順位対応表150の緊急度境界が負荷の増加によって上に移動すると、優先順位対応表220のように変化する。このとき、変化前の優先順位対応表に比べ、同一緊急度であっても、より高い優先順位にプログラムを割り当てることができる。同様に、緊急度境界が負荷の減少によって下に移動すると、対応表221のように変化し、同一緊急度のプログラムがより低い優先順位に割り当てられることになる。上記のように緊急度境界を上下に移動することにより、同一緊急度のプログラムを同一性能を有する計算機(あるいは、同一計算機)で動作させる場合でも、負荷が重ければ高い優先順位で、負荷が軽ければ低い優先順位で動作させることができ、各計算機上での負荷の増減をも考慮した統一的な優先順位管理を行うことができる。
【0055】
なお、本実施例では、緊急度境界を上下に一つ移動しているが、負荷変化量に応じて、移動量を変化させることも可能である。
【0056】
次に、図2に示した優先順位対応表のデータ構造170および171を用いた場合に緊急度境界を上下に移動する手続きを説明する。図8に、この手続きの一例をC言語で記述した。230が緊急度境界を上に移動する手続きである。データ構造171のto_priority[u].endおよびto_priority[u+1].startが緊急度uの下の緊急度境界を示すので、これらを減少させることによって、緊急度境界を上にずらすことができる(処理240〜241)。また、優先順位対応表の緊急度境界を移動させると、優先順位から見た緊急度が変化する部分がある。例えば、図7において、優先順位1に対応する緊急度は、緊急度境界が上に移動することにより、0から1に変化する。このため、優先順位から緊急度への変換を行う配列170の内容を変更しなければならない。緊急度境界を上に移動させた場合、優先順位から見た緊急度が変化した部分はto_priority[u+1].startである。したがって、to_urgency[to_priority[u+1].start] の値を増加させて補正する(処理242)。
【0057】
ここで、上記の優先順位対応表への変更を行うと、既にプライオリティキューに存在しているプログラムの緊急度が変化することがある。例えば、図7において、緊急度0,優先順位1であったプログラムは、緊急度境界を上に移動させると、緊急度1,優先順位1の属性を有することになる。本実施例では、このプログラムを緊急度0に補正するため、後述する図9の処理を、優先順位変更手続き手段146〜147に導入できる。図9の処理は、優先順位対応表の変更により緊急度が変化したプログラムの優先順位を変更して、優先順位対応表変更前と同一の緊急度を有するように変更するものである。前記の例では、優先順位1に属する全てのプログラムの優先順位を1減少させ、優先順位を0に変化させることにより、これらのプログラムの緊急度を優先順位対応表変更前の値(緊急度0)に補正させる。243は優先順位変換手続き手段144〜145から図9の機能を呼び出す処理である。処理243では図9の処理名がchange_all_priority であると仮定し、さらに、指定すべき引数は緊急度と優先順位との対応が変化した部分to_priority[u+1].start と優先順位の増加分である(処理243では優先順位の増加分が−1であり、優先順位の減少を指定していることになる)。図9に優先順位変更手続き手段146〜147の機能の内、特定の優先順位を有するプログラムを全て別の優先順位に変更する処理250の内容を示した。処理250は、指定された優先順位に対応する待ち行列をプライオリティキュー140〜141から取り出し(処理251)、該待ち行列が空か否かを調べる(処理252)。待ち行列が空でない限り、該待ち行列内のプログラム構造体を取り出して(処理253)、プログラムの優先順位を指定分だけ増加させる(処理254。指定値が負であれば優先順位は減少する。なお、優先順位が減少することは、本実施例では、より高い優先順位となることを意味するものである)。さらに、取り出したプログラム構造体を、指定分だけ増加させた優先順位の待ち行列に繋ぎ換える(処理255。負の値を増加させると優先順位は減少する)。これにより、処理243から要求される優先順位変更を行うことができ、緊急度を同一に保つようにプログラムの優先順位を変化させることができる。
【0058】
同様に、図8の231が緊急度境界を下に移動する手続きであり、データ構造171のto_priority[u].endおよびto_priority[u+1].startを増加させることによって、緊急度境界を下に移動させる(処理244〜245)。緊急度境界を下に移動させる場合、優先順位から見た緊急度が変化する部分は to_priority[u].endである。したがって、to_urgency[to_priority[u]. end]の値を減少させて補正する(処理246)。手続き230と同様、処理247によって、プログラムの優先順位の変更を行わせることができる。この場合には、引数として、緊急度と優先順位との対応が変化した部分to_priority[u]. endと優先順位の増加分1を指定する。
【0059】
以上、図1乃至図9で第一の実施例の構成,動作,方法について述べた。本実施例によれば、緊急度を用いて、分散処理システム内の性能,負荷および機種の異なる複数の計算機の優先順位を統一的に管理することができ、同一緊急度を指定することにより、いずれの計算機においても同程度の迅速さで処理が完了することを期待できる。また、緊急度が計算機の性能,負荷を考慮して優先順位に変換されるため、異なる計算機上の処理であっても、低い緊急度の処理が高い緊急度の処理に先んじて完了するという逆転現象も避けることができるようになる。すなわち、分散処理システムにおけるより厳密なリアルタイム性の保証を行うことができる。
【0060】
本実施例では、さらに、優先順位対応表の内容変更およびプライオリティキューの内容変更(図6乃至図9)を行うことができ、これにより、各計算機での動的な負荷変化に対応しつつ優先順位管理を行うことが可能となる。
【0061】
本実施例では、さらに、上記二つの効果の上に、計算機間に跨る処理依頼において、処理の重要度に応じた緊急度を指定することができ、かつ、緊急度を指定する際には、相手計算機の性能,負荷および機種を知る必要がない。
【0062】
なお、本実施例では、計算機の負荷を実行可能状態にあるプログラムの数で表現したが、実行可能状態にあるプログラムの処理量または処理予測時間の和で表現する方式もある。これにより、計算機の負荷計算がより正確となり、より厳密なリアルタイム性保証を行うことができる。また、本実施例では、各計算機の負荷と性能の両者を考慮して優先順位を決定しているが、いずれか一方のみを考慮して決定することもできる。特に、分散処理システムが同一計算機から構成される場合、負荷のみを考慮すればよく、緊急度と優先順位との変換を効率的に行うことができる。
【0063】
次に、図10に本発明の第二の実施例である分散処理システムの構成について示す。図10に示す実施例の特徴は、分散処理システム内の全ての計算機の優先順位を管理する優先順位変換手続き手段260を用意したことである。符号100〜101,110,130〜136,140〜143,146〜147,160〜166は図1と同一である。計算機102〜103並びに計算機内の詳細は省略している。優先順位変換手続き手段260は全ての計算機の優先順位と緊急度との優先順位対応表270を有する。優先順位対応表270のデータ構造は図2に示したデータ構造170および171を計算機数だけ用意したものに等しい。したがって、優先順位対応表の変更、並びに、それに伴うプログラムの優先順位の変更は図6乃至図9で説明した処理と同一の処理を行えばよい。
【0064】
図10には、さらに、緊急度を指定した処理依頼の流れの概要を示している。図5と同様に、本実施例では、ユーザプログラム133がユーザプログラム136に処理を依頼する際の流れを示す。ユーザプログラム133は、第一に、優先順位から緊急度への変換を優先順位変換手続き手段260に対して依頼する(通信280)。ユーザプログラム133と優先順位変換手続き手段260とが互いに異なる計算機に存在する場合、通信280は計算機間通信となる。優先順位対応表270により、計算機100の優先順位4が緊急度1に対応していることが判るので、優先順位変換手続き手段260は変換結果として緊急度1を返答する(通信281)。次に、ユーザプログラム133は受理した緊急度1を用いて、ユーザプログラム136に対して処理を依頼する(通信282)。計算機101では、緊急度1指定の通信を受信すると、該緊急度を計算機固有の優先順位に変換し、その優先順位でユーザプログラム136を実行させる。ユーザプログラム136は緊急度1を指定して、優先順位変更手続き手段147に優先順位の変更を依頼する(通信283)。優先順位変更手続き手段147は優先順位変換手続き手段260に緊急度から優先順位への変換を依頼する(通信284)。本実施例では、緊急度1が計算機101の優先順位1に対応する。優先順位変換手続き手段260は変換結果として、優先順位1を優先順位変更手続き手段147に通知し、ユーザプログラム136が優先順位1で実行されなければならないことを知らせる(通信285)。ユーザプログラム136と優先順位変換手続き手段260とが互いに異なる計算機に存在しているので、通信284および285は計算機間通信となる。最後に、優先順位変更手続き手段147はプライオリティキュー141内のプログラム構造体166を優先順位1の待ち行列に繋ぎ換えさせる(通信286)。
【0065】
なお、図5と同様、処理依頼元プログラムが予め自己の緊急度を認識している場合には、計算機固有の優先順位から緊急度への変換処理(通信280および281)は不要である。さらにまた、自己の緊急度と異なる緊急度で処理を依頼することも可能であり、この場合にも、直接緊急度を指定して処理依頼を行えばよい。
【0066】
以上に示した第二の実施例は、図1乃至図9に示した第一の実施例において、優先順位変換手続きを一つの計算機上に纏めて配置させたものに等しく、前述した第一の実施例の効果の上に、優先順位対応表の管理を纏めて容易に行うことができるという利点がある。分散処理システム内に該システム全体を管理する高性能かつ高信頼の計算機が存在し、該計算機に優先順位管理の手続きも纏めて配置させるという考えに適している。
【0067】
次に、本発明の第三の実施例について説明する。分散処理システムにおいては、各計算機にプログラムを均等に分散させ、各計算機の負荷を均等化させることもリアルタイム性を保証することに役立つ。しかしながら、プログラムを均等に分散させても、一つの計算機に緊急性を要するプログラムが集中し、別の計算機に重要性のないプログラムが集中するような負荷分散では計算機資源を効率的に使用しているとは言えない。また、一つの計算機に緊急性の高いプログラムが集中すると、結果的に該計算機上での処理が遅れ、リアルタイム性保証を妨げることになる。本発明では、緊急度を用いて、個々のプログラムの重要性を加味した負荷分散を行うことができる。図11に負荷分散を行う第三の実施例の分散処理システムの構成を示す。符号100〜103,110,130〜136,140〜143,146〜147,160〜166は図1と同一、優先順位変換手続き手段260,優先順位対応表270は図10と同一であり、その動作も同様である。ただし計算機101の主記憶装置上にはユーザプログラム130〜136の他、ユーザプログラム137も存在し、プログラム構造体167を用いて管理される。
【0068】
プログラム実行・移動手続き手段290〜291はプログラムの起動や、計算機間でのプログラム移動を行うもので、通常はオペレーティングシステムの機能として提供される。プログラムの起動とは、新たに実行すべきプログラムのプログラム構造体を生成し、これをプライオリティキュー140〜141に登録することにより、プログラムを実行可能状態にすることである。また、プログラム移動とは、ある計算機で実行可能状態のプログラムを他の計算機に移動して、移動先の計算機で実行可能状態にすることであり、プロセス移送とも呼ばれ、分散オペレーティングシステムの機能として提供されることが多い。
【0069】
計算機情報300は計算機負荷情報302と計算機性能情報304から成る。計算機負荷情報は、各計算機の負荷、すなわち実行すべきプログラムの数を、緊急度別に記憶したものである。例えば、現在の計算機100の負荷は緊急度0が3,緊急度1が8,緊急度2が7で、計算機101の負荷は緊急度0が1,緊急度1が1,緊急度2が2である。計算機性能情報は、各計算機の性能を記憶している。例えば本実施例では10MIPSを1として性能を表現しており、計算機100の性能は10,計算機101の性能は3である。なお、プログラム実行・移動手続き手段290〜291はプログラムの起動や移動を行った場合、その変化を計算機負荷情報302に反映する処理を行う。これにより計算機負荷情報302は、その時点での分散システム全体の負荷状態を正しく表わすことができる。
【0070】
プログラム移動決定手続き手段292は、各計算機の負荷が性能に見合って均等に分散されているかどうかを、計算機情報300中の計算機負荷情報302を調べて判定し、均等でない場合、均等になるようにプログラムを移動することを決定する。本実施例では、プログラム移動決定手続きは一定周期で定期的に起動されるものとする。計算機選択手続き手段294は新たに実行すべきプログラムが生じた場合それをどの計算機で実行するか、およびプログラムを計算機間で移動する場合にどの計算機に移動するかを、計算機情報300中の計算機負荷情報302と計算機性能情報304を参照して決定する。
【0071】
本実施例の動作を図11乃至図15を用いて説明する。まず、新たにプログラムを起動する場合の処理について説明する。プログラムの起動は、例えば、ユーザがプログラムの実行可能ファイル名と緊急度を指定したコマンドを入力すると、オペレーティングシステムがそのコマンドを解析し、オペレーティングシステム中のプログラム実行・移動手続き手段290〜291にプログラム起動を依頼することにより可能となる。ここでは緊急度1のプログラムの起動コマンドが計算機100で入力され、プログラム実行・移動手続き手段290がプログラムの起動処理を行う場合について、以下説明する。
【0072】
プログラム起動処理310の動作を図12により説明する。まず、プログラム実行・移動手続き手段290が計算機選択手続き手段294に依頼して、緊急度の範囲が0から起動するプログラムの緊急度までの負荷/性能値を、全ての計算機について算出する(処理311)。ここで、負荷/性能値とは、計算機の負荷量をその計算機の性能で割った値である。本実施例では、計算機のプライオリティキューに登録されている実行可能状態のプログラムの個数をその計算機の負荷量とする。算出は図11に示した計算機情報300中の計算機負荷情報302と計算機性能情報304を読み出して行う。図11の状態の各計算機の負荷情報,負荷量,負荷/性能値を図13に示す。計算機負荷情報302は各緊急度ごとの実行可能状態のプログラム数を表わしているが、緊急度0から特定の緊急度の範囲に含まれる実行可能状態のプログラム数が負荷量306であり、これを計算機の性能で割ったものが負荷/性能値308である。ここでは新たに起動するプログラムが緊急度が1の場合について考えているので、緊急度範囲0〜1の負荷/性能値を算出すると、計算機100の負荷/性能値は1.10 ,計算機101の負荷/性能値は0.67となる。
【0073】
次に、計算機選択手続き手段294は最も負荷/性能値が低い計算機を、起動すべきプログラムを実行する計算機として選択する(処理312)。図13では計算機102以降については省略しているが、計算機101の負荷/性能値0.67が最も小さいとすると、計算機101が選択される。最後にプログラム実行・移動手続きは、選択した計算機でプログラムを起動する処理を行う(処理313)。これは、プログラム起動処理を開始した計算機のプログラム実行・移動手続きが、選択した計算機のプログラム実行・移動手続きに、プログラムを実行可能状態にするよう依頼することにより行う。この場合、計算機100のプログラム実行・移動手続き手段290が、計算機101内のプログラム実行・移動手続き手段291に対して、通信を行い、プログラムを実行可能状態にするよう依頼する。次に、実行可能状態のプログラムを移動する処理について説明する。本実施例では、プログラム移動決定手続き手段292が定期的に起動され、各計算機の負荷が性能に見合って均等に分散されていない場合、均等になるようにプログラムを移動することを決定し、プログラム実行・移動手続き手段290〜291に移動を依頼する。プログラム実行・移動手続き手段290〜291は、計算機選択手続き手段294に依頼して、移動先の計算機を決定し、移動先の計算機のプログラム実行・移動手続きと協調して、プログラムの移動処理を行う。本実施例では計算機の負荷が性能に見合って均等であるかどうかを判定するための値として、前述の負荷/性能値を用いる。
【0074】
プログラム移動処理320の動作を図14を用いて説明する。まず、プログラム移動決定手続きは緊急度の範囲を表わす変数nに0を代入する(処理321)。そして、緊急度範囲が0からnまでについて、各計算機の負荷/性能値を算出する(処理322)。前述のように図11の状態の負荷/性能値の値は図13の負荷/性能値308のようになる。次に全ての計算機のうち、該緊急度範囲の最大の負荷/性能値と最小の負荷/性能値の差Dを算出する(処理323)。図13では計算機102以降については省略しているが、nが0の場合、計算機101の負荷/性能値0.33が最も大きく、計算機100の負荷/性能値0.30が最も小さいとすると、Dの値は0.03 となる。このDの値が閾値Dtを越えているかどうかを調べる(処理324)。本実施例では閾値Dtとして0.3 という値を用いるものとする。Dの値が閾値Dtを越えている場合には処理325に移り、越えていない場合には処理328に移る。ここでは、nが0の場合にはDの値はDtを越えていないので、処理328に移り、nの値に1を加える。そしてnの値が31を越えているかを判定し(処理329)、越えていれば処理を終了し、越えていなければ処理322に戻る。
【0075】
ここではnが1なので、処理322に戻り、各計算機の負荷/性能値を算出し、次に処理323でDの値を算出する。図13では計算機102以降については省略しているが、nが1の場合、計算機100の負荷/性能値1.10 が最も大きく、計算機101の負荷/性能値0.67 が最も小さいとすると、Dの値は0.43 となる。したがってnが1の時、Dの値は閾値Dtを越えている。Dの値が閾値Dtを越えている場合には負荷が均等ではないものと判定し、移動すべきプログラムを決定する(処理325)。本実施例では、負荷/性能値が最大の計算機の、緊急度nに対応する実行可能状態のプログラムのうち、プライオリティキューにおける実行順位が最後尾のプログラムを選択することとする。この場合、図11に示したように、計算機100の緊急度1に対応する優先順位は2〜4であり、そのうち実行順位が最後尾なのはK(プログラム構造体167)なので、これを移動対象プログラムとする。
【0076】
移動対象プログラムが決定したら、プログラム移動決定手続き手段292は、移動対象プログラムが存在する計算機のプログラム実行・移動手続きに、移動対象プログラムの移動処理を依頼する。この場合は計算機100のプログラム実行・移動手続き手段290がプログラム移動処理を行う。まず、プログラム実行・移動手続き手段290は計算機選択手続き手段294に依頼して、移動対象プログラムの移動先の計算機を選択する(処理326)。本実施例では負荷/性能値が最小の計算機を移動先とする。したがってこの場合、nが1の場合の最小負荷/性能値の計算機101を移動先とする。
【0077】
移動先が決定したらプログラム実行/移動手続きがプログラム移動処理を実行する(処理327)。この場合、計算機100のプログラム実行・移動手続き手段290は、プログラム移動先計算機101のプログラム実行・移動手続き手段291と協調して、プログラム移動処理を実行する。通常、プログラム実行・移動手続きはオペレーティングシステムにより提供される。プログラム移動において、移動先の計算機101に移動すべきプログラムの実行可能ファイルが存在しない場合には、それを計算機100から計算機101に転送するするとともに、計算機100のプログラム構造体をプライオリティキューから削除し、移動先の計算機でプログラム構造体を生成し、それを移動先の計算機のプライオリティキューに追加することにより、実行可能状態にする処理が必要である。プログラムの移動が行われると、それによる計算機の負荷の状態は計算機負荷情報302に反映される。この場合、計算機負荷情報302は図15に示すように、緊急度1の実行可能状態のプログラムの数が、計算機100では7,計算機101では2になる。
【0078】
このようにして、プログラムの移動が行われると、処理322に戻り、もう一度各計算機の負荷/性能値を算出する。この場合には図15に示すような負荷量306、および負荷/性能値308になる。図15では計算機102以降については省略しているが、nが1の場合、まだDの値がDtを越えている場合には、さきほどと同様にプログラムの移動処理を行う。Dの値がDt以下となったとすると、処理328に移る。
【0079】
以上述べた処理をnが31を越えるまで行うことにより、全ての緊急度について、負荷分散、すなわち計算機性能に見合った負荷の均等化のためのプログラム移動が行われる。
【0080】
なお、上記ではプログラム移動決定手続きによって起動される、負荷分散のためのプログラム移動について述べたが、ユーザがコマンドにより指定することにより、プログラム移動を行うこともできる。この場合には移動すべきプログラムの緊急度をnとし、図14の処理326〜327の処理を行うことにより、最も負荷の小さな計算機にプログラムを移動できる。
【0081】
以上、本発明の第三の実施例について説明した。本実施例によれば、計算機の負荷が各計算機の性能に見合って均等にユーザプログラムを割り当てることができ、計算機資源を有効に活用できるという効果がある。ここで、本実施例では、計算機の負荷量と性能の両者を考慮して、負荷の均等性の評価を行っており、計算機の性能が変化しても、負荷の評価を平等に行えるという効果がある。
【0082】
また、本実施例によれば、プログラムの緊急度の各レベルにおいて、各計算機の性能に見合って均等にユーザプログラムを割り当てることができ、分散処理システム全体で統一的な緊急度によってリアルタイム処理が可能になるという効果がある。特に、プログラムの緊急度を考慮して負荷分散を行うため、一つの計算機に緊急性を要する処理が集中することがなくなり、より厳密なリアルタイム性保証を行うことができる。
【0083】
また、本実施例では、分散処理システム全体の負荷の管理を一つの計算機で集中的に行っており、プログラム起動先やプログラム移動先の決定を、他の計算機との通信を行うことなく、効率的に行えるという効果がある。
【0084】
本発明の第四の実施例について図16を用いて説明する。本実施例では上記本発明の第三の実施例と異なり、計算機の性能および負荷に関する情報を、計算機単位に保有する。図16は本実施例の構成を表わしたものである。符号100〜101,110,130〜136,140〜147,150〜151,160〜166は図1と同一であり、その動作も同様である。計算機102〜103および計算機内部の詳細は省略している。また記号137,167,290〜291は図11と同一であり、その動作も同様である。
【0085】
計算機情報330〜331は、計算機負荷情報332〜333、および、計算機性能情報334〜335を含んでいる。プログラム移動決定手続き手段296〜297は、各計算機の負荷が性能に見合って均等に分散されているかどうかを、互いに計算機間で通信しあって判定し、そのプログラム移動決定手続きが存在する計算機の負荷が他の計算機に比較して大きい場合、均等になるようにプログラムを移動することを決定する。プログラム移動決定手続き手段296〜297は、この処理を計算機情報330〜331中の計算機負荷情報332〜333を参照して実行する。計算機選択手続き手段298〜299は新たに実行すべきプログラムが生じた場合、それをどの計算機で実行するか、およびプログラムを計算機間で移動する場合にどの計算機に移動するかを、互いに計算機間で通信しあって決定する。計算機選択手続き手段298〜299はこの処理を計算機情報330〜331中の計算機負荷情報332〜333と計算機性能情報334〜335を参照して決定する。
【0086】
本実施例において、新たにプログラムを起動する場合の処理、およびプログラム移動処理はいずれも基本的には図11〜図15を用いて説明した前記第三の実施例と同様である。ただし前記第三の実施例では、全計算機の負荷/性能値の計算を、一つの計算機100上のプログラム移動決定手続き手段292、または計算機選択手続き手段294が行ったが、本実施例では、各計算機の負荷/性能値の計算をそれぞれの計算機上のプログラム移動決定手続き手段296〜297、または、計算機選択手続き手段298〜299が行い、それらの計算により得た負荷/性能値を、プログラム起動を行う計算機上の計算機選択手続きまたはプログラム移動を行う計算機上のプログラム移動決定手続きが収集することにより、プログラムの起動先およびプログラムの移動先を決定するという点が異なる。
【0087】
本実施例では、前記第三の実施例で示した負荷分散,リアルタイム性保証の効果に加え、負荷の管理を各計算機単位で分散して行っており、各計算機がプログラムの起動や移動を行ったとき、該計算機および起動先または移動先の計算機が、自分の計算機内の計算機負荷情報を変更するのみでよいので、状態変化の計算機負荷情報への反映処理を効率的に行えるという効果がある。また、分散システム内の計算機を取り除いたり、計算機を新たに追加した場合でも、計算機情報のテーブルを変更する必要がないため、システムの拡張性が向上するという効果がある。
【0088】
以上述べた、上記第三および第四の実施例については、いくつか別の実施例がある。上記第三および第四の実施例では、緊急度を指標としてプログラムの負荷情報を記憶し、評価することにより、プログラムの起動や移動を行ったが、緊急度ではなく各計算機の優先順位を指標として記憶し、評価する方式もある。これにより各計算機では優先順位のみを考慮して処理を行えばよく、緊急度と優先順位の変換処理が少なくなり、処理を効率化できるという効果がある。また、この場合、本発明の第一の実施例の図6乃至図9で示したように、緊急度と優先順位の対応関係を管理している優先順位変換手続き手段260、あるいは優先順位変換手続き手段144〜145に対して計算機の負荷に応じて対応関係を変更する機能を持たせることもでき、これにより、計算機の負荷に応じた緊急度または優先順位の制御が可能になるという効果がある。
【0089】
さらにまた、上記第三および第四の実施例では、計算機の負荷量を実行可能状態にあるプログラムの数で表現したが、実行可能状態にあるプログラムの処理量または処理予測時間の和で表現する方式もある。これにより、計算機の負荷の評価が正確になり、より均等な負荷の分散が可能になるという効果がある。
【0090】
さらにまた、上記第三および第四の実施例では、各計算機の負荷と性能の両者を考慮して、プログラムを起動あるいは移動する計算機を決定したが、いずれか一方のみを考慮して決定することもできる。特に、複数の同一機種の計算機から成る分散システムの場合には、各計算機の負荷のみを考慮すればよい。これにより処理が簡単になり、効率がよくなるという効果がある。
【0091】
さらにまた、上記第三および第四の実施例では、計算機の負荷量を、緊急度が0から起動するプログラムまたは移動するプログラムの緊急度までの範囲に含まれる、実行可能状態のプログラムについて評価したが、起動するプログラムまたは移動するプログラムの緊急度に等しい、実行可能状態のプログラムについて評価するという方式もある。これにより負荷量の算出時間が短くなり、処理が効率化できるという効果がある。
【0092】
分散処理システムにおいては、複数の同一処理を行うプログラムを複数の計算機上で動作させ、処理依頼を分散させることができる。処理依頼を分散させるに当たって、従来は、複数の同一処理を行うプログラムの中から、暇な(処理を実行していない)プログラムを選択し、該プログラムに処理依頼を行っていた。しかしながら、リアルタイム分散処理システムで上記のプログラム選択方法を行う場合、必ずしも高い優先順位のプログラムが選択されるわけではなく、依頼元に望ましい迅速さで処理が完了するとは限らない。図17は、複数の同一プログラムから処理依頼元に望ましい優先順位のプログラムを選択し、該プログラムに対して処理を実行させるための本発明の第五の実施例である。本実施例は、望ましい迅速さで動作するプログラムを選択するというリアルタイム性保証と、処理の負荷分散とを同時に達成させるための実現システムである。本実施例は、前述した優先順位変換手続き手段260と該優先順位変換手続き手段260の変換結果を用いて処理依頼先プログラムを決定するプログラム選択手続き手段410を用いて実現される。
【0093】
図17中、符号100〜103,110,140〜143は図1と同一である。計算機100〜101のハードウェア詳細については省略してある。優先順位変換手続き手段260および優先順位対応表270は図10と同一の手続き,データ構造を使用する。430〜442はユーザプログラムである。ユーザプログラムの内、ユーザプログラム440〜442は、プログラム選択手続き手段410の管理対象でないプログラムである。分散処理システム内で唯一のプログラム,処理依頼を受けずに単独で動作するプログラム等がプログラム選択手続き手段410の管理対象外とすることができる。個々のユーザプログラムにはそれぞれ優先順位が与えられ、プライオリティキュー140〜141内の優先順位毎の待ち行列で管理される。450〜451,454〜458,460〜462は各ユーザプログラムのプログラム構造体の一例であり、それぞれ、ユーザプログラム430〜431,434〜438,440〜442の情報を所有する。ユーザプログラム432〜433,439に対応するプログラム構造体は省略してある。本発明では、複数の同一処理を行うプログラムが複数の計算機上で同時に実行され、処理を依頼する際の緊急度に応じて依頼先プログラムを決定する。図17の実施例では、ユーザプログラム431〜433が同一処理を行うプログラム(プログラムB)であると仮定している。同様に、ユーザプログラム435〜436(プログラムD),ユーザプログラム438〜439(プログラムF)がそれぞれ同一処理を行うプログラムである。
【0094】
プログラム選択手続き手段410はこれらのプログラムが動作している計算機,優先順位を管理し、最適な優先順位を有するプログラムの選択を行う。このための管理用データ構造として、プログラム位置データベース420を設ける。プログラム位置データベース420は、同一処理を行うプログラムの動作している計算機,優先順位を記憶するプログラム位置情報470〜479を管理する。プログラム位置情報にプログラムの通信アドレス等の情報を含め、処理依頼を容易にする管理方法もある。プログラム位置情報470〜479は同一処理を行うプログラム毎にプログラムリスト421〜426として管理される。例えば、プログラム位置情報471〜473は同一処理を行うプログラム(プログラムB)の位置情報であり、これらが纏めてプログラムリスト422として記憶される。なお、プログラムA,C,Eはそれぞれ一つずつのプログラムしか存在しないため、これらのプログラムリストをプログラム位置データベース420から削除して管理することも可能である。プログラム選択手続き手段410に登録されているプログラムの優先順位が各計算機で変更された場合や、該プログラムが存在しなくなった場合、および、登録すべきプログラムが新たに起動された場合には、それぞれのプログラムの動作している計算機,優先順位をプログラム選択手続き手段410に通知し、プログラム位置データベースの内容を変更させる。
【0095】
次に、優先順位変換手続き手段260とプログラム選択手続き手段410を用いて、優先順位を用いた処理依頼先選択方法について示す。図18がプログラム選択手法の一例である。本実施例では、ユーザプログラム440がプログラムD(ユーザプログラム435またはユーザプログラム436)に対して緊急度0で処理を依頼するものと仮定する。ユーザプログラム440は、第一に、プログラム選択手続き手段410に対し、緊急度0に対応するプログラムDの位置を尋ねる(通信480)。プログラム選択手続き手段410は各プログラムの動作している計算機と優先順位とを認識しているが、緊急度を認識していないので、指定された緊急度0をそのまま優先順位変換手続き手段260に渡し(通信481)、その結果、緊急度0に対応する優先順位リスト490を得る(通信482)。優先順位リスト490の内容は、指定された緊急度に対応する各計算機の優先順位の範囲を示している。本実施例では、緊急度0に対して、計算機100では優先順位0〜1の範囲に、計算機101では優先順位0に対応することを示す優先順位リストが通信482でプログラム選択手続き手段410に返される。プログラム選択手続き手段410では、プログラム位置データベース420の内容と優先順位リスト490の内容とを比較して、処理依頼先プログラムを決定する。図18の例では、プログラムDのプログラムリスト424の中で、優先順位リスト490で指定される優先順位に対応するプログラム位置情報は476(ユーザプログラム436に対応)のみである。したがって、計算機101に存在するユーザプログラム436が処理依頼先であると判断し、これをユーザプログラム440に通知する(通信483)。ユーザプログラム440は通信483で得られたユーザプログラム436に対して処理を依頼する(通信484)。なお、ここで、プログラム選択手続き手段410がユーザプログラム440からの通信480を、直接、ユーザプログラム436に対して送信するという通信仲介方法を採用することも可能である(通信485)。
【0096】
次に、プログラム選択手続き手段410がプログラムリスト421〜426と優先順位リスト490との比較を行い、指定された優先順位の範囲内に存在するプログラムを見つける処理500の一例を図19に示す。第一に、指定されたプログラムリストが示す最初のプログラム位置情報を取り出す(処理501)。プログラム位置情報が空であれば(処理502による判定)、該当する範囲の優先順位のプログラムが存在しないと見なし、これを処理依頼元プログラムに通知する(処理503)。プログラム位置情報が空でなければ、該プログラム位置情報内に記憶されている計算機と一致するエントリを優先順位リスト490から取り出す(処理504)。処理504で得られた優先順位の範囲にプログラム位置情報内の優先順位が含まれていれば(処理505による判定)、該プログラムを処理依頼元プログラムに通知する(処理506)。処理505の判定によって、プログラムの優先順位が指定範囲外であると判断された場合、プログラムリストの次のプログラム位置情報を取り出して(処理507)、処理502から同じ手続きを繰り返す。処理500を用いることにより、図18の例では、第一に、プログラムDに関するプログラムリスト424の最初のプログラム位置情報475と優先順位リスト490とを比較し、次に、第二のプログラム位置情報476と優先順位リスト490とを比較する。プログラム位置情報476の優先順位が優先順位リスト490の指定する範囲内に存在しているので、これが選択されて処理依頼元プログラムに通知されることになる。
【0097】
本発明の第五の実施例を用いることにより、優先順位の異なった複数の同一処理を行うプログラムを分散処理システムの計算機上に分散させ、緊急性に応じた処理依頼の負荷分散を行うことができる。処理依頼は同一内容の処理を依頼する場合であっても、依頼元によって、その緊急性が異なる場合が多く、本実施例の効果が期待できる。
【0098】
さらにまた、上記した第五の実施例によれば、該複数の同一処理を行うプログラムの優先順位を予め違ったレベルに設定しておくことにより、前記優先順位変更手続きを使用することなく、異なった緊急度で同一内容の処理を依頼することができ、第一の実施例と同程度のリアルタイム性保証を実現することができる。図20に本発明の第六の実施例を示す。図20の実施例は、各計算機に分散させて設けた優先順位変換手続き手段144〜145と、同一処理を行うプログラムが動作している計算機と緊急度とを記憶して処理依頼先を決定するプログラム選択手続き手段510を組み合わせて構築した分散処理システムである。図20中、符号100〜103,110,140〜145,150〜151は図1と同一である。計算機100〜101のハードウェア詳細については省略してある。ユーザプログラム430〜442並びにプログラム構造体450〜462は、図17と同一の内容を示している。ユーザプログラム432〜433,439に対応するプログラム構造体は省略してある。
【0099】
プログラム選択手続き手段510はこれらのプログラムが動作している計算機,緊急度を管理し、最適な緊急度を有するプログラムの決定を行う。このための管理用データ構造として、プログラム位置データベース520を設ける。プログラム位置データベース520は、同一処理を行うプログラムの動作している計算機,緊急度を記憶するプログラム位置情報530〜539を管理する。プログラム位置情報530〜539はそれぞれ、同一処理を行うプログラム毎にプログラムリスト521〜526を構成する。図17におけるプログラム位置情報470〜479は、プログラムの動作している計算機,優先順位を記憶するが、プログラム位置情報530〜539は優先順位の代わりに緊急度を記憶する。プログラム位置情報にプログラムの通信アドレス等の情報を含め、処理依頼を容易にする管理方法もある。プログラム選択手続き手段510に登録されているプログラムの緊急度が各計算機で変更された場合や、該プログラムが存在しなくなった場合、また、登録すべきプログラムが新たに起動された場合には、それぞれのプログラムの動作している計算機,緊急度をプログラム選択手続き手段510に通知し、プログラムリストの内容を変更させる。また、各計算機上での優先順位と緊急度との対応関係が変化した場合にも、優先順位変換手続き手段144〜145は対応関係の変化をプログラム選択手続き手段510に通知し、プログラム位置情報520〜529に記憶されている緊急度を変更させる。
【0100】
図20は、さらに、優先順位変換手続き手段144〜145としての優先順位対応表とプログラム選択手続き手段510を用いて、緊急度を用いた処理依頼先選択方法についても示している。図18と同様、ユーザプログラム440がプログラムD(ユーザプログラム435またはユーザプログラム436)に対して処理を依頼するものと仮定する。ユーザプログラム440は、第一に、プログラム選択手続き手段510に対し、緊急度0に対応するプログラムDの位置を尋ねる(通信540)。プログラム選択手続き手段510は各プログラムの動作している計算機と緊急度とを認識しているため、この時点で、プログラムDかつ緊急度0という条件を満たすプログラムの位置を認識できる。本実施例では、二つのプログラムDの内、プログラム位置情報536(ユーザプログラム436に対応)のみである。したがって、計算機101に存在するユーザプログラム436が処理依頼先であると判断し、これをユーザプログラム440に通知する(通信541)。ユーザプログラム440は通信541で得られたユーザプログラム436に対して処理を依頼する(通信542)。なお、ここで、プログラム選択手続き手段510がユーザプログラム440からの通信540を、直接、ユーザプログラム436に対して送信するという通信仲介方法を採用することも可能である(通信543)。
【0101】
本発明の第六の実施例は、前記第五の実施例の効果に加え、プログラム選択手続き手段510が優先順位変換手続き手段144〜145に対して緊急度から優先順位への変換を行わせないため、プログラム選択を前記第五の実施例に比べて高速化することができる。ただし、プログラム位置情報530〜539において緊急度を記憶するため、各計算機の負荷の変化等によって緊急度と優先順位との対応関係が変化した場合には、各プログラム位置情報の緊急度を変化させなければならない可能性がある。このため、各計算機上の負荷が時間によって大きく変化する場合には、前記第五の実施例に示した方式が有利となる。
【0102】
前記第五の実施例に示した方式,前記第六の実施例に示した方式の他に、プログラム選択手続き手段510と優先順位変換手続き手段260とを組み合わせて構築する方式,プログラム選択手続き手段410と優先順位変換手続き手段144〜145とを組み合わせて構築する方式を実現することは可能である。なお、図17,図18および図20においてはプログラムの優先順位を変更して動作させることを考慮していないため、優先順位変更手続き手段146〜147を記述していないが、この手続きを追加して優先順位変更を行えるようにすることも可能である。
【0103】
複数の同一処理を行うプログラムを有した分散処理システムでは、処理を実行中のプログラムに対して、新たに処理が依頼された場合、新たに依頼された処理を別の同一処理を行うプログラムに転送すると、個々のプログラムを効率的に使用でき、また、新たな処理依頼を迅速に実行し、リアルタイム性の向上につながる。この処理依頼転送を行う第七の実施例を次に示す。図21は、処理実行中のプログラムに対してさらに処理を依頼した場合に、該新たな処理を別の同一処理を行うプログラムに転送させる分散処理システムの構成を示している。図21中、符号100〜103,110,140〜143は図1と同一である。計算機100〜101のハードウェア詳細については省略してある。優先順位変換手続き手段260および優先順位対応表270は図10と同一の手続き,データ構造を使用する。符号410,420〜426,430〜442,450〜462並びに470〜479は、図17と同一の内容を示している。ユーザプログラム432〜433,439に対応するプログラム構造体は省略してある。
【0104】
本実施例では、プログラム内部に処理転送手続き手段550および待ち行列551を設けることによって処理依頼を別プログラムに転送させることを可能とする。待ち行列551はプログラムに対して行われた処理依頼を順に記憶するバッファ記憶である。処理転送手続き手段550はプログラムが処理実行中に待ち行列に到着した処理依頼を監視し、該処理依頼を別プログラムに転送する。これにより、処理依頼をプログラム間で分散処理することができ、計算機の負荷を均等に分散化させることができる。通信560〜565の流れは、上記処理依頼の転送を行う際に、処理転送手続きによってどのように処理依頼が別プログラムに送られるかを示したものである。本実施例では、ユーザプログラム440がユーザプログラム438(プログラムFの一つ)に対して緊急度1で処理依頼を行い(通信560)、これが別プログラムに転送される過程を例として示している。ユーザプログラム438が処理実行中に処理依頼が到着した場合、これらの処理依頼は待ち行列551に格納される。552〜553が処理依頼である。処理転送手続き手段550は新たな処理依頼553を受信すると、該処理依頼553に必要な緊急度1を有しているプログラムFが別に存在するかどうかをプログラム選択手続き手段410に尋ねる(通信561)。プログラム選択手続き手段410は緊急度1を優先順位変換手続き手段260に通知して(通信562)、該緊急度1に対応する優先順位の範囲を示す優先順位リスト491を受け取る(通信563)。図21中、優先順位リスト491の計算機101および102に対応するデータは省略している。優先順位リスト491とプログラムFのプログラムリスト426とを比較することにより、必要な緊急度を満たすプログラム位置情報を選択する。このとき、プログラム選択手続き手段410はユーザプログラム438自身を表わすプログラム位置情報は選択しないようにする。図21の例では、プログラム位置情報479(ユーザプログラム439に対応)が優先順位リスト491の示す優先順位の範囲に含まれ、該位置情報に対応するユーザプログラム439の位置を処理転送手続き手段550に通知する(通信564)。これを受けた処理転送手続き手段550がユーザプログラム439に対して、新たに到達した処理553を依頼することになる(通信565)。
【0105】
本発明の第七の実施例では、処理転送手続き手段550並びに待ち行列551をプログラム内部に配置したが、これをプログラム外部に配置し、複数のプログラムが共通に使用する手続き並びにデータ構造として実現することも可能である。また、本実施例では、プログラム選択手続き手段410と優先順位変換手続き手段260との組み合わせから構成される図17の分散処理システムに処理転送手続き手段550を追加した構成である。しかし、プログラム選択手続き手段510と優先順位変換手続き手段144〜145との組み合わせから構成される図20の分散処理システムに処理転送手続き手段550を追加しても同様の処理を行うことができる。
【0106】
本発明の第七の実施例を用いることにより、個々のプログラムに対して依頼された処理を他の同一緊急度を持つプログラムに転送することができ、特定のプログラムに対して処理が集中することなく、処理依頼を複数のプログラムで分散させることができる。さらにまた、新たに依頼された処理が、実行中の処理の完了を待つ必要がなく、リアルタイム性保証をさらに向上させることが可能となる。以上述べた本発明の第七の実施例には、別の実施例がある。第七の実施例は、処理実行中に新たな処理が依頼された場合、該新たな処理を別のプログラムに転送するというものであったが、該新たな処理を転送せず、処理を実行するプログラムにより高い緊急度を与え、実行中の処理と新たな処理をより迅速に処理させるという方式を採用することも可能である。この方式は、一つのプログラムに対して複数の処理が依頼された場合に、該処理依頼の数に応じて高い緊急度を与え、該複数の処理依頼全体としての望ましいリアルタイム性を保証するというものである。なお、この方式を採用するためには、優先順位変更手続き手段146〜147を各計算機上に配置させ、プログラムの優先順位を変更させる必要がある。
【0107】
(B)処理の時間制約を用いる場合
図1〜図21に示した実施例は、全て分散処理システム全体に共通の概念である緊急度を設け、該緊急度を用いて各計算機での優先順位を統一的に管理する方法であった。緊急度を絶対的な数値に変更して、処理の時間制約を用いることができる。処理の時間制約を用いる場合、これを直接優先順位に変換することはできない。処理の時間制約は長くても処理量が大きい場合や、時間制約は短いが処理量も小さい場合が存在するため、時間制約と処理量から優先順位を決定する必要がある。図22に、時間制約,処理量を用いて優先順位を統一的に管理するための分散処理システムの第八の実施例を示す。
【0108】
図22中、符号100〜101,110,130〜136,142〜143,146〜147は図1と同一である。計算機100〜101のハードウェア詳細、および、計算機102〜103については省略してある。570〜571はプライオリティキューであり、各計算機での優先順位毎にプログラムの待ち行列を構成して実行順序管理を行う。プライオリティキューの構成要素はプログラム構造体であり、その一例が590〜596である。プログラム構造体590〜596は、そのデータ構造の一部として処理量データ600を所有する。個々のプログラムの情報として該プログラムが実行する処理量を所有させることにより、時間制約,処理量を優先順位に変換する際の支援を行う。処理量として記憶する値には、例えば、以下のような値がある。
【0109】
(1)プログラムの実行命令数
(2)プログラムサイズ
(3)前回実行時の処理量(前回のプログラム実処理時間/計算機性能)
いずれも、単位は千命令等を使用する。実際に、上記の三つの例の内、最も望ましいものはプログラムの実行命令数であるが、これを計数することは非常に困難である。このため、プログラムの静的なサイズ,前回プログラム実行時にどれだけの処理量であったかを測定し、この値を処理量データ600として記憶する。処理量データ600の初期値としてプログラムサイズを記憶し、プログラムを一回実行するたびにどれだけの処理量であったかを処理量データ600に記憶,更新することによって、プログラム実行命令数に対する良い近似とすることができる。
【0110】
572〜573は優先順位変換手続きである。優先順位変換手続き手段572〜573は、時間制約,処理量と計算機固有の優先順位との変換を行う手続きである。本実施例では、優先順位変換手続き手段572〜573内に優先順位対応表580〜581を設けている。優先順位対応表580〜581は単位処理量当たりの時間制約と優先順位との対応を示した表である。プログラムに与えられた時間制約をプログラムの処理量で正規化することにより単位処理量当たりの時間制約を計算することができる。本実施例では、計算機100が優先順位0の場合に単位処理量を0.017ミリ秒で実行でき、優先順位255では22.77ミリ秒で実行できることを示す。これに対し、性能の低い計算機101では、同一優先順位でも単位処理量当たりの実行時間が長くなる。このため、例えば、優先順位0の場合には、単位処理量を0.034 ミリ秒で実行すると記憶されており、計算機100の優先順位0に比べて単位処理量実行時間が長くなっている。また、優先順位対応表580〜581の内容は負荷に応じて変更され、負荷の重い計算機では同一時間制約が高い優先順位に対応するように設定する。優先順位変換手続き手段572〜573は、優先順位対応表580〜581を用いて、時間制約,処理量と優先順位との変換を行う。
【0111】
優先順位対応表580〜581は、図22に示す配列構造で、そのまま、実現できる。これをC言語のプログラムで記述すると図23に示す配列610になる。配列610を用いる場合、優先順位から単位処理量当たりの時間制約への変換は容易に行えるが、時間制約は連続量(浮動小数点数)なので、時間制約から優先順位への変換は2分探索等の工夫が必要となる。2分探索については、オーム社刊行の情報処理学会編「情報処理ハンドブック」,58頁等に記載されているが、本実施例では、時間制約timelimitに対して、
to_time[p]<=timelimit<to_time[p+1]
を満たすような優先順位pを与える必要がある。したがって、2分探索のアルゴリズムを変形して、図24に示す手続き620の探索を行う。なお、手続き620はC言語で記述してあり、単位処理量当たりの時間制約を引数として、手続き620を呼び出すことにより、時間制約から優先順位への変換を行うことができる。単位処理量当たりの時間制約と優先順位との変換方法を纏めると、次のようになる。
【0112】
(1)優先順位から時間制約への変換:
timelimit←to_time[p]
(2)時間制約から優先順位への変換:
p←to_priority(timelimit)
なお、計算機の最高優先順位で実行しても時間制約を満たせない場合、処理依頼を拒絶することも可能である。
【0113】
図22乃至図24では、優先順位対応表580〜581を用いて時間制約,処理量と優先順位との変換を行うが、緊急度を用いる場合と同様に(図3参照)、これを計算式に置き換えることも可能である。
【0114】
次に、本実施例に示した優先順位変換手続き手段572〜573並びに優先順位変更手続き手段146〜147を用いて計算機間で時間制約を指定して処理を依頼する方式について説明する。緊急度指定を行う通信と同様に、処理の時間制約を指定して通信を行えば、リアルタイム分散処理システム構築を容易にすることができる。このため、本発明では、依頼元プログラムが処理依頼時に時間制約を指定できるようにする。図25が本発明の時間制約指定方法をC言語で記述した一例である。630は処理依頼の先頭引数に時間制約を指定する方法、631が処理依頼の最終引数に時間制約を指定する方法である。前述のように優先順位を定めるためには時間制約と処理量とを決定する必要があるが、処理量については依頼先計算機のプログラム構造体の処理量データ600を参照することにより決定することができるため、処理依頼時に時間制約のみを指定すれば良い。
【0115】
図26に上記時間制約指定方法を用いた処理依頼の流れの概要を示した。符号100〜101,110,130〜136,142〜143,146〜147は図1と同一である。計算機102〜103並びに計算機内の詳細は省略している。符号570〜573,580〜581,590〜596,600は図22と同一である。本実施例では、ユーザプログラム133がユーザプログラム136に処理を依頼する際の流れを示す。ユーザプログラム136の行うべき処理に関してユーザプログラム133が何らかの時間制約を課したい場合、時間制約指定通信630あるいは631を行う(通信640)。図26では、時間制約を5ミリ秒であると仮定する。計算機101では、時間制約指定の通信を受信すると、該時間制約を計算機固有の優先順位に変換し、変換結果の優先順位でユーザプログラム136を実行させなければならない。ユーザプログラム136は5ミリ秒の時間制約を指定して、優先順位変更手続き手段147に優先順位の変更を依頼する(通信641)。優先順位変更手続き手段147は優先順位変換手続き手段573に時間制約から優先順位への変換を依頼する(通信642)。優先順位変換手続き手段573はユーザプログラム136に対応するプログラム構造体596から処理量データ600を取り出し(処理643)、該処理量と時間制約から優先順位を決定する。ここで、ユーザプログラム136の処理量が64千命令であるとする。このとき、時間制約5ミリ秒と処理量64千命令から、単位処理量当たりの時間制約として、0.78ミリ秒を得ることができる(計算644)。優先順位対応表581を使用することにより、計算644で得られた数値に対応する優先順位は1であることが判る。優先順位変換手続き手段573は変換結果として、優先順位1を優先順位変更手続き手段147に通知し、ユーザプログラム136が優先順位1で実行されなければならないことを知らせる(通信645)。最後に、優先順位変更手続き手段147はプライオリティキュー571内のプログラム構造体596を優先順位1の待ち行列に繋ぎ換えさせる(通信646)。
【0116】
これにより、異なる計算機上に存在するプログラムの優先順位を時間制約という共通の概念で統一的に管理することが可能となる。なお、緊急度を使用した分散処理システムと同様に、ユーザプログラム133が優先順位変換手続き手段572に自己の優先順位4と処理量とから時間制約を計算させ、該時間制約を指定して処理依頼640を行うことは可能である。
【0117】
緊急度を用いて分散処理システムの各計算機の優先順位を管理する場合と同様、時間制約を用いる場合にも、負荷の増減によって優先順位対応表の内容を変更することができる。時間制約と優先順位との対応表を変更する方法として、次の二つの方式を例として説明する。
【0118】
(1)負荷に比例して優先順位対応表の時間制約を変更する方式
(2)実際に実行した時間と時間制約の差を用いて優先順位対応表の時間制約を変更する方式
図27に第一の優先順位対応表変更方式650を示す。前回優先順位対応表を変更した時点の負荷量を前負荷量、その後の負荷の変化量を総負荷変化量と呼ぶ。方式650は負荷が変化した場合、総負荷変化量に今回変化した負荷量を足し込み(処理651)、この結果、総負荷変化量が増減に拘らず一定値以上(総負荷変化量の絶対値が一定値以上)となるかどうかを判定する(処理652)。一定値以上であれば、前負荷量と現在の負荷量との比によって優先順位対応表の時間制約の補正を行う(処理653)。優先順位対応表の内容を変更した場合には、最後に、総負荷変化量に0を設定、および、前負荷量に現在の負荷量を設定し(処理654)、再び負荷変化量の計数を開始する。
【0119】
処理653で前負荷量と現在の負荷量との比によって優先順位対応表の調節を行う意味を図28に示した。優先順位対応表580が負荷量50(実行可能プログラム数50)を有していると仮定し、負荷が10増減する毎に優先順位対応表580の変更を行うものと仮定している。負荷が10増加した場合、優先順位対応表は660に示すように変化する。これは、変化前の負荷量50と変化時点の負荷量60の比を優先順位対応表の時間制約に各々掛け合わせたものとなる。同様に、負荷が10減少した場合には、各々の時間制約に前負荷量50と現在の負荷量40の比を掛け合わせた優先順位対応表661を得ることができる。これにより、負荷が高い場合には、同じ優先順位に対応する時間制約が長くなり(処理完了に時間を要する)、負荷が低い場合には、時間制約を短くする(処理が速く完了する)ことができる。
【0120】
次に、第二の優先順位対応表変更方式を再度図26を用いて説明する。第二の変更方式では、優先順位を1に変更してユーザプログラム136を実行した後、優先順位変換手続き手段573がユーザプログラム136の実際の処理時間を受け取る(通信647)。図26の例では、実際の処理時間が3.47ミリ秒であると仮定している。このとき、単位処理量当たりの実行時間が3.47/64= 0.54 ミリ秒と計算できる(計算648)。この値をそのまま、優先順位1に対応する時間制約として記憶することにより、優先順位対応表581の補正を行うことができる(処理649)。なお、実際に補正を行う場合には、上記の計算値0.54 ミリ秒に一定値(例えば、0.1 ミリ秒)を加え、安全区間を設けておくほうがよい。
【0121】
以上に、時間制約を用いて分散処理システムの各計算機上の優先順位を統一的に管理する第八の実施例を示した。本実施例によれば、時間制約を用いて、分散処理システム内の性能,負荷および機種の異なる複数の計算機の優先順位を統一的に管理することができる。時間制約を指定して処理依頼を行うだけで、該時間制約が各計算機の性能,負荷に応じて各計算機の優先順位に変換されるため、リアルタイム分散処理システムを容易に構築することが可能となる。
【0122】
さらに、本実施例によれば、各計算機の性能と負荷に応じて、処理の時間制約,処理量を個々の計算機の優先順位に変換して実行させるため、新たに発生した時間制約の短い処理を、既に割り付けられている時間制約の長い処理に先んじて実行させるといったことが可能となり、複数の計算機を効率的に利用しつつ、より厳密にリアルタイム処理を実現することが可能となる。
【0123】
本実施例では、さらに、優先順位対応表の内容変更を行うことができ、これにより、各計算機での動的な負荷変化に対応しつつ優先順位管理を行うことが可能となる。
【0124】
本実施例では、さらに、計算機間に跨る処理依頼において、処理の重要度に応じた時間制約を指定することができ、かつ、時間制約を指定する際には、相手計算機の性能,負荷および機種を知る必要がない。
【0125】
なお、本実施例では、計算機の負荷を実行可能状態にあるプログラムの数で表現したが、実行可能状態にあるプログラムの処理量または処理予測時間の和で表現する方式もある。これにより、計算機の負荷計算がより正確となり、より厳密なリアルタイム性保証を行うことができる。また、本実施例では、各計算機の負荷と性能の両者を考慮して優先順位を決定しているが、いずれか一方のみを考慮して決定することもできる。特に、分散処理システムが同一計算機から構成される場合、負荷のみを考慮すればよく、時間制約と優先順位との変換を効率的に行うことができる。
【0126】
時間制約を用いて分散処理システムの各計算機の優先順位管理を行う際に、計算機間の通信時間を考慮するとさらに精密な優先順位管理を行うことができる。図29に、計算機間の通信時間を考慮した本発明の第九の実施例を示す。符号100〜101,110,130〜136,142〜143,146〜147は図1と同一である。計算機102〜103並びに計算機内の詳細は省略している。符号570〜573,580〜581,590〜596,600は図22と同一である。通信641〜642および645〜646における時間制約と優先順位の変換過程は図26と同一である。
【0127】
本実施例では、計算機間の通信時間を予測する通信時間予測手続き手段670〜671を設ける。通信時間予測手続き手段670〜671は優先順位変換手続き手段572〜573,優先順位変更手続き手段146〜147等とは独立に動作する。通信時間予測手続き手段670〜671は、内部に通信時間表680〜681を有し、計算機の番号が与えられると、該計算機と自己の計算機との通信時間を出力する。通信時間表680〜681の設定方式として、例えば、次の二つのいずれかの方法を採用するとよい。
【0128】
(1)計算機立上げ時に他全ての計算機と通信を行い、該通信の実行時間を記憶する。
【0129】
(2)通信時間予測要求があるまで通信時間表の設定は行わない。最初に通信時間予測要求があった時点で、要求された計算機と通信を行い、該通信の実行時間を記憶する。
【0130】
図29は、通信時間予測手続き手段670〜671を用いて処理依頼を行う場合の通信の流れも示している。図26と同様、ユーザプログラム133がユーザプログラム136に対して時間制約を指定して処理を依頼する例を示す。ユーザプログラム133はユーザプログラム136の行うべき処理に関して8.14 ミリ秒の時間制約を課したいとする。このとき、ユーザプログラム133は図25の630あるいは631に示した形式で時間制約指定通信690を行う。このとき、ユーザプログラム133から見れば、計算機間通信に要する時間も含めて時間制約を課したと見なしている。すなわち、この時間制約8.14 ミリ秒から計算機間通信に要する時間を差し引くことにより、ユーザプログラム136から見た時間制約を得ることができる。ユーザプログラム136は通信時間予測手続き手段671に対して、計算機100との通信時間を尋ねる(通信691)。これに対して通信時間予測手続き手段671は通信時間表681を参照し、指定された計算機との通信時間を返答する(通信692)。図29に示した数値例では、計算機100との通信時間は1.57 ミリ秒である。ユーザプログラム136はこの通信時間を差し引くことにより、自己に課せられた時間制約を知ることができる。ここでは、8.14 ミリ秒から、通信時間1.57×2=3.14ミリ秒(処理依頼と結果返却とにそれぞれ通信時間を要するものとする)を差し引いた5ミリ秒を時間制約として得ることになる。以降の処理は、図26と同様である。
【0131】
なお、ここでは、処理依頼先プログラムが通信時間を差し引く方法を示したが、処理依頼元プログラムが予め通信時間予測手続き手段670に通信時間を尋ね、該通信時間を差し引いておく方法もある。
【0132】
上記した第九の実施例を用いることにより、前記第八の実施例で用いる時間制約をさらに正確なものに変換し、使用することができる。特に、計算機間の通信時間が大きく、無視できない場合に有効である。
【0133】
なお、第八および第九の実施例において、優先順位変換手続き手段572〜573を各計算機に分散配置する実施例を示したが、図10と同様、優先順位変換手続きを一つの計算機上に纏めて配置することは可能である。
【0134】
次に、時間制約を用いて、個々のプログラムの重要性を加味した負荷分散を行うための実施例(第十の実施例)を説明する。第十の実施例では、時間制約を指標として負荷分散を行うことにより、一つの計算機に時間制約の短いプログラムが集中するといったことを避けることができる。図30に本実施例の構成図を示す。符号100〜101,110,130〜136,142〜143,146〜147は図1と同一であり、その動作も同様である。計算機102〜103および計算機内部の詳細は省略している。また符号137,290〜291は図11と同一、符号296〜299,330〜331,334〜335は図16と同一であり、その動作も同様である。プライオリティキュー570〜571,優先順位変換手続き手段572〜573,優先順位対応表580〜581,プログラム構造体590〜596,処理量データ600は図22と同一である。また、ユーザプログラム137はプログラム構造体597によって管理されている。
【0135】
計算機情報330〜331は、それぞれ、計算機負荷情報370〜371と計算機性能情報334〜335とから成る。計算機負荷情報370〜371は各計算機の負荷を単位処理量当たりの時間制約毎に記憶したものである。本実施例では、計算機負荷情報中の単位処理量当たりの時間制約の区切りを等間隔に設定していないが、これを等間隔に設定し、負荷分散処理を容易にすることは可能である。
【0136】
本実施例の動作を図30乃至図34を用いて説明する。まず、新たにプログラムを起動する場合の処理について説明する。プログラムの起動は、例えば、ユーザがプログラムの実行可能ファイル名と時間制約とを指定したコマンドを入力すると、オペレーティングシステムがそのコマンドを解析し、オペレーティングシステム中のプログラム実行・移動手続き手段290〜291にプログラム起動を依頼することにより可能となる。ここでは時間制約50ミリ秒のプログラムの起動コマンドが計算機100で入力され、プログラム実行・移動手続き手段290がプログラムの起動処理を行う場合について、以下説明する。
【0137】
プログラム起動処理340の動作を図31により説明する。まず、プログラム実行・移動手続き手段290が計算機選択手続き手段298に依頼して、新たに起動されるプログラムが計算機負荷情報中、どの時間制約間隔に含まれるかを決定する(処理341)。例えば、プログラムの処理量が128千命令と見積もられると仮定すると、単位処理量当たりの時間制約は50/128=0.39 ミリ秒である。計算機負荷情報370〜371で時間制約0.39 ミリ秒を含む時間制約間隔は0.05〜1.00の範囲に当たる。次に、全ての計算機上の計算機選択手続き手段298〜299に依頼して、単位処理量当たりの時間制約の範囲が0ミリ秒から処理341で決定した範囲までの負荷/性能値を算出させる(処理342)。算出は図30に示した計算機負荷情報370〜371と計算機性能情報334〜335を読み出して行う。図30の状態の各計算機の負荷情報,負荷量,負荷/性能値を図32に示す。計算機負荷情報370〜371は単位処理量当たりの時間制約ごとの実行可能状態のプログラム数を表わしているが、時間制約0ミリ秒から特定の時間制約の範囲に含まれる実行可能状態のプログラム数が負荷量380〜381であり、これを計算機の性能で割ったものが負荷/性能値382〜383である。ここでは新たに起動するプログラムが時間制約0.39 ミリ秒の場合について考えているので、この値を含む最小の時間制約範囲0〜1ミリ秒の負荷/性能値を算出すると、計算機100の負荷/性能値は1.10 ,計算機101の負荷/性能値は0.67となる。
【0138】
次に、計算機選択手続き手段298〜299は互いに通信しあって、最も負荷/性能値が低い計算機を、起動すべきプログラムを実行する計算機として選択する(処理343)。図32では計算機102以降については省略しているが、計算機101の負荷/性能値0.67 が最も小さいとすると、計算機101が選択される。最後にプログラム実行・移動手続きは、選択した計算機でプログラムを起動する処理を行う(処理344)。これは、プログラム起動処理を開始した計算機のプログラム実行・移動手続きが、選択した計算機のプログラム実行・移動手続きに、プログラムを実行可能状態にするよう依頼することにより行う。この場合、計算機100のプログラム実行・移動手続き手段290が、計算機101内のプログラム実行・移動手続き手段291に対して、通信を行い、プログラムを実行可能状態にするよう依頼する。
【0139】
次に、実行可能状態のプログラムを移動する処理について説明する。本実施例では、プログラム移動決定手続き手段296〜297が定期的に起動され、互いに通信しあって各計算機の負荷を確認し、各計算機の負荷が性能に見合って均等に分散されていない場合、均等になるようにプログラムを移動することを決定し、プログラム実行・移動手続き手段290〜291に移動を依頼する。プログラム実行・移動手続き手段290〜291は、計算機選択手続き手段298〜299に依頼して、移動先の計算機を決定し、移動先の計算機のプログラム実行・移動手続きと協調して、プログラムの移動処理を行う。本実施例では計算機の負荷が性能に見合って均等であるかどうかを判定するための値として、前述の負荷/性能値を用いる。
【0140】
プログラム移動処理350の動作を図33を用いて説明する。まず、プログラム移動決定手続きは時間制約の範囲を表わす変数に0.05 ミリ秒を代入する(処理351)。この値は、計算機負荷情報370〜371において、単位処理量当たりの時間制約が最も小さくなる範囲の上限値である。そして、時間制約範囲が0からtミリ秒までについて、各計算機の負荷/性能値を算出する(処理352)。前述のように図30の状態の負荷/性能値の値は図32の負荷/性能値382〜383のようになる。次に全ての計算機のうち、該時間制約範囲の最大の負荷/性能値と最小の負荷/性能値の差Dを算出する(処理353)。図32では計算機102以降については省略しているが、tが0.05 ミリ秒の場合、計算機101の負荷/性能値0.33 が最も大きく、計算機100の負荷/性能値0.30が最も小さいとすると、Dの値は0.03となる。このDの値が閾値Dtを越えているかどうかを調べる(処理354)。本実施例では閾値Dtとして0.3 という値を用いるものとする。Dの値が閾値Dtを越えている場合には処理355に移り、越えていない場合には処理358に移る。ここでは、nが0の場合にはDの値はDtを越えていないので、処理358に移り、tの値が時間制約範囲の最大値(図30の例では、200ミリ秒)であるか否かを判定する。tの値が時間制約範囲の最大値であれば処理を終了し、最大値でなければ、処理359に移行し、変数tに次の時間制約範囲の上限を代入する。ここではtが0.05 ミリ秒なので、処理359に移行して1ミリ秒を代入することになる。
ここで処理352に戻り、各計算機の負荷/性能値を算出し、次に処理353でDの値を算出する。図32では計算機102以降については省略しているが、tが1ミリ秒の場合、計算機100の負荷/性能値1.10 が最も大きく、計算機101の負荷/性能値0.67が最も小さいとすると、Dの値は0.43となる。したがってtが1ミリ秒の時、Dの値は閾値Dtを越えている。Dの値が閾値Dtを越えている場合には負荷が均等ではないものと判定し、移動すべきプログラムを決定する(処理355)。本実施例では、負荷/性能値が最大の計算機の、単位処理量当たりの時間制約tミリ秒以下に対応する実行可能状態のプログラムのうち、プライオリティキューにおける実行順位が最後尾のプログラムを選択することとする。この場合、図30に示したように、計算機100の時間制約0.05 〜1ミリ秒に対応する優先順位は2〜4であり、そのうち実行順位が最後尾なのはK(プログラム構造597)なので、これを移動対象プログラムとする。
【0141】
移動対象プログラムが決定したら、移動対象プログラムが存在する計算機のプログラム移動決定手続きは、同一計算機上のプログラム実行・移動手続きに、移動対象プログラムの移動処理を依頼する。この場合は計算機100のプログラム実行・移動手続き手段290がプログラム移動処理を行う。まず、プログラム実行・移動手続き手段290は計算機選択手続き手段298に依頼して、移動対象プログラムの移動先の計算機を選択する(処理356)。計算機選択手続き手段298は他の計算機上の計算機選択手続きと通信しあって移動先計算機を決定する。本実施例では負荷/性能値が最小の計算機を移動先とする。したがってこの場合、tが1ミリ秒の場合の最小負荷/性能値の計算機101を移動先とする。移動先が決定したらプログラム実行・移動手続きがプログラム移動処理を実行する(処理357)。この場合、計算機100のプログラム実行・移動手続き手段290は、プログラム移動先計算機101のプログラム実行・移動手続き手段291と協調して、プログラム移動処理を実行する。プログラムの移動が行われると、それによる計算機の負荷の状態は計算機負荷情報370〜371に反映される。この場合、計算機負荷情報370〜371は図34に示すように、単位処理量当たりの時間制約0.05 〜1ミリ秒の実行可能状態のプログラムの数が、計算機100では7,計算機101では2になる。
【0142】
このようにして、プログラムの移動が行われると、処理352に戻り、もう一度各計算機の負荷性能値を算出する。この場合には図34に示すような負荷量380〜381、および負荷/性能値382〜383になる。図34では計算機102以降については省略しているが、tが1ミリ秒の場合、まだDの値がDtを越えている場合には、さきほどと同様にプログラムの移動処理を行う。Dの値がDt以下となったとすると、処理358に移る。
【0143】
以上述べた処理をtの値が時間制約範囲の最大値となるまで行うことにより、全ての時間制約範囲について、負荷分散、すなわち計算機性能に見合った負荷の均等化のためのプログラム移動が行われる。
【0144】
以上、本発明の第十の実施例について説明した。本実施例によれば、計算機の負荷が各計算機の性能に見合って均等にユーザプログラムを割り当てることができ、計算機資源を有効に活用できるという効果がある。ここで、本実施例では、計算機の負荷量と性能の両者を考慮して、負荷の均等性の評価を行っており、計算機の性能が変化しても、負荷の評価を平等に行えるという効果がある。
【0145】
また、本実施例によれば、プログラムの各時間制約範囲において、各計算機の性能に見合って均等にユーザプログラムを割り当てることができ、分散処理システム全体で統一的な時間制約によってリアルタイム処理が可能になるという効果がある。特に、プログラムの時間制約を考慮して負荷分散を行うため、一つの計算機に時間制約の短い処理が集中することがなくなり、より厳密なリアルタイム性保証を行うことができる。
【0146】
なお、図30〜図34では、優先順位変換手続き手段572〜573,計算機選択手続き手段298〜299,計算機情報330〜331を各計算機に分散させた構成を採用しているが、これを一つの計算機に配置し、集中管理させることは可能である。
【0147】
図17〜図21では、複数の同一処理を行うプログラムを複数の計算機上で動作させ、緊急度を指定して処理依頼を行うことにより、該同一処理を行うプログラムの中から依頼元プログラムに望ましい優先順位を有するプログラムを選択する方法を示した。次に、時間制約を用いてこのプログラム選択処理を行う本発明の第十一の実施例について示す。図35に時間制約を用いて処理依頼を分散させるための実施例を示す。図35は図17に示した分散処理システムにおいて、緊急度の代わりに時間制約を用いる方法である。図35中、符号100〜103,110,140〜143は図1と同一である。計算機100〜101のハードウェア詳細については省略してある。符号430〜442,450〜451,454〜458,460〜462,470〜479は図17と同一である。優先順位変換手続き手段720および優先順位対応表730は図22における優先順位変換手続き手段572〜573および優先順位対応表580〜581を纏めて一つの手続き、データ構造で管理するように変更したものである。優先順位変換手続き手段720は図24に示した変換手続き手段620を使用することにより、指定された時間制約に対する各計算機上での優先順位を求めることができる。
【0148】
700はプログラム選択手続き手段であり、指定された時間制約を用いて依頼元に最適なプログラムを選択する。このための管理用データ構造として、プログラム位置データベース710を設ける。プログラム位置データベース710は、同一処理を行うプログラムの動作している計算機,優先順位を記憶するプログラム位置情報470〜479を管理する。プログラム位置情報470〜479は同一処理を行うプログラム毎にプログラムリスト711〜716として管理される。本実施例では、プログラムリスト711〜716自体が図22で示した該プログラムの処理量データ600を記憶するものとしている。これにより、指定された時間制約とプログラムリスト711〜716で指定される処理量データ600とから単位処理量当たりの時間制約を導き出すことができる。なお、図22と同様に、処理量データ600をプログラム構造体内に記憶させ、優先順位変換手続き手段720が処理量データ600を読み出して単位処理量当たりの時間制約を導出することも可能である。プログラム選択手続き手段700に登録されているプログラムの優先順位が各計算機で変更された場合や、該プログラムが存在しなくなった場合、および、登録すべきプログラムが新たに起動された場合には、それぞれのプログラムの動作している計算機,優先順位をプログラム選択手続き手段700に通知し、プログラム位置データベースの内容を変更させる。
【0149】
次に、優先順位変換手続き手段720とプログラム選択手続き手段700を用いて、時間制約を用いた処理依頼先選択方法について示す。図36がプログラム選択手法の一例である。本実施例では、ユーザプログラム440がプログラムD(ユーザプログラム435またはユーザプログラム436)に対して処理を依頼するものと仮定する。ユーザプログラム440は、第一に、プログラム選択手続き手段700に対し、時間制約5ミリ秒を満たすプログラムDの位置を尋ねる(通信750)。プログラム選択手続き手段700はプログラムDに関するプログラムリスト714から処理量データ600を取り出す(処理751)。ここで、プログラムDの処理量が128千命令であったと仮定する。与えられた時間制約と処理量データ600から、単位処理量当たりの時間制約は、5.00/128=0.039 ミリ秒であると計算することができる(計算752)。プログラム選択手続き手段700は計算752で得た結果を優先順位変換手続き手段720に通知し、優先順位への変換を依頼する(通信753)。優先順位変換手続き手段720は図24に示す手続き620を実行することにより、時間制約0.039 ミリ秒に対応する各計算機の優先順位を決定し、これを優先順位リスト492として、プログラム選択手続き手段700に通知する(通信754)。優先順位リスト492の内容は、指定された時間制約に対応する各計算機の優先順位を示している。本実施例では、時間制約0.039 ミリ秒が計算機100では優先順位1に、計算機101では優先順位0に対応することを示す優先順位リストが通信754でプログラム選択手続き手段700に返される。プログラム選択手続き手段700では、プログラム位置データベース710の内容と優先順位リスト492の内容とを比較して、処理依頼先プログラムを決定する。プログラムリスト711〜716と優先順位リスト492との比較を行い、指定された優先順位の範囲内に存在するプログラムを見つけるためには図19の処理500を使用すれば良い。図36の実施例では、プログラムDのプログラムリスト714の中で、優先順位リスト492で指定される範囲の優先順位に対応するプログラム位置情報は476(ユーザプログラム436に対応)のみである。したがって、計算機101に存在するユーザプログラム436が処理依頼先であると判断し、これをユーザプログラム440に通知する(通信755)。ユーザプログラム440は通信755で得られたプログラム436に対して処理を依頼する(通信756)。なお、ここで、プログラム選択手続き手段700がユーザプログラム440からの通信750を、直接、ユーザプログラム436に対して送信するという通信仲介方法を採用することも可能である(通信757)。
【0150】
本発明の第十一の実施例を用いることにより、優先順位の異なった複数の同一処理を行うプログラムを分散処理システムの計算機上に分散させ、時間制約に応じた処理依頼の負荷分散を行うことができる。処理依頼は同一内容の処理を依頼する場合であっても、依頼元によって、その時間制約が異なる場合が多く、本実施例の効果が期待できる。
【0151】
さらにまた、本第十一の実施例によれば、該複数の同一処理を行うプログラムの優先順位を予め違ったレベルに設定しておくことにより、前記優先順位変更手続きを使用することなく、異なった時間制約で同一内容の処理を依頼することができ、第八の実施例と同程度のリアルタイム性保証を実現することができる。
【0152】
図37に前述のプログラム選択を行うためのさらに別の実施例である第十二の実施例を示す。図37の実施例は、各計算機に分散させて設けた優先順位変換手続き手段572〜573と、同一処理を行うプログラムが動作している計算機と時間制約とを記憶して処理依頼先を決定するプログラム選択手続き手段760を組み合わせて構築した分散処理システムである。図37中、符号100〜103,110,140〜143は図1と同一である。計算機100〜101のハードウェア詳細については省略してある。ユーザプログラム430〜442並びにプログラム構造体450〜462は、図17と同一の内容を示している。ユーザプログラム432〜433,439に対応するプログラム構造体は省略してある。優先順位変換手続き手段572〜573,優先順位対応表580〜581,処理量データ600は図22と同一の手続き,データ構造である。
【0153】
プログラム選択手続き手段760はこれらのプログラムが動作している計算機,時間制約を管理し、最適な時間制約を有するプログラムの決定を行う。このための管理用データ構造として、プログラム位置データベース770を設ける。プログラム位置データベース770は、同一処理を行うプログラムの動作している計算機,時間制約(この場合、時間制約は処理予測時間の意味合いが強い)を記憶するプログラム位置情報780〜789を管理する。プログラム位置情報780〜789はそれぞれ、同一処理を行うプログラム毎にプログラムリスト771〜776を構成する。図35におけるプログラム位置情報470〜479は、プログラムの動作している計算機,優先順位を記憶するが、プログラム位置情報780〜789は優先順位の代わりに時間制約を記憶する。時間制約は、プログラムの優先順位に対応する単位処理量当たりの時間制約にプログラムの処理量を掛け合わせることによって得ることができる。例えば、ユーザプログラム436(プログラムD)は計算機101の優先順位0で動作している。プログラムDの処理量が128千命令であると仮定すると、その時間制約は、0.034×128=4.35ミリ秒となる。この値がプログラム位置情報786(ユーザプログラム436に対応する位置情報)に記憶されている。プログラム選択手続き手段760に登録されているプログラムの処理量が各計算機で変更された場合や、該プログラムが存在しなくなった場合、また、登録すべきプログラムが新たに起動された場合には、それぞれのプログラムの動作している計算機,単位処理量当たりの時間制約をプログラム選択手続き手段760に通知し、プログラムリストの内容を変更させる。また、各計算機上での優先順位と時間制約との対応関係が変化した場合にも、優先順位変換手続き手段572〜573は対応関係の変化をプログラム選択手続き手段760に通知し、プログラム位置情報780〜789に記憶されている時間制約を変更させる。
【0154】
図37は、さらに、優先順位変換手続き手段572〜573とプログラム選択手続き手段760を用いて、時間制約を用いた処理依頼先選択方法についても示している。図36と同様、ユーザプログラム440がプログラムD(ユーザプログラム435またはユーザプログラム436)に対して処理を依頼するものと仮定する。ユーザプログラム440は、第一に、プログラム選択手続き手段760に対し、時間制約5ミリ秒に対応するプログラムDの位置を尋ねる(通信790)。プログラム選択手続き手段760は各プログラムの動作している計算機と時間制約とを認識しているため、この時点で、プログラムDかつ時間制約5ミリ秒以下という条件を満たすプログラムの位置を認識できる。本実施例では、二つのプログラムDの内、プログラム位置情報786(ユーザプログラム436に対応)のみである。したがって、計算機101に存在するユーザプログラム436が処理依頼先であると判断し、これをユーザプログラム440に通知する(通信791)。ユーザプログラム440は通信791で得られたユーザプログラム436に対して処理を依頼する(通信792)。なお、ここで、プログラム選択手続き手段760がユーザプログラム440からの通信790を、直接、ユーザプログラム436に対して送信するという通信仲介方法を採用することも可能である(通信793)。
【0155】
本発明の第十二の実施例は、第十一の実施例の効果に加え、さらに、プログラム選択手続き手段760が優先順位変換手続き手段572〜573に対して時間制約から優先順位への変換を行わせないため、プログラム選択を図35〜図36に示した方式に比べて高速化することができる。ただし、プログラム位置情報780〜789において時間制約を記憶するため、各計算機の負荷の変化等によって時間制約と優先順位との対応関係が変化した場合、各プログラム位置情報の時間制約を変化させなければならない可能性がある。このため、各計算機上の負荷が時間によって大きく変化する場合には、図35〜図36に示した方式が有利となる。
【0156】
図35〜図36に示した方式,図37に示した方式の他に、プログラム選択手続き手段760と優先順位変換手続き手段720とを組み合わせて構築する方式,プログラム選択手続き手段700と優先順位変換手続き手段572〜573とを組み合わせて構築する方式を実現することは可能である。なお、図35乃至図37においてはプログラムの優先順位を変更して動作させることを考慮していないため、優先順位変更手続き手段146〜147を記述していないが、この手続きを追加して優先順位変更を行えるようにすることも可能である。
【0157】
最後に、図21に示した分散処理システムと同様、時間制約を使用して、一つのプログラムに対して依頼された処理を別の同一処理を行うプログラムに対して転送する本発明の第十三の実施例を図38に示す。図38中、符号100〜103,110,140〜143は図1と同一である。計算機100〜101のハードウェア詳細については省略してある。優先順位変換手続き手段572〜573および優先順位対応表580〜581,処理量データ600は図22と同一の手続き,データ構造を使用する。ユーザプログラム430〜442,プログラム構造体450〜462は、図17と同一の内容を示している。ユーザプログラム432〜433,439に対応するプログラム構造体は省略してある。また、符号760,770〜776,780〜789は図37と同一である。ユーザプログラム438内に記述されている処理転送手続き手段550,待ち行列551,処理依頼552〜553は図21と同一である。
【0158】
時間制約を使用する場合には、依頼された処理を別のプログラムに転送する条件として以下の2種類を代表例として挙げることができる。
【0159】
(1)処理実行中に新たに処理が依頼された場合。
【0160】
(2)現在実行中の処理が時間制約内に間に合わないと認識した場合。
【0161】
前者については、図21と同様にして、処理転送手続き手段550および待ち行列551によって処理依頼を別プログラムに転送させることができる。ただし、この場合の相違点として、処理転送手続き手段550はプログラム選択手続き手段760に時間制約を指定する。
【0162】
後者の場合の処理転送は、プログラム内に処理時間予測手続き手段800および時間制約設定手続き手段802を設けることによって達成することができる。処理時間予測手続き手段800は現在実行中の処理が完了するまでの時間を予測する手段である。これは、プログラムの残り処理量801を記憶すること等によって予測することができる。例えば、ユーザプログラム438の残り処理量801が60である場合、ユーザプログラム438(計算機101上での優先順位1)の単位処理量当たりの時間制約が0.074 ミリ秒なので、0.074×60=4.44 ミリ秒と予測することができる。時間制約設定手続き手段802は新たに別プログラムに対して処理を依頼する際に、新たな時間制約を計算する手段である。これは、処理依頼を受理した時点からの経過時間803等を記憶することによって達成できる。
【0163】
通信810〜816の流れは、上記処理依頼の転送を行う際に、どのように処理依頼が別プログラムに送られるかを示したものである。本実施例では、ユーザプログラム440がユーザプログラム438(プログラムFの一つ)に対して時間制約5ミリ秒で処理依頼を行い(通信810)、これが別プログラムに転送される過程を例として示している。ここで、処理依頼552の実行開始から経過時間1.8 ミリ秒後に残り処理量が60千命令であったと仮定する。処理時間予測手続き手段800は、優先順位変換手続き手段573から自己のプログラムの優先順位1に対応する単位処理量当たりの時間制約0.074 ミリ秒を受け取り(通信811)、上述の計算を行って処理予測時間4.44 ミリ秒を計算する(通信812)。時間制約設定手続き手段802は時間制約5ミリ秒と経過時間1.8 ミリ秒とから新たな時間制約3.2 ミリ秒を計算する(通信813)。新たな時間制約内に残っている処理を完了することができないと予測されるので、この処理依頼を別プログラムに転送する。このため、新たに計算された時間制約3.2 ミリ秒を指定して、該時間制約を満たすプログラムFが別に存在するかどうかをプログラム選択手続き手段760に尋ねる(通信814)。プログラム選択手続き手段760はプログラムFのプログラムリスト776から時間制約3.2 ミリ秒を満たすプログラム位置情報を調べる。図38の例では、プログラム位置情報789(計算機103上のユーザプログラム439に対応)を見つけることができる。プログラム選択手続き手段760はプログラム位置情報789に対応するユーザプログラム439の位置を処理転送手続き手段550に通知する(通信815)。これを受けた処理転送手続き手段550がユーザプログラム439に対して、時間制約に間に合わないと判断した処理552を依頼することになる(通信816)。
【0164】
本第十三の実施例を用いれば、個々のプログラムに対して依頼された処理を他の同一時間制約を持つプログラムに転送することができ、特定のプログラムに対して処理が集中することなく、処理依頼を複数のプログラムで分散させることができる。さらにまた、新たに依頼された処理が、実行中の処理の完了を待つ必要がなく、リアルタイム性保証をさらに向上させることが可能となる。
【0165】
さらに、本実施例によれば、あるプログラムに対して依頼された処理が時間制約に間に合わないと認識した時点で、他のより高速に処理を完了できるプログラムに処理依頼を転送させることができ、処理依頼の時間制約内の完了をさらに厳密に保証することができる。このような場合の処理依頼転送は、何らかの突発的な事故によりプログラムの実行が遅れた場合にも、時間制約を保証できるようにしたものである。
【0166】
図38では、処理転送手続き手段550,待ち行列551,処理時間予測手続き手段800,時間制約設定手続き手段802をプログラム内部に配置したが、これをプログラム外部に配置し、複数のプログラムが共通に使用する手続き並びにデータ構造として実現することも可能である。また、本実施例では、プログラム選択手続き手段760と優先順位変換手続き手段572〜573との組み合わせから構成される図37の分散処理システムに処理転送手続き手段550,待ち行列551,処理時間予測手続き手段800,時間制約設定手続き手段802を追加した構成となるが、プログラム選択手続き手段700と優先順位変換手続き手段720との組み合わせから構成される図35の分散処理システムにこれらの手続き,データ構造を追加しても同様の処理を行うことができる。
【0167】
以上述べた本発明の第十三の実施例には、別の実施例がある。第十三の実施例は、あるプログラムに対して依頼された処理が時間制約に間に合わないと判断された場合、該処理を別のプログラムに転送するというものであったが、該処理を転送せず、処理を実行するプログラムにより高い優先順位を与え、実行中の処理をより迅速に処理させるという方式を採用することも可能である。この方式は、図38の例では、新たな時間制約3.2 ミリ秒と残り処理量60千命令とから、単位処理量当たりの時間制約3.2/60=0.053ミリ秒を計算し、ユーザプログラム438の優先順位を該単位処理量当たりの時間制約を満たす優先順位0に高め、処理を続けるものである。これにより、処理を別プログラムに転送することなく、望ましいリアルタイム性を保証することができる。なお、この方式を採用するためには、優先順位変更手続き手段146〜147を各計算機上に配置させる必要がある。
【0168】
なお、図30乃至図38において、図29の通信時間予測手続き手段670〜671を導入し、時間制約をより厳密に判断させることは可能である。
【0169】
以上の第一乃至第十三の実施例に述べたように、本発明は、緊急度または時間制約を用いて分散処理システムの各計算機の優先順位を統一的に管理し、より厳密なリアルタイム性保証を実現するものである。
【0170】
緊急度を用いて優先順位管理を行う本発明によれば、優先順位変換手段と優先順位変更手段を用いることにより、同一緊急度を有する処理が性能,負荷の異なるいずれの計算機においても同程度の迅速さで実行されることを保証できるようになる。
【0171】
また、計算機選択手段を用いることにより、緊急度の高い処理が一つの計算機に集中するといった現象がなくなり、各計算機におけるリアルタイム性保証をより厳密に行うことが可能となる。
【0172】
さらにまた、プログラム選択手段を用いることにより、前記優先順位変更手段が存在しない場合でも、複数の緊急度の異なるプログラムを用意して、これらのうちから最も適した緊急度のプログラムに対して処理を依頼し、望ましい迅速さで処理を実行させることが可能となる。
【0173】
さらにまた、処理転送手段を用いることにより、処理実行中のプログラムに新たに依頼された処理を、該プログラムの処理が終了するまで待たせることなく、別の同程度の迅速さで処理できるプログラムで実行させることが可能となり、より厳密なリアルタイム性保証を実現することができる。
【0174】
時間制約を用いて優先順位管理を行う本発明によれば、優先順位変換手段と優先順位変更手段を用いることにより、処理を時間制約に対応した各計算機の優先順位で実行させ、時間制約の短い処理を他のより時間制約の緩い処理の前に実行させるといったことが可能となり、分散処理システムにおける各処理のリアルタイム性をより厳密に保証することができる。また、時間制約の長い処理であっても、他処理を優先的に処理させている間に、処理が行われないまま該時間制約が近付いてくることがあり、この際には、短くなった時間制約に応じて優先順位をより高く再設定し、この優先順位で処理を実行させることが可能となる。
【0175】
また、通信時間予測手段を用いることにより、計算機間の通信時間が無視できない場合に、処理の時間制約をより厳密に設定することが可能となる。
【0176】
さらにまた、計算機選択手段を用いることにより、処理の時間制約の短い処理が一つの計算機に集中するといった現象がなくなり、各計算機におけるリアルタイム性保証をより厳密に行うことが可能となる。
【0177】
さらにまた、プログラム選択手段を用いることにより、前記優先順位変更手段が存在しない場合でも、複数の時間制約の異なるプログラムを用意して、これらのうちから最も適した時間制約のプログラムに対して処理を依頼し、望ましい迅速さで処理を実行させることが可能となる。
【0178】
さらにまた、処理転送手段を用いることにより、処理実行中のプログラムに新たに依頼された処理を、該プログラムの処理が終了するまで待たせることなく、別の同程度の時間制約を有するプログラムで実行させることが可能となり、より厳密なリアルタイム性保証を実現することができる。
【0179】
さらにまた、処理時間予測手段と時間制約設定手段を用いることにより、プログラムが現在の優先順位で実行される場合に処理の時間制約を満たすか否かを判定し、時間制約を満たせないと判定される場合には、より短い時間制約を設定できる。新たに設定した時間制約を用いて、前記優先順位変換手段と優先順位変更手段がより高い優先順位をプログラムに与えることや、該新しい時間制約を満たし得る別の同一プログラムに処理を転送,実行させることができ、結果的に最初に与えられた時間制約を満たすように管理することが可能となる。
【0180】
【発明の効果】
本発明によれば、分散処理システムにおいて、処理の各計算機における優先順位を統一的に管理できる。さらに、性能,負荷および機種の異なる計算機を含み得る分散処理システムにおいて、より厳密なリアルタイム性の保証を行うことが可能となる。
【図面の簡単な説明】
【図1】本発明の第一の実施例の構成図である。
【図2】緊急度と優先順位との対応を示す優先順位対応表のデータ構造を示す図である。
【図3】優先順位変換手段の別の実現例を示す図である。
【図4】緊急度を指定して処理依頼を行う際のプログラム形式を示す図である。
【図5】本発明の第一の実施例において、緊急度指定通信を行う際の処理の流れを示す図である。
【図6】緊急度と優先順位との対応を示す優先順位対応表の内容を負荷に応じて変更するためのフローチャートである。
【図7】緊急度と優先順位との対応を示す優先順位対応表を、負荷の増減によって変更する形式を示す図である。
【図8】緊急度と優先順位との対応を示す優先順位対応表を、負荷の増減によって変更するプログラムを示す図である。
【図9】緊急度と優先順位との対応を示す優先順位対応表の変更に伴って、プログラムの優先順位を変更するためのフローチャートである。
【図10】本発明の第二の実施例、並びに、該実施例における緊急度指定通信の処理の流れを示す図である。
【図11】本発明の第三の実施例の構成図である。
【図12】本発明の第三の実施例において、プログラム起動処理の流れを示すフローチャートである。
【図13】本発明の第三の実施例において、計算機負荷情報,負荷量,負荷/性能値の計算例を示す図である。
【図14】本発明の第三の実施例において、プログラム移動処理の流れを示すフローチャートである。
【図15】本発明の第三の実施例において、計算機負荷情報,負荷量,負荷/性能値の別の計算例を示す図である。
【図16】本発明の第四の実施例の構成図である。
【図17】本発明の第五の実施例の構成図である。
【図18】本発明の第五の実施例において、プログラム選択を行う際の処理の流れを示す図である。
【図19】指定優先順位のプログラムを見つける処理の流れを示すフローチャートである。
【図20】本発明の第六の実施例、並びに、該実施例におけるプログラム選択処理の流れを示す図である。
【図21】本発明の第七の実施例、並びに、該実施例における処理依頼転送の流れを示す図である。
【図22】本発明の第八の実施例の構成図である。
【図23】時間制約と優先順位との対応を示す優先順位対応表のデータ構造を示す図である。
【図24】時間制約から優先順位を導くプログラムを示す図である。
【図25】時間制約を指定して処理依頼を行う際のプログラム形式を示す図である。
【図26】本発明の第八の実施例において、時間制約指定通信を行う際の処理の流れを示す図である。
【図27】時間制約と優先順位との対応を示す優先順位対応表の内容を負荷に応じて変更するためのフローチャートである。
【図28】時間制約と優先順位との対応を示す優先順位対応表を、負荷の増減によって変更する形式を示す図である。
【図29】本発明の第九の実施例、並びに、該実施例において通信時間を考慮した時間制約指定通信を行う際の処理の流れを示す図である。
【図30】本発明の第十の実施例の構成図である。
【図31】本発明の第十の実施例において、プログラム起動処理の流れを示すフローチャートである。
【図32】本発明の第十の実施例において、計算機負荷情報,負荷量,負荷/性能値の計算例を示す図である。
【図33】本発明の第十の実施例において、プログラム移動処理の流れを示すフローチャートである。
【図34】本発明の第十の実施例において、計算機負荷情報,負荷量,負荷/性能値の別の計算例を示す図である。
【図35】本発明の第十一の実施例の構成図である。
【図36】本発明の第十一の実施例において、プログラム選択を行う際の処理の流れを示す図である。
【図37】本発明の第十二の実施例、並びに、該実施例におけるプログラム選択処理の流れを示す図である。
【図38】本発明の第十三の実施例、並びに、該実施例における処理依頼転送の流れを示す図である。
【符号の説明】
100〜103…計算機、110…ネットワーク、130〜137,430〜442…ユーザプログラム、140〜141,570〜571…プライオリティキュー、142〜143…スケジューラ、144〜145,260,572〜573,720…優先順位変換手続き手段、146〜147…優先順位変更手続き手段、150〜151,270,580〜581,730…優先順位対応表、290〜291…プログラム実行・移動手続き手段、292,296〜297…プログラム移動決定手続き手段、294,298〜299…計算機選択手続き手段、300,330〜331…計算機情報、410,510,700,760…プログラム選択手続き手段、420,520,710,770…プログラム位置データベース、490〜492…優先順位リスト、550…処理転送手続き手段、551…待ち行列、600…処理量データ、670〜671…通信時間予測手続き手段、680〜681…通信時間表、800…処理時間予測手続き手段、802…時間制約設定手続き手段。
Claims (4)
- 複数の計算機上で複数のプログラムが動作する分散処理システムにおいて、各計算機は、該計算機の性能と負荷に応じて、処理の緊急度と優先順位との変換を行う優先順位変換手段と、
該優先順位変換手段が示す優先順位にしたがって、処理を実行するプログラムの優先順位を変更する優先順位変更手段とを有し、
該複数のプログラムは、別プログラムに対して処理を依頼する際に、処理の緊急度を指定することを特徴とする分散処理システム。 - 複数の計算機上で複数のプログラムが動作する分散処理システムにおいて、各計算機は、該計算機の性能と負荷に応じて、処理の時間制約,処理量と優先順位との変換を行う優先順位変換手段と、
該優先順位変換手段が示す優先順位にしたがって、処理を実行するプログラムの優先順位を変更する優先順位変更手段とを有し、
該複数のプログラムは、別プログラムに対して処理を依頼する際に、処理の時間制約を指定することを特徴とする分散処理システム。 - 複数の計算機上で複数のプログラムが動作する分散処理システムにおいて、各計算機は、該計算機の性能と負荷に応じて、処理の時間制約,処理量と優先順位との変換を行う優先順位変換手段と、
該優先順位変換手段が示す優先順位にしたがって、処理を実行するプログラムの優先順位を変更する優先順位変更手段と、
他計算機との通信時間を予測する通信時間予測手段とを有し、
該複数のプログラムは、別プログラムに対して処理を依頼する際に、該別プログラムの動作する計算機との通信予測時間を該通信予測手段から入力し、該通信予測時間を考慮して、処理の時間制約を指定することを特徴とする分散処理システム。 - 複数の計算機上で複数のプログラムが動作する分散処理システムにおいて、計算機の性能,負荷,処理量に応じて、該複数のプログラムが実行中の処理の処理時間を予測する処理時間予測手段と、
該処理時間予測手段が示す予測処理時間が該処理に要求される時間制約を満足しない際に、該処理が要求された時点からの経過時間と該要求される時間制約から新たに時間制約を設定する時間制約設定手段と、
該新たな時間制約,処理量と各計算機上での優先順位との変換を行う優先順位変換手段と、
該優先順位変換手段が示す優先順位にしたがって、処理を実行するプログラムの優先順位を変更する優先順位変更手段を有する分散処理システム。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP07561094A JP3658420B2 (ja) | 1994-04-14 | 1994-04-14 | 分散処理システム |
DE19513922A DE19513922A1 (de) | 1994-04-14 | 1995-04-12 | Verteiltes Computersystem |
US08/421,249 US5845116A (en) | 1994-04-14 | 1995-04-13 | Distributed computing system |
US09/167,498 US6578064B1 (en) | 1994-04-14 | 1998-10-07 | Distributed computing system |
US10/342,272 US6957434B2 (en) | 1994-04-14 | 2003-01-15 | Distributed computing system |
US10/965,847 US20050050544A1 (en) | 1994-04-14 | 2004-10-18 | Distributed computing system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP07561094A JP3658420B2 (ja) | 1994-04-14 | 1994-04-14 | 分散処理システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07282013A JPH07282013A (ja) | 1995-10-27 |
JP3658420B2 true JP3658420B2 (ja) | 2005-06-08 |
Family
ID=13581159
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP07561094A Expired - Fee Related JP3658420B2 (ja) | 1994-04-14 | 1994-04-14 | 分散処理システム |
Country Status (3)
Country | Link |
---|---|
US (4) | US5845116A (ja) |
JP (1) | JP3658420B2 (ja) |
DE (1) | DE19513922A1 (ja) |
Families Citing this family (96)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3658420B2 (ja) * | 1994-04-14 | 2005-06-08 | 株式会社日立製作所 | 分散処理システム |
JPH08263481A (ja) * | 1995-03-22 | 1996-10-11 | Hitachi Ltd | 電子化文書回覧システム |
US5754776A (en) * | 1995-12-28 | 1998-05-19 | Intel Corporation | Re-prioritizing background data transfers in multipoint conferencing |
US6412017B1 (en) | 1996-07-01 | 2002-06-25 | Microsoft Corporation | Urgent replication facility |
US6542610B2 (en) * | 1997-01-30 | 2003-04-01 | Intel Corporation | Content protection for digital transmission systems |
US6223243B1 (en) * | 1997-06-12 | 2001-04-24 | Nec Corporation | Access control method with plural users having I/O commands prioritized in queues corresponding to plural memory units |
DE19744230B4 (de) | 1997-10-07 | 2007-10-25 | Robert Bosch Gmbh | Steuergeräte für ein System und Verfahren zum Betrieb eines Steuergeräts |
US6148324A (en) * | 1998-01-05 | 2000-11-14 | Lucent Technologies, Inc. | Prioritized load balancing among non-communicating processes in a time-sharing system |
US20050204388A1 (en) * | 1998-06-11 | 2005-09-15 | Knudson Edward B. | Series reminders and series recording from an interactive television program guide |
US6269274B1 (en) * | 1998-09-09 | 2001-07-31 | Honeywell International Inc | System and method for balancing and distributing control algorithm processing load and real time plant control system employing the same |
US6363445B1 (en) | 1998-10-15 | 2002-03-26 | Micron Technology, Inc. | Method of bus arbitration using requesting device bandwidth and priority ranking |
JP4072271B2 (ja) * | 1999-02-19 | 2008-04-09 | 株式会社日立製作所 | 複数のオペレーティングシステムを実行する計算機 |
US6874144B1 (en) * | 1999-04-05 | 2005-03-29 | International Business Machines Corporation | System, method, and program for implementing priority inheritance in an operating system |
DE19930119C2 (de) * | 1999-06-30 | 2001-06-07 | Siemens Ag | Prioritätsverwaltungsverfahren |
US6754848B1 (en) * | 1999-09-30 | 2004-06-22 | International Business Machines Corporation | Method, system and program products for operationally migrating a cluster through emulation |
US6748413B1 (en) * | 1999-11-15 | 2004-06-08 | International Business Machines Corporation | Method and apparatus for load balancing of parallel servers in a network environment |
US6738972B1 (en) * | 1999-12-30 | 2004-05-18 | Opentv, Inc. | Method for flow scheduling |
JP4475614B2 (ja) * | 2000-04-28 | 2010-06-09 | 大正製薬株式会社 | 並列処理方法におけるジョブの割り当て方法および並列処理方法 |
DE01951081T1 (de) * | 2000-06-19 | 2004-04-15 | P.C. Krause and Associates, Inc, West Lafayette | Verteilte simulation |
JP2002024194A (ja) * | 2000-07-05 | 2002-01-25 | Matsushita Electric Ind Co Ltd | ジョブ分散処理方法および分散処理システム |
US6886045B1 (en) * | 2000-08-14 | 2005-04-26 | At&T Corp. | Subscription-based priority interactive help services on the internet |
US6971101B1 (en) * | 2000-09-12 | 2005-11-29 | Motorola, Inc. | Managing asynchronous requests for user interface resources in an information system |
US6957433B2 (en) * | 2001-01-08 | 2005-10-18 | Hewlett-Packard Development Company, L.P. | System and method for adaptive performance optimization of data processing systems |
JP3716753B2 (ja) * | 2001-03-21 | 2005-11-16 | 日本電気株式会社 | マルチプロセッサ構成の計算機間におけるトランザクション負荷分散方法及び方式並びにプログラム |
WO2002080613A1 (en) * | 2001-03-28 | 2002-10-10 | Telefonaktiebolaget Lm Ericsson | Load distribution between nodes in communication networks |
US6820126B2 (en) * | 2001-04-02 | 2004-11-16 | Motorola, Inc. | System for dynamic process assignment in a local area network and method therefor |
JP2003029989A (ja) * | 2001-07-16 | 2003-01-31 | Matsushita Electric Ind Co Ltd | 分散処理システムおよびジョブ分散処理方法 |
US6922791B2 (en) * | 2001-08-09 | 2005-07-26 | Dell Products L.P. | Failover system and method for cluster environment |
JP2003091424A (ja) * | 2001-09-18 | 2003-03-28 | Matsushita Electric Ind Co Ltd | 分散処理システムおよびジョブ分散処理方法 |
JP3918697B2 (ja) * | 2001-12-27 | 2007-05-23 | 日本電気株式会社 | サーバ構築支援システム及びサーバ構築支援方法並びにプログラム |
JP2003256222A (ja) * | 2002-03-04 | 2003-09-10 | Matsushita Electric Ind Co Ltd | 分散処理システム、ジョブ分散処理方法およびプログラム |
JP3986346B2 (ja) * | 2002-03-28 | 2007-10-03 | 富士通株式会社 | 処理装置、サーバ、およびプログラム |
US7529822B2 (en) * | 2002-05-31 | 2009-05-05 | Symantec Operating Corporation | Business continuation policy for server consolidation environment |
US8020114B2 (en) * | 2002-06-07 | 2011-09-13 | Sierra Wireless, Inc. | Enter-then-act input handling |
US7080379B2 (en) | 2002-06-20 | 2006-07-18 | International Business Machines Corporation | Multiprocessor load balancing system for prioritizing threads and assigning threads into one of a plurality of run queues based on a priority band and a current load of the run queue |
JP2005531061A (ja) * | 2002-06-24 | 2005-10-13 | ドコモ コミュニケーションズ ラボラトリーズ ユー・エス・エー インコーポレーティッド | モバイルアプリケーションのための実行環境 |
JP4505707B2 (ja) * | 2003-02-13 | 2010-07-21 | 株式会社白子 | 血管拡張による肩凝り又は冷え症治療用の医薬組成物 |
US7437556B2 (en) * | 2003-05-09 | 2008-10-14 | Sun Microsystems, Inc. | Global visibility controls for operating system partitions |
US7389512B2 (en) * | 2003-05-09 | 2008-06-17 | Sun Microsystems, Inc. | Interprocess communication within operating system partitions |
US7337445B1 (en) | 2003-05-09 | 2008-02-26 | Sun Microsystems, Inc. | Virtual system console for virtual application environment |
US8892878B2 (en) * | 2003-05-09 | 2014-11-18 | Oracle America, Inc. | Fine-grained privileges in operating system partitions |
US7461080B1 (en) | 2003-05-09 | 2008-12-02 | Sun Microsystems, Inc. | System logging within operating system partitions using log device nodes that are access points to a log driver |
US20040226015A1 (en) * | 2003-05-09 | 2004-11-11 | Leonard Ozgur C. | Multi-level computing resource scheduling control for operating system partitions |
US7188120B1 (en) | 2003-05-09 | 2007-03-06 | Sun Microsystems, Inc. | System statistics virtualization for operating systems partitions |
US7203944B1 (en) * | 2003-07-09 | 2007-04-10 | Veritas Operating Corporation | Migrating virtual machines among computer systems to balance load caused by virtual machines |
DE10345816A1 (de) * | 2003-09-30 | 2005-05-25 | Rexroth Indramat Gmbh | Kombination aus Steuerung und Antrieb |
US7146511B2 (en) * | 2003-10-07 | 2006-12-05 | Hewlett-Packard Development Company, L.P. | Rack equipment application performance modification system and method |
US20050155032A1 (en) * | 2004-01-12 | 2005-07-14 | Schantz John L. | Dynamic load balancing |
US7080178B2 (en) * | 2004-02-09 | 2006-07-18 | Arm Limited | Interrupt pre-emption and ordering within a data processing system |
US7900206B1 (en) | 2004-03-31 | 2011-03-01 | Symantec Operating Corporation | Information technology process workflow for data centers |
US20050240934A1 (en) * | 2004-04-21 | 2005-10-27 | Hewlett-Packard Development Company, L.P. | Task management based on system utilization |
US8181182B1 (en) | 2004-11-16 | 2012-05-15 | Oracle America, Inc. | Resource allocation brokering in nested containers |
US7954062B2 (en) * | 2005-01-03 | 2011-05-31 | International Business Machines Corporation | Application status board mitigation system and method |
US8108871B2 (en) * | 2005-01-13 | 2012-01-31 | Hewlett-Packard Development Company, L.P. | Controlling computer resource utilization |
CA2538503C (en) * | 2005-03-14 | 2014-05-13 | Attilla Danko | Process scheduler employing adaptive partitioning of process threads |
US8387052B2 (en) | 2005-03-14 | 2013-02-26 | Qnx Software Systems Limited | Adaptive partitioning for operating system |
US8245230B2 (en) * | 2005-03-14 | 2012-08-14 | Qnx Software Systems Limited | Adaptive partitioning scheduler for multiprocessing system |
US9361156B2 (en) | 2005-03-14 | 2016-06-07 | 2236008 Ontario Inc. | Adaptive partitioning for operating system |
US8589944B2 (en) * | 2005-03-16 | 2013-11-19 | Ricoh Production Print Solutions | Method and system for task mapping to iteratively improve task assignment in a heterogeneous computing system |
US8392927B2 (en) * | 2005-05-19 | 2013-03-05 | Hewlett-Packard Development Company, L. P. | System and method for determining a partition of a consumer's resource access demands between a plurality of different classes of service |
US8326990B1 (en) | 2005-07-15 | 2012-12-04 | Symantec Operating Corporation | Automated optimal workload balancing during failover in share-nothing database systems |
JP4871546B2 (ja) | 2005-08-22 | 2012-02-08 | 株式会社日立製作所 | ストレージシステム |
DE102005046072B4 (de) * | 2005-09-27 | 2009-04-02 | Daimler Ag | Verfahren und Vorichtung zur Prozeßregelung |
US7975269B2 (en) * | 2005-09-27 | 2011-07-05 | Sony Computer Entertainment Inc. | Parallel processor methods and apparatus |
JP5109250B2 (ja) * | 2005-11-08 | 2012-12-26 | 横河電機株式会社 | 分散システム |
JP2007156976A (ja) * | 2005-12-07 | 2007-06-21 | Hitachi Kokusai Electric Inc | 情報処理システム |
US8539496B1 (en) * | 2005-12-12 | 2013-09-17 | At&T Intellectual Property Ii, L.P. | Method and apparatus for configuring network systems implementing diverse platforms to perform business tasks |
US7882227B2 (en) | 2006-02-23 | 2011-02-01 | Oracle America, Inc. | Mechanism for implementing file access control across a network using labeled containers |
US7885975B2 (en) | 2006-02-23 | 2011-02-08 | Oracle America, Inc. | Mechanism for implementing file access control using labeled containers |
US8938473B2 (en) | 2006-02-23 | 2015-01-20 | Oracle America, Inc. | Secure windowing for labeled containers |
US8938554B2 (en) | 2006-03-02 | 2015-01-20 | Oracle America, Inc. | Mechanism for enabling a network address to be shared by multiple labeled containers |
US7760743B2 (en) * | 2006-03-06 | 2010-07-20 | Oracle America, Inc. | Effective high availability cluster management and effective state propagation for failure recovery in high availability clusters |
JP2008040645A (ja) * | 2006-08-03 | 2008-02-21 | Hitachi Ltd | Nasマイグレーションによる負荷分散方法、並びに、その方法を用いた計算機システム及びnasサーバ |
JP2008084009A (ja) * | 2006-09-27 | 2008-04-10 | Toshiba Corp | マルチプロセッサシステム |
DE102006052757B4 (de) * | 2006-11-08 | 2014-10-09 | Siemens Aktiengesellschaft | Verfahren zum Betrieb eines Automatisierungsgerätes mit einer Verarbeitungseinheit mit mehreren Verarbeitungskernen |
US8190561B1 (en) * | 2006-12-06 | 2012-05-29 | At&T Mobility Ii Llc | LDAP replication priority queuing mechanism |
US8589534B2 (en) * | 2007-09-13 | 2013-11-19 | Ricoh Company, Ltd. | Device information management apparatus, device information management method, and storage medium which operates during a failure |
JP5382449B2 (ja) * | 2007-11-26 | 2014-01-08 | 日本電気株式会社 | 仮想計算機移行システム、仮想計算機移行方法および仮想計算機移行プログラム |
JP2009199499A (ja) | 2008-02-25 | 2009-09-03 | Fujitsu Ltd | リソース制御プログラム及びリソース制御方法 |
JP2010204876A (ja) * | 2009-03-03 | 2010-09-16 | Hitachi Ltd | 分散システム |
JP5347648B2 (ja) * | 2009-03-30 | 2013-11-20 | 富士通株式会社 | プログラム、情報処理装置及び状態出力方法 |
US8223693B2 (en) * | 2009-06-23 | 2012-07-17 | Mediatek Inc. | PTA method and apparatus utilizing the same |
WO2011158405A1 (ja) * | 2010-06-18 | 2011-12-22 | パナソニック株式会社 | 優先度情報生成装置、情報処理装置 |
JP5582016B2 (ja) * | 2010-12-15 | 2014-09-03 | ソニー株式会社 | タスク管理装置、タスク管理方法、及びプログラム |
JP5915656B2 (ja) | 2011-08-09 | 2016-05-11 | 富士通株式会社 | スケジューリング方法、およびスケジューリングシステム |
WO2013038566A1 (ja) * | 2011-09-16 | 2013-03-21 | 富士通株式会社 | コンピュータシステム |
US20130073600A1 (en) * | 2011-09-21 | 2013-03-21 | Jonathan A. Jenkins | Remote process execution management |
DE102012011295A1 (de) * | 2012-06-08 | 2013-12-12 | Robert Bosch Gmbh | Vorrichtung und verfahren für eine maschine, feldgerät für eine maschine und steuergerät für eine maschine |
US9477529B2 (en) * | 2012-06-20 | 2016-10-25 | International Business Machines Corporation | Job distributed within a grid environment using mega-host groupings of execution hosts based on resource attributes |
US9575760B2 (en) * | 2013-05-17 | 2017-02-21 | Nvidia Corporation | Techniques for sharing priorities between streams of work and dynamic parallelism |
US20150081400A1 (en) * | 2013-09-19 | 2015-03-19 | Infosys Limited | Watching ARM |
US9660878B2 (en) * | 2014-03-14 | 2017-05-23 | International Business Machines Corporation | Managing fabric priorities across heterogeneous server platforms |
US9665398B2 (en) * | 2014-05-30 | 2017-05-30 | Apple Inc. | Method and apparatus for activity based execution scheduling |
WO2016161171A1 (en) * | 2015-03-31 | 2016-10-06 | Avigilon Corporation | Security device capability discovery and device selection |
US10111273B2 (en) * | 2016-05-24 | 2018-10-23 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Communication paths hierarchy for managed computing device |
US10637736B2 (en) | 2016-06-06 | 2020-04-28 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd | Acquisition of information from managed computing device not communicatively connected to management computing device |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5168566A (en) * | 1983-11-25 | 1992-12-01 | Sharp Kabushiki Kaisha | Multi-task control device for central processor task execution control provided as a peripheral device and capable of prioritizing and timesharing the tasks |
US4794517A (en) * | 1985-04-15 | 1988-12-27 | International Business Machines Corporation | Three phased pipelined signal processor |
US4796178A (en) * | 1985-10-15 | 1989-01-03 | Unisys Corporation | Special purpose processor for off-loading many operating system functions in a large data processing system |
US5025369A (en) * | 1988-08-25 | 1991-06-18 | David Schwartz Enterprises, Inc. | Computer system |
CA1318409C (en) * | 1988-10-27 | 1993-05-25 | Dennis L. Debruler | Multiprocessor load sharing arrangement |
US5179702A (en) * | 1989-12-29 | 1993-01-12 | Supercomputer Systems Limited Partnership | System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling |
JP2829078B2 (ja) * | 1990-02-05 | 1998-11-25 | 株式会社日立製作所 | プロセス分散方法 |
US5243531A (en) * | 1990-09-28 | 1993-09-07 | Volt Information Sciences, Inc. | Method for routing and scheduling operations on elements of a work product in a production system |
US5504899A (en) * | 1991-10-17 | 1996-04-02 | Digital Equipment Corporation | Guaranteeing global serializability by applying commitment ordering selectively to global transactions |
JPH05128077A (ja) * | 1991-11-06 | 1993-05-25 | Hitachi Ltd | 複数計算機システムの分散処理方法 |
JPH05282256A (ja) | 1991-12-27 | 1993-10-29 | Nec Eng Ltd | プロセッサ間メッセージ通信方法 |
US5640563A (en) * | 1992-01-31 | 1997-06-17 | International Business Machines Corporation | Multi-media computer operating system and method |
US5522070A (en) * | 1992-03-19 | 1996-05-28 | Fujitsu Limited | Computer resource distributing method and system for distributing a multiplicity of processes to a plurality of computers connected in a network |
JPH05324358A (ja) * | 1992-05-20 | 1993-12-07 | Hitachi Ltd | 性能予測装置 |
US6125196A (en) * | 1992-10-02 | 2000-09-26 | Unisys Corporation | Method for identifying suspect items in an out-of-balance transaction |
JPH06250928A (ja) * | 1993-02-24 | 1994-09-09 | Matsushita Electric Ind Co Ltd | 情報処理装置 |
JP3658420B2 (ja) * | 1994-04-14 | 2005-06-08 | 株式会社日立製作所 | 分散処理システム |
US5590323A (en) * | 1994-05-13 | 1996-12-31 | Lucent Technologies Inc. | Optimal parallel processor architecture for real time multitasking |
JP3486308B2 (ja) | 1996-10-30 | 2004-01-13 | 三菱レイヨン・エンジニアリング株式会社 | 膜処理装置 |
-
1994
- 1994-04-14 JP JP07561094A patent/JP3658420B2/ja not_active Expired - Fee Related
-
1995
- 1995-04-12 DE DE19513922A patent/DE19513922A1/de not_active Withdrawn
- 1995-04-13 US US08/421,249 patent/US5845116A/en not_active Expired - Fee Related
-
1998
- 1998-10-07 US US09/167,498 patent/US6578064B1/en not_active Expired - Fee Related
-
2003
- 2003-01-15 US US10/342,272 patent/US6957434B2/en not_active Expired - Fee Related
-
2004
- 2004-10-18 US US10/965,847 patent/US20050050544A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
JPH07282013A (ja) | 1995-10-27 |
US6578064B1 (en) | 2003-06-10 |
US5845116A (en) | 1998-12-01 |
US20050050544A1 (en) | 2005-03-03 |
DE19513922A1 (de) | 1995-10-19 |
US6957434B2 (en) | 2005-10-18 |
US20030115241A1 (en) | 2003-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3658420B2 (ja) | 分散処理システム | |
Ge et al. | GA-based task scheduler for the cloud computing systems | |
Van Tilborg et al. | Foundations of real-time computing: Scheduling and resource management | |
US8185908B2 (en) | Dynamic scheduling in a distributed environment | |
EP3770774B1 (en) | Control method for household appliance, and household appliance | |
KR100420421B1 (ko) | 계산환경의 논리 프로세서들을 관리하는 방법, 시스템 및 기록매체 | |
CN114138486B (zh) | 面向云边异构环境的容器化微服务编排方法、***及介质 | |
JP4992408B2 (ja) | ジョブ割当プログラム、方法及び装置 | |
JP5684629B2 (ja) | ジョブ管理システム及びジョブ管理方法 | |
CN113454614A (zh) | 用于分布式计算中的资源划分的***和方法 | |
JPH0659906A (ja) | 並列計算機の実行制御方法 | |
JPH07141305A (ja) | 並列計算機の実行制御方法 | |
Alaei et al. | RePro-Active: a reactive–proactive scheduling method based on simulation in cloud computing | |
Tantalaki et al. | Pipeline-based linear scheduling of big data streams in the cloud | |
Adabi et al. | Bi-level fuzzy based advanced reservation of Cloud workflow applications on distributed Grid resources | |
Bok et al. | An efficient MapReduce scheduling scheme for processing large multimedia data | |
KR101055548B1 (ko) | 분산 처리를 위한 시멘틱 컴퓨팅 기반의 동적 작업 스케줄링 시스템 | |
CN116010064A (zh) | Dag作业调度和集群管理的方法、***及装置 | |
CN111930485B (zh) | 一种基于性能表现的作业调度方法 | |
CN113535346B (zh) | 线程数量调整的方法、装置、设备及计算机存储介质 | |
Lin et al. | Joint deadline-constrained and influence-aware design for allocating MapReduce jobs in cloud computing systems | |
Du et al. | A combined priority scheduling method for distributed machine learning | |
Ru et al. | An efficient deadline constrained and data locality aware dynamic scheduling framework for multitenancy clouds | |
JPH08152903A (ja) | マルチプロセッサシステム | |
Roman et al. | Load balancing in partner-based scheduling algorithm for grid workflow |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050314 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090318 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090318 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100318 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110318 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110318 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |