JP3019317B2 - プロセススケジューリング方法 - Google Patents
プロセススケジューリング方法Info
- Publication number
- JP3019317B2 JP3019317B2 JP1060092A JP6009289A JP3019317B2 JP 3019317 B2 JP3019317 B2 JP 3019317B2 JP 1060092 A JP1060092 A JP 1060092A JP 6009289 A JP6009289 A JP 6009289A JP 3019317 B2 JP3019317 B2 JP 3019317B2
- Authority
- JP
- Japan
- Prior art keywords
- processor
- processors
- management table
- candidate
- execution
- 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
Landscapes
- Multi Processors (AREA)
Description
【発明の詳細な説明】 [産業上の利用分野] 本発明は、複数のプロセッサからなるマルチプロセッ
サシステムにおいて複数のプロセスを並行に動作させる
マルチプロセッサ用オペレーティングシステムに係り、
特に、高速、高信頼性システムを構築する場合、あるい
はシングルプロセッサ用に作成されたプログラムをマル
チプロセッサシステムで何ら変更なく動作させる場合、
ならびに特定プロセッサでのみ実行可能な命令を含むプ
ロセスが存在する場合に好適なプロセススケジューリン
グ方式に関する。
サシステムにおいて複数のプロセスを並行に動作させる
マルチプロセッサ用オペレーティングシステムに係り、
特に、高速、高信頼性システムを構築する場合、あるい
はシングルプロセッサ用に作成されたプログラムをマル
チプロセッサシステムで何ら変更なく動作させる場合、
ならびに特定プロセッサでのみ実行可能な命令を含むプ
ロセスが存在する場合に好適なプロセススケジューリン
グ方式に関する。
[従来の技術] 複数のプロセッサを使用することにより、複数のプロ
セスを並行に実行してシステムの性能向上を図るシステ
ムは、マルチプロセッサシステムとして周知である。こ
のようなマルチプロセッサシステムは、特開昭56-12726
1号公報に開示されているように、複数のプロセッサが
バスを介して相互に、かつ共用メモリに接続されて構成
される。また、マルチプロセッサシステムを有効かつ効
率的に運用するためには、マルチプロセッサ用オペレー
ティングシステムが重要な役割りを担う。
セスを並行に実行してシステムの性能向上を図るシステ
ムは、マルチプロセッサシステムとして周知である。こ
のようなマルチプロセッサシステムは、特開昭56-12726
1号公報に開示されているように、複数のプロセッサが
バスを介して相互に、かつ共用メモリに接続されて構成
される。また、マルチプロセッサシステムを有効かつ効
率的に運用するためには、マルチプロセッサ用オペレー
ティングシステムが重要な役割りを担う。
マルチプロセッサ用オペレーティングシステムにおい
ては、シングルプロセッサシステムとは異なり、複数の
プロセスを異なるプロセッサ上で同時に実行できるよう
にする必要がある。このために、プロセスをどのプロセ
ッサに割当てるかを決定する方策を有することが必要で
ある。この方策として、最も一般的に行われているの
は、プロセッサの利用効率を最大にするために、負荷の
最も少ないプロセッサに割り当てるものである。この方
策は一般的に、実現が容易であるため、広く採用されて
いる。なぜなら、個々のプロセッサ上で動作するオペレ
ーティングシステムのプロセススケジューラが、シング
ルプロセッサシステムの場合と同様に、次に実行すべき
プロセスをプロセスの優先順位にしたがって選択すれば
よいからである。負荷の重いプロセッサでは、プロセス
の実行時間が長く、プロセススケジューラが起動される
頻度は低い。逆に、負荷の軽いプロセッサでは処理すべ
きプロセスを持たないアイドル状態になるタイミングが
多く、したがって、アイドル状態に移行すべきか否かを
判定するプロセススケジューラの起動タイミングも多
い。このため、負荷の軽いプロセッサには、より多くの
プロセススケジューリングの機会が与えられ、プロセッ
サ間での負荷は自動的に均等になるように推移すること
になる。
ては、シングルプロセッサシステムとは異なり、複数の
プロセスを異なるプロセッサ上で同時に実行できるよう
にする必要がある。このために、プロセスをどのプロセ
ッサに割当てるかを決定する方策を有することが必要で
ある。この方策として、最も一般的に行われているの
は、プロセッサの利用効率を最大にするために、負荷の
最も少ないプロセッサに割り当てるものである。この方
策は一般的に、実現が容易であるため、広く採用されて
いる。なぜなら、個々のプロセッサ上で動作するオペレ
ーティングシステムのプロセススケジューラが、シング
ルプロセッサシステムの場合と同様に、次に実行すべき
プロセスをプロセスの優先順位にしたがって選択すれば
よいからである。負荷の重いプロセッサでは、プロセス
の実行時間が長く、プロセススケジューラが起動される
頻度は低い。逆に、負荷の軽いプロセッサでは処理すべ
きプロセスを持たないアイドル状態になるタイミングが
多く、したがって、アイドル状態に移行すべきか否かを
判定するプロセススケジューラの起動タイミングも多
い。このため、負荷の軽いプロセッサには、より多くの
プロセススケジューリングの機会が与えられ、プロセッ
サ間での負荷は自動的に均等になるように推移すること
になる。
このようなプロセスのプロセッサへの割当て方策は、
各プロセッサの機能が同じ均質なマルチプロセッサシス
テムにおいては、合理性のある手法である。これに対し
て、機能が異なるプロセッサが混在するマルチプロセッ
サシステムにおけるプロセスの割当て方策としては、特
開昭62-123552号および同62-123553号が提案されてい
る。これらの先行技術において「タスク」と呼ばれてい
るものは本明細書にいう「プロセス」に相当し、意味す
るところは同一である。これら先行技術では、例えば、
浮動小数点アクセラレータを有さないプロセッサ上で、
浮動小数点アクセラレータ固有の命令を使用しているプ
ロセスを実行しようとした場合に、オペレーティングシ
ステムが例外を検出し、代替プロセッサの管理テーブル
を参照して浮動小数点アクセラレータを有するプロセッ
サに実行を切り換えるというものであり、不均質なマル
チプロセッサシステムにおけるプロセスの割当て方式の
一案を示すものである。
各プロセッサの機能が同じ均質なマルチプロセッサシス
テムにおいては、合理性のある手法である。これに対し
て、機能が異なるプロセッサが混在するマルチプロセッ
サシステムにおけるプロセスの割当て方策としては、特
開昭62-123552号および同62-123553号が提案されてい
る。これらの先行技術において「タスク」と呼ばれてい
るものは本明細書にいう「プロセス」に相当し、意味す
るところは同一である。これら先行技術では、例えば、
浮動小数点アクセラレータを有さないプロセッサ上で、
浮動小数点アクセラレータ固有の命令を使用しているプ
ロセスを実行しようとした場合に、オペレーティングシ
ステムが例外を検出し、代替プロセッサの管理テーブル
を参照して浮動小数点アクセラレータを有するプロセッ
サに実行を切り換えるというものであり、不均質なマル
チプロセッサシステムにおけるプロセスの割当て方式の
一案を示すものである。
この方式の利点は、不均質なマルチプロセッサである
ことをプログラマが意識しなくてよい点にある。
ことをプログラマが意識しなくてよい点にある。
[発明が解決しようとする課題] ところで、化学プラント、交通、電力制御等のリアル
タイムシステムにおいては、要求される信頼性に応じて
故障に対するきめ細かな回復処理が予めシステムに組み
込まれている。なかでも、プロセッサの故障はシステム
に重大な影響を与えるために厳しく管理される。このよ
うなシステムにおいて信頼性を確保するための基本的な
考え方は、故障の影響範囲を局所化することである。上
記従来のマルチプロセッサシステムでは、必ずしもこの
点に関して十分な配慮がなされていなかった。
タイムシステムにおいては、要求される信頼性に応じて
故障に対するきめ細かな回復処理が予めシステムに組み
込まれている。なかでも、プロセッサの故障はシステム
に重大な影響を与えるために厳しく管理される。このよ
うなシステムにおいて信頼性を確保するための基本的な
考え方は、故障の影響範囲を局所化することである。上
記従来のマルチプロセッサシステムでは、必ずしもこの
点に関して十分な配慮がなされていなかった。
また、シングルプロセッサ用に開発された既存のソフ
トウエアは、マルチプロセッサシステム上においても何
ら変更を加えずに実行させ得ることが望ましい。マルチ
プログラミング環境では、周知のように、複数のプロセ
ス間で共用データへのアクセスの競合が発生しうる。こ
の問題を解決するため、通常、共用データにアクセスす
る際にセマフォアメカニズムなどにより排他制御を行う
必要があるが、セマフォアメカニズムの処理オーバヘッ
ドが問題となり、プロセスのプライオリティを同一にし
たり、セマフォアメカニズムよりも処理時間の短いプロ
セッサの割込みマスクを上げて割込み禁止にする等の手
段を講じる場合が多い。これらの手段は、プロセッサが
1台しかなくミクロにみればプロセッサ上の処理は必ず
逐次的に行われるという事実を利用している。現実に
は、共用データに対する排他制御を性能上の理由により
行っていないソフトウエアも多い。したがって、既存の
ソフトウエアをそのままマルチプロセッサシステムで実
行させた場合、必ずしも正常な動作は保証されないとい
う問題があった。
トウエアは、マルチプロセッサシステム上においても何
ら変更を加えずに実行させ得ることが望ましい。マルチ
プログラミング環境では、周知のように、複数のプロセ
ス間で共用データへのアクセスの競合が発生しうる。こ
の問題を解決するため、通常、共用データにアクセスす
る際にセマフォアメカニズムなどにより排他制御を行う
必要があるが、セマフォアメカニズムの処理オーバヘッ
ドが問題となり、プロセスのプライオリティを同一にし
たり、セマフォアメカニズムよりも処理時間の短いプロ
セッサの割込みマスクを上げて割込み禁止にする等の手
段を講じる場合が多い。これらの手段は、プロセッサが
1台しかなくミクロにみればプロセッサ上の処理は必ず
逐次的に行われるという事実を利用している。現実に
は、共用データに対する排他制御を性能上の理由により
行っていないソフトウエアも多い。したがって、既存の
ソフトウエアをそのままマルチプロセッサシステムで実
行させた場合、必ずしも正常な動作は保証されないとい
う問題があった。
システム構築上の問題としては、マルチプロセッサの
立ち上げを行う場合には、共用メモリの初期化、オペレ
ーティングシステムプログラムのローディングなど、シ
ステムで1つしかない資源に関する処理を行う必要があ
る。この処理を複数のプロセッサで行うのはいたずらに
処理を複雑にするだけであるので、予め1台のプロセッ
サで行い、その後、他のプロセッサに起動をかけ、プロ
セッサ固有の資源の初期化を行うという手順を踏む必要
がある。また、システムの停止時も同様であり、個々の
プロセッサの停止処理は、そのプロセッサでのみアクセ
ス可能なレジスタなどのハードウエア資源にアクセスし
なければならない場合がある。
立ち上げを行う場合には、共用メモリの初期化、オペレ
ーティングシステムプログラムのローディングなど、シ
ステムで1つしかない資源に関する処理を行う必要があ
る。この処理を複数のプロセッサで行うのはいたずらに
処理を複雑にするだけであるので、予め1台のプロセッ
サで行い、その後、他のプロセッサに起動をかけ、プロ
セッサ固有の資源の初期化を行うという手順を踏む必要
がある。また、システムの停止時も同様であり、個々の
プロセッサの停止処理は、そのプロセッサでのみアクセ
ス可能なレジスタなどのハードウエア資源にアクセスし
なければならない場合がある。
また、マルチプロセッサシステムでは、プロセッサ性
能を最大限に発揮させるために、プロセッサごとにキャ
ッシュメモリを持つのが通例であるが、プロセスの実行
途中に動作プロセッサが変わる(これをプロセスマイグ
レーションと呼ぶ)と、直前に使用していたキャッシュ
メモリが参照できなくなるため、新たに動作するプロセ
ッサ上でキャッシュメモリのミスヒットが発生する。更
には、直前に動作していたプロセッサ上のキャッシュメ
モリの無効化処理も必要になり、シングルプロセッサ上
で実行する場合に比べて、当該プロセスにとってはマル
チプロセッサ処理は却って性能低下の要因になる。
能を最大限に発揮させるために、プロセッサごとにキャ
ッシュメモリを持つのが通例であるが、プロセスの実行
途中に動作プロセッサが変わる(これをプロセスマイグ
レーションと呼ぶ)と、直前に使用していたキャッシュ
メモリが参照できなくなるため、新たに動作するプロセ
ッサ上でキャッシュメモリのミスヒットが発生する。更
には、直前に動作していたプロセッサ上のキャッシュメ
モリの無効化処理も必要になり、シングルプロセッサ上
で実行する場合に比べて、当該プロセスにとってはマル
チプロセッサ処理は却って性能低下の要因になる。
上記特開昭62-123552号および同62-123553号に開示さ
れたマルチプロセッサシステムは、例外の発生を利用し
て不均質なマルチプロセッサシステムに対処している
が、均質なマルチプロセッサシステムにおける前述した
ような問題は解決できない。
れたマルチプロセッサシステムは、例外の発生を利用し
て不均質なマルチプロセッサシステムに対処している
が、均質なマルチプロセッサシステムにおける前述した
ような問題は解決できない。
他方、特開昭62-251867号には、主記憶装置のプログ
ラム自体に対して、その命令コード単位にプロセッサ識
別コードを付しておき、命令コードを読みだす毎にその
命令を実行すべきプロセッサをそのプロセッサ識別コー
ドに従って決定するマルチプロセッサシステムが開示さ
れている。このマルチプロセッサシステムでは、プログ
ラムの命令単位にプロセッサ識別コードを付加するため
にプログラムを加工する必要があり、既存のソフトウエ
アをそのまま利用することができない。また、主記憶装
置のワード幅、命令デコーダ等、ハードウエアの変更が
必要となるという問題がある。さらに、プロセッサ識別
コードを動的に変更することができず、プロセッサの数
の変更等への対処も困難である。
ラム自体に対して、その命令コード単位にプロセッサ識
別コードを付しておき、命令コードを読みだす毎にその
命令を実行すべきプロセッサをそのプロセッサ識別コー
ドに従って決定するマルチプロセッサシステムが開示さ
れている。このマルチプロセッサシステムでは、プログ
ラムの命令単位にプロセッサ識別コードを付加するため
にプログラムを加工する必要があり、既存のソフトウエ
アをそのまま利用することができない。また、主記憶装
置のワード幅、命令デコーダ等、ハードウエアの変更が
必要となるという問題がある。さらに、プロセッサ識別
コードを動的に変更することができず、プロセッサの数
の変更等への対処も困難である。
本発明の目的は、不均質なマルチプロセッサシステム
においてのみならず、均質なマルチプロセッサシステム
においても、特定のプロセスを例外発生によらず予め定
めたプロセッサ上で実行させることができるプロセスス
ケジューリング方式、マルチプロセッサシステムおよび
その使用方法を提供することにある。
においてのみならず、均質なマルチプロセッサシステム
においても、特定のプロセスを例外発生によらず予め定
めたプロセッサ上で実行させることができるプロセスス
ケジューリング方式、マルチプロセッサシステムおよび
その使用方法を提供することにある。
本発明の他の目的は、既存の単一プロセッサシステム
用のソフトウエアを、何ら変更せずそのまま利用できる
プロセススケジューリング方式、マルチプロセッサシス
テムおよびその使用方法を提供することにある。
用のソフトウエアを、何ら変更せずそのまま利用できる
プロセススケジューリング方式、マルチプロセッサシス
テムおよびその使用方法を提供することにある。
本発明のさらに他の目的は、プロセスマイグレーショ
ンを防止しつつ、複数のプロセッサを効率的に使用する
ことを可能にするプロセススケジューリング方式、プロ
セススケジューラおよびマルチプロセッサシステムを提
供することにある。
ンを防止しつつ、複数のプロセッサを効率的に使用する
ことを可能にするプロセススケジューリング方式、プロ
セススケジューラおよびマルチプロセッサシステムを提
供することにある。
[課題を解決するための手段] 上記目的を達成するために、本発明によるプロセスス
ケジューリング方式は、複数のプロセッサと、プログラ
ムおよびデータを格納し上記複数のプロセッサにより共
有される共用メモリとを具備し、上記複数のプロセッ
サ、プログラムおよびデータは、単一のオペレーティン
グシステムによって制御されるマルチプロセッサシステ
ムにおいて、プロセスを管理するプロセス管理テーブル
に従い、上記オペレーティングシステムのプロセススケ
ジューラがプロセスにいずれかのプロセッサを割当てる
プロセススケジューリング方式であって、 上記プロセス管理テーブルに、各プロセスが動作可能
なプロセッサを指示するプロセッサ割当て情報を記述
し、上記プロセススケジューラは、次に実行すべく選択
したプロセスについて、上記プロセス管理テーブルを参
照して、当該プロセスのプロセッサ割当て情報により指
定されたプロセッサ上で当該プロセスを動作させるよう
にしたものである。
ケジューリング方式は、複数のプロセッサと、プログラ
ムおよびデータを格納し上記複数のプロセッサにより共
有される共用メモリとを具備し、上記複数のプロセッ
サ、プログラムおよびデータは、単一のオペレーティン
グシステムによって制御されるマルチプロセッサシステ
ムにおいて、プロセスを管理するプロセス管理テーブル
に従い、上記オペレーティングシステムのプロセススケ
ジューラがプロセスにいずれかのプロセッサを割当てる
プロセススケジューリング方式であって、 上記プロセス管理テーブルに、各プロセスが動作可能
なプロセッサを指示するプロセッサ割当て情報を記述
し、上記プロセススケジューラは、次に実行すべく選択
したプロセスについて、上記プロセス管理テーブルを参
照して、当該プロセスのプロセッサ割当て情報により指
定されたプロセッサ上で当該プロセスを動作させるよう
にしたものである。
本発明によるプロセススケジューリング方式は、他の
見地によれば、複数のプロセッサにより主記憶装置を共
有するマルチプロセッサシステムにおいて各プロセスに
プロセッサに割当てるプロセススケジューリング方式で
あって、各プロセスごとに当該プロセスが動作可能なプ
ロセッサを指定するプロセッサ割当て情報を上記記憶装
置内に記憶させておき、実行待ちのプロセスをプロセッ
サへ割当てる際に、当該プロセスの上記プロセッサ割当
て情報を参照し、該プロセッサ割当て情報に応じて、当
該プロセスへの上記プロセッサの割当ての可否を決定す
るようにしたものである。
見地によれば、複数のプロセッサにより主記憶装置を共
有するマルチプロセッサシステムにおいて各プロセスに
プロセッサに割当てるプロセススケジューリング方式で
あって、各プロセスごとに当該プロセスが動作可能なプ
ロセッサを指定するプロセッサ割当て情報を上記記憶装
置内に記憶させておき、実行待ちのプロセスをプロセッ
サへ割当てる際に、当該プロセスの上記プロセッサ割当
て情報を参照し、該プロセッサ割当て情報に応じて、当
該プロセスへの上記プロセッサの割当ての可否を決定す
るようにしたものである。
上記各プロセスごとに当該プロセスが動作可能なプロ
セッサを指定するプロセッサ割当て情報に代えて、上記
各プロセッサごとに当該プロセッサが実行可能なプロセ
スを指定するプロセス割当て情報を用いてもよい。
セッサを指定するプロセッサ割当て情報に代えて、上記
各プロセッサごとに当該プロセッサが実行可能なプロセ
スを指定するプロセス割当て情報を用いてもよい。
本発明のプロセススケジューリング方式は、さらに他
の見地によれば、各プロセスと当該プロセスが動作可能
なプロセッサとを予め対応づけておき、空きのプロセッ
サを実行待ちのプロセスに割当てる際に、上記予め定め
た対応関係に基づいて、当該プロセスへの上記プロセッ
サの割当ての可否を決定するようにしたものである。
の見地によれば、各プロセスと当該プロセスが動作可能
なプロセッサとを予め対応づけておき、空きのプロセッ
サを実行待ちのプロセスに割当てる際に、上記予め定め
た対応関係に基づいて、当該プロセスへの上記プロセッ
サの割当ての可否を決定するようにしたものである。
上記プロセッサ割当て情報の一つとしていずれのプロ
セッサでも動作可能であることを示す汎用コード、ある
いは、特定のプロセッサ以外のプロセッサで動作可能で
あることを示すコードを含むようにしてもよい。
セッサでも動作可能であることを示す汎用コード、ある
いは、特定のプロセッサ以外のプロセッサで動作可能で
あることを示すコードを含むようにしてもよい。
本発明の他のプロセススケジューリング方式として、
上記プロセッサ割当て情報として上記汎用コードが設定
されたプロセスについて、当該プロセスを実行するプロ
セッサが決定されたあと当該プロセスの実行が開始され
る前に、当該プロセスのプロセッサ割当て情報を当該プ
ロセッサを指定するコードに変更し、当該プロセスの実
行終了後に上記プロセス割当て情報を上記汎用コードに
戻すようにすることもできる。この動作方式について、
上記プロセス管理テーブルに、各プロセスごとに制御モ
ードを記憶する領域を設け、該制御モードの一つとし
て、この方式を指定するコードを規定するようにしても
よい。
上記プロセッサ割当て情報として上記汎用コードが設定
されたプロセスについて、当該プロセスを実行するプロ
セッサが決定されたあと当該プロセスの実行が開始され
る前に、当該プロセスのプロセッサ割当て情報を当該プ
ロセッサを指定するコードに変更し、当該プロセスの実
行終了後に上記プロセス割当て情報を上記汎用コードに
戻すようにすることもできる。この動作方式について、
上記プロセス管理テーブルに、各プロセスごとに制御モ
ードを記憶する領域を設け、該制御モードの一つとし
て、この方式を指定するコードを規定するようにしても
よい。
さらに、上記制御モードの一つとして、上記プロセッ
サ割当て情報を常時固定することを示すコードを規定
し、当該コードが指定されたプロセスについては、プロ
セス実行前後を通じて上記プロセッサ割当て情報を変更
しないようにしてもよい。
サ割当て情報を常時固定することを示すコードを規定
し、当該コードが指定されたプロセスについては、プロ
セス実行前後を通じて上記プロセッサ割当て情報を変更
しないようにしてもよい。
本発明によるプロセススケジューリング方式は、別の
見地によれば、番号付けされた複数のプロセッサと、該
複数のプロセッサが共有する共用メモリとを有するマル
チプロセッサシステムにおけるプロセススケジューリン
グ方式であって、プロセッサで動作するプロセスを管理
するプロセス管理テーブルを上記共用メモリ内に設け、
該プロセス管理テーブルに、各プロセスごとに動作可能
なプロセッサの番号を指示するプロセッサ割当て情報を
記憶させ、プロセススケジューラは、次に実行すべく選
択したプロセスについて、上記プロセス管理テーブルを
参照して、当該プロセスのプロセッサ割当て情報により
指定された番号に対応するプロセッサ上で当該プロセス
を動作させるようにしたものである。
見地によれば、番号付けされた複数のプロセッサと、該
複数のプロセッサが共有する共用メモリとを有するマル
チプロセッサシステムにおけるプロセススケジューリン
グ方式であって、プロセッサで動作するプロセスを管理
するプロセス管理テーブルを上記共用メモリ内に設け、
該プロセス管理テーブルに、各プロセスごとに動作可能
なプロセッサの番号を指示するプロセッサ割当て情報を
記憶させ、プロセススケジューラは、次に実行すべく選
択したプロセスについて、上記プロセス管理テーブルを
参照して、当該プロセスのプロセッサ割当て情報により
指定された番号に対応するプロセッサ上で当該プロセス
を動作させるようにしたものである。
上記プロセッサへの番号付けにおいては、複数のプロ
セッサに同一の番号を重複して付加することを許容する
ようにしてもよい。
セッサに同一の番号を重複して付加することを許容する
ようにしてもよい。
また、上記プロセッサの番号の一つとして汎用コード
を規定し、各プロセスの実行は、当該プロセスのプロセ
ッサ割当て情報で指定された番号のプロセッサ上または
上記汎用コードの番号が付与されたプロセッサ上で行わ
せることもできる。
を規定し、各プロセスの実行は、当該プロセスのプロセ
ッサ割当て情報で指定された番号のプロセッサ上または
上記汎用コードの番号が付与されたプロセッサ上で行わ
せることもできる。
本発明によるさらに他のプロセススケジューリング方
式は、各プロセスごとに、上記プロセッサ割当て情報に
より指定されたプロセッサ以外のプロセッサでの実行を
拒絶する程度を、当該プロセスと当該プロセッサとの親
和度を示す数値として定めておき、当該プロセスの実行
待ち状態に関する数値と比較して、該比較結果に応じ
て、当該プロセスを上記指定されたプロセッサ以外のプ
ロセッサ上で動作させるものである。このプロセスの実
行待ち状態に関する数値としては、例えば、上記プロセ
ッサへの割当てを拒絶した回数または当該プロセスの実
行待ちデータ量を選ぶことができる。
式は、各プロセスごとに、上記プロセッサ割当て情報に
より指定されたプロセッサ以外のプロセッサでの実行を
拒絶する程度を、当該プロセスと当該プロセッサとの親
和度を示す数値として定めておき、当該プロセスの実行
待ち状態に関する数値と比較して、該比較結果に応じ
て、当該プロセスを上記指定されたプロセッサ以外のプ
ロセッサ上で動作させるものである。このプロセスの実
行待ち状態に関する数値としては、例えば、上記プロセ
ッサへの割当てを拒絶した回数または当該プロセスの実
行待ちデータ量を選ぶことができる。
上記プロセスからプロセッサを指定する場合のプロセ
ッサ割当て情報を論理プロセッサ識別子とし、該論理プ
ロセッサ識別子と、実際のプロセッサに対応する物理プ
ロセッサ識別子とを対応づけるテーブルを上記共用メモ
リ内に設け、論理プロセッサ識別子は物理プロセッサ識
別子に変換してスケジューリングを行うようにしてもよ
い。
ッサ割当て情報を論理プロセッサ識別子とし、該論理プ
ロセッサ識別子と、実際のプロセッサに対応する物理プ
ロセッサ識別子とを対応づけるテーブルを上記共用メモ
リ内に設け、論理プロセッサ識別子は物理プロセッサ識
別子に変換してスケジューリングを行うようにしてもよ
い。
プロセスの優先度を利用した本発明のプロセススケジ
ューリング方式は、上記複数のプロセッサの各々につい
て、予め、当該プロセッサが実行可能なプロセスの優先
度の範囲を定めておき、各プロセッサが次に実行すべき
プロセスとして、当該プロセッサについて定められた上
記優先度の範囲内にある優先度を有する実行待ちプロセ
スの中から最も高い優先度を有するものを選択するよう
にしたものである。
ューリング方式は、上記複数のプロセッサの各々につい
て、予め、当該プロセッサが実行可能なプロセスの優先
度の範囲を定めておき、各プロセッサが次に実行すべき
プロセスとして、当該プロセッサについて定められた上
記優先度の範囲内にある優先度を有する実行待ちプロセ
スの中から最も高い優先度を有するものを選択するよう
にしたものである。
プロセスの優先度を利用した本発明の他のプロセスス
ケジューリング方式は、各プロセスごとに、上記複数の
プロセッサの各々に対する優先度を定めていき、各プロ
セッサが次に実行すべきプロセスとして、実行待ちプロ
セスの中から、当該プロセッサについて定められた各プ
ロセスの優先度の最も優先度の高いものを選択するよう
にしたものである。
ケジューリング方式は、各プロセスごとに、上記複数の
プロセッサの各々に対する優先度を定めていき、各プロ
セッサが次に実行すべきプロセスとして、実行待ちプロ
セスの中から、当該プロセッサについて定められた各プ
ロセスの優先度の最も優先度の高いものを選択するよう
にしたものである。
本発明によるマルチプロセッサシステムは、少なくと
も2個のプロセッサを有し、該プロセッサのいずれにお
いても特定のプロセスを実行可能なマルチプロセッサシ
ステムにおいて、上記特定のプロセスを実行させるプロ
セッサを上記少なくとも2個のプロセッサのうちのいず
れか1個に固定することにより、単一プロセッサシステ
ム用のソフトウエアを修正することなく利用可能とした
ものである。
も2個のプロセッサを有し、該プロセッサのいずれにお
いても特定のプロセスを実行可能なマルチプロセッサシ
ステムにおいて、上記特定のプロセスを実行させるプロ
セッサを上記少なくとも2個のプロセッサのうちのいず
れか1個に固定することにより、単一プロセッサシステ
ム用のソフトウエアを修正することなく利用可能とした
ものである。
本発明によるマルチプロセッサシステムは、他の見地
によれば、少なくとも2個のプロセッサを有し、該プロ
セッサのいずれにおいても特定のプロセスを実行可能な
マルチプロセッサシステムにおいて、当該特定のプロセ
スの少なくとも実行開始から終了までの間、上記特定の
プロセスを実行させるプロセッサを、上記少なくとも2
個のプロセッサのうちのいずれか1個に固定することに
より、上記特定のプロセスの実行途中の実行プロセッサ
の変更を防止するようにしたものである。
によれば、少なくとも2個のプロセッサを有し、該プロ
セッサのいずれにおいても特定のプロセスを実行可能な
マルチプロセッサシステムにおいて、当該特定のプロセ
スの少なくとも実行開始から終了までの間、上記特定の
プロセスを実行させるプロセッサを、上記少なくとも2
個のプロセッサのうちのいずれか1個に固定することに
より、上記特定のプロセスの実行途中の実行プロセッサ
の変更を防止するようにしたものである。
本発明によるマルチプロセッサシステムは、さらに他
の見地によれば、少なくとも2個のプロセッサを有し、
特定のプロセッサでは、種々のプロセスを実行可能なマ
ルチプロセッサシステムにおいて、上記特定のプロセッ
サで動作させるプロセスの数を限定することにより、当
該プロセッサでの応答時間を一定値以内に短縮するよう
にしたものである。
の見地によれば、少なくとも2個のプロセッサを有し、
特定のプロセッサでは、種々のプロセスを実行可能なマ
ルチプロセッサシステムにおいて、上記特定のプロセッ
サで動作させるプロセスの数を限定することにより、当
該プロセッサでの応答時間を一定値以内に短縮するよう
にしたものである。
本発明によるマルチプロセッサシステムは、別の見地
によれば、少なくとも2個のプロセッサを有し、特定の
プロセッサでは、種々のプロセスを実行可能なマルチプ
ロセッサシステムにおいて、上記特定のプロセッサで動
作させるプロセスの種類を限定することにより、プロセ
ッサの故障の影響範囲を局所化するようにしたものであ
る。
によれば、少なくとも2個のプロセッサを有し、特定の
プロセッサでは、種々のプロセスを実行可能なマルチプ
ロセッサシステムにおいて、上記特定のプロセッサで動
作させるプロセスの種類を限定することにより、プロセ
ッサの故障の影響範囲を局所化するようにしたものであ
る。
本発明によるマルチプロセッサシステムは、さらに別
の見地によれば、複数のプロセッサと、プログラムおよ
びデータを格納し上記複数のプロセッサにより共有され
る共用メモリとを具備し、上記複数のプロセッサ、プロ
グラムおよびデータは、単一のオペレーティングシステ
ムによって制御されるマルチプロセッサシステムにおい
て、上記共用メモリ内に、プロセスごとに当該プロセス
の状態を保持するプロセス管理テーブルを設け、該プロ
セス管理テーブルに、各プロセスが動作可能なプロセッ
サを指定するプロセッサ割当て情報を記憶する記憶領域
を設けたものである。
の見地によれば、複数のプロセッサと、プログラムおよ
びデータを格納し上記複数のプロセッサにより共有され
る共用メモリとを具備し、上記複数のプロセッサ、プロ
グラムおよびデータは、単一のオペレーティングシステ
ムによって制御されるマルチプロセッサシステムにおい
て、上記共用メモリ内に、プロセスごとに当該プロセス
の状態を保持するプロセス管理テーブルを設け、該プロ
セス管理テーブルに、各プロセスが動作可能なプロセッ
サを指定するプロセッサ割当て情報を記憶する記憶領域
を設けたものである。
本発明による今一つのマルチプロセッサシステムは、
いずれにおいても特定のプロセスを実行可能な少なくと
も2個のプロセッサと、プログラムおよびデータを格納
し上記少なくとも2個のプロセッサにより共有される共
用メモリとを具備し、上記プロセッサ、プログラムおよ
びデータは、単一のオペレーティングシステムによって
制御されるマルチプロセッサにおいて、上記共用メモリ
内に、上記少なくとも2個のプロセッサのうちの特定の
プロセッサでのみ上記特定のプロセスを実行可能とする
プロセッサ割当て情報を格納する記憶領域を設けたもの
である。
いずれにおいても特定のプロセスを実行可能な少なくと
も2個のプロセッサと、プログラムおよびデータを格納
し上記少なくとも2個のプロセッサにより共有される共
用メモリとを具備し、上記プロセッサ、プログラムおよ
びデータは、単一のオペレーティングシステムによって
制御されるマルチプロセッサにおいて、上記共用メモリ
内に、上記少なくとも2個のプロセッサのうちの特定の
プロセッサでのみ上記特定のプロセスを実行可能とする
プロセッサ割当て情報を格納する記憶領域を設けたもの
である。
プロセッサ割当て情報を格納する記憶領域を有するシ
ステムにおいて、各プロセスのプロセッサ割当て情報の
動的変更を制御する制御モードを格納する記憶領域をさ
らに設けてもよい。この制御モードは、例えば、任意の
プロセッサで動作可能とする第1のモードと、プロセス
の実行開始から実行終了まで特定のプロセッサのみで動
作可能とする第2の制御モードとを含み、第1の制御モ
ードでは、プロセッサ割当て情報として任意のプロセッ
サを指定する汎用コードが設定され、第2の制御モード
では、プロセスを特定のプロセッサで実行開始する前
に、当該プロセスのプロセッサ割当て情報として上記特
定のプロセッサが指定され、プロセスの実行終了後に上
記プロセッサ割当て情報が上記汎用コードに戻される。
両制御モードに加えて、プロセスの生成後、特定のプロ
セッサを指定するプロセッサ割当て情報を変更しない第
3の制御モードをさらに設けてもよい。
ステムにおいて、各プロセスのプロセッサ割当て情報の
動的変更を制御する制御モードを格納する記憶領域をさ
らに設けてもよい。この制御モードは、例えば、任意の
プロセッサで動作可能とする第1のモードと、プロセス
の実行開始から実行終了まで特定のプロセッサのみで動
作可能とする第2の制御モードとを含み、第1の制御モ
ードでは、プロセッサ割当て情報として任意のプロセッ
サを指定する汎用コードが設定され、第2の制御モード
では、プロセスを特定のプロセッサで実行開始する前
に、当該プロセスのプロセッサ割当て情報として上記特
定のプロセッサが指定され、プロセスの実行終了後に上
記プロセッサ割当て情報が上記汎用コードに戻される。
両制御モードに加えて、プロセスの生成後、特定のプロ
セッサを指定するプロセッサ割当て情報を変更しない第
3の制御モードをさらに設けてもよい。
本発明によるマルチプロセッサの使用方法は、上記プ
ロセッサ割当て情報を指定するシステムの使用方法であ
って、上記共用メモリに対する排他制御が必要なプロセ
ス群に対して、上記プロセッサ割当て情報を同一に設定
することにより、上記プロセス群を単一のプロセッサ上
で動作させるものである。同じく、重要性の高いプロセ
ス群と、重要性の低いプロセス群とに別個のプロセッサ
割当て情報を設定し、両プロセス群を別個のプロセッサ
上で実行させることもできる。
ロセッサ割当て情報を指定するシステムの使用方法であ
って、上記共用メモリに対する排他制御が必要なプロセ
ス群に対して、上記プロセッサ割当て情報を同一に設定
することにより、上記プロセス群を単一のプロセッサ上
で動作させるものである。同じく、重要性の高いプロセ
ス群と、重要性の低いプロセス群とに別個のプロセッサ
割当て情報を設定し、両プロセス群を別個のプロセッサ
上で実行させることもできる。
本発明によるマルチプロセッサの他の使用方法は、制
御モードを使用したシステムの使用方法であって、上記
第2の制御モードを設定することにより、一つのプロセ
スの実行途中に実行プロセッサが変わることを防止する
ものである。同じく、上記共用メモリに対する排他制御
が必要なプロセス群に対して、上記第3の制御モードを
設定することにより、上記プロセス群を単一のプロセッ
サ上で動作させるようにすることもできる。さらに、プ
ロセスを重要性の高いプロセス群と重要性の低いプロセ
ス群とに分類し、両プロセス群に対して上記第3の制御
モードを設定すると共に、上記両プロセスに異なるプロ
セッサ割当て情報を設定し、上記両プロセス群を別個の
プロセッサ上で実行させるようにすることもできる。
御モードを使用したシステムの使用方法であって、上記
第2の制御モードを設定することにより、一つのプロセ
スの実行途中に実行プロセッサが変わることを防止する
ものである。同じく、上記共用メモリに対する排他制御
が必要なプロセス群に対して、上記第3の制御モードを
設定することにより、上記プロセス群を単一のプロセッ
サ上で動作させるようにすることもできる。さらに、プ
ロセスを重要性の高いプロセス群と重要性の低いプロセ
ス群とに分類し、両プロセス群に対して上記第3の制御
モードを設定すると共に、上記両プロセスに異なるプロ
セッサ割当て情報を設定し、上記両プロセス群を別個の
プロセッサ上で実行させるようにすることもできる。
[作用] 本発明のプロセススケジューリング方式は、複数のプ
ロセッサからなるマルチプロセッサシステムにおいて、
特定のプロセッサでしか実行できないプロセスはもとよ
り、複数のプロセッサのいずれでも実行可能なプロセス
について、敢えてそのプロセスを実行させるプロセッサ
を特定のプロセッサに限定しようとするものである。
ロセッサからなるマルチプロセッサシステムにおいて、
特定のプロセッサでしか実行できないプロセスはもとよ
り、複数のプロセッサのいずれでも実行可能なプロセス
について、敢えてそのプロセスを実行させるプロセッサ
を特定のプロセッサに限定しようとするものである。
これによって、排他制御を必要とするプロセス群を同
一のプロセッサで動作させることが可能になり、共用メ
モリに対する排他制御を考慮していない従来の単一プロ
セッサ用の既存のプロセスを修正することなく使用して
も正常な動作を保証することができる。このことは、他
のプロセッサの不使用を意味するものではなく、前記プ
ロセス群以外のプロセスについては、このような制約を
設けずに、任意の(あるいは特定のプロセッサ以外の)
プロセッサで実行可能としてマルチプロセッサの機能を
有効に利用することができる。
一のプロセッサで動作させることが可能になり、共用メ
モリに対する排他制御を考慮していない従来の単一プロ
セッサ用の既存のプロセスを修正することなく使用して
も正常な動作を保証することができる。このことは、他
のプロセッサの不使用を意味するものではなく、前記プ
ロセス群以外のプロセスについては、このような制約を
設けずに、任意の(あるいは特定のプロセッサ以外の)
プロセッサで実行可能としてマルチプロセッサの機能を
有効に利用することができる。
また、プログラムの信頼性のランクに従って、実行す
るプロセッサを限定することにより、信頼性のさほど要
求されないプログラム開発などのオフライン処理を実行
しているプロセッサが故障してもシステムダウンに至ら
ないようにする(すなわち、故障を局所化する)ことが
できる。
るプロセッサを限定することにより、信頼性のさほど要
求されないプログラム開発などのオフライン処理を実行
しているプロセッサが故障してもシステムダウンに至ら
ないようにする(すなわち、故障を局所化する)ことが
できる。
更には、正規の排他制御を行っていないプログラム群
を含むソフトウエアを、マルチプロセッサシステムで動
作させようとした場合に、当該プログラム群だけを特定
のプロセッサでのみ実行させることにより、プログラム
の修正を行うことなく、正常な動作を保証することがで
きる。
を含むソフトウエアを、マルチプロセッサシステムで動
作させようとした場合に、当該プログラム群だけを特定
のプロセッサでのみ実行させることにより、プログラム
の修正を行うことなく、正常な動作を保証することがで
きる。
上記特定のプロセッサの指定の仕方として、常時固定
的に指定する方式の他、一つのプロセスの実行開始から
終了までの間は、特定の1プロセッサに割り付け、中断
・再開時も動作プロセッサが変更されないようにする方
式も有用である。すなわち、プロセッサを一時的に固定
するこの方式によれば、一旦実行開始されたプロセス
は、その実行途中に動作プロセッサが変更されることが
ないので、キャッシュメモリを使用しているシステムに
おいて、キャッシュヒット率の低減を防止することがで
きる。一方、この方式は、実行プロセッサを永久に固定
するものではないので、複数のプロセッサの効率的使用
を著しく阻害するものでもない。
的に指定する方式の他、一つのプロセスの実行開始から
終了までの間は、特定の1プロセッサに割り付け、中断
・再開時も動作プロセッサが変更されないようにする方
式も有用である。すなわち、プロセッサを一時的に固定
するこの方式によれば、一旦実行開始されたプロセス
は、その実行途中に動作プロセッサが変更されることが
ないので、キャッシュメモリを使用しているシステムに
おいて、キャッシュヒット率の低減を防止することがで
きる。一方、この方式は、実行プロセッサを永久に固定
するものではないので、複数のプロセッサの効率的使用
を著しく阻害するものでもない。
プロセス単位に特定のプロセッサを常時固定し、ある
いは一時的に固定(動的に指定)する手法としては、上
記制御モードの導入、プロセッサ毎に実行可能なプロセ
スの優先度の範囲の制限、プロセッサ毎に各プロセスの
優先度設定、プロセスとプロセッサの親和度の概念の導
入等、用途に応じて種々のものが利用できる。
いは一時的に固定(動的に指定)する手法としては、上
記制御モードの導入、プロセッサ毎に実行可能なプロセ
スの優先度の範囲の制限、プロセッサ毎に各プロセスの
優先度設定、プロセスとプロセッサの親和度の概念の導
入等、用途に応じて種々のものが利用できる。
[実施例] 本発明によるシステム構成を第1図(a)に示す。
プロセッサP1,P2,P3の3台のプロセッサが、接続バス
4により相互に、ならびに共用メモリ5に接続されてい
る。各プロセッサは、プロセッサ番号11-1〜11-3をそれ
ぞれ持っている。本実施例では、プロセッサP1,P2,P3は
それぞれプロセッサ番号“1",“2",“3"を有している。
このプロセッサ番号の設定は、本実施例ではハードウェ
アスイッチにより行っているが、他の方法として、ハー
ドのROMにあらかじめ記憶しておく、立ち上げ時にプロ
グラムにより設定する等の方法も考えられる。
4により相互に、ならびに共用メモリ5に接続されてい
る。各プロセッサは、プロセッサ番号11-1〜11-3をそれ
ぞれ持っている。本実施例では、プロセッサP1,P2,P3は
それぞれプロセッサ番号“1",“2",“3"を有している。
このプロセッサ番号の設定は、本実施例ではハードウェ
アスイッチにより行っているが、他の方法として、ハー
ドのROMにあらかじめ記憶しておく、立ち上げ時にプロ
グラムにより設定する等の方法も考えられる。
各プロセスはプロセッサ上で実行される。共用メモリ
5には、オペレーティングシステムのプログラム31、こ
のプログラム31の一部であるプロセススケジューラ31
1、このオペレーティングシステムのプログラム31が管
理するテーブルの一部であるプロセス管理テーブル32
(32-1〜32-3)が存在する。このプロセス管理テーブル
32には、プロセスの優先度(図示せず)等の他、本発明
特有のプロセッサ識別子321(321-1〜321-3)、プロセ
ッサ識別子の動的変更あるいは固定期間を制御するプロ
セッサ制御モード322(322-1〜322-3)が置かれる。
5には、オペレーティングシステムのプログラム31、こ
のプログラム31の一部であるプロセススケジューラ31
1、このオペレーティングシステムのプログラム31が管
理するテーブルの一部であるプロセス管理テーブル32
(32-1〜32-3)が存在する。このプロセス管理テーブル
32には、プロセスの優先度(図示せず)等の他、本発明
特有のプロセッサ識別子321(321-1〜321-3)、プロセ
ッサ識別子の動的変更あるいは固定期間を制御するプロ
セッサ制御モード322(322-1〜322-3)が置かれる。
なお、本実施例では、既存のプロセス管理テーブル32
を利用したが、プロセッサごとにそのプロセッサが実行
可能なプロセスを指定するプロセス識別子を格納するた
めの個別のテーブルを設けてもよい。
を利用したが、プロセッサごとにそのプロセッサが実行
可能なプロセスを指定するプロセス識別子を格納するた
めの個別のテーブルを設けてもよい。
第1図(a)には、プロセス1がプロセッサP3で、プ
ロセス2がプロセッサP1で、プロセス3がプロセッサP2
で実行されている場合を示している。なお、同図では各
プロセッサのブロック内にプロセスを図示しているが、
これはプロセスが特定のプロセッサで実行されている状
態を示したものであり、実際のプロセスの所在を示すも
のではない。この例では、プロセス2のプロセッサ識別
子321-2が“1"なので、このプロセス2は、プロセッサP
1で実行されている。プロセス1のプロセッサ識別子321
-1は“−2"なので、プロセッサP2以外で実行可である。
空きのプロセッサは、プロセッサP2とプロセッサP3なの
で、プロセス2は、プロセッサP3で実行されている。プ
ロセス3のプロセッサ識別子321-3は“0"であるので、
どのプロセッサにおいても実行可である。このため、空
きとして残っているプロセッサP2で実行されている。こ
の例では、プロセッサ識別子321として単一のコードの
みを記述するようにしているが、複数のコードを同時に
記述することも可能である。この場合には、マイナスの
数値は必ずしも必要でない。
ロセス2がプロセッサP1で、プロセス3がプロセッサP2
で実行されている場合を示している。なお、同図では各
プロセッサのブロック内にプロセスを図示しているが、
これはプロセスが特定のプロセッサで実行されている状
態を示したものであり、実際のプロセスの所在を示すも
のではない。この例では、プロセス2のプロセッサ識別
子321-2が“1"なので、このプロセス2は、プロセッサP
1で実行されている。プロセス1のプロセッサ識別子321
-1は“−2"なので、プロセッサP2以外で実行可である。
空きのプロセッサは、プロセッサP2とプロセッサP3なの
で、プロセス2は、プロセッサP3で実行されている。プ
ロセス3のプロセッサ識別子321-3は“0"であるので、
どのプロセッサにおいても実行可である。このため、空
きとして残っているプロセッサP2で実行されている。こ
の例では、プロセッサ識別子321として単一のコードの
みを記述するようにしているが、複数のコードを同時に
記述することも可能である。この場合には、マイナスの
数値は必ずしも必要でない。
プロセス1〜3と各プロセスのプロセス管理テーブル
32-1〜32-3とは、それぞれ対応しており、プロセスが生
成されたときに対応するプロセス管理テーブルも生成さ
れる。プロセスの生成は、システム立ち上げ時に、すべ
てのプロセスの元になるプロセスがオペレーティングシ
ステムのプログラム31により生成される。この元になる
プロセスから前記プロセス1〜3が生成される。この流
れを、第1図(b)を使って説明する。
32-1〜32-3とは、それぞれ対応しており、プロセスが生
成されたときに対応するプロセス管理テーブルも生成さ
れる。プロセスの生成は、システム立ち上げ時に、すべ
てのプロセスの元になるプロセスがオペレーティングシ
ステムのプログラム31により生成される。この元になる
プロセスから前記プロセス1〜3が生成される。この流
れを、第1図(b)を使って説明する。
第1図(b)において、前記すべてのプロセスの元に
なるプロセスをプロセス0(第1図(a)では図示せ
ず)で示してある。立ち上げ時、オペレーティングシス
テムのプログラム31は、ユーザがあらかじめ定義したシ
ステム構成情報に基づき、プロセス0を生成するとき
に、プロセス0のプロセッサ識別子321-0に特定のプロ
セッサ番号を設定する。これは立ち上げ時は、特定のプ
ロセッサですべてのデータを初期化する必要があるため
であり、プロセス0は、データ初期化終了後、オペレー
ティングシステムがサポートしている、自プロセッサ識
別子を書き替えるシステムコールにて、どのプロセッサ
でも実行できるように、自プロセッサ識別子321-0を
“0"に書き替える。その後、プロセス1〜3を生成する
が、この生成もオペレーティングシステムがサポートす
るシステムコールを使用し、このシステムコールのパラ
メータとして、プロセッサ識別子を指定する。このプロ
セス生成のシステムコールには、2つの種類があり、明
示的にプロセッサ識別子を指定するものと、自動的に、
元のプロセスのプロセッサ識別子を受け継ぐものとがあ
る。
なるプロセスをプロセス0(第1図(a)では図示せ
ず)で示してある。立ち上げ時、オペレーティングシス
テムのプログラム31は、ユーザがあらかじめ定義したシ
ステム構成情報に基づき、プロセス0を生成するとき
に、プロセス0のプロセッサ識別子321-0に特定のプロ
セッサ番号を設定する。これは立ち上げ時は、特定のプ
ロセッサですべてのデータを初期化する必要があるため
であり、プロセス0は、データ初期化終了後、オペレー
ティングシステムがサポートしている、自プロセッサ識
別子を書き替えるシステムコールにて、どのプロセッサ
でも実行できるように、自プロセッサ識別子321-0を
“0"に書き替える。その後、プロセス1〜3を生成する
が、この生成もオペレーティングシステムがサポートす
るシステムコールを使用し、このシステムコールのパラ
メータとして、プロセッサ識別子を指定する。このプロ
セス生成のシステムコールには、2つの種類があり、明
示的にプロセッサ識別子を指定するものと、自動的に、
元のプロセスのプロセッサ識別子を受け継ぐものとがあ
る。
第1図(b)では、初期はプロセス0がプロセッサP1
で実行されていて、そこでまずプロセス1を、プロセッ
サ識別子として“−2"を指定して生成した。この結果、
プロセス1は、プロセッサP1またはプロセッサP3で実行
可であるが、既にプロセッサP1が使用されているので、
プロセッサP3で実行された。次に、プロセス2が生成さ
れたが、これはプロセッサ識別子“1"で生成されたの
で、プロセス0は、プロセッサP2へ移動し、プロセッサ
P1では、プロセス2の実行を開始した。次に、プロセス
3が自動的に元のプロセスのプロセッサ識別子を引き継
ぐシステムコールにより生成されたため、プロセス3の
プロセッサ識別子321-3は“0"となった。第1図(b)
はプロセス0が共用メモリ5上で一旦待ちとなり、プロ
セッサP2を開け渡し、その後、プロセス3を実行開始し
た状態が示してある。原則として、以上のように、プロ
セスが生成され、プロセッサ識別子も設定される。
で実行されていて、そこでまずプロセス1を、プロセッ
サ識別子として“−2"を指定して生成した。この結果、
プロセス1は、プロセッサP1またはプロセッサP3で実行
可であるが、既にプロセッサP1が使用されているので、
プロセッサP3で実行された。次に、プロセス2が生成さ
れたが、これはプロセッサ識別子“1"で生成されたの
で、プロセス0は、プロセッサP2へ移動し、プロセッサ
P1では、プロセス2の実行を開始した。次に、プロセス
3が自動的に元のプロセスのプロセッサ識別子を引き継
ぐシステムコールにより生成されたため、プロセス3の
プロセッサ識別子321-3は“0"となった。第1図(b)
はプロセス0が共用メモリ5上で一旦待ちとなり、プロ
セッサP2を開け渡し、その後、プロセス3を実行開始し
た状態が示してある。原則として、以上のように、プロ
セスが生成され、プロセッサ識別子も設定される。
第2図に、プロセススケジューラ311の処理を示す。
プロセススケジューラは、OSの一部であって、どのプ
ロセッサでも実行可能なプログラムであり、プロセスの
実行を終了または中断して空きとなったプロセッサに割
り当てられる。プロセッサに割り当てられたとき、プロ
セススケジューラはまず、プロセスの優先度に従って次
に実行すべきプロセスを選択する(311-1)。従来のプ
ロセススケジューラではここで選択されたプロセスを、
現在スケジューラが動作中のプロセッサに割当てて(31
1-3)、処理を終了する。本発明によるプロセススケジ
ューラでは、選択したプロセスのプロセス管理テーブル
32のプロセッサ識別子321の値を判定する(311-2)。こ
の値が“0"の場合は任意のプロセッサで実行可能である
という意味であるのでそのまま処理311-3を行い終了す
る。プロセッサ識別子321の値が正の場合は、プロセッ
サ識別子の値に一致するプロセッサ番号を有するプロセ
ッサでのみ実行可であるという意味なので、現在スケジ
ューラが動作中のプロセッサ番号11を参照し、これが該
プロセッサ識別子321に等しいか否かを判定する(311-
4)。このとき、複数のプロセッサ識別子があれば、各
プロセッサ識別子と等しいか否かを判定し、いずれかと
等しいときに「等しい」とする。等しい場合は処理311-
3に進み、等しくない場合は、現在スケジューラが動作
中のプロセッサでは実行できないプロセスであるので、
次に優先順位の高いプロセスを選択するため、処理311-
1に戻る。一方、処理312-2でプロセッサ識別子321の値
が負の場合はプロセッサ識別子の値の符号を変えた値に
一致するプロセッサ番号を有するプロセッサ以外でのみ
実行可であるという意味であるので、現在スケジューラ
が動作中のプロセッサ番号11を参照し、これがそのプロ
セッサ識別子321に等しいか否かを判定する(311-4)。
このとき、複数のプロセッサ識別子があれば、各プロセ
ッサ識別子と等しいか否かを判定し、すべてと等しいと
きに「等しい」とする。等しくない場合は処理311-3に
進み、等しい場合は、現在スケジューラが動作中のプロ
セッサでは実行できないプロセスであるので、次に優先
順位の高いプロセスを選択するため、処理311-1に戻
る。このとき、1つのプロセッサに対して複数のプロセ
ッサ番号が与えられていれば、次のプロセスを選択する
前に、各プロセッサ番号について上記処理を繰返して行
う。
ロセッサでも実行可能なプログラムであり、プロセスの
実行を終了または中断して空きとなったプロセッサに割
り当てられる。プロセッサに割り当てられたとき、プロ
セススケジューラはまず、プロセスの優先度に従って次
に実行すべきプロセスを選択する(311-1)。従来のプ
ロセススケジューラではここで選択されたプロセスを、
現在スケジューラが動作中のプロセッサに割当てて(31
1-3)、処理を終了する。本発明によるプロセススケジ
ューラでは、選択したプロセスのプロセス管理テーブル
32のプロセッサ識別子321の値を判定する(311-2)。こ
の値が“0"の場合は任意のプロセッサで実行可能である
という意味であるのでそのまま処理311-3を行い終了す
る。プロセッサ識別子321の値が正の場合は、プロセッ
サ識別子の値に一致するプロセッサ番号を有するプロセ
ッサでのみ実行可であるという意味なので、現在スケジ
ューラが動作中のプロセッサ番号11を参照し、これが該
プロセッサ識別子321に等しいか否かを判定する(311-
4)。このとき、複数のプロセッサ識別子があれば、各
プロセッサ識別子と等しいか否かを判定し、いずれかと
等しいときに「等しい」とする。等しい場合は処理311-
3に進み、等しくない場合は、現在スケジューラが動作
中のプロセッサでは実行できないプロセスであるので、
次に優先順位の高いプロセスを選択するため、処理311-
1に戻る。一方、処理312-2でプロセッサ識別子321の値
が負の場合はプロセッサ識別子の値の符号を変えた値に
一致するプロセッサ番号を有するプロセッサ以外でのみ
実行可であるという意味であるので、現在スケジューラ
が動作中のプロセッサ番号11を参照し、これがそのプロ
セッサ識別子321に等しいか否かを判定する(311-4)。
このとき、複数のプロセッサ識別子があれば、各プロセ
ッサ識別子と等しいか否かを判定し、すべてと等しいと
きに「等しい」とする。等しくない場合は処理311-3に
進み、等しい場合は、現在スケジューラが動作中のプロ
セッサでは実行できないプロセスであるので、次に優先
順位の高いプロセスを選択するため、処理311-1に戻
る。このとき、1つのプロセッサに対して複数のプロセ
ッサ番号が与えられていれば、次のプロセスを選択する
前に、各プロセッサ番号について上記処理を繰返して行
う。
プロセッサ識別子321を設定する方法には、整理する
と以下の3つの方法がある。
と以下の3つの方法がある。
第1の方法は、プロセスを生成する元のプロセス(以
下、親プロセスと言う)が、オペレーティングシステム
にシステムコールを通じてプロセッサ識別子を設定する
方法である。この方法には、システムコールにより、明
示的にプロセッサ識別子を設定する場合と、暗黙に親プ
ロセスのプロセッサ識別子を引き継ぐか、汎用コードで
ある“0"が設定される場合がある。暗黙のプロセッサ識
別子の設定方法は、そのシステム毎に都合のよいものを
選べばよい。
下、親プロセスと言う)が、オペレーティングシステム
にシステムコールを通じてプロセッサ識別子を設定する
方法である。この方法には、システムコールにより、明
示的にプロセッサ識別子を設定する場合と、暗黙に親プ
ロセスのプロセッサ識別子を引き継ぐか、汎用コードで
ある“0"が設定される場合がある。暗黙のプロセッサ識
別子の設定方法は、そのシステム毎に都合のよいものを
選べばよい。
第2の方法は、生成されたプロセスが自分でオペレー
ティングシステムのシステムコールを通じてプロセッサ
識別子を設定する方法である。
ティングシステムのシステムコールを通じてプロセッサ
識別子を設定する方法である。
以上は、第1図(b)にて説明した。
次に第3の方法は、プロセス生成時には、いずれのプ
ロセッサでも実行可のコード(すなわち汎用コード)が
入っているが、いずれかのプロセッサで実行されると
き、プロセッサ識別子が、そのプロセッサの番号に設定
され、そのプロセッサでだけ実行され、終了時には、ど
のプロセッサでも実行可の汎用コードに戻し、次の実行
処理はどのプロセッサでも実行可とする方法である。
ロセッサでも実行可のコード(すなわち汎用コード)が
入っているが、いずれかのプロセッサで実行されると
き、プロセッサ識別子が、そのプロセッサの番号に設定
され、そのプロセッサでだけ実行され、終了時には、ど
のプロセッサでも実行可の汎用コードに戻し、次の実行
処理はどのプロセッサでも実行可とする方法である。
特に、この第3の方法を実現するために、前記プロセ
ッサ制御モード322(322-0,322-1,322-2,322-3)が、プ
ロセス管理テーブル32(32-0,32-1,32-2,32-3)に用意
されている。このプロセッサ制御モードには、プロセッ
サの固定化をしないというモードと、プロセス実行開始
から終了まで一時的に固定するモードがある。ここで
は、プロセッサの固定化をしない場合を“0"とし、プロ
セッサを一時的に固定する場合を“1"とする。さらに、
一度生成されたなら、常時固定してしまう場合を“2"と
する。この場合、プロセスが最初に生成されたときだけ
プロセス管理テーブルを確保して、プロセス終了時にこ
の管理テーブルを解放せず、2回目以降の生成時は、前
回使用した管理テーブルを使用することにより、一度設
定されたプロセッサ識別子を常に使用させるものであ
る。
ッサ制御モード322(322-0,322-1,322-2,322-3)が、プ
ロセス管理テーブル32(32-0,32-1,32-2,32-3)に用意
されている。このプロセッサ制御モードには、プロセッ
サの固定化をしないというモードと、プロセス実行開始
から終了まで一時的に固定するモードがある。ここで
は、プロセッサの固定化をしない場合を“0"とし、プロ
セッサを一時的に固定する場合を“1"とする。さらに、
一度生成されたなら、常時固定してしまう場合を“2"と
する。この場合、プロセスが最初に生成されたときだけ
プロセス管理テーブルを確保して、プロセス終了時にこ
の管理テーブルを解放せず、2回目以降の生成時は、前
回使用した管理テーブルを使用することにより、一度設
定されたプロセッサ識別子を常に使用させるものであ
る。
前記第1の方法および第2の方法では、自動的にプロ
セッサ制御モードは“0"に設定される。第3の方法で
は、プロセス生成時に、プロセッサ識別子の他にプロセ
ッサ制御モードを指定できる必要があり、このためのシ
ステムコールがオペレーティングシステムに用意されて
いる。この方法を、以下図を用いて説明する。
セッサ制御モードは“0"に設定される。第3の方法で
は、プロセス生成時に、プロセッサ識別子の他にプロセ
ッサ制御モードを指定できる必要があり、このためのシ
ステムコールがオペレーティングシステムに用意されて
いる。この方法を、以下図を用いて説明する。
第3図は、この方法のプロセス生成処理を示してい
る。オペレーティングシステムは、システムコールによ
って、プロセッサ制御モードとプロセッサ識別子を渡さ
れるが、図中でこれらはmode,procidとして示してあ
る。システムコールが発行されると、まずオペレーティ
ングシステムは、生成するプロセスのためのプロセス管
理テーブル32を確保する(12-2)、その後、従前のプロ
セス生成処理12-2を行い、最後に動作プロセッサの設定
処理12-2を行う。
る。オペレーティングシステムは、システムコールによ
って、プロセッサ制御モードとプロセッサ識別子を渡さ
れるが、図中でこれらはmode,procidとして示してあ
る。システムコールが発行されると、まずオペレーティ
ングシステムは、生成するプロセスのためのプロセス管
理テーブル32を確保する(12-2)、その後、従前のプロ
セス生成処理12-2を行い、最後に動作プロセッサの設定
処理12-2を行う。
この動作プロセッサの設定処理12-3は、第4図のフロ
ー312に示したように、まず指定されたプロセッサ制御
モードmodeの値を調べ(312-0)、“2"でなければ第4
図に示したように、該プロセス管理テーブル32のプロセ
ッサ制御モード322にmodeの値を設定し(312-2)、プロ
セッサ識別子321にprocidの値を設定する(312-3)。ス
テップ312-0でプロセッサ制御モードの値が“2"であれ
ば、プロセス管理テーブル32の当該プロセスについての
プロセッサ制御モード322が既に“2"になっているか否
かを調べ(312-1)、“2"になっていれば第4図の処理
を終了し、“2"になっていなければ、上記ステップ312-
2,312-3へ進み、所定のmode値およびprocid値を設定す
る。このようにして生成されたプロセスは、第2図に示
したプロセススケジューラによって選択され、プロセッ
サ識別子321に基づきいずれかのプロセッサで実行され
る。この実行されるときの処理を第5図に示す。
ー312に示したように、まず指定されたプロセッサ制御
モードmodeの値を調べ(312-0)、“2"でなければ第4
図に示したように、該プロセス管理テーブル32のプロセ
ッサ制御モード322にmodeの値を設定し(312-2)、プロ
セッサ識別子321にprocidの値を設定する(312-3)。ス
テップ312-0でプロセッサ制御モードの値が“2"であれ
ば、プロセス管理テーブル32の当該プロセスについての
プロセッサ制御モード322が既に“2"になっているか否
かを調べ(312-1)、“2"になっていれば第4図の処理
を終了し、“2"になっていなければ、上記ステップ312-
2,312-3へ進み、所定のmode値およびprocid値を設定す
る。このようにして生成されたプロセスは、第2図に示
したプロセススケジューラによって選択され、プロセッ
サ識別子321に基づきいずれかのプロセッサで実行され
る。この実行されるときの処理を第5図に示す。
第5図のプロセス実行処理においては、破線枠で囲っ
た部分が本実施例により追加された部分である。まず実
行するプロセスのプロセス管理テーブル32のアドレスを
求め(313-1)、このプロセス管理テーブルのプロセッ
サ制御モード322の値を判定する(313-2)。この値が
“0"の場合は、プロセッサの固定化を行わない場合であ
るのでプロセス管理テーブルのプロセッサ識別子321に
汎用コード“0"を設定する(313-4)。また、前記値が
“1"であるときは、プロセスの実行開始から終了までの
間で固定にするという場合であるので、該プロセス管理
テーブルのプロセッサ識別子321にスケジューラにより
決定されたプロセッサのプロセッサ番号11を設定する
(313-3)。前記値が“2"の場合には、プロセッサを常
時固定する場合であるので何もしない。以上の処理の後
にユーザプログラムの実行を行う(313-5)。
た部分が本実施例により追加された部分である。まず実
行するプロセスのプロセス管理テーブル32のアドレスを
求め(313-1)、このプロセス管理テーブルのプロセッ
サ制御モード322の値を判定する(313-2)。この値が
“0"の場合は、プロセッサの固定化を行わない場合であ
るのでプロセス管理テーブルのプロセッサ識別子321に
汎用コード“0"を設定する(313-4)。また、前記値が
“1"であるときは、プロセスの実行開始から終了までの
間で固定にするという場合であるので、該プロセス管理
テーブルのプロセッサ識別子321にスケジューラにより
決定されたプロセッサのプロセッサ番号11を設定する
(313-3)。前記値が“2"の場合には、プロセッサを常
時固定する場合であるので何もしない。以上の処理の後
にユーザプログラムの実行を行う(313-5)。
第6図は前記プロセッサ識別子の第3の設定方法の実
施に係わるプロセスの終了処理の例を示したものであ
る。本例では、まず終了するプロセスのプロセス管理テ
ーブル32のアドレスを求め(314-1)、該プロセス管理
テーブルのプロセッサ制御モード322の値を判定する(3
14-2)。この値が“1"であるときは、プロセスの実行開
始から終了までの間で固定にするという場合であるの
で、該プロセス管理テーブルのプロセッサ識別子321に
汎用コード(値は“0")を設定する(314-3)。このプ
ロセッサ制御モードが“0"および“2"の場合は変更する
必要がないため何もしない。以上の処理の後に従前のプ
ロセスの終了処理を行う(314-4)。
施に係わるプロセスの終了処理の例を示したものであ
る。本例では、まず終了するプロセスのプロセス管理テ
ーブル32のアドレスを求め(314-1)、該プロセス管理
テーブルのプロセッサ制御モード322の値を判定する(3
14-2)。この値が“1"であるときは、プロセスの実行開
始から終了までの間で固定にするという場合であるの
で、該プロセス管理テーブルのプロセッサ識別子321に
汎用コード(値は“0")を設定する(314-3)。このプ
ロセッサ制御モードが“0"および“2"の場合は変更する
必要がないため何もしない。以上の処理の後に従前のプ
ロセスの終了処理を行う(314-4)。
前述のように、プロセッサを常時固定するモード、す
なわちプロセッサ制御モード“2"がプロセス生成時に設
定されると、第5図のプロセスの実行処理に示すよう
に、その実行時には何ら変更を受けず、また、第6図の
プロセスの終了処理においても、ステップ314-2の判定
で“1"以外なので、プロセッサ識別子は、プロセス生成
処理において設定された値がそのまま残される。プロセ
ス管理テーブルも保存されるので、設定済みのプロセッ
サ識別子およびプロセッサ制御モードは、次のプロセス
生成時まで保存される。次のプロセス生成時には、前回
使用のプロセス管理テーブルを探し、すでにプロセッサ
制御モードが“2"になっていた場合は、プロセッサ識別
子を書き変えないことにより、プロセッサ識別子を保存
する。以上により、プロセッサ制御モードが“2"のプロ
セスは、ユーザの要求により制御モードが変更されない
限り、一度割当てられたプロセッサで永久に動き続ける
ことになる。
なわちプロセッサ制御モード“2"がプロセス生成時に設
定されると、第5図のプロセスの実行処理に示すよう
に、その実行時には何ら変更を受けず、また、第6図の
プロセスの終了処理においても、ステップ314-2の判定
で“1"以外なので、プロセッサ識別子は、プロセス生成
処理において設定された値がそのまま残される。プロセ
ス管理テーブルも保存されるので、設定済みのプロセッ
サ識別子およびプロセッサ制御モードは、次のプロセス
生成時まで保存される。次のプロセス生成時には、前回
使用のプロセス管理テーブルを探し、すでにプロセッサ
制御モードが“2"になっていた場合は、プロセッサ識別
子を書き変えないことにより、プロセッサ識別子を保存
する。以上により、プロセッサ制御モードが“2"のプロ
セスは、ユーザの要求により制御モードが変更されない
限り、一度割当てられたプロセッサで永久に動き続ける
ことになる。
以上で述べた動作プロセッサの設定方法の効果は以下
のとおりである。第1の方法は前記課題で述べたリアル
タイムシステムにおける信頼性の問題、既存のソフトウ
エアの利用性、システム立ち上げ等のシステム構築上の
問題を解決するものであり、第2の方法はリアルタイム
システムにおける信頼性の問題およびシステム立ち上げ
等のシステム構築上の問題を解決するものである。ま
た、第3の方法は前記プロセスマイグレーションによる
性能低下を防止するものである。
のとおりである。第1の方法は前記課題で述べたリアル
タイムシステムにおける信頼性の問題、既存のソフトウ
エアの利用性、システム立ち上げ等のシステム構築上の
問題を解決するものであり、第2の方法はリアルタイム
システムにおける信頼性の問題およびシステム立ち上げ
等のシステム構築上の問題を解決するものである。ま
た、第3の方法は前記プロセスマイグレーションによる
性能低下を防止するものである。
ここで、第3の方法によってプロセスマイグレーショ
ンを防止できる理由を簡単に説明する。いずれのプロセ
ッサでも実行可のプロセスは、あるプロセッサで実行さ
れた後、入出力装置のアクセス等により待ちとなり、そ
のプロセッサを一度開け渡すと、次に中断状態を解除さ
れて実行を再開するとき、従来であれば前回実行してい
たプロセッサに割当てられるとは限らない。このため、
もし異ったプロセッサに割当てられるとプロセスマイグ
レーションが発生する。しかし、第3の方法では、プロ
セス生成時に、第4図のステップ312-3でユーザ指定の
プロセッサ識別子を設定されるが、第5図のステップ31
3-3に示した、プロセス実行開始時にプロセッサ識別子3
21に設定されたプロセッサ番号11は、それ以後、プロセ
スの実行が中断されても、変更されずに維持されて、第
6図のプロセスの終了まで変更されることはない。した
がって、実行中断後の再開時のプロセススケジューリン
グ(第2図)では、プロセッサ識別子321に設定された
特定のプロセッサ番号が使用され、実行再開時には必ず
このプロセッサ番号のプロセッサで実行される。このた
め、プロセスマイグレーションは発生しない。なお、プ
ロセスの実行完了後には、第6図のステップ314-3に示
すように、プロセッサ識別子に“0"が設定されるので、
このプロセスが次に実行されるプロセッサは限定されな
い。
ンを防止できる理由を簡単に説明する。いずれのプロセ
ッサでも実行可のプロセスは、あるプロセッサで実行さ
れた後、入出力装置のアクセス等により待ちとなり、そ
のプロセッサを一度開け渡すと、次に中断状態を解除さ
れて実行を再開するとき、従来であれば前回実行してい
たプロセッサに割当てられるとは限らない。このため、
もし異ったプロセッサに割当てられるとプロセスマイグ
レーションが発生する。しかし、第3の方法では、プロ
セス生成時に、第4図のステップ312-3でユーザ指定の
プロセッサ識別子を設定されるが、第5図のステップ31
3-3に示した、プロセス実行開始時にプロセッサ識別子3
21に設定されたプロセッサ番号11は、それ以後、プロセ
スの実行が中断されても、変更されずに維持されて、第
6図のプロセスの終了まで変更されることはない。した
がって、実行中断後の再開時のプロセススケジューリン
グ(第2図)では、プロセッサ識別子321に設定された
特定のプロセッサ番号が使用され、実行再開時には必ず
このプロセッサ番号のプロセッサで実行される。このた
め、プロセスマイグレーションは発生しない。なお、プ
ロセスの実行完了後には、第6図のステップ314-3に示
すように、プロセッサ識別子に“0"が設定されるので、
このプロセスが次に実行されるプロセッサは限定されな
い。
第7図に本発明の実施例の応用例を示す。本例では、
複数プロセッサが同一のプロセッサ番号を有することを
許したものである。スケジューラ311の処理は第2図に
示したものと同一である。プロセス2および3のプロセ
ッサ識別子321は共に“1"であり、プロセッサP1およびP
2は共にプロセッサ番号“1"を有するため、プロセス2
および3は、プロセッサP1あるいはP2で動作することが
できる。本例により、プロセッサP1とP2で自動負荷分散
を行い、プロセッサP3には別のジョブを割り付けるとい
った柔軟性のあるプロセッサ割当てがオペレーティング
システムの変更なしで容易に実現できるという効果が得
られる。
複数プロセッサが同一のプロセッサ番号を有することを
許したものである。スケジューラ311の処理は第2図に
示したものと同一である。プロセス2および3のプロセ
ッサ識別子321は共に“1"であり、プロセッサP1およびP
2は共にプロセッサ番号“1"を有するため、プロセス2
および3は、プロセッサP1あるいはP2で動作することが
できる。本例により、プロセッサP1とP2で自動負荷分散
を行い、プロセッサP3には別のジョブを割り付けるとい
った柔軟性のあるプロセッサ割当てがオペレーティング
システムの変更なしで容易に実現できるという効果が得
られる。
また、第8図には本発明の実施例の別の応用例を示
す。本例では、第7図と同様に複数プロセッサが同一の
プロセッサ番号を有することを許した例であるが、プロ
セス1のプロセッサ識別子321-1に負の値“−1"を指定
することにより、プロセッサ番号“1"を有するプロセッ
サP1およびP2では動作させないようにしたものである。
本実施例の具体的な用途としては、プロセッサP1および
P2がオンライン制御用プロセッサであり、プロセス1は
開発中のテストプログラムであり、オンライン制御には
一切影響を与えないために、プロセッサP1およびP2を避
けて動作させたいような場合がある。
す。本例では、第7図と同様に複数プロセッサが同一の
プロセッサ番号を有することを許した例であるが、プロ
セス1のプロセッサ識別子321-1に負の値“−1"を指定
することにより、プロセッサ番号“1"を有するプロセッ
サP1およびP2では動作させないようにしたものである。
本実施例の具体的な用途としては、プロセッサP1および
P2がオンライン制御用プロセッサであり、プロセス1は
開発中のテストプログラムであり、オンライン制御には
一切影響を与えないために、プロセッサP1およびP2を避
けて動作させたいような場合がある。
本例により、第7図と同様に柔軟なプロセッサ割当て
がオペレーティングシステムの変更なしで容易に実現で
きる等の効果が生まれる。
がオペレーティングシステムの変更なしで容易に実現で
きる等の効果が生まれる。
なお、プロセッサ番号11にも汎用コード(例えば
“0")を設け、汎用コードを有するプロセッサはいずれ
のプロセスを実行可能としてもよい。この場合には、各
プロセスのプロセッサ識別子の内容にかかわらず、当該
プロセッサではいずれのプロセスをも実行可能となる。
“0")を設け、汎用コードを有するプロセッサはいずれ
のプロセスを実行可能としてもよい。この場合には、各
プロセスのプロセッサ識別子の内容にかかわらず、当該
プロセッサではいずれのプロセスをも実行可能となる。
次に、本発明をプラント制御に適用したときのプロセ
スの各プロセッサに対する割当て例を第9図と第10図を
使って説明する。第9図は、第1図のマルチプロセッサ
システムに、プラント制御機器PC、端末T1、端末T2、オ
ンラインファイルOFを接続したシステム構成図であり、
第10図は、このシステムで動作するプロセスとプロセッ
サの割当て例を示してある。
スの各プロセッサに対する割当て例を第9図と第10図を
使って説明する。第9図は、第1図のマルチプロセッサ
システムに、プラント制御機器PC、端末T1、端末T2、オ
ンラインファイルOFを接続したシステム構成図であり、
第10図は、このシステムで動作するプロセスとプロセッ
サの割当て例を示してある。
ここでは、第10図に示したように次の5つのプロセス
について考える。端末T1を制御するための端末T1制御プ
ロセス91、端末T2を制御するための端末T2制御プロセス
92、統計情報をオンラインファイルOFへログするための
統計情報ログプロセス93、プラント制御機器PCを制御す
るためのプラント制御プロセス94、このシステムの異常
発生を監視する異常監視プロセス95がある。第10図のプ
ロセッサP1,P2,P3は、それぞれ第9図におけるP1,P2,P3
に対応しており、“○”はそのプロセスがそのプロセッ
サでの動作指定を受けていることを示し、“×”はその
プロセスがプロセッサ以外での動作指定を受けているこ
とを示し、無印は、任意のプロセッサでの動作指定を受
けていることを示す。
について考える。端末T1を制御するための端末T1制御プ
ロセス91、端末T2を制御するための端末T2制御プロセス
92、統計情報をオンラインファイルOFへログするための
統計情報ログプロセス93、プラント制御機器PCを制御す
るためのプラント制御プロセス94、このシステムの異常
発生を監視する異常監視プロセス95がある。第10図のプ
ロセッサP1,P2,P3は、それぞれ第9図におけるP1,P2,P3
に対応しており、“○”はそのプロセスがそのプロセッ
サでの動作指定を受けていることを示し、“×”はその
プロセスがプロセッサ以外での動作指定を受けているこ
とを示し、無印は、任意のプロセッサでの動作指定を受
けていることを示す。
第9図のようなシステムでは、端末制御とプラント制
御が主要な処理であるため、端末T1制御プロセス9はプ
ロセッサP1に割当て、端末T2制御プロセス92はプロセッ
サP2に、プラント制御プロセス94はプロセッサP3にそれ
ぞれ割当てることにより、互いに処理を妨げないように
する。統計情報ログプロセス93は各プロセッサの空き時
間で動作すればよいプロセスである。一方、プロセッサ
P3はプラント制御用に使用しているのでこの処理が一定
時間に終ることを保障するため、空き時間が存在して
も、その期間に他の処理を行わせることは極力避けたい
という要請がある。そこで、統計情報ログプロセス93
は、プロセッサP3以外のプロセッサで動くよう指定す
る。なお、異常監視プロセス95は、各プロセッサの監視
を行いたいので、プロセッサP3でも動くことを許し、す
べてのプロセッサで動作可とする。さらに、この異常監
視プロセス95は、自身で次に動作するプロセッサを指定
し、順次各プロセッサを監視するようにする。
御が主要な処理であるため、端末T1制御プロセス9はプ
ロセッサP1に割当て、端末T2制御プロセス92はプロセッ
サP2に、プラント制御プロセス94はプロセッサP3にそれ
ぞれ割当てることにより、互いに処理を妨げないように
する。統計情報ログプロセス93は各プロセッサの空き時
間で動作すればよいプロセスである。一方、プロセッサ
P3はプラント制御用に使用しているのでこの処理が一定
時間に終ることを保障するため、空き時間が存在して
も、その期間に他の処理を行わせることは極力避けたい
という要請がある。そこで、統計情報ログプロセス93
は、プロセッサP3以外のプロセッサで動くよう指定す
る。なお、異常監視プロセス95は、各プロセッサの監視
を行いたいので、プロセッサP3でも動くことを許し、す
べてのプロセッサで動作可とする。さらに、この異常監
視プロセス95は、自身で次に動作するプロセッサを指定
し、順次各プロセッサを監視するようにする。
以上のように各プロセスを所定のプロセッサに割当て
ることにより、第9図のプラント制御システムの処理
を、そのシステムに最適の態様で効率よく行うことが可
能となる。
ることにより、第9図のプラント制御システムの処理
を、そのシステムに最適の態様で効率よく行うことが可
能となる。
次に本発明の第2の実施例について詳細に説明する。
本実施例におけるマルチプロセッサシステムの構成例
を第11図に示す。本実施例では、各プロセッサが実行可
能なプロセスの優先度(プライオリティ)の下限と上限
を保持する手段210(210-1,210-2,210-3)および211(2
11-1,211-2,211-3)を各プロセッサに対応して設ける。
このプライオリティ保持手段は、各プロセッサ内の特殊
レジスタで構成し、あるいは共有メモリ上の特定のアド
レスをこの目的に割り当てることにより構成することが
できる。一方、プロセス管理テーブル32には、プロセス
ごとにプロセスの実行の優先度を示すプライオリティ
(PR)212(212-1,212-2,212-3)を保持する。本実施例
ではこの数値の小さいもの程、優先度が高いものとす
る。このプライオリティは、動的に決定されたり、静的
に定まったりするが、本実施例はプライオリティ自体の
決定方法には依存しない。本実施例において、実行待ち
のプロセスにプロセッサP1〜P3を割り当てる処理はプロ
セススケジューラ215が行う。第11図の他の部分は第2
図と同一である。
を第11図に示す。本実施例では、各プロセッサが実行可
能なプロセスの優先度(プライオリティ)の下限と上限
を保持する手段210(210-1,210-2,210-3)および211(2
11-1,211-2,211-3)を各プロセッサに対応して設ける。
このプライオリティ保持手段は、各プロセッサ内の特殊
レジスタで構成し、あるいは共有メモリ上の特定のアド
レスをこの目的に割り当てることにより構成することが
できる。一方、プロセス管理テーブル32には、プロセス
ごとにプロセスの実行の優先度を示すプライオリティ
(PR)212(212-1,212-2,212-3)を保持する。本実施例
ではこの数値の小さいもの程、優先度が高いものとす
る。このプライオリティは、動的に決定されたり、静的
に定まったりするが、本実施例はプライオリティ自体の
決定方法には依存しない。本実施例において、実行待ち
のプロセスにプロセッサP1〜P3を割り当てる処理はプロ
セススケジューラ215が行う。第11図の他の部分は第2
図と同一である。
第12図(a)は、スケジューラ215の詳細な処理フロ
ーである。本スケジューラでは、まず当該スケジューラ
が動作しているプロセッサが実行可能なプロセスのプラ
イオリティを得るために、その下限(LPR)と上限(HP
R)とを当該プロセッサのプライオリティ保持手段210,2
11から読み出す(215-1)。次に、実行待ちのプロセス
の中からプライオリティ212が最も高い(数値が最小)
ものを選択する(215-2)。選択したプロセスのプライ
オリティが当該プロセッサに実行可能なプライオリティ
の範囲に納っていれば(215-3)、選択したプロセスに
当該プロセスを割り付ける(215-5)。さもなくば、次
にプライオリティの高いプロセスを選択してくる(215-
4)。
ーである。本スケジューラでは、まず当該スケジューラ
が動作しているプロセッサが実行可能なプロセスのプラ
イオリティを得るために、その下限(LPR)と上限(HP
R)とを当該プロセッサのプライオリティ保持手段210,2
11から読み出す(215-1)。次に、実行待ちのプロセス
の中からプライオリティ212が最も高い(数値が最小)
ものを選択する(215-2)。選択したプロセスのプライ
オリティが当該プロセッサに実行可能なプライオリティ
の範囲に納っていれば(215-3)、選択したプロセスに
当該プロセスを割り付ける(215-5)。さもなくば、次
にプライオリティの高いプロセスを選択してくる(215-
4)。
このスケジューラの動作を例を挙げて説明する。例え
ば第11図において、プロセッサP3でスケジューラ215が
動作しており、プロセス1〜4が実行待ち状態にあった
場合を考える。スケジューラ215は、まずプロセッサP3
で実行可能なプライオリティが“50"から“100"の間で
あることを知る。そこで、実行待ちプロセスの中でプラ
イオリティが最も高い(“25")プロセス3を選択する
が、これはプロセッサP3が実行可能なプライオリティの
範囲外なので、次にプライオリティが高い(“40")プ
ロセス1を選択する。最終的にはプロセス4(プライオ
リティ値“55")が選択され、スケジューラ215はプロセ
ッサP3をプロセス4に割り付ける。
ば第11図において、プロセッサP3でスケジューラ215が
動作しており、プロセス1〜4が実行待ち状態にあった
場合を考える。スケジューラ215は、まずプロセッサP3
で実行可能なプライオリティが“50"から“100"の間で
あることを知る。そこで、実行待ちプロセスの中でプラ
イオリティが最も高い(“25")プロセス3を選択する
が、これはプロセッサP3が実行可能なプライオリティの
範囲外なので、次にプライオリティが高い(“40")プ
ロセス1を選択する。最終的にはプロセス4(プライオ
リティ値“55")が選択され、スケジューラ215はプロセ
ッサP3をプロセス4に割り付ける。
本実施例によって、プライオリティの低いプロセス2
やプロセス4にも必ず実行の機会が与えられることにな
り、プライオリティの高いプロセスが多く発生した時に
プライオリティの低いプロセスが全く動作しないといっ
た障害を防ぐことが可能となる。また、各プロセッサの
実行可能なプロセスのプライオリティの範囲の重複をな
くすことにより、プロセッサとプロセスとの関係を固定
化することができる。
やプロセス4にも必ず実行の機会が与えられることにな
り、プライオリティの高いプロセスが多く発生した時に
プライオリティの低いプロセスが全く動作しないといっ
た障害を防ぐことが可能となる。また、各プロセッサの
実行可能なプロセスのプライオリティの範囲の重複をな
くすことにより、プロセッサとプロセスとの関係を固定
化することができる。
第12図(b)はスケジューラ215の他の詳細なフロー
である。この例では、第12図(a)のステップ215-2〜2
15-4に代わってステップ215-6〜215-8を採用し、順次HP
Rの値の小さい(すなわち優先度の高い)方から対応す
る実行待ちプロセスがあるか否かを調べるようにしてい
る。これから得られる結果は第12図(a)のフローと同
じである。
である。この例では、第12図(a)のステップ215-2〜2
15-4に代わってステップ215-6〜215-8を採用し、順次HP
Rの値の小さい(すなわち優先度の高い)方から対応す
る実行待ちプロセスがあるか否かを調べるようにしてい
る。これから得られる結果は第12図(a)のフローと同
じである。
次に本発明の第3の実施例について詳細に説明する。
本実施例によるマルチプロセッサシステムの構成を第13
図に示す。本実施例では、プロセス管理テーブル32内の
各プロセスのプライオリティは全プロセッサに共通に設
定するのではなく、プロセッサ毎に、各プロセスの優先
度を設定できるようにしたものである。そのために、プ
ロセス管理テーブル32には、各プロセス毎に、当該プロ
セスの各プロセッサP1〜P3に於ける実行の優先度をそれ
ぞれ示すプライオリティ231,232,233を保持する。
本実施例によるマルチプロセッサシステムの構成を第13
図に示す。本実施例では、プロセス管理テーブル32内の
各プロセスのプライオリティは全プロセッサに共通に設
定するのではなく、プロセッサ毎に、各プロセスの優先
度を設定できるようにしたものである。そのために、プ
ロセス管理テーブル32には、各プロセス毎に、当該プロ
セスの各プロセッサP1〜P3に於ける実行の優先度をそれ
ぞれ示すプライオリティ231,232,233を保持する。
本実施例においても、プライオリティ自体の決定方法
の如何は問わない。本実施例において、実行待ちのプロ
セスにプロセッサP1〜P3を割り付ける処理はプロセスス
ケジューラ234が行う。第13図の他の部分は第1図と同
一である。
の如何は問わない。本実施例において、実行待ちのプロ
セスにプロセッサP1〜P3を割り付ける処理はプロセスス
ケジューラ234が行う。第13図の他の部分は第1図と同
一である。
第14図は、スケジューラ234の詳細な処理フローであ
る。本スケジューラ234では、まず自身が動作している
プロセッサのプロセッサ番号を得る(234-1)。次に、
各プロセス管理テーブル32内の当該プロセッサ番号に対
応する位置のプライオリティが最も高いプロセスを選択
する(234-2)。そして、そのプロセスに当該プロセッ
サを割り当てる(234-3)。
る。本スケジューラ234では、まず自身が動作している
プロセッサのプロセッサ番号を得る(234-1)。次に、
各プロセス管理テーブル32内の当該プロセッサ番号に対
応する位置のプライオリティが最も高いプロセスを選択
する(234-2)。そして、そのプロセスに当該プロセッ
サを割り当てる(234-3)。
次にこのスケジューラの動作例を説明する。
例えば第13図に於て、プロセッサP3でスケジューラ23
4が動作しており、プロセス1〜4が実行待ち状態にあ
った場合を考える。スケジューラ234はまずプロセッサ
番号を得て、自身がプロセッサP3で動作していることを
認識する。そしてプロセス管理テーブル32のプロセッサ
P3に対応したプライオリティ231-1〜231-4を検索して、
次に実行すべきプロセス3を選択して、これに当該プロ
セッサを割り付ける。なお、プロセッサの別を問わなけ
れば実行待ちプロセス1〜4の中で最も高いプライオリ
ティをもっているものはプロセス1であり、そのプライ
オリティは“20"である。しかし、このプライオリティ2
31-1はプロセッサP1に対するものなので、スケジューラ
234がプロセッサP1以外で動作しているときは無視され
る。
4が動作しており、プロセス1〜4が実行待ち状態にあ
った場合を考える。スケジューラ234はまずプロセッサ
番号を得て、自身がプロセッサP3で動作していることを
認識する。そしてプロセス管理テーブル32のプロセッサ
P3に対応したプライオリティ231-1〜231-4を検索して、
次に実行すべきプロセス3を選択して、これに当該プロ
セッサを割り付ける。なお、プロセッサの別を問わなけ
れば実行待ちプロセス1〜4の中で最も高いプライオリ
ティをもっているものはプロセス1であり、そのプライ
オリティは“20"である。しかし、このプライオリティ2
31-1はプロセッサP1に対するものなので、スケジューラ
234がプロセッサP1以外で動作しているときは無視され
る。
本実施例によれば、プロセスごとに特定のプロセッサ
に対するプライオリティを高く設定することができ、そ
のプロセスを概ね一つのプロセッサに固定できる。ただ
し、そのプロセッサが停止しても、プロセスの実行が不
可能になる訳でなく、優先度は下がるが、他のプロセッ
サで実行できる。
に対するプライオリティを高く設定することができ、そ
のプロセスを概ね一つのプロセッサに固定できる。ただ
し、そのプロセッサが停止しても、プロセスの実行が不
可能になる訳でなく、優先度は下がるが、他のプロセッ
サで実行できる。
次に、本発明の第4の実施例について詳細に説明す
る。
る。
本実施例によるマルチプロセッサシステムの構成図
は、第1図と同じである。
は、第1図と同じである。
第15図に各プロセスに対応したプロセス管理テーブル
32の構成例を示す。前述と同様に、プロセス識別子pid3
20は、システム内でプロセスに一意に付けられる識別番
号である。プロセッサ識別子procid321は、当該プロセ
スが必要とするプロセッサを示している。procid=0の
ときは任意のプロセッサを要求し、procid=n(nは自
然数)のときはプロセッサ番号nのプロセッサを要求
し、procid=−nのときはプロセッサ番号n以外のプロ
セッサを要求している。プロセッサ制御モードmode322
は、前述のように、プロセッサ識別子の動的変更あるい
は固定(または有効)期間を規定する。mode=0のと
き、プロセッサ識別子は常にprocid=0と見なされる。
即ち、当該プロセス生成時にprocid=0が設定される。
mode=1のときは、当該プロセスの実行開始から終了ま
での間だけそのプロセッサ識別子procidが固定となる。
即ち、プロセス実行開始時に、適当なprocidが設定され
る。mode=2のとき、プロセスの実行開始、終了時に於
て、procidは変化しない。即ち一度設定されたprocid
は、第4図に示す様な動作プロセッサ設定処理を行わな
い限り変更されることはない。
32の構成例を示す。前述と同様に、プロセス識別子pid3
20は、システム内でプロセスに一意に付けられる識別番
号である。プロセッサ識別子procid321は、当該プロセ
スが必要とするプロセッサを示している。procid=0の
ときは任意のプロセッサを要求し、procid=n(nは自
然数)のときはプロセッサ番号nのプロセッサを要求
し、procid=−nのときはプロセッサ番号n以外のプロ
セッサを要求している。プロセッサ制御モードmode322
は、前述のように、プロセッサ識別子の動的変更あるい
は固定(または有効)期間を規定する。mode=0のと
き、プロセッサ識別子は常にprocid=0と見なされる。
即ち、当該プロセス生成時にprocid=0が設定される。
mode=1のときは、当該プロセスの実行開始から終了ま
での間だけそのプロセッサ識別子procidが固定となる。
即ち、プロセス実行開始時に、適当なprocidが設定され
る。mode=2のとき、プロセスの実行開始、終了時に於
て、procidは変化しない。即ち一度設定されたprocid
は、第4図に示す様な動作プロセッサ設定処理を行わな
い限り変更されることはない。
本実施例では、更にプロセッサ親和度Paf(後述)と
いう概念を導入し、mode=3の場合、そのプロセッサ親
和度Pafが正値のときに限って、procidを有効とし、負
値のときには、即ち、プロセッサ識別子の判定処理によ
りそのプロセッサに割付け不可となる判定結果が連続し
て所定回数を越えて発生したときには、procid=0と見
なして、そのプロセスのプロセッサ識別子を当該プロセ
ッサ番号に変更する。プライオリティPr323は、前述と
同様、プロセスの実行の優先度を示すものであり、その
値が小さい程優先度が高い。スケジュール要求カウンタ
Src324は、当該プロセスが実行待ち状態の時に、次に実
行すべきプロセスとして選択された回数を示している。
スケジュール要求しきい値Sth325は、Srcの上限値を示
している。前述のプロセッサ親和度Pafは、スケジュー
ル要求カウンタSrcとスケジュール要求しきい値Sthとか
ら下記の様に算出される。
いう概念を導入し、mode=3の場合、そのプロセッサ親
和度Pafが正値のときに限って、procidを有効とし、負
値のときには、即ち、プロセッサ識別子の判定処理によ
りそのプロセッサに割付け不可となる判定結果が連続し
て所定回数を越えて発生したときには、procid=0と見
なして、そのプロセスのプロセッサ識別子を当該プロセ
ッサ番号に変更する。プライオリティPr323は、前述と
同様、プロセスの実行の優先度を示すものであり、その
値が小さい程優先度が高い。スケジュール要求カウンタ
Src324は、当該プロセスが実行待ち状態の時に、次に実
行すべきプロセスとして選択された回数を示している。
スケジュール要求しきい値Sth325は、Srcの上限値を示
している。前述のプロセッサ親和度Pafは、スケジュー
ル要求カウンタSrcとスケジュール要求しきい値Sthとか
ら下記の様に算出される。
プロセッサ親和度Paf=Sth−Src 本実施例では、Src,Sthを上記の如く定めたが、他に
も、Srcを実行待ち状態にある時間、Sthをその上限値と
し、あるいはSrcをprocidで示されたプロセッサのキャ
ッシュメモリ内に残っている当該プロセスに関するデー
タ量、Sthをその下限値とし、さらにはSrcをメモリ内に
残っている当該プロセスに関するデータ量、Sthをその
下限値とすることも可能である。
も、Srcを実行待ち状態にある時間、Sthをその上限値と
し、あるいはSrcをprocidで示されたプロセッサのキャ
ッシュメモリ内に残っている当該プロセスに関するデー
タ量、Sthをその下限値とし、さらにはSrcをメモリ内に
残っている当該プロセスに関するデータ量、Sthをその
下限値とすることも可能である。
第16図に本実施例におるスケジューラの処理フローを
示す。
示す。
スケジューラが動作しているプロセッサのプロセッサ
番号P#を得た(261-1)後、実行待ちプロセスの中か
らプライオリティの最も高いものを選択し(261-2)、
この選択したプロセスのプロセス管理テーブルのプロセ
ッサ識別子procidとプロセッサ制御モードmodeとを得る
(261-3)。次に、プロセッサ識別子procidを調べる(2
61-4)。この部分は第2図の処理311-2と同様である。
このとき、当該プロセッサが指定されておらず、かつ、
mode=3の場合(261-6)、Srcをインクリメントした
(261-7)後、プロセッサ親和度Pafを調べる(261-
8)。プロセッサ親和度Pafが負値となったときには、当
該P#を新しいprocidとして(261-9)、Srcを初期化し
た後、当該プロセスに当該プロセッサを割り付ける(26
1-5)。ステップ261-8でPafの値が負値でないときに
は、次にプライオリティが高いプロセスを選択して(26
1-10)。同じ処理を繰り返す。このプロセス選択の際、
すべての実行待ちプロセスを調べ終ると再び最もプライ
オリティの高いプロセスを選択する。
番号P#を得た(261-1)後、実行待ちプロセスの中か
らプライオリティの最も高いものを選択し(261-2)、
この選択したプロセスのプロセス管理テーブルのプロセ
ッサ識別子procidとプロセッサ制御モードmodeとを得る
(261-3)。次に、プロセッサ識別子procidを調べる(2
61-4)。この部分は第2図の処理311-2と同様である。
このとき、当該プロセッサが指定されておらず、かつ、
mode=3の場合(261-6)、Srcをインクリメントした
(261-7)後、プロセッサ親和度Pafを調べる(261-
8)。プロセッサ親和度Pafが負値となったときには、当
該P#を新しいprocidとして(261-9)、Srcを初期化し
た後、当該プロセスに当該プロセッサを割り付ける(26
1-5)。ステップ261-8でPafの値が負値でないときに
は、次にプライオリティが高いプロセスを選択して(26
1-10)。同じ処理を繰り返す。このプロセス選択の際、
すべての実行待ちプロセスを調べ終ると再び最もプライ
オリティの高いプロセスを選択する。
次にmode=3の時のスケジューラの動作を説明する。
mode=0,1,2の動作は前述した実施例と同じなので省略
する。
mode=0,1,2の動作は前述した実施例と同じなので省略
する。
今、実行待ちプロセスが1つしかなく、そのプロセス
管理テーブル32が第1図(a)に示す値を持っており、
スケジューラがプロセッサP3で動作していた場合を考え
る。このとき、procidの判定(261-4)が成立しないの
で、Srcをインクリメントして“1"とし、プロセッサ親
和度Pafを算出する(261-8)。この場合、正値になるの
で、次にプライオリティの高いプロセスを選択する(26
1-10)。この例では実行待ちプロセスが1つしかないの
で、再び同じプロセスが選択され、同じ処理が行われ
る。最終的には、6回目の選択でプロセッサ親和度Paf
が負値となり、procidを“3"として当該プロセッサを割
り付ける。プロセッサ親和度Pafの初期値は、スケジュ
ール要求しきい値Sthが大きい程、大きくなり、他のプ
ロセッサへの割当てを拒否する回数が増加する。
管理テーブル32が第1図(a)に示す値を持っており、
スケジューラがプロセッサP3で動作していた場合を考え
る。このとき、procidの判定(261-4)が成立しないの
で、Srcをインクリメントして“1"とし、プロセッサ親
和度Pafを算出する(261-8)。この場合、正値になるの
で、次にプライオリティの高いプロセスを選択する(26
1-10)。この例では実行待ちプロセスが1つしかないの
で、再び同じプロセスが選択され、同じ処理が行われ
る。最終的には、6回目の選択でプロセッサ親和度Paf
が負値となり、procidを“3"として当該プロセッサを割
り付ける。プロセッサ親和度Pafの初期値は、スケジュ
ール要求しきい値Sthが大きい程、大きくなり、他のプ
ロセッサへの割当てを拒否する回数が増加する。
すなわち、スケジュール要求しきい値を大きく設定す
る程、そのプロセスと当該プロセッサとの親和度が増加
するといえる。目的のプロセッサ以外のプロセッサへの
割当て拒否を繰返している間に、目的のプロセッサが空
きになった場合には、そのプロセッサでのプロセススケ
ジューリングにより、当該プロセスは直ちにその目的の
プロセッサに割当てられることになる。なお、本制御モ
ードは、前述した制御モードとともに採用することがで
きるが、本制御モードのみを独立して採用することも可
能である。
る程、そのプロセスと当該プロセッサとの親和度が増加
するといえる。目的のプロセッサ以外のプロセッサへの
割当て拒否を繰返している間に、目的のプロセッサが空
きになった場合には、そのプロセッサでのプロセススケ
ジューリングにより、当該プロセスは直ちにその目的の
プロセッサに割当てられることになる。なお、本制御モ
ードは、前述した制御モードとともに採用することがで
きるが、本制御モードのみを独立して採用することも可
能である。
本実施例の新たな制御モードによれば、プロセスはそ
の親和度を高く設定することにより、一旦割り当てられ
たプロセッサ上で動作する確率が高くなる。これはプロ
セッサがキャッシュメモリを持ち、そこに多くのデータ
を格納している場合、不要なプロセスマイグレーション
を押えてキャッシュメモリのヒット率を高める効果があ
る。同時に、一定条件で、プロセッサに対する束縛を解
くことになり、不用意にプロセッサの稼働率が低下する
ことを防止できる。
の親和度を高く設定することにより、一旦割り当てられ
たプロセッサ上で動作する確率が高くなる。これはプロ
セッサがキャッシュメモリを持ち、そこに多くのデータ
を格納している場合、不要なプロセスマイグレーション
を押えてキャッシュメモリのヒット率を高める効果があ
る。同時に、一定条件で、プロセッサに対する束縛を解
くことになり、不用意にプロセッサの稼働率が低下する
ことを防止できる。
次にプロセッサ識別子で指定可能なプロセッサの数と
実際のマルチプロセッサシステム内で使用可能な実プロ
セッサの数が合わない場合についての第5の実施例を示
す。
実際のマルチプロセッサシステム内で使用可能な実プロ
セッサの数が合わない場合についての第5の実施例を示
す。
一般にプロセス(ソフトウェア)からプロセッサを指
定する時には、実プロセッサの数に依存しない様にする
ことが望ましい。そこで、第19図に示すように、プロセ
スから指定するプロセッサ識別子を論理プロセッサ識別
子290-1とし、プロセッサ番号に対応するプロセッサ識
別子を物理プロセッサ識別子290-2とする。そして、2
つを対応付ける対応テーブル290を設ける。対応テーブ
ル290は、マルチプロセッサシステムを初期化するとき
に共用メモリ5上に作成される。一般に、論理プロセッ
サ識別子の方が物理プロセッサ識別子より多いので、1
つの物理プロセッサ識別子に複数の論理プロセッサ識別
子が対応付けられる。第19図の例では、論理プロセッサ
識別子が“0"〜“9"(“0"は汎用コード)まで設定され
ているのに対して、物理プロセッサ識別子は、実プロセ
ッサの台数が3台なので、汎用コードを含めて“0"〜
“3"しかない。したがって、論理プロセッサ識別子“4"
〜“9"には、物理プロセッサ識別子が重複して対応づけ
られている。
定する時には、実プロセッサの数に依存しない様にする
ことが望ましい。そこで、第19図に示すように、プロセ
スから指定するプロセッサ識別子を論理プロセッサ識別
子290-1とし、プロセッサ番号に対応するプロセッサ識
別子を物理プロセッサ識別子290-2とする。そして、2
つを対応付ける対応テーブル290を設ける。対応テーブ
ル290は、マルチプロセッサシステムを初期化するとき
に共用メモリ5上に作成される。一般に、論理プロセッ
サ識別子の方が物理プロセッサ識別子より多いので、1
つの物理プロセッサ識別子に複数の論理プロセッサ識別
子が対応付けられる。第19図の例では、論理プロセッサ
識別子が“0"〜“9"(“0"は汎用コード)まで設定され
ているのに対して、物理プロセッサ識別子は、実プロセ
ッサの台数が3台なので、汎用コードを含めて“0"〜
“3"しかない。したがって、論理プロセッサ識別子“4"
〜“9"には、物理プロセッサ識別子が重複して対応づけ
られている。
スケジューラのフロー(第2図あるいは第16図)の中
でこの対応テーブル290を用いた場合の詳細処理フロー
を第17図に示す。対応テーブル290が作成されている場
合(270-1)には、プロセス管理テーブル内のプロセッ
サ識別子を論理プロセッサ識別子と見なして、対応テー
ブル290よりこれに対応する物理プロセッサ識別子290-2
を得る(270-2)。そして、これを以後プロセッサ識別
子として使用する(270-3,270-4)。
でこの対応テーブル290を用いた場合の詳細処理フロー
を第17図に示す。対応テーブル290が作成されている場
合(270-1)には、プロセス管理テーブル内のプロセッ
サ識別子を論理プロセッサ識別子と見なして、対応テー
ブル290よりこれに対応する物理プロセッサ識別子290-2
を得る(270-2)。そして、これを以後プロセッサ識別
子として使用する(270-3,270-4)。
また、動作プロセッサ設定処理(第4図)の中でこの
対応テーブル290を用いた場合の別の詳細フローを第18
図に示す。対応テーブル290が作成されている場合には
(280-1)、指定されているプロセッサ識別子を論理プ
ロセッサ識別子と見なして、対応テーブル290よりこれ
に対応する物理プロセッサ識別子290-2(PROCID)を得
る(280-2)。そしてこれをプロセス管理テーブル内の
プロセッサ識別子321に設定する。この場合、スケジュ
ーラ側では、対応テーブル290を参照する必要ないの
で、第2図のフローをそのまま使用する。
対応テーブル290を用いた場合の別の詳細フローを第18
図に示す。対応テーブル290が作成されている場合には
(280-1)、指定されているプロセッサ識別子を論理プ
ロセッサ識別子と見なして、対応テーブル290よりこれ
に対応する物理プロセッサ識別子290-2(PROCID)を得
る(280-2)。そしてこれをプロセス管理テーブル内の
プロセッサ識別子321に設定する。この場合、スケジュ
ーラ側では、対応テーブル290を参照する必要ないの
で、第2図のフローをそのまま使用する。
このように、プロセッサ識別子を、ソフトウエアから
見た論理プロセッサ識別子とハードウエアに依存した物
理プロセッサ識別子とに分けて、これらを対応づける対
応テーブル290を設けることにより、ハードウエア構成
に拘束されることなく、ソフトウエアを作成することが
できる。したがって、プロセッサ台数が増加しても物理
プロセッサ識別子を増すとともに対応テーブルを更新す
るだけでよく、既存のソフトウエアを変更する必要はな
い。
見た論理プロセッサ識別子とハードウエアに依存した物
理プロセッサ識別子とに分けて、これらを対応づける対
応テーブル290を設けることにより、ハードウエア構成
に拘束されることなく、ソフトウエアを作成することが
できる。したがって、プロセッサ台数が増加しても物理
プロセッサ識別子を増すとともに対応テーブルを更新す
るだけでよく、既存のソフトウエアを変更する必要はな
い。
本発明のプロセススケジューリング方式によれば、マ
ルチプロセッサシステムにおいて特定のプロセスを実行
しうるプロセッサを限定することにより、不均質なマル
チプロセッサシステムにおいてのみならず均質なマルチ
プロセッサシステムにおいても、特定のプロセスを例外
発生によらず予め定めたプロセッサ上で実行させること
ができる。また、既存の単一プロセッサシステム用のソ
フトウェアを何ら変更することなくそのまま利用するこ
とが可能になる。さらに、プロセスマイグレーションを
防止しつつ、複数のプロセッサを効率的に使用すること
ができる。
ルチプロセッサシステムにおいて特定のプロセスを実行
しうるプロセッサを限定することにより、不均質なマル
チプロセッサシステムにおいてのみならず均質なマルチ
プロセッサシステムにおいても、特定のプロセスを例外
発生によらず予め定めたプロセッサ上で実行させること
ができる。また、既存の単一プロセッサシステム用のソ
フトウェアを何ら変更することなくそのまま利用するこ
とが可能になる。さらに、プロセスマイグレーションを
防止しつつ、複数のプロセッサを効率的に使用すること
ができる。
第1図(a),(b)は本発明によるマルチプロセッサ
システムの一実施例のシステム構成図、第2図は本発明
によるプロセススケジューラの一実施例の処理フロー
図、第3図は本発明によるプロセスの生成処理のフロー
図、第4図は第3図の一部の動作プロセッサ設定処理の
フロー図、第5図は本発明によるプロセスの実行処理の
フロー図、第6図は本発明によるプロセスの終了処理の
フロー図、第7図は第1図の実施例の一応用例のシステ
ム構成図、第8図は第1図の実施例の別の応用例のシス
テム構成図、第9図および第10図は本発明の適用される
具体的システム例の説明図、第11図は本発明の第2の実
施例のシステム構成図、第12図(a),(b)は第2の
実施例におけるプロセススケジューラの処理フロー図、
第13図は本発明の第3の実施例のシステム構成図、第14
図は第3の実施例のプロセススケジューラの処理フロー
図、第15図は本発明の第4の実施例におけるプロセス管
理テーブルの構成図、第16図は第4の実施例におけるプ
ロセススケジューラの処理フロー図、第17図〜第19図は
本発明の第5の実施例の説明図である。 1,2,3……プロセス、4……接続バス、5……共用メモ
リ、11……プロセッサ番号、31……OSプログラム、32…
…プロセッサ管理テーブル、311……プロセススケジュ
ーラ、321……プロセッサ識別子、322……制御モード。
システムの一実施例のシステム構成図、第2図は本発明
によるプロセススケジューラの一実施例の処理フロー
図、第3図は本発明によるプロセスの生成処理のフロー
図、第4図は第3図の一部の動作プロセッサ設定処理の
フロー図、第5図は本発明によるプロセスの実行処理の
フロー図、第6図は本発明によるプロセスの終了処理の
フロー図、第7図は第1図の実施例の一応用例のシステ
ム構成図、第8図は第1図の実施例の別の応用例のシス
テム構成図、第9図および第10図は本発明の適用される
具体的システム例の説明図、第11図は本発明の第2の実
施例のシステム構成図、第12図(a),(b)は第2の
実施例におけるプロセススケジューラの処理フロー図、
第13図は本発明の第3の実施例のシステム構成図、第14
図は第3の実施例のプロセススケジューラの処理フロー
図、第15図は本発明の第4の実施例におけるプロセス管
理テーブルの構成図、第16図は第4の実施例におけるプ
ロセススケジューラの処理フロー図、第17図〜第19図は
本発明の第5の実施例の説明図である。 1,2,3……プロセス、4……接続バス、5……共用メモ
リ、11……プロセッサ番号、31……OSプログラム、32…
…プロセッサ管理テーブル、311……プロセススケジュ
ーラ、321……プロセッサ識別子、322……制御モード。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 山口 伸一朗 茨城県日立市久慈町4026番地 株式会社 日立製作所日立研究所内 (72)発明者 笠嶋 広和 茨城県日立市大みか町5丁目2番1号 株式会社日立製作所大みか工場内 (72)発明者 金子 茂則 茨城県日立市大みか町5丁目2番1号 株式会社日立製作所大みか工場内 (56)参考文献 特開 昭62−115567(JP,A) 特公 昭60−3229(JP,B2)
Claims (5)
- 【請求項1】複数のプロセッサを備え、単一のオペレー
ティングシステムによって前記複数のプロセッサを制御
するマルチプロセッサシステムにおいて、前記オペレー
ティングシステムのプロセススケジューラによって、プ
ロセスを管理するプロセス管理テーブルを用いて、特定
の優先度を持って、実行待ち状態にあるプロセスに、前
記複数のプロセッサのうちのいずれかのプロセッサを割
り当てるプロセススケジューリング方法であって、 前記プロセス管理テーブルに、各プロセス毎に、当該プ
ロセスを実行させる第1候補のプロセッサと、第1候補
のプロセッサと当該プロセスとの間に与えた、継続的に
当該プロセスを当該第1候補のプロセッサのみに割り当
てるようにすべき程度を表す所定のしきい値と、当該プ
ロセスが実行待ち状態にあった度合いを表す実行待ち状
態情報とを記述し、 空き状態となったプロセッサに、プロセスを割り当てる
際に、前記空き状態となったプロセッサにプロセスが割
り当てられるまで、実行待ち状態にあるプロセスを優先
度の順に割当候補プロセスとし、 順次、割当候補プロセスについて前記プロセス管理テー
ブルに記述された第1候補のプロセッサが、前記空き状
態となったプロセッサであるか否かを判定し、 前記第1候補のプロセッサが、前記空き状態となったプ
ロセッサである場合に、前記割当候補プロセスを前記空
き状態となったプロセッサに割当て、 第1候補のプロセッサが、前記空き状態となったプロセ
ッサでない場合に、前記プロセス管理テーブルを参照
し、割当候補プロセスについての前記実行待ち情報の表
す度合いが、当該プロセスと前記第1候補のプロセッサ
との間の前記しきい値を超えているかを判定し、 前記実行待ち情報の表す度合いが、当該しきい値を超え
ている場合に、割当候補プロセスを前記空き状態となっ
たプロセッサに割当てると共に、前記空き状態となった
プロセッサを割当候補プロセスについての新たな第1候
補のプロセッサとして、前記プロセス管理テーブルに記
述すると共に、前記プロセス管理テーブルに記述された
割当候補プロセスについての前記実行待ち情報の表す度
合いをクリアし、前記実行待ち情報の表す度合いが、当
該しきい値を超えていない場合に、割当候補プロセスの
前記空き状態となったプロセッサへの割当てを拒絶し、
当該割当候補プロセスの次に優先度の高い実行待ち状態
にあるプロセスを新たな割当候補プロセスとすることを
特徴とするプロセススケジューリング方法。 - 【請求項2】請求項1記載のプロセススケジューリング
方法であって、 前記実行待ち情報は、対応するプロセスがプロセッサへ
の割当を拒絶された拒絶回数を表す情報であって、 割当候補プロセスについて前記プロセス管理テーブルに
記述された第1候補のプロセッサが、前記空き状態とな
ったプロセッサでない場合であって、割当候補プロセス
について前記プロセス管理テーブルに記述された前記実
行待ち情報が表す前記拒絶回数が、割当候補プロセスに
ついて前記プロセス管理テーブルに記述された前記第1
候補のプロセッサとの間の前記しきい値を超えていない
場合に、割当候補プロセスについて前記プロセス管理テ
ーブルに記述された前記実行待ち情報が表す拒絶回数を
1増加させることを特徴とするプロセススケジューリン
グ方法。 - 【請求項3】請求項1記載のプロセススケジューリング
方法であって、 前記実行待ち情報は、対応するプロセスが実行待ち状態
にあった時間を表す情報であることを特徴とするプロセ
ススケジューリング方法。 - 【請求項4】複数のプロセッサを備え、単一のオペレー
ティングシステムによって前記複数のプロセッサを制御
するマルチプロセッサシステムにおいて、前記オペレー
ティングシステムのプロセススケジューラによって、特
定の優先度を持って実行待ち状態にあるプロセスに、前
記複数のプロセッサのうちのいずれかのプロセッサを割
り当てるプロセススケジューリング方法であって、 各プロセッサ毎に、当該プロセッサが担当する優先度の
範囲を予め定義し、 空き状態となったプロセッサに、プロセスを割り当てる
際に、前記空き状態となったプロセッサに定義されてい
る優先度の範囲に含まれる優先度を持って実行待ち状態
にあるプロセスのうち、最も高い優先度のプロセスを前
記空き状態となったプロセッサに割り当てることを特徴
とするプロセススケジューリング方法。 - 【請求項5】複数のプロセッサを備え、単一のオペレー
ティングシステムによって前記複数のプロセッサを制御
するマルチプロセッサシステムにおいて、前記オペレー
ティングシステムのプロセススケジューラによって、プ
ロセスを管理するプロセス管理テーブルを用いて、実行
待ち状態にあるプロセスに、前記複数のプロセッサのう
ちのいずれかのプロセッサを割り当てるプロセススケジ
ューリング方法であって、 前記プロセス管理テーブルに、各プロセスについて、当
該プロセスがプロセッサに割り当てられるべき優先度を
各プロセッサ毎に記述し、 空き状態となったプロセッサに、プロセスを割り当てる
際に、前記プロセス管理テーブルを参照し、前記空き状
態となったプロセッサに割り当てられるべき優先度とし
て最も高い優先度が記述されているプロセスを、当該空
き状態となったプロセッサに割り当てることを特徴とす
るプロセススケジューリング方法。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1060092A JP3019317B2 (ja) | 1989-03-13 | 1989-03-13 | プロセススケジューリング方法 |
| DE4007998A DE4007998A1 (de) | 1989-03-13 | 1990-03-13 | Prozess-planungsverfahren und mehrfach-rechner |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1060092A JP3019317B2 (ja) | 1989-03-13 | 1989-03-13 | プロセススケジューリング方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH02238556A JPH02238556A (ja) | 1990-09-20 |
| JP3019317B2 true JP3019317B2 (ja) | 2000-03-13 |
Family
ID=13132102
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP1060092A Expired - Fee Related JP3019317B2 (ja) | 1989-03-13 | 1989-03-13 | プロセススケジューリング方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3019317B2 (ja) |
Families Citing this family (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4492530B2 (ja) * | 2005-02-18 | 2010-06-30 | 株式会社日立製作所 | 計算機制御方法および管理計算機並びにその処理プログラム |
| JP4969791B2 (ja) * | 2005-03-30 | 2012-07-04 | 株式会社日立製作所 | ディスクアレイ装置およびその制御方法 |
| US20070198981A1 (en) * | 2006-02-17 | 2007-08-23 | Jacobs Paul E | System and method for multi-processor application support |
| JP2008242948A (ja) * | 2007-03-28 | 2008-10-09 | Toshiba Corp | 情報処理装置および同装置の動作制御方法 |
| CN103080903B (zh) * | 2010-08-27 | 2016-07-06 | 富士通株式会社 | 调度器、多核处理器系统以及调度方法 |
| JP7151530B2 (ja) * | 2019-02-13 | 2022-10-12 | 日本電信電話株式会社 | サーバ基盤および物理cpu割当プログラム |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS58115570A (ja) * | 1981-12-29 | 1983-07-09 | Fuji Electric Co Ltd | プロセツサ割付け方式 |
| US4809157A (en) * | 1985-09-30 | 1989-02-28 | International Business Machines Corp. | Dynamic assignment of affinity for vector tasks |
| JPS62123552A (ja) * | 1985-11-22 | 1987-06-04 | Nec Corp | 中央処理装置割当て方式 |
| JPS62160563A (ja) * | 1986-01-09 | 1987-07-16 | Toshiba Corp | 情報処理システム |
-
1989
- 1989-03-13 JP JP1060092A patent/JP3019317B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JPH02238556A (ja) | 1990-09-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| RU2530345C2 (ru) | Экземпляры планировщика в процессе | |
| US5606685A (en) | Computer workstation having demand-paged virtual memory and enhanced prefaulting | |
| KR100463235B1 (ko) | 자원관리를위한컴퓨터구현방법,컴퓨터판독가능매체및컴퓨터시스템 | |
| US5333319A (en) | Virtual storage data processor with enhanced dispatching priority allocation of CPU resources | |
| US7467385B2 (en) | Interrupt and exception handling for multi-streaming digital processors | |
| US5553291A (en) | Virtual machine control method and virtual machine system | |
| JPH0673108B2 (ja) | ゲストに割り当てられたシステム資源に対するゲストの動作を制限する方法 | |
| US8316365B2 (en) | Computer system | |
| JP2769367B2 (ja) | マルチプロセッサスケジューリング方法 | |
| JPH04232560A (ja) | 情報処理システムにおけるプロセス及び情報処理ネットワーク | |
| JPH03144847A (ja) | マルチプロセッサ・システムおよびそのプロセス同期方法 | |
| JPH04299440A (ja) | 共有レジスタ制御方式 | |
| US8291426B2 (en) | Memory allocators corresponding to processor resources | |
| KR20110019729A (ko) | 스케줄러 내의 스케줄링 컬렉션 | |
| JPH01228027A (ja) | アドレス空間管理方法 | |
| WO2012029149A1 (ja) | 情報処理プログラム、情報処理装置及び情報処理方法 | |
| JP2004234123A (ja) | マルチスレッドコンピュータ | |
| US8954969B2 (en) | File system object node management | |
| WO2005048009A2 (en) | Method and system for multithreaded processing using errands | |
| JP2006092042A (ja) | 情報処理装置及びコンテキスト切り替え方法 | |
| EP0547991A2 (en) | Adaptive method for starting tasks in a multi-tasking operating system | |
| JP3019317B2 (ja) | プロセススケジューリング方法 | |
| JPH06243112A (ja) | マルチプロセッサ装置 | |
| WO2000070482A1 (en) | Interrupt and exception handling for multi-streaming digital processors | |
| US8010963B2 (en) | Method, apparatus and program storage device for providing light weight system calls to improve user mode performance |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080107 Year of fee payment: 8 |
|
| LAPS | Cancellation because of no payment of annual fees |