JPH1196022A - リアルタイム処理計算機 - Google Patents
リアルタイム処理計算機Info
- Publication number
- JPH1196022A JPH1196022A JP25059097A JP25059097A JPH1196022A JP H1196022 A JPH1196022 A JP H1196022A JP 25059097 A JP25059097 A JP 25059097A JP 25059097 A JP25059097 A JP 25059097A JP H1196022 A JPH1196022 A JP H1196022A
- Authority
- JP
- Japan
- Prior art keywords
- real
- interrupt
- time processing
- processing
- interrupt request
- 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)【要約】
【課題】 リアルタイム性を重視していないOSの処理
を実行すると共に、リアルタイム処理に高速に対処でき
るリアルタイム処理計算機を提供する。 【解決手段】 リアルタイム性を重視していないOS
と、リアルタイム処理用プログラムと、上記OSの割り
込みの抑止および該抑止の解除を要求する情報を格納す
る格納手段と、OSに対し出される割り込み要求を保持
するキュー手段と、発生した割り込み要求を受け付ける
と共に、プロセッサの割り込み機構を管理し、上記OS
に対する割り込み要求については保留し、上記リアルタ
イム処理用プログラムに対する割り込み要求については
該リアルタイム処理用プログラムを実行する対処処理を
行い、さらに、上記OSの実行中に、格納手段で実行の
抑止を指定されていないキュー手段内の割り込み要求を
処理する手段とを備える。
を実行すると共に、リアルタイム処理に高速に対処でき
るリアルタイム処理計算機を提供する。 【解決手段】 リアルタイム性を重視していないOS
と、リアルタイム処理用プログラムと、上記OSの割り
込みの抑止および該抑止の解除を要求する情報を格納す
る格納手段と、OSに対し出される割り込み要求を保持
するキュー手段と、発生した割り込み要求を受け付ける
と共に、プロセッサの割り込み機構を管理し、上記OS
に対する割り込み要求については保留し、上記リアルタ
イム処理用プログラムに対する割り込み要求については
該リアルタイム処理用プログラムを実行する対処処理を
行い、さらに、上記OSの実行中に、格納手段で実行の
抑止を指定されていないキュー手段内の割り込み要求を
処理する手段とを備える。
Description
【0001】
【発明の属する技術分野】本発明は、リアルタイム性を
重視していないOSを実行し、かつ、リアルタイム性を
要求されるリアルタイム処理を実行する計算機に関す
る。
重視していないOSを実行し、かつ、リアルタイム性を
要求されるリアルタイム処理を実行する計算機に関す
る。
【0002】
【従来の技術】計算機では、ある事象が生じたときに、
実行中のプログラムを一時停止し、CPUの処理状態を
一旦退避させて、事象に対応する処理を行うための割り
込み機構を備えている。計算機の処理を管理するオペレ
ーティングシステム(OS)は、事象が起った際に、割
り込みハンドラと呼ばれるプログラムを実行し、割り込
み機構を用いてプロセッサの処理を、事象に対応する処
理に推移させる。事象に対応する処理により、本来の処
理に異常が生じるのを防ぐため、計算機は、割り込みを
抑止する機能も備えている。
実行中のプログラムを一時停止し、CPUの処理状態を
一旦退避させて、事象に対応する処理を行うための割り
込み機構を備えている。計算機の処理を管理するオペレ
ーティングシステム(OS)は、事象が起った際に、割
り込みハンドラと呼ばれるプログラムを実行し、割り込
み機構を用いてプロセッサの処理を、事象に対応する処
理に推移させる。事象に対応する処理により、本来の処
理に異常が生じるのを防ぐため、計算機は、割り込みを
抑止する機能も備えている。
【0003】計算機のOSは、リアルタイム性を重視し
ていないOS(以下、事務処理用OS)と、リアルタイ
ム性を重視しているOS(以下、リアルタイム処理用O
S)とに大別される。事務処理用OSは、ユーザとのイ
ンタフェースが非常に優れており、例えば、ユーザから
機械の制御指示を受付けたり、機械の状態を表示する処
理に適している。また、ユーザとの間の情報の受け渡し
に重点が置かれているため、非同期に起る事象に高速に
応答する必要はない。このため、事務処理用OSの管理
下では、長い期間割り込みが抑止されることがある。
ていないOS(以下、事務処理用OS)と、リアルタイ
ム性を重視しているOS(以下、リアルタイム処理用O
S)とに大別される。事務処理用OSは、ユーザとのイ
ンタフェースが非常に優れており、例えば、ユーザから
機械の制御指示を受付けたり、機械の状態を表示する処
理に適している。また、ユーザとの間の情報の受け渡し
に重点が置かれているため、非同期に起る事象に高速に
応答する必要はない。このため、事務処理用OSの管理
下では、長い期間割り込みが抑止されることがある。
【0004】逆に、リアルタイム処理用OSは、例え
ば、機械からの異常検知情報を受けて、対策の制御処理
を行う等、非同期に起る事象に高速に応答しなければな
らない。このため、リアルタイム処理用OSの管理下で
は、割り込みを抑止する期間を細かく区切ることによ
り、割り込みに対する高速な応答を可能としている。
ば、機械からの異常検知情報を受けて、対策の制御処理
を行う等、非同期に起る事象に高速に応答しなければな
らない。このため、リアルタイム処理用OSの管理下で
は、割り込みを抑止する期間を細かく区切ることによ
り、割り込みに対する高速な応答を可能としている。
【0005】
【発明が解決しようとする課題】上述のように、リアル
タイム性を重視していない事務処理用OSの管理下で
は、プロセッサへの割り込みを抑止する期間が長くな
る。このため、例えば、機械の状態を表示する処理と、
機械の状態の変化に対処するリアルタイム処理とを、事
務処理用OSを有する1つの計算機で行う場合には、事
務処理用OSにより割り込みが長い期間抑止され、リア
ルタイム処理の遅延が許容範囲を超えるという問題が生
じる。
タイム性を重視していない事務処理用OSの管理下で
は、プロセッサへの割り込みを抑止する期間が長くな
る。このため、例えば、機械の状態を表示する処理と、
機械の状態の変化に対処するリアルタイム処理とを、事
務処理用OSを有する1つの計算機で行う場合には、事
務処理用OSにより割り込みが長い期間抑止され、リア
ルタイム処理の遅延が許容範囲を超えるという問題が生
じる。
【0006】そこで、本発明は、リアルタイム性を重視
していないオペレーティングシステムの処理を実行する
と共に、リアルタイム処理に高速に対処できるリアルタ
イム処理計算機を提供することを目的とする。
していないオペレーティングシステムの処理を実行する
と共に、リアルタイム処理に高速に対処できるリアルタ
イム処理計算機を提供することを目的とする。
【0007】
【課題を解決するための手段】上記目的を達成するた
め、本発明は、リアルタイム性を重視していない、少な
くとも1つの割り込みハンドラ手段を有するOS(オペ
レーティングシステム)と、少なくとも1つのリアルタ
イム処理用プログラムと、割り込み機構を有するプロセ
ッサとを備えるリアルタイム処理計算機において、前記
OSが割り込みの抑止および該抑止の解除を要求したこ
とに応じて、該割り込みの抑止および解除を指定する情
報が格納される格納手段と、前記OSに対し出される割
り込み要求の情報が格納されるキュー手段と、発生した
割り込み要求を受け付けると共に、前記プロセッサの割
り込み機構を制御し、前記OSに対する割り込み要求に
ついては前記キュー手段に格納して保留し、リアルタイ
ム処理用プログラムに対する割り込み要求については該
リアルタイム処理用プログラムを実行する対処処理を行
い、さらに、前記OSの実行中に、前記情報保持手段で
実行の抑止を指定されていない、前記キュー手段に格納
されている割り込み要求を、該OSの対応する割り込み
ハンドラ手段に処理させる主割り込みハンドラ手段とを
備えることを特徴とするリアルタイム処理計算機を提供
する。
め、本発明は、リアルタイム性を重視していない、少な
くとも1つの割り込みハンドラ手段を有するOS(オペ
レーティングシステム)と、少なくとも1つのリアルタ
イム処理用プログラムと、割り込み機構を有するプロセ
ッサとを備えるリアルタイム処理計算機において、前記
OSが割り込みの抑止および該抑止の解除を要求したこ
とに応じて、該割り込みの抑止および解除を指定する情
報が格納される格納手段と、前記OSに対し出される割
り込み要求の情報が格納されるキュー手段と、発生した
割り込み要求を受け付けると共に、前記プロセッサの割
り込み機構を制御し、前記OSに対する割り込み要求に
ついては前記キュー手段に格納して保留し、リアルタイ
ム処理用プログラムに対する割り込み要求については該
リアルタイム処理用プログラムを実行する対処処理を行
い、さらに、前記OSの実行中に、前記情報保持手段で
実行の抑止を指定されていない、前記キュー手段に格納
されている割り込み要求を、該OSの対応する割り込み
ハンドラ手段に処理させる主割り込みハンドラ手段とを
備えることを特徴とするリアルタイム処理計算機を提供
する。
【0008】
【発明の実施の形態】本発明の実施形態に係るリアルタ
イム処理計算機は、割り込みを抑止する期間が長い事務
処理用OSと、リアルタイム処理用OSと、これら2つ
のOSに共用されるハードウェア依存部とを備る(図8
参照)。また、本実施形態の計算機では、事務処理用O
Sに対し出される割り込み要求をソフトウェア的に管理
する機能をハードウェア依存部に設けることで、事務処
理用OSの処理を行うと共に、リアルタイム処理に高速
に対処できるようにしている。
イム処理計算機は、割り込みを抑止する期間が長い事務
処理用OSと、リアルタイム処理用OSと、これら2つ
のOSに共用されるハードウェア依存部とを備る(図8
参照)。また、本実施形態の計算機では、事務処理用O
Sに対し出される割り込み要求をソフトウェア的に管理
する機能をハードウェア依存部に設けることで、事務処
理用OSの処理を行うと共に、リアルタイム処理に高速
に対処できるようにしている。
【0009】図2は、本実施形態に係るリアルタイム処
理計算機のブロック図である。
理計算機のブロック図である。
【0010】図示のように、リアルタイム処理計算機
は、CPU21、メモリ22、バス23、ディスクコントロー
ラ(CNT)24、ディスク装置25、および、入出力部
(PIO)26を有する。また、このリアルタイム処理計
算機は、キーボードやディスプレイ等のユーザインタフ
ェース部(図示略)も備える。
は、CPU21、メモリ22、バス23、ディスクコントロー
ラ(CNT)24、ディスク装置25、および、入出力部
(PIO)26を有する。また、このリアルタイム処理計
算機は、キーボードやディスプレイ等のユーザインタフ
ェース部(図示略)も備える。
【0011】バス23は、CPU21、メモリ22、ディスク
コントローラ24、および、入出力部26に接続され、これ
らの間での制御情報やデータの転送に共用される。CP
U21は、メモリ22に格納されているプログラムを実行
し、実行時のデータをメモリ22に格納する。また、C
PU21は、ディスクコントローラ24にアクセスして、
ディスク装置25でのデータの読み・書きを行うことがで
きる。ディスク装置25でのデータの読み・書きが終了し
た際、ディスクコントローラ24はCPU21に割り込み要
求を出す。入出力部26は、リアルタイム制御が必要な外
部機器のインタフェースとして機能する。外部機器には
入力線261および出力線262を介して接続され、入力線26
1からデータを受けると、入出力部26は、CPU21に割
り込み要求を出す。
コントローラ24、および、入出力部26に接続され、これ
らの間での制御情報やデータの転送に共用される。CP
U21は、メモリ22に格納されているプログラムを実行
し、実行時のデータをメモリ22に格納する。また、C
PU21は、ディスクコントローラ24にアクセスして、
ディスク装置25でのデータの読み・書きを行うことがで
きる。ディスク装置25でのデータの読み・書きが終了し
た際、ディスクコントローラ24はCPU21に割り込み要
求を出す。入出力部26は、リアルタイム制御が必要な外
部機器のインタフェースとして機能する。外部機器には
入力線261および出力線262を介して接続され、入力線26
1からデータを受けると、入出力部26は、CPU21に割
り込み要求を出す。
【0012】図3に、CPU21のブロック構成を示す。
図示のように、CPU21は、演算器211、汎用レジスタ
(GR)212、ステータスレジスタ(SR)213、ベクタ
レジスタ(VR)214、割り込み要求レジスタ(IRQ
R)215、割り込みコントローラ216、プログラムカウン
タ(PC)217、および、タイマ218を有する。ここで、
CPU21に接続するバス23には、アドレスバス231、デ
ータバス232、割り込みライン233が含まれる。割り込み
ライン233は、割り込み要求を個別に通知する複数の割
り込み線により構成されている。
図示のように、CPU21は、演算器211、汎用レジスタ
(GR)212、ステータスレジスタ(SR)213、ベクタ
レジスタ(VR)214、割り込み要求レジスタ(IRQ
R)215、割り込みコントローラ216、プログラムカウン
タ(PC)217、および、タイマ218を有する。ここで、
CPU21に接続するバス23には、アドレスバス231、デ
ータバス232、割り込みライン233が含まれる。割り込み
ライン233は、割り込み要求を個別に通知する複数の割
り込み線により構成されている。
【0013】プログラムカウンタ217には、次に実行す
る命令の、メモリ22における格納位置を示すアドレスが
設定される。CPU21は、このアドレスをアドレスバス
231に出力して、メモリ22内の命令をデータバス232を介
して取込む。取込んだ命令は演算器211により実行さ
れ、この実行の際のデータは汎用レジスタ212に格納さ
れる。
る命令の、メモリ22における格納位置を示すアドレスが
設定される。CPU21は、このアドレスをアドレスバス
231に出力して、メモリ22内の命令をデータバス232を介
して取込む。取込んだ命令は演算器211により実行さ
れ、この実行の際のデータは汎用レジスタ212に格納さ
れる。
【0014】CPU21の処理状態を表すステータスレジ
スタ213は、割り込みを抑止(マスク)する働きを持つ
マスクビットを含み、演算器211により読み・書きがな
される。このマスクビットにより抑止された割り込み
は、抑止を解除されるまで処理を保留される。
スタ213は、割り込みを抑止(マスク)する働きを持つ
マスクビットを含み、演算器211により読み・書きがな
される。このマスクビットにより抑止された割り込み
は、抑止を解除されるまで処理を保留される。
【0015】ベクタレジスタ214には、メモリ22内のベ
クタテーブルの格納位置を示すアドレスが格納される。
割り込み要求の管理を行う割り込みコントローラ216
は、割り込みライン233を介して割り込み要求が送られ
ると、その割り込みの種類を割り込み要求レジスタ215
に書き込むと共に、対応する割り込み処理プログラムの
アドレスをベクタテーブルで検索して、プログラムカウ
ンタ217に設定する。
クタテーブルの格納位置を示すアドレスが格納される。
割り込み要求の管理を行う割り込みコントローラ216
は、割り込みライン233を介して割り込み要求が送られ
ると、その割り込みの種類を割り込み要求レジスタ215
に書き込むと共に、対応する割り込み処理プログラムの
アドレスをベクタテーブルで検索して、プログラムカウ
ンタ217に設定する。
【0016】割り込み要求レジスタ215は、図4に示す
ように、レベル1〜レベル3の割り込みが入ったときに
それぞれ1値になるビット2151〜2153を有する。例え
ば、レベル1の割り込み要求が送られると、割り込みコ
ントローラ216は、割り込み要求レジスタ215のビット21
51に1値を設定する。
ように、レベル1〜レベル3の割り込みが入ったときに
それぞれ1値になるビット2151〜2153を有する。例え
ば、レベル1の割り込み要求が送られると、割り込みコ
ントローラ216は、割り込み要求レジスタ215のビット21
51に1値を設定する。
【0017】ステータスレジスタ213は、図5に示すよ
うに、マスクビット2131〜2132を有する。このマスクビ
ット2131〜2132は、二進数で4つの割り込み要求レベル
を表す。このビット2131〜2132が表すレベル以下の割り
込み要求は保留される。割り込み要求が入ると、割り込
みコントローラ216は、まず、その割り込みのレベルを
ステータスレジスタ213のマスクビット2131〜2132に設
定する処理を行う。
うに、マスクビット2131〜2132を有する。このマスクビ
ット2131〜2132は、二進数で4つの割り込み要求レベル
を表す。このビット2131〜2132が表すレベル以下の割り
込み要求は保留される。割り込み要求が入ると、割り込
みコントローラ216は、まず、その割り込みのレベルを
ステータスレジスタ213のマスクビット2131〜2132に設
定する処理を行う。
【0018】タイマ218は、設定された時間間隔で、割
り込みコントローラ216に割り込み要求を出す。タイマ2
18の出す割り込み要求は、レベル3としている。また、
タイマ218は、2つのOSにより個別に利用される。
り込みコントローラ216に割り込み要求を出す。タイマ2
18の出す割り込み要求は、レベル3としている。また、
タイマ218は、2つのOSにより個別に利用される。
【0019】図6に、入出力部26の回路構成を示す。図
示のように、入出力部26は、ラッチ263および266と、オ
ア回路264と、デコーダ265とを有する。リアルタイム制
御が必要な外部機器は、自装置の状態を示すデータを複
数の入力線261を介して入出力部26に通知する。この入
力線261のデータは、ラッチ263に格納され、CPU21に
読み出される。オア回路264は、複数の入力線261のデー
タの論理和を求め、割り込みライン233を構成するレベ
ル2の割り込み線に演算結果を出力する。これにより、
入力線261のいずれかが1値になると、CPU21にはレ
ベル2の割り込み要求が出されることになる。デコーダ2
65は、アドレスバス231に出力さたアドレスをデコード
することで、CPU21のアクセス対象のラッチ263また
は266を選択する。CPU21は、アドレスバス231でアド
レスを指定して、入力線261の入力データをラッチ263か
らデータバス232を介して取り込むことができる。同様
に、アドレスを指定して、データバス232を介してラッ
チ266にデータを設定することで、出力線262を介して外
部機器に指示を与えることができる。
示のように、入出力部26は、ラッチ263および266と、オ
ア回路264と、デコーダ265とを有する。リアルタイム制
御が必要な外部機器は、自装置の状態を示すデータを複
数の入力線261を介して入出力部26に通知する。この入
力線261のデータは、ラッチ263に格納され、CPU21に
読み出される。オア回路264は、複数の入力線261のデー
タの論理和を求め、割り込みライン233を構成するレベ
ル2の割り込み線に演算結果を出力する。これにより、
入力線261のいずれかが1値になると、CPU21にはレ
ベル2の割り込み要求が出されることになる。デコーダ2
65は、アドレスバス231に出力さたアドレスをデコード
することで、CPU21のアクセス対象のラッチ263また
は266を選択する。CPU21は、アドレスバス231でアド
レスを指定して、入力線261の入力データをラッチ263か
らデータバス232を介して取り込むことができる。同様
に、アドレスを指定して、データバス232を介してラッ
チ266にデータを設定することで、出力線262を介して外
部機器に指示を与えることができる。
【0020】図7に、ディスクコントローラ24の構成を
示す。ディスクコントローラ24は、デコーダ241、セク
タレジスタ242、および、データバッファ243により構成
される。デコーダ241は、アドレスバス231に出力された
アドレスをデコードすることで、CPU21のアクセス対
象のセクタレジスタ242またはデータバッファ243を選択
する。CPU21は、ディスク装置25での書込みを行う場
合、アクセス対象のセクタのアドレスをセクタレジスタ
242に設定すると共に、データレジスタ243に書込データ
を設定する。これらの設定データはセクタ指定線245お
よびデータ線246を介してディスク装置25に送られて、
書込みがなされる。データを読み出す場合には、CPU
21は、セクタのアドレスをセクタレジスタ242に設定し
た後、読み出し終了の割り込みを待って、データレジス
タ243からデータを読み出す。ディスク装置25でのデー
タの読み・書きが終了すると、ディスク装置25からアク
セス終了通知線244に信号が出される。アクセス終了通
知線244は、割り込みライン233のレベル1の割り込み線
に接続されており、アクセス終了時にレベル1の割り込
み要求がCPU21に出される。
示す。ディスクコントローラ24は、デコーダ241、セク
タレジスタ242、および、データバッファ243により構成
される。デコーダ241は、アドレスバス231に出力された
アドレスをデコードすることで、CPU21のアクセス対
象のセクタレジスタ242またはデータバッファ243を選択
する。CPU21は、ディスク装置25での書込みを行う場
合、アクセス対象のセクタのアドレスをセクタレジスタ
242に設定すると共に、データレジスタ243に書込データ
を設定する。これらの設定データはセクタ指定線245お
よびデータ線246を介してディスク装置25に送られて、
書込みがなされる。データを読み出す場合には、CPU
21は、セクタのアドレスをセクタレジスタ242に設定し
た後、読み出し終了の割り込みを待って、データレジス
タ243からデータを読み出す。ディスク装置25でのデー
タの読み・書きが終了すると、ディスク装置25からアク
セス終了通知線244に信号が出される。アクセス終了通
知線244は、割り込みライン233のレベル1の割り込み線
に接続されており、アクセス終了時にレベル1の割り込
み要求がCPU21に出される。
【0021】図8は、メモリ22の記憶領域の構成を示す
図である。
図である。
【0022】メモリ22の記憶領域には、TS−OS部3
1、RT−OS部32、および、ハードウェア依存部33が
形成される。TS−OS部31には、リアルタイム性を考
慮していない事務処理用OSのプログラムおよびデータ
が格納される。RT−OS部32には、リアルタイム処理
用OSのプログラムおよびデータが格納される。これら
2つのOSにより、本計算機の処理は管理される。ハー
ドウェア依存部33には、OSの機能の内、ハードウェア
に依存する部分のプログラムおよびデータが格納されて
いる。なお、各部31〜33のプログラム(OSを含む)
は、記録媒体に格納され、メモリ22上にロードされる。
1、RT−OS部32、および、ハードウェア依存部33が
形成される。TS−OS部31には、リアルタイム性を考
慮していない事務処理用OSのプログラムおよびデータ
が格納される。RT−OS部32には、リアルタイム処理
用OSのプログラムおよびデータが格納される。これら
2つのOSにより、本計算機の処理は管理される。ハー
ドウェア依存部33には、OSの機能の内、ハードウェア
に依存する部分のプログラムおよびデータが格納されて
いる。なお、各部31〜33のプログラム(OSを含む)
は、記録媒体に格納され、メモリ22上にロードされる。
【0023】近年、OSの多くは、異なる計算機間の移
植性を向上させるため、ハードウェア依存部を独立させ
た構成になっている。このため、TS−OS部31に格納
する事務処理用OSのプログラムとしては、一般的な事
務処理用OSのプログラムをそのまま流用することがで
きる。
植性を向上させるため、ハードウェア依存部を独立させ
た構成になっている。このため、TS−OS部31に格納
する事務処理用OSのプログラムとしては、一般的な事
務処理用OSのプログラムをそのまま流用することがで
きる。
【0024】TS−OS部31は、TS−OSのプログラ
ム311と、ディスク装置25から読み出したデータが格納
されるバッファ3131〜3132が接続されるバッファキュー
312とを有する。
ム311と、ディスク装置25から読み出したデータが格納
されるバッファ3131〜3132が接続されるバッファキュー
312とを有する。
【0025】RT−OS部32は、実行可能状態にあるス
レッドのスレッドテーブル3261〜3262がつながるランキ
ュー321と、イベント待ちでブロックしているスレッド
のスレッドテーブル3263〜3264がつながるスリープキュ
ー322と、リアルタイム処理用OSのリスケジューリン
グの要否が設定されるリスケジューリングフラグ323
と、ハードウェア依存部33の割り込みハンドラから呼出
されるリアルタイム処理用OSの割り込みハンドラのア
ドレスが設定される第2ハンドラアドレス324と、リア
ルタイム処理用OSのプログラムであるリアルタイムO
Sプログラム325と、スレッドテーブル3261〜3264のス
レッドが使用するスタック領域であるカーネルスタック
3271〜3274とを有する。リアルタイムOSプログラム32
5には、割り込みに対応する複数のリアルタイム処理プ
ログラムが含まれる。リアルタイム処理プログラムは、
例えば、入力線261より取り込んだデータを用いて演算
し、演算結果を出力線262に出力するような処理であ
る。
レッドのスレッドテーブル3261〜3262がつながるランキ
ュー321と、イベント待ちでブロックしているスレッド
のスレッドテーブル3263〜3264がつながるスリープキュ
ー322と、リアルタイム処理用OSのリスケジューリン
グの要否が設定されるリスケジューリングフラグ323
と、ハードウェア依存部33の割り込みハンドラから呼出
されるリアルタイム処理用OSの割り込みハンドラのア
ドレスが設定される第2ハンドラアドレス324と、リア
ルタイム処理用OSのプログラムであるリアルタイムO
Sプログラム325と、スレッドテーブル3261〜3264のス
レッドが使用するスタック領域であるカーネルスタック
3271〜3274とを有する。リアルタイムOSプログラム32
5には、割り込みに対応する複数のリアルタイム処理プ
ログラムが含まれる。リアルタイム処理プログラムは、
例えば、入力線261より取り込んだデータを用いて演算
し、演算結果を出力線262に出力するような処理であ
る。
【0026】図10に、スレッドテーブル3261〜3264の
構成を示す。各スレッドテーブル3261〜3264には、図8
のランキュー321やスリープキュー322に接続するための
リンク用ポインタであるNextポインタ32611と、スレッ
ドを実行する優先度を示す優先度32612と、イベントの
発生待ちのスレッドにおいて、そのイベントの種類を表
すブロックチャネル32613と、スレッドが使用するスタ
ックのアドレスを記憶するスタック32614とが設定され
る。リアルタイム処理用OSは、登録されているスレッ
ドの内、優先度の最も高いスレッドを選択し実行する。
構成を示す。各スレッドテーブル3261〜3264には、図8
のランキュー321やスリープキュー322に接続するための
リンク用ポインタであるNextポインタ32611と、スレッ
ドを実行する優先度を示す優先度32612と、イベントの
発生待ちのスレッドにおいて、そのイベントの種類を表
すブロックチャネル32613と、スレッドが使用するスタ
ックのアドレスを記憶するスタック32614とが設定され
る。リアルタイム処理用OSは、登録されているスレッ
ドの内、優先度の最も高いスレッドを選択し実行する。
【0027】次に、ハードウェア依存部33について説明
する。
する。
【0028】ハードウェア依存部33は、事務処理用OS
31が行う割り込みの抑止を、ソフトウェア的に実施し、
事務処理用OS31への割り込み要求を管理する機能を実
現する。具体的には、ハードウェア依存部33は、現在お
よびそれ以前に実行を中断されたOSの識別情報が設定
されるOS状態スタック331と、割り込みの種類に対応
して処理プログラムのアドレスが設定されている割り込
みテーブル332と、割り込みにより途中で処理をリアル
タイムOS32に移された事務処理用OS31の使用してい
たスタックのアドレスを保持するTSスタックポインタ
333と、事務処理用OS31による割り込み抑止をソフト
ウェア的に実施するための変数であるSIRQL335
と、保留割り込みテーブル3411〜3412がつながる保留キ
ュー334と、タイマー割り込みを2つのOSに割り振る
ために使用する変数336〜339と、スレッドがスイッチす
る時にレジスタの内容を退避する先と回復する先とがそ
れぞれ設定されるポインタ344および342と、割り込みが
入った時にジャンプする先のアドレスが設定されるベク
タテーブル343と、事務処理用OS31とリアルタイム処
理用OS32の両方からアクセスされるデータである共有
データ345と、ハードウェア依存部プログラム340とを有
する。
31が行う割り込みの抑止を、ソフトウェア的に実施し、
事務処理用OS31への割り込み要求を管理する機能を実
現する。具体的には、ハードウェア依存部33は、現在お
よびそれ以前に実行を中断されたOSの識別情報が設定
されるOS状態スタック331と、割り込みの種類に対応
して処理プログラムのアドレスが設定されている割り込
みテーブル332と、割り込みにより途中で処理をリアル
タイムOS32に移された事務処理用OS31の使用してい
たスタックのアドレスを保持するTSスタックポインタ
333と、事務処理用OS31による割り込み抑止をソフト
ウェア的に実施するための変数であるSIRQL335
と、保留割り込みテーブル3411〜3412がつながる保留キ
ュー334と、タイマー割り込みを2つのOSに割り振る
ために使用する変数336〜339と、スレッドがスイッチす
る時にレジスタの内容を退避する先と回復する先とがそ
れぞれ設定されるポインタ344および342と、割り込みが
入った時にジャンプする先のアドレスが設定されるベク
タテーブル343と、事務処理用OS31とリアルタイム処
理用OS32の両方からアクセスされるデータである共有
データ345と、ハードウェア依存部プログラム340とを有
する。
【0029】事務処理用OSが割り込み抑止を行う割り
込みレベルは、CPU21のステイタスレジスタ213では
なく、SIRQL335に設定される。ハードウェア依存
部33では、この設定レベル以下の割り込み要求について
は、保留キュー334に設定して、ソフトウェア的に保留
する処理を行う。
込みレベルは、CPU21のステイタスレジスタ213では
なく、SIRQL335に設定される。ハードウェア依存
部33では、この設定レベル以下の割り込み要求について
は、保留キュー334に設定して、ソフトウェア的に保留
する処理を行う。
【0030】OS状態スタック321は、例えば、TS−
OSの実行中に割り込みを受け、処理がリアルタイム処
理用OS32に移行した後に、さらに割り込みが入ってリ
アルタイム処理用OS32の別のプログラムが実行される
ような場合にも、OSの中断の順序を認識できるように
するためのものである。
OSの実行中に割り込みを受け、処理がリアルタイム処
理用OS32に移行した後に、さらに割り込みが入ってリ
アルタイム処理用OS32の別のプログラムが実行される
ような場合にも、OSの中断の順序を認識できるように
するためのものである。
【0031】変数336〜337には、それぞれ、事務処理用
OS31が必要とするタイマー割り込みの周期であるTS
周期、リアルタイム処理用OSが要求するタイマー割り
込み周期であるRT周期が設定される。これらは、1つ
のタイマ218(図3)を、両OSで個別に利用できるよ
うにするためのものである。
OS31が必要とするタイマー割り込みの周期であるTS
周期、リアルタイム処理用OSが要求するタイマー割り
込み周期であるRT周期が設定される。これらは、1つ
のタイマ218(図3)を、両OSで個別に利用できるよ
うにするためのものである。
【0032】割り込みテーブル332には、図9に示すよ
うに、割り込みレベル別(3324〜3326)、OS別(332
2,3323)に、ハンドラプログラムのアドレスが設定され
る。この設定により、例えば、割り込みレベル1の割り
込みが入ると、事務処理用OSにDISK_END関数のアドレ
スが通知される。また、割り込みレベル3の割り込みが
入ると、リアルタイム処理用OSにRTタイマ関数、T
S−OSにTSタイマ関数の実行指示が通知される。
うに、割り込みレベル別(3324〜3326)、OS別(332
2,3323)に、ハンドラプログラムのアドレスが設定され
る。この設定により、例えば、割り込みレベル1の割り
込みが入ると、事務処理用OSにDISK_END関数のアドレ
スが通知される。また、割り込みレベル3の割り込みが
入ると、リアルタイム処理用OSにRTタイマ関数、T
S−OSにTSタイマ関数の実行指示が通知される。
【0033】各保留割り込みテーブル3411〜3412には、
図11に示すように、保留割り込みテーブルを保留キュ
ー334に接続するためのリンクポインタであるNextポイ
ンタ34111と、保留されている割り込みのレベルを記憶
するIRQL34112が設定される。
図11に示すように、保留割り込みテーブルを保留キュ
ー334に接続するためのリンクポインタであるNextポイ
ンタ34111と、保留されている割り込みのレベルを記憶
するIRQL34112が設定される。
【0034】次に、TS−OS部31、RT−OS部32、
ハードウェア依存部33の各プログラムについて説明す
る。
ハードウェア依存部33の各プログラムについて説明す
る。
【0035】TS−OS部31のプログラム311には、レ
ベル1の割り込み要求に応じて、ディスクコントローラ
24からデータを取込むためのDISK_END関数(図20)
と、取込んだデータを読み出すためのバッファリード関
数(図21)とが含まれる。
ベル1の割り込み要求に応じて、ディスクコントローラ
24からデータを取込むためのDISK_END関数(図20)
と、取込んだデータを読み出すためのバッファリード関
数(図21)とが含まれる。
【0036】RT−OS部32のプログラム325には、リ
アルタイム処理用OS宛ての割り込みを処理するための
RTハンドラ(図15)と、2つのスレッド間のコンテ
キストの切り替えを行うためのスイッチ関数(図16)
と、割り込みの発生を待って、ブロックしていたスレッ
ドを実行可能状態とするためのRT第2ハンドラ(図1
7)と、スレッドの実行を管理するためのブロック関数
(図19)とが含まれる。
アルタイム処理用OS宛ての割り込みを処理するための
RTハンドラ(図15)と、2つのスレッド間のコンテ
キストの切り替えを行うためのスイッチ関数(図16)
と、割り込みの発生を待って、ブロックしていたスレッ
ドを実行可能状態とするためのRT第2ハンドラ(図1
7)と、スレッドの実行を管理するためのブロック関数
(図19)とが含まれる。
【0037】ハードウェア依存部33のプログラム340に
は、事務処理用OS31が割り込みを抑止するために呼び
出すRaiseIRQL関数(図12)と、事務処理用OS31が
割り込みの抑止を解除するために呼び出すLowerIRQL関
数(図13)と、保留されいる割り込み要求を処理する
ための保留INT関数(図14)と、タイマ割り込み以
外の割り込みを受けた時に最初に実行される割り込みハ
ンドラ(図1)と、事務処理用OS宛ての割り込み要求
を保留するための保留関数(図18)と、タイマに関す
る処理を行う関数(図22〜図26)とが含まれる。
は、事務処理用OS31が割り込みを抑止するために呼び
出すRaiseIRQL関数(図12)と、事務処理用OS31が
割り込みの抑止を解除するために呼び出すLowerIRQL関
数(図13)と、保留されいる割り込み要求を処理する
ための保留INT関数(図14)と、タイマ割り込み以
外の割り込みを受けた時に最初に実行される割り込みハ
ンドラ(図1)と、事務処理用OS宛ての割り込み要求
を保留するための保留関数(図18)と、タイマに関す
る処理を行う関数(図22〜図26)とが含まれる。
【0038】事務処理用OS31から呼び出されたRaiseI
RQL関数は、引数として割り込みレベルを受け取り、図
12に示すように、PU21のステータスレジスタ213の
マスクビットではなく、メモリ22中のSIRQL335
に、受け取った割り込みレベルを設定する(121)。以
降、この設定レベル以下のレベルの割り込み要求は、事
務処理用OSについてのみ保留されることになる。
RQL関数は、引数として割り込みレベルを受け取り、図
12に示すように、PU21のステータスレジスタ213の
マスクビットではなく、メモリ22中のSIRQL335
に、受け取った割り込みレベルを設定する(121)。以
降、この設定レベル以下のレベルの割り込み要求は、事
務処理用OSについてのみ保留されることになる。
【0039】事務処理用OSから呼び出されたLowerIRQ
L関数13は、引数として割り込みレベルを受け取り、図
13に示すように、ステータスレジスタ213のマスクビ
ットではなく、メモリ22中のSIRQL335に、受け取
った割り込みレベルを設定する(131)。そして、保留さ
れている割り込みに対応するための保留INT関数を呼
び出す(14)。
L関数13は、引数として割り込みレベルを受け取り、図
13に示すように、ステータスレジスタ213のマスクビ
ットではなく、メモリ22中のSIRQL335に、受け取
った割り込みレベルを設定する(131)。そして、保留さ
れている割り込みに対応するための保留INT関数を呼
び出す(14)。
【0040】保留INT関数では、図14に示すよう
に、保留キュー334にSIRQL335の設定レベルよりも
高いレベルの割り込み要求の設定された割り込み保留テ
ーブルがあるかどうかを判定し(141)、テーブルがない
場合には復帰する(144)。テーブルがある場合には、そ
の中で最大の割り込みレベルのテーブルを選択する(14
2)。そして、そのレベルについて割り込みテーブル332
に登録されている事務処理用OSのハンドラ関数を呼び
出し(143)、以上の処理を繰り返す。
に、保留キュー334にSIRQL335の設定レベルよりも
高いレベルの割り込み要求の設定された割り込み保留テ
ーブルがあるかどうかを判定し(141)、テーブルがない
場合には復帰する(144)。テーブルがある場合には、そ
の中で最大の割り込みレベルのテーブルを選択する(14
2)。そして、そのレベルについて割り込みテーブル332
に登録されている事務処理用OSのハンドラ関数を呼び
出し(143)、以上の処理を繰り返す。
【0041】図1に、割り込みハンドラの処理フローを
示す。
示す。
【0042】周辺装置から割り込みを受けると、割り込
みハンドラは、まず、現在実行されているプログラムで
使用しているCPU21のレジスタの内容をスタックに退
避させる(102)。そして、割り込みテーブル332で、受け
た割り込み要求のレベルのハンドラがRT−OSについ
て登録されているかどうかを調べる(103)。登録されて
いる場合には、登録されているRTハンドラを呼び出
し、リアルタイム処理用OSの割り込みの処理を行わせ
る(15)。次に、受けた割り込みのレベルのハンドラが事
務処理用OSについて登録されているかを調べる(10
5)。登録されている場合には、OS状態スタック331の
先頭を調べ、割り込みを受けた時にCPU21の処理が
リアルタイム処理用OSの管理下にあったかどうかを判
断する(106)。リアルタイム処理用OSの管理下にあっ
た場合には、受けた割り込みを保留する保留関数を呼び
出す(19)。これにより、リアルタイムOSの実行は、事
務処理用OSの処理によって阻害されないですむ。CP
U21の処理がリアルタイム処理用OSの管理下になか
った場合にも、受けた割り込みのレベルがSIRQL33
5の設定レベル以下であるかどうかを調べ(107)、設定レ
ベル以下である時は保留関数を呼出して割り込みを保留
する(19)。受けた割り込み要求が設定レベルよりも高い
レベルの場合には、その割り込みのレベルをSIRQL
335に設定した後(113)、ステータスレジスタ213の設定
値を元に戻すことで、ハードウェアの割り込み抑止を解
除する(114)。そして、保留INT関数を呼び出して保
留中の割り込みの処理を行う(14)。これにより、ここま
での処理の間により高いレベルの割り込み要求が保留さ
れている場合にも、レベルの高い割り込み要求が優先的
に処理される。そして、上記処理102で退避したレジス
タの設定値を元に戻し(111)、復帰する。
みハンドラは、まず、現在実行されているプログラムで
使用しているCPU21のレジスタの内容をスタックに退
避させる(102)。そして、割り込みテーブル332で、受け
た割り込み要求のレベルのハンドラがRT−OSについ
て登録されているかどうかを調べる(103)。登録されて
いる場合には、登録されているRTハンドラを呼び出
し、リアルタイム処理用OSの割り込みの処理を行わせ
る(15)。次に、受けた割り込みのレベルのハンドラが事
務処理用OSについて登録されているかを調べる(10
5)。登録されている場合には、OS状態スタック331の
先頭を調べ、割り込みを受けた時にCPU21の処理が
リアルタイム処理用OSの管理下にあったかどうかを判
断する(106)。リアルタイム処理用OSの管理下にあっ
た場合には、受けた割り込みを保留する保留関数を呼び
出す(19)。これにより、リアルタイムOSの実行は、事
務処理用OSの処理によって阻害されないですむ。CP
U21の処理がリアルタイム処理用OSの管理下になか
った場合にも、受けた割り込みのレベルがSIRQL33
5の設定レベル以下であるかどうかを調べ(107)、設定レ
ベル以下である時は保留関数を呼出して割り込みを保留
する(19)。受けた割り込み要求が設定レベルよりも高い
レベルの場合には、その割り込みのレベルをSIRQL
335に設定した後(113)、ステータスレジスタ213の設定
値を元に戻すことで、ハードウェアの割り込み抑止を解
除する(114)。そして、保留INT関数を呼び出して保
留中の割り込みの処理を行う(14)。これにより、ここま
での処理の間により高いレベルの割り込み要求が保留さ
れている場合にも、レベルの高い割り込み要求が優先的
に処理される。そして、上記処理102で退避したレジス
タの設定値を元に戻し(111)、復帰する。
【0043】保留関数(19)では、図18に示すように、
新規に保留割り込みテーブル3411〜3412のエントリを割
り当て(191)、保留割り込みテーブルのIRQL34112に
割り込みのレベルを設定する(192)。そして、保留割り
込みテーブルを保留キュー334に接続する(19
3)。
新規に保留割り込みテーブル3411〜3412のエントリを割
り当て(191)、保留割り込みテーブルのIRQL34112に
割り込みのレベルを設定する(192)。そして、保留割り
込みテーブルを保留キュー334に接続する(19
3)。
【0044】図15に、RTハンドラの処理フローを示
す。
す。
【0045】割り込みハンドラから呼び出されたRTハ
ンドラは、まず、OS状態スタック331の先頭に、リア
ルタイム処理用OSへの処理の移行を示す1値を追加す
る(151)。そして、受けた割り込みに対応して割り込み
テーブル332に登録されているリアルタイム処理用OS
のハンドラ(RT第2ハンドラ)を呼び出す(152)。そ
して、CPU21のステータスレジスタ213のマスクビッ
トの設定値を”0”に変えて、すべての割り込みを許可
する(153)。次に、リスケジューリングが必要かどうか
をリスケジューリングフラグ323で調べる(154)。これ
は、上記処理152で実行した関数内などで、新たにスレ
ッドが実行可能になっている可能性があるからである。
リスケジューリングの必要がある場合には、割り込みを
受けた時点で処理を管理していたOSをOS状態スタッ
ク331で調べる(155)。このOSは、上記処理151で追加
設定を行っているので、OS状態スタック331の2番目
に設定される情報からわかる。この結果がリアルタイム
処理用OSだった場合には、単にRT−OS部のスレッ
ド同士をスイッチすればよいため、今まで実行していた
スレッドのスタックをレジスタ退避ポインタ344に設定
し(159)、新しく実行するスレッドのスタックをレジス
タ回復ポインタ342に設定する(160)。一方、上記処理15
5の結果が事務処理用OSであった場合には、現在のス
タックポインタの値をTSスタックポインタ333に設定
し(156)、レジスタ退避ポインタ344を現スタックポイン
タに設定し(157)、レジスタ回復ポインタ342をこれから
実行するスレッドのスタックに設定する(158)。次に、
2つのスレッド間のコンテキスト切替えを行うためにス
イッチ関数を呼び出す(17)。そして、OS状態スタック
331の先頭の設定値”1”を抜き出して(161)、割り込み
ハンドラの処理に復帰する。
ンドラは、まず、OS状態スタック331の先頭に、リア
ルタイム処理用OSへの処理の移行を示す1値を追加す
る(151)。そして、受けた割り込みに対応して割り込み
テーブル332に登録されているリアルタイム処理用OS
のハンドラ(RT第2ハンドラ)を呼び出す(152)。そ
して、CPU21のステータスレジスタ213のマスクビッ
トの設定値を”0”に変えて、すべての割り込みを許可
する(153)。次に、リスケジューリングが必要かどうか
をリスケジューリングフラグ323で調べる(154)。これ
は、上記処理152で実行した関数内などで、新たにスレ
ッドが実行可能になっている可能性があるからである。
リスケジューリングの必要がある場合には、割り込みを
受けた時点で処理を管理していたOSをOS状態スタッ
ク331で調べる(155)。このOSは、上記処理151で追加
設定を行っているので、OS状態スタック331の2番目
に設定される情報からわかる。この結果がリアルタイム
処理用OSだった場合には、単にRT−OS部のスレッ
ド同士をスイッチすればよいため、今まで実行していた
スレッドのスタックをレジスタ退避ポインタ344に設定
し(159)、新しく実行するスレッドのスタックをレジス
タ回復ポインタ342に設定する(160)。一方、上記処理15
5の結果が事務処理用OSであった場合には、現在のス
タックポインタの値をTSスタックポインタ333に設定
し(156)、レジスタ退避ポインタ344を現スタックポイン
タに設定し(157)、レジスタ回復ポインタ342をこれから
実行するスレッドのスタックに設定する(158)。次に、
2つのスレッド間のコンテキスト切替えを行うためにス
イッチ関数を呼び出す(17)。そして、OS状態スタック
331の先頭の設定値”1”を抜き出して(161)、割り込み
ハンドラの処理に復帰する。
【0046】スイッチ関数(17)では、図16に示すよう
に、レジスタ退避ポインタ344が指す場所にCPU21の
現在の汎用レジスタ212とプログラムカウンタ217の内容
を退避させ(171)、レジスタ回復ポインタ342が指す場所
から、汎用レジスタ212とプログラムカウンタ217の内容
を回復する(172)。
に、レジスタ退避ポインタ344が指す場所にCPU21の
現在の汎用レジスタ212とプログラムカウンタ217の内容
を退避させ(171)、レジスタ回復ポインタ342が指す場所
から、汎用レジスタ212とプログラムカウンタ217の内容
を回復する(172)。
【0047】RT第2ハンドラ(18)は、図17に示すよ
うに、ブロックチャネル32613が'123'であるスレッドテ
ーブル3263〜3264をスリープキュー322から探し(181)、
そのスレッドテーブルをランキュー321に追加する(18
2)。そして、リスケジューリングが必要となるため、リ
スケジューリングフラグ323をオンに設定する(183)。
うに、ブロックチャネル32613が'123'であるスレッドテ
ーブル3263〜3264をスリープキュー322から探し(181)、
そのスレッドテーブルをランキュー321に追加する(18
2)。そして、リスケジューリングが必要となるため、リ
スケジューリングフラグ323をオンに設定する(183)。
【0048】リアルタイム処理用OSでは、実行中のス
レッドがイベント待ちとなったり、スレッドの処理が終
了した場合に、図19に示すブロック関数を呼び出す。
ブロック関数(40)は、現在実行中のスレッドのスレッド
テーブルをスリープキュー322に設定し(408)、ランキュ
ー322における優先度の最も高いスレッドテーブルを選
択する(401)。ランキュー322にスレッドテーブルがな
い場合は(402)、処理を事務処理用OSに戻すため、実
行中のスレッドのスタックをレジスタ退避ポインタ344
に設定し、レジスタ回復レジスタ342にTSスタックポ
インタ333を設定して(405)、スイッチ関数を呼出す(1
7)。上記処理401でスレッドテーブルがあった場合に
は、そのスレッドにスイッチするため、レジスタ退避ポ
インタ344に実行中のスレッドのスタック、レジスタ回
復ポインタ342に選択したスレッドテーブルのスタック3
2614を設定して(403)、スイッチ関数を呼出す(17)。
レッドがイベント待ちとなったり、スレッドの処理が終
了した場合に、図19に示すブロック関数を呼び出す。
ブロック関数(40)は、現在実行中のスレッドのスレッド
テーブルをスリープキュー322に設定し(408)、ランキュ
ー322における優先度の最も高いスレッドテーブルを選
択する(401)。ランキュー322にスレッドテーブルがな
い場合は(402)、処理を事務処理用OSに戻すため、実
行中のスレッドのスタックをレジスタ退避ポインタ344
に設定し、レジスタ回復レジスタ342にTSスタックポ
インタ333を設定して(405)、スイッチ関数を呼出す(1
7)。上記処理401でスレッドテーブルがあった場合に
は、そのスレッドにスイッチするため、レジスタ退避ポ
インタ344に実行中のスレッドのスタック、レジスタ回
復ポインタ342に選択したスレッドテーブルのスタック3
2614を設定して(403)、スイッチ関数を呼出す(17)。
【0049】図14の保留INT処理で呼び出されるDI
SK_END関数は、図20に示すように、ディスク装置25の
読み出しが終了したことを知らせる割り込みを受ける
と、バッファ3131〜3132を確保し(411)、ディスクコン
トローラ24のデータバッファ243からデータを取り込む
(412)。そして、読み出したデータを格納したバッファ3
131〜3132をバッファキュー312に接続する(413)。
SK_END関数は、図20に示すように、ディスク装置25の
読み出しが終了したことを知らせる割り込みを受ける
と、バッファ3131〜3132を確保し(411)、ディスクコン
トローラ24のデータバッファ243からデータを取り込む
(412)。そして、読み出したデータを格納したバッファ3
131〜3132をバッファキュー312に接続する(413)。
【0050】DISK_END関数の処理が終了すると、バッフ
ァリード処理が実行される。この処理では、図21に示
すように、まず、他の割り込みによりバッファ3131〜31
32の内容か変更されるのを防ぐために、RaiseIRQL関数
を呼び出して他の割り込みを抑止した後(12)、バッファ
3131〜3132をバッファキュー312から切離す(421)。そし
て、LowerIRQL関数を呼び出して割り込みを許可し(1
3)、切離したバッファのデータをリードする(422)。な
お、RaiseIRQL関数12により割り込みが抑止されている
間にも、RT−OS宛の割り込みは処理される。
ァリード処理が実行される。この処理では、図21に示
すように、まず、他の割り込みによりバッファ3131〜31
32の内容か変更されるのを防ぐために、RaiseIRQL関数
を呼び出して他の割り込みを抑止した後(12)、バッファ
3131〜3132をバッファキュー312から切離す(421)。そし
て、LowerIRQL関数を呼び出して割り込みを許可し(1
3)、切離したバッファのデータをリードする(422)。な
お、RaiseIRQL関数12により割り込みが抑止されている
間にも、RT−OS宛の割り込みは処理される。
【0051】ハードウェア依存部のプログラム340に
は、タイマに関する関数として、リアルタイム処理用O
Sがタイマの周期を設定するためのRT周期設定関数
(図22)と、事務処理用OSがタイマの周期を設定す
るためのTS周期設定関数(図23)と、タイマ218か
らの割り込みにより実行されるタイマハンドラ(図2
4)と、TS周期小関数(図25)と、RS周期小関数
(図26)とが含まれる。
は、タイマに関する関数として、リアルタイム処理用O
Sがタイマの周期を設定するためのRT周期設定関数
(図22)と、事務処理用OSがタイマの周期を設定す
るためのTS周期設定関数(図23)と、タイマ218か
らの割り込みにより実行されるタイマハンドラ(図2
4)と、TS周期小関数(図25)と、RS周期小関数
(図26)とが含まれる。
【0052】RT周期設定関数(43)は、図22に示すよ
うに、リアルタイム処理用OSから呼び出されると、ま
ず、図27のタイマ管理用の変数に含まれるRT周期33
7に、指定された周期を設定する(431)。TS周期336と
RT周期337の値を比較し(432)、RT周期が長い場合に
は、残時間338にRT周期337を設定し(433)、TS周期3
36をハードウェアのタイマ218に設定する(434)。RT周
期337がTS周期336以下だった場合は、逆に、TS周期
336を残時間338に設定し(435)、RT周期337をタイマ21
8に設定する(436)。そして、最後に、半端時間437をク
リアする(437)。
うに、リアルタイム処理用OSから呼び出されると、ま
ず、図27のタイマ管理用の変数に含まれるRT周期33
7に、指定された周期を設定する(431)。TS周期336と
RT周期337の値を比較し(432)、RT周期が長い場合に
は、残時間338にRT周期337を設定し(433)、TS周期3
36をハードウェアのタイマ218に設定する(434)。RT周
期337がTS周期336以下だった場合は、逆に、TS周期
336を残時間338に設定し(435)、RT周期337をタイマ21
8に設定する(436)。そして、最後に、半端時間437をク
リアする(437)。
【0053】TS周期設定関数(44)は、図23に示すよ
うに、まず、事務処理用OSから指定された周期を、T
S周期336にに設定する。そして、図22の処理432以降
と同様の処理を行う。
うに、まず、事務処理用OSから指定された周期を、T
S周期336にに設定する。そして、図22の処理432以降
と同様の処理を行う。
【0054】タイマハンドラ(45)は、図24に示すよう
に、起動されると、まず、TS周期336とRT周期337を
比較し(451)、RT周期337の方が長い場合には、TS周
期小関数を実行し(46)、そうでない場合には、RT周期小
関数を実行する(48)。
に、起動されると、まず、TS周期336とRT周期337を
比較し(451)、RT周期337の方が長い場合には、TS周
期小関数を実行し(46)、そうでない場合には、RT周期小
関数を実行する(48)。
【0055】TS周期小関数(46)では、図25に示すよ
うに、まず、半端時間339が0値か調べる(461)。半端時
間339はRT周期が終了した時点でTS周期終了までの
時間である。半端時間339が0値以外のときは、半端時
間339をタイマ218に設定す(462)。このときRT周期は
終了しているので、RTタイマハンドラ関数を呼ぶ(46
3)。そして、残時間338に[RT周期337 − TS周期33
6]の結果を設定する(464)。残時間338は、次にタイマ
割り込みが発生したときにRT周期終了までの時間であ
る。そして、半端時間339を0として(465)、復帰する。
上記処理461で半場時間が0値の場合には、残時間338を
調べ(466)、残時間338が0値の場合は、RT周期が終了
しているのでRTタイマハンドラ関数を実行し(467)、
残時間をRT周期とする(468)。このときTS周期も終
了しているので、TSタイマハンドラ関数を呼ぶ(47
3)。上記処理466で残時間338があるときには、残時間33
8からTS周期を減じる(469)。減じた結果をTS周期と
比較し(470)、短い場合には、半端時間339に[TS周期
336 - 残時間338]の結果を設定し(471)、残時間338を
ハードウェアのタイマ218に設定する(472)。この時もT
S周期は終了しているので、TSタイマハンドラ関数を
呼ぶ(473)。
うに、まず、半端時間339が0値か調べる(461)。半端時
間339はRT周期が終了した時点でTS周期終了までの
時間である。半端時間339が0値以外のときは、半端時
間339をタイマ218に設定す(462)。このときRT周期は
終了しているので、RTタイマハンドラ関数を呼ぶ(46
3)。そして、残時間338に[RT周期337 − TS周期33
6]の結果を設定する(464)。残時間338は、次にタイマ
割り込みが発生したときにRT周期終了までの時間であ
る。そして、半端時間339を0として(465)、復帰する。
上記処理461で半場時間が0値の場合には、残時間338を
調べ(466)、残時間338が0値の場合は、RT周期が終了
しているのでRTタイマハンドラ関数を実行し(467)、
残時間をRT周期とする(468)。このときTS周期も終
了しているので、TSタイマハンドラ関数を呼ぶ(47
3)。上記処理466で残時間338があるときには、残時間33
8からTS周期を減じる(469)。減じた結果をTS周期と
比較し(470)、短い場合には、半端時間339に[TS周期
336 - 残時間338]の結果を設定し(471)、残時間338を
ハードウェアのタイマ218に設定する(472)。この時もT
S周期は終了しているので、TSタイマハンドラ関数を
呼ぶ(473)。
【0056】RT周期小関数は、図26に示すように、
図25の処理において、RT周期とTS周期、RTタイ
マハンドラとTSタイマハンドラをそれぞれ置換えたも
のである。
図25の処理において、RT周期とTS周期、RTタイ
マハンドラとTSタイマハンドラをそれぞれ置換えたも
のである。
【0057】図30は、ハードウェア依存部33の共有デ
ータ345(図8)をアクセスする関数の処理フローであ
る。事務処理用OSおよびリアルタイム処理用OSの両
方で共有されるデータをアクセスするときには、図12
のRaiseIRQL関数12や図13のLowerIRQL関数13では排他
制御ができない。図30の関数は、CPU21のステータ
スレジスタ213のマスクビットに一旦低いレベル”3”
を設定し(501)、共有データのアクセスを行う(502)。そ
して、ステータスレジスタ213のマスクビットに高いレ
ベル”0”を設定して(503)、処理を終了する。これに
より、事務処理用OSおよびリアルタイム処理用OSの
間でデータの受け渡しを行えるようになる。
ータ345(図8)をアクセスする関数の処理フローであ
る。事務処理用OSおよびリアルタイム処理用OSの両
方で共有されるデータをアクセスするときには、図12
のRaiseIRQL関数12や図13のLowerIRQL関数13では排他
制御ができない。図30の関数は、CPU21のステータ
スレジスタ213のマスクビットに一旦低いレベル”3”
を設定し(501)、共有データのアクセスを行う(502)。そ
して、ステータスレジスタ213のマスクビットに高いレ
ベル”0”を設定して(503)、処理を終了する。これに
より、事務処理用OSおよびリアルタイム処理用OSの
間でデータの受け渡しを行えるようになる。
【0058】なお、リアルタイム処理プログラムが、入
れ子状に実行されることのない単純な形態である場合に
は、スレッドの管理が必要とならないため、リアルタイ
ム処理用OSの内のスレッドを管理する部分を計算機の
プログラムから省くことができる。この場合、RTハン
ドラの処理(図15)では、直接、リアルタイム処理プ
ログラムを実行するようにする。
れ子状に実行されることのない単純な形態である場合に
は、スレッドの管理が必要とならないため、リアルタイ
ム処理用OSの内のスレッドを管理する部分を計算機の
プログラムから省くことができる。この場合、RTハン
ドラの処理(図15)では、直接、リアルタイム処理プ
ログラムを実行するようにする。
【0059】以上で説明したリアルタイム処理計算機に
よれば、事務処理用OSにより管理されるアプリケーシ
ョンの処理と並行して、リアルタイム処理用OSにより
管理されるリアルタイム処理プログラムの処理を高速に
実施することができる。
よれば、事務処理用OSにより管理されるアプリケーシ
ョンの処理と並行して、リアルタイム処理用OSにより
管理されるリアルタイム処理プログラムの処理を高速に
実施することができる。
【0060】図40に、リアルタイム処理計算機の使用
するシステムの一例を示す。
するシステムの一例を示す。
【0061】図示するシステムでは、リアルタイム処理
計算機2をボイラー90の制御および状態監視に使用して
いる。爆発等の事故を防ぐため、ボイラ90の制御処理に
はリアルタイム性が要求される。このため、計算機2で
は、リアルタイム処理用OSが、ボイラ90の制御処理を
管理する。また、事務処理用OSがディスク装置25への
アクセスと表計算プログラムの実行を管理し、ボイラ90
の状態をディスプレイに表示させる。
計算機2をボイラー90の制御および状態監視に使用して
いる。爆発等の事故を防ぐため、ボイラ90の制御処理に
はリアルタイム性が要求される。このため、計算機2で
は、リアルタイム処理用OSが、ボイラ90の制御処理を
管理する。また、事務処理用OSがディスク装置25への
アクセスと表計算プログラムの実行を管理し、ボイラ90
の状態をディスプレイに表示させる。
【0062】ボイラー90は、ボイラー内の気圧を計測す
る圧力センサ901と、燃料の供給量を調整するバルブ902
とを有する。圧力センサ901は、計算機2の入力線261に
接続され、一定間隔で測定データを出力する。バルブ90
2は、計算機2の出力線262に接続され、出力線262より供
給される制御データに従い開口量を調整する。リアルタ
イム処理用OSは、測定データが供給されると、ボイラ
ー90の圧力を適正値に保つための割り込み処理を行う。
この処理では、バルブ90の調整量を演算し、制御データ
を出力する。そして、メモリ22の共有データ345に測定
データを書き込む。一方、事務処理用OSは、一定期間
毎にメモリ22の共有データ345の測定データを表計算プ
ログラムに渡す。また、ディスク装置25へのアクセスの
管理も行う。表計算プログラムは、渡された測定データ
(圧力)を、例えば時系列に並べた棒グラフィックで表
示する。
る圧力センサ901と、燃料の供給量を調整するバルブ902
とを有する。圧力センサ901は、計算機2の入力線261に
接続され、一定間隔で測定データを出力する。バルブ90
2は、計算機2の出力線262に接続され、出力線262より供
給される制御データに従い開口量を調整する。リアルタ
イム処理用OSは、測定データが供給されると、ボイラ
ー90の圧力を適正値に保つための割り込み処理を行う。
この処理では、バルブ90の調整量を演算し、制御データ
を出力する。そして、メモリ22の共有データ345に測定
データを書き込む。一方、事務処理用OSは、一定期間
毎にメモリ22の共有データ345の測定データを表計算プ
ログラムに渡す。また、ディスク装置25へのアクセスの
管理も行う。表計算プログラムは、渡された測定データ
(圧力)を、例えば時系列に並べた棒グラフィックで表
示する。
【0063】次に、本発明の第2の実施形態に係るリア
ルタイム処理計算機について説明する。
ルタイム処理計算機について説明する。
【0064】本実施形態の計算機は、基本的な構成およ
び処理は前述の第1の実施形態と共通するが、OSの状
態を管理する方法が異なる。以下では、第1の実施形態
と異なる部分を中心に説明を行う。
び処理は前述の第1の実施形態と共通するが、OSの状
態を管理する方法が異なる。以下では、第1の実施形態
と異なる部分を中心に説明を行う。
【0065】図27に、本実施形態で用いられるメモリ
22の構成を示す。このメモリ22では、図8のOS状態ス
タック331が、OS状態カウンタ346に置き換えられてい
る。OS状態カウンタ346は、リアルタイム処理用OS
の、入れ子状となっている割り込み処理の数をカウント
する。
22の構成を示す。このメモリ22では、図8のOS状態ス
タック331が、OS状態カウンタ346に置き換えられてい
る。OS状態カウンタ346は、リアルタイム処理用OS
の、入れ子状となっている割り込み処理の数をカウント
する。
【0066】図28に、割り込みハンドラの処理フロー
を示す。この処理は、図1に対応するものであり、図1
の処理106の部分が、OS状態カウンタ346の値を調べる
処理(1061)となっている。OS状態カウンタ346の値が
1以上の場合に、処理がリアルタイム処理用OSの管理
下にあったと判断する。
を示す。この処理は、図1に対応するものであり、図1
の処理106の部分が、OS状態カウンタ346の値を調べる
処理(1061)となっている。OS状態カウンタ346の値が
1以上の場合に、処理がリアルタイム処理用OSの管理
下にあったと判断する。
【0067】図29に、RTハンドラの処理フローを示
す。この処理は、図15に対応するものであり、図15
の処理151の部分が、OS状態カウンタをインクリメン
トする処理(1511)になり、処理155の部分がOS状態カ
ウンタの値が2以上であるか調べる処理(1551)にな
り、処理161の部分が、OS状態カウンタをデクリメン
トする処理(1611)に変っている。
す。この処理は、図15に対応するものであり、図15
の処理151の部分が、OS状態カウンタをインクリメン
トする処理(1511)になり、処理155の部分がOS状態カ
ウンタの値が2以上であるか調べる処理(1551)にな
り、処理161の部分が、OS状態カウンタをデクリメン
トする処理(1611)に変っている。
【0068】以下、本発明の第3の実施形態に係るマル
チプロセッサ計算機について説明する。ここでも、第1
の実施形態との相違点を中心に説明を行う。
チプロセッサ計算機について説明する。ここでも、第1
の実施形態との相違点を中心に説明を行う。
【0069】本実施形態の計算機は、図31に示すよう
に、2つのCPU21-1および21-2を備える。他のブロッ
ク構成は第1の実施形態と同じである。ここで、CPU
21−1はリアルタイム処理用OSを実行し、CPU2
1−2は事務処理用OSを実行する。
に、2つのCPU21-1および21-2を備える。他のブロッ
ク構成は第1の実施形態と同じである。ここで、CPU
21−1はリアルタイム処理用OSを実行し、CPU2
1−2は事務処理用OSを実行する。
【0070】本実施形態のCPU21-1および21-2は、ス
テータスレジスタの構成を除き、第1の実施形態のCP
U21(図3)と同じ構成を有する。CPU21-1および21
-2の各ステータスレジスタ213は、図32に示すよう
に、割り込みレベル1〜3のそれぞれに対応した割り込
みマスクビット2134〜2136を有する。ここで、1値の設
定されたマスクビット2134〜2136に対応するレベルの割
り込み要求が抑止されることになる。図33および図3
4に、それぞれCPU21-1および21-2の各ステータスレ
ジスタの設定例を示す。図33に示すように、CPU21
-1では、ステータスレジスタ213-1のマスクビット2134-
1に1値が設定されており、レベル1の割り込みのみが
抑止されている。一方、CPU21-2では、図34に示す
ように、ステータスレジスタ213-2のマスクビット2135-
2に1値が設定されており、レベル2の割り込みのみが
抑止されている。
テータスレジスタの構成を除き、第1の実施形態のCP
U21(図3)と同じ構成を有する。CPU21-1および21
-2の各ステータスレジスタ213は、図32に示すよう
に、割り込みレベル1〜3のそれぞれに対応した割り込
みマスクビット2134〜2136を有する。ここで、1値の設
定されたマスクビット2134〜2136に対応するレベルの割
り込み要求が抑止されることになる。図33および図3
4に、それぞれCPU21-1および21-2の各ステータスレ
ジスタの設定例を示す。図33に示すように、CPU21
-1では、ステータスレジスタ213-1のマスクビット2134-
1に1値が設定されており、レベル1の割り込みのみが
抑止されている。一方、CPU21-2では、図34に示す
ように、ステータスレジスタ213-2のマスクビット2135-
2に1値が設定されており、レベル2の割り込みのみが
抑止されている。
【0071】図35に、本実施形態のメモリ22の内容を
示す。図示のように、このメモリ22には、第1の実施形
態(図8)において1つであったベクタテーブルを、各
CPU21-1および21-2に対応して個別に設けている。こ
こで、CPU21-1がベクタテーブル343-1を使用し、C
PU21-2はベクタテーブル343-2を使用する。各CPU2
1-1および21-2は、内部のベクタレジスタ214(図3)の
設定値から、対応するベクタテーブル343-1および343-2
のアドレスを認識する。各ベクタテーブル343-1および3
43-2は、割り込みレベルに対応して、飛び先の関数のア
ドレスが設定されている。本実施形態では、ベクタテー
ブル343-1には、割り込みレベル1〜3に対応して、そ
れぞれ、無効を示す”0”、RTハンドラのアドレス、
RTタイマ関数のアドレスが設定されている。一方、ベ
クタテーブル343-2には、割り込みレベル1〜3に対応
して、それぞれ、DISK_END関数のアドレス、無効を示
す”0”、TSタイマ関数のアドレスが設定されてい
る。また、第1の実施形態(図8)のOS状態スタック
331、割り込みテーブル332、TSスタックポインタ33
3、SIRQL335、および、第2ハンドラアドレス324
は、1つのCPUに2つのOSを実行させるための構成
であるため、本実施形態のメモリ22には設けられていな
い。さらに、マルチプロセッサ構成の場合、割り込みの
禁止だけでは、共有データ345の排他的制御ができない
ため、本実施形態のメモリ22には、排他的制御を可能と
するロック347が設けられている。
示す。図示のように、このメモリ22には、第1の実施形
態(図8)において1つであったベクタテーブルを、各
CPU21-1および21-2に対応して個別に設けている。こ
こで、CPU21-1がベクタテーブル343-1を使用し、C
PU21-2はベクタテーブル343-2を使用する。各CPU2
1-1および21-2は、内部のベクタレジスタ214(図3)の
設定値から、対応するベクタテーブル343-1および343-2
のアドレスを認識する。各ベクタテーブル343-1および3
43-2は、割り込みレベルに対応して、飛び先の関数のア
ドレスが設定されている。本実施形態では、ベクタテー
ブル343-1には、割り込みレベル1〜3に対応して、そ
れぞれ、無効を示す”0”、RTハンドラのアドレス、
RTタイマ関数のアドレスが設定されている。一方、ベ
クタテーブル343-2には、割り込みレベル1〜3に対応
して、それぞれ、DISK_END関数のアドレス、無効を示
す”0”、TSタイマ関数のアドレスが設定されてい
る。また、第1の実施形態(図8)のOS状態スタック
331、割り込みテーブル332、TSスタックポインタ33
3、SIRQL335、および、第2ハンドラアドレス324
は、1つのCPUに2つのOSを実行させるための構成
であるため、本実施形態のメモリ22には設けられていな
い。さらに、マルチプロセッサ構成の場合、割り込みの
禁止だけでは、共有データ345の排他的制御ができない
ため、本実施形態のメモリ22には、排他的制御を可能と
するロック347が設けられている。
【0072】また、本実施形態の計算機では、RaiseIRQ
L関数、LowerIRQL関数、RTハンドラの処理、および、
ブロック関数が第1の実施形態と異なる。
L関数、LowerIRQL関数、RTハンドラの処理、および、
ブロック関数が第1の実施形態と異なる。
【0073】RaiseIRQL関数では、図36に示すよう
に、SIRQL335を書き換える代りに、該関数を実行
しているCPUのステータスレジスタ213-1または213-2
のマスクビットの設定を行う。
に、SIRQL335を書き換える代りに、該関数を実行
しているCPUのステータスレジスタ213-1または213-2
のマスクビットの設定を行う。
【0074】LowerIRQL関数では、図37に示すよう
に、該関数を実行しているCPUのステータスレジスタ
213-1または213-2のマスクビットの設定をクリアする。
に、該関数を実行しているCPUのステータスレジスタ
213-1または213-2のマスクビットの設定をクリアする。
【0075】図38に、RTハンドラの処理フローを示
す。第1の実施形態では入ってきた割り込みを2つのO
Sに割り振る必要があったが、本実施形態のマルチプロ
セッサ構成では、各CPUが個別に対応するOSを実行
し、ステータスレジスタの設定に従って、必要な割り込
み処理を行う。このため、割り込み処理は、通常のOS
の割り込み処理と同じである。RTハンドラでは、図3
8に示すように、レジスタの内容を退避させ(102)、割
り込み本体の処理(181〜183)を行う。ここで、処理181
〜183は、図17で説明した処理と同じものである。こ
の処理の終了後、上記処理102で退避させていたレジス
タの内容を回復する。
す。第1の実施形態では入ってきた割り込みを2つのO
Sに割り振る必要があったが、本実施形態のマルチプロ
セッサ構成では、各CPUが個別に対応するOSを実行
し、ステータスレジスタの設定に従って、必要な割り込
み処理を行う。このため、割り込み処理は、通常のOS
の割り込み処理と同じである。RTハンドラでは、図3
8に示すように、レジスタの内容を退避させ(102)、割
り込み本体の処理(181〜183)を行う。ここで、処理181
〜183は、図17で説明した処理と同じものである。こ
の処理の終了後、上記処理102で退避させていたレジス
タの内容を回復する。
【0076】ブロック関数では、リアルタイム処理用O
Sで実行するスレッドがなくなっても、処理を別のOS
に移す必要がないため、図39に示すように、第1の実
施形態(図19)の処理から処理405および406を省き、
処理402でランキューにエントリがないと判定した場合
には、処理401に戻って、ランキューにエントリが接続
されるまでループするようにしている。
Sで実行するスレッドがなくなっても、処理を別のOS
に移す必要がないため、図39に示すように、第1の実
施形態(図19)の処理から処理405および406を省き、
処理402でランキューにエントリがないと判定した場合
には、処理401に戻って、ランキューにエントリが接続
されるまでループするようにしている。
【0077】
【発明の効果】本発明によれば、リアルタイム性を重視
していないオペレーティングシステムの処理を実行する
と共に、リアルタイム処理に高速に対処できるリアルタ
イム処理計算機を提供することができる。
していないオペレーティングシステムの処理を実行する
と共に、リアルタイム処理に高速に対処できるリアルタ
イム処理計算機を提供することができる。
【図1】 割り込みハンドラのフローチャートを示す図
である。
である。
【図2】 本発明の第1の実施形態に係る計算機の構成
例を示す図である。
例を示す図である。
【図3】 CPUの構成例を示す図である。
【図4】 割り込み要求レジスタの構成例を示す図であ
る。
る。
【図5】 ステータスレジスタの構成例を示す図であ
る。
る。
【図6】 入出力回路の構成例を示す図である。
【図7】 ディスクコントローラの構成例を示す図であ
る。
る。
【図8】 メモリの内容を示す図である。
【図9】 割り込みテーブルの構成例を示す図である。
【図10】 スレッドテーブルの構成例を示す図であ
る。
る。
【図11】 保留割り込みテーブルの構成例を示す図で
ある。
ある。
【図12】 割り込み抑止関数のアルゴリズム例を示す
図である。
図である。
【図13】 割り込み許可関数のアルゴリズム例を示す
図である。
図である。
【図14】 保留割り込みの許可関数のアルゴリズム例
を示す図である。
を示す図である。
【図15】 リアルタイムOSの割り込みハンドラの例
を示す図である。
を示す図である。
【図16】 コンテキスト切替関数のアルゴリズム例を
示す図である。
示す図である。
【図17】 リアルタイムOSの第2ハンドラの例を示
す図である。
す図である。
【図18】 割り込みを保留する関数の例を示す図であ
る。
る。
【図19】 ブロック関数の例を示す図である。
【図20】 ディスクアクセス終了割り込みハンドラの
例を示す図である。
例を示す図である。
【図21】 事務処理用OSの割り込みを抑止するプロ
グラムの例を示す図である。
グラムの例を示す図である。
【図22】 リアルタイムOSのタイマ周期設定関数の
例を示す図である。
例を示す図である。
【図23】 事務処理用OSのタイマ周期設定関数の例
を示す図である。
を示す図である。
【図24】 タイマ割り込みハンドラの例を示す図であ
る。
る。
【図25】 タイマ割り込みでTS周期がRT周期より
短い場合の処理例を示す図である。
短い場合の処理例を示す図である。
【図26】 タイマ割り込みでRT周期がTS周期より
短い場合の処理例を示す図である。
短い場合の処理例を示す図である。
【図27】 第2の実施形態に係る計算機のメモリの内
容を示す図である。
容を示す図である。
【図28】 割り込みハンドラの例を示す図である。
【図29】 リアルタイムOSの割り込みハンドラの例
を示す図である。
を示す図である。
【図30】 共有データのアクセス方法を示す図であ
る。
る。
【図31】 第3の実施形態に係るマルチプロセッサ計
算機の構成を示す図である。
算機の構成を示す図である。
【図32】 ステータスレジスタの構成例を示す図であ
る。
る。
【図33】 TS−OS用CPUのステータスレジスタ
の状態を示す図である。
の状態を示す図である。
【図34】 リアルタイムOS用CPUのステータスレ
ジスタの状態を示す図である。
ジスタの状態を示す図である。
【図35】 メモリの内容を示す図である。
【図36】 割り込み抑止関数のアルゴリズム例を示す
図である。
図である。
【図37】 割り込み許可関数のアルゴリズム例を示す
図である。
図である。
【図38】 RTハンドラの処理フローである。
【図39】 ブロック関数の処理フローである。
【図40】 計算機の利用形態の一例を示す図である。
21・・・CPU、211・・・演算器、212・・・汎用レジスタ、213・・・
ステータスレジスタ、2131〜2136・・・割り込み抑止ビッ
ト、214・・・ベクタレジスタ、215・・・割り込み要求レジス
タ、216・・・割り込みコントローラ、217・・・プログラムカ
ウンタ、218・・・タイマ、22・・・メモリ、23・・・バス、231・
・・アドレスバス、232・・・データバス、233・・・割り込みラ
イン、24・・・ディスクコントローラ、241・・・デコーダ、2
42・・・セクタレジスタ、243・・・データバッファ、244・・・
アクセス終了通知線、245・・・セクタ指定線、246・・・デー
タ線、25・・・ディスク、26・・・入出力部261・・・入力線、26
2・・・出力線、263・・・ラッチ、264・・・オア回路、265・・・デ
コーダ、266・・・ラッチ、31・・・TS−OS部、311・・・T
S−OSプログラム、312・・・バッファキュー、3121〜31
22・・・バッファ、32・・・リアルタイムOS部、321・・・ラン
キュー、322・・・スリープキュー、323・・・リスケジューリ
ングフラグ、324・・・第2ハンドラアドレス、325・・・リア
ルタイムOSプログラム、3271〜3274・・・カーネルスタ
ック、3261〜3264・・・スレッドテーブル、33・・・ハードウ
ェア依存部、331・・・OS状態スタック、332・・・割り込み
テーブル、333・・・TSスタックポインタ、334・・・保留キ
ュー、335・・・SIRQL(ソフトウェアIRQL)、336・・
・TS周期、337・・・RT周期、338・・・残時間、339・・・半
端時間、340・・・ハードウェア依存部プログラム、3411〜
3412・・・保留割り込みテーブル、342・・・レジスタ回復ポ
インタ、343・・・ベクタテーブル、344・・・レジスタ退避ポ
インタ、345・・・共有データ、346・・・OS状態カウンタ。
ステータスレジスタ、2131〜2136・・・割り込み抑止ビッ
ト、214・・・ベクタレジスタ、215・・・割り込み要求レジス
タ、216・・・割り込みコントローラ、217・・・プログラムカ
ウンタ、218・・・タイマ、22・・・メモリ、23・・・バス、231・
・・アドレスバス、232・・・データバス、233・・・割り込みラ
イン、24・・・ディスクコントローラ、241・・・デコーダ、2
42・・・セクタレジスタ、243・・・データバッファ、244・・・
アクセス終了通知線、245・・・セクタ指定線、246・・・デー
タ線、25・・・ディスク、26・・・入出力部261・・・入力線、26
2・・・出力線、263・・・ラッチ、264・・・オア回路、265・・・デ
コーダ、266・・・ラッチ、31・・・TS−OS部、311・・・T
S−OSプログラム、312・・・バッファキュー、3121〜31
22・・・バッファ、32・・・リアルタイムOS部、321・・・ラン
キュー、322・・・スリープキュー、323・・・リスケジューリ
ングフラグ、324・・・第2ハンドラアドレス、325・・・リア
ルタイムOSプログラム、3271〜3274・・・カーネルスタ
ック、3261〜3264・・・スレッドテーブル、33・・・ハードウ
ェア依存部、331・・・OS状態スタック、332・・・割り込み
テーブル、333・・・TSスタックポインタ、334・・・保留キ
ュー、335・・・SIRQL(ソフトウェアIRQL)、336・・
・TS周期、337・・・RT周期、338・・・残時間、339・・・半
端時間、340・・・ハードウェア依存部プログラム、3411〜
3412・・・保留割り込みテーブル、342・・・レジスタ回復ポ
インタ、343・・・ベクタテーブル、344・・・レジスタ退避ポ
インタ、345・・・共有データ、346・・・OS状態カウンタ。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 中村 智明 茨城県日立市大みか町五丁目2番1号 株 式会社日立製作所大みか工場内 (72)発明者 金子 茂則 茨城県日立市大みか町五丁目2番1号 株 式会社日立製作所大みか工場内
Claims (10)
- 【請求項1】リアルタイム性を重視していない、少なく
とも1つの割り込みハンドラ手段を有するOS(オペレ
ーティングシステム)と、少なくとも1つのリアルタイ
ム処理用プログラムと、割り込み機構を有するプロセッ
サとを備えるリアルタイム処理計算機において、 前記OSが割り込みの抑止および該抑止の解除を要求し
たことに応じて、該割り込みの抑止および解除を指定す
る情報が格納される格納手段と、 前記OSに対し出される割り込み要求の情報が格納され
るキュー手段と、 発生した割り込み要求を受け付けると共に、前記プロセ
ッサの割り込み機構を制御し、前記OSに対する割り込
み要求については前記キュー手段に格納して保留し、リ
アルタイム処理用プログラムに対する割り込み要求につ
いては該リアルタイム処理用プログラムを実行する対処
処理を行い、さらに、前記OSの実行中に、前記格納手
段で実行の抑止を指定されていない、前記キュー手段に
格納されている割り込み要求を、該OSの対応する割り
込みハンドラ手段に処理させる主割り込みハンドラ手段
とを備えることを特徴とするリアルタイム処理計算機。 - 【請求項2】請求項1記載のリアルタイム処理計算機に
おいて、 前記割り込み要求には、複数の種類があり、 前記割り込み要求の各種類に対応して、前記OSの割り
込みハンドラ手段と、リアルタイム処理用プログラムと
の少なくとも一方を指定する情報が、該種類の割り込み
要求に対処する処理を特定可能とするために設定されて
いるテーブル手段とを、さらに備えることを特徴とする
リアルタイム処理計算機。 - 【請求項3】請求項1記載のリアルタイム処理計算機に
おいて、 複数のスレッドからなる前記リアルタイム処理用プログ
ラムの実行を管理する第2のOSと、 実行可能状態および応答待ち状態のリアルタイム処理用
プログラムのスレッドを指定する情報が格納されるスレ
ッドキュー手段と、 前記主割り込みハンドラ手段の対処処理で起動され、割
り込み要求に対応するリアルタイム処理用プログラムの
スレッドを実行可能状態とし、実行可能状態のリアルタ
イム処理用プログラムのスレッドを実行するハンドラ手
段とを、さらに備えることを特徴とするリアルタイム処
理計算機。 - 【請求項4】請求項3記載のリアルタイム処理計算機に
おいて、 前記リアルタイム処理用プログラムの実行状態を監視す
る手段を、さらに備え、 前記主割り込みハンドラ手段は、実行可能状態または応
答待ち状態にあるリアルタイム処理用プログラムのスレ
ッドがある場合には、前記リアルタイム性を重視してい
ないOSの処理は保留させることを特徴とするリアルタ
イム処理計算機。 - 【請求項5】請求項4記載のリアルタイム処理計算機に
おいて、 前記リアルタイム処理用プログラムの実行状態を監視す
る手段は、前記リアルタイム処理用プログラムのスレッ
ドの実行開始時にインクリメントし、前記リアルタイム
処理用プログラムのスレッドの実行終了時にデクリメン
トするカウンタであることを特徴とするリアルタイム処
理計算機。 - 【請求項6】請求項1記載のリアルタイム処理計算機に
おいて、 前記リアルタイム性を重視していないOSと、前記リア
ルタイム処理用プログラムとから共通にアクセスされる
資源と、 前記プロセッサの割り込み機構を制御して、前記資源に
対する前記OSおよびリアルタイム処理用プログラムの
アクセスを排他的に行わせる手段とを、さらに備えるこ
とを特徴とするリアルタイム処理計算機。 - 【請求項7】請求項6記載のリアルタイム処理計算機に
おいて、 前記資源はメモリであることを特徴とするリアルタイム
処理計算機。 - 【請求項8】第1のプロセッサおよび第2プロセッサを
含む複数のプロセッサを有するリアルタイム処理計算機
において、前記第1のプロセッサにより実行される、リ
アルタイム処理を重視していないOSと、前記第2のプ
ロセッサにより実行されるリアルタイム処理プログラム
とを備え、前記第1のプロセッサは、リアルタイム処理
が必要でない機器から割り込み要求を受け付け、前記第
2のプロセッサは、リアルタイム処理が必要な機器から
割り込み要求を受け付けることを特徴とするリアルタイ
ム処理計算機。 - 【請求項9】リアルタイム処理用プログラムを実行する
計算機に組込まれる、少なくとも1つのハンドラ手段を
有するOS(オペレーティングシステム)が格納される
記録媒体において、 前記OSが割り込みの抑止および該抑止の解除を要求し
たことに応じて、該割り込みの抑止および解除を指定す
る情報が格納される格納手段と、 前記OSに対し出される割り込み要求の情報が格納され
るキュー手段と、 発生した割り込み要求を受け付けると共に、前記プロセ
ッサの割り込み機構を制御し、前記OSに対する割り込
み要求については前記キュー手段に格納して保留し、リ
アルタイム処理用プログラムに対する割り込み要求につ
いては該リアルタイム処理用プログラムを実行する対処
処理を行い、さらに、前記OSの実行中に、前記格納手
段で実行の抑止を指定されていない、前記キュー手段に
格納されている割り込み要求を、該OSの対応する割り
込みハンドラ手段に処理させる主割り込みハンドラ手段
と、を実現するプログラムがさらに格納されることこと
を特徴とする記録媒体。 - 【請求項10】リアルタイム処理用プログラムを実行す
る計算機に組込まれる、少なくとも1つのハンドラ手段
を実現するOS(オペレーティングシステム)におい
て、 前記OSが割り込みの抑止および該抑止の解除を要求し
たことに応じて、該割り込みの抑止および解除を指定す
る情報が格納される格納手段と、 前記OSに対し出される割り込み要求の情報が格納され
るキュー手段と、 発生した割り込み要求を受け付けると共に、前記プロセ
ッサの割り込み機構を制御し、前記OSに対する割り込
み要求については前記キュー手段に格納して保留し、リ
アルタイム処理用プログラムに対する割り込み要求につ
いては該リアルタイム処理用プログラムを実行する対処
処理を行い、さらに、前記OSの実行中に、前記格納手
段で実行の抑止を指定されていない、前記キュー手段に
格納されている割り込み要求を、該OSの対応する割り
込みハンドラ手段に処理させる主割り込みハンドラ手段
とを、さらに実現することを特徴とするOS。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25059097A JPH1196022A (ja) | 1997-09-16 | 1997-09-16 | リアルタイム処理計算機 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25059097A JPH1196022A (ja) | 1997-09-16 | 1997-09-16 | リアルタイム処理計算機 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH1196022A true JPH1196022A (ja) | 1999-04-09 |
Family
ID=17210161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP25059097A Pending JPH1196022A (ja) | 1997-09-16 | 1997-09-16 | リアルタイム処理計算機 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH1196022A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6539447B1 (en) | 1999-05-25 | 2003-03-25 | Elmic Systems, Inc. | Interrupt control system |
US7086056B2 (en) | 2001-03-19 | 2006-08-01 | Denso Corporation | Processor unit for executing event processes in real time without causing process interference |
-
1997
- 1997-09-16 JP JP25059097A patent/JPH1196022A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6539447B1 (en) | 1999-05-25 | 2003-03-25 | Elmic Systems, Inc. | Interrupt control system |
US7086056B2 (en) | 2001-03-19 | 2006-08-01 | Denso Corporation | Processor unit for executing event processes in real time without causing process interference |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6314471B1 (en) | Techniques for an interrupt free operating system | |
US8539485B2 (en) | Polling using reservation mechanism | |
US6895460B2 (en) | Synchronization of asynchronous emulated interrupts | |
KR100848603B1 (ko) | 데이터 처리장치와 복귀상태의 저장방법 | |
US6779065B2 (en) | Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads | |
US5161226A (en) | Microprocessor inverse processor state usage | |
US6671827B2 (en) | Journaling for parallel hardware threads in multithreaded processor | |
US8898666B2 (en) | Virtual machine system and virtual machine system control method for controlling program execution on a plurality of processors that have a plurality of privileged modes | |
US6282601B1 (en) | Multiprocessor data processing system and method of interrupt handling that facilitate identification of a processor requesting a system management interrupt | |
TW490638B (en) | Computer for executing plural operating systems | |
KR100976280B1 (ko) | 하드웨어 지원을 갖는 다중 프로세서 및 다중 스레드 안전 메시지 큐 | |
JPH0430053B2 (ja) | ||
JP2007242003A (ja) | メモリ属性を用いるための技術 | |
US7426728B2 (en) | Reducing latency, when accessing task priority levels | |
US6694401B2 (en) | Method and apparatus for executing real-mode interrupts from within extended SMRAM handler | |
US8141077B2 (en) | System, method and medium for providing asynchronous input and output with less system calls to and from an operating system | |
US9772960B2 (en) | System and method for operating system aware low latency interrupt handling | |
JPH1196022A (ja) | リアルタイム処理計算機 | |
JP3659048B2 (ja) | オペレーティングシステム及び計算機 | |
EP0297892B1 (en) | Apparatus and method for control of asynchronous program interrupt events in a data processing system | |
KR100506254B1 (ko) | 임베디드 시스템의 비특권 모드에서 인터럽트 처리를 위한장치 및 방법 | |
JPH08314850A (ja) | 計算機システムのバスブリッジ | |
US7765383B2 (en) | Data processing unit and data processing apparatus using data processing unit | |
JPH044630B2 (ja) | ||
JP2022107229A (ja) | 情報処理装置、制御方法及び制御プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040601 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040729 |
|
A02 | Decision of refusal |
Effective date: 20040824 Free format text: JAPANESE INTERMEDIATE CODE: A02 |