JPH11120011A - 割込み処理方法およびマルチタスク実行システム - Google Patents
割込み処理方法およびマルチタスク実行システムInfo
- Publication number
- JPH11120011A JPH11120011A JP28211097A JP28211097A JPH11120011A JP H11120011 A JPH11120011 A JP H11120011A JP 28211097 A JP28211097 A JP 28211097A JP 28211097 A JP28211097 A JP 28211097A JP H11120011 A JPH11120011 A JP H11120011A
- Authority
- JP
- Japan
- Prior art keywords
- task
- input
- output
- interrupt
- logical space
- 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)【要約】
【課題】マルチタスク実行システムにおいて、入出力割
込みに対するメモリの効率的な利用を実現する。 【解決手段】複数のタスク131〜134がそれぞれの
論理空間を有して動作するマルチタスク実行システム1
00において、タスクの論理空間のみを切り替える論理
空間切り替え手段135を有し、該論理空間切り替え手
段は、該複数のタスクの一つが発行した入出力要求に対
応する割込みが発生した場合、(1)割込み処理に必要
なレジスタ値を退避し、(2)該入出力要求を発行した
タスクの論理空間に切り替え、(3)割込み処理ルーチ
ンを実行し、(4)前記(2)の処理で切り替える直前
の論理空間に再切り替えを行い、(5)前記(1)で退
避したレジスタ値を復帰する。
込みに対するメモリの効率的な利用を実現する。 【解決手段】複数のタスク131〜134がそれぞれの
論理空間を有して動作するマルチタスク実行システム1
00において、タスクの論理空間のみを切り替える論理
空間切り替え手段135を有し、該論理空間切り替え手
段は、該複数のタスクの一つが発行した入出力要求に対
応する割込みが発生した場合、(1)割込み処理に必要
なレジスタ値を退避し、(2)該入出力要求を発行した
タスクの論理空間に切り替え、(3)割込み処理ルーチ
ンを実行し、(4)前記(2)の処理で切り替える直前
の論理空間に再切り替えを行い、(5)前記(1)で退
避したレジスタ値を復帰する。
Description
【0001】
【発明の属する技術分野】本発明はマルチタスク実行シ
ステムに関し、特に入出力割込みの効率的な処理方法に
関する。
ステムに関し、特に入出力割込みの効率的な処理方法に
関する。
【0002】
【従来の技術】複数のプログラム(タスク)が並行して
動作するマルチタスク実行システムでは、一つのタスク
が入出力を要求して入出力完了を待つ場合、通常、別の
タスクがシステム上で実行(スケジューリング)され、
入出力完了は割込みという形式でシステムに通知され
る。
動作するマルチタスク実行システムでは、一つのタスク
が入出力を要求して入出力完了を待つ場合、通常、別の
タスクがシステム上で実行(スケジューリング)され、
入出力完了は割込みという形式でシステムに通知され
る。
【0003】入出力要求に対する割込みは、タスクが入
出力要求を行った結果発生するものであり、(1)入力
完了であれば、入力データを要求発行元タスクの領域に
格納し、(2)出力完了であれば、結果を要求発行元タ
スクの領域に格納する、といったデータ転送処理(割り
込み処理)を行わなければならない。
出力要求を行った結果発生するものであり、(1)入力
完了であれば、入力データを要求発行元タスクの領域に
格納し、(2)出力完了であれば、結果を要求発行元タ
スクの領域に格納する、といったデータ転送処理(割り
込み処理)を行わなければならない。
【0004】しかしながら、割込み発生時には、通常、
入出力要求を発行したタスクとは別のタスクが動作して
いるので、入出力要求時とは異なったタスク実行環境と
なっている。
入出力要求を発行したタスクとは別のタスクが動作して
いるので、入出力要求時とは異なったタスク実行環境と
なっている。
【0005】このような入出力割込み発生時の処理とし
て、マイクロソフト社のOSであるWindows NTデバイス
ドライバにおけるAPC(Asynchronous Procedure Cal
l)のように、通常は入出力要求を発行したタスクが再
びオペレーティングシステムによってスケジューリング
され、入出力要求発行時と同一のタスク実行環境に戻る
ときまで、データ転送処理の実行を遅延させる。
て、マイクロソフト社のOSであるWindows NTデバイス
ドライバにおけるAPC(Asynchronous Procedure Cal
l)のように、通常は入出力要求を発行したタスクが再
びオペレーティングシステムによってスケジューリング
され、入出力要求発行時と同一のタスク実行環境に戻る
ときまで、データ転送処理の実行を遅延させる。
【0006】
【発明が解決しようとする課題】APCを用いた入出力
割込み処理では、入出力完了からタスクの再スケジュー
リングまでの間、別タスクの実行環境にあるため、入出
力データを要求元のタスクの領域に直接に格納すること
ができない。この間、入出力データを一時的に保存して
おくためのバッファ領域が必要となる。すなわち、入出
力データを保存するためにタスクが提供する領域の他
に、システムが一時的(入出力完了から入出力要求元タ
スクの再スケジューリングまで)にデータを保存するた
めの領域が必要となる。したがって、APCで大容量フ
ァイルなどの入力を行うと、メモリの活用が極端に非効
率となる。
割込み処理では、入出力完了からタスクの再スケジュー
リングまでの間、別タスクの実行環境にあるため、入出
力データを要求元のタスクの領域に直接に格納すること
ができない。この間、入出力データを一時的に保存して
おくためのバッファ領域が必要となる。すなわち、入出
力データを保存するためにタスクが提供する領域の他
に、システムが一時的(入出力完了から入出力要求元タ
スクの再スケジューリングまで)にデータを保存するた
めの領域が必要となる。したがって、APCで大容量フ
ァイルなどの入力を行うと、メモリの活用が極端に非効
率となる。
【0007】本発明の目的は、従来技術の問題点を克服
し、入出力割込みの発生時点に割込み処理を簡易に実行
できる方法と、メモリの有効活用が可能となるマルチタ
スク実行システムを提供することにある。
し、入出力割込みの発生時点に割込み処理を簡易に実行
できる方法と、メモリの有効活用が可能となるマルチタ
スク実行システムを提供することにある。
【0008】
【課題を解決するための手段】前記目的を達成するた
め、複数のタスクがそれぞれの論理空間を有して動作す
るときの入出力割込み方法において、前記タスクの一つ
が発行した入出力要求に対応する割込みが発生した場
合、タスク実行環境のうち、論理空間のみを稼働中のタ
スクから前記入出力要求元のタスクのそれに切り替える
ことを特徴とする。
め、複数のタスクがそれぞれの論理空間を有して動作す
るときの入出力割込み方法において、前記タスクの一つ
が発行した入出力要求に対応する割込みが発生した場
合、タスク実行環境のうち、論理空間のみを稼働中のタ
スクから前記入出力要求元のタスクのそれに切り替える
ことを特徴とする。
【0009】ここで、タスク実行環境とは、(a)タス
クの論理空間、(b)レジスタ値(プログラムカウン
タ、汎用レジスタなど)、(c)ファイルなどを総称し
た概念である。個々のタスクはそれぞれのタスク環境を
有し、マルチタスク実行システムでは、タスク実行環境
を順次切り替えることにより、複数のタスクを並行動作
させる。
クの論理空間、(b)レジスタ値(プログラムカウン
タ、汎用レジスタなど)、(c)ファイルなどを総称し
た概念である。個々のタスクはそれぞれのタスク環境を
有し、マルチタスク実行システムでは、タスク実行環境
を順次切り替えることにより、複数のタスクを並行動作
させる。
【0010】本発明のマルチタスク実行システムでは、
入出力割込み発生時に、タスク実行環境のうち、論理空
間のみを入出力要求発行元のタスクの論理空間に切り替
える論理空間切り替え手段を有する。論理空間切り替え
手段は、通常、マルチタスク実行システムのオペレーテ
ィングシステムの一部として提供される。
入出力割込み発生時に、タスク実行環境のうち、論理空
間のみを入出力要求発行元のタスクの論理空間に切り替
える論理空間切り替え手段を有する。論理空間切り替え
手段は、通常、マルチタスク実行システムのオペレーテ
ィングシステムの一部として提供される。
【0011】前記論理空間切り替え手段を有することに
より、本発明のマルチタスク実行システムの割込み処理
は、入出力割込み発生時の処理として、以下の一連の動
作を実行する。
より、本発明のマルチタスク実行システムの割込み処理
は、入出力割込み発生時の処理として、以下の一連の動
作を実行する。
【0012】(1)入出力割込み発生時に、割込み処理
に必要なレジスタの値を退避する。すなわち、稼働中の
タスクの処理に用いられるレジスタのうち、競合するレ
ジスタ値を退避する。
に必要なレジスタの値を退避する。すなわち、稼働中の
タスクの処理に用いられるレジスタのうち、競合するレ
ジスタ値を退避する。
【0013】(2)論理空間切り替え手段により入出力
要求発行元のタスクの論理空間に切り替える。論理空間
の切り替えは、ページテーブルを切り替えた後、必要に
応じてTLB(Translation Look-aside Buffer)やキ
ャッシュ記憶の無効化を行うことにより達成される。ハ
ードウェアの種類によっては、この無効化の処理が不要
な場合もある。
要求発行元のタスクの論理空間に切り替える。論理空間
の切り替えは、ページテーブルを切り替えた後、必要に
応じてTLB(Translation Look-aside Buffer)やキ
ャッシュ記憶の無効化を行うことにより達成される。ハ
ードウェアの種類によっては、この無効化の処理が不要
な場合もある。
【0014】(3)割込み処理を実行する。すなわち、
入出力データを入出力要求発行元のタスクの領域に格納
する。
入出力データを入出力要求発行元のタスクの領域に格納
する。
【0015】(4)前記(2)の処理で切り替える直前
の論理空間に再切り替えを行う。
の論理空間に再切り替えを行う。
【0016】(5)前記(1)で退避したレジスタ値を
復帰する。
復帰する。
【0017】これらの一連の処理を行うことにより、入
出力割込み発生時点で、入出力データを要求発行元タス
クの領域に格納することができる。この結果、システム
が一時的にデータを保存するための領域が不要となり、
効率的なメモリ活用を行うことができる。また、全ての
タスク実行環境を切り替えるのではなく、論理空間のみ
を切り替えるので、割込み処理に至るまでの時間を短く
することができる。
出力割込み発生時点で、入出力データを要求発行元タス
クの領域に格納することができる。この結果、システム
が一時的にデータを保存するための領域が不要となり、
効率的なメモリ活用を行うことができる。また、全ての
タスク実行環境を切り替えるのではなく、論理空間のみ
を切り替えるので、割込み処理に至るまでの時間を短く
することができる。
【0018】
【発明の実施の形態】本発明の一実施形態を図面を用い
て詳細に説明する。図1に、本発明のマルチタスク実行
システムの一実施例を示す。本システムでは、複数のタ
スクが1台の計算機上でそれぞれ独立の論理空間を有し
て動作する。図中、100は計算機システムであり、そ
の内部装置として、中央処理装置(CPU)110、主
記憶装置111、入出力制御装置(I/O)112があ
り、CPUバス120によって接続されている。入出力
制御装置112には、ディスク装置113や端末114
が接続される。CPU110内部には、TLB115や
キャッシュ記憶116が存在する。
て詳細に説明する。図1に、本発明のマルチタスク実行
システムの一実施例を示す。本システムでは、複数のタ
スクが1台の計算機上でそれぞれ独立の論理空間を有し
て動作する。図中、100は計算機システムであり、そ
の内部装置として、中央処理装置(CPU)110、主
記憶装置111、入出力制御装置(I/O)112があ
り、CPUバス120によって接続されている。入出力
制御装置112には、ディスク装置113や端末114
が接続される。CPU110内部には、TLB115や
キャッシュ記憶116が存在する。
【0019】主記憶装置111上には、オペレーティン
グシステム(OS)130、タスク131〜134が存
在し、CPU110によって順次実行される。OS13
0がタスク131〜134の実行状態を管理して、複数
のタスクが並行して動作するマルチタスク実行環境を構
成している。なお、本実施例では、4つのタスク131
〜134の存在を示しているが、これ以上または以下の
タスクが動作するシステム構成も可能である。
グシステム(OS)130、タスク131〜134が存
在し、CPU110によって順次実行される。OS13
0がタスク131〜134の実行状態を管理して、複数
のタスクが並行して動作するマルチタスク実行環境を構
成している。なお、本実施例では、4つのタスク131
〜134の存在を示しているが、これ以上または以下の
タスクが動作するシステム構成も可能である。
【0020】図2に、論理空間の構成を説明する概念図
を示す。図示のように、論理空間はOS用空間とタスク
用論理空間からなり、後者はタスク毎に物理空間にマッ
ピングされている。ページテーブルなどの情報は全てO
S用空間に配置され、これを切り替えることによりタス
ク用論理空間を切り替えることができる。
を示す。図示のように、論理空間はOS用空間とタスク
用論理空間からなり、後者はタスク毎に物理空間にマッ
ピングされている。ページテーブルなどの情報は全てO
S用空間に配置され、これを切り替えることによりタス
ク用論理空間を切り替えることができる。
【0021】論理空間切り替えルーチン135は、OS
130の一つのルーチンとして提供される。このルーチ
ン135は、タスクやユーザから直接実行することはで
きないが、OS内に組み込まれて動作する入出力割込み
処理ルーチンから実行することができ、論理空間の切り
替え処理を実行する。論理空間の切り替えは、OS内部
のデータであるページテーブルなどを切り替えることに
より行われる。
130の一つのルーチンとして提供される。このルーチ
ン135は、タスクやユーザから直接実行することはで
きないが、OS内に組み込まれて動作する入出力割込み
処理ルーチンから実行することができ、論理空間の切り
替え処理を実行する。論理空間の切り替えは、OS内部
のデータであるページテーブルなどを切り替えることに
より行われる。
【0022】図3に、論理空間切り替えのために使用さ
れるOS内部のデータ構造を示す。OS内部には、ペー
ジテーブルエントリアドレス140とページテーブル1
41〜144、実行中タスク番号150、タスク制御ブ
ロック151〜154が存在し、各タスクの実行状況を
管理する。
れるOS内部のデータ構造を示す。OS内部には、ペー
ジテーブルエントリアドレス140とページテーブル1
41〜144、実行中タスク番号150、タスク制御ブ
ロック151〜154が存在し、各タスクの実行状況を
管理する。
【0023】ページテーブル141〜144は、それぞ
れ、タスク131〜134の論理空間と物理空間の対応
を示す。本実施例では、ページテーブルは各タスク毎に
設けられているが、システムで一つのページテーブルを
構成することも可能である。ページテーブルの論理空間
と物理空間の対応の一部は、TLB115内に転写さ
れ、ハードウェアによる高速なアドレス変換を可能にし
ている。ページテーブルエントリアドレス140は、現
在使用中の論理空間に対応するページテーブルの先頭ア
ドレスを示す。例えば、タスク133が実行中であれ
ば、ページテーブルエントリアドレス140はページテ
ーブル143の先頭アドレスを示す。
れ、タスク131〜134の論理空間と物理空間の対応
を示す。本実施例では、ページテーブルは各タスク毎に
設けられているが、システムで一つのページテーブルを
構成することも可能である。ページテーブルの論理空間
と物理空間の対応の一部は、TLB115内に転写さ
れ、ハードウェアによる高速なアドレス変換を可能にし
ている。ページテーブルエントリアドレス140は、現
在使用中の論理空間に対応するページテーブルの先頭ア
ドレスを示す。例えば、タスク133が実行中であれ
ば、ページテーブルエントリアドレス140はページテ
ーブル143の先頭アドレスを示す。
【0024】タスク制御ブロック151〜154は、そ
れぞれタスク131〜134の実行状況を管理するデー
タで、レジスタ値、状態(タスクが実行状態であるか待
ち状態であるかなど)、実行中の入出力処理の種類、使
用中のファイル、ページテーブルの位置などが退避さ
れ、タスクをスケジューリングする際に用いられる。
れぞれタスク131〜134の実行状況を管理するデー
タで、レジスタ値、状態(タスクが実行状態であるか待
ち状態であるかなど)、実行中の入出力処理の種類、使
用中のファイル、ページテーブルの位置などが退避さ
れ、タスクをスケジューリングする際に用いられる。
【0025】実行中タスク番号150は、現在、システ
ムで実行されているタスクの番号(ID)を示す値であ
る。CPU110の種類によっては、実行中タスク番号
を格納するための領域がハードウェアで提供されている
ものもある。
ムで実行されているタスクの番号(ID)を示す値であ
る。CPU110の種類によっては、実行中タスク番号
を格納するための領域がハードウェアで提供されている
ものもある。
【0026】TLB115には、タスク131〜134
における論理空間と物理空間との対応を示すページテー
ブルの一部が記憶されている。TLB115の内容は、
CPU110の種類によって異なるが、論理空間を32
ビットアドレス(最大4Gバイト)で参照する場合、通
常、4Kバイトもしくは1Kバイトの空間(ページ)に
分割し、これを物理空間におけるページにマッピングす
る。したがって、TLB115は、20ビットもしくは
22ビットで表される論理空間のページと物理空間のペ
ージとの対応表を示す。
における論理空間と物理空間との対応を示すページテー
ブルの一部が記憶されている。TLB115の内容は、
CPU110の種類によって異なるが、論理空間を32
ビットアドレス(最大4Gバイト)で参照する場合、通
常、4Kバイトもしくは1Kバイトの空間(ページ)に
分割し、これを物理空間におけるページにマッピングす
る。したがって、TLB115は、20ビットもしくは
22ビットで表される論理空間のページと物理空間のペ
ージとの対応表を示す。
【0027】CPU110は、このページ対応表を利用
して論理アドレスを物理アドレスに高速に変換し、変換
後の物理アドレスを用いて主記憶装置111の命令、デ
ータ参照を行う。指定された論理ページ番号がTLB内
に存在しなければ、ページテーブルから論理空間と物理
空間との対応表を読み出し、TLB内に登録する。
して論理アドレスを物理アドレスに高速に変換し、変換
後の物理アドレスを用いて主記憶装置111の命令、デ
ータ参照を行う。指定された論理ページ番号がTLB内
に存在しなければ、ページテーブルから論理空間と物理
空間との対応表を読み出し、TLB内に登録する。
【0028】通常のTLBは、論理ページ番号と物理ペ
ージ番号との対応のみを有しているため、異なった論理
空間を有するタスク間でスケジューリングが行われた場
合、TLBが示す論理空間と物理空間の対応が無効とな
るので、TLBの内容をすべて削除(無効化)しなけれ
ばならない。しかし、CPUの種類によっては、TLB
内に論理ページ番号、実行中タスク番号と物理ページ番
号との対応を記憶でき、マルチタスク実行システムに適
した構成となっているものが存在する。
ージ番号との対応のみを有しているため、異なった論理
空間を有するタスク間でスケジューリングが行われた場
合、TLBが示す論理空間と物理空間の対応が無効とな
るので、TLBの内容をすべて削除(無効化)しなけれ
ばならない。しかし、CPUの種類によっては、TLB
内に論理ページ番号、実行中タスク番号と物理ページ番
号との対応を記憶でき、マルチタスク実行システムに適
した構成となっているものが存在する。
【0029】図4に、論理空間の切り替え時に無効化の
不要なTLBの内部構成を示す。TLB115は複数の
エントリに分割され、各エントリが論理ページ番号16
0、タスク番号161と物理ページ番号162との対応
を示す。このようなTLBを用いるCPUの場合、タス
ク間スケジューリングが行われても、TLBの内容を削
除する必要はない。
不要なTLBの内部構成を示す。TLB115は複数の
エントリに分割され、各エントリが論理ページ番号16
0、タスク番号161と物理ページ番号162との対応
を示す。このようなTLBを用いるCPUの場合、タス
ク間スケジューリングが行われても、TLBの内容を削
除する必要はない。
【0030】キャッシュ記憶116は、主記憶装置11
1から読み出したデータを一旦格納しておく高速なバッ
ファである。キャッシュ記憶116もCPUの種類によ
って、(1)物理アドレスをインデクスとしてデータを
記憶する物理キャッシュ (2)論理アドレスをインデクスとしてデータを記憶す
る論理キャッシュ (3)論理アドレスとタスク番号の対をインデクスとす
る論理キャッシュ のいずれかの構成を採用する。(2)の論理キャッシュ
を使用する場合には、タスク間スケジューリングの際
に、キャッシュ記憶上のデータをすべて削除しておかな
ければならない。
1から読み出したデータを一旦格納しておく高速なバッ
ファである。キャッシュ記憶116もCPUの種類によ
って、(1)物理アドレスをインデクスとしてデータを
記憶する物理キャッシュ (2)論理アドレスをインデクスとしてデータを記憶す
る論理キャッシュ (3)論理アドレスとタスク番号の対をインデクスとす
る論理キャッシュ のいずれかの構成を採用する。(2)の論理キャッシュ
を使用する場合には、タスク間スケジューリングの際
に、キャッシュ記憶上のデータをすべて削除しておかな
ければならない。
【0031】図5に、入出力割込み処理のフローチャー
トを示す。本実施例では、入出力割込み発生によりOS
130が全ての割込み処理を行うものとして説明する。
まず、入出力割込み発生時には、システムを割込み以前
の状態に復帰できるように、割込み処理中に使用するレ
ジスタの値を退避する(s171)。
トを示す。本実施例では、入出力割込み発生によりOS
130が全ての割込み処理を行うものとして説明する。
まず、入出力割込み発生時には、システムを割込み以前
の状態に復帰できるように、割込み処理中に使用するレ
ジスタの値を退避する(s171)。
【0032】CPU110の種類によっては、汎用レジ
スタを2面(バンク0、バンク1)有し、割込み発生と
同時にハードウェア的にバンク切り替えが行われるもの
もある。このようなプロセッサを使用する場合は、レジ
スタ値の退避を行わなくてもよい。なお、以降の割込み
処理は割込み禁止状態(別の割込みが受け付けられない
状態)で実行する必要があるが、通常のプロセッサは割
込み発生と同時に割込み禁止状態に移行するため、図示
を省略している。
スタを2面(バンク0、バンク1)有し、割込み発生と
同時にハードウェア的にバンク切り替えが行われるもの
もある。このようなプロセッサを使用する場合は、レジ
スタ値の退避を行わなくてもよい。なお、以降の割込み
処理は割込み禁止状態(別の割込みが受け付けられない
状態)で実行する必要があるが、通常のプロセッサは割
込み発生と同時に割込み禁止状態に移行するため、図示
を省略している。
【0033】s172〜s175は論理空間の切り替え
処理を示している。これらの処理が論理空間切り替えル
ーチン135に対応するが、実際の論理空間の切り替え
を行なう部分はs174〜s175である。図6のOS
データ構造を参照しながら、基本的な論理空間の切り替
え処理を説明する。
処理を示している。これらの処理が論理空間切り替えル
ーチン135に対応するが、実際の論理空間の切り替え
を行なう部分はs174〜s175である。図6のOS
データ構造を参照しながら、基本的な論理空間の切り替
え処理を説明する。
【0034】まず、ページテーブルの切り替えを行う
(s174)。ここでは、ページテーブルエントリアド
レス140に、入出力要求発行元タスクに対応するペー
ジテーブルの先頭アドレスを登録するだけである。例え
ば、入出力要求発行元タスクがタスク134であった場
合、ページテーブル144の先頭アドレスをページテー
ブルエントリアドレス140に格納する。
(s174)。ここでは、ページテーブルエントリアド
レス140に、入出力要求発行元タスクに対応するペー
ジテーブルの先頭アドレスを登録するだけである。例え
ば、入出力要求発行元タスクがタスク134であった場
合、ページテーブル144の先頭アドレスをページテー
ブルエントリアドレス140に格納する。
【0035】次に、入出力要求発行元タスクの番号を実
行中タスク番号150に登録する(s175)。この処
理は、CPU110の種類によって異なる。例えば、日
立製作所の提供するプロセッサSH−3などでは、現在
実行中のタスク番号を登録しておくためのレジスタが存
在する。一方、モトローラ社の提供するプロセッサMC
68030などでは、実行中タスク番号を登録するハー
ドウェアは存在しない。このため、MC68030など
のプロセッサを使用する場合、実行中タスク番号150
をOS内部データとして確保しておく必要があるが、S
H−3などのプロセッサではハードウェア上にそのまま
用意されているレジスタを、実行中タスク番号150と
して用いることができる。
行中タスク番号150に登録する(s175)。この処
理は、CPU110の種類によって異なる。例えば、日
立製作所の提供するプロセッサSH−3などでは、現在
実行中のタスク番号を登録しておくためのレジスタが存
在する。一方、モトローラ社の提供するプロセッサMC
68030などでは、実行中タスク番号を登録するハー
ドウェアは存在しない。このため、MC68030など
のプロセッサを使用する場合、実行中タスク番号150
をOS内部データとして確保しておく必要があるが、S
H−3などのプロセッサではハードウェア上にそのまま
用意されているレジスタを、実行中タスク番号150と
して用いることができる。
【0036】以上で、基本的な論理空間切り替え処理は
終了する。しかし、割込み直前まで実行していたタスク
の論理空間のデータがTLB115、キャッシュ記憶1
16内に残っている可能性がある。この場合、s172
〜s173で予めデータを削除しておかなければならな
い。
終了する。しかし、割込み直前まで実行していたタスク
の論理空間のデータがTLB115、キャッシュ記憶1
16内に残っている可能性がある。この場合、s172
〜s173で予めデータを削除しておかなければならな
い。
【0037】まず、s172でTLBの内容の無効化を
行う。通常のプロセッサでは、TLBの全内容を無効化
するための機能を有しており、これによりTLBの内容
をすべて削除する。しかし、タスク番号をエントリ内に
有するTLB(図4)では、異なったタスクの同一論理
ページ番号を区別することができるので、TLBエント
リの無効化を行う必要が無い。
行う。通常のプロセッサでは、TLBの全内容を無効化
するための機能を有しており、これによりTLBの内容
をすべて削除する。しかし、タスク番号をエントリ内に
有するTLB(図4)では、異なったタスクの同一論理
ページ番号を区別することができるので、TLBエント
リの無効化を行う必要が無い。
【0038】論理アドレスをインデクスとする論理キャ
ッシュを装備したCPUを使用している場合、新たな論
理空間の下でs173の処理を実行して、キャッシュ記
憶上のデータをすべて無効化する。なお、ライトバック
キャッシュの場合は、書き戻す必要がある。
ッシュを装備したCPUを使用している場合、新たな論
理空間の下でs173の処理を実行して、キャッシュ記
憶上のデータをすべて無効化する。なお、ライトバック
キャッシュの場合は、書き戻す必要がある。
【0039】次に、s176で割込み処理を行う。入出
力割込み処理では、入出力制御装置112を介して読み
出したデータまたは出力した結果を、入出力要求を発行
したタスクが提供する領域に格納する。上述の切り替え
処理で、入出力要求発行元のタスクの論理空間への切り
替えが済んでいるので、本割込み処理ではデータを直
接、入出力要求発行元のタスクが提供する領域に格納す
ることができる。
力割込み処理では、入出力制御装置112を介して読み
出したデータまたは出力した結果を、入出力要求を発行
したタスクが提供する領域に格納する。上述の切り替え
処理で、入出力要求発行元のタスクの論理空間への切り
替えが済んでいるので、本割込み処理ではデータを直
接、入出力要求発行元のタスクが提供する領域に格納す
ることができる。
【0040】このため、入出力データを一時的にOSの
バッファなどに格納する必要はなく、メモリを効率的に
活用することができる。また、タスク実行環境のすべて
を切り替える必要が無いため、特に、タスク番号を格納
できるTLBと物理キャッシュ(もしくは、論理アドレ
スとタスク番号をインデクスとする論理キャッシュ)を
用いたCPUの場合、ページテーブルエントリアドレス
140と実行中タスク番号の書き換えのオーバヘッドの
みで、入出力データを要求元タスクの領域に格納するこ
とができる。
バッファなどに格納する必要はなく、メモリを効率的に
活用することができる。また、タスク実行環境のすべて
を切り替える必要が無いため、特に、タスク番号を格納
できるTLBと物理キャッシュ(もしくは、論理アドレ
スとタスク番号をインデクスとする論理キャッシュ)を
用いたCPUの場合、ページテーブルエントリアドレス
140と実行中タスク番号の書き換えのオーバヘッドの
みで、入出力データを要求元タスクの領域に格納するこ
とができる。
【0041】次に、s177〜s180で、再び、割込
み発生前の論理空間へ切り替える。これらの処理は、s
172〜s175と同様になる。最後に、s181で退
避したレジスタを回復し、割込み発生前に実行していた
処理を継続する。なお、2面のレジスタを有しているC
PUでは、割込み終了と同時にバンク切り替えが行われ
るため、レジスタ回復を行う必要はない。
み発生前の論理空間へ切り替える。これらの処理は、s
172〜s175と同様になる。最後に、s181で退
避したレジスタを回復し、割込み発生前に実行していた
処理を継続する。なお、2面のレジスタを有しているC
PUでは、割込み終了と同時にバンク切り替えが行われ
るため、レジスタ回復を行う必要はない。
【0042】図7に、入出力割込み処理のシステム動作
をタイムチャートで示す。同図(a)が従来例、(b)
が本実施例の処理で、時点〜の動作は同じとなる。
をタイムチャートで示す。同図(a)が従来例、(b)
が本実施例の処理で、時点〜の動作は同じとなる。
【0043】マルチタスク実行システムで一つのタスク
が入出力要求を発行すると、その入出力処理の完了まで
の間、当該タスクは処理を継続することなく待ち状態に
移行する。このとき、CPUを効率的に使用するため、
別の実行可能状態にあるタスクが処理を実行する(別タ
スクがスケジューリングされる)。このようなタスクの
状態として、run(実行)状態(タスクがCPUによ
り実行されている状態)、ready(実行可能)状態
(処理可能であるが、別タスクがCPUを占有している
状態)、wait(待ち)状態(入出力完了などを待っ
ている状態)の3通りがある。
が入出力要求を発行すると、その入出力処理の完了まで
の間、当該タスクは処理を継続することなく待ち状態に
移行する。このとき、CPUを効率的に使用するため、
別の実行可能状態にあるタスクが処理を実行する(別タ
スクがスケジューリングされる)。このようなタスクの
状態として、run(実行)状態(タスクがCPUによ
り実行されている状態)、ready(実行可能)状態
(処理可能であるが、別タスクがCPUを占有している
状態)、wait(待ち)状態(入出力完了などを待っ
ている状態)の3通りがある。
【0044】図7の例は2つのタスクが存在し、初期状
態として、タスク1(Task1)が実行状態、タスク2(T
ask2)が実行可能状態である。この状況で、タスク1が
入出力処理要求を発行したとする(の時点)。これを
受け付けたOSは、直にタスク1を待ち状態に移行さ
せ、入出力制御装置(I/O)に対して、I/O要求を
発行する(の時点)。
態として、タスク1(Task1)が実行状態、タスク2(T
ask2)が実行可能状態である。この状況で、タスク1が
入出力処理要求を発行したとする(の時点)。これを
受け付けたOSは、直にタスク1を待ち状態に移行さ
せ、入出力制御装置(I/O)に対して、I/O要求を
発行する(の時点)。
【0045】次に、OSは、タスク1が待ち状態の間も
CPUを利用するため、実行可能状態のタスク2をスケ
ジューリングする。このため、タスク1の実行環境(論
理空間、レジスタ値、ファイルなど)をタスク2の実行
環境に切り替え(〜)、タスク2が実行状態に移行
する。
CPUを利用するため、実行可能状態のタスク2をスケ
ジューリングする。このため、タスク1の実行環境(論
理空間、レジスタ値、ファイルなど)をタスク2の実行
環境に切り替え(〜)、タスク2が実行状態に移行
する。
【0046】タスク2の実行中に入出力制御装置から、
I/O完了割込みが発生したとする(の時点)。この
時点はタスク2の実行環境であるため、タスク1の論理
空間を参照することができない。このため、従来は入出
力処理の結果をOS内のバッファにコピーしておく
((a)の〜)。ここで、OSは、タスク1を実行
可能状態にすると同時に、タスク2の処理を継続させ
る。
I/O完了割込みが発生したとする(の時点)。この
時点はタスク2の実行環境であるため、タスク1の論理
空間を参照することができない。このため、従来は入出
力処理の結果をOS内のバッファにコピーしておく
((a)の〜)。ここで、OSは、タスク1を実行
可能状態にすると同時に、タスク2の処理を継続させ
る。
【0047】タスク2の処理が終了すると(の時
点)、OSは直ちにタスク1の実行環境に切り替える
((a)の〜)、次に、バッファにコピーしておい
た入出力処理の結果をタスク1の論理空間に転送し
((a)の〜)、その後、タスク1が実行状態に移
行する。
点)、OSは直ちにタスク1の実行環境に切り替える
((a)の〜)、次に、バッファにコピーしておい
た入出力処理の結果をタスク1の論理空間に転送し
((a)の〜)、その後、タスク1が実行状態に移
行する。
【0048】このように、従来はI/O完了割込み時に
入出力処理結果を一時格納するバッファが必要である。
また、タスク1の再実行時にバッファからの転送が必要
となり、直ちにタスク1を実行することができない。
入出力処理結果を一時格納するバッファが必要である。
また、タスク1の再実行時にバッファからの転送が必要
となり、直ちにタスク1を実行することができない。
【0049】一方、本実施例では、I/O完了割込みが
発生すると(の時点)、OSは論理空間のみをタスク
1のそれに切り替える((b)の〜)。この切り替
え処理は、レジスタ値、ファイルなど、論理空間以外の
タスク実行環境に対しての切替えを行わないため、非常
に高速に行うことができる。切り替え後、OSは入出力
処理の結果を直接タスク1の論理空間に書き込む
((b)の〜)。次に、論理空間のみを再びタスク
2のそれに切り替え((b)の〜)、タスク2の処
理を再開させる。
発生すると(の時点)、OSは論理空間のみをタスク
1のそれに切り替える((b)の〜)。この切り替
え処理は、レジスタ値、ファイルなど、論理空間以外の
タスク実行環境に対しての切替えを行わないため、非常
に高速に行うことができる。切り替え後、OSは入出力
処理の結果を直接タスク1の論理空間に書き込む
((b)の〜)。次に、論理空間のみを再びタスク
2のそれに切り替え((b)の〜)、タスク2の処
理を再開させる。
【0050】タスク2が(b)のの時点で終了する
と、既に入出力処理の結果がタスク1の論理空間に格納
されているので、OSはタスク1の実行環境に切り替え
る((b)の〜)だけで、タスク1が実行される。
と、既に入出力処理の結果がタスク1の論理空間に格納
されているので、OSはタスク1の実行環境に切り替え
る((b)の〜)だけで、タスク1が実行される。
【0051】本実施例によれば、I/O完了時点でタス
ク1の論理空間に結果を書き込むため、バッファが不要
で、かつタスク1はタスク2の終了後、直ちにスケジュ
ーリングされる。
ク1の論理空間に結果を書き込むため、バッファが不要
で、かつタスク1はタスク2の終了後、直ちにスケジュ
ーリングされる。
【0052】
【発明の効果】本発明のマルチタスク実行システムによ
れば、入出力割込み発生時に、入出力要求発行元のタス
クの領域で直接入出力データを参照することができるた
め、該タスクが再スケジューリングされるまでの一時的
な入出力データ用領域を設ける必要が無く、効率的なメ
モリ管理を行うことができる。
れば、入出力割込み発生時に、入出力要求発行元のタス
クの領域で直接入出力データを参照することができるた
め、該タスクが再スケジューリングされるまでの一時的
な入出力データ用領域を設ける必要が無く、効率的なメ
モリ管理を行うことができる。
【0053】また、本発明の割込み処理方法によれば、
OSから入出力要求元タスクへの入出力データの転送が
不要で、かつ、入出力割込みと復帰時に論理空間のみを
切り替えればよいので、オーバーヘッドが小さく処理を
高速化できる。
OSから入出力要求元タスクへの入出力データの転送が
不要で、かつ、入出力割込みと復帰時に論理空間のみを
切り替えればよいので、オーバーヘッドが小さく処理を
高速化できる。
【図1】本発明の一実施例を示すシステム構成図。
【図2】論理空間の構成を示す概念図。
【図3】OS内部のデータ構造を示す概念図。
【図4】タスク番号を登録できるTLBの構成を示す概
念図。
念図。
【図5】本発明の一実施例を示す入出力割込み処理のフ
ローチャート。
ローチャート。
【図6】論理空間切り替えのOS内部のデータ構造を示
す概念図。
す概念図。
【図7】入出力割込み処理のシステム動作の従来例と本
実施例を示すタイムチャート。
実施例を示すタイムチャート。
【符号の説明】 100…計算機、110…中央処理装置、111…主記
憶装置、112…入出力制御装置、113…ディスク装
置、114…端末、115…TLB、116…キャッシ
ュ記憶、120…CPUバス、130…OS、131〜
134…タスク、135…論理空間切り替えルーチン、
140…ページテーブルエントリアドレス、141〜1
44…ページテーブル、150…実行中タスク番号、1
51〜154…タスク制御ブロック、160…論理ペー
ジ番号、161…タスク番号、162…物理ページ番
号。
憶装置、112…入出力制御装置、113…ディスク装
置、114…端末、115…TLB、116…キャッシ
ュ記憶、120…CPUバス、130…OS、131〜
134…タスク、135…論理空間切り替えルーチン、
140…ページテーブルエントリアドレス、141〜1
44…ページテーブル、150…実行中タスク番号、1
51〜154…タスク制御ブロック、160…論理ペー
ジ番号、161…タスク番号、162…物理ページ番
号。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 金子 茂則 茨城県日立市大みか町五丁目2番1号 株 式会社日立製作所大みか工場内
Claims (5)
- 【請求項1】 複数のタスクがそれぞれの論理空間を有
して動作するときの入出力割込み方法において、 前記タスクの一つが発行した入出力要求に対応する割込
みが発生した場合、タスク実行環境のうち、論理空間の
みを稼働中のタスクから前記入出力要求元のタスクのそ
れに切り替えることを特徴とする割込み処理方法。 - 【請求項2】 複数のタスクがそれぞれの論理空間を有
して動作するときの入出力割込み方法において、 前記タスクの一つが発行した入出力要求に対応する入出
力完了の割込みが他のタスクの実行中に発生した場合
に、当該割込み処理に必要なレジスタの値を退避し、前
記入出力要求を発行したタスクの論理空間に切り替え、
割込み処理ルーチンを実行し、その後、前記割込みを受
けたタスクの論理空間に再切り替えを行い、前記レジス
タの値を復帰することを特徴とする割込み処理方法。 - 【請求項3】 請求項2において、 前記割込み処理ルーチンは、前記入出力要求を発行した
タスクの論理空間上の領域との間で直接、入出力データ
を読み書きすることを特徴とする割込み処理方法。 - 【請求項4】 複数のタスクがそれぞれの論理空間を有
して動作するマルチタスク実行システムにおいて、 前記タスクの一つが発行した入出力要求に対応する入出
力完了割込みが発生した場合、稼働中のタスクと入出力
要求元タスクの論理空間のみを切り替える手段を備えた
ことを特徴とするマルチタスク実行システム。 - 【請求項5】 複数のタスクがそれぞれの論理空間を有
して動作するマルチタスク実行システムにおいて、 オペレーティングシステム(OS)が、入出力要求の発
行元タスクを記憶し、前記入出力要求に対応する割込み
が発生した場合、前記発行元タスクの論理空間に切り替
えた後、割込み処理を実行させることを特徴とするマル
チタスク実行システム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP28211097A JPH11120011A (ja) | 1997-10-15 | 1997-10-15 | 割込み処理方法およびマルチタスク実行システム |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP28211097A JPH11120011A (ja) | 1997-10-15 | 1997-10-15 | 割込み処理方法およびマルチタスク実行システム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH11120011A true JPH11120011A (ja) | 1999-04-30 |
Family
ID=17648263
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP28211097A Pending JPH11120011A (ja) | 1997-10-15 | 1997-10-15 | 割込み処理方法およびマルチタスク実行システム |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH11120011A (ja) |
-
1997
- 1997-10-15 JP JP28211097A patent/JPH11120011A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6408325B1 (en) | Context switching technique for processors with large register files | |
| US8032716B2 (en) | System, method and computer program product for providing a new quiesce state | |
| US20060149940A1 (en) | Implementation to save and restore processor registers on a context switch | |
| US5621896A (en) | Data processor with unified store queue permitting hit under miss memory accesses | |
| JPH08278918A (ja) | エンディアンタスクを実行するシステム及び方法 | |
| KR20030072550A (ko) | 데이터 처리장치와 복귀상태의 저장방법 | |
| US6035376A (en) | System and method for changing the states of directory-based caches and memories from read/write to read-only | |
| JP2829115B2 (ja) | ファイル共用方法 | |
| JP5131269B2 (ja) | マルチプロセッシングシステム | |
| US6675238B1 (en) | Each of a plurality of descriptors having a completion indicator and being stored in a cache memory of an input/output processor | |
| JP3088303B2 (ja) | キャッシュ・メモリ・バンク制御装置 | |
| JP2002202960A (ja) | データ処理方法および装置 | |
| JPH11120011A (ja) | 割込み処理方法およびマルチタスク実行システム | |
| JPS603229B2 (ja) | 情報処理方式 | |
| JPH0552539B2 (ja) | ||
| JP3163196B2 (ja) | 仮想記憶制御における命令中断情報格納制御方法 | |
| JP3052460B2 (ja) | 協調処理型情報処理装置 | |
| JPH0133856B2 (ja) | ||
| JPH0447350A (ja) | 主記憶読み出し応答制御方式 | |
| JP2517859B2 (ja) | 並列プロセス管理方法 | |
| JPH0567973B2 (ja) | ||
| JP3574693B2 (ja) | 命令処理プロセッサ | |
| JP2718676B2 (ja) | 仮想記憶ダンプ処理方法 | |
| JPH0628303A (ja) | 通信処理装置 | |
| JPS6232554A (ja) | 拡張記憶制御方式 |