JPH10143378A - コンピュータ装置、およびコンピュータ装置における緊急プロセスのプリエンプション方法 - Google Patents
コンピュータ装置、およびコンピュータ装置における緊急プロセスのプリエンプション方法Info
- Publication number
- JPH10143378A JPH10143378A JP8304994A JP30499496A JPH10143378A JP H10143378 A JPH10143378 A JP H10143378A JP 8304994 A JP8304994 A JP 8304994A JP 30499496 A JP30499496 A JP 30499496A JP H10143378 A JPH10143378 A JP H10143378A
- Authority
- JP
- Japan
- Prior art keywords
- preemption
- periodic
- emergency
- wake
- request information
- 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.)
- Pending
Links
Abstract
(57)【要約】
【課題】 プリエンプション処理を要求してきた緊急性
の高い緊急プロセスがある場合には、当該緊急プロセス
を即座に実行する。 【解決手段】 リアルタイム制御部5内に、プリエンプ
ション処理の要求により実行される緊急プロセス55d
を設けると共に、緊急プロセス55dのプリエンプショ
ン処理を管理するプリエンプション管理テーブル56を
設ける。第2のスケジューリング手段552は、周期割
込みがある度に呼び出され、プリエンプション管理テー
ブル56を参照して、緊急プロセス55dにプリエンプ
ション要求フラグがセットされ、周期起床プロセスが実
行中でなければ、即座に当該緊急プロセス55dを実行
する一方、周期起床プロセスが実行中である場合には、
レディキュー54の先頭に当該緊急プロセス55dを保
持させる。
の高い緊急プロセスがある場合には、当該緊急プロセス
を即座に実行する。 【解決手段】 リアルタイム制御部5内に、プリエンプ
ション処理の要求により実行される緊急プロセス55d
を設けると共に、緊急プロセス55dのプリエンプショ
ン処理を管理するプリエンプション管理テーブル56を
設ける。第2のスケジューリング手段552は、周期割
込みがある度に呼び出され、プリエンプション管理テー
ブル56を参照して、緊急プロセス55dにプリエンプ
ション要求フラグがセットされ、周期起床プロセスが実
行中でなければ、即座に当該緊急プロセス55dを実行
する一方、周期起床プロセスが実行中である場合には、
レディキュー54の先頭に当該緊急プロセス55dを保
持させる。
Description
【0001】
【発明の属する技術分野】本発明は、汎用パーソナルコ
ンピュータ等のコンピュータ装置のオペレーティングシ
ステム(以下、PC−OS)のドライバレベルで、プリ
エンプション処理を要求してきた緊急プロセスを即座に
実行することのできるコンピュータ装置、およびコンピ
ュータ装置における緊急プロセスのプリエンプション方
法に関する。
ンピュータ等のコンピュータ装置のオペレーティングシ
ステム(以下、PC−OS)のドライバレベルで、プリ
エンプション処理を要求してきた緊急プロセスを即座に
実行することのできるコンピュータ装置、およびコンピ
ュータ装置における緊急プロセスのプリエンプション方
法に関する。
【0002】
【従来の技術】本出願人は、先に、ドライバに組み込ま
れたリアルタイム制御部において動作する周期起床プロ
セスをスケジューリングするパーソナルコンピュータ
(PC)装置の発明について出願(特願平8−1778
98号)している。なお、この従来の発明は、本願発明
の出願時では未公開なものである。
れたリアルタイム制御部において動作する周期起床プロ
セスをスケジューリングするパーソナルコンピュータ
(PC)装置の発明について出願(特願平8−1778
98号)している。なお、この従来の発明は、本願発明
の出願時では未公開なものである。
【0003】図18に、上述の本出願人が先に出願した
パーソナルコンピュータ装置の構成を示す。図におい
て、1はCPUリソース、2はパーソナルコンピュータ
装置用の汎用のオペレーティングシステム(PC−O
S)、3a〜3cはオペレーティングシステム2上で実
行されるPCプロセス、4はオペレーティングシステム
2上でPCプロセス3a〜3cを実行するためCPUリ
ソース1の割り付け等のスケジューリングを行なう第1
のスケジューリング手段である。また、5はオペレーテ
ィングシステム2のドライバとして起動されるリアルタ
イム制御部、6はリアルタイム制御部を容易にインスト
ールするためのオペレーティングシステム2のドライバ
組み込み部である。51は周期起床プロセスの起床動作
を規定する周期起床プロセス管理テーブル、52は周期
起床プロセス管理テーブル51を参照して周期起床プロ
セス55a〜55cにCPUリソース1を割り当て等の
スケジューリング処理を行なう第2のスケジューリング
手段、53は第2のスケジュール手段52がCPUリソ
ース1をオペレーティングシステム2から占有している
時間を計測・保持して、その計測結果に基づいてCPU
リソース1を強制的にオペレーティングシステム2へ戻
す使用権監視手段、54はレディキュー、55a〜55
cはドライバOS上で周期起床して実行される周期起床
プロセスである。
パーソナルコンピュータ装置の構成を示す。図におい
て、1はCPUリソース、2はパーソナルコンピュータ
装置用の汎用のオペレーティングシステム(PC−O
S)、3a〜3cはオペレーティングシステム2上で実
行されるPCプロセス、4はオペレーティングシステム
2上でPCプロセス3a〜3cを実行するためCPUリ
ソース1の割り付け等のスケジューリングを行なう第1
のスケジューリング手段である。また、5はオペレーテ
ィングシステム2のドライバとして起動されるリアルタ
イム制御部、6はリアルタイム制御部を容易にインスト
ールするためのオペレーティングシステム2のドライバ
組み込み部である。51は周期起床プロセスの起床動作
を規定する周期起床プロセス管理テーブル、52は周期
起床プロセス管理テーブル51を参照して周期起床プロ
セス55a〜55cにCPUリソース1を割り当て等の
スケジューリング処理を行なう第2のスケジューリング
手段、53は第2のスケジュール手段52がCPUリソ
ース1をオペレーティングシステム2から占有している
時間を計測・保持して、その計測結果に基づいてCPU
リソース1を強制的にオペレーティングシステム2へ戻
す使用権監視手段、54はレディキュー、55a〜55
cはドライバOS上で周期起床して実行される周期起床
プロセスである。
【0004】図19に、図18に示す従来の第2のスケ
ジューリング手段52の動作を示す。図において、第2
のスケジューリング手段52は、周期割込みデバイス等
から周期割込みがあり、ドライバOSの割り込みサービ
スルーチンが発生すると呼び出され、まず、ステップ1
001の処理により周期起床プロセスの実行中を示す周
期起床プロセス実行中フラグがセットされているか否か
をチェックする。
ジューリング手段52の動作を示す。図において、第2
のスケジューリング手段52は、周期割込みデバイス等
から周期割込みがあり、ドライバOSの割り込みサービ
スルーチンが発生すると呼び出され、まず、ステップ1
001の処理により周期起床プロセスの実行中を示す周
期起床プロセス実行中フラグがセットされているか否か
をチェックする。
【0005】ここで、周期起床プロセス実行中フラグが
ONの場合には(ステップ1001“YES”)、現在
周期起床プロセスの実行中であるため、今回の周期割込
みにより起床周期のきた実行可能な周期起床プロセスが
あるか否かを周期起床プロセス管理テーブル51を参照
して判断し(ステップ1011)、所定の起床周期のき
た実行可能な周期起床プロセスがある場合のみ(ステッ
プ1011“YES”)、起床周期がきた実行可能な周
期起床プロセスを実行待ちさせるため、当該実行可能な
周期起床プロセスをレディキュー54の最後に装入する
(ステップ1012)。
ONの場合には(ステップ1001“YES”)、現在
周期起床プロセスの実行中であるため、今回の周期割込
みにより起床周期のきた実行可能な周期起床プロセスが
あるか否かを周期起床プロセス管理テーブル51を参照
して判断し(ステップ1011)、所定の起床周期のき
た実行可能な周期起床プロセスがある場合のみ(ステッ
プ1011“YES”)、起床周期がきた実行可能な周
期起床プロセスを実行待ちさせるため、当該実行可能な
周期起床プロセスをレディキュー54の最後に装入する
(ステップ1012)。
【0006】一方、ステップ1001でもし周期起床プ
ロセス実行中フラグがOFFと判断された場合には(ス
テップ1001“NO”)、次のステップ1002によ
りその周期起床プロセス実行中フラグをONにしてステ
ップ1003に進み、起床周期が来た実行可能な周期起
床プロセスの有無を周期起床プロセス管理テーブル51
を参照してチェックする。そして、ステップ1003の
処理により、もし実行可能状態の周期起床プロセスが存
在すると判断された場合には(ステップ1003“YE
S”)、ステップ1004に進み、ステップ1003で
得られた周期起床プロセスの状態情報を復帰して、次の
ステップ1005〜1007までの処理により当該周期
起床プロセスを実行することになる。
ロセス実行中フラグがOFFと判断された場合には(ス
テップ1001“NO”)、次のステップ1002によ
りその周期起床プロセス実行中フラグをONにしてステ
ップ1003に進み、起床周期が来た実行可能な周期起
床プロセスの有無を周期起床プロセス管理テーブル51
を参照してチェックする。そして、ステップ1003の
処理により、もし実行可能状態の周期起床プロセスが存
在すると判断された場合には(ステップ1003“YE
S”)、ステップ1004に進み、ステップ1003で
得られた周期起床プロセスの状態情報を復帰して、次の
ステップ1005〜1007までの処理により当該周期
起床プロセスを実行することになる。
【0007】つまり、この周期起床プロセスの実行は、
まずステップ1005の処理により自分自身の初期化処
理を行ない、次のステップ1006の処理により周期起
床プロセス特有の処理を行なった後、ステップ1007
でWAITをコールする。ステップ1007にてWAI
Tをコールすることによって、呼び出して実行していた
周期起床プロセスを実行可能状態から外し(ステップ1
008)、当該周期起床プロセスの状態情報を保持して
(ステップ1009)、ステップ1003の処理へ戻る
ようにする。
まずステップ1005の処理により自分自身の初期化処
理を行ない、次のステップ1006の処理により周期起
床プロセス特有の処理を行なった後、ステップ1007
でWAITをコールする。ステップ1007にてWAI
Tをコールすることによって、呼び出して実行していた
周期起床プロセスを実行可能状態から外し(ステップ1
008)、当該周期起床プロセスの状態情報を保持して
(ステップ1009)、ステップ1003の処理へ戻る
ようにする。
【0008】なお、ステップ1004での周期起床プロ
セスの状態情報の復帰は、ステップ1009で保持され
た状態情報の復帰であり、周期起床プロセスはステップ
1006の処理により復帰した状態情報により実行が再
開されることになる。以上のステップ1003、ステッ
プ1004からステップ1009が繰り返され、全ての
実行可能状態の周期起床プロセスがWAITのコールに
よって実行可能状態から外されると、ステップ1003
に戻った際に実行可能状態のプロセス無しと判定され、
ステップ1010の処理により周期起床プロセス実行中
フラグがOFFにされて、オペレーティングシステム2
上のPCプロセス3a〜3cの処理に戻るようにしてい
る。
セスの状態情報の復帰は、ステップ1009で保持され
た状態情報の復帰であり、周期起床プロセスはステップ
1006の処理により復帰した状態情報により実行が再
開されることになる。以上のステップ1003、ステッ
プ1004からステップ1009が繰り返され、全ての
実行可能状態の周期起床プロセスがWAITのコールに
よって実行可能状態から外されると、ステップ1003
に戻った際に実行可能状態のプロセス無しと判定され、
ステップ1010の処理により周期起床プロセス実行中
フラグがOFFにされて、オペレーティングシステム2
上のPCプロセス3a〜3cの処理に戻るようにしてい
る。
【0009】
【発明が解決しようとする課題】ところで、以上説明し
たコンピュータ装置では、通常、周期起床プロセス55
a〜55cによって制御機械または制御システム等の動
作制御を行なうため、制御機械の緊急時等に発生する割
込みによってプリエンプション処理、すなわちCPUリ
ソース1の使用権を即座に奪って実行する緊急プロセス
を用意する必要がある。
たコンピュータ装置では、通常、周期起床プロセス55
a〜55cによって制御機械または制御システム等の動
作制御を行なうため、制御機械の緊急時等に発生する割
込みによってプリエンプション処理、すなわちCPUリ
ソース1の使用権を即座に奪って実行する緊急プロセス
を用意する必要がある。
【0010】しかし、緊急プロセスをオペレーティング
システム2上に設けて第1のスケジューリング手段4が
スケジューリングするようにしたのでは、当該緊急プロ
セスは制御機械の制御とは関係のない通常のPCプロセ
ス3a〜3cと同様にオペレーティングシステム2上で
実行されることになるので、緊急プロセスの応答が非常
に遅れ、緊急処理できない、という問題が生じる。
システム2上に設けて第1のスケジューリング手段4が
スケジューリングするようにしたのでは、当該緊急プロ
セスは制御機械の制御とは関係のない通常のPCプロセ
ス3a〜3cと同様にオペレーティングシステム2上で
実行されることになるので、緊急プロセスの応答が非常
に遅れ、緊急処理できない、という問題が生じる。
【0011】また、緊急プロセスをリアルタイム制御部
5上に設けて第2のスケジューリング手段52がスケジ
ューリングすることも考えられるが、複数の周期起床プ
ロセスが実行待ち状態として既にレディキューにスプー
ルされている状態において、プリエンプション処理の要
求された緊急プロセスを周期起床プロセスと同様にレデ
ィキューの最後尾に入れたのでは、緊急性が高い緊急プ
ロセスを迅速に処理できない、という問題が生じる。
5上に設けて第2のスケジューリング手段52がスケジ
ューリングすることも考えられるが、複数の周期起床プ
ロセスが実行待ち状態として既にレディキューにスプー
ルされている状態において、プリエンプション処理の要
求された緊急プロセスを周期起床プロセスと同様にレデ
ィキューの最後尾に入れたのでは、緊急性が高い緊急プ
ロセスを迅速に処理できない、という問題が生じる。
【0012】なお、レディキューへ実行待ちのプロセス
をスプールさせる際、優先度に基づいてプロセスを並べ
かえる方法が特開平2−138632号公報や、特開平
4−86923号公報、特開平8−50551号公報等
に提案されているが、これらの技術はコンピュータ装置
におけるリアルタイム制御部上のプロセスの処理を対象
としていないので、本願発明とは発明の前提が異なるも
のである。
をスプールさせる際、優先度に基づいてプロセスを並べ
かえる方法が特開平2−138632号公報や、特開平
4−86923号公報、特開平8−50551号公報等
に提案されているが、これらの技術はコンピュータ装置
におけるリアルタイム制御部上のプロセスの処理を対象
としていないので、本願発明とは発明の前提が異なるも
のである。
【0013】そこで、本発明はこのような問題点を解消
するためになされたもので、プリエンプション処理を要
求してきた緊急性の高い緊急プロセスがある場合には、
当該緊急プロセスを即座に実行することのできるコンピ
ュータ装置、およびコンピュータ装置における緊急プロ
セスのプリエンプション方法を提供することを目的とす
る。
するためになされたもので、プリエンプション処理を要
求してきた緊急性の高い緊急プロセスがある場合には、
当該緊急プロセスを即座に実行することのできるコンピ
ュータ装置、およびコンピュータ装置における緊急プロ
セスのプリエンプション方法を提供することを目的とす
る。
【0014】
【課題を解決するための手段】上記課題を解決するた
め、本発明では、オペレーティングシステム上で実行さ
れる通常プロセスと、その通常プロセスを実行するため
にCPUリソースの使用をスケジューリングする第1の
スケジューリング手段と、ドライバ中に組み込まれて所
定の起床周期で起床して実行される周期起床プロセス
と、周期割込みに基づいて所定の起床周期がきた上記周
期起床プロセスを実行するためCPUリソースの使用を
スケジューリングする第2のスケジューリング手段と、
を有するコンピュータ装置であって、プリエンプション
処理を要求する緊急プロセスを上記ドライバ中に組み込
むと共に、上記緊急プロセスがプリエンプション処理を
要求しているか否かを示すプリエンプション要求情報の
設定されたプリエンプション管理テーブルを具備し、上
記第2のスケジューリング手段は、上記周期割込みがあ
る度に上記プリエンプション管理テーブルを参照して上
記緊急プロセスにプリエンプション要求情報が設定され
ているか否かを判断すると共に、現在上記周期起床プロ
セスが実行中であるか否かを判断し、上記緊急プロセス
にプリエンプション要求情報が設定され、且つ、現在周
期起床プロセスの実行中でない場合には、当該プリエン
プション要求情報の設定された緊急プロセスを実行する
ものである。
め、本発明では、オペレーティングシステム上で実行さ
れる通常プロセスと、その通常プロセスを実行するため
にCPUリソースの使用をスケジューリングする第1の
スケジューリング手段と、ドライバ中に組み込まれて所
定の起床周期で起床して実行される周期起床プロセス
と、周期割込みに基づいて所定の起床周期がきた上記周
期起床プロセスを実行するためCPUリソースの使用を
スケジューリングする第2のスケジューリング手段と、
を有するコンピュータ装置であって、プリエンプション
処理を要求する緊急プロセスを上記ドライバ中に組み込
むと共に、上記緊急プロセスがプリエンプション処理を
要求しているか否かを示すプリエンプション要求情報の
設定されたプリエンプション管理テーブルを具備し、上
記第2のスケジューリング手段は、上記周期割込みがあ
る度に上記プリエンプション管理テーブルを参照して上
記緊急プロセスにプリエンプション要求情報が設定され
ているか否かを判断すると共に、現在上記周期起床プロ
セスが実行中であるか否かを判断し、上記緊急プロセス
にプリエンプション要求情報が設定され、且つ、現在周
期起床プロセスの実行中でない場合には、当該プリエン
プション要求情報の設定された緊急プロセスを実行する
ものである。
【0015】また、次の発明では、緊急プロセスへのプ
リエンプション要求情報の設定は、周期割込みとは別の
特定デバイスからのプリエンプション要求割込みによっ
て行われるものである。
リエンプション要求情報の設定は、周期割込みとは別の
特定デバイスからのプリエンプション要求割込みによっ
て行われるものである。
【0016】また、次の発明では、緊急プロセスへのプ
リエンプション要求情報の設定は、その緊急プロセスが
周期起床プロセスであり、その起床周期が到達して実行
可能となる際に、現在実行中の周期起床プロセスより実
行の優先度が高い場合に行われるものである。
リエンプション要求情報の設定は、その緊急プロセスが
周期起床プロセスであり、その起床周期が到達して実行
可能となる際に、現在実行中の周期起床プロセスより実
行の優先度が高い場合に行われるものである。
【0017】また、次の発明では、第2のスケジューリ
ング手段は、さらに、他の周期起床プロセスの実行によ
り実行待ち状態となる周期起床プロセスをレディキュー
に保持させて現在実行中の周期起床プロセスの終了後上
記レディキュー先頭の周期起床プロセスから順に実行す
るようにスケジューリングすると共に、周期割込みがあ
る度に上記プリエンプション管理テーブルを参照して上
記緊急プロセスにプリエンプション要求情報が設定され
ているか否かを判断すると共に、現在上記周期起床プロ
セスが実行中であるか否かを判断し、上記緊急プロセス
にプリエンプション要求情報が設定され、且つ、現在周
期起床プロセスの実行中である場合には、当該プリエン
プション要求情報の設定された上記緊急プロセスを上記
レディキューの先頭に保持させるものである。
ング手段は、さらに、他の周期起床プロセスの実行によ
り実行待ち状態となる周期起床プロセスをレディキュー
に保持させて現在実行中の周期起床プロセスの終了後上
記レディキュー先頭の周期起床プロセスから順に実行す
るようにスケジューリングすると共に、周期割込みがあ
る度に上記プリエンプション管理テーブルを参照して上
記緊急プロセスにプリエンプション要求情報が設定され
ているか否かを判断すると共に、現在上記周期起床プロ
セスが実行中であるか否かを判断し、上記緊急プロセス
にプリエンプション要求情報が設定され、且つ、現在周
期起床プロセスの実行中である場合には、当該プリエン
プション要求情報の設定された上記緊急プロセスを上記
レディキューの先頭に保持させるものである。
【0018】また、次の発明では、各周期起床プロセス
にはプリエンプション関数が設定され、CPUリソース
は、周期起床プロセスの実行の際、上記プリエンプショ
ン関数を実行した場合には、プリエンプション管理テー
ブルを参照して緊急プロセスにプリエンプション要求情
報が設定されているか否かを判断し、緊急プロセスにプ
リエンプション要求情報が設定されている場合には、現
在実行中の周期起床プロセスの実行を中断するものであ
る。
にはプリエンプション関数が設定され、CPUリソース
は、周期起床プロセスの実行の際、上記プリエンプショ
ン関数を実行した場合には、プリエンプション管理テー
ブルを参照して緊急プロセスにプリエンプション要求情
報が設定されているか否かを判断し、緊急プロセスにプ
リエンプション要求情報が設定されている場合には、現
在実行中の周期起床プロセスの実行を中断するものであ
る。
【0019】また、次の発明では、第2のスケジューリ
ング手段は、周期割込みがある度にプリエンプション管
理テーブルを参照して緊急プロセスにプリエンプション
要求情報が設定されているか否かを判断すると共に、現
在上記周期起床プロセスが実行中であるか否かを判断
し、上記緊急プロセスにプリエンプション要求情報が設
定され、且つ、現在周期起床プロセスの実行中である場
合には、当該実行中の周期起床プロセスの実行を中断さ
せ、上記プリエンプション要求情報の設定された上記緊
急プロセスを実行して、上記プリエンプション要求情報
を取り消し、その後実行を中断した上記周期起床プロセ
スの実行を続行するものである。
ング手段は、周期割込みがある度にプリエンプション管
理テーブルを参照して緊急プロセスにプリエンプション
要求情報が設定されているか否かを判断すると共に、現
在上記周期起床プロセスが実行中であるか否かを判断
し、上記緊急プロセスにプリエンプション要求情報が設
定され、且つ、現在周期起床プロセスの実行中である場
合には、当該実行中の周期起床プロセスの実行を中断さ
せ、上記プリエンプション要求情報の設定された上記緊
急プロセスを実行して、上記プリエンプション要求情報
を取り消し、その後実行を中断した上記周期起床プロセ
スの実行を続行するものである。
【0020】また、次の発明では、さらに、スタックを
具備し、第2のスケジューリング手段は、周期割込みが
ある度にプリエンプション管理テーブルを参照して緊急
プロセスにプリエンプション要求情報が設定されている
か否かを判断すると共に、現在上記周期起床プロセスが
実行中であるか否かを判断し、上記緊急プロセスにプリ
エンプション要求情報が設定され、且つ、現在周期起床
プロセスの実行中である場合には、割込みにより実行を
中断された周期起床プロセスへのリターンアドレスを上
記スタックへ退避させ、リターンアドレスとして上記プ
リエンプション要求情報が設定された緊急プロセスのア
ドレスを設定すると共に、上記プリエンプション要求情
報が設定された緊急プロセスの最後に上記スタックに格
納されたリターンアドレスを獲得してリターンする命令
を記述し、当該プリエンプション要求情報が設定された
緊急プロセスを実行した後、上記スタックに退避させた
リターンアドレスに基づいて上記実行を中断された周期
起床プロセスを実行させるものである。
具備し、第2のスケジューリング手段は、周期割込みが
ある度にプリエンプション管理テーブルを参照して緊急
プロセスにプリエンプション要求情報が設定されている
か否かを判断すると共に、現在上記周期起床プロセスが
実行中であるか否かを判断し、上記緊急プロセスにプリ
エンプション要求情報が設定され、且つ、現在周期起床
プロセスの実行中である場合には、割込みにより実行を
中断された周期起床プロセスへのリターンアドレスを上
記スタックへ退避させ、リターンアドレスとして上記プ
リエンプション要求情報が設定された緊急プロセスのア
ドレスを設定すると共に、上記プリエンプション要求情
報が設定された緊急プロセスの最後に上記スタックに格
納されたリターンアドレスを獲得してリターンする命令
を記述し、当該プリエンプション要求情報が設定された
緊急プロセスを実行した後、上記スタックに退避させた
リターンアドレスに基づいて上記実行を中断された周期
起床プロセスを実行させるものである。
【0021】また、次の発明では、さらに、スタックを
具備し、第2のスケジューリング手段は、周期割込みが
ある度にプリエンプション管理テーブルを参照して緊急
プロセスにプリエンプション要求情報が設定されている
か否かを判断すると共に、現在上記周期起床プロセスが
実行中であるか否かを判断し、上記緊急プロセスにプリ
エンプション要求情報が設定され、且つ、現在周期起床
プロセスの実行中である場合には、割込みにより実行を
中断された周期起床プロセスへのリターンアドレスを上
記スタックへ退避させると共に、そのリターンアドレス
の示す周期起床プロセスの命令をスタックへ退避させ、
当該周期起床プロセスの命令を上記プリエンプション要
求情報が設定された緊急プロセスの先頭アドレスへのジ
ャンプ命令に書き換えると共に、上記プリエンプション
要求情報が設定された緊急プロセスの最後に上記スタッ
クに格納されたリターンアドレスおよび命令を獲得して
実行する命令を記述し、上記ジャンプ命令に基づいて当
該プリエンプション要求情報が設定された緊急プロセス
を実行した後は、上記スタックに退避させた上記リター
ンアドレスおよびそのリターンアドレスが示す命令を獲
得させてそのリターンアドレスに基づいて上記実行を中
断された周期起床プロセスを実行させるものである。
具備し、第2のスケジューリング手段は、周期割込みが
ある度にプリエンプション管理テーブルを参照して緊急
プロセスにプリエンプション要求情報が設定されている
か否かを判断すると共に、現在上記周期起床プロセスが
実行中であるか否かを判断し、上記緊急プロセスにプリ
エンプション要求情報が設定され、且つ、現在周期起床
プロセスの実行中である場合には、割込みにより実行を
中断された周期起床プロセスへのリターンアドレスを上
記スタックへ退避させると共に、そのリターンアドレス
の示す周期起床プロセスの命令をスタックへ退避させ、
当該周期起床プロセスの命令を上記プリエンプション要
求情報が設定された緊急プロセスの先頭アドレスへのジ
ャンプ命令に書き換えると共に、上記プリエンプション
要求情報が設定された緊急プロセスの最後に上記スタッ
クに格納されたリターンアドレスおよび命令を獲得して
実行する命令を記述し、上記ジャンプ命令に基づいて当
該プリエンプション要求情報が設定された緊急プロセス
を実行した後は、上記スタックに退避させた上記リター
ンアドレスおよびそのリターンアドレスが示す命令を獲
得させてそのリターンアドレスに基づいて上記実行を中
断された周期起床プロセスを実行させるものである。
【0022】また、次の発明では、オペレーティングシ
ステム上で実行される通常プロセスと、その通常プロセ
スを実行するためにCPUリソースの使用をスケジュー
リングする第1のスケジューリング手段と、ドライバ中
に組み込まれて所定の起床周期で起床して実行される周
期起床プロセスと、周期割込みに基づいて所定の起床周
期がきた上記周期起床プロセスを実行するためCPUリ
ソースの使用をスケジューリングする第2のスケジュー
リング手段と、を有するコンピュータ装置であって、上
記ドライバ中に組み込まれたプリエンプション処理を要
求する緊急プロセスと、上記緊急プロセスがプリエンプ
ション処理を要求しているか否かを示すプリエンプショ
ン要求情報の設定されたプリエンプション管理テーブル
と、所定周期毎に上記プリエンプション管理テーブルを
参照して上記緊急プロセスにプリエンプション要求情報
が設定されているか否かを判断すると共に、現在周期起
床プロセスを実行中であるか否かを判断し、上記緊急プ
ロセスにプリエンプション要求情報が設定されており、
且つ、現在周期起床プロセスの実行中でない場合には、
当該プリエンプション要求情報の設定された上記緊急プ
ロセスを実行する一方、上記緊急プロセスにプリエンプ
ション要求情報が設定され、且つ、現在周期起床プロセ
スの実行中である場合には、実行中の周期起床プロセス
の実行を中断して当該プリエンプション要求情報の設定
された上記緊急プロセスを実行させるプリエンプション
処理手段と、を具備するものである。
ステム上で実行される通常プロセスと、その通常プロセ
スを実行するためにCPUリソースの使用をスケジュー
リングする第1のスケジューリング手段と、ドライバ中
に組み込まれて所定の起床周期で起床して実行される周
期起床プロセスと、周期割込みに基づいて所定の起床周
期がきた上記周期起床プロセスを実行するためCPUリ
ソースの使用をスケジューリングする第2のスケジュー
リング手段と、を有するコンピュータ装置であって、上
記ドライバ中に組み込まれたプリエンプション処理を要
求する緊急プロセスと、上記緊急プロセスがプリエンプ
ション処理を要求しているか否かを示すプリエンプショ
ン要求情報の設定されたプリエンプション管理テーブル
と、所定周期毎に上記プリエンプション管理テーブルを
参照して上記緊急プロセスにプリエンプション要求情報
が設定されているか否かを判断すると共に、現在周期起
床プロセスを実行中であるか否かを判断し、上記緊急プ
ロセスにプリエンプション要求情報が設定されており、
且つ、現在周期起床プロセスの実行中でない場合には、
当該プリエンプション要求情報の設定された上記緊急プ
ロセスを実行する一方、上記緊急プロセスにプリエンプ
ション要求情報が設定され、且つ、現在周期起床プロセ
スの実行中である場合には、実行中の周期起床プロセス
の実行を中断して当該プリエンプション要求情報の設定
された上記緊急プロセスを実行させるプリエンプション
処理手段と、を具備するものである。
【0023】また、次の発明では、プリエンプション要
求情報が設定された緊急プロセスには、さらにプリエン
プション処理の優先度を示すプリエンプション優先度が
設定されており、第2のスケジューリング手段は、周期
割込みがある度にプリエンプション管理テーブルを参照
して上記緊急プロセスにプリエンプション要求情報が設
定されているか否かを判断すると共に、現在上記周期起
床プロセスが実行中であるか否かを判断し、上記緊急プ
ロセスにプリエンプション要求情報が設定されており、
且つ、現在周期起床プロセスの実行中であった場合に
は、プリエンプション要求情報の設定された当該周期起
床プロセスの上記プリエンプション優先度を参照して、
上記プリエンプション優先度に応じて上記緊急プロセス
を実行するものである。
求情報が設定された緊急プロセスには、さらにプリエン
プション処理の優先度を示すプリエンプション優先度が
設定されており、第2のスケジューリング手段は、周期
割込みがある度にプリエンプション管理テーブルを参照
して上記緊急プロセスにプリエンプション要求情報が設
定されているか否かを判断すると共に、現在上記周期起
床プロセスが実行中であるか否かを判断し、上記緊急プ
ロセスにプリエンプション要求情報が設定されており、
且つ、現在周期起床プロセスの実行中であった場合に
は、プリエンプション要求情報の設定された当該周期起
床プロセスの上記プリエンプション優先度を参照して、
上記プリエンプション優先度に応じて上記緊急プロセス
を実行するものである。
【0024】また、次の発明では、オペレーティングシ
ステム上で実行される通常プロセスと、その通常プロセ
スを実行するためにCPUリソースの使用をスケジュー
リングする第1のスケジューリング手段と、ドライバ中
に組み込まれて所定の起床周期で起床して実行される周
期起床プロセスと、周期割込みに基づいて所定の起床周
期がきた上記周期起床プロセスを実行するためCPUリ
ソースの使用をスケジューリングする第2のスケジュー
リング手段と、を有するコンピュータ装置における緊急
プロセスのプリエンプション方法であって、プリエンプ
ション処理を要求する緊急プロセスを上記ドライバ中に
組み込むと共に、上記緊急プロセスがプリエンプション
処理を要求しているか否かを示すプリエンプション要求
情報を設定し、上記周期割込みがある度に上記緊急プロ
セスにプリエンプション要求情報が設定されているか否
かを判断すると共に、現在上記周期起床プロセスが実行
中であるか否かを判断し、上記緊急プロセスにプリエン
プション要求情報が設定され、且つ、現在周期起床プロ
セスの実行中でない場合には、当該プリエンプション要
求情報の設定された緊急プロセスを実行するものであ
る。
ステム上で実行される通常プロセスと、その通常プロセ
スを実行するためにCPUリソースの使用をスケジュー
リングする第1のスケジューリング手段と、ドライバ中
に組み込まれて所定の起床周期で起床して実行される周
期起床プロセスと、周期割込みに基づいて所定の起床周
期がきた上記周期起床プロセスを実行するためCPUリ
ソースの使用をスケジューリングする第2のスケジュー
リング手段と、を有するコンピュータ装置における緊急
プロセスのプリエンプション方法であって、プリエンプ
ション処理を要求する緊急プロセスを上記ドライバ中に
組み込むと共に、上記緊急プロセスがプリエンプション
処理を要求しているか否かを示すプリエンプション要求
情報を設定し、上記周期割込みがある度に上記緊急プロ
セスにプリエンプション要求情報が設定されているか否
かを判断すると共に、現在上記周期起床プロセスが実行
中であるか否かを判断し、上記緊急プロセスにプリエン
プション要求情報が設定され、且つ、現在周期起床プロ
セスの実行中でない場合には、当該プリエンプション要
求情報の設定された緊急プロセスを実行するものであ
る。
【0025】また、次の発明では、緊急プロセスへのプ
リエンプション要求情報の設定は、周期割込みとは別の
特定デバイスからのプリエンプション要求割込みによっ
て行われるものである。
リエンプション要求情報の設定は、周期割込みとは別の
特定デバイスからのプリエンプション要求割込みによっ
て行われるものである。
【0026】また、次の発明では、緊急プロセスへのプ
リエンプション要求情報の設定は、その緊急プロセスが
周期起床プロセスであり、その起床周期が到達して実行
可能となる際に、現在実行中の周期起床プロセスより実
行の優先度が高い場合に行われるものである。
リエンプション要求情報の設定は、その緊急プロセスが
周期起床プロセスであり、その起床周期が到達して実行
可能となる際に、現在実行中の周期起床プロセスより実
行の優先度が高い場合に行われるものである。
【0027】また、次の発明では、さらに、他の周期起
床プロセスの実行により実行待ち状態となる周期起床プ
ロセスをレディキューに保持させて現在実行中の周期起
床プロセスの終了後上記レディキュー先頭の周期起床プ
ロセスから順に実行するようにスケジューリングすると
共に、周期割込みがある度に上記プリエンプション管理
テーブルを参照して上記緊急プロセスにプリエンプショ
ン要求情報が設定されているか否かを判断すると共に、
現在上記周期起床プロセスが実行中であるか否かを判断
し、上記緊急プロセスにプリエンプション要求情報が設
定され、且つ、現在周期起床プロセスの実行中である場
合には、当該プリエンプション要求情報の設定された上
記緊急プロセスを上記レディキューの先頭に保持させる
ものである。
床プロセスの実行により実行待ち状態となる周期起床プ
ロセスをレディキューに保持させて現在実行中の周期起
床プロセスの終了後上記レディキュー先頭の周期起床プ
ロセスから順に実行するようにスケジューリングすると
共に、周期割込みがある度に上記プリエンプション管理
テーブルを参照して上記緊急プロセスにプリエンプショ
ン要求情報が設定されているか否かを判断すると共に、
現在上記周期起床プロセスが実行中であるか否かを判断
し、上記緊急プロセスにプリエンプション要求情報が設
定され、且つ、現在周期起床プロセスの実行中である場
合には、当該プリエンプション要求情報の設定された上
記緊急プロセスを上記レディキューの先頭に保持させる
ものである。
【0028】また、次の発明では、各周期起床プロセス
にはプリエンプション関数が設定され、CPUリソース
は、周期起床プロセスの実行の際、上記プリエンプショ
ン関数を実行した場合には、プリエンプション管理テー
ブルを参照して緊急プロセスにプリエンプション要求情
報が設定されているか否かを判断し、緊急プロセスにプ
リエンプション要求情報が設定されている場合には、現
在実行中の周期起床プロセスの実行を中断するものであ
る。
にはプリエンプション関数が設定され、CPUリソース
は、周期起床プロセスの実行の際、上記プリエンプショ
ン関数を実行した場合には、プリエンプション管理テー
ブルを参照して緊急プロセスにプリエンプション要求情
報が設定されているか否かを判断し、緊急プロセスにプ
リエンプション要求情報が設定されている場合には、現
在実行中の周期起床プロセスの実行を中断するものであ
る。
【0029】また、次の発明では、周期割込みがある度
にプリエンプション管理テーブルを参照して緊急プロセ
スにプリエンプション要求情報が設定されているか否か
を判断すると共に、現在上記周期起床プロセスが実行中
であるか否かを判断し、上記緊急プロセスにプリエンプ
ション要求情報が設定され、且つ、現在周期起床プロセ
スの実行中である場合には、当該実行中の周期起床プロ
セスの実行を中断させ、上記プリエンプション要求情報
の設定された上記緊急プロセスを実行して、上記プリエ
ンプション要求情報を取り消し、その後実行を中断した
上記周期起床プロセスの実行を続行するものである。
にプリエンプション管理テーブルを参照して緊急プロセ
スにプリエンプション要求情報が設定されているか否か
を判断すると共に、現在上記周期起床プロセスが実行中
であるか否かを判断し、上記緊急プロセスにプリエンプ
ション要求情報が設定され、且つ、現在周期起床プロセ
スの実行中である場合には、当該実行中の周期起床プロ
セスの実行を中断させ、上記プリエンプション要求情報
の設定された上記緊急プロセスを実行して、上記プリエ
ンプション要求情報を取り消し、その後実行を中断した
上記周期起床プロセスの実行を続行するものである。
【0030】また、次の発明では、周期割込みがある度
にプリエンプション管理テーブルを参照して緊急プロセ
スにプリエンプション要求情報が設定されているか否か
を判断すると共に、現在上記周期起床プロセスが実行中
であるか否かを判断し、上記緊急プロセスにプリエンプ
ション要求情報が設定され、且つ、現在周期起床プロセ
スの実行中である場合には、割込みにより実行を中断さ
れた周期起床プロセスへのリターンアドレスを上記スタ
ックへ退避させ、リターンアドレスとして上記プリエン
プション要求情報が設定された緊急プロセスのアドレス
を設定すると共に、上記プリエンプション要求情報が設
定された緊急プロセスの最後に上記スタックに格納され
たリターンアドレスを獲得してリターンする命令を記述
し、当該プリエンプション要求情報が設定された緊急プ
ロセスを実行した後、上記スタックに退避させたリター
ンアドレスに基づいて上記実行を中断された周期起床プ
ロセスを実行させるものである。
にプリエンプション管理テーブルを参照して緊急プロセ
スにプリエンプション要求情報が設定されているか否か
を判断すると共に、現在上記周期起床プロセスが実行中
であるか否かを判断し、上記緊急プロセスにプリエンプ
ション要求情報が設定され、且つ、現在周期起床プロセ
スの実行中である場合には、割込みにより実行を中断さ
れた周期起床プロセスへのリターンアドレスを上記スタ
ックへ退避させ、リターンアドレスとして上記プリエン
プション要求情報が設定された緊急プロセスのアドレス
を設定すると共に、上記プリエンプション要求情報が設
定された緊急プロセスの最後に上記スタックに格納され
たリターンアドレスを獲得してリターンする命令を記述
し、当該プリエンプション要求情報が設定された緊急プ
ロセスを実行した後、上記スタックに退避させたリター
ンアドレスに基づいて上記実行を中断された周期起床プ
ロセスを実行させるものである。
【0031】また、次の発明では、周期割込みがある度
にプリエンプション管理テーブルを参照して緊急プロセ
スにプリエンプション要求情報が設定されているか否か
を判断すると共に、現在上記周期起床プロセスが実行中
であるか否かを判断し、上記緊急プロセスにプリエンプ
ション要求情報が設定され、且つ、現在周期起床プロセ
スの実行中である場合には、割込みにより実行を中断さ
れた周期起床プロセスへのリターンアドレスを上記スタ
ックへ退避させると共に、そのリターンアドレスの示す
周期起床プロセスの命令をスタックへ退避させ、当該周
期起床プロセスの命令を上記プリエンプション要求情報
が設定された緊急プロセスの先頭アドレスへのジャンプ
命令に書き換えると共に、上記プリエンプション要求情
報が設定された緊急プロセスの最後に上記スタックに格
納されたリターンアドレスおよび命令を獲得して実行す
る命令を記述し、上記ジャンプ命令に基づいて当該プリ
エンプション要求情報が設定された緊急プロセスを実行
した後は、上記スタックに退避させた上記リターンアド
レスおよびそのリターンアドレスが示す命令を獲得させ
てそのリターンアドレスに基づいて上記実行を中断され
た周期起床プロセスを実行させるものである。
にプリエンプション管理テーブルを参照して緊急プロセ
スにプリエンプション要求情報が設定されているか否か
を判断すると共に、現在上記周期起床プロセスが実行中
であるか否かを判断し、上記緊急プロセスにプリエンプ
ション要求情報が設定され、且つ、現在周期起床プロセ
スの実行中である場合には、割込みにより実行を中断さ
れた周期起床プロセスへのリターンアドレスを上記スタ
ックへ退避させると共に、そのリターンアドレスの示す
周期起床プロセスの命令をスタックへ退避させ、当該周
期起床プロセスの命令を上記プリエンプション要求情報
が設定された緊急プロセスの先頭アドレスへのジャンプ
命令に書き換えると共に、上記プリエンプション要求情
報が設定された緊急プロセスの最後に上記スタックに格
納されたリターンアドレスおよび命令を獲得して実行す
る命令を記述し、上記ジャンプ命令に基づいて当該プリ
エンプション要求情報が設定された緊急プロセスを実行
した後は、上記スタックに退避させた上記リターンアド
レスおよびそのリターンアドレスが示す命令を獲得させ
てそのリターンアドレスに基づいて上記実行を中断され
た周期起床プロセスを実行させるものである。
【0032】また、次の発明では、オペレーティングシ
ステム上で実行される通常プロセスと、その通常プロセ
スを実行するためにCPUリソースの使用をスケジュー
リングする第1のスケジューリング手段と、ドライバ中
に組み込まれて所定の起床周期で起床して実行される周
期起床プロセスと、周期割込みに基づいて所定の起床周
期がきた上記周期起床プロセスを実行するためCPUリ
ソースの使用をスケジューリングする第2のスケジュー
リング手段と、を有するコンピュータ装置における緊急
プロセスのプリエンプション方法であって、上記ドライ
バ中にプリエンプション処理を要求する緊急プロセスを
組込みむと共に、上記緊急プロセスにプリエンプション
処理を要求しているか否かを示すプリエンプション要求
情報を設定し、所定周期毎に上記緊急プロセスにプリエ
ンプション要求情報が設定されているか否かを判断する
と共に、現在周期起床プロセスを実行中であるか否かを
判断し、上記緊急プロセスにプリエンプション要求情報
が設定されており、且つ、現在周期起床プロセスの実行
中でない場合には、当該プリエンプション要求情報の設
定された上記緊急プロセスを実行する一方、上記緊急プ
ロセスにプリエンプション要求情報が設定され、且つ、
現在周期起床プロセスの実行中である場合には、実行中
の周期起床プロセスの実行を中断して当該プリエンプシ
ョン要求情報の設定された上記緊急プロセスを実行させ
るものである。
ステム上で実行される通常プロセスと、その通常プロセ
スを実行するためにCPUリソースの使用をスケジュー
リングする第1のスケジューリング手段と、ドライバ中
に組み込まれて所定の起床周期で起床して実行される周
期起床プロセスと、周期割込みに基づいて所定の起床周
期がきた上記周期起床プロセスを実行するためCPUリ
ソースの使用をスケジューリングする第2のスケジュー
リング手段と、を有するコンピュータ装置における緊急
プロセスのプリエンプション方法であって、上記ドライ
バ中にプリエンプション処理を要求する緊急プロセスを
組込みむと共に、上記緊急プロセスにプリエンプション
処理を要求しているか否かを示すプリエンプション要求
情報を設定し、所定周期毎に上記緊急プロセスにプリエ
ンプション要求情報が設定されているか否かを判断する
と共に、現在周期起床プロセスを実行中であるか否かを
判断し、上記緊急プロセスにプリエンプション要求情報
が設定されており、且つ、現在周期起床プロセスの実行
中でない場合には、当該プリエンプション要求情報の設
定された上記緊急プロセスを実行する一方、上記緊急プ
ロセスにプリエンプション要求情報が設定され、且つ、
現在周期起床プロセスの実行中である場合には、実行中
の周期起床プロセスの実行を中断して当該プリエンプシ
ョン要求情報の設定された上記緊急プロセスを実行させ
るものである。
【0033】また、次の発明では、プリエンプション要
求情報が設定された緊急プロセスには、さらにプリエン
プション処理の優先度を示すプリエンプション優先度が
設定されており、第2のスケジューリング手段は、周期
割込みがある度にプリエンプション管理テーブルを参照
して上記緊急プロセスにプリエンプション要求情報が設
定されているか否かを判断すると共に、現在上記周期起
床プロセスが実行中であるか否かを判断し、上記緊急プ
ロセスにプリエンプション要求情報が設定されており、
且つ、現在周期起床プロセスの実行中であった場合に
は、プリエンプション要求情報の設定された当該周期起
床プロセスの上記プリエンプション優先度を参照して、
上記プリエンプション優先度に応じて上記緊急プロセス
を実行するものである。
求情報が設定された緊急プロセスには、さらにプリエン
プション処理の優先度を示すプリエンプション優先度が
設定されており、第2のスケジューリング手段は、周期
割込みがある度にプリエンプション管理テーブルを参照
して上記緊急プロセスにプリエンプション要求情報が設
定されているか否かを判断すると共に、現在上記周期起
床プロセスが実行中であるか否かを判断し、上記緊急プ
ロセスにプリエンプション要求情報が設定されており、
且つ、現在周期起床プロセスの実行中であった場合に
は、プリエンプション要求情報の設定された当該周期起
床プロセスの上記プリエンプション優先度を参照して、
上記プリエンプション優先度に応じて上記緊急プロセス
を実行するものである。
【0034】
実施の形態1.図1に、本発明に係るコンピュータ装置
の実施の形態1であるパーソナルコンピュータ(PC)
装置の構成を示す。なお、図18に示す従来技術のもの
と同一機能を有するものには同一符号を付すものとす
る。図において、1はCPU等のプロセッサや当該プロ
セッサが使用するメモリ領域等であるCPUリソース、
2はMS−WINDOWS等のパーソナルコンピュータ
用のオペレーティングシステム(PC−OS)、3a〜
3cはオペレーティングシステム2上で実行されるワー
ドプロセッサや表計算等の各種アプリケーションプログ
ラムの通常プロセスである複数(便宜上、3つとす
る。)のPCプロセス、4はオペレーティングシステム
2上においてPCプロセス3a〜3cを実行する際の上
記CPUリソース1の使用をスケジューリングする第1
のスケジューリング手段である。
の実施の形態1であるパーソナルコンピュータ(PC)
装置の構成を示す。なお、図18に示す従来技術のもの
と同一機能を有するものには同一符号を付すものとす
る。図において、1はCPU等のプロセッサや当該プロ
セッサが使用するメモリ領域等であるCPUリソース、
2はMS−WINDOWS等のパーソナルコンピュータ
用のオペレーティングシステム(PC−OS)、3a〜
3cはオペレーティングシステム2上で実行されるワー
ドプロセッサや表計算等の各種アプリケーションプログ
ラムの通常プロセスである複数(便宜上、3つとす
る。)のPCプロセス、4はオペレーティングシステム
2上においてPCプロセス3a〜3cを実行する際の上
記CPUリソース1の使用をスケジューリングする第1
のスケジューリング手段である。
【0035】また、5はドライバ中に組み込まれオペレ
ーティングシステム2のドライバとして起動されるリア
ルタイム制御部、6はリアルタイム制御部5をドライバ
中にインストールするためのオペレーティングシステム
2のドライバ組み込み部であり、リアルタイム制御部5
は、CPUリソース使用権監視手段51と、第2のスケ
ジューリング手段152と、周期起床プロセス管理テー
ブル53と、レディキュー54と、複数(便宜上、3つ
とする。)の周期起床プロセス55a〜55cと、緊急
処理のためにプリエンプション処理を要求する緊急プロ
セス55dと、プリエンプション管理テーブル56と、
を有する。
ーティングシステム2のドライバとして起動されるリア
ルタイム制御部、6はリアルタイム制御部5をドライバ
中にインストールするためのオペレーティングシステム
2のドライバ組み込み部であり、リアルタイム制御部5
は、CPUリソース使用権監視手段51と、第2のスケ
ジューリング手段152と、周期起床プロセス管理テー
ブル53と、レディキュー54と、複数(便宜上、3つ
とする。)の周期起床プロセス55a〜55cと、緊急
処理のためにプリエンプション処理を要求する緊急プロ
セス55dと、プリエンプション管理テーブル56と、
を有する。
【0036】CPUリソース使用権監視手段51は、第
2のスケジューリング手段52がCPUリソース1をリ
アルタイム制御部5で使用している時間を計測して、そ
の計測時間が所定時間を経過した場合には、CPUリソ
ース1を強制的にオペレーティングシステム2上におけ
るPCプロセス3a〜3cの実行へ戻すように第2のス
ケジューリング手段152に指示して、CPUリソース
1を第2のスケジューリング手段152から第1のスケ
ジューリング手段4へ開放するものである。
2のスケジューリング手段52がCPUリソース1をリ
アルタイム制御部5で使用している時間を計測して、そ
の計測時間が所定時間を経過した場合には、CPUリソ
ース1を強制的にオペレーティングシステム2上におけ
るPCプロセス3a〜3cの実行へ戻すように第2のス
ケジューリング手段152に指示して、CPUリソース
1を第2のスケジューリング手段152から第1のスケ
ジューリング手段4へ開放するものである。
【0037】また、第2のスケジューリング手段152
は、周期起床プロセス管理テーブル53およびプリエン
プション管理テーブル56を参照して、後述する図3及
び図4に示すように、周期起床プロセス55a〜55c
を起床して実行する際のCPUリソース1の割当て等を
スケジューリングすると共に、新たに緊急プロセス55
dをプリエンプション処理するようにスケジューリング
するものである。
は、周期起床プロセス管理テーブル53およびプリエン
プション管理テーブル56を参照して、後述する図3及
び図4に示すように、周期起床プロセス55a〜55c
を起床して実行する際のCPUリソース1の割当て等を
スケジューリングすると共に、新たに緊急プロセス55
dをプリエンプション処理するようにスケジューリング
するものである。
【0038】さらに、周期起床プロセス管理テーブル5
3は、周期起床プロセス55a〜55cの起床動作を管
理するもの、レディキュー54は、起床したがすぐに実
行できず実行待ちとなる周期起床プロセスをFIFO方
式で保持および出力するものである。プリエンプション
管理テーブル56は、次の図2に示すような内容の情報
が設定されたものである。なお、周期起床プロセス55
a〜55cは、通常、それぞれの起床周期に基づいて周
期的に起床されてドライバOS上で実行され被制御機器
(図示せず。)を制御するユーザ設定の制御プログラム
等のプロセスである。
3は、周期起床プロセス55a〜55cの起床動作を管
理するもの、レディキュー54は、起床したがすぐに実
行できず実行待ちとなる周期起床プロセスをFIFO方
式で保持および出力するものである。プリエンプション
管理テーブル56は、次の図2に示すような内容の情報
が設定されたものである。なお、周期起床プロセス55
a〜55cは、通常、それぞれの起床周期に基づいて周
期的に起床されてドライバOS上で実行され被制御機器
(図示せず。)を制御するユーザ設定の制御プログラム
等のプロセスである。
【0039】図2に、プリエンプション管理テーブル5
6の内容を示す。図において、このプリエンプション管
理テーブル56は、緊急実行の要求される緊急プロセス
毎に各種情報が登録されたもので、561はどの緊急プ
ロセスであるか否かを識別するためのプリエンプション
ID、562はその緊急プロセスの処理ルーチンの所在
を示すアドレス、563は現在その緊急プロセスがプリ
エンプション処理されることが要求されているか否かを
示すプリエンプション要求情報としてのプリエンプショ
ン要求フラグで、“1”の設定された場合にプリエンプ
ション処理が要求されるものである。この図では、プリ
エンプションID561が4の緊急プロセスにプリエン
プション処理が要求されている。
6の内容を示す。図において、このプリエンプション管
理テーブル56は、緊急実行の要求される緊急プロセス
毎に各種情報が登録されたもので、561はどの緊急プ
ロセスであるか否かを識別するためのプリエンプション
ID、562はその緊急プロセスの処理ルーチンの所在
を示すアドレス、563は現在その緊急プロセスがプリ
エンプション処理されることが要求されているか否かを
示すプリエンプション要求情報としてのプリエンプショ
ン要求フラグで、“1”の設定された場合にプリエンプ
ション処理が要求されるものである。この図では、プリ
エンプションID561が4の緊急プロセスにプリエン
プション処理が要求されている。
【0040】なお、緊急プロセスがプリエンプション処
理を必要としていることを示すプリエンプション要求フ
ラグ563をセットする方法としては、例えば、特定の
デバイスからの割り込みを処理する割り込み処理ルーチ
ンにより緊急プロセスが起床された場合にこの割り込み
処理ルーチンでそのプリエンプション要求フラグ563
をONにする方法や、緊急プロセスが周期起床プロセス
でもあり、その緊急プロセスの起床周期が到達して実行
可能状態になる際に、現在実行中の他の周期起床プロセ
スよりもプロセス実行の優先度が高い場合にプリエンプ
ション要求フラグ563をONにする方法等があげられ
る。
理を必要としていることを示すプリエンプション要求フ
ラグ563をセットする方法としては、例えば、特定の
デバイスからの割り込みを処理する割り込み処理ルーチ
ンにより緊急プロセスが起床された場合にこの割り込み
処理ルーチンでそのプリエンプション要求フラグ563
をONにする方法や、緊急プロセスが周期起床プロセス
でもあり、その緊急プロセスの起床周期が到達して実行
可能状態になる際に、現在実行中の他の周期起床プロセ
スよりもプロセス実行の優先度が高い場合にプリエンプ
ション要求フラグ563をONにする方法等があげられ
る。
【0041】次に、この実施の形態1の動作を図面を参
照して説明する。
照して説明する。
【0042】図3に、この実施の形態1の第2のスケジ
ューリング手段152によるスケジューリング処理を示
す。なお、図19に示す従来技術における第2のスケジ
ューリング手段と同一処理のステップには、同一符号を
付してその説明は省略するものとする。
ューリング手段152によるスケジューリング処理を示
す。なお、図19に示す従来技術における第2のスケジ
ューリング手段と同一処理のステップには、同一符号を
付してその説明は省略するものとする。
【0043】具体的には、この実施の形態1では、ステ
ップ1001〜1012までの処理は図19に示す従来
技術と同じで、図19に示すステップ1012の処理の
次に、新たにステップ2000のプリエンプション処理
を行なうものである。
ップ1001〜1012までの処理は図19に示す従来
技術と同じで、図19に示すステップ1012の処理の
次に、新たにステップ2000のプリエンプション処理
を行なうものである。
【0044】つまり、この実施の形態1では、図3に示
すように、例えば外部の周期割込みデバイスから周期割
込み等があり、ドライバOSの割り込みサービスルーチ
ンが発生すると、第2のスケジューリング手段152が
呼び出され、第2のスケジューリング手段152はスケ
ジューリング処理を開始し、まずは周期起床プロセス実
行中フラグがONであるか否かを判断する(ステップ1
001)。ここで、周期起床プロセス実行中フラグがO
Nの場合には(ステップ1001“YES”)、今回の
周期割込みにより起床周期のきた実行可能な周期起床プ
ロセスがあるか否かを判断して(ステップ1011)、
起床周期のきた実行可能な周期起床プロセスがある場合
のみ(ステップ1011“YES”)、現在周期起床プ
ロセスを実行中であるので、当該実行可能な周期起床プ
ロセスをレディキュー54の最後に装入し(ステップ1
012)、新たにステップ2000のプリエンプション
処理として次の図4に示すプリエンプション処理を行な
うものである。
すように、例えば外部の周期割込みデバイスから周期割
込み等があり、ドライバOSの割り込みサービスルーチ
ンが発生すると、第2のスケジューリング手段152が
呼び出され、第2のスケジューリング手段152はスケ
ジューリング処理を開始し、まずは周期起床プロセス実
行中フラグがONであるか否かを判断する(ステップ1
001)。ここで、周期起床プロセス実行中フラグがO
Nの場合には(ステップ1001“YES”)、今回の
周期割込みにより起床周期のきた実行可能な周期起床プ
ロセスがあるか否かを判断して(ステップ1011)、
起床周期のきた実行可能な周期起床プロセスがある場合
のみ(ステップ1011“YES”)、現在周期起床プ
ロセスを実行中であるので、当該実行可能な周期起床プ
ロセスをレディキュー54の最後に装入し(ステップ1
012)、新たにステップ2000のプリエンプション
処理として次の図4に示すプリエンプション処理を行な
うものである。
【0045】図4に、図3に示すこの実施の形態1のス
テップ2000のプリエンプション処理を詳細に示す。
この場合、第2のスケジューリング手段152は、ま
ず、ステップ2010の処理により、プリエンプション
管理テーブル56を参照して、続くステップ2020の
処理により、プリエンプション管理テーブル56上にプ
リエンプション要求フラグ563に“1”の設定された
プリエンプション処理を要求する緊急プロセスがあるか
否かを判断する。
テップ2000のプリエンプション処理を詳細に示す。
この場合、第2のスケジューリング手段152は、ま
ず、ステップ2010の処理により、プリエンプション
管理テーブル56を参照して、続くステップ2020の
処理により、プリエンプション管理テーブル56上にプ
リエンプション要求フラグ563に“1”の設定された
プリエンプション処理を要求する緊急プロセスがあるか
否かを判断する。
【0046】ここで、プリエンプション管理テーブル5
6上のプリエンプション要求フラグ563に“1”の設
定された緊急プロセスがあると判断された場合には(ス
テップ2020“YES”)、その緊急プロセスはプリ
エンプション処理が要求されているので、この場合のみ
次のステップ2030に進んで、レディキュー54に起
床して実行待ち状態の周期起床プロセスが保持されてい
ると否かにかかわらず、その緊急プロセスをレディキュ
ー54の先頭に挿入するようにする。これで、プリエン
プション処理は終了する。
6上のプリエンプション要求フラグ563に“1”の設
定された緊急プロセスがあると判断された場合には(ス
テップ2020“YES”)、その緊急プロセスはプリ
エンプション処理が要求されているので、この場合のみ
次のステップ2030に進んで、レディキュー54に起
床して実行待ち状態の周期起床プロセスが保持されてい
ると否かにかかわらず、その緊急プロセスをレディキュ
ー54の先頭に挿入するようにする。これで、プリエン
プション処理は終了する。
【0047】次に、このプリエンプション処理を具体的
に説明するものとする。例えば、周期起床プロセス55
b、55cがこの順にレディキュー54に保持され実行
待ち状態にあり、周期起床プロセス55aが現在実行さ
れている場合に、プリエンプション処理を要求してきた
緊急プロセス55dのプリエンプション要求フラグ56
3が“1”に書き変えられて、プリエンプション処理を
要求してきたものと想定する。なお、通常のリアルタイ
ムOSでは、FIFO形式やプロセスの実行優先度等に
よってレディキュー54の順番決定を行なっている。
に説明するものとする。例えば、周期起床プロセス55
b、55cがこの順にレディキュー54に保持され実行
待ち状態にあり、周期起床プロセス55aが現在実行さ
れている場合に、プリエンプション処理を要求してきた
緊急プロセス55dのプリエンプション要求フラグ56
3が“1”に書き変えられて、プリエンプション処理を
要求してきたものと想定する。なお、通常のリアルタイ
ムOSでは、FIFO形式やプロセスの実行優先度等に
よってレディキュー54の順番決定を行なっている。
【0048】そして、この周期起床プロセス55aの実
行中、すなわちCPUリソース1が図4のステップ10
05〜1007の処理を実行している間の例えばステッ
プ1006の処理中に割り込みが発生したとすると、第
2のスケジューリング手段152がその割り込みによっ
て呼ばれ、ステップ1001の処理によって周期起床プ
ロセス実行中フラグのON・OFFに基づいて現在周期
起床プロセスの処理中であるかのチェックを行なうこと
になる。
行中、すなわちCPUリソース1が図4のステップ10
05〜1007の処理を実行している間の例えばステッ
プ1006の処理中に割り込みが発生したとすると、第
2のスケジューリング手段152がその割り込みによっ
て呼ばれ、ステップ1001の処理によって周期起床プ
ロセス実行中フラグのON・OFFに基づいて現在周期
起床プロセスの処理中であるかのチェックを行なうこと
になる。
【0049】すると、CPUリソース1が図3のステッ
プ1005〜1007の処理により現在周期起床プロセ
ス55aを実行中であることが分かるので、ステップ1
001の判断では“YES”の方へ進み、ステップ20
00のプリエンプション処理を行ない、図4のステップ
2010、ステップ2020“YES”、ステップ20
30と進みレディキュー54の先頭、すなわち周期起床
プロセス55b,55cより前の先頭にプリエンプショ
ン処理を要求してきた緊急プロセス55dを挿入するこ
とになる。
プ1005〜1007の処理により現在周期起床プロセ
ス55aを実行中であることが分かるので、ステップ1
001の判断では“YES”の方へ進み、ステップ20
00のプリエンプション処理を行ない、図4のステップ
2010、ステップ2020“YES”、ステップ20
30と進みレディキュー54の先頭、すなわち周期起床
プロセス55b,55cより前の先頭にプリエンプショ
ン処理を要求してきた緊急プロセス55dを挿入するこ
とになる。
【0050】そして、この図4に示すプリエンプション
処理が終了すると、周期割込み発生時に設定したリター
ンアドレスにより割込み発生地点である図3のステップ
1006に処理が戻され、残りの周期起床プロセス55
aの処理を再開する。そして、周期起床プロセス55a
の残りの処理が完了すると、ステップ1007の処理に
よりWAITし、ステップ1008の処理に戻り周期起
床プロセス55aを実行可能状態から外して、続くステ
ップ1009の処理によりプロセスの状態情報を保持
し、ステップ1003の処理に戻りレディキュー54を
参照して実行可能な周期起床プロセスが残っているか否
かをレディキュー54の先頭から検索する。
処理が終了すると、周期割込み発生時に設定したリター
ンアドレスにより割込み発生地点である図3のステップ
1006に処理が戻され、残りの周期起床プロセス55
aの処理を再開する。そして、周期起床プロセス55a
の残りの処理が完了すると、ステップ1007の処理に
よりWAITし、ステップ1008の処理に戻り周期起
床プロセス55aを実行可能状態から外して、続くステ
ップ1009の処理によりプロセスの状態情報を保持
し、ステップ1003の処理に戻りレディキュー54を
参照して実行可能な周期起床プロセスが残っているか否
かをレディキュー54の先頭から検索する。
【0051】すると、レディキュー54の先頭には、ス
テップ2000のプリエンプション処理によりプリエン
プション処理を要求してきた緊急プロセス55dが保持
されているので、ステップ1004を経てプリエンプシ
ョン処理を要求してきた当該緊急プロセス55dの処理
がステップ1005〜1007にて実行され、その後ス
テップ1008,1009の処理が実行されることにな
る。
テップ2000のプリエンプション処理によりプリエン
プション処理を要求してきた緊急プロセス55dが保持
されているので、ステップ1004を経てプリエンプシ
ョン処理を要求してきた当該緊急プロセス55dの処理
がステップ1005〜1007にて実行され、その後ス
テップ1008,1009の処理が実行されることにな
る。
【0052】緊急プロセス55dの実行後は、他にプリ
エンプション処理を要求する緊急プロセスがなければ、
ステップ1003〜1009の処理が繰返されることに
よって順に周期起床プロセス55b、55cが実行され
ることになる。このため、レディキュー54に先に登録
されていた周期起床プロセス55b、55cよりもプリ
エンプション処理を要求してきた緊急プロセス55dが
先に実行されて、プリエンプション処理を要求してきた
緊急プロセス55dについてプリエンプション処理が実
現されることになる。
エンプション処理を要求する緊急プロセスがなければ、
ステップ1003〜1009の処理が繰返されることに
よって順に周期起床プロセス55b、55cが実行され
ることになる。このため、レディキュー54に先に登録
されていた周期起床プロセス55b、55cよりもプリ
エンプション処理を要求してきた緊急プロセス55dが
先に実行されて、プリエンプション処理を要求してきた
緊急プロセス55dについてプリエンプション処理が実
現されることになる。
【0053】従って、この実施の形態1によれば、プリ
エンプション処理を要求する緊急プロセスは、通常のP
Cプロセス3a〜3cが実行されるPC−OS2上にお
ける第1のスケジューリング手段4のスケジューリング
処理により実行されるのではなく、リアルタイム制御部
5上における第2のスケジューリング手段152のスケ
ジューリング処理により実行されるようにしたので、緊
急性が必要とされる緊急プロセスにプリエンプション処
理を要求する緊急割り込みが発生した際には、通常は汎
用であるオペレーティングシステム2を修正することな
く、リアルタイム制御部5側を使用して迅速に当該緊急
プロセスを実行することができる。
エンプション処理を要求する緊急プロセスは、通常のP
Cプロセス3a〜3cが実行されるPC−OS2上にお
ける第1のスケジューリング手段4のスケジューリング
処理により実行されるのではなく、リアルタイム制御部
5上における第2のスケジューリング手段152のスケ
ジューリング処理により実行されるようにしたので、緊
急性が必要とされる緊急プロセスにプリエンプション処
理を要求する緊急割り込みが発生した際には、通常は汎
用であるオペレーティングシステム2を修正することな
く、リアルタイム制御部5側を使用して迅速に当該緊急
プロセスを実行することができる。
【0054】実施の形態2.この実施の形態2は、上記
実施の形態1を改良したもので、上記実施の形態1では
プリエンプション処理を要求してきた緊急プロセスを現
在実行中の周期起床プロセスがあればその実行終了後に
実行するようにしていたものを、現在実行中の周期起床
プロセスの実行を中断してプリエンプション処理を要求
してきた緊急プロセスを実行するようにしたもので、具
体的には、各周期起床プロセスのプログラムソースに後
述するプリエンプション関数を予め埋め込んでおき、C
PUリソースにこのプリエンプション関数を実行させる
ようにしたことを特徴とするものである。
実施の形態1を改良したもので、上記実施の形態1では
プリエンプション処理を要求してきた緊急プロセスを現
在実行中の周期起床プロセスがあればその実行終了後に
実行するようにしていたものを、現在実行中の周期起床
プロセスの実行を中断してプリエンプション処理を要求
してきた緊急プロセスを実行するようにしたもので、具
体的には、各周期起床プロセスのプログラムソースに後
述するプリエンプション関数を予め埋め込んでおき、C
PUリソースにこのプリエンプション関数を実行させる
ようにしたことを特徴とするものである。
【0055】このため、この実施の形態2のパーソナル
コンピュータ装置では、各周期起床プロセスのそれぞれ
に、後述するプリエンプション関数が挿入されたことを
特徴としており、その他の構成は図1に示す実施の形態
1のパーソナルコンピュータ装置と同じであるので、図
1〜図4を参照して説明するものとする。
コンピュータ装置では、各周期起床プロセスのそれぞれ
に、後述するプリエンプション関数が挿入されたことを
特徴としており、その他の構成は図1に示す実施の形態
1のパーソナルコンピュータ装置と同じであるので、図
1〜図4を参照して説明するものとする。
【0056】図5に、この実施の形態2による各周期起
床プロセス155a〜155cのプログラムソースへの
プリエンプション関数の組込み方法の一例を示す。この
図では、各周期起床プロセス155a〜155cのプロ
グラムソースには、次の図6に示すように動作するプリ
エンプション関数をコールする“CALLプリエンプシ
ョン関数”が埋め込まれている。なお、このCALLプ
リエンプション関数の挿入は、ライブラリ形式で提供し
ても良いし、コンパイラ等によって自動的に付与させる
ようにしても良い。
床プロセス155a〜155cのプログラムソースへの
プリエンプション関数の組込み方法の一例を示す。この
図では、各周期起床プロセス155a〜155cのプロ
グラムソースには、次の図6に示すように動作するプリ
エンプション関数をコールする“CALLプリエンプシ
ョン関数”が埋め込まれている。なお、このCALLプ
リエンプション関数の挿入は、ライブラリ形式で提供し
ても良いし、コンパイラ等によって自動的に付与させる
ようにしても良い。
【0057】次に、この実施の形態2の動作を説明す
る。なお、この実施の形態2の処理の説明を容易にする
ため、上記実施の形態1の説明と同じ状況、すなわち周
期起床プロセス55aの実行中に、緊急プロセス55d
のプリエンプション要求フラグ563に“1”が設定さ
れ、且つ、レディキュー54には周期起床プロセス55
b,55cが予め保持されている状況を想定して、この
実施の形態2の説明を行なうものとする。
る。なお、この実施の形態2の処理の説明を容易にする
ため、上記実施の形態1の説明と同じ状況、すなわち周
期起床プロセス55aの実行中に、緊急プロセス55d
のプリエンプション要求フラグ563に“1”が設定さ
れ、且つ、レディキュー54には周期起床プロセス55
b,55cが予め保持されている状況を想定して、この
実施の形態2の説明を行なうものとする。
【0058】まず、周期起床プロセス55aが現在実行
中であるので、図3の点線内のステップ1005から1
007を実行しており、そのステップ1006の処理に
よりCPUリソース1が周期起床プロセス155aを実
行した際、図5に示すようにこの周期起床プロセス15
5a中に埋めこまれた“CALLプリエンプション関
数”を実行すると、プリエンプション関数をコールし
て、CPUリソース1が当該プリエンプション関数を実
行することになる。
中であるので、図3の点線内のステップ1005から1
007を実行しており、そのステップ1006の処理に
よりCPUリソース1が周期起床プロセス155aを実
行した際、図5に示すようにこの周期起床プロセス15
5a中に埋めこまれた“CALLプリエンプション関
数”を実行すると、プリエンプション関数をコールし
て、CPUリソース1が当該プリエンプション関数を実
行することになる。
【0059】図6に、プリエンプション関数を実行した
場合のCPUリソース1の処理を示す。具体的には、C
PUリソース1がプリエンプション関数を実行すると、
まず、ステップ3010の処理によりプリエンプション
管理テーブル56を参照し、次のステップ3020の処
理によりプリエンプション処理が必要な緊急プロセスが
あるか否か、すなわちプリエンプション要求フラグ56
3に“1”の設定された緊急フラグがあるか否かを判断
する。
場合のCPUリソース1の処理を示す。具体的には、C
PUリソース1がプリエンプション関数を実行すると、
まず、ステップ3010の処理によりプリエンプション
管理テーブル56を参照し、次のステップ3020の処
理によりプリエンプション処理が必要な緊急プロセスが
あるか否か、すなわちプリエンプション要求フラグ56
3に“1”の設定された緊急フラグがあるか否かを判断
する。
【0060】ここで、プリエンプション要求フラグ56
3に“1”の設定された緊急プロセスがない場合には
(ステップ3020“NO”)、何もせずに図6に示す
処理を終了して、リターンアドレスによりプリエンプシ
ョン関数を呼び出していた地点、すなわち図3に示すス
テップ1006の処理に戻り、周期起床プロセス155
aの処理を続行するようにする。
3に“1”の設定された緊急プロセスがない場合には
(ステップ3020“NO”)、何もせずに図6に示す
処理を終了して、リターンアドレスによりプリエンプシ
ョン関数を呼び出していた地点、すなわち図3に示すス
テップ1006の処理に戻り、周期起床プロセス155
aの処理を続行するようにする。
【0061】これに対し、緊急プロセス55dのように
プリエンプション要求フラグ563に“1”の設定され
た緊急プロセスがある場合には(ステップ3020“Y
ES”)、既に図4に示すプリエンプション処理により
レディキュー54の先頭にプリエンプション処理を要求
してきた緊急プロセス55dが保持されているので、次
のステップ3030の処理より実行中の周期起床プロセ
ス55aを中断して、図3のステップ1007の処理同
様にWAITする。
プリエンプション要求フラグ563に“1”の設定され
た緊急プロセスがある場合には(ステップ3020“Y
ES”)、既に図4に示すプリエンプション処理により
レディキュー54の先頭にプリエンプション処理を要求
してきた緊急プロセス55dが保持されているので、次
のステップ3030の処理より実行中の周期起床プロセ
ス55aを中断して、図3のステップ1007の処理同
様にWAITする。
【0062】すると、CPUリソース1は実行中の周期
起床プロセス55aの実行を中断して、図3におけるス
テップ1008の処理へ移行するので、周期起床プロセ
ス55aを実行可能状態から外して、次のステップ10
09により状態情報を保持し、ステップ1003に戻っ
て実行可能なプロセスがあるか否かをレディキュー54
で検索する。
起床プロセス55aの実行を中断して、図3におけるス
テップ1008の処理へ移行するので、周期起床プロセ
ス55aを実行可能状態から外して、次のステップ10
09により状態情報を保持し、ステップ1003に戻っ
て実行可能なプロセスがあるか否かをレディキュー54
で検索する。
【0063】そして、この場合には、レディキュー54
の先頭に当該プリエンプション処理を要求してきた緊急
プロセス55dが保持されているので、ステップ100
4を経てプリエンプション処理を要求してきた緊急プロ
セス55dがステップ1005〜1007の処理により
実行されることになる。
の先頭に当該プリエンプション処理を要求してきた緊急
プロセス55dが保持されているので、ステップ100
4を経てプリエンプション処理を要求してきた緊急プロ
セス55dがステップ1005〜1007の処理により
実行されることになる。
【0064】このため、この実施の形態2では、現在実
行中の周期起床プロセス55aの実行が中断されて、プ
リエンプション処理を要求してきた緊急プロセス55d
がすぐに実行されることになる。そして、このプリエン
プション処理が要求された緊急プロセス55dの実行後
は、リターンアドレスによりプリエンプション関数を呼
び出した時点に戻るようにして、周期起床プロセス55
aの残りを実行すると共に、その後レディキュー54に
保持されている周期起床プロセス55b、55cを実行
することになる。なお、周期起床プロセス55b、55
cを実行している際に、そのプログラムソース中の“C
ALLプリエンプション関数”を実行した場合にも、上
記場合と同様に処理することになる。
行中の周期起床プロセス55aの実行が中断されて、プ
リエンプション処理を要求してきた緊急プロセス55d
がすぐに実行されることになる。そして、このプリエン
プション処理が要求された緊急プロセス55dの実行後
は、リターンアドレスによりプリエンプション関数を呼
び出した時点に戻るようにして、周期起床プロセス55
aの残りを実行すると共に、その後レディキュー54に
保持されている周期起床プロセス55b、55cを実行
することになる。なお、周期起床プロセス55b、55
cを実行している際に、そのプログラムソース中の“C
ALLプリエンプション関数”を実行した場合にも、上
記場合と同様に処理することになる。
【0065】従って、この実施の形態2によれば、上記
実施の形態1の構成に追加し各周期起床プロセス中にプ
リエンプション処理を要求する緊急プロセスがあるか否
かをプリエンプション管理テーブル56に参照しにいく
プリエンプション関数を設けたので、プリエンプション
処理を要求する緊急割り込みが発生してプリエンプショ
ン要求フラグが設定された場合には、周期起床プロセス
の実行中でもその周期起床プロセスの実行を中断して緊
急プロセスを実行することが可能となり、通常は汎用で
あるオペレーティングシステム2を修正することなく、
リアルタイム制御部5側を使用して迅速に当該緊急プロ
セスを実行することができる。
実施の形態1の構成に追加し各周期起床プロセス中にプ
リエンプション処理を要求する緊急プロセスがあるか否
かをプリエンプション管理テーブル56に参照しにいく
プリエンプション関数を設けたので、プリエンプション
処理を要求する緊急割り込みが発生してプリエンプショ
ン要求フラグが設定された場合には、周期起床プロセス
の実行中でもその周期起床プロセスの実行を中断して緊
急プロセスを実行することが可能となり、通常は汎用で
あるオペレーティングシステム2を修正することなく、
リアルタイム制御部5側を使用して迅速に当該緊急プロ
セスを実行することができる。
【0066】なお、この実施の形態2では、全ての周期
起床プロセスにプリエンプション関数を組み込むように
説明したが、本発明では、これに限らず、プリエンプシ
ョン処理によりその実行を中断されたくない周期起床プ
ロセスには、このプリエンプション関数を組み込まない
ようにしても良い。このようにすれば、プリエンプショ
ン処理によりその実行を中断されたくない周期起床プロ
セスには、プリエンプション関数が組み込まれていない
ので、その実行途中にプリエンプション処理を要求する
緊急割込みがあっても、上記実施の形態1の場合と同様
に、その実行途中で処理が中断されず、その実行終了
後、プリエンプション処理を要求した緊急プロセスを実
行することが可能になる。
起床プロセスにプリエンプション関数を組み込むように
説明したが、本発明では、これに限らず、プリエンプシ
ョン処理によりその実行を中断されたくない周期起床プ
ロセスには、このプリエンプション関数を組み込まない
ようにしても良い。このようにすれば、プリエンプショ
ン処理によりその実行を中断されたくない周期起床プロ
セスには、プリエンプション関数が組み込まれていない
ので、その実行途中にプリエンプション処理を要求する
緊急割込みがあっても、上記実施の形態1の場合と同様
に、その実行途中で処理が中断されず、その実行終了
後、プリエンプション処理を要求した緊急プロセスを実
行することが可能になる。
【0067】実施の形態3.上記実施の形態1,2で
は、プリエンプション処理を要求してきた緊急プロセス
を図3のステップ1005〜1007の処理により行っ
ていたが、この実施の形態3では、プリエンプション処
理を要求してきた緊急プロセスを割り込み処理ルーチン
の延長上であるステップ2000のプリエンプション処
理上で行なうようにしたことを特徴とするものである。
は、プリエンプション処理を要求してきた緊急プロセス
を図3のステップ1005〜1007の処理により行っ
ていたが、この実施の形態3では、プリエンプション処
理を要求してきた緊急プロセスを割り込み処理ルーチン
の延長上であるステップ2000のプリエンプション処
理上で行なうようにしたことを特徴とするものである。
【0068】図7に、この実施の形態3のパーソナルコ
ンピュータ装置の構成を示す。なお、図1に示す実施の
形態1のものと同じ構成には同一符号を付すものとす
る。つまり、図に示すように、この実施の形態3の構成
は、第2のスケジューリング252を除いては、図1に
示す上記実施の形態1の構成と同じで、第2のスケジュ
ーリング手段252が後述する図7に示すプリエンプシ
ョン処理を行なうようにしたものである。。
ンピュータ装置の構成を示す。なお、図1に示す実施の
形態1のものと同じ構成には同一符号を付すものとす
る。つまり、図に示すように、この実施の形態3の構成
は、第2のスケジューリング252を除いては、図1に
示す上記実施の形態1の構成と同じで、第2のスケジュ
ーリング手段252が後述する図7に示すプリエンプシ
ョン処理を行なうようにしたものである。。
【0069】次に、この実施の形態3における第2のス
ケジューリング手段252によるプリエンプション処理
を中心に説明するものとする。図8に、実施の形態3の
第2のスケジューリング手段252によるプリエンプシ
ョン処理を示す。なお、以下の説明では、この実施の形
態3における処理の説明を容易にするため、実施の形態
1の説明と同じ状況、すなわち周期起床プロセス55a
が図3の点線内のステップ1005から1007の処理
により実行中であり、周期起床プロセス55aをステッ
プ1006により実行している最中に、第2のスケジュ
ーリング手段152が周期割り込みによって呼ばれ、図
3のステップ1001により現在周期起床プロセスの処
理の最中であるかのチェックを行ない、周期起床プロセ
ス55aを処理中(仮にステップ1006にて割り込み
が発生したとする)であるので、ステップ2000に示
すプリエンプション処理としてこの図8に示すプリエン
プション処理を行なうものとする。
ケジューリング手段252によるプリエンプション処理
を中心に説明するものとする。図8に、実施の形態3の
第2のスケジューリング手段252によるプリエンプシ
ョン処理を示す。なお、以下の説明では、この実施の形
態3における処理の説明を容易にするため、実施の形態
1の説明と同じ状況、すなわち周期起床プロセス55a
が図3の点線内のステップ1005から1007の処理
により実行中であり、周期起床プロセス55aをステッ
プ1006により実行している最中に、第2のスケジュ
ーリング手段152が周期割り込みによって呼ばれ、図
3のステップ1001により現在周期起床プロセスの処
理の最中であるかのチェックを行ない、周期起床プロセ
ス55aを処理中(仮にステップ1006にて割り込み
が発生したとする)であるので、ステップ2000に示
すプリエンプション処理としてこの図8に示すプリエン
プション処理を行なうものとする。
【0070】すると、第2のスケジューリング手段25
2は、まず、ステップ4010の処理により、プリエン
プション管理テーブル56を参照して、続くステップ4
020の処理によりプリエンプション処理が必要な緊急
プロセスがあるか否か、すなわちプリエンプション要求
フラグ563に“1”のセットされた緊急プロセスがあ
るか否かを判断する。
2は、まず、ステップ4010の処理により、プリエン
プション管理テーブル56を参照して、続くステップ4
020の処理によりプリエンプション処理が必要な緊急
プロセスがあるか否か、すなわちプリエンプション要求
フラグ563に“1”のセットされた緊急プロセスがあ
るか否かを判断する。
【0071】ここで、プリエンプション要求フラグ56
3に“1”のセットされた緊急プロセスがないと判断さ
れた場合(ステップ4020“NO”)、第2のスケジ
ューリング手段152は、この図に示すプリエンプショ
ン処理を終了して、周期割り込みが発生した地点、すな
わちステップ1006の周期起床プロセス55aの実行
時点へリターンする。
3に“1”のセットされた緊急プロセスがないと判断さ
れた場合(ステップ4020“NO”)、第2のスケジ
ューリング手段152は、この図に示すプリエンプショ
ン処理を終了して、周期割り込みが発生した地点、すな
わちステップ1006の周期起床プロセス55aの実行
時点へリターンする。
【0072】これに対し、緊急プロセス55dのように
プリエンプション処理フラグに“1”の設定された緊急
プロセスがある場合には(ステップ4020“YE
S”)、次のステップ4030により先ほどのステップ
4010により参照したプリエンプション管理テーブル
56からプリエンプション処理を要求してきた緊急プロ
セス55dのアドレスを取得して、当該緊急プロセス5
5dをこの割り込み処理ルーチン内で実行する。そし
て、当該緊急プロセス55dの処理を終了すると、続く
ステップ4040の処理によりプリエンプション処理を
要求してきた当該緊急プロセス55dのプリエンプショ
ン要求フラグ563をOFF、すなわち“1”から
“0”にして、再度、上記ステップ4010の処理に戻
り、プリエンプション処理の必要な緊急プロセスがなく
るまで上記ステップ4030,4040の処理を繰返す
ようにする。
プリエンプション処理フラグに“1”の設定された緊急
プロセスがある場合には(ステップ4020“YE
S”)、次のステップ4030により先ほどのステップ
4010により参照したプリエンプション管理テーブル
56からプリエンプション処理を要求してきた緊急プロ
セス55dのアドレスを取得して、当該緊急プロセス5
5dをこの割り込み処理ルーチン内で実行する。そし
て、当該緊急プロセス55dの処理を終了すると、続く
ステップ4040の処理によりプリエンプション処理を
要求してきた当該緊急プロセス55dのプリエンプショ
ン要求フラグ563をOFF、すなわち“1”から
“0”にして、再度、上記ステップ4010の処理に戻
り、プリエンプション処理の必要な緊急プロセスがなく
るまで上記ステップ4030,4040の処理を繰返す
ようにする。
【0073】そして、プリエンプション処理を要求して
きた緊急プロセス55d等のプリエンプション処理の終
了後は、リターンアドレスに基づいて周期割込みによっ
て中断されたステップ1006の周期起床プロセス55
aの処理にリターンするので、周期起床プロセス55a
の処理が再開され、その実行終了後、周期起床プロセス
55b,55cが順に実行されることになる。これによ
って、現在処理中であった周期起床プロセス55aより
も先にプリエンプション処理を要求してきた緊急プロセ
ス55dが実行され、プリエンプション処理が実現され
ることになる。
きた緊急プロセス55d等のプリエンプション処理の終
了後は、リターンアドレスに基づいて周期割込みによっ
て中断されたステップ1006の周期起床プロセス55
aの処理にリターンするので、周期起床プロセス55a
の処理が再開され、その実行終了後、周期起床プロセス
55b,55cが順に実行されることになる。これによ
って、現在処理中であった周期起床プロセス55aより
も先にプリエンプション処理を要求してきた緊急プロセ
ス55dが実行され、プリエンプション処理が実現され
ることになる。
【0074】従って、この実施の形態3によれば、周期
割込みがある度にプリエンプション管理テーブル56を
参照して、プリエンプション処理を要求してきた緊急プ
ロセスがある場合には、その割込み処理ルーチンで当該
周期起床プロセスを即座に実行するようにしたので、通
常は汎用であるオペレーティングシステム2を修正する
ことなく、リアルタイム制御部5側を使用して迅速に当
該緊急プロセスを実行することができる。
割込みがある度にプリエンプション管理テーブル56を
参照して、プリエンプション処理を要求してきた緊急プ
ロセスがある場合には、その割込み処理ルーチンで当該
周期起床プロセスを即座に実行するようにしたので、通
常は汎用であるオペレーティングシステム2を修正する
ことなく、リアルタイム制御部5側を使用して迅速に当
該緊急プロセスを実行することができる。
【0075】実施の形態4.この実施の形態4は、上記
実施の形態2等と同様に、プリエンプション処理を要求
してきた緊急プロセスがある場合には、現在実行中の周
期起床プロセスがあってもその周期起床プロセスの実行
を途中で中断して、当該プリエンプション処理を要求し
てきた緊急プロセスを優先的に実行するが、その際、上
記実施の形態2とは異なりレディキューへの先頭割込み
や各周期起床プロセスへのプリエンプション関数を組み
込むことなく、周期割込みの際のリターンアドレスを利
用して行なうようにしたことを特徴とするものである。
実施の形態2等と同様に、プリエンプション処理を要求
してきた緊急プロセスがある場合には、現在実行中の周
期起床プロセスがあってもその周期起床プロセスの実行
を途中で中断して、当該プリエンプション処理を要求し
てきた緊急プロセスを優先的に実行するが、その際、上
記実施の形態2とは異なりレディキューへの先頭割込み
や各周期起床プロセスへのプリエンプション関数を組み
込むことなく、周期割込みの際のリターンアドレスを利
用して行なうようにしたことを特徴とするものである。
【0076】図9に、この実施の形態4のパーソナルコ
ンピュータ装置の構成を示す。なお、図1に示す実施の
形態1の構成と同一のものには同一符号を付してその説
明は省略するものとする。具体的には、この実施の形態
2のパーソナルコンピュータ装置は、この図8に示すよ
うに、上記実施の形態1の構成に対し、新たにリアルタ
イム制御部5内にリターンアドレスを退避させるスタッ
ク57を設けると共に、第2のスケジューリング手段3
52の処理を後述するように改良したものである。
ンピュータ装置の構成を示す。なお、図1に示す実施の
形態1の構成と同一のものには同一符号を付してその説
明は省略するものとする。具体的には、この実施の形態
2のパーソナルコンピュータ装置は、この図8に示すよ
うに、上記実施の形態1の構成に対し、新たにリアルタ
イム制御部5内にリターンアドレスを退避させるスタッ
ク57を設けると共に、第2のスケジューリング手段3
52の処理を後述するように改良したものである。
【0077】次に、この実施の形態4における、第2の
スケジューリング手段352の動作を説明する。なお、
この実施の形態4における第2のスケジューリング手段
352は、上記実施の形態1と同様に図3に示すステッ
プ1001〜ステップ1012までの処理を行ない、次
のステップ2000のプリエンプション処理として図4
に示すプリエンプション処理の代わりに、次の図10に
示すプリエンプション処理を行なうものである。このた
め、図3を参照しつつ、図10に示すプリエンプション
処理を中心に説明するものとする。
スケジューリング手段352の動作を説明する。なお、
この実施の形態4における第2のスケジューリング手段
352は、上記実施の形態1と同様に図3に示すステッ
プ1001〜ステップ1012までの処理を行ない、次
のステップ2000のプリエンプション処理として図4
に示すプリエンプション処理の代わりに、次の図10に
示すプリエンプション処理を行なうものである。このた
め、図3を参照しつつ、図10に示すプリエンプション
処理を中心に説明するものとする。
【0078】つまり、この実施の形態4における第2の
スケジューリング手段352は、上記実施の形態1と同
様に、ステップ1005から1007の処理によって周
期起床プロセス55aを実行している時に、例えばステ
ップ1006にて周期割込みデバイス(図示せず。)等
から周期割込みが発生したものとする。
スケジューリング手段352は、上記実施の形態1と同
様に、ステップ1005から1007の処理によって周
期起床プロセス55aを実行している時に、例えばステ
ップ1006にて周期割込みデバイス(図示せず。)等
から周期割込みが発生したものとする。
【0079】すると、第2のスケジューリング手段35
2は、その周期割り込みにより呼ばれて図3に示す処理
を開始し、ステップ1001にて周期起床プロセス実行
中フラグを参照し、現在周期起床プロセスの処理の最中
であるかのチェックを行なう。ここで、例えば周期起床
プロセス55aの実行中であるとすると、ステップ10
01にて周期起床プロセス実行中フラグがONと判断さ
れ(ステップ1001“YES”)、ステップ2000
に進み、ステップ2000のプリエンプション処理とし
て次の図10に示すこの実施の形態4特有のプリエンプ
ション処理が行なわれる
2は、その周期割り込みにより呼ばれて図3に示す処理
を開始し、ステップ1001にて周期起床プロセス実行
中フラグを参照し、現在周期起床プロセスの処理の最中
であるかのチェックを行なう。ここで、例えば周期起床
プロセス55aの実行中であるとすると、ステップ10
01にて周期起床プロセス実行中フラグがONと判断さ
れ(ステップ1001“YES”)、ステップ2000
に進み、ステップ2000のプリエンプション処理とし
て次の図10に示すこの実施の形態4特有のプリエンプ
ション処理が行なわれる
【0080】図10に、この実施の形態4における第2
のスケジューリング手段352によるプリエンプション
処理を示す。具体的には、まず、第2のスケジューリン
グ手段352は、ステップ5010の処理によりプリエ
ンプション管理テーブル56を参照して、続くステップ
5020の処理により、プリエンプション管理テーブル
56のプリエンプション要求フラグに“1”の設定され
た緊急プロセスがあるか否かを判断する。
のスケジューリング手段352によるプリエンプション
処理を示す。具体的には、まず、第2のスケジューリン
グ手段352は、ステップ5010の処理によりプリエ
ンプション管理テーブル56を参照して、続くステップ
5020の処理により、プリエンプション管理テーブル
56のプリエンプション要求フラグに“1”の設定され
た緊急プロセスがあるか否かを判断する。
【0081】ここで、プリエンプション管理テーブル5
6上にプリエンプション要求フラグに“1”の設定され
た周期起床プロセスがない場合には(ステップ5020
“NO”)、プリエンプション処理を要求してきた緊急
プロセスはないということなので、このプリエンプショ
ン処理を終了して、周期割り込みが発生して第2のスケ
ジューリング手段352が呼ばれた場合に与えられた割
込み発生した地点へのリターンアドレスに基づいて当該
割込み発生地点であるステップ1006の処理へリター
ンするようにする。
6上にプリエンプション要求フラグに“1”の設定され
た周期起床プロセスがない場合には(ステップ5020
“NO”)、プリエンプション処理を要求してきた緊急
プロセスはないということなので、このプリエンプショ
ン処理を終了して、周期割り込みが発生して第2のスケ
ジューリング手段352が呼ばれた場合に与えられた割
込み発生した地点へのリターンアドレスに基づいて当該
割込み発生地点であるステップ1006の処理へリター
ンするようにする。
【0082】これに対し、緊急プロセス55d等のよう
にプリエンプション管理テーブル56上にプリエンプシ
ョン要求フラグに“1”の設定された緊急プロセスがあ
る場合には(ステップ5020“YES”)、次のステ
ップ5030に進み、第2のスケジューリング手段35
2は、まず、その周期割り込みによって処理が中断され
た周期起床プロセス55aへ戻るためのリターンアドレ
スをスタック57に退避させる。
にプリエンプション管理テーブル56上にプリエンプシ
ョン要求フラグに“1”の設定された緊急プロセスがあ
る場合には(ステップ5020“YES”)、次のステ
ップ5030に進み、第2のスケジューリング手段35
2は、まず、その周期割り込みによって処理が中断され
た周期起床プロセス55aへ戻るためのリターンアドレ
スをスタック57に退避させる。
【0083】そして、次のステップ5040の処理によ
り、プリエンプション要求フラグが“1”で、プリエン
プション処理を要求してきた緊急プロセス55dのアド
レス562(図2参照)をプリエンプション管理テーブ
ル56より獲得して、周期割込みの発生時点ヘ戻るため
のリターンアドレスをこのプリエンプション処理を要求
してきた緊急プロセス55dの先頭のアドレス562に
書き換えると共に、緊急プロセス55dの最後にスタッ
ク57に退避されたリターンアドレスを獲得してそこへ
戻るよう指示する命令を追加して、この図10に示すプ
リエンプション処理を終了するようにする。
り、プリエンプション要求フラグが“1”で、プリエン
プション処理を要求してきた緊急プロセス55dのアド
レス562(図2参照)をプリエンプション管理テーブ
ル56より獲得して、周期割込みの発生時点ヘ戻るため
のリターンアドレスをこのプリエンプション処理を要求
してきた緊急プロセス55dの先頭のアドレス562に
書き換えると共に、緊急プロセス55dの最後にスタッ
ク57に退避されたリターンアドレスを獲得してそこへ
戻るよう指示する命令を追加して、この図10に示すプ
リエンプション処理を終了するようにする。
【0084】すると、リターンアドレスに基づいて周期
割込み発生時の状態に戻ろうとするが、そのリターンア
ドレスはステップ5040の処理によりプリエンプショ
ン処理を要求してきた緊急プロセス55dの先頭アドレ
スへCPUリソース1の処理が移行するので、実行中の
周期起床プロセス55aの処理が中断されて、当該緊急
プロセス55dがプリエンプション処理されることにな
る。
割込み発生時の状態に戻ろうとするが、そのリターンア
ドレスはステップ5040の処理によりプリエンプショ
ン処理を要求してきた緊急プロセス55dの先頭アドレ
スへCPUリソース1の処理が移行するので、実行中の
周期起床プロセス55aの処理が中断されて、当該緊急
プロセス55dがプリエンプション処理されることにな
る。
【0085】そして、当該プリエンプション処理を要求
してきた緊急プロセス55dの処理ルーチンの最後で
は、スタック57に退避させておいた周期起床プロセス
55aへのリターンアドレスの獲得を指示する命令を実
行して、スタック57に退避されたリターンアドレスに
基づいて実行を中断した周期起床プロセス55aへリタ
ーンし、図4のステップ1006の処理に戻ることにな
り、今回の周期割り込みによって中断した周期起動プロ
セス55aの処理が再開されることになる。
してきた緊急プロセス55dの処理ルーチンの最後で
は、スタック57に退避させておいた周期起床プロセス
55aへのリターンアドレスの獲得を指示する命令を実
行して、スタック57に退避されたリターンアドレスに
基づいて実行を中断した周期起床プロセス55aへリタ
ーンし、図4のステップ1006の処理に戻ることにな
り、今回の周期割り込みによって中断した周期起動プロ
セス55aの処理が再開されることになる。
【0086】このため、プリエンプション処理を要求し
てきた緊急プロセス55dの実行後は、周期起床プロセ
ス55aが実行され、その後は、レディキュー54に格
納されている周期起床プロセス55b、55cが順に実
行されることになる。
てきた緊急プロセス55dの実行後は、周期起床プロセ
ス55aが実行され、その後は、レディキュー54に格
納されている周期起床プロセス55b、55cが順に実
行されることになる。
【0087】これによって、現在処理中であった周期起
床プロセス55aよりも先にプリエンプション処理を要
求してきた緊急プロセス55dが現在実行中の周期起床
プロセス55aの実行を中断して実行され、プリエンプ
ション処理が実現されることになる。
床プロセス55aよりも先にプリエンプション処理を要
求してきた緊急プロセス55dが現在実行中の周期起床
プロセス55aの実行を中断して実行され、プリエンプ
ション処理が実現されることになる。
【0088】従って、この実施の形態4によれば、プリ
エンプション処理を要求してきた緊急プロセスがある場
合には、周期割り込みによって処理が中断された周期起
床プロセスへ戻るためのリターンアドレスをスタックに
退避させると共に、このリターンアドレスをプリエンプ
ション処理を要求してきた緊急プロセスのアドレスに書
き換える等することにより、プリエンプション処理を要
求してきた緊急プロセスを実行した後、退避させたリタ
ーンアドレスに基づいて実行を中断した周期起床プロセ
スの処理を続行するようにしたので、通常は汎用である
オペレーティングシステム2を修正することなく、リア
ルタイム制御部5側を使用して迅速に当該緊急プロセス
を実行することができる。
エンプション処理を要求してきた緊急プロセスがある場
合には、周期割り込みによって処理が中断された周期起
床プロセスへ戻るためのリターンアドレスをスタックに
退避させると共に、このリターンアドレスをプリエンプ
ション処理を要求してきた緊急プロセスのアドレスに書
き換える等することにより、プリエンプション処理を要
求してきた緊急プロセスを実行した後、退避させたリタ
ーンアドレスに基づいて実行を中断した周期起床プロセ
スの処理を続行するようにしたので、通常は汎用である
オペレーティングシステム2を修正することなく、リア
ルタイム制御部5側を使用して迅速に当該緊急プロセス
を実行することができる。
【0089】実施の形態5.この実施の形態5は、上記
実施の形態4と同様にスタックを利用してプリエンプシ
ョン処理を行なうものであるが、上記実施の形態4とは
プリエンプション処理を行なう際のアドレスの退避の方
法が異なることを特徴としている。
実施の形態4と同様にスタックを利用してプリエンプシ
ョン処理を行なうものであるが、上記実施の形態4とは
プリエンプション処理を行なう際のアドレスの退避の方
法が異なることを特徴としている。
【0090】図11に、この実施の形態5のパーソナル
コンピュータ装置の構成を示す。この図に示すように、
この実施の形態5では、第2のスケジューリング手段4
52によるプリエンプション処理が若干異なるだけで、
他の構成は上記実施の形態4と同じである。
コンピュータ装置の構成を示す。この図に示すように、
この実施の形態5では、第2のスケジューリング手段4
52によるプリエンプション処理が若干異なるだけで、
他の構成は上記実施の形態4と同じである。
【0091】次に、この実施の形態5の動作を説明す
る。なお、この実施の形態5における処理の説明を容易
にするため、上記実施の形態4等と同様に、点線内のス
テップ1005から1007の処理により周期起床プロ
セス55aを実行している最中の例えばステップ100
6にて周期割り込みが発生し、第2のスケジューリング
手段452がその周期割り込みによって呼ばれ、図4の
ステップ1001にて周期起床プロセス実行中フラグは
ONと判断され(ステップ1001“YES”)、続い
てステップ1011“NO”、もしくはステップ101
1“YES”およびステップ1012と進んで、ステッ
プ2000のプリエンプション処理として次の図12に
示すプリエンプション処理を行なうものとする。
る。なお、この実施の形態5における処理の説明を容易
にするため、上記実施の形態4等と同様に、点線内のス
テップ1005から1007の処理により周期起床プロ
セス55aを実行している最中の例えばステップ100
6にて周期割り込みが発生し、第2のスケジューリング
手段452がその周期割り込みによって呼ばれ、図4の
ステップ1001にて周期起床プロセス実行中フラグは
ONと判断され(ステップ1001“YES”)、続い
てステップ1011“NO”、もしくはステップ101
1“YES”およびステップ1012と進んで、ステッ
プ2000のプリエンプション処理として次の図12に
示すプリエンプション処理を行なうものとする。
【0092】図12に、この実施の形態5における第2
のスケジューリング手段452のプリエンプション処理
を示す。具体的には、第2のスケジューリング手段45
2は、まずステップ6010でプリエンプション管理テ
ーブル56を参照し、次のステップ6020によりプリ
エンプション処理を要求する緊急プロセス、すなわちプ
リエンプション要求フラグ563に“1”の設定された
緊急プロセスがあるか否かを判断する。
のスケジューリング手段452のプリエンプション処理
を示す。具体的には、第2のスケジューリング手段45
2は、まずステップ6010でプリエンプション管理テ
ーブル56を参照し、次のステップ6020によりプリ
エンプション処理を要求する緊急プロセス、すなわちプ
リエンプション要求フラグ563に“1”の設定された
緊急プロセスがあるか否かを判断する。
【0093】ここで、プリエンプション要求フラグ56
3に“1”の設定された緊急プロセスがないと判断され
た場合には(ステップ6020“NO”)、プリエンプ
ション処理を要求する緊急プロセスがないということな
ので、このプリエンプション処理を終了して、周期割込
み発生時のリターンアドレスに基づいてリターン割り込
みが発生した地点へリターンするようにする。
3に“1”の設定された緊急プロセスがないと判断され
た場合には(ステップ6020“NO”)、プリエンプ
ション処理を要求する緊急プロセスがないということな
ので、このプリエンプション処理を終了して、周期割込
み発生時のリターンアドレスに基づいてリターン割り込
みが発生した地点へリターンするようにする。
【0094】これに対し、緊急プロセス55dのように
プリエンプション要求フラグ563に“1”の設定され
た緊急プロセスがあると判断された場合には(ステップ
6020“YES”)、次のステップ6030に進み、
このステップ6030の処理により、まず割り込みによ
って処理が中断した周期起床プロセス55aへのリター
ンアドレスをスタック57へ退避させる。
プリエンプション要求フラグ563に“1”の設定され
た緊急プロセスがあると判断された場合には(ステップ
6020“YES”)、次のステップ6030に進み、
このステップ6030の処理により、まず割り込みによ
って処理が中断した周期起床プロセス55aへのリター
ンアドレスをスタック57へ退避させる。
【0095】次いで、この実施の形態5では、実施の形
態4の場合とは異なり、次のステップ6040の処理に
より、そのリターンアドレスが示す周期起床プロセスの
リターン先の命令をスタック57等に退避して、続くス
テップ6050の処理によりその周期起床プロセス55
aの退避させたリターン先の命令のあった場所に、ステ
ップ6010の処理によりプリエンプション管理テーブ
ル56より獲得したプリエンプション処理を要求してき
た緊急プロセス55dの先頭アドレスへのジャンプ命令
を書き込むと共に、緊急プロセス55dの最後にスタッ
ク57に格納されたアドレスおよび命令を獲得して処理
することを指示する命令を書き込み、このプリエンプシ
ョン処理を終了するようにする。
態4の場合とは異なり、次のステップ6040の処理に
より、そのリターンアドレスが示す周期起床プロセスの
リターン先の命令をスタック57等に退避して、続くス
テップ6050の処理によりその周期起床プロセス55
aの退避させたリターン先の命令のあった場所に、ステ
ップ6010の処理によりプリエンプション管理テーブ
ル56より獲得したプリエンプション処理を要求してき
た緊急プロセス55dの先頭アドレスへのジャンプ命令
を書き込むと共に、緊急プロセス55dの最後にスタッ
ク57に格納されたアドレスおよび命令を獲得して処理
することを指示する命令を書き込み、このプリエンプシ
ョン処理を終了するようにする。
【0096】すると、リターンアドレスに基づいて周期
割込みの発生した周期起床プロセス55aの実行ステッ
プであるステップ1006等の割り込み発生地点にCP
Uリソースが戻るが、上記ステップ6050の処理によ
りリターン先の周期起床プロセス55aの命令がプリエ
ンプション処理を要求してきた緊急プロセス55dの処
理へのジャンプ命令に書き換えられているため、今まで
実行していた周期起床プロセス55aの処理を中断し
て、プリエンプション処理を要求してきた緊急プロセス
55dを先に実行する。
割込みの発生した周期起床プロセス55aの実行ステッ
プであるステップ1006等の割り込み発生地点にCP
Uリソースが戻るが、上記ステップ6050の処理によ
りリターン先の周期起床プロセス55aの命令がプリエ
ンプション処理を要求してきた緊急プロセス55dの処
理へのジャンプ命令に書き換えられているため、今まで
実行していた周期起床プロセス55aの処理を中断し
て、プリエンプション処理を要求してきた緊急プロセス
55dを先に実行する。
【0097】そして、プリエンプション処理を要求して
きた緊急プロセス55dの処理ルーチンを実行して、そ
の最後の命令を実行すると、ステップ603、604に
て退避させておいたリターンアドレス及びリターン先の
命令を獲得して処理する命令を実行することになるの
で、スタック57から周期起床プロセス55aのリター
ン先の命令を復活させ、リターンアドレスに基づいてそ
の命令へリターンすることになる。
きた緊急プロセス55dの処理ルーチンを実行して、そ
の最後の命令を実行すると、ステップ603、604に
て退避させておいたリターンアドレス及びリターン先の
命令を獲得して処理する命令を実行することになるの
で、スタック57から周期起床プロセス55aのリター
ン先の命令を復活させ、リターンアドレスに基づいてそ
の命令へリターンすることになる。
【0098】すると、プリエンプション処理を要求して
きた緊急プロセス55dの処理が実行された後に、図4
のステップ1006に戻り割り込みによって中断されて
いた周期起動プロセス55aの処理が再開され、その周
期起床プロセス55aの実行が終了した後は、周期起床
プロセス55b、55cが順に実行されることになる。
これによって、現在処理中であった周期起床プロセスa
よりも先にプリエンプション処理を要求してきた緊急プ
ロセス55dが実行されて、プリエンプションが実現さ
れることになる。
きた緊急プロセス55dの処理が実行された後に、図4
のステップ1006に戻り割り込みによって中断されて
いた周期起動プロセス55aの処理が再開され、その周
期起床プロセス55aの実行が終了した後は、周期起床
プロセス55b、55cが順に実行されることになる。
これによって、現在処理中であった周期起床プロセスa
よりも先にプリエンプション処理を要求してきた緊急プ
ロセス55dが実行されて、プリエンプションが実現さ
れることになる。
【0099】従って、この実施の形態5によれば、それ
まで現在実行中であったプロセスの先頭箇所のプログラ
ム命令をジャンプ命令に書き換え等することによって、
上記実施の形態4の場合と同様に、緊急プロセスがプリ
エンプション処理を要求してきた場合には、実行中の周
期起床プロセスがあってもその実行を中断させて当該緊
急プロセスを実行するようにしたため、通常は汎用であ
るオペレーティングシステム2を修正することなく、リ
アルタイム制御部5側を使用して迅速に当該緊急プロセ
スを実行することができる。
まで現在実行中であったプロセスの先頭箇所のプログラ
ム命令をジャンプ命令に書き換え等することによって、
上記実施の形態4の場合と同様に、緊急プロセスがプリ
エンプション処理を要求してきた場合には、実行中の周
期起床プロセスがあってもその実行を中断させて当該緊
急プロセスを実行するようにしたため、通常は汎用であ
るオペレーティングシステム2を修正することなく、リ
アルタイム制御部5側を使用して迅速に当該緊急プロセ
スを実行することができる。
【0100】実施の形態6.この実施の形態6は、上記
実施の形態1〜5の場合とは異なり、周期起床プロセス
にプリエンプション処理をさせるために第2のスケジュ
ーリング手段を使用するのではなく、プリエンプション
処理を行わせるプリエンプション処理手段を第2のスケ
ジューリング手段とは別に設けたことを特徴とするもの
である。
実施の形態1〜5の場合とは異なり、周期起床プロセス
にプリエンプション処理をさせるために第2のスケジュ
ーリング手段を使用するのではなく、プリエンプション
処理を行わせるプリエンプション処理手段を第2のスケ
ジューリング手段とは別に設けたことを特徴とするもの
である。
【0101】図13に、この実施の形態6のパーソナル
コンピュータ装置の構成を示す。なお、図19に示す従
来技術の構成と同一のものには同一符号を付してその説
明は省略するものとする。具体的には、この実施の形態
6のパーソナルコンピュータ装置は、図19に示す従来
技術の構成に対し、リアルタイム制御部5内に上記実施
の形態1等のプリエンプション管理テーブル56と、後
述するプリエンプション用割込み部7からのプリエンプ
ション用割り込みにより起動してプリエンプション処理
を行なうプリエンプション処理手段58を設けると共
に、リアルタイム制御部5外にプリエンプション処理手
段58にクロック等に基づいて一定間隔の所定周期毎に
プリエンプション処理を実行させるためプリエンプショ
ン用割込みをかけるプリエンプション用割込み部7を有
している。なお、このプリエンプション用割込み部7の
発生する割込みは、周期起床プロセス55a〜55cを
実行させるため外部の周期割込みデバイス(図示せ
ず。)が第2のスケジューリング手段152にかける周
期割込みとは別の全く関係のないものである。また、第
2のスケジューリング手段52は従来技術のものと同様
に図19に示すスケジューリング処理を行ない、プリエ
ンプション処理は行わない。
コンピュータ装置の構成を示す。なお、図19に示す従
来技術の構成と同一のものには同一符号を付してその説
明は省略するものとする。具体的には、この実施の形態
6のパーソナルコンピュータ装置は、図19に示す従来
技術の構成に対し、リアルタイム制御部5内に上記実施
の形態1等のプリエンプション管理テーブル56と、後
述するプリエンプション用割込み部7からのプリエンプ
ション用割り込みにより起動してプリエンプション処理
を行なうプリエンプション処理手段58を設けると共
に、リアルタイム制御部5外にプリエンプション処理手
段58にクロック等に基づいて一定間隔の所定周期毎に
プリエンプション処理を実行させるためプリエンプショ
ン用割込みをかけるプリエンプション用割込み部7を有
している。なお、このプリエンプション用割込み部7の
発生する割込みは、周期起床プロセス55a〜55cを
実行させるため外部の周期割込みデバイス(図示せ
ず。)が第2のスケジューリング手段152にかける周
期割込みとは別の全く関係のないものである。また、第
2のスケジューリング手段52は従来技術のものと同様
に図19に示すスケジューリング処理を行ない、プリエ
ンプション処理は行わない。
【0102】次に、この実施の形態6の動作を説明す
る。なお、第2のスケジューリング手段52は、上述し
たように従来技術の場合と同様に図19に示すスケジュ
ーリング処理を実行するので、新たな構成であるプリエ
ンプション処理手段58の処理を中心に説明するものと
する。
る。なお、第2のスケジューリング手段52は、上述し
たように従来技術の場合と同様に図19に示すスケジュ
ーリング処理を実行するので、新たな構成であるプリエ
ンプション処理手段58の処理を中心に説明するものと
する。
【0103】図14に、プリエンプション処理手段58
によるプリエンプション処理を示す。なお、以下の説明
では、この実施の形態6における処理の説明を容易にす
るため、実施の形態1の説明と同じ状況、すなわち周期
起床プロセス55aが図3の点線内のステップ1005
から1007の処理により実行中で、周期起床プロセス
55aをステップ1006により実行している最中に、
プリエンプション用割込み部7がプリエンプション用割
込みを発生して、プリエンプション処理手段58が起動
されたものとする。
によるプリエンプション処理を示す。なお、以下の説明
では、この実施の形態6における処理の説明を容易にす
るため、実施の形態1の説明と同じ状況、すなわち周期
起床プロセス55aが図3の点線内のステップ1005
から1007の処理により実行中で、周期起床プロセス
55aをステップ1006により実行している最中に、
プリエンプション用割込み部7がプリエンプション用割
込みを発生して、プリエンプション処理手段58が起動
されたものとする。
【0104】すると、プリエンプション処理手段58
は、図14に示す処理を開始して、まずは、ステップ7
010の処理によりプリエンプション管理テーブル56
を参照して、続くステップ7020の処理によりプリエ
ンプション要求フラグ563に“1”のセットされた緊
急プロセス、すなわちプリエンプション処理を要求して
いる緊急プロセスがあるか否かを判断する。
は、図14に示す処理を開始して、まずは、ステップ7
010の処理によりプリエンプション管理テーブル56
を参照して、続くステップ7020の処理によりプリエ
ンプション要求フラグ563に“1”のセットされた緊
急プロセス、すなわちプリエンプション処理を要求して
いる緊急プロセスがあるか否かを判断する。
【0105】ここで、プリエンプション処理が必要な緊
急プロセスがない場合には(ステップ7020“N
O”)、プリエンプション制御処理を終了して、プリエ
ンプション処理手段58が呼び出された地点、すなわち
ステップ1006に戻り周期起床プロセス55aの処理
を続行するようにする。
急プロセスがない場合には(ステップ7020“N
O”)、プリエンプション制御処理を終了して、プリエ
ンプション処理手段58が呼び出された地点、すなわち
ステップ1006に戻り周期起床プロセス55aの処理
を続行するようにする。
【0106】これに対し、緊急プロセス55dのように
プリエンプション処理を要求する緊急プロセスがある場
合には(ステップ7020“YES”)、次のステップ
7030に進んで、第2のスケジューリング手段52か
らCPUリソース1の使用権を奪って実行中の周期起床
プロセス55aの実行を中断させ、CPUリソース1に
プリエンプション処理を要求してきた当該緊急プロセス
55dの処理を行なわせるようにする。
プリエンプション処理を要求する緊急プロセスがある場
合には(ステップ7020“YES”)、次のステップ
7030に進んで、第2のスケジューリング手段52か
らCPUリソース1の使用権を奪って実行中の周期起床
プロセス55aの実行を中断させ、CPUリソース1に
プリエンプション処理を要求してきた当該緊急プロセス
55dの処理を行なわせるようにする。
【0107】そして、ステップ7030の処理終了後
は、ステップ7010の処理に戻り、プリエンプション
処理を要求する緊急プロセスが他にあるかどうかを確認
し、プリエンプション処理を要求する緊急プロセスが他
にあれば(ステップ7020“YES”)、上記場合と
同様にステップ7030の処理によりその処理を行なう
一方、プリエンプション処理を要求するプロセスがなく
なった場合には(ステップ7020“NO”)、この図
14に示すプリエンプション処理を完了して、第2のス
ケジューリング手段52にCPUリソース1の使用権を
返して、プリエンプション処理手段58が呼び出された
地点、すなわち図4のステップ1006の処理に戻り周
期起床プロセス55aの処理を続行するようにする。
は、ステップ7010の処理に戻り、プリエンプション
処理を要求する緊急プロセスが他にあるかどうかを確認
し、プリエンプション処理を要求する緊急プロセスが他
にあれば(ステップ7020“YES”)、上記場合と
同様にステップ7030の処理によりその処理を行なう
一方、プリエンプション処理を要求するプロセスがなく
なった場合には(ステップ7020“NO”)、この図
14に示すプリエンプション処理を完了して、第2のス
ケジューリング手段52にCPUリソース1の使用権を
返して、プリエンプション処理手段58が呼び出された
地点、すなわち図4のステップ1006の処理に戻り周
期起床プロセス55aの処理を続行するようにする。
【0108】このため、現在処理中であった周期起床プ
ロセス55aよりも先にプリエンプション処理を要求し
てきた緊急プロセス55dが実行され、プリエンプショ
ン処理が実現されることになる。以上のステップ701
0〜7030の処理が、プリエンプション用割込み部7
から一定時間毎にプリエンプション用割込みがある毎に
行われる。
ロセス55aよりも先にプリエンプション処理を要求し
てきた緊急プロセス55dが実行され、プリエンプショ
ン処理が実現されることになる。以上のステップ701
0〜7030の処理が、プリエンプション用割込み部7
から一定時間毎にプリエンプション用割込みがある毎に
行われる。
【0109】従って、この実施の形態6によれば、第2
のスケジューリング手段とは別のプリエンプション処理
手段58がプリエンプション用割込み部7からの一定期
間毎のプリエンプション用割込みにより起動し、プリエ
ンプション管理テーブル56を参照してプリエンプショ
ン処理を要求してきた緊急プロセスがないか否かを判断
して、プリエンプション処理を要求してきた緊急プロセ
スがあればプリエンプション処理を行なうようにしたた
め、通常は汎用であるオペレーティングシステム2を修
正することなく、リアルタイム制御部5側を使用して迅
速に当該緊急プロセスを実行することができる。
のスケジューリング手段とは別のプリエンプション処理
手段58がプリエンプション用割込み部7からの一定期
間毎のプリエンプション用割込みにより起動し、プリエ
ンプション管理テーブル56を参照してプリエンプショ
ン処理を要求してきた緊急プロセスがないか否かを判断
して、プリエンプション処理を要求してきた緊急プロセ
スがあればプリエンプション処理を行なうようにしたた
め、通常は汎用であるオペレーティングシステム2を修
正することなく、リアルタイム制御部5側を使用して迅
速に当該緊急プロセスを実行することができる。
【0110】なお、この実施の形態6では、リアルタイ
ム制御部5の外部にプリエンプション用割込み部7を設
けて説明したが、本発明では、これに限定されることは
なく、例えばこのようなプリエンプション用割込み部7
をリアルタイム制御部5内に設けたり、プリエンプショ
ン用割込み部7を設けずに、プリエンプション処理手段
58内で所定のプリエンプション処理周期をカウントす
るようにしても勿論良い。
ム制御部5の外部にプリエンプション用割込み部7を設
けて説明したが、本発明では、これに限定されることは
なく、例えばこのようなプリエンプション用割込み部7
をリアルタイム制御部5内に設けたり、プリエンプショ
ン用割込み部7を設けずに、プリエンプション処理手段
58内で所定のプリエンプション処理周期をカウントす
るようにしても勿論良い。
【0111】実施の形態7.この実施の形態7は、プリ
エンプション処理の優先度によって複数のプリエンプシ
ョン処理手法を使い分ける複合型プリエンプション処理
を行なうことを特徴とするものである。ここでは、一例
として、上記実施の形態1と、実施の形態3と、実施の
形態4のプリエンプション処理を使い分けるものとして
説明する。
エンプション処理の優先度によって複数のプリエンプシ
ョン処理手法を使い分ける複合型プリエンプション処理
を行なうことを特徴とするものである。ここでは、一例
として、上記実施の形態1と、実施の形態3と、実施の
形態4のプリエンプション処理を使い分けるものとして
説明する。
【0112】図15に、この実施の形態7のパーソナル
コンピュータ装置の構成を示す。この実施の形態7で
は、プリエンプション処理の優先度によって図4に示す
上記実施の形態1のプリエンプション処理、図8に示す
実施の形態3のプリエンプション処理、図10に示す実
施の形態4のプリエンプション処理を使い分ける第2の
スケジューリング手段562を有すると共に、さらにプ
リエンプション処理の優先度であるプリエンプション優
先度が設定されたプリエンプション管理テーブル156
を有することを特徴とするもので、その他の構成は、上
記実施の形態1や、実施の形態3、4と同じである。
コンピュータ装置の構成を示す。この実施の形態7で
は、プリエンプション処理の優先度によって図4に示す
上記実施の形態1のプリエンプション処理、図8に示す
実施の形態3のプリエンプション処理、図10に示す実
施の形態4のプリエンプション処理を使い分ける第2の
スケジューリング手段562を有すると共に、さらにプ
リエンプション処理の優先度であるプリエンプション優
先度が設定されたプリエンプション管理テーブル156
を有することを特徴とするもので、その他の構成は、上
記実施の形態1や、実施の形態3、4と同じである。
【0113】図16に、この実施の形態7のプリエンプ
ション管理テーブル156を示す。この図に示す実施の
形態7のプリエンプション管理テーブル156は、図2
に示す実施の形態1のプリエンプション管理テーブル5
6に対し新たにプリエンプション処理の優先度564を
設けたものである。この実施の形態7では、優先度に応
じて上述の3つのプリエンプション処理を使い分けるよ
うにしているので、プリエンプション優先度564とし
ては、“1”〜“3”の値を使用している。なお、複数
の緊急プロセスが同時にプリエンプション処理を要求し
てきた場合、第2のスケジューリング手段552は、プ
リエンプション優先度の高い、すなわちプリエンプショ
ン優先度が1、2、3の順で実行するものとする。
ション管理テーブル156を示す。この図に示す実施の
形態7のプリエンプション管理テーブル156は、図2
に示す実施の形態1のプリエンプション管理テーブル5
6に対し新たにプリエンプション処理の優先度564を
設けたものである。この実施の形態7では、優先度に応
じて上述の3つのプリエンプション処理を使い分けるよ
うにしているので、プリエンプション優先度564とし
ては、“1”〜“3”の値を使用している。なお、複数
の緊急プロセスが同時にプリエンプション処理を要求し
てきた場合、第2のスケジューリング手段552は、プ
リエンプション優先度の高い、すなわちプリエンプショ
ン優先度が1、2、3の順で実行するものとする。
【0114】次に、この実施の形態7の動作を説明す
る。なお、この実施の形態7における処理の説明を容易
にするため、実施の形態1等と同様に、図3の点線内の
ステップ1005から1007の処理により周期起床プ
ロセス55aを実行している最中の例えばステップ10
06にて周期割り込みが発生し、第2のスケジューリン
グ手段152がその周期割り込みによって呼ばれ、図3
のステップ1001にて周期起床プロセス実行中フラグ
はONと判断され(ステップ1001“YES”)、続
いてステップ1011“NO”、もしくはステップ10
11“YES”およびステップ1012と進んで、ステ
ップ2000のプリエンプション処理として次の図17
に示すプリエンプション処理を行なうものとする。
る。なお、この実施の形態7における処理の説明を容易
にするため、実施の形態1等と同様に、図3の点線内の
ステップ1005から1007の処理により周期起床プ
ロセス55aを実行している最中の例えばステップ10
06にて周期割り込みが発生し、第2のスケジューリン
グ手段152がその周期割り込みによって呼ばれ、図3
のステップ1001にて周期起床プロセス実行中フラグ
はONと判断され(ステップ1001“YES”)、続
いてステップ1011“NO”、もしくはステップ10
11“YES”およびステップ1012と進んで、ステ
ップ2000のプリエンプション処理として次の図17
に示すプリエンプション処理を行なうものとする。
【0115】図17に、この実施の形態7における第2
のスケジューリング手段152のプリエンプション処理
を示す。具体的には、まず、第2のスケジューリング手
段552は、ステップ9010によりプリエンプション
管理テーブル156を参照し、次のステップ9020に
よりプリエンプション処理を要求する緊急プロセス、す
なわちプリエンプション要求フラグ563に“1”の設
定された緊急プロセスがあるか否かを判断する。
のスケジューリング手段152のプリエンプション処理
を示す。具体的には、まず、第2のスケジューリング手
段552は、ステップ9010によりプリエンプション
管理テーブル156を参照し、次のステップ9020に
よりプリエンプション処理を要求する緊急プロセス、す
なわちプリエンプション要求フラグ563に“1”の設
定された緊急プロセスがあるか否かを判断する。
【0116】ここで、プリエンプション処理を要求する
緊急プロセスがないと判断された場合には(ステップ9
020“NO”)、この図17に示すプリエンプション
処理を終了して、第2のスケジューリング手段552が
呼び出された地点、すなわち図4のステップ1006の
処理に戻り周期起床プロセス55aの処理を続行するよ
うにする。
緊急プロセスがないと判断された場合には(ステップ9
020“NO”)、この図17に示すプリエンプション
処理を終了して、第2のスケジューリング手段552が
呼び出された地点、すなわち図4のステップ1006の
処理に戻り周期起床プロセス55aの処理を続行するよ
うにする。
【0117】これに対し、緊急プロセス55dのように
プリエンプション要求フラグイに“1”がセットされ、
プリエンプション処理を要求してきた緊急プロセスがあ
る場合には(ステップ9020“YES”)、続いてプ
リエンプション管理テーブル156を参照してそのプリ
エンプション処理を要求してきた緊急プロセスのプリエ
ンプション優先度を判断する(ステップ9030)。
プリエンプション要求フラグイに“1”がセットされ、
プリエンプション処理を要求してきた緊急プロセスがあ
る場合には(ステップ9020“YES”)、続いてプ
リエンプション管理テーブル156を参照してそのプリ
エンプション処理を要求してきた緊急プロセスのプリエ
ンプション優先度を判断する(ステップ9030)。
【0118】ここで、プリエンプション優先度の値が
“1”の場合には(ステップ9030“1”)、プリエ
ンプションの優先度が最も高い場合であるため、実行中
の周期起床プロセス55aが中断され、プリエンプショ
ン処理を要求してきた緊急プロセス55dがこの処理ル
ーチン上で即座に実行される図8に示す上記実施の形態
3のプリエンプション処理を行なうようにする。
“1”の場合には(ステップ9030“1”)、プリエ
ンプションの優先度が最も高い場合であるため、実行中
の周期起床プロセス55aが中断され、プリエンプショ
ン処理を要求してきた緊急プロセス55dがこの処理ル
ーチン上で即座に実行される図8に示す上記実施の形態
3のプリエンプション処理を行なうようにする。
【0119】その一方、プリエンプション優先度の値が
“2”の場合には(ステップ9030“2”)、プリエ
ンプション優先度は中位での場合であるため、実行中の
周期起床プロセス55aが中断され、周期起床プロセス
ルーチンである図4のステップ1005〜1007の処
理で緊急プロセス55dが実行される図10に示す上記
実施の形態4のプリエンプション処理を行なうようにす
る。
“2”の場合には(ステップ9030“2”)、プリエ
ンプション優先度は中位での場合であるため、実行中の
周期起床プロセス55aが中断され、周期起床プロセス
ルーチンである図4のステップ1005〜1007の処
理で緊急プロセス55dが実行される図10に示す上記
実施の形態4のプリエンプション処理を行なうようにす
る。
【0120】また、プリエンプション優先度の値が
“3”の場合には(ステップ9030“3”)、プリエ
ンプション優先度は最も低い場合であるため、現在実行
中の周期起床プロセス55aの処理が終了後,当該プリ
エンプション処理を要求してきた緊急プロセス55dが
実行される図4に示す上記実施の形態1のプリエンプシ
ョン処理を行なうようにする。
“3”の場合には(ステップ9030“3”)、プリエ
ンプション優先度は最も低い場合であるため、現在実行
中の周期起床プロセス55aの処理が終了後,当該プリ
エンプション処理を要求してきた緊急プロセス55dが
実行される図4に示す上記実施の形態1のプリエンプシ
ョン処理を行なうようにする。
【0121】従って、この実施の形態7によれば、プリ
エンプション処理を要求する緊急プロセスに予め設定さ
れたプリエンプション優先度に応じてプリエンプション
処理を使い分けるようにしたので、プリエンプション処
理を要求する緊急プロセスに応じたプリエンプション処
理を選択することができる。
エンプション処理を要求する緊急プロセスに予め設定さ
れたプリエンプション優先度に応じてプリエンプション
処理を使い分けるようにしたので、プリエンプション処
理を要求する緊急プロセスに応じたプリエンプション処
理を選択することができる。
【0122】また、この実施の形態7では、複数の緊急
プロセスが同時にプリエンプション情報を要求してきた
場合には、そのプリエンプション優先度に応じて実行す
るようにしたので、プリエンプション優先度に応じて同
時にプリエンプション処理を要求してきた緊急プロセス
の実行順序を決定することができる。
プロセスが同時にプリエンプション情報を要求してきた
場合には、そのプリエンプション優先度に応じて実行す
るようにしたので、プリエンプション優先度に応じて同
時にプリエンプション処理を要求してきた緊急プロセス
の実行順序を決定することができる。
【0123】なお、この実施の形態7では、プリエンプ
ション優先度564を1〜3、またプリエンプション優
先度564に応じプリエンプション処理を3つ容易して
説明したが、本発明では、これらに限定されず、例えば
プリエンプション優先度の値の幅を例えば1〜20等に
広げ、1〜5は例えば図8に示す実施の形態3のプリエ
ンプション処理、6〜10は例えば図10に示す実施の
形態4のプリエンプション処理、11〜15は例えば図
4に示す実施の形態1のプリエンプション処理、16〜
20は例えば図12に示す実施の形態5のプリエンプシ
ョン処理を行なうようにし、同一プリエンプション処理
を行なう場合でも、その優先度が高いものから順次実行
するようにしてもよいし、またプリエンプション処理を
1つだけ用意するが複数の緊急プロセスには異なるプリ
エンプション優先度を与えて、複数の緊急プロセスが同
時にプリエンプション処理を要求してきた場合には、そ
のプリエンプション優先度に応じて実行の順序を決定す
るようにしても勿論良い。
ション優先度564を1〜3、またプリエンプション優
先度564に応じプリエンプション処理を3つ容易して
説明したが、本発明では、これらに限定されず、例えば
プリエンプション優先度の値の幅を例えば1〜20等に
広げ、1〜5は例えば図8に示す実施の形態3のプリエ
ンプション処理、6〜10は例えば図10に示す実施の
形態4のプリエンプション処理、11〜15は例えば図
4に示す実施の形態1のプリエンプション処理、16〜
20は例えば図12に示す実施の形態5のプリエンプシ
ョン処理を行なうようにし、同一プリエンプション処理
を行なう場合でも、その優先度が高いものから順次実行
するようにしてもよいし、またプリエンプション処理を
1つだけ用意するが複数の緊急プロセスには異なるプリ
エンプション優先度を与えて、複数の緊急プロセスが同
時にプリエンプション処理を要求してきた場合には、そ
のプリエンプション優先度に応じて実行の順序を決定す
るようにしても勿論良い。
【0124】
【発明の効果】以上説明したように、本発明では、プリ
エンプション処理を要求する緊急プロセスをドライバ中
に組み込むと共に、緊急プロセスがプリエンプション処
理を要求しているか否かを示すプリエンプション要求情
報を設定し、第2のスケジューリング手段は、周期割込
みがある度に緊急プロセスにプリエンプション要求情報
が設定されているか否かを判断すると共に、現在周期起
床プロセスが実行中であるか否かを判断し、緊急プロセ
スにプリエンプション要求情報が設定され、且つ、現在
周期起床プロセスの実行中でない場合には、当該プリエ
ンプション要求情報の設定された緊急プロセスを実行す
るようにしたため、通常は汎用である通常は汎用である
オペレーティングシステム側を修正することなく、ドラ
イバ中で緊急プロセスを実行できると共に、プリエンプ
ション処理を要求する緊急プロセスは通常プロセスが実
行されるオペレーティングシステム上における第1のス
ケジューリング手段のスケジューリング処理により実行
されないので、緊急割り込みが発生した際には迅速に当
該緊急プロセスを実行することができる。
エンプション処理を要求する緊急プロセスをドライバ中
に組み込むと共に、緊急プロセスがプリエンプション処
理を要求しているか否かを示すプリエンプション要求情
報を設定し、第2のスケジューリング手段は、周期割込
みがある度に緊急プロセスにプリエンプション要求情報
が設定されているか否かを判断すると共に、現在周期起
床プロセスが実行中であるか否かを判断し、緊急プロセ
スにプリエンプション要求情報が設定され、且つ、現在
周期起床プロセスの実行中でない場合には、当該プリエ
ンプション要求情報の設定された緊急プロセスを実行す
るようにしたため、通常は汎用である通常は汎用である
オペレーティングシステム側を修正することなく、ドラ
イバ中で緊急プロセスを実行できると共に、プリエンプ
ション処理を要求する緊急プロセスは通常プロセスが実
行されるオペレーティングシステム上における第1のス
ケジューリング手段のスケジューリング処理により実行
されないので、緊急割り込みが発生した際には迅速に当
該緊急プロセスを実行することができる。
【0125】また、次の発明では、第2の他の周期起床
プロセスの実行により実行待ち状態となる周期起床プロ
セスをレディキューに保持させて現在実行中の周期起床
プロセスの終了後レディキュー先頭の周期起床プロセス
から順に実行するようにスケジューリングすると共に、
周期割込みがある度に上記プリエンプション管理テーブ
ルを参照して緊急プロセスにプリエンプション要求情報
が設定されているか否かを判断すると共に、現在周期起
床プロセスが実行中であるか否かを判断し、緊急プロセ
スにプリエンプション要求情報が設定され、且つ、現在
周期起床プロセスの実行中である場合には、当該プリエ
ンプション要求情報の設定された緊急プロセスをレディ
キューの先頭に保持させるようにしたため、通常は汎用
であるオペレーティングシステム側を修正することな
く、しかも実行待ちの周期起床プロセスがあっても緊急
処理を要求された緊急プロセスを迅速に実行することが
できる。
プロセスの実行により実行待ち状態となる周期起床プロ
セスをレディキューに保持させて現在実行中の周期起床
プロセスの終了後レディキュー先頭の周期起床プロセス
から順に実行するようにスケジューリングすると共に、
周期割込みがある度に上記プリエンプション管理テーブ
ルを参照して緊急プロセスにプリエンプション要求情報
が設定されているか否かを判断すると共に、現在周期起
床プロセスが実行中であるか否かを判断し、緊急プロセ
スにプリエンプション要求情報が設定され、且つ、現在
周期起床プロセスの実行中である場合には、当該プリエ
ンプション要求情報の設定された緊急プロセスをレディ
キューの先頭に保持させるようにしたため、通常は汎用
であるオペレーティングシステム側を修正することな
く、しかも実行待ちの周期起床プロセスがあっても緊急
処理を要求された緊急プロセスを迅速に実行することが
できる。
【0126】また、次の発明では、各周期起床プロセス
にはプリエンプション関数が設定され、CPUリソース
は、周期起床プロセスの実行の際、プリエンプション関
数を実行した場合には、プリエンプション管理テーブル
を参照して緊急プロセスにプリエンプション要求情報が
設定されているか否かを判断し、緊急プロセスにプリエ
ンプション要求情報が設定されている場合には、現在実
行中の周期起床プロセスの実行を中断するようにしたた
め、通常は汎用であるオペレーティングシステム側を修
正することなく、しかも現在実行中の周期起床プロセス
があっても、その実行を中断して緊急処理を要求された
緊急プロセスを実行することができる。
にはプリエンプション関数が設定され、CPUリソース
は、周期起床プロセスの実行の際、プリエンプション関
数を実行した場合には、プリエンプション管理テーブル
を参照して緊急プロセスにプリエンプション要求情報が
設定されているか否かを判断し、緊急プロセスにプリエ
ンプション要求情報が設定されている場合には、現在実
行中の周期起床プロセスの実行を中断するようにしたた
め、通常は汎用であるオペレーティングシステム側を修
正することなく、しかも現在実行中の周期起床プロセス
があっても、その実行を中断して緊急処理を要求された
緊急プロセスを実行することができる。
【0127】また、次の発明では、周期割込みがある度
にプリエンプション管理テーブルを参照して緊急プロセ
スにプリエンプション要求情報が設定されているか否か
を判断すると共に、現在周期起床プロセスが実行中であ
るか否かを判断し、緊急プロセスにプリエンプション要
求情報が設定され、且つ、現在周期起床プロセスの実行
中である場合には、当該実行中の周期起床プロセスの実
行を中断させ、プリエンプション要求情報の設定された
緊急プロセスを実行して、プリエンプション要求情報を
取り消し、その後実行を中断した上記周期起床プロセス
の実行を続行するようにしたため、通常は汎用であるオ
ペレーティングシステム側を修正することなく、現在実
行中の周期起床プロセスがあっても、その実行を中断し
て緊急処理を要求された緊急プロセスをその周期割込み
の処理ルーチン内で実行することができる。
にプリエンプション管理テーブルを参照して緊急プロセ
スにプリエンプション要求情報が設定されているか否か
を判断すると共に、現在周期起床プロセスが実行中であ
るか否かを判断し、緊急プロセスにプリエンプション要
求情報が設定され、且つ、現在周期起床プロセスの実行
中である場合には、当該実行中の周期起床プロセスの実
行を中断させ、プリエンプション要求情報の設定された
緊急プロセスを実行して、プリエンプション要求情報を
取り消し、その後実行を中断した上記周期起床プロセス
の実行を続行するようにしたため、通常は汎用であるオ
ペレーティングシステム側を修正することなく、現在実
行中の周期起床プロセスがあっても、その実行を中断し
て緊急処理を要求された緊急プロセスをその周期割込み
の処理ルーチン内で実行することができる。
【0128】また、次の発明によれば、周期割込みがあ
る度にプリエンプション管理テーブルを参照して緊急プ
ロセスにプリエンプション要求情報が設定されているか
否かを判断すると共に、現在周期起床プロセスが実行中
であるか否かを判断し、緊急プロセスにプリエンプショ
ン要求情報が設定され、且つ、現在周期起床プロセスの
実行中である場合には、割込みにより実行を中断された
周期起床プロセスへのリターンアドレスをスタックへ退
避させ、リターンアドレスとして上記プリエンプション
要求情報が設定された緊急プロセスのアドレスを設定す
ると共に、上記プリエンプション要求情報が設定された
緊急プロセスの最後に上記スタックに格納されたリター
ンアドレスを獲得してリターンする命令を記述し、当該
プリエンプション要求情報が設定された緊急プロセスを
実行した後、スタックに退避させたリターンアドレスに
基づいて実行を中断された周期起床プロセスを実行する
ようにしたため、通常は汎用であるオペレーティングシ
ステム側を修正することなく、現在実行中の周期起床プ
ロセスがあっても、その実行を中断して緊急処理を要求
された緊急プロセスを実行することができる。
る度にプリエンプション管理テーブルを参照して緊急プ
ロセスにプリエンプション要求情報が設定されているか
否かを判断すると共に、現在周期起床プロセスが実行中
であるか否かを判断し、緊急プロセスにプリエンプショ
ン要求情報が設定され、且つ、現在周期起床プロセスの
実行中である場合には、割込みにより実行を中断された
周期起床プロセスへのリターンアドレスをスタックへ退
避させ、リターンアドレスとして上記プリエンプション
要求情報が設定された緊急プロセスのアドレスを設定す
ると共に、上記プリエンプション要求情報が設定された
緊急プロセスの最後に上記スタックに格納されたリター
ンアドレスを獲得してリターンする命令を記述し、当該
プリエンプション要求情報が設定された緊急プロセスを
実行した後、スタックに退避させたリターンアドレスに
基づいて実行を中断された周期起床プロセスを実行する
ようにしたため、通常は汎用であるオペレーティングシ
ステム側を修正することなく、現在実行中の周期起床プ
ロセスがあっても、その実行を中断して緊急処理を要求
された緊急プロセスを実行することができる。
【0129】また、次の発明によれば、周期割込みがあ
る度にプリエンプション管理テーブルを参照して緊急プ
ロセスにプリエンプション要求情報が設定されているか
否かを判断すると共に、現在周期起床プロセスが実行中
であるか否かを判断し、緊急プロセスにプリエンプショ
ン要求情報が設定され、且つ、現在周期起床プロセスの
実行中である場合には、割込みにより実行を中断された
周期起床プロセスへのリターンアドレスを上記スタック
へ退避させると共に、そのリターンアドレスの示す周期
起床プロセスの命令をスタックへ退避させ、当該周期起
床プロセスの命令を上記プリエンプション要求情報が設
定された緊急プロセスの先頭アドレスへのジャンプ命令
に書き換えると共に、プリエンプション要求情報が設定
された緊急プロセスの最後にスタックに格納されたリタ
ーンアドレスおよび命令を獲得して実行する命令を記述
して、ジャンプ命令に基づいて当該プリエンプション要
求情報が設定された緊急プロセスを実行した後は、スタ
ックに退避させたリターンアドレスおよびそのリターン
アドレスが示す命令を獲得させてそのリターンアドレス
に基づいて実行を中断された周期起床プロセスを実行す
るようにしたため、通常は汎用であるオペレーティング
システム側を修正することなく、現在実行中の周期起床
プロセスがあっても、その実行を中断して緊急処理を要
求された緊急プロセスを実行することができる。
る度にプリエンプション管理テーブルを参照して緊急プ
ロセスにプリエンプション要求情報が設定されているか
否かを判断すると共に、現在周期起床プロセスが実行中
であるか否かを判断し、緊急プロセスにプリエンプショ
ン要求情報が設定され、且つ、現在周期起床プロセスの
実行中である場合には、割込みにより実行を中断された
周期起床プロセスへのリターンアドレスを上記スタック
へ退避させると共に、そのリターンアドレスの示す周期
起床プロセスの命令をスタックへ退避させ、当該周期起
床プロセスの命令を上記プリエンプション要求情報が設
定された緊急プロセスの先頭アドレスへのジャンプ命令
に書き換えると共に、プリエンプション要求情報が設定
された緊急プロセスの最後にスタックに格納されたリタ
ーンアドレスおよび命令を獲得して実行する命令を記述
して、ジャンプ命令に基づいて当該プリエンプション要
求情報が設定された緊急プロセスを実行した後は、スタ
ックに退避させたリターンアドレスおよびそのリターン
アドレスが示す命令を獲得させてそのリターンアドレス
に基づいて実行を中断された周期起床プロセスを実行す
るようにしたため、通常は汎用であるオペレーティング
システム側を修正することなく、現在実行中の周期起床
プロセスがあっても、その実行を中断して緊急処理を要
求された緊急プロセスを実行することができる。
【0130】また、次の発明では、プリエンプション要
求情報が設定された緊急プロセスには、さらにプリエン
プション処理の優先度を示すプリエンプション優先度が
設定されており、周期割込みがある度にプリエンプショ
ン管理テーブルを参照して緊急プロセスにプリエンプシ
ョン要求情報が設定されているか否かを判断すると共
に、現在周期起床プロセスが実行中であるか否かを判断
し、緊急プロセスにプリエンプション要求情報が設定さ
れており、且つ、現在周期起床プロセスの実行中であっ
た場合には、プリエンプション要求情報の設定された当
該周期起床プロセスのプリエンプション優先度を参照し
て、プリエンプション優先度に応じて緊急プロセスを実
行するようにしたので、通常は汎用であるオペレーティ
ングシステム側を修正することなく、プリエンプション
処理を要求する緊急プロセスに応じたプリエンプション
処理を選択したり、あるいはプリエンプション優先度に
応じて同時にプリエンプション処理を要求してきた緊急
プロセスの実行順序を決定することができる。
求情報が設定された緊急プロセスには、さらにプリエン
プション処理の優先度を示すプリエンプション優先度が
設定されており、周期割込みがある度にプリエンプショ
ン管理テーブルを参照して緊急プロセスにプリエンプシ
ョン要求情報が設定されているか否かを判断すると共
に、現在周期起床プロセスが実行中であるか否かを判断
し、緊急プロセスにプリエンプション要求情報が設定さ
れており、且つ、現在周期起床プロセスの実行中であっ
た場合には、プリエンプション要求情報の設定された当
該周期起床プロセスのプリエンプション優先度を参照し
て、プリエンプション優先度に応じて緊急プロセスを実
行するようにしたので、通常は汎用であるオペレーティ
ングシステム側を修正することなく、プリエンプション
処理を要求する緊急プロセスに応じたプリエンプション
処理を選択したり、あるいはプリエンプション優先度に
応じて同時にプリエンプション処理を要求してきた緊急
プロセスの実行順序を決定することができる。
【図1】 本発明に係るコンピュータ装置の実施の形態
1であるパーソナルコンピュータ(PC)装置の構成で
ある。
1であるパーソナルコンピュータ(PC)装置の構成で
ある。
【図2】 実施の形態1のプリエンプション管理テーブ
ルの内容を示す図である。
ルの内容を示す図である。
【図3】 実施の形態1の第2のスケジューリング手段
によるスケジューリング処理を示すフローチャートであ
る。
によるスケジューリング処理を示すフローチャートであ
る。
【図4】 図3に示すこの実施の形態1のステップ20
00のプリエンプション処理を詳細に示すフローチャー
トである。
00のプリエンプション処理を詳細に示すフローチャー
トである。
【図5】 実施の形態2による各周期起床プロセスのプ
ログラムソースへのプリエンプション関数の組込み方法
の一例を示す図である。
ログラムソースへのプリエンプション関数の組込み方法
の一例を示す図である。
【図6】 プリエンプション関数を実行した場合のCP
Uリソースの処理を示すフローチャートである。
Uリソースの処理を示すフローチャートである。
【図7】 実施の形態3のパーソナルコンピュータ装置
の構成図である。
の構成図である。
【図8】 実施の形態3の第2のスケジューリング手段
によるプリエンプション処理を示すフローチャートであ
る。
によるプリエンプション処理を示すフローチャートであ
る。
【図9】 実施の形態4のパーソナルコンピュータ装置
の構成図である。
の構成図である。
【図10】 実施の形態4の第2のスケジューリング手
段によるプリエンプション処理を示すフローチャートで
ある。
段によるプリエンプション処理を示すフローチャートで
ある。
【図11】 実施の形態5のパーソナルコンピュータ装
置の構成図である。
置の構成図である。
【図12】 実施の形態5の第2のスケジューリング手
段によるプリエンプション処理を示すフローチャートで
ある。
段によるプリエンプション処理を示すフローチャートで
ある。
【図13】 実施の形態6のパーソナルコンピュータ装
置の構成図である。
置の構成図である。
【図14】 実施の形態6のプリエンプション処理手段
によるプリエンプション処理を示すフローチャート。
によるプリエンプション処理を示すフローチャート。
【図15】 実施の形態7のパーソナルコンピュータ装
置の構成図である。
置の構成図である。
【図16】 実施の形態7のプリエンプション管理テー
ブルの内容を示す図である。
ブルの内容を示す図である。
【図17】 実施の形態7の第2のスケジューリング手
段によるスケジューリング処理を示すフローチャートで
ある。
段によるスケジューリング処理を示すフローチャートで
ある。
【図18】 従来のパーソナルコンピュータ装置の構成
図である。
図である。
【図19】 従来の第2スケジューリング手段のスケジ
ューリング処理を示すフローチャートである。
ューリング処理を示すフローチャートである。
1 CPUリソース、2 オペレーティングシステム
(PC−OS)、3a〜3c PCプロセス、4 第1
のスケジューリング手段、5 リアルタイム制御部、6
ドライバ組込み部、51 CPUリソース使用権監視
手段、152,252,352,452,552 第2
のスケジューリング手段、53 周期起床プロセス管理
テーブル、54 レディキュー、55a〜55c,15
5a〜155c 周期起床プロセス、55d 緊急プロ
セス、56,156 プリエンプション管理テーブル、
563 プリエンプション要求フラグ(プリエンプショ
ン要求情報)、564 プリエンプション優先度、57
スタック、58 プリエンプション処理手段。
(PC−OS)、3a〜3c PCプロセス、4 第1
のスケジューリング手段、5 リアルタイム制御部、6
ドライバ組込み部、51 CPUリソース使用権監視
手段、152,252,352,452,552 第2
のスケジューリング手段、53 周期起床プロセス管理
テーブル、54 レディキュー、55a〜55c,15
5a〜155c 周期起床プロセス、55d 緊急プロ
セス、56,156 プリエンプション管理テーブル、
563 プリエンプション要求フラグ(プリエンプショ
ン要求情報)、564 プリエンプション優先度、57
スタック、58 プリエンプション処理手段。
Claims (20)
- 【請求項1】 オペレーティングシステム上で実行され
る通常プロセスと、その通常プロセスを実行するために
CPUリソースの使用をスケジューリングする第1のス
ケジューリング手段と、ドライバ中に組み込まれて所定
の起床周期で起床して実行される周期起床プロセスと、
周期割込みに基づいて所定の起床周期がきた上記周期起
床プロセスを実行するためCPUリソースの使用をスケ
ジューリングする第2のスケジューリング手段と、を有
するコンピュータ装置であって、 プリエンプション処理を要求する緊急プロセスを上記ド
ライバ中に組み込むと共に、上記緊急プロセスがプリエ
ンプション処理を要求しているか否かを示すプリエンプ
ション要求情報の設定されたプリエンプション管理テー
ブルを具備し、 上記第2のスケジューリング手段は、上記周期割込みが
ある度に上記プリエンプション管理テーブルを参照して
上記緊急プロセスにプリエンプション要求情報が設定さ
れているか否かを判断すると共に、現在上記周期起床プ
ロセスが実行中であるか否かを判断し、上記緊急プロセ
スにプリエンプション要求情報が設定され、且つ、現在
周期起床プロセスの実行中でない場合には、当該プリエ
ンプション要求情報の設定された緊急プロセスを実行す
る、ことを特徴とするコンピュータ装置。 - 【請求項2】 緊急プロセスへのプリエンプション要求
情報の設定は、周期割込みとは別の特定デバイスからの
プリエンプション要求割込みによって行われることを特
徴とする請求項1記載のコンピュータ装置。 - 【請求項3】 緊急プロセスへのプリエンプション要求
情報の設定は、その緊急プロセスが周期起床プロセスで
あり、その起床周期が到達して実行可能となる際に、現
在実行中の周期起床プロセスより実行の優先度が高い場
合に行われることを特徴とする請求項1記載のコンピュ
ータ装置。 - 【請求項4】 第2のスケジューリング手段は、さら
に、他の周期起床プロセスの実行により実行待ち状態と
なる周期起床プロセスをレディキューに保持させて現在
実行中の周期起床プロセスの終了後上記レディキュー先
頭の周期起床プロセスから順に実行するようにスケジュ
ーリングすると共に、周期割込みがある度に上記プリエ
ンプション管理テーブルを参照して上記緊急プロセスに
プリエンプション要求情報が設定されているか否かを判
断すると共に、現在上記周期起床プロセスが実行中であ
るか否かを判断し、上記緊急プロセスにプリエンプショ
ン要求情報が設定され、且つ、現在周期起床プロセスの
実行中である場合には、当該プリエンプション要求情報
の設定された上記緊急プロセスを上記レディキューの先
頭に保持させる、ことを特徴とする請求項1〜請求項3
のいずれかに記載のコンピュータ装置。 - 【請求項5】 各周期起床プロセスにはプリエンプショ
ン関数が設定され、 CPUリソースは、周期起床プロセスの実行の際、上記
プリエンプション関数を実行した場合には、プリエンプ
ション管理テーブルを参照して緊急プロセスにプリエン
プション要求情報が設定されているか否かを判断し、緊
急プロセスにプリエンプション要求情報が設定されてい
る場合には、現在実行中の周期起床プロセスの実行を中
断する、ことを特徴とする請求項5記載のコンピュータ
装置。 - 【請求項6】 第2のスケジューリング手段は、周期割
込みがある度にプリエンプション管理テーブルを参照し
て緊急プロセスにプリエンプション要求情報が設定され
ているか否かを判断すると共に、現在上記周期起床プロ
セスが実行中であるか否かを判断し、上記緊急プロセス
にプリエンプション要求情報が設定され、且つ、現在周
期起床プロセスの実行中である場合には、当該実行中の
周期起床プロセスの実行を中断させ、上記プリエンプシ
ョン要求情報の設定された上記緊急プロセスを実行し
て、上記プリエンプション要求情報を取り消し、その後
実行を中断した上記周期起床プロセスの実行を続行す
る、ことを特徴とする請求項1〜請求項3のいずれかに
記載のコンピュータ装置。 - 【請求項7】 さらに、スタックを具備し、 第2のスケジューリング手段は、周期割込みがある度に
プリエンプション管理テーブルを参照して緊急プロセス
にプリエンプション要求情報が設定されているか否かを
判断すると共に、現在上記周期起床プロセスが実行中で
あるか否かを判断し、上記緊急プロセスにプリエンプシ
ョン要求情報が設定され、且つ、現在周期起床プロセス
の実行中である場合には、割込みにより実行を中断され
た周期起床プロセスへのリターンアドレスを上記スタッ
クへ退避させ、リターンアドレスとして上記プリエンプ
ション要求情報が設定された緊急プロセスのアドレスを
設定すると共に、上記プリエンプション要求情報が設定
された緊急プロセスの最後に上記スタックに格納された
リターンアドレスを獲得してリターンする命令を記述
し、当該プリエンプション要求情報が設定された緊急プ
ロセスを実行した後、上記スタックに退避させたリター
ンアドレスに基づいて上記実行を中断された周期起床プ
ロセスを実行させる、ことを特徴とする請求項1〜請求
項3のいずれかに記載のコンピュータ装置。 - 【請求項8】 さらに、スタックを具備し、 第2のスケジューリング手段は、周期割込みがある度に
プリエンプション管理テーブルを参照して緊急プロセス
にプリエンプション要求情報が設定されているか否かを
判断すると共に、現在上記周期起床プロセスが実行中で
あるか否かを判断し、上記緊急プロセスにプリエンプシ
ョン要求情報が設定され、且つ、現在周期起床プロセス
の実行中である場合には、割込みにより実行を中断され
た周期起床プロセスへのリターンアドレスを上記スタッ
クへ退避させると共に、そのリターンアドレスの示す周
期起床プロセスの命令をスタックへ退避させ、当該周期
起床プロセスの命令を上記プリエンプション要求情報が
設定された緊急プロセスの先頭アドレスへのジャンプ命
令に書き換えると共に、上記プリエンプション要求情報
が設定された緊急プロセスの最後に上記スタックに格納
されたリターンアドレスおよび命令を獲得して実行する
命令を記述し、上記ジャンプ命令に基づいて当該プリエ
ンプション要求情報が設定された緊急プロセスを実行し
た後は、上記スタックに退避させた上記リターンアドレ
スおよびそのリターンアドレスが示す命令を獲得させて
そのリターンアドレスに基づいて上記実行を中断された
周期起床プロセスを実行させる、ことを特徴とする請求
項1〜請求項3のいずれかに記載のコンピュータ装置。 - 【請求項9】 オペレーティングシステム上で実行され
る通常プロセスと、その通常プロセスを実行するために
CPUリソースの使用をスケジューリングする第1のス
ケジューリング手段と、ドライバ中に組み込まれて所定
の起床周期で起床して実行される周期起床プロセスと、
周期割込みに基づいて所定の起床周期がきた上記周期起
床プロセスを実行するためCPUリソースの使用をスケ
ジューリングする第2のスケジューリング手段と、を有
するコンピュータ装置であって、 上記ドライバ中に組み込まれたプリエンプション処理を
要求する緊急プロセスと、 上記緊急プロセスがプリエンプション処理を要求してい
るか否かを示すプリエンプション要求情報の設定された
プリエンプション管理テーブルと、 所定周期毎に上記プリエンプション管理テーブルを参照
して上記緊急プロセスにプリエンプション要求情報が設
定されているか否かを判断すると共に、現在周期起床プ
ロセスを実行中であるか否かを判断し、上記緊急プロセ
スにプリエンプション要求情報が設定されており、且
つ、現在周期起床プロセスの実行中でない場合には、当
該プリエンプション要求情報の設定された上記緊急プロ
セスを実行する一方、上記緊急プロセスにプリエンプシ
ョン要求情報が設定され、且つ、現在周期起床プロセス
の実行中である場合には、実行中の周期起床プロセスの
実行を中断して当該プリエンプション要求情報の設定さ
れた上記緊急プロセスを実行させるプリエンプション処
理手段と、を具備することを特徴とするコンピュータ装
置。 - 【請求項10】 プリエンプション要求情報が設定され
た緊急プロセスには、さらにプリエンプション処理の優
先度を示すプリエンプション優先度が設定されており、 第2のスケジューリング手段は、周期割込みがある度に
プリエンプション管理テーブルを参照して上記緊急プロ
セスにプリエンプション要求情報が設定されているか否
かを判断すると共に、現在上記周期起床プロセスが実行
中であるか否かを判断し、上記緊急プロセスにプリエン
プション要求情報が設定されており、且つ、現在周期起
床プロセスの実行中であった場合には、プリエンプショ
ン要求情報の設定された当該周期起床プロセスの上記プ
リエンプション優先度を参照して、上記プリエンプショ
ン優先度に応じて上記緊急プロセスを実行する、ことを
特徴とする請求項1〜請求項3のいずれかに記載のコン
ピュータ装置。 - 【請求項11】 オペレーティングシステム上で実行さ
れる通常プロセスと、その通常プロセスを実行するため
にCPUリソースの使用をスケジューリングする第1の
スケジューリング手段と、ドライバ中に組み込まれて所
定の起床周期で起床して実行される周期起床プロセス
と、周期割込みに基づいて所定の起床周期がきた上記周
期起床プロセスを実行するためCPUリソースの使用を
スケジューリングする第2のスケジューリング手段と、
を有するコンピュータ装置における緊急プロセスのプリ
エンプション方法であって、 プリエンプション処理を要求する緊急プロセスを上記ド
ライバ中に組み込むと共に、上記緊急プロセスがプリエ
ンプション処理を要求しているか否かを示すプリエンプ
ション要求情報を設定し、上記周期割込みがある度に上
記緊急プロセスにプリエンプション要求情報が設定され
ているか否かを判断すると共に、現在上記周期起床プロ
セスが実行中であるか否かを判断し、上記緊急プロセス
にプリエンプション要求情報が設定され、且つ、現在周
期起床プロセスの実行中でない場合には、当該プリエン
プション要求情報の設定された緊急プロセスを実行す
る、ことを特徴とするコンピュータ装置における緊急プ
ロセスのプリエンプション方法。 - 【請求項12】 緊急プロセスへのプリエンプション要
求情報の設定は、周期割込みとは別の特定デバイスから
のプリエンプション要求割込みによって行われることを
特徴とする請求項11記載のコンピュータ装置における
緊急プロセスのプリエンプション方法。 - 【請求項13】 緊急プロセスへのプリエンプション要
求情報の設定は、その緊急プロセスが周期起床プロセス
であり、その起床周期が到達して実行可能となる際に、
現在実行中の周期起床プロセスより実行の優先度が高い
場合に行われることを特徴とする請求項11記載のコン
ピュータ装置における緊急プロセスのプリエンプション
方法。 - 【請求項14】 さらに、他の周期起床プロセスの実行
により実行待ち状態となる周期起床プロセスをレディキ
ューに保持させて現在実行中の周期起床プロセスの終了
後上記レディキュー先頭の周期起床プロセスから順に実
行するようにスケジューリングすると共に、周期割込み
がある度に上記プリエンプション管理テーブルを参照し
て上記緊急プロセスにプリエンプション要求情報が設定
されているか否かを判断すると共に、現在上記周期起床
プロセスが実行中であるか否かを判断し、上記緊急プロ
セスにプリエンプション要求情報が設定され、且つ、現
在周期起床プロセスの実行中である場合には、当該プリ
エンプション要求情報の設定された上記緊急プロセスを
上記レディキューの先頭に保持させる、ことを特徴とす
る請求項11〜請求項13のいずれかに記載のコンピュ
ータ装置における緊急プロセスのプリエンプション方
法。 - 【請求項15】 各周期起床プロセスにはプリエンプシ
ョン関数が設定され、 CPUリソースは、周期起床プロセスの実行の際、上記
プリエンプション関数を実行した場合には、プリエンプ
ション管理テーブルを参照して緊急プロセスにプリエン
プション要求情報が設定されているか否かを判断し、緊
急プロセスにプリエンプション要求情報が設定されてい
る場合には、現在実行中の周期起床プロセスの実行を中
断する、ことを特徴とする請求項14記載のコンピュー
タ装置における緊急プロセスのプリエンプション方法。 - 【請求項16】 周期割込みがある度にプリエンプショ
ン管理テーブルを参照して緊急プロセスにプリエンプシ
ョン要求情報が設定されているか否かを判断すると共
に、現在上記周期起床プロセスが実行中であるか否かを
判断し、上記緊急プロセスにプリエンプション要求情報
が設定され、且つ、現在周期起床プロセスの実行中であ
る場合には、当該実行中の周期起床プロセスの実行を中
断させ、上記プリエンプション要求情報の設定された上
記緊急プロセスを実行して、上記プリエンプション要求
情報を取り消し、その後実行を中断した上記周期起床プ
ロセスの実行を続行する、ことを特徴とする請求項11
〜請求項13のいずれかに記載のコンピュータ装置にお
ける緊急プロセスのプリエンプション方法。 - 【請求項17】 周期割込みがある度にプリエンプショ
ン管理テーブルを参照して緊急プロセスにプリエンプシ
ョン要求情報が設定されているか否かを判断すると共
に、現在上記周期起床プロセスが実行中であるか否かを
判断し、上記緊急プロセスにプリエンプション要求情報
が設定され、且つ、現在周期起床プロセスの実行中であ
る場合には、割込みにより実行を中断された周期起床プ
ロセスへのリターンアドレスを上記スタックへ退避さ
せ、リターンアドレスとして上記プリエンプション要求
情報が設定された緊急プロセスのアドレスを設定すると
共に、上記プリエンプション要求情報が設定された緊急
プロセスの最後に上記スタックに格納されたリターンア
ドレスを獲得してリターンする命令を記述し、当該プリ
エンプション要求情報が設定された緊急プロセスを実行
した後、上記スタックに退避させたリターンアドレスに
基づいて上記実行を中断された周期起床プロセスを実行
させる、ことを特徴とする請求項11〜請求項13のい
ずれかに記載のコンピュータ装置における緊急プロセス
のプリエンプション方法。 - 【請求項18】 周期割込みがある度にプリエンプショ
ン管理テーブルを参照して緊急プロセスにプリエンプシ
ョン要求情報が設定されているか否かを判断すると共
に、現在上記周期起床プロセスが実行中であるか否かを
判断し、上記緊急プロセスにプリエンプション要求情報
が設定され、且つ、現在周期起床プロセスの実行中であ
る場合には、割込みにより実行を中断された周期起床プ
ロセスへのリターンアドレスを上記スタックへ退避させ
ると共に、そのリターンアドレスの示す周期起床プロセ
スの命令をスタックへ退避させ、当該周期起床プロセス
の命令を上記プリエンプション要求情報が設定された緊
急プロセスの先頭アドレスへのジャンプ命令に書き換え
ると共に、上記プリエンプション要求情報が設定された
緊急プロセスの最後に上記スタックに格納されたリター
ンアドレスおよび命令を獲得して実行する命令を記述
し、上記ジャンプ命令に基づいて当該プリエンプション
要求情報が設定された緊急プロセスを実行した後は、上
記スタックに退避させた上記リターンアドレスおよびそ
のリターンアドレスが示す命令を獲得させてそのリター
ンアドレスに基づいて上記実行を中断された周期起床プ
ロセスを実行させる、ことを特徴とする請求項11〜請
求項13のいずれかに記載のコンピュータ装置における
緊急プロセスのプリエンプション方法。 - 【請求項19】 オペレーティングシステム上で実行さ
れる通常プロセスと、その通常プロセスを実行するため
にCPUリソースの使用をスケジューリングする第1の
スケジューリング手段と、ドライバ中に組み込まれて所
定の起床周期で起床して実行される周期起床プロセス
と、周期割込みに基づいて所定の起床周期がきた上記周
期起床プロセスを実行するためCPUリソースの使用を
スケジューリングする第2のスケジューリング手段と、
を有するコンピュータ装置における緊急プロセスのプリ
エンプション方法であって、 上記ドライバ中にプリエンプション処理を要求する緊急
プロセスを組込みむと共に、上記緊急プロセスにプリエ
ンプション処理を要求しているか否かを示すプリエンプ
ション要求情報を設定し、所定周期毎に上記緊急プロセ
スにプリエンプション要求情報が設定されているか否か
を判断すると共に、現在周期起床プロセスを実行中であ
るか否かを判断し、上記緊急プロセスにプリエンプショ
ン要求情報が設定されており、且つ、現在周期起床プロ
セスの実行中でない場合には、当該プリエンプション要
求情報の設定された上記緊急プロセスを実行する一方、
上記緊急プロセスにプリエンプション要求情報が設定さ
れ、且つ、現在周期起床プロセスの実行中である場合に
は、実行中の周期起床プロセスの実行を中断して当該プ
リエンプション要求情報の設定された上記緊急プロセス
を実行させる、ことを特徴とするコンピュータ装置にお
ける緊急プロセスのプリエンプション方法。 - 【請求項20】 プリエンプション要求情報が設定され
た緊急プロセスには、さらにプリエンプション処理の優
先度を示すプリエンプション優先度が設定されており、 第2のスケジューリング手段は、周期割込みがある度に
プリエンプション管理テーブルを参照して上記緊急プロ
セスにプリエンプション要求情報が設定されているか否
かを判断すると共に、現在上記周期起床プロセスが実行
中であるか否かを判断し、上記緊急プロセスにプリエン
プション要求情報が設定されており、且つ、現在周期起
床プロセスの実行中であった場合には、プリエンプショ
ン要求情報の設定された当該周期起床プロセスの上記プ
リエンプション優先度を参照して、上記プリエンプショ
ン優先度に応じて上記緊急プロセスを実行する、ことを
特徴とする請求項11〜請求項13のいずれかに記載の
コンピュータ装置における緊急プロセスのプリエンプシ
ョン方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8304994A JPH10143378A (ja) | 1996-11-15 | 1996-11-15 | コンピュータ装置、およびコンピュータ装置における緊急プロセスのプリエンプション方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8304994A JPH10143378A (ja) | 1996-11-15 | 1996-11-15 | コンピュータ装置、およびコンピュータ装置における緊急プロセスのプリエンプション方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH10143378A true JPH10143378A (ja) | 1998-05-29 |
Family
ID=17939805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8304994A Pending JPH10143378A (ja) | 1996-11-15 | 1996-11-15 | コンピュータ装置、およびコンピュータ装置における緊急プロセスのプリエンプション方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH10143378A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10983823B2 (en) | 2017-01-25 | 2021-04-20 | Mitsubishi Electric Corporation | Computer apparatus, task initiation method, and computer readable medium |
-
1996
- 1996-11-15 JP JP8304994A patent/JPH10143378A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10983823B2 (en) | 2017-01-25 | 2021-04-20 | Mitsubishi Electric Corporation | Computer apparatus, task initiation method, and computer readable medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6021425A (en) | System and method for optimizing dispatch latency of tasks in a data processing system | |
US7739685B2 (en) | Decoupling a central processing unit from its tasks | |
JP5809366B2 (ja) | ポータブルコンピューティングデバイスにおいて要求をスケジューリングするための方法およびシステム | |
JP4213572B2 (ja) | 電子機器およびプロセッサ速度制御方法 | |
JPH0954699A (ja) | 計算機のプロセススケジューラ | |
US20110113229A1 (en) | Method for Shortening the Boot Time of a Computer System | |
US20040139306A1 (en) | Partial and start-over threads in embedded real-time kernel | |
US20040098722A1 (en) | System, method, and computer program product for operating-system task management | |
US9122521B2 (en) | Enabling multiple operating systems to run concurrently using barrier task priority | |
JP4523910B2 (ja) | 並列処理装置及び並列処理方法及び並列処理プログラム | |
US9229716B2 (en) | Time-based task priority boost management using boost register values | |
JP2001306341A (ja) | コンピュータシステムおよびコンピュータ読み取り可能な記録媒体 | |
JP6861275B2 (ja) | 車両制御装置 | |
JP2001117786A (ja) | プロセススケジューリング装置およびプロセススケジューリング方法 | |
JP3893136B2 (ja) | 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム | |
JPH10143378A (ja) | コンピュータ装置、およびコンピュータ装置における緊急プロセスのプリエンプション方法 | |
JP2005149312A (ja) | タスク管理システム | |
JP2008225641A (ja) | コンピュータシステム、割り込み制御方法及びプログラム | |
JP2001236236A (ja) | タスク制御装置およびそのタスクスケジューリング方法 | |
JP2019079336A (ja) | 数値制御装置 | |
JPH07141208A (ja) | マルチタスク処理装置 | |
JP2001282560A (ja) | 仮想計算機制御方法及びその実施装置並びにその処理プログラムを記録した記録媒体 | |
JP3005562B1 (ja) | タスク管理装置及びタスクスケジューリング方法 | |
JP2597283B2 (ja) | 割込みにおけるスケジューリング方式 | |
WO2019044226A1 (ja) | アクセス制御装置 |