JP2000315162A - 制御ブロック処理装置及び制御ブロック処理プログラムを記録したコンピュータ読み取り可能な記録媒体 - Google Patents
制御ブロック処理装置及び制御ブロック処理プログラムを記録したコンピュータ読み取り可能な記録媒体Info
- Publication number
- JP2000315162A JP2000315162A JP11123675A JP12367599A JP2000315162A JP 2000315162 A JP2000315162 A JP 2000315162A JP 11123675 A JP11123675 A JP 11123675A JP 12367599 A JP12367599 A JP 12367599A JP 2000315162 A JP2000315162 A JP 2000315162A
- Authority
- JP
- Japan
- Prior art keywords
- control block
- processing
- address
- link structure
- structure data
- 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)【要約】
【課題】排他的なリンク構造を持つデータの処理におい
て、割り込み禁止時間を短縮化するとともに、割り込み
禁止時間の短縮化を施した場合のシステムコールにかか
る処理時間の増加を短縮化する。 【解決手段】次回処理対象となるデータのアドレスを求
めて記憶するための次回処理対象データアドレス記憶領
域105を外部参照可能なメモリ領域に設ける。システ
ムコール処理中の一時的に割り込みを許可した時に発生
した割り込みにより、割り込まれたシステムコール処理
内で扱っていたリンク構造データのリンク構造が他のシ
ステムコール処理により変更されたとき、リンク構造を
変更した側のシステムコール処理部において前記次回処
理対象データアドレス記憶領域105に変更後のリンク
構造データの最適なデータアドレスを設定する。
て、割り込み禁止時間を短縮化するとともに、割り込み
禁止時間の短縮化を施した場合のシステムコールにかか
る処理時間の増加を短縮化する。 【解決手段】次回処理対象となるデータのアドレスを求
めて記憶するための次回処理対象データアドレス記憶領
域105を外部参照可能なメモリ領域に設ける。システ
ムコール処理中の一時的に割り込みを許可した時に発生
した割り込みにより、割り込まれたシステムコール処理
内で扱っていたリンク構造データのリンク構造が他のシ
ステムコール処理により変更されたとき、リンク構造を
変更した側のシステムコール処理部において前記次回処
理対象データアドレス記憶領域105に変更後のリンク
構造データの最適なデータアドレスを設定する。
Description
【0001】
【産業上の利用分野】本発明は、リンク情報を用いて結
合されている複数の制御ブロックに対して処理を行う制
御ブロック処理装置及び制御ブロック処理プログラムを
記録したコンピュータ読み取り可能な記録媒体に関す
る。
合されている複数の制御ブロックに対して処理を行う制
御ブロック処理装置及び制御ブロック処理プログラムを
記録したコンピュータ読み取り可能な記録媒体に関す
る。
【0002】
【従来の技術】高度情報化社会の余波は家電業界にまで
押し寄せており、将来における家電製品の高機能化の要
望に応じるため、これら家電製品向けの基盤ソフトウェ
アの整備を行うことや、即時応答性が高いオペレーティ
ングシステムの開発を行うことが急務になりつつある
(オペレーティングシステムをOSと略記する。また即時
応答性が求められるOSをリアルタイムシステムとい
う)。
押し寄せており、将来における家電製品の高機能化の要
望に応じるため、これら家電製品向けの基盤ソフトウェ
アの整備を行うことや、即時応答性が高いオペレーティ
ングシステムの開発を行うことが急務になりつつある
(オペレーティングシステムをOSと略記する。また即時
応答性が求められるOSをリアルタイムシステムとい
う)。
【0003】このようなリアルタイムシステムには、汎
用コンピュータ向けのOSと同様、複数タスクの実行順序
管理やフリーメモリブロックの割当順序管理といったシ
ステムの基盤制御が求められる。ここで複数タスク実行
順序管理とは、メモリに複数のタスクがロードされてい
る場合、各タスクの優先度の高低や実行待ち状態になっ
た時刻順に基づいて各タスクをどのような順序で実行し
てゆくかを定めて、その実行順序に応じて順次起動して
ゆくという基盤制御である。
用コンピュータ向けのOSと同様、複数タスクの実行順序
管理やフリーメモリブロックの割当順序管理といったシ
ステムの基盤制御が求められる。ここで複数タスク実行
順序管理とは、メモリに複数のタスクがロードされてい
る場合、各タスクの優先度の高低や実行待ち状態になっ
た時刻順に基づいて各タスクをどのような順序で実行し
てゆくかを定めて、その実行順序に応じて順次起動して
ゆくという基盤制御である。
【0004】複数フリーメモリブロックの割当順序管理
とは、メモリ上の空き領域に相当するフリーメモリブロ
ックをどの順序でタスクに割り当てるかを定めて、タス
クが要求するメモリサイズに応じて、複数のフリーメモ
リブロックのうち何れかを、要求元のタスクに割り当て
てゆくという基盤制御である。また家電機器等における
状態変化は、割り込み処理により通知されるので、リア
ルタイムシステムでは、割り込み処理に対しての即時応
答性を保証しつつも複数タスクの実行順序管理やフリー
メモリブロックの割当順序管理を行わねばならない。
とは、メモリ上の空き領域に相当するフリーメモリブロ
ックをどの順序でタスクに割り当てるかを定めて、タス
クが要求するメモリサイズに応じて、複数のフリーメモ
リブロックのうち何れかを、要求元のタスクに割り当て
てゆくという基盤制御である。また家電機器等における
状態変化は、割り込み処理により通知されるので、リア
ルタイムシステムでは、割り込み処理に対しての即時応
答性を保証しつつも複数タスクの実行順序管理やフリー
メモリブロックの割当順序管理を行わねばならない。
【0005】以下、従来のOSについて説明する。図14
は、OSの基本機能を説明するためのブロック図であり、
タスクの実行順序管理、フリーメモリブロックの割当順
序管理に直接関係する機能ブロックを示したもので、他
の部分は省略してある。割り込み処理部112は、図示
しない入出力機器などからの割り込みを受け、それに応
じて必要であるならばOSの提供するシステムコールサー
ビス141を呼び出す。
は、OSの基本機能を説明するためのブロック図であり、
タスクの実行順序管理、フリーメモリブロックの割当順
序管理に直接関係する機能ブロックを示したもので、他
の部分は省略してある。割り込み処理部112は、図示
しない入出力機器などからの割り込みを受け、それに応
じて必要であるならばOSの提供するシステムコールサー
ビス141を呼び出す。
【0006】システムコールサービスとは、OSから提供
される同期制御、排他制御、タスク間通信機能、メモリ
管理機能などの基本的なルーチン処理である。呼び出さ
れたシステムコールサービス141はシステムコール処
理部201にて対応する処理を実行し、このとき必要で
あればタスクのステータスを変更する。システムコール
処理部201にてタスクステータスが変更された場合、
割り込み処理によりタスクのステータス変更が発生した
という事象をタスクスケジューラ202に通知する。タ
スクステータスとは、タスクが入出力を待っている状態
などを示す状態フラグであり、このステータスが変化す
ることは、事象待ち状態のタスクを実行可能状態に遷移
したり、実行されていたタスクが事象待ち状態に遷移す
ることを意味する。尚、タスク管理に関するシステムコ
ール、フリーメモリブロックに関するシステムコールに
は、『rel_wait』、『set_flg』、『wait_flg』、『rel
_blk』といったものがある。
される同期制御、排他制御、タスク間通信機能、メモリ
管理機能などの基本的なルーチン処理である。呼び出さ
れたシステムコールサービス141はシステムコール処
理部201にて対応する処理を実行し、このとき必要で
あればタスクのステータスを変更する。システムコール
処理部201にてタスクステータスが変更された場合、
割り込み処理によりタスクのステータス変更が発生した
という事象をタスクスケジューラ202に通知する。タ
スクステータスとは、タスクが入出力を待っている状態
などを示す状態フラグであり、このステータスが変化す
ることは、事象待ち状態のタスクを実行可能状態に遷移
したり、実行されていたタスクが事象待ち状態に遷移す
ることを意味する。尚、タスク管理に関するシステムコ
ール、フリーメモリブロックに関するシステムコールに
は、『rel_wait』、『set_flg』、『wait_flg』、『rel
_blk』といったものがある。
【0007】システムコールset_flg()とは、事象フラ
グがある値に設定されたことを通知するシステムコール
である。システムコールrel_wait()とは、あるタスクの
事象成立待ち状態を強制解除するシステムコールであ
る。システムコールwait_flg()とは、任意のタスクを事
象成立待ち状態として新たにエントリーするシステムコ
ールである。
グがある値に設定されたことを通知するシステムコール
である。システムコールrel_wait()とは、あるタスクの
事象成立待ち状態を強制解除するシステムコールであ
る。システムコールwait_flg()とは、任意のタスクを事
象成立待ち状態として新たにエントリーするシステムコ
ールである。
【0008】システムコールrel_blkは、任意のサイズ
のフリーメモリブロックを開放する旨のシステムコール
である。タスクスケジューラ202は、割り込みによる
タスクの状態変化を反映し、タスク全体の実行順序を新
たに決定し、ディスパッチャ203にタスクの切り換え
を通知する。
のフリーメモリブロックを開放する旨のシステムコール
である。タスクスケジューラ202は、割り込みによる
タスクの状態変化を反映し、タスク全体の実行順序を新
たに決定し、ディスパッチャ203にタスクの切り換え
を通知する。
【0009】ディスパッチャ203は現在の実行タスク
を中断し、タスクスケジューラ202により決定したタ
スクを新たな実行タスクに切り替える。即時応答性が要
求されるリアルタイムシステムでは、タスクに緊急度に
応じた優先度を付けておき、タスクスケジューラ202
がこの優先度を元に、優先度の高いタスクから順に実行
するようスケジューリングを行う。
を中断し、タスクスケジューラ202により決定したタ
スクを新たな実行タスクに切り替える。即時応答性が要
求されるリアルタイムシステムでは、タスクに緊急度に
応じた優先度を付けておき、タスクスケジューラ202
がこの優先度を元に、優先度の高いタスクから順に実行
するようスケジューリングを行う。
【0010】通常、使用メモリ容量の節約などから、個
々の割り込み処理やタスクに対して専用のOSが用意され
ているわけではなく、OSは割り込み処理およびタスクの
共通ルーチンとなっている。これはシステムコールが呼
び出され処理が完了する前に、同一のシステムコールが
呼び出される可能性があることを意味する。このような
性質をもつルーチンをリエントラントルーチン(再入可
能性を有するルーチン)と呼ぶ。
々の割り込み処理やタスクに対して専用のOSが用意され
ているわけではなく、OSは割り込み処理およびタスクの
共通ルーチンとなっている。これはシステムコールが呼
び出され処理が完了する前に、同一のシステムコールが
呼び出される可能性があることを意味する。このような
性質をもつルーチンをリエントラントルーチン(再入可
能性を有するルーチン)と呼ぶ。
【0011】図15は、リエントラントルーチンを説明
するための図である。図15(a)はリエントラントで
はないシステムコールの例であり、図15(b)(c)
はリエントラントルーチンの例である。図15(a)
は、リエントラントにしないため、システムコール処理
を全割り込み禁止としていることにより、割り込み発生
と割り込み処理開始との間に時間のずれが生じている。
図15(b)は、タスクAのシステムコール処理中に外
部割り込みが発生し、割り込み処理から同一システムコ
ールの呼び出しが行われる例を示している。図15
(c)は、タスクAのシステムコールが処理されている
間に外部割り込みが発生し、割り込み処理部から呼び出
された他のシステムコールによりタスクBの切り換えが
発生し、その切り換わったタスクBからの割り込みによ
り中断されたシステムコールの呼び出しが行われる例で
ある。
するための図である。図15(a)はリエントラントで
はないシステムコールの例であり、図15(b)(c)
はリエントラントルーチンの例である。図15(a)
は、リエントラントにしないため、システムコール処理
を全割り込み禁止としていることにより、割り込み発生
と割り込み処理開始との間に時間のずれが生じている。
図15(b)は、タスクAのシステムコール処理中に外
部割り込みが発生し、割り込み処理から同一システムコ
ールの呼び出しが行われる例を示している。図15
(c)は、タスクAのシステムコールが処理されている
間に外部割り込みが発生し、割り込み処理部から呼び出
された他のシステムコールによりタスクBの切り換えが
発生し、その切り換わったタスクBからの割り込みによ
り中断されたシステムコールの呼び出しが行われる例で
ある。
【0012】複数タスクの実行順序管理やフリーメモリ
ブロックの割当順序管理は、このようなリエントラント
という性質を持つシステムコールによって行われるのが
理想的である。また、複数タスクの実行順序管理やフリ
ーメモリブロックの割当順序管理はリンク構造データを
用いることにより管理されている点で共通している。続
いて複数タスクの実行順序管理に用いられるリンク構造
データの一例について説明する。
ブロックの割当順序管理は、このようなリエントラント
という性質を持つシステムコールによって行われるのが
理想的である。また、複数タスクの実行順序管理やフリ
ーメモリブロックの割当順序管理はリンク構造データを
用いることにより管理されている点で共通している。続
いて複数タスクの実行順序管理に用いられるリンク構造
データの一例について説明する。
【0013】図16は、リンクヘッダ90と、複数のTa
sk Control Block(TCB)からなるリンク構造データの一
例を示す図である。リンクヘッダ90はイベントフラグ
管理ブロックとも呼ばれ、複数のTCBのうち、最初に実
行すべきTCBのアドレスが設定されるリンク先頭データ
アドレス記憶領域92と、リアルタイムシステムにおい
て成立している事象を示す値が設定される事象フラグ値
93とを有する。
sk Control Block(TCB)からなるリンク構造データの一
例を示す図である。リンクヘッダ90はイベントフラグ
管理ブロックとも呼ばれ、複数のTCBのうち、最初に実
行すべきTCBのアドレスが設定されるリンク先頭データ
アドレス記憶領域92と、リアルタイムシステムにおい
て成立している事象を示す値が設定される事象フラグ値
93とを有する。
【0014】3つのTCB91は、実行待ち状態にある3
つのタスク(タスク1、タスク2、タスク3)のそれぞれ
に対応するものであり、自身に対応するタスクを実行し
た後、次に実行すべきタスクのTCBを示すリンク情報9
4と、このタスクの実行待ち状態が解除されるための条
件を示す待ち条件解除情報95とを有する。図16の一
例において、リンクヘッダ90−リンク情報94のリン
ク関係を参照すると、TCB1のリンク情報94はTCB2と設
定され、TCB2のリンク情報94はTCB3、TCB3のリンク情
報94は"終了"と設定されている。
つのタスク(タスク1、タスク2、タスク3)のそれぞれ
に対応するものであり、自身に対応するタスクを実行し
た後、次に実行すべきタスクのTCBを示すリンク情報9
4と、このタスクの実行待ち状態が解除されるための条
件を示す待ち条件解除情報95とを有する。図16の一
例において、リンクヘッダ90−リンク情報94のリン
ク関係を参照すると、TCB1のリンク情報94はTCB2と設
定され、TCB2のリンク情報94はTCB3、TCB3のリンク情
報94は"終了"と設定されている。
【0015】図16のリンク構造データは、TCB1→TCB2
→TCB3→"終了"といった順に実行順序が与えられている
ことがわかる。この実行順序は、各タスクについての優
先度の高低や実行待ち状態になった時刻順に基づいて定
められている。またTCB1における待ち条件解除情報95
は"1"と設定され、TCB2における待ち条件解除情報95
は"2"と設定されているので、TCB1、TCB2は事象フラグ
値93が"1"、"2"という値に設定されるのを待ってお
り、未だ何れのTCBも実行待ち状態にあることがわか
る。ここで事象フラグ値93が"1"になれば、TCB1の事
象成立待ち状態が解除され、事象フラグ値93が"2"に
なればTCB2の事象成立待ち状態が解除される。このよう
なリンク構造データは外部参照領域に配置される。ここ
で外部参照領域とは、大域的領域とも呼ばれ、システム
コール、割り込み処理、タスクの何れもが共通にアクセ
スすることができるメモリ領域をいう。外部参照領域に
対して、システムコール、割り込み処理、タスクのそれ
ぞれが専用にアクセスすることができるメモリ領域を局
所的領域という。
→TCB3→"終了"といった順に実行順序が与えられている
ことがわかる。この実行順序は、各タスクについての優
先度の高低や実行待ち状態になった時刻順に基づいて定
められている。またTCB1における待ち条件解除情報95
は"1"と設定され、TCB2における待ち条件解除情報95
は"2"と設定されているので、TCB1、TCB2は事象フラグ
値93が"1"、"2"という値に設定されるのを待ってお
り、未だ何れのTCBも実行待ち状態にあることがわか
る。ここで事象フラグ値93が"1"になれば、TCB1の事
象成立待ち状態が解除され、事象フラグ値93が"2"に
なればTCB2の事象成立待ち状態が解除される。このよう
なリンク構造データは外部参照領域に配置される。ここ
で外部参照領域とは、大域的領域とも呼ばれ、システム
コール、割り込み処理、タスクの何れもが共通にアクセ
スすることができるメモリ領域をいう。外部参照領域に
対して、システムコール、割り込み処理、タスクのそれ
ぞれが専用にアクセスすることができるメモリ領域を局
所的領域という。
【0016】なお、リンク構造データは、必ずしも前に
示したようなリンク情報にて接続されているデータ構造
だけではない。例えば可変長のデータが連続して配置さ
れており、各データのサイズ情報により任意データに対
する次データが求まるようなデータ構造もリンク構造デ
ータである。すなわち、任意の処理対象データが求まる
ことにより、次の処理対象データが求まるようなデータ
構造をリンク構造データと呼ぶ。
示したようなリンク情報にて接続されているデータ構造
だけではない。例えば可変長のデータが連続して配置さ
れており、各データのサイズ情報により任意データに対
する次データが求まるようなデータ構造もリンク構造デ
ータである。すなわち、任意の処理対象データが求まる
ことにより、次の処理対象データが求まるようなデータ
構造をリンク構造データと呼ぶ。
【0017】続いて、図16に示すリンク構造データを
用いて複数タスクを順次実行してゆく際の手順について
説明する。ここで留意すべきは、システムコール処理部
201が局所的領域に今回処理対象記憶領域、次回処理
対象記憶領域を設けて、今回起動すべきタスクと、次回
に起動すべきタスクとを特定する点である。図17は、
図16に示したリンク構造データに基づいて、今回処理
対象記憶領域と、次回処理対象記憶領域とが更新されて
ゆく様子(状態(a-1)、状態(a-2)、状態(a-3)、状態(a-
4)・・・・・・状態(a-7))を示す図であり、図18は、リン
ク構造データに示される複数のタスクが順次実行されて
ゆく様子を示す図である。これらの図において共通の符
号(a-1)(a-2)(a-3)・・・・・は、共通の状態を意味するもの
とする。
用いて複数タスクを順次実行してゆく際の手順について
説明する。ここで留意すべきは、システムコール処理部
201が局所的領域に今回処理対象記憶領域、次回処理
対象記憶領域を設けて、今回起動すべきタスクと、次回
に起動すべきタスクとを特定する点である。図17は、
図16に示したリンク構造データに基づいて、今回処理
対象記憶領域と、次回処理対象記憶領域とが更新されて
ゆく様子(状態(a-1)、状態(a-2)、状態(a-3)、状態(a-
4)・・・・・・状態(a-7))を示す図であり、図18は、リン
ク構造データに示される複数のタスクが順次実行されて
ゆく様子を示す図である。これらの図において共通の符
号(a-1)(a-2)(a-3)・・・・・は、共通の状態を意味するもの
とする。
【0018】(状態(a-1))システムコール処理部201
は、リンクヘッダ90におけるリンク先頭データアドレ
ス記憶領域92に示されているTCBのアドレスを今回処
理対象記憶領域に設定する。図17の一例では、リンク
ヘッダ90のリンク先頭データアドレス記憶領域92が
TCB1と設定されているので、今回処理対象記憶領域はTC
B1と設定される。これにより今回処理対象となるタスク
はタスク1と決定されたので、続いてタスク1の次に実行
すべきタスクを決定する。ここでタスク1に対応するTCB
1のリンク情報94はTCB2と設定されており、次回はこ
のTCB2に対応するタスク2を処理せねばならない。そこ
で、次回処理対象記憶領域にTCB2を設定して処理を終え
る。
は、リンクヘッダ90におけるリンク先頭データアドレ
ス記憶領域92に示されているTCBのアドレスを今回処
理対象記憶領域に設定する。図17の一例では、リンク
ヘッダ90のリンク先頭データアドレス記憶領域92が
TCB1と設定されているので、今回処理対象記憶領域はTC
B1と設定される。これにより今回処理対象となるタスク
はタスク1と決定されたので、続いてタスク1の次に実行
すべきタスクを決定する。ここでタスク1に対応するTCB
1のリンク情報94はTCB2と設定されており、次回はこ
のTCB2に対応するタスク2を処理せねばならない。そこ
で、次回処理対象記憶領域にTCB2を設定して処理を終え
る。
【0019】(状態(a-2))今回処理対象となったTCB1の
待ち条件解除情報95がどのような事象に設定されてい
るかを参照して、タスク1の事象成立待ち状態を解除す
るか維持するかを決定する。ここでTCB1の待ち条件解除
情報95は"1"と設定されており、リンクヘッダ90の
事象フラグ値93は"1"と設定されているので、タスク1
が待っていた事象が成立したことがわかる。待っていた
事象が成立したので、タスク1を実行すると共にリンク
構造データからTCB1を解除する。この解除時点におい
て、TCB1におけるリンク情報94は不定となる。また、
TCB1がリンク構造データから解除されたので、リンクヘ
ッダ90におけるリンク先頭データアドレス記憶領域9
2をTCB2に設定する。
待ち条件解除情報95がどのような事象に設定されてい
るかを参照して、タスク1の事象成立待ち状態を解除す
るか維持するかを決定する。ここでTCB1の待ち条件解除
情報95は"1"と設定されており、リンクヘッダ90の
事象フラグ値93は"1"と設定されているので、タスク1
が待っていた事象が成立したことがわかる。待っていた
事象が成立したので、タスク1を実行すると共にリンク
構造データからTCB1を解除する。この解除時点におい
て、TCB1におけるリンク情報94は不定となる。また、
TCB1がリンク構造データから解除されたので、リンクヘ
ッダ90におけるリンク先頭データアドレス記憶領域9
2をTCB2に設定する。
【0020】仮に次回処理対象記憶領域に次回処理対象
を設定する前にTCB1をリンク構造データから解除してし
まえば、次回処理対象記憶領域の設定値が不定となる。
これを避ける意味で、TCB1をリンク構造データから解除
する前に次回処理対象記憶領域を設定している。 (状態(a-3))システムコールサービス部201は、状態
(a-2)において次回処理対象記憶領域に示されているTCB
のアドレスを今回処理対象記憶領域に設定する。図17
の状態(a-1)では、次回処理対象記憶領域にTCB2のアド
レスが設定されているので、今回処理対象記憶領域はTC
B2と設定される。これにより今回処理対象となるタスク
はタスク2と決定されたので、続いてタスク2の次に実行
すべきタスクを決定する。ここでタスク2に対応するTCB
2のリンク情報94はTCB3と設定されており、次回はこ
のTCB3に対応するタスク3を処理せねばならない。そこ
で、次回処理対象記憶領域にTCB3を設定して処理を終え
る。
を設定する前にTCB1をリンク構造データから解除してし
まえば、次回処理対象記憶領域の設定値が不定となる。
これを避ける意味で、TCB1をリンク構造データから解除
する前に次回処理対象記憶領域を設定している。 (状態(a-3))システムコールサービス部201は、状態
(a-2)において次回処理対象記憶領域に示されているTCB
のアドレスを今回処理対象記憶領域に設定する。図17
の状態(a-1)では、次回処理対象記憶領域にTCB2のアド
レスが設定されているので、今回処理対象記憶領域はTC
B2と設定される。これにより今回処理対象となるタスク
はタスク2と決定されたので、続いてタスク2の次に実行
すべきタスクを決定する。ここでタスク2に対応するTCB
2のリンク情報94はTCB3と設定されており、次回はこ
のTCB3に対応するタスク3を処理せねばならない。そこ
で、次回処理対象記憶領域にTCB3を設定して処理を終え
る。
【0021】(状態(a-4))今回処理対象となったTCB2の
待ち条件解除情報95がどのような事象に設定されてい
るかを参照して、タスク2の事象成立待ち状態を解除す
るか、或は維持するかを決定する。ここでTCB2の待ち条
件解除情報95は"2"と設定されており、リンクヘッダ
90の事象フラグ値93は"1"と設定されているので、
タスク2が待っていた事象は不成立であることがわか
る。事象不成立なので、タスク2の実行をスキップす
る。実行スキップにより、リンクヘッダ90におけるリ
ンク先頭データアドレス記憶領域92の設定はTCB2のま
まとなる。
待ち条件解除情報95がどのような事象に設定されてい
るかを参照して、タスク2の事象成立待ち状態を解除す
るか、或は維持するかを決定する。ここでTCB2の待ち条
件解除情報95は"2"と設定されており、リンクヘッダ
90の事象フラグ値93は"1"と設定されているので、
タスク2が待っていた事象は不成立であることがわか
る。事象不成立なので、タスク2の実行をスキップす
る。実行スキップにより、リンクヘッダ90におけるリ
ンク先頭データアドレス記憶領域92の設定はTCB2のま
まとなる。
【0022】(状態(a-5))システムコールサービス部2
01は、状態(a-3)において次回処理対象記憶領域に示
されているTCBのアドレスを今回処理対象記憶領域に設
定する。図17の状態(a-3)では、次回処理対象記憶領
域にTCB3のアドレスが設定されているので、今回処理対
象記憶領域はTCB3と設定される。これにより今回処理対
象となるタスクはタスク3と決定されたので、続いてタ
スク3の次に実行すべきタスクを決定する。ここでタス
ク3に対応するTCB3のリンク情報94は終了と設定され
ており、次回で、リンク構造データにおけるタスク実行
を終了せねばならない。そこで、次回処理対象記憶領域
に終了を設定して処理を終える。
01は、状態(a-3)において次回処理対象記憶領域に示
されているTCBのアドレスを今回処理対象記憶領域に設
定する。図17の状態(a-3)では、次回処理対象記憶領
域にTCB3のアドレスが設定されているので、今回処理対
象記憶領域はTCB3と設定される。これにより今回処理対
象となるタスクはタスク3と決定されたので、続いてタ
スク3の次に実行すべきタスクを決定する。ここでタス
ク3に対応するTCB3のリンク情報94は終了と設定され
ており、次回で、リンク構造データにおけるタスク実行
を終了せねばならない。そこで、次回処理対象記憶領域
に終了を設定して処理を終える。
【0023】(状態(a-6))今回処理対象となったTCB3の
待ち条件解除情報95がどのような事象に設定されてい
るかを参照して、タスク3の事象成立待ち状態を解除す
るか、或は維持するかを決定する。ここでTCB3の待ち条
件解除情報95は"1"と設定されており、リンクヘッダ
90の事象フラグ値93は"1"と設定されているので、
タスク3が待っていた事象は成立したことがわかる。条
件一致なので、タスク3を実行し、TCB3をリンク構造デ
ータから解除する。この解除時点において、TCB3におけ
るリンク情報94は不定となる。リンクヘッダ90にお
けるリンク先頭データアドレス記憶領域92はTCB2に設
定したまま状態(a-7)に移行して、処理を終了する。
待ち条件解除情報95がどのような事象に設定されてい
るかを参照して、タスク3の事象成立待ち状態を解除す
るか、或は維持するかを決定する。ここでTCB3の待ち条
件解除情報95は"1"と設定されており、リンクヘッダ
90の事象フラグ値93は"1"と設定されているので、
タスク3が待っていた事象は成立したことがわかる。条
件一致なので、タスク3を実行し、TCB3をリンク構造デ
ータから解除する。この解除時点において、TCB3におけ
るリンク情報94は不定となる。リンクヘッダ90にお
けるリンク先頭データアドレス記憶領域92はTCB2に設
定したまま状態(a-7)に移行して、処理を終了する。
【0024】以上のように各タスクを実行する場合、今
回処理対象記憶領域、次回処理対象記憶領域、リンクヘ
ッダ90のリンク先頭データアドレス記憶領域92が不
定である状態において、割り込み処理が発生するのは望
ましくない。即ち、割り込み処理は今回処理対象記憶領
域と、次回処理対象記憶領域と、リンクヘッダ90のリ
ンク先頭データアドレス記憶領域92とが不定となる状
態(a-1)、状態(a-2)、状態(a-3)、状態(a-4)、状態(a-
5)、状態(a-6)において禁止すべきであり、これらが確
定しているの区間において許可すべきであること
がわかる。
回処理対象記憶領域、次回処理対象記憶領域、リンクヘ
ッダ90のリンク先頭データアドレス記憶領域92が不
定である状態において、割り込み処理が発生するのは望
ましくない。即ち、割り込み処理は今回処理対象記憶領
域と、次回処理対象記憶領域と、リンクヘッダ90のリ
ンク先頭データアドレス記憶領域92とが不定となる状
態(a-1)、状態(a-2)、状態(a-3)、状態(a-4)、状態(a-
5)、状態(a-6)において禁止すべきであり、これらが確
定しているの区間において許可すべきであること
がわかる。
【0025】図19は、以上の観点により、割り込み処
理発生の許可区間、禁止区間を設けた図である。また図
20は、割り込み処理発生時のメモリ領域の割り当てを
示す図である。図20において、リンクヘッダ90及び
リンク構造データは外部参照領域に配置されており、割
り込まれた側の処理、割り込んだ側の処理がそれぞれ独
自にシステムコールサービスを呼び出しており、これら
がそれぞれ局所的領域を確保している。確保された局所
的領域において、今回処理対象記憶領域と、次回処理対
象記憶領域とが確保されていることがわかる。
理発生の許可区間、禁止区間を設けた図である。また図
20は、割り込み処理発生時のメモリ領域の割り当てを
示す図である。図20において、リンクヘッダ90及び
リンク構造データは外部参照領域に配置されており、割
り込まれた側の処理、割り込んだ側の処理がそれぞれ独
自にシステムコールサービスを呼び出しており、これら
がそれぞれ局所的領域を確保している。確保された局所
的領域において、今回処理対象記憶領域と、次回処理対
象記憶領域とが確保されていることがわかる。
【0026】続いて、割り込み処理に対しての即時応答
性を保証しながら複数タスクの実行順序管理やフリーメ
モリブロックの割当順序管理を行うには、どのような点
に留意せねばならないかを説明する。割り込み処理を許
可する場合、複数タスクの実行順序管理にあたってもう
一つのことに留意せねばならない。それは、割り込み処
理許可区間において割り込み処理が発生した場合、その
割り込み処理においてもシステムコールが行われ、この
システムコールにより、リンク構造データが変更される
可能性があることである。割り込み処理においてリンク
構造データが変更されれば、割り込まれた側の局所的領
域における今回処理対象記憶領域と、次回処理対象記憶
領域と、割り込み処理において変更されたリンク構造デ
ータとが不一致となり、リアルタイムシステムの誤動作
を招いてしまう。
性を保証しながら複数タスクの実行順序管理やフリーメ
モリブロックの割当順序管理を行うには、どのような点
に留意せねばならないかを説明する。割り込み処理を許
可する場合、複数タスクの実行順序管理にあたってもう
一つのことに留意せねばならない。それは、割り込み処
理許可区間において割り込み処理が発生した場合、その
割り込み処理においてもシステムコールが行われ、この
システムコールにより、リンク構造データが変更される
可能性があることである。割り込み処理においてリンク
構造データが変更されれば、割り込まれた側の局所的領
域における今回処理対象記憶領域と、次回処理対象記憶
領域と、割り込み処理において変更されたリンク構造デ
ータとが不一致となり、リアルタイムシステムの誤動作
を招いてしまう。
【0027】以降、局所的領域内の今回処理対象記憶領
域と、次回処理対象記憶領域と、割り込み処理時により
変更されたリンク構造データとの不一致がどのようにし
て生じるかについて説明する。図21は、割り込み処理
許可区間において割り込み処理が発生し、この割り込み
処理において事象フラグを"2"に設定する旨のシステム
コール"set_flg(2)"が呼び出された場合に今回処理対象
記憶領域、次回処理対象記憶領域がどのように変化する
かを示す図であり、図22は、割り込み処理許可区間に
おいて割り込み処理が発生し、この割り込み処理におい
てシステムコール"set_flg(2)"が呼び出された場合にリ
ンク構造データがどのように変化するかを示す図であ
る。
域と、次回処理対象記憶領域と、割り込み処理時により
変更されたリンク構造データとの不一致がどのようにし
て生じるかについて説明する。図21は、割り込み処理
許可区間において割り込み処理が発生し、この割り込み
処理において事象フラグを"2"に設定する旨のシステム
コール"set_flg(2)"が呼び出された場合に今回処理対象
記憶領域、次回処理対象記憶領域がどのように変化する
かを示す図であり、図22は、割り込み処理許可区間に
おいて割り込み処理が発生し、この割り込み処理におい
てシステムコール"set_flg(2)"が呼び出された場合にリ
ンク構造データがどのように変化するかを示す図であ
る。
【0028】図21、図22において状態(a-1)〜状態
(a-4)におけるリンク構造データ、今回処理対象記憶領
域、次回処理対象記憶領域の内容は図17、図18と同
一であるが、図17におけるの状態で割り込み処理が
発生したため、状態(a-2)の後に状態(b-1)〜状態(b-5)
が発生し、この状態(b-1)〜状態(b-5)の発生により、割
り込まれた側の処理の処理が状態(a-5)〜状態(a-7)に示
すものから、状態(a-8)〜状態(a-9)に示すものに置き換
わっている。
(a-4)におけるリンク構造データ、今回処理対象記憶領
域、次回処理対象記憶領域の内容は図17、図18と同
一であるが、図17におけるの状態で割り込み処理が
発生したため、状態(a-2)の後に状態(b-1)〜状態(b-5)
が発生し、この状態(b-1)〜状態(b-5)の発生により、割
り込まれた側の処理の処理が状態(a-5)〜状態(a-7)に示
すものから、状態(a-8)〜状態(a-9)に示すものに置き換
わっている。
【0029】以下これらの状態について説明する。 (状態(b-1))割り込み処理が発生したので、システムコ
ール処理部201は割り込み処理向けに局所的領域を確
保し、ここに今回処理対象記憶領域と、次回処理対象記
憶領域とを設ける。この割り込み処理においてset_flg
(2)が呼び出されたので、事象フラグ値93は"1"から"
2"に更新されている。また図21の状態(a-1)において
リンク先頭データアドレス記憶領域92にTCB2のアドレ
スが設定されているので、新たに確保された局所的領域
における今回処理対象記憶領域はTCB2と設定される。タ
スク2に対応するTCB2のリンク情報94はTCB3と設定さ
れており、次回はこのTCB3に対応するタスク3を処理せ
ねばならない。そこで、次回処理対象記憶領域にTCB3を
設定して処理を終える。
ール処理部201は割り込み処理向けに局所的領域を確
保し、ここに今回処理対象記憶領域と、次回処理対象記
憶領域とを設ける。この割り込み処理においてset_flg
(2)が呼び出されたので、事象フラグ値93は"1"から"
2"に更新されている。また図21の状態(a-1)において
リンク先頭データアドレス記憶領域92にTCB2のアドレ
スが設定されているので、新たに確保された局所的領域
における今回処理対象記憶領域はTCB2と設定される。タ
スク2に対応するTCB2のリンク情報94はTCB3と設定さ
れており、次回はこのTCB3に対応するタスク3を処理せ
ねばならない。そこで、次回処理対象記憶領域にTCB3を
設定して処理を終える。
【0030】(状態(b-2))今回処理対象となったTCB2の
待ち条件解除情報95がどのような事象に設定されてい
るかを参照して、タスク2の事象成立待ち状態を解除す
るか、或は維持するかを決定する。ここでTCB2の待ち条
件解除情報95は"2"と設定されており、リンクヘッダ
90の事象フラグ値93は"2"と設定されているので、
タスク2が待っていた事象は成立していることがわか
る。条件一致なので、タスク2を実行した後、TCB2をリ
ンク構造データから解除する。その後、リンクヘッダ9
0におけるリンク先頭データアドレス記憶領域92をTC
B3のアドレスに設定する。
待ち条件解除情報95がどのような事象に設定されてい
るかを参照して、タスク2の事象成立待ち状態を解除す
るか、或は維持するかを決定する。ここでTCB2の待ち条
件解除情報95は"2"と設定されており、リンクヘッダ
90の事象フラグ値93は"2"と設定されているので、
タスク2が待っていた事象は成立していることがわか
る。条件一致なので、タスク2を実行した後、TCB2をリ
ンク構造データから解除する。その後、リンクヘッダ9
0におけるリンク先頭データアドレス記憶領域92をTC
B3のアドレスに設定する。
【0031】(状態(b-3))システムコールサービス部2
01は、状態(b-2)において次回処理対象記憶領域に示
されているTCBのアドレスを今回処理対象記憶領域に設
定する。状態(b-2)では、次回処理対象記憶領域にTCB3
のアドレスが設定されているので、今回処理対象記憶領
域はTCB3と設定される。これにより今回処理対象となる
タスクはタスク3と決定されたので、続いてタスク3の次
に実行すべきタスクを決定する。ここでタスク3に対応
するTCB3のリンク情報94は終了と設定されており、次
回で、リンク構造データにおけるタスク実行を終了せね
ばならない。そこで、次回処理対象記憶領域に終了を設
定して処理を終える。
01は、状態(b-2)において次回処理対象記憶領域に示
されているTCBのアドレスを今回処理対象記憶領域に設
定する。状態(b-2)では、次回処理対象記憶領域にTCB3
のアドレスが設定されているので、今回処理対象記憶領
域はTCB3と設定される。これにより今回処理対象となる
タスクはタスク3と決定されたので、続いてタスク3の次
に実行すべきタスクを決定する。ここでタスク3に対応
するTCB3のリンク情報94は終了と設定されており、次
回で、リンク構造データにおけるタスク実行を終了せね
ばならない。そこで、次回処理対象記憶領域に終了を設
定して処理を終える。
【0032】(状態(b-4))今回処理対象となったTCB3の
待ち条件解除情報95がどのような事象に設定されてい
るかを参照して、タスク3の事象成立待ち状態を解除す
るか、或は維持するかを決定する。ここでTCB3の待ち条
件解除情報95は"1"と設定されており、リンクヘッダ
90の事象フラグ値93は"2"と設定されているので、
タスク3が待っていた事象は不成立であることがわか
る。条件不成立なので、タスク3を実行せず、TCB3をリ
ンク構造データから解除しない。これにより、リンクヘ
ッダ90におけるリンク先頭データアドレス記憶領域9
2はTCB3に設定されたまま状態(b-5)において処理を終
了する。
待ち条件解除情報95がどのような事象に設定されてい
るかを参照して、タスク3の事象成立待ち状態を解除す
るか、或は維持するかを決定する。ここでTCB3の待ち条
件解除情報95は"1"と設定されており、リンクヘッダ
90の事象フラグ値93は"2"と設定されているので、
タスク3が待っていた事象は不成立であることがわか
る。条件不成立なので、タスク3を実行せず、TCB3をリ
ンク構造データから解除しない。これにより、リンクヘ
ッダ90におけるリンク先頭データアドレス記憶領域9
2はTCB3に設定されたまま状態(b-5)において処理を終
了する。
【0033】(状態(a-8))状態(b-5)において割り込み
処理を終了したので、割り込まれた側の処理の状態(a-
2)の直後の状態(状態(a-8))に移行する。ここで割り
込まれた側の処理におけるシステムコールサービス部2
01において、今回処理対象記憶領域と、次回処理対象
記憶領域とは状態(a-1)において設定された内容がその
まま保存されている。即ち、今回処理対象記憶領域と、
次回処理対象記憶領域とは、それぞれTCB1−TCB2に設定
されているのである。
処理を終了したので、割り込まれた側の処理の状態(a-
2)の直後の状態(状態(a-8))に移行する。ここで割り
込まれた側の処理におけるシステムコールサービス部2
01において、今回処理対象記憶領域と、次回処理対象
記憶領域とは状態(a-1)において設定された内容がその
まま保存されている。即ち、今回処理対象記憶領域と、
次回処理対象記憶領域とは、それぞれTCB1−TCB2に設定
されているのである。
【0034】(状態(a-9))割り込まれた側の処理のシ
ステムコールサービス部201は、今回処理対象記憶領
域と、次回処理対象記憶領域との設定内容に従って今回
処理対象、次回処理対象を設定しようとする。ここで次
回処理対象記憶領域の値を今回処理対象記憶領域にコピ
ーすることにより、今回処理対象記憶領域はTCB2のアド
レスに設定される。続いて、次回処理対象記憶領域の値
を設定しようとするが、割り込んだ側の処理において、
リンク構造データからTCB2は解除されているので、次回
処理対象記憶領域には次に実行すべきタスクのTCBを設
定することはできない。よって次回処理対象記憶領域に
おける内容は不定値となる。
ステムコールサービス部201は、今回処理対象記憶領
域と、次回処理対象記憶領域との設定内容に従って今回
処理対象、次回処理対象を設定しようとする。ここで次
回処理対象記憶領域の値を今回処理対象記憶領域にコピ
ーすることにより、今回処理対象記憶領域はTCB2のアド
レスに設定される。続いて、次回処理対象記憶領域の値
を設定しようとするが、割り込んだ側の処理において、
リンク構造データからTCB2は解除されているので、次回
処理対象記憶領域には次に実行すべきタスクのTCBを設
定することはできない。よって次回処理対象記憶領域に
おける内容は不定値となる。
【0035】既にTCB2はリンク構造データから解除さ
れ、タスク2はメモリから除外されているので、TCB2に
対応するタスク2を実行しようとすると、システムは処
理不能に陥ってしまい、システムの誤動作が発生する。
以上のようにリンク先頭データアドレス記憶領域92や
今回処理対象記憶領域、次回処理対象記憶領域の確定区
間であっても、割り込み処理においてリンク構造データ
が変更されれば、今回処理対象記憶領域と、次回処理対
象記憶領域と、割り込み処理時により変更されたリンク
構造データとの不一致が発生する恐れがあり、誤動作の
恐れがある。
れ、タスク2はメモリから除外されているので、TCB2に
対応するタスク2を実行しようとすると、システムは処
理不能に陥ってしまい、システムの誤動作が発生する。
以上のようにリンク先頭データアドレス記憶領域92や
今回処理対象記憶領域、次回処理対象記憶領域の確定区
間であっても、割り込み処理においてリンク構造データ
が変更されれば、今回処理対象記憶領域と、次回処理対
象記憶領域と、割り込み処理時により変更されたリンク
構造データとの不一致が発生する恐れがあり、誤動作の
恐れがある。
【0036】これは、リンク構造データを扱うシステム
コールをリエントラントな処理にする場合、一方の処理
においてリンクに関する情報を保持していても、他方の
処理によりリンク構造が変更されてしまうため、保持し
ていたリンクに関する情報の整合性が保てなくなること
を意味する。この問題は、リエントラントなシステムコ
ール中の割り込み発生により同一のシステムコールを呼
び出した場合だけでなく、リエントラントなシステムコ
ール処理中に扱っていたリンク構造データを変更するよ
うな他のシステムコールが割り込み発生により呼び出さ
れた場合でも同様に起こる。したがって、従来のOSで
は、リンク構造データの処理中にリンク構造が変更され
ないようにするため、リンクに繋がっている全データの
処理が完了するまで外部割り込みを禁止するという割り
込み制御方式を使用していた。
コールをリエントラントな処理にする場合、一方の処理
においてリンクに関する情報を保持していても、他方の
処理によりリンク構造が変更されてしまうため、保持し
ていたリンクに関する情報の整合性が保てなくなること
を意味する。この問題は、リエントラントなシステムコ
ール中の割り込み発生により同一のシステムコールを呼
び出した場合だけでなく、リエントラントなシステムコ
ール処理中に扱っていたリンク構造データを変更するよ
うな他のシステムコールが割り込み発生により呼び出さ
れた場合でも同様に起こる。したがって、従来のOSで
は、リンク構造データの処理中にリンク構造が変更され
ないようにするため、リンクに繋がっている全データの
処理が完了するまで外部割り込みを禁止するという割り
込み制御方式を使用していた。
【0037】しかし、この割り込み制御方式では、リン
クに繋がっているデータ数が増えるほど割り込み禁止時
間が長くなり、図15(a)に示すように実際の割り込
み発生と割り込み処理開始との間に発生する時間のずれ
が大きくなるという問題がある。リアルタイムシステム
は外部割り込みへの即時応答性が重要な意味を持つの
で、本システムにおいて割り込み禁止時間が長いという
ことは、システムに致命的な欠陥を与える原因となりう
る。直接的には、外部割り込みによる通信データの取り
こぼし等の問題がある。間接的には、割り込みが遅延さ
れたことによるタスク切り換えの遅延により、優先度通
りにシステムが動作しない時間が増加する等という問題
がある。
クに繋がっているデータ数が増えるほど割り込み禁止時
間が長くなり、図15(a)に示すように実際の割り込
み発生と割り込み処理開始との間に発生する時間のずれ
が大きくなるという問題がある。リアルタイムシステム
は外部割り込みへの即時応答性が重要な意味を持つの
で、本システムにおいて割り込み禁止時間が長いという
ことは、システムに致命的な欠陥を与える原因となりう
る。直接的には、外部割り込みによる通信データの取り
こぼし等の問題がある。間接的には、割り込みが遅延さ
れたことによるタスク切り換えの遅延により、優先度通
りにシステムが動作しない時間が増加する等という問題
がある。
【0038】したがってOSを使用するアプリケーション
は、リンク構造データに繋がる最大数を処理する場合の
割り込み禁止時間を考慮してシステム設計を行う必要が
ある。また、場合によっては、その最大割り込み禁止時
間でのシステム構築が不可能となり、専用のハードウェ
アを備える等の対処方法が必要となる。OSのリンク構造
データ処理時における割り込み禁止時間の増加という問
題を解決するため、「特開平9-311794」に示す技術で
は、リンクヘッダに対応しリンク構造データの変更を通
知するためのフラグを設けることを提案している。すな
わち、この従来技術は、割り込んだ側のシステムコール
処理部がリンク構造データを変更した場合、変更を示す
値をフラグに設定する。割り込まれた側のシステムコー
ル処理部は、割り込み許可区間においてフラグの変化を
監視しており、フラグがシステムコールが変更を示す値
に設定されたことを検出すると、リンクの先頭データか
ら処理をやり直すことで、リンクデータが変更されても
正しい結果が得られることを保証する。この従来技術を
用いれば、割り込み禁止時間を短縮化することが可能と
なる。
は、リンク構造データに繋がる最大数を処理する場合の
割り込み禁止時間を考慮してシステム設計を行う必要が
ある。また、場合によっては、その最大割り込み禁止時
間でのシステム構築が不可能となり、専用のハードウェ
アを備える等の対処方法が必要となる。OSのリンク構造
データ処理時における割り込み禁止時間の増加という問
題を解決するため、「特開平9-311794」に示す技術で
は、リンクヘッダに対応しリンク構造データの変更を通
知するためのフラグを設けることを提案している。すな
わち、この従来技術は、割り込んだ側のシステムコール
処理部がリンク構造データを変更した場合、変更を示す
値をフラグに設定する。割り込まれた側のシステムコー
ル処理部は、割り込み許可区間においてフラグの変化を
監視しており、フラグがシステムコールが変更を示す値
に設定されたことを検出すると、リンクの先頭データか
ら処理をやり直すことで、リンクデータが変更されても
正しい結果が得られることを保証する。この従来技術を
用いれば、割り込み禁止時間を短縮化することが可能と
なる。
【0039】図23は、割り込み処理許可区間において
割り込み処理が発生し、この割り込み処理においてシス
テムコールサービス set_flg(2)が呼び出された場合に
今回処理対象記憶領域、次回処理対象記憶領域がどのよ
うに変化するかを示す図であり、図24は、割り込み処
理許可区間において割り込み処理が発生し、この割り込
み処理においてシステムコールサービス set_flg(2)が
呼び出された場合にリンク構造データと、フラグ情報と
がどのように変化するかを示す図である。これらの図に
おいて共通の符号(a-1)(a-2)(a-3)・・・・は共通の状態を
意味するものとする。
割り込み処理が発生し、この割り込み処理においてシス
テムコールサービス set_flg(2)が呼び出された場合に
今回処理対象記憶領域、次回処理対象記憶領域がどのよ
うに変化するかを示す図であり、図24は、割り込み処
理許可区間において割り込み処理が発生し、この割り込
み処理においてシステムコールサービス set_flg(2)が
呼び出された場合にリンク構造データと、フラグ情報と
がどのように変化するかを示す図である。これらの図に
おいて共通の符号(a-1)(a-2)(a-3)・・・・は共通の状態を
意味するものとする。
【0040】図24が図22と異なるのは、図24のリ
ンク構造データにおいてフラグ情報が設けられており、
当該フラグ情報が状態(b-2)において"1"に設定されてい
る点である。この状態(b-2)では、TCB2がリンク構造デ
ータから解除されており、この解除によってリンク構造
データのデータ構造が変更したので、この変更を示す意
味でフラグ情報が"0"から"1"に変更されたのである。
ンク構造データにおいてフラグ情報が設けられており、
当該フラグ情報が状態(b-2)において"1"に設定されてい
る点である。この状態(b-2)では、TCB2がリンク構造デ
ータから解除されており、この解除によってリンク構造
データのデータ構造が変更したので、この変更を示す意
味でフラグ情報が"0"から"1"に変更されたのである。
【0041】図23が図21と異なるのは、割り込んだ
側の処理から割り込まれた側の処理にリターンした際以
降の処理が状態(a-9)から状態(a-10)、状態(a-11)に置
き換えられている点である。 (状態(a-8))状態(b-5)において処理を終了したので、
割り込まれた側の処理の状態(a-2)の直後の状態(状態
(a-8))に移行する。ここで割り込まれた側の処理にお
けるシステムコールサービス部201において、今回処
理対象記憶領域と、次回処理対象記憶領域とは状態(a-
1)において設定された内容がそのまま保存されている。
即ち、今回処理対象記憶領域と、次回処理対象記憶領域
とは、それぞれTCB1−TCB2に設定されているのである。
側の処理から割り込まれた側の処理にリターンした際以
降の処理が状態(a-9)から状態(a-10)、状態(a-11)に置
き換えられている点である。 (状態(a-8))状態(b-5)において処理を終了したので、
割り込まれた側の処理の状態(a-2)の直後の状態(状態
(a-8))に移行する。ここで割り込まれた側の処理にお
けるシステムコールサービス部201において、今回処
理対象記憶領域と、次回処理対象記憶領域とは状態(a-
1)において設定された内容がそのまま保存されている。
即ち、今回処理対象記憶領域と、次回処理対象記憶領域
とは、それぞれTCB1−TCB2に設定されているのである。
【0042】(状態(a-10))システムコールサービス部
201は、リンク構造データにおけるフラグを参照して
割り込まれた側の処理においてリンク構造データに変更
が生じたかを判定する。ここでリンク構造データのフラ
グは、リンク構造データのデータ構造に変更があった旨
を示す"1"に設定されている。
201は、リンク構造データにおけるフラグを参照して
割り込まれた側の処理においてリンク構造データに変更
が生じたかを判定する。ここでリンク構造データのフラ
グは、リンク構造データのデータ構造に変更があった旨
を示す"1"に設定されている。
【0043】(状態(a-11))リンク構造データのフラグ
は、変更があった旨を示しているので、割り込まれた側
の処理のシステムコールサービス部201は、リンクヘ
ッダ90におけるリンク先頭データアドレス記憶領域9
2の内容を今回処理対象記憶領域にコピーすることによ
り、今回処理対象記憶領域をTCB3に設定し、TCB3のリン
ク情報94に示されているアドレスを次回処理対象記憶
領域に設定する。TCB3はリンク構造データに現実に存在
しており、メモリにもタスク3が存在しているので、こ
のタスク3は正常に実行されることになる。
は、変更があった旨を示しているので、割り込まれた側
の処理のシステムコールサービス部201は、リンクヘ
ッダ90におけるリンク先頭データアドレス記憶領域9
2の内容を今回処理対象記憶領域にコピーすることによ
り、今回処理対象記憶領域をTCB3に設定し、TCB3のリン
ク情報94に示されているアドレスを次回処理対象記憶
領域に設定する。TCB3はリンク構造データに現実に存在
しており、メモリにもタスク3が存在しているので、こ
のタスク3は正常に実行されることになる。
【0044】
【発明が解決しようとする課題】しかしながらこの従来
技術では、割り込まれる側のシステムコールにおいて、
ひとつのTCBを処理するたびにフラグの監視が必要であ
り、今回処理対象−次回処理対象を確定するために要す
る時間が「フラグ監視処理に要する時間×データ数」だ
け長くなる。図19の一例でいうと、、、、に
相当する許可区間の全てにおいて、フラグ情報が更新さ
れたか否かを監視せねばならないので、このフラグ監視
に多大な時間を費やしてしまう。即ち、「特開平9-3117
94」に示す先行技術においては、割り込みへの即時応答
性が向上したものの、割り込みが発生しない場合におい
ては、不要なフラグ監視時間の増加に基づく処理遅延が
顕著になってしまう。
技術では、割り込まれる側のシステムコールにおいて、
ひとつのTCBを処理するたびにフラグの監視が必要であ
り、今回処理対象−次回処理対象を確定するために要す
る時間が「フラグ監視処理に要する時間×データ数」だ
け長くなる。図19の一例でいうと、、、、に
相当する許可区間の全てにおいて、フラグ情報が更新さ
れたか否かを監視せねばならないので、このフラグ監視
に多大な時間を費やしてしまう。即ち、「特開平9-3117
94」に示す先行技術においては、割り込みへの即時応答
性が向上したものの、割り込みが発生しない場合におい
ては、不要なフラグ監視時間の増加に基づく処理遅延が
顕著になってしまう。
【0045】今回処理対象−次回処理対象の確定に要す
る時間が長くなれば、TCBに対応するタスクに割り当て
可能なシステム稼動時間が短くなる。タスクに割り当て
られたシステム稼動時間が短くなれば、その分だけ、ア
プリケーションプログラムに対しての制約が厳しくな
り、リアルタイムシステムの設計が困難になってしま
う。
る時間が長くなれば、TCBに対応するタスクに割り当て
可能なシステム稼動時間が短くなる。タスクに割り当て
られたシステム稼動時間が短くなれば、その分だけ、ア
プリケーションプログラムに対しての制約が厳しくな
り、リアルタイムシステムの設計が困難になってしま
う。
【0046】本発明の目的は、フラグ設定値の監視を必
要とせずに、割り込み処理の禁止時間を短縮化すること
ができる制御ブロック処理装置及び制御ブロック処理プ
ログラムを記録したコンピュータ読み取り可能な記録媒
体を提供することである。
要とせずに、割り込み処理の禁止時間を短縮化すること
ができる制御ブロック処理装置及び制御ブロック処理プ
ログラムを記録したコンピュータ読み取り可能な記録媒
体を提供することである。
【0047】
【課題を解決するための手段】上記目的を達成するため
に本発明は、リンク情報を用いて結合されている複数の
制御ブロックからなるリンク構造データと、複数の制御
ブロックのうち何れかの制御ブロックのアドレスが書き
込まれるアドレス記憶領域と、アドレス記憶領域にアド
レスが書き込まれている制御ブロックを今回処理対象と
して決定する動作と、その制御ブロックのリンク先の制
御ブロックを次回処理対象として決定して、当該次回処
理対象のアドレスをアドレス記憶領域に書き込む動作と
をリンク構造データにおける全ての制御ブロックについ
て繰り返す処理対象決定手段と、今回処理対象が決定さ
れる度に、この今回処理対象についての処理を行う処理
手段と、今回処理対象についての処理が行われてから、
今回処理対象が次に決定されるまでの期間において割り
込み処理の発生を許可する許可手段とを備え、前記処理
対象決定手段は、割り込み処理を許可した期間において
割り込み処理が発生した場合に起動され、リンク構造デ
ータにおける何れかの制御ブロックを割り込み処理にお
ける今回処理対象として決定すると共に、別の制御ブロ
ックを割り込まれた側の処理を再開する際に処理すべき
次回処理対象として決定して、当該次回処理対象のアド
レスをアドレス記憶領域に書き込むリエントラントルー
チンを有し、割り込み処理発生後割り込まれた側の処理
を再開する場合、及び、割り込み処理が発生しなかった
場合において、アドレス記憶領域にアドレスが書き込ま
れている制御ブロックを今回処理対象として決定するこ
とを特徴としている。
に本発明は、リンク情報を用いて結合されている複数の
制御ブロックからなるリンク構造データと、複数の制御
ブロックのうち何れかの制御ブロックのアドレスが書き
込まれるアドレス記憶領域と、アドレス記憶領域にアド
レスが書き込まれている制御ブロックを今回処理対象と
して決定する動作と、その制御ブロックのリンク先の制
御ブロックを次回処理対象として決定して、当該次回処
理対象のアドレスをアドレス記憶領域に書き込む動作と
をリンク構造データにおける全ての制御ブロックについ
て繰り返す処理対象決定手段と、今回処理対象が決定さ
れる度に、この今回処理対象についての処理を行う処理
手段と、今回処理対象についての処理が行われてから、
今回処理対象が次に決定されるまでの期間において割り
込み処理の発生を許可する許可手段とを備え、前記処理
対象決定手段は、割り込み処理を許可した期間において
割り込み処理が発生した場合に起動され、リンク構造デ
ータにおける何れかの制御ブロックを割り込み処理にお
ける今回処理対象として決定すると共に、別の制御ブロ
ックを割り込まれた側の処理を再開する際に処理すべき
次回処理対象として決定して、当該次回処理対象のアド
レスをアドレス記憶領域に書き込むリエントラントルー
チンを有し、割り込み処理発生後割り込まれた側の処理
を再開する場合、及び、割り込み処理が発生しなかった
場合において、アドレス記憶領域にアドレスが書き込ま
れている制御ブロックを今回処理対象として決定するこ
とを特徴としている。
【0048】
【発明の実施の形態】以下、図面を参照しながら、制御
ブロック処理装置の実施形態を説明する。ここで、現状
において当業者で慣用されている制御ブロック処理装置
の流通・売買の形態は、制御ブロック処理装置と等価な
機能を有するオペレーティングシステムの実行形式のソ
フトウェアを記録媒体に記録して、パッケージソフトと
して流通・売買する形態である。このようなパッケージ
ソフトはこれを購買した顧客によりプロセッサやメモリ
を有する機器にインストールされ、インストールされた
機器がこのソフトウェア通りの処理を行うことにより機
器は制御ブロック処理装置としての機能を果たす。上記
のような形態が慣用されることを考えると、制御ブロッ
ク処理装置としての機能主体は、プロセッサ、メモリ等
のハードウェア資源というよりは、それらハードウェア
資源を用いて制御ブロック処理装置としての処理内容を
行うソフトウェアと考える方が妥当である。また複雑な
処理内容を有するソフトウェアは、複数のサブルーチン
やワークエリアにて構成されることが一般的であるの
で、個々のサブルーチンやワークエリアが独立した構成
要素と考えるべきである。しかしこれらのサブルーチン
やワークエリアには、既存のオペレーティングシステム
がライブラリ化しているものも多くあり、それらは説明
に値しないものが殆どであるから、その説明を避けるも
のとし、制御ブロック処理装置の機能を果たすためにど
のような機能を果たすサブルーチン、ワークエリアを構
成要素として開発すべきかを論点とした説明を行う。
ブロック処理装置の実施形態を説明する。ここで、現状
において当業者で慣用されている制御ブロック処理装置
の流通・売買の形態は、制御ブロック処理装置と等価な
機能を有するオペレーティングシステムの実行形式のソ
フトウェアを記録媒体に記録して、パッケージソフトと
して流通・売買する形態である。このようなパッケージ
ソフトはこれを購買した顧客によりプロセッサやメモリ
を有する機器にインストールされ、インストールされた
機器がこのソフトウェア通りの処理を行うことにより機
器は制御ブロック処理装置としての機能を果たす。上記
のような形態が慣用されることを考えると、制御ブロッ
ク処理装置としての機能主体は、プロセッサ、メモリ等
のハードウェア資源というよりは、それらハードウェア
資源を用いて制御ブロック処理装置としての処理内容を
行うソフトウェアと考える方が妥当である。また複雑な
処理内容を有するソフトウェアは、複数のサブルーチン
やワークエリアにて構成されることが一般的であるの
で、個々のサブルーチンやワークエリアが独立した構成
要素と考えるべきである。しかしこれらのサブルーチン
やワークエリアには、既存のオペレーティングシステム
がライブラリ化しているものも多くあり、それらは説明
に値しないものが殆どであるから、その説明を避けるも
のとし、制御ブロック処理装置の機能を果たすためにど
のような機能を果たすサブルーチン、ワークエリアを構
成要素として開発すべきかを論点とした説明を行う。
【0049】(第1実施形態)以下、図面を参照しなが
ら第1実施形態について説明する。図1は、オペレーテ
ィングシステム(以後OSと記述する)を搭載したシステ
ムの一例を示したブロック図である。ブロック図におけ
る実線の矢印は処理の遷移を示し、破線の矢印はデータ
の遷移を示す(以下、ブロック図における矢印は同様の
意味とする)。このシステムはCPUによるプログラム制
御装置101、入力装置102、出力装置103、メモ
リ装置104より構成される。更にプログラム制御装置
101は、入力装置102及び出力装置103との入出
力を制御する入出力制御111、入出力制御より入力を
受け付ける割り込み処理部112、プログラムの機能を
幾つかに分割したタスク113、タスク113の実行順
序を制御するOS114から構成される。
ら第1実施形態について説明する。図1は、オペレーテ
ィングシステム(以後OSと記述する)を搭載したシステ
ムの一例を示したブロック図である。ブロック図におけ
る実線の矢印は処理の遷移を示し、破線の矢印はデータ
の遷移を示す(以下、ブロック図における矢印は同様の
意味とする)。このシステムはCPUによるプログラム制
御装置101、入力装置102、出力装置103、メモ
リ装置104より構成される。更にプログラム制御装置
101は、入力装置102及び出力装置103との入出
力を制御する入出力制御111、入出力制御より入力を
受け付ける割り込み処理部112、プログラムの機能を
幾つかに分割したタスク113、タスク113の実行順
序を制御するOS114から構成される。
【0050】プログラム制御装置101は、メモリ装置
104に記憶されている処理プログラムにしたがってプ
ログラムの実行を行う。OS114は、制御ブロック処理
装置に相当するものであり、タスク113に付加された
優先度やタスクステータスに基づき実行タスクを切り換
えることにより、タスク113の実行順序を制御する。
優先度やタスクステータスは、割り込み処理部112や
タスク113がOS114の提供するシステムコールサー
ビス141を呼び出すことにより変更される。
104に記憶されている処理プログラムにしたがってプ
ログラムの実行を行う。OS114は、制御ブロック処理
装置に相当するものであり、タスク113に付加された
優先度やタスクステータスに基づき実行タスクを切り換
えることにより、タスク113の実行順序を制御する。
優先度やタスクステータスは、割り込み処理部112や
タスク113がOS114の提供するシステムコールサー
ビス141を呼び出すことにより変更される。
【0051】入出力制御111は入力装置102より受
け付けた入力事象を外部割り込みとして割り込み処理部
112に通知する。通知を受けた割り込み処理部112
は、他の制御部が実行中であっても直ちに実行される。
システムコールサービス141には、同期制御、排他制
御、タスク間通信機能、メモリ管理機能など複数の機能
がある。
け付けた入力事象を外部割り込みとして割り込み処理部
112に通知する。通知を受けた割り込み処理部112
は、他の制御部が実行中であっても直ちに実行される。
システムコールサービス141には、同期制御、排他制
御、タスク間通信機能、メモリ管理機能など複数の機能
がある。
【0052】図2は、メモリ装置104の外部参照領域
に配置されているリンクヘッダ90、リンク構造データ
の一例を示す図である。本図におけるTCB91は、実行
待ち状態にあるタスクのそれぞれに対応するものであ
り、自身に対応するタスクを実行した後、次に実行すべ
きタスクのTCBを示すリンク情報94と、このタスクの
実行待ち状態が解除されるための条件を示す待ち条件解
除情報95とを有する。
に配置されているリンクヘッダ90、リンク構造データ
の一例を示す図である。本図におけるTCB91は、実行
待ち状態にあるタスクのそれぞれに対応するものであ
り、自身に対応するタスクを実行した後、次に実行すべ
きタスクのTCBを示すリンク情報94と、このタスクの
実行待ち状態が解除されるための条件を示す待ち条件解
除情報95とを有する。
【0053】リンクヘッダ90はイベントフラグ管理ブ
ロックとも呼ばれ、複数のTCBのうち、最初に実行すべ
きTCBのアドレスが設定されるリンク先頭データアドレ
ス記憶領域92と、リアルタイムシステムにおいて成立
している事象を示す値が設定される事象フラグ値93と
を有する。これらの具備している点において、リンクヘ
ッダ90は従来技術のものと変わらないが、リンクヘッ
ダ90に次回処理対象データアドレス記憶領域105が
追加されている点が従来技術と異なる。即ち、次回処理
対象データアドレス記憶領域105(従来技術において
局所的領域に配置されていた次回処理対象記憶領域に相
当するものである。)が本実施形態では、外部参照可能
領域内のリンクヘッダ90に配置されているのである。
ロックとも呼ばれ、複数のTCBのうち、最初に実行すべ
きTCBのアドレスが設定されるリンク先頭データアドレ
ス記憶領域92と、リアルタイムシステムにおいて成立
している事象を示す値が設定される事象フラグ値93と
を有する。これらの具備している点において、リンクヘ
ッダ90は従来技術のものと変わらないが、リンクヘッ
ダ90に次回処理対象データアドレス記憶領域105が
追加されている点が従来技術と異なる。即ち、次回処理
対象データアドレス記憶領域105(従来技術において
局所的領域に配置されていた次回処理対象記憶領域に相
当するものである。)が本実施形態では、外部参照可能
領域内のリンクヘッダ90に配置されているのである。
【0054】図3は、割り込み処理により割り込まれる
側の処理におけるシステムコール処理部201の構成を
機能的に示すブロック図である。図3に示すように、第
1実施形態におけるシステムコールサービス141は、
メイン制御部301と、割り込み制御部302と、今回
処理対象データアドレス取得部303と、データ処理終
了判定部304と、次回処理対象データ決定部305
と、データ処理部306と、今回処理対象データアドレ
ス記憶領域310とからなる。
側の処理におけるシステムコール処理部201の構成を
機能的に示すブロック図である。図3に示すように、第
1実施形態におけるシステムコールサービス141は、
メイン制御部301と、割り込み制御部302と、今回
処理対象データアドレス取得部303と、データ処理終
了判定部304と、次回処理対象データ決定部305
と、データ処理部306と、今回処理対象データアドレ
ス記憶領域310とからなる。
【0055】メイン制御部301は、システムコール処
理の開始から終了までの一連の処理を、各制御部を用い
て実行する。割り込み制御部302は、外部割り込みの
受け付けを禁止したり許可したりする。今回処理対象デ
ータアドレス取得部303は、外部参照可能な領域に設
置されたリンクヘッダより、リンク先頭データアドレス
記憶領域または次回処理対象データアドレス記憶領域1
05に格納されているアドレス情報を抜き出し、今回処
理対象データアドレス記憶領域310に格納する。
理の開始から終了までの一連の処理を、各制御部を用い
て実行する。割り込み制御部302は、外部割り込みの
受け付けを禁止したり許可したりする。今回処理対象デ
ータアドレス取得部303は、外部参照可能な領域に設
置されたリンクヘッダより、リンク先頭データアドレス
記憶領域または次回処理対象データアドレス記憶領域1
05に格納されているアドレス情報を抜き出し、今回処
理対象データアドレス記憶領域310に格納する。
【0056】データ処理終了判定部304は、今回処理
対象データアドレス記憶領域310の情報より、リンク
構造データの処理を継続するか終了するかを決定する。
次回処理対象データ決定部305は、今回処理対象から
次回処理対象を導き出し、リンクヘッダ90内に存在す
る次回処理対象データアドレス記憶領域105に求めた
データのアドレスを設定する。
対象データアドレス記憶領域310の情報より、リンク
構造データの処理を継続するか終了するかを決定する。
次回処理対象データ決定部305は、今回処理対象から
次回処理対象を導き出し、リンクヘッダ90内に存在す
る次回処理対象データアドレス記憶領域105に求めた
データのアドレスを設定する。
【0057】データ処理部306は、今回処理対象に相
当するタスクに対して何らかの処理を実行する。割り込
み時におけるシステムコールサービス141の処理を、
図3のブロック図と、図4に示すフローチャートとを用
いて更に詳細に説明する。図4は、割り込み時における
システムコールサービス141の処理内容を示すフロ−
チャ−トである。
当するタスクに対して何らかの処理を実行する。割り込
み時におけるシステムコールサービス141の処理を、
図3のブロック図と、図4に示すフローチャートとを用
いて更に詳細に説明する。図4は、割り込み時における
システムコールサービス141の処理内容を示すフロ−
チャ−トである。
【0058】先ずシステムコール処理部にてリンク構造
データの処理を開始すると、ステップS402において
割り込み制御部302にて割り込みの受け付けを禁止す
る。次にステップS403では、今回処理対象データア
ドレス取得部303がリンクヘッダのリンク先頭データ
アドレス記憶領域からリンクの先頭データアドレスを抜
き出し、今回処理対象データアドレス記憶領域310に
格納する。今回処理対象データアドレスは、時にリンク
の終端を示す情報となる。
データの処理を開始すると、ステップS402において
割り込み制御部302にて割り込みの受け付けを禁止す
る。次にステップS403では、今回処理対象データア
ドレス取得部303がリンクヘッダのリンク先頭データ
アドレス記憶領域からリンクの先頭データアドレスを抜
き出し、今回処理対象データアドレス記憶領域310に
格納する。今回処理対象データアドレスは、時にリンク
の終端を示す情報となる。
【0059】続いてステップS404では、今回処理対
象データアドレスを設定後、データ処理終了判定部30
4が設定された今回処理対象データアドレスがリンクの
終端情報か否かを調べる。終端であればリンク構造デー
タの処理を終了し(ステップS404−Yes)、終端で
なければ処理を継続する(ステップS404−No)。処
理が継続された場合、ステップS405において次回処
理対象データ決定部305が今回処理対象データの内部
情報から次回処理対象データのアドレスを求め、次回処
理対象データアドレス記憶領域105に格納する。本実
施形態のリンク構造データは、データ内のリンク情報で
リンクを構成しているため、このリンク情報の内容を次
回処理対象データアドレス記憶領域105に格納する。
象データアドレスを設定後、データ処理終了判定部30
4が設定された今回処理対象データアドレスがリンクの
終端情報か否かを調べる。終端であればリンク構造デー
タの処理を終了し(ステップS404−Yes)、終端で
なければ処理を継続する(ステップS404−No)。処
理が継続された場合、ステップS405において次回処
理対象データ決定部305が今回処理対象データの内部
情報から次回処理対象データのアドレスを求め、次回処
理対象データアドレス記憶領域105に格納する。本実
施形態のリンク構造データは、データ内のリンク情報で
リンクを構成しているため、このリンク情報の内容を次
回処理対象データアドレス記憶領域105に格納する。
【0060】ステップS406では、次に、データ処理
部306が今回処理対象データに相当するタスクに関す
るデータ処理を行う。データ処理が完了した後、ステッ
プS407では、割り込み制御部302にて一時的に割
り込みの受け付け状態を禁止状態から許可状態に変更
し、その後、ステップS408において割り込み処理の
受け付けを禁止状態に戻す。
部306が今回処理対象データに相当するタスクに関す
るデータ処理を行う。データ処理が完了した後、ステッ
プS407では、割り込み制御部302にて一時的に割
り込みの受け付け状態を禁止状態から許可状態に変更
し、その後、ステップS408において割り込み処理の
受け付けを禁止状態に戻す。
【0061】続いて、ステップS409では、今回処理
対象データアドレス取得部303が次回処理対象データ
アドレス記憶領域105に格納されていた次回処理対象
データアドレスを抜き出し、今回処理対象データアドレ
ス記憶領域310に格納する。以後、データ処理終了判
定部304にて処理の終了を検知するまでステップS4
04〜ステップS409の処理を繰り返す。なお、リン
ク構造データの処理はリンクデータの終端を発見する以
外に、ステップS406において任意の条件が満たされ
ることにより終了する場合もある。
対象データアドレス取得部303が次回処理対象データ
アドレス記憶領域105に格納されていた次回処理対象
データアドレスを抜き出し、今回処理対象データアドレ
ス記憶領域310に格納する。以後、データ処理終了判
定部304にて処理の終了を検知するまでステップS4
04〜ステップS409の処理を繰り返す。なお、リン
ク構造データの処理はリンクデータの終端を発見する以
外に、ステップS406において任意の条件が満たされ
ることにより終了する場合もある。
【0062】図5は、割り込み処理を行うシステムコー
ル処理部201の機能を示すブロック図である。図5に
示すように、割り込んだ側の処理を行うシステムコール
処理部201は、メイン制御部501と、データ処理部
502と、リンク構造データ変更判定部503と、次回
処理対象データアドレス初期化部504とからなる。
ル処理部201の機能を示すブロック図である。図5に
示すように、割り込んだ側の処理を行うシステムコール
処理部201は、メイン制御部501と、データ処理部
502と、リンク構造データ変更判定部503と、次回
処理対象データアドレス初期化部504とからなる。
【0063】メイン制御部501は、割り込み処理から
呼び出されたシステムコール処理の開始から終了までの
一連の処理を、各制御部を用いて実行する。データ処理
部502は、リンク構造データ内のTCBに相当する何れ
かのタスクに対する何らかの処理を実行する。リンク構
造データ変更判定部503は、データ処理部502にお
いて、リンク構造が変更されたか否かの判定を行う。
呼び出されたシステムコール処理の開始から終了までの
一連の処理を、各制御部を用いて実行する。データ処理
部502は、リンク構造データ内のTCBに相当する何れ
かのタスクに対する何らかの処理を実行する。リンク構
造データ変更判定部503は、データ処理部502にお
いて、リンク構造が変更されたか否かの判定を行う。
【0064】次回処理対象データアドレス初期化部50
4は、リンク構造データ変更判定部503にてリンク構
造が変更されたと判断された場合に、次回処理対象デー
タアドレス記憶領域105にリンク先頭データアドレス
記憶領域92の内容を設定する。図5のように構成され
たシステムコール処理部201の処理を、図6に示すフ
ローチャートを用いて詳細に説明する。なお、図6のフ
ローチャートは、図4に示す割り込まれた側の処理のフ
ローチャートに、システムコール処理中に割り込んだ他
のシステムコール処理のフローチャートを追加したもの
である。
4は、リンク構造データ変更判定部503にてリンク構
造が変更されたと判断された場合に、次回処理対象デー
タアドレス記憶領域105にリンク先頭データアドレス
記憶領域92の内容を設定する。図5のように構成され
たシステムコール処理部201の処理を、図6に示すフ
ローチャートを用いて詳細に説明する。なお、図6のフ
ローチャートは、図4に示す割り込まれた側の処理のフ
ローチャートに、システムコール処理中に割り込んだ他
のシステムコール処理のフローチャートを追加したもの
である。
【0065】図4のフローチャートにおいてステップS
407とステップS408との間において、任意のシス
テムコールにてデータ処理が完了し、一時的に割り込み
の受け付けが許可されている。この許可区間において外
部割り込みが発生し、呼び出された割り込み処理の中か
らシステムコールが呼び出され、システムコールの処理
が開始される。
407とステップS408との間において、任意のシス
テムコールにてデータ処理が完了し、一時的に割り込み
の受け付けが許可されている。この許可区間において外
部割り込みが発生し、呼び出された割り込み処理の中か
らシステムコールが呼び出され、システムコールの処理
が開始される。
【0066】割り込んだ側の処理が開始されると、ステ
ップS602においてデータ処理部502が今回処理対
象に相当するタスクに関する処理を行う。データ処理で
は、リンクの任意な位置にTCBを追加したり、リンク内
のTCBを解除したり、あるいはリンク構造データとは無
関係の処理を実行したりする。タスクに関する処理を行
った後、ステップS603においてリンク構造データ変
更判定部503によりリンク構造データのリンク情報を
変更したか否かが判定され、リンク情報が変更されてい
なければシステムコール処理を終了し(ステップS60
3−変更無)、リンク情報が変更されていれば処理を継
続する(ステップS603−変更有)。
ップS602においてデータ処理部502が今回処理対
象に相当するタスクに関する処理を行う。データ処理で
は、リンクの任意な位置にTCBを追加したり、リンク内
のTCBを解除したり、あるいはリンク構造データとは無
関係の処理を実行したりする。タスクに関する処理を行
った後、ステップS603においてリンク構造データ変
更判定部503によりリンク構造データのリンク情報を
変更したか否かが判定され、リンク情報が変更されてい
なければシステムコール処理を終了し(ステップS60
3−変更無)、リンク情報が変更されていれば処理を継
続する(ステップS603−変更有)。
【0067】ステップS604においてリンク情報が変
更されていた場合、次回処理対象データアドレス初期化
部504により、リンクヘッダ90のリンク先頭データ
アドレス記憶領域から変更後のリンク構造データのリン
ク先頭データアドレスを抜き出し、次回処理対象データ
アドレス記憶領域105に格納する。続いて、リンク構
造データの具体例を参照しながら、システムコール処理
部201の割り込んだ側の処理、割り込まれた側の処理
について図9を参照しながら説明する。図9は、次回処
理対象データアドレス記憶領域105が更新されてゆく
様子状態(c-1)、状態(c-2)、状態(c-3)、状態(c-4)・・・・
・・状態(c-7)を示す図である。この具体例は、事象フラ
グを"1"に設定する旨のシステムコール"set_flg(1)"が
呼び出された場合を想定したものである。
更されていた場合、次回処理対象データアドレス初期化
部504により、リンクヘッダ90のリンク先頭データ
アドレス記憶領域から変更後のリンク構造データのリン
ク先頭データアドレスを抜き出し、次回処理対象データ
アドレス記憶領域105に格納する。続いて、リンク構
造データの具体例を参照しながら、システムコール処理
部201の割り込んだ側の処理、割り込まれた側の処理
について図9を参照しながら説明する。図9は、次回処
理対象データアドレス記憶領域105が更新されてゆく
様子状態(c-1)、状態(c-2)、状態(c-3)、状態(c-4)・・・・
・・状態(c-7)を示す図である。この具体例は、事象フラ
グを"1"に設定する旨のシステムコール"set_flg(1)"が
呼び出された場合を想定したものである。
【0068】(状態(c-1))システムコール set_flg(1)
が呼び出だされたので、システムコールサービス141
はリンクヘッダ90における事象フラグ値93に値"1"
を設定する。一方、図9に示すように、リンク構造デー
タにはTCB1−TCB2−TCB3−TCB4が配置されており、リン
クヘッダ90には、TCB1が設定されている。また事象フ
ラグ値93には"1"が設定されている。更に次回処理対
象データアドレス記憶領域105にはTCB1が設定されて
いる。TCB1、TCB2、TCB3、TCB4は、それぞれ事象フラグ
が"2","2","1","3"に設定されるのを待っている。この
状態で、set_flg(1)が発生して事象フラグが"1"に設定
されたものとする。ここでset_flg(1)とは、事象フラグ
が"1"に設定されたことを通知するシステムコールであ
る。この場合、事象フラグが"1"に設定されるのを待っ
ていたTCB3を事象成立待ち状態から解除する必要があ
る。ステップS401〜ステップS402により、TCB1
が先ず今回処理対象となる。このようにTCB1が今回処理
対象に設定されると、リンク構造データは状態(c-1)に
示すようになる。
が呼び出だされたので、システムコールサービス141
はリンクヘッダ90における事象フラグ値93に値"1"
を設定する。一方、図9に示すように、リンク構造デー
タにはTCB1−TCB2−TCB3−TCB4が配置されており、リン
クヘッダ90には、TCB1が設定されている。また事象フ
ラグ値93には"1"が設定されている。更に次回処理対
象データアドレス記憶領域105にはTCB1が設定されて
いる。TCB1、TCB2、TCB3、TCB4は、それぞれ事象フラグ
が"2","2","1","3"に設定されるのを待っている。この
状態で、set_flg(1)が発生して事象フラグが"1"に設定
されたものとする。ここでset_flg(1)とは、事象フラグ
が"1"に設定されたことを通知するシステムコールであ
る。この場合、事象フラグが"1"に設定されるのを待っ
ていたTCB3を事象成立待ち状態から解除する必要があ
る。ステップS401〜ステップS402により、TCB1
が先ず今回処理対象となる。このようにTCB1が今回処理
対象に設定されると、リンク構造データは状態(c-1)に
示すようになる。
【0069】(状態(c-2))今回処理対象が終了ではな
いので、ステップS404はNoとなり、ステップS40
5に移行する。ステップS405では、TCB1のリンク情
報94に設定されているTCB2を破線の矢印に示すように
次回処理対象データアドレス記憶領域105にコピーす
る。これにより、次回処理対象はTCB2となる。次回処理
対象を設定した後、ステップS406においてタスク1
の処理を実行する。ここでもし事象フラグの値と、これ
から実行しようとしているタスクの待ち条件解除情報9
5とが一致すれば、当該タスクの事象成立待ち状態は解
除される。しかしタスク1の待ち条件解除情報95の値
は"2"であり、事象フラグの値は"1"なので不一致とな
り、TCB1はリンク構造データから解除されることなくリ
ンク構造データに残存する。タスク1の実行をスキップ
した後、ステップS407に移行する。ステップS40
7では割り込み処理を許可する。このように割り込み処
理を許可した時点の直後に割り込み処理が発生したもの
とする。
いので、ステップS404はNoとなり、ステップS40
5に移行する。ステップS405では、TCB1のリンク情
報94に設定されているTCB2を破線の矢印に示すように
次回処理対象データアドレス記憶領域105にコピーす
る。これにより、次回処理対象はTCB2となる。次回処理
対象を設定した後、ステップS406においてタスク1
の処理を実行する。ここでもし事象フラグの値と、これ
から実行しようとしているタスクの待ち条件解除情報9
5とが一致すれば、当該タスクの事象成立待ち状態は解
除される。しかしタスク1の待ち条件解除情報95の値
は"2"であり、事象フラグの値は"1"なので不一致とな
り、TCB1はリンク構造データから解除されることなくリ
ンク構造データに残存する。タスク1の実行をスキップ
した後、ステップS407に移行する。ステップS40
7では割り込み処理を許可する。このように割り込み処
理を許可した時点の直後に割り込み処理が発生したもの
とする。
【0070】(状態(c-3))この割り込み処理の発生時
には、ステップS601の処理に移行する。ここでステ
ップS602の割り込み処理実行時においてシステムコ
ールrel_wait(task2)が呼出されたものとする。ここでr
el_wait(task2)とは、TCB2の事象成立待ち状態を強制解
除するシステムコールである。このrel_wait(task2)の
実行により、TCB2がリンク構造データから解除されてス
テップS603に移行する。TCB2がリンク構造データか
ら解除されたので、リンク構造データに変更が生じたこ
とになり、ステップS603がYesとなる。ステップS
603がYesとなれば、ステップS604においてリン
ク先頭データアドレス記憶領域92に示されているTCB1
を次回処理対象データアドレス記憶領域105に設定す
る。この時点で、次回処理対象データアドレス記憶領域
105はTCB1と設定される。
には、ステップS601の処理に移行する。ここでステ
ップS602の割り込み処理実行時においてシステムコ
ールrel_wait(task2)が呼出されたものとする。ここでr
el_wait(task2)とは、TCB2の事象成立待ち状態を強制解
除するシステムコールである。このrel_wait(task2)の
実行により、TCB2がリンク構造データから解除されてス
テップS603に移行する。TCB2がリンク構造データか
ら解除されたので、リンク構造データに変更が生じたこ
とになり、ステップS603がYesとなる。ステップS
603がYesとなれば、ステップS604においてリン
ク先頭データアドレス記憶領域92に示されているTCB1
を次回処理対象データアドレス記憶領域105に設定す
る。この時点で、次回処理対象データアドレス記憶領域
105はTCB1と設定される。
【0071】(状態(c-4))以上の処理で割り込み処理
が終了する。割り込み処理の終了により、システムコー
ルset_flg(1)の処理が再開される。割り込み処理が発生
したのは、ステップS407であるので、set_flg(1)の
処理はステップS408から再開する。ここで割り込み
処理におけるステップS408〜ステップS409によ
り、TCB1が次回処理対象に設定されたので、リンク構造
データの処理をTCB1からやり直す。即ち、ステップS4
04がYesになるまで、ステップS404〜ステップS
409が繰り返し行われる。
が終了する。割り込み処理の終了により、システムコー
ルset_flg(1)の処理が再開される。割り込み処理が発生
したのは、ステップS407であるので、set_flg(1)の
処理はステップS408から再開する。ここで割り込み
処理におけるステップS408〜ステップS409によ
り、TCB1が次回処理対象に設定されたので、リンク構造
データの処理をTCB1からやり直す。即ち、ステップS4
04がYesになるまで、ステップS404〜ステップS
409が繰り返し行われる。
【0072】ステップS404〜ステップS409の繰
り返しにより、リンク構造データは最終的に状態(c-4)
に示すものとなる。続いて割り込まれた側の処理におい
てリンク構造データに新たなTCBが挿入された場合の処
理の具体例について図10を参照しながら説明する。 (状態(d-1))図10に示すように、リンク構造データ
にはTCB2−TCB3−TCB4が配置されており、リンクヘッダ
90には、TCB1が設定されている。ここでシステムコー
ル set_flg(1)が呼び出だされたので、システムコール
サービス141はリンクヘッダ90における事象フラグ
値93に値"1"を設定する。また次回処理対象データア
ドレス記憶領域105にはTCB2が設定されている。TCB
2、TCB3、TCB4間のリンク情報94は、各タスクの優先
度順に設定されているものとする。ここで優先度は、各
タスクの番号に等しいものとし、このタスク番号が少な
いもの程、優先度は高いと考える。
り返しにより、リンク構造データは最終的に状態(c-4)
に示すものとなる。続いて割り込まれた側の処理におい
てリンク構造データに新たなTCBが挿入された場合の処
理の具体例について図10を参照しながら説明する。 (状態(d-1))図10に示すように、リンク構造データ
にはTCB2−TCB3−TCB4が配置されており、リンクヘッダ
90には、TCB1が設定されている。ここでシステムコー
ル set_flg(1)が呼び出だされたので、システムコール
サービス141はリンクヘッダ90における事象フラグ
値93に値"1"を設定する。また次回処理対象データア
ドレス記憶領域105にはTCB2が設定されている。TCB
2、TCB3、TCB4間のリンク情報94は、各タスクの優先
度順に設定されているものとする。ここで優先度は、各
タスクの番号に等しいものとし、このタスク番号が少な
いもの程、優先度は高いと考える。
【0073】またこれらのタスクは、それぞれ事象フラ
グが"2","1","3"に設定されるのを待っている。この状
態で、set_flg(1)が発生して事象フラグが"1"に設定さ
れたものとする。この場合、事象フラグが"1"に設定さ
れるのを待っていたTCB3を事象成立待ち状態から解除す
る必要がある。ステップS401〜ステップS402に
より、TCB2が先ず今回処理対象となる。TCB2が今回処理
対象に設定されると、リンク構造データは状態(d-1)に
示すようになる。
グが"2","1","3"に設定されるのを待っている。この状
態で、set_flg(1)が発生して事象フラグが"1"に設定さ
れたものとする。この場合、事象フラグが"1"に設定さ
れるのを待っていたTCB3を事象成立待ち状態から解除す
る必要がある。ステップS401〜ステップS402に
より、TCB2が先ず今回処理対象となる。TCB2が今回処理
対象に設定されると、リンク構造データは状態(d-1)に
示すようになる。
【0074】(状態(d-2))今回処理対象が終了ではな
いので、ステップS404はNoとなり、ステップS40
5に移行する。ステップS405では、TCB2のリンク情
報94に設定されているTCB3を次回処理対象データアド
レス記憶領域105にコピーする。これにより、次回処
理対象はTCB3となる。次回処理対象を設定した後、ステ
ップS406においてタスク2の処理を実行する。ここ
でもし事象フラグの値と、これから実行しようとしてい
るタスクの待ち条件解除情報95とが一致すれば、当該
タスクの事象成立待ち状態は解除される。しかしタスク
2の待ち条件解除情報95の値は"2"であり、事象フラグ
の値は"1"なので、不一致となり、TCB2はリンク構造デ
ータから解除されることなくリンク構造データに残存す
る。タスク2の実行をスキップした後、ステップS40
7に移行する。ステップS407では割り込み処理を許
可する。このように割り込み処理を許可した時点の直後
に割り込み処理が発生したものとする。
いので、ステップS404はNoとなり、ステップS40
5に移行する。ステップS405では、TCB2のリンク情
報94に設定されているTCB3を次回処理対象データアド
レス記憶領域105にコピーする。これにより、次回処
理対象はTCB3となる。次回処理対象を設定した後、ステ
ップS406においてタスク2の処理を実行する。ここ
でもし事象フラグの値と、これから実行しようとしてい
るタスクの待ち条件解除情報95とが一致すれば、当該
タスクの事象成立待ち状態は解除される。しかしタスク
2の待ち条件解除情報95の値は"2"であり、事象フラグ
の値は"1"なので、不一致となり、TCB2はリンク構造デ
ータから解除されることなくリンク構造データに残存す
る。タスク2の実行をスキップした後、ステップS40
7に移行する。ステップS407では割り込み処理を許
可する。このように割り込み処理を許可した時点の直後
に割り込み処理が発生したものとする。
【0075】(状態(d-3))この割り込み処理の発生時
には、ステップS601の処理に移行する。ここでステ
ップS602の割り込み処理実行時においてシステムコ
ールwait_flg(task1)が呼出されたものとする。wait_fl
g(task1)とは、タスク1を事象成立待ち状態として新た
にリンク構造データに追加するシステムコールであり、
このwait_flg(task1)の実行により、TCB1がリンク構造
データに追加されてステップS603に移行する。ここ
でTCB1がリンク構造データに追加されたので、リンク構
造データに変更が生じたことになり、ステップS603
がYesとなる。ステップS603がYesとなれば、ステッ
プS604においてリンク先頭データアドレス記憶領域
92に示されているTCB1を次回処理対象データアドレス
記憶領域105に設定する。この時点で、次回処理対象
データアドレス記憶領域105はTCB1と設定される。
には、ステップS601の処理に移行する。ここでステ
ップS602の割り込み処理実行時においてシステムコ
ールwait_flg(task1)が呼出されたものとする。wait_fl
g(task1)とは、タスク1を事象成立待ち状態として新た
にリンク構造データに追加するシステムコールであり、
このwait_flg(task1)の実行により、TCB1がリンク構造
データに追加されてステップS603に移行する。ここ
でTCB1がリンク構造データに追加されたので、リンク構
造データに変更が生じたことになり、ステップS603
がYesとなる。ステップS603がYesとなれば、ステッ
プS604においてリンク先頭データアドレス記憶領域
92に示されているTCB1を次回処理対象データアドレス
記憶領域105に設定する。この時点で、次回処理対象
データアドレス記憶領域105はTCB1と設定される。
【0076】(状態(d-4))以上の処理で割り込み処理
が終了する。割り込み処理の終了により、set_flg(1)の
処理が再開される。割り込み処理が発生したのは、ステ
ップS407であるので、set_flg(1)の処理をステップ
S408から再開する。ここで割り込み処理におけるス
テップS408〜ステップS409により、TCB1が次回
処理対象に設定されたので、リンク構造データの処理を
TCB1からやり直す。即ち、ステップS404がYesにな
るまで、ステップS404〜ステップS409が繰り返
し行われる。
が終了する。割り込み処理の終了により、set_flg(1)の
処理が再開される。割り込み処理が発生したのは、ステ
ップS407であるので、set_flg(1)の処理をステップ
S408から再開する。ここで割り込み処理におけるス
テップS408〜ステップS409により、TCB1が次回
処理対象に設定されたので、リンク構造データの処理を
TCB1からやり直す。即ち、ステップS404がYesにな
るまで、ステップS404〜ステップS409が繰り返
し行われる。
【0077】ステップS404〜ステップS409の繰
り返しにより、リンク構造データは最終的に状態(d-4)
に示すものとなる。以上のように本実施形態によれば、
割り込み禁止時間の短縮化を行う際のシステムコール処
理時間の増加を最少限に留めることができるとともに、
タスクに付加した優先度の趣旨通りにタスク制御が行わ
れない時間を短縮化することができ、OSの実行時間をあ
まり考慮する必要はない。これによりリアルタイムシス
テム構築におけるアプリケーション設計が効率化され
る。
り返しにより、リンク構造データは最終的に状態(d-4)
に示すものとなる。以上のように本実施形態によれば、
割り込み禁止時間の短縮化を行う際のシステムコール処
理時間の増加を最少限に留めることができるとともに、
タスクに付加した優先度の趣旨通りにタスク制御が行わ
れない時間を短縮化することができ、OSの実行時間をあ
まり考慮する必要はない。これによりリアルタイムシス
テム構築におけるアプリケーション設計が効率化され
る。
【0078】(第2実施形態)第1実施形態では、次回
処理対象記憶領域をリンク先頭データアドレス記憶領域
92に示されているものに設定していたが、第2実施形
態では、割り込まれた側の処理において最後に実行され
ていたTCBの次のTCBから、割り込んだ側の処理を再開す
るように構成された実施形態である。
処理対象記憶領域をリンク先頭データアドレス記憶領域
92に示されているものに設定していたが、第2実施形
態では、割り込まれた側の処理において最後に実行され
ていたTCBの次のTCBから、割り込んだ側の処理を再開す
るように構成された実施形態である。
【0079】図7は、割り込んだ側の処理におけるシス
テムコール処理部201の構成を機能的に示すブロック
図である。上記のような再開処理のため、図7に示すブ
ロックでは、図3に記載したブロック図に、システムコ
ール処理中に割り込んだ他のシステムコール処理のブロ
ック図が追加されている。ただし、図3に既に示した部
分は省略してある。
テムコール処理部201の構成を機能的に示すブロック
図である。上記のような再開処理のため、図7に示すブ
ロックでは、図3に記載したブロック図に、システムコ
ール処理中に割り込んだ他のシステムコール処理のブロ
ック図が追加されている。ただし、図3に既に示した部
分は省略してある。
【0080】図7に示すように、第2実施形態における
システムコールサービス141は、メイン制御部701
と、処理再開データ位置記憶部702と、データ処理部
703と、リンク構造データ変更判定部704と、処理
再開データ位置決定部705と、処理再開データ位置記
憶領域710とからなる。メイン制御部701は、割り
込み処理から呼び出されたシステムコール処理の開始か
ら終了までの一連の処理を、各制御部を用いて実行す
る。
システムコールサービス141は、メイン制御部701
と、処理再開データ位置記憶部702と、データ処理部
703と、リンク構造データ変更判定部704と、処理
再開データ位置決定部705と、処理再開データ位置記
憶領域710とからなる。メイン制御部701は、割り
込み処理から呼び出されたシステムコール処理の開始か
ら終了までの一連の処理を、各制御部を用いて実行す
る。
【0081】処理再開データ位置記憶部702は、リン
クヘッダの次回処理対象データアドレス記憶領域105
に格納されている次回処理対象データアドレスを処理再
開データ位置として、処理再開データ位置記憶領域71
0に格納する。それと共に、この再開対象の優先度と、
再開対象のリンク先とを処理再開データ位置記憶領域7
10に保存する。
クヘッダの次回処理対象データアドレス記憶領域105
に格納されている次回処理対象データアドレスを処理再
開データ位置として、処理再開データ位置記憶領域71
0に格納する。それと共に、この再開対象の優先度と、
再開対象のリンク先とを処理再開データ位置記憶領域7
10に保存する。
【0082】データ処理部703は、リンク構造データ
内の任意のTCBに対応するタスクに関する処理を行う。
リンク構造データ変更判定部704は、データ処理部7
03において、リンク構造が変更されたか否かの判定を
行う。処理再開データ位置決定部705は、リンク構造
データ変更判定部704にてリンク構造が変更されたと
判断された場合に、次回処理対象データアドレス記憶領
域105に処理再開のために最適なリンクデータアドレ
スを設定する。
内の任意のTCBに対応するタスクに関する処理を行う。
リンク構造データ変更判定部704は、データ処理部7
03において、リンク構造が変更されたか否かの判定を
行う。処理再開データ位置決定部705は、リンク構造
データ変更判定部704にてリンク構造が変更されたと
判断された場合に、次回処理対象データアドレス記憶領
域105に処理再開のために最適なリンクデータアドレ
スを設定する。
【0083】図7のブロック図に示したように構成され
た第2実施形態に係るシステムコール処理部201の処
理を図8に示すフローチャートを用いて更に詳細に説明
する。なお、図8のフローチャートは、図4に示した第
1実施形態の割り込んだ側の処理のフローチャートに、
システムコール処理中に割り込んだ他のシステムコール
処理のフローチャートを追加したものである。
た第2実施形態に係るシステムコール処理部201の処
理を図8に示すフローチャートを用いて更に詳細に説明
する。なお、図8のフローチャートは、図4に示した第
1実施形態の割り込んだ側の処理のフローチャートに、
システムコール処理中に割り込んだ他のシステムコール
処理のフローチャートを追加したものである。
【0084】任意のシステムコールにてデータ処理が完
了し、一時的に割り込みの受け付けを許可した時点(ス
テップS407とステップS408の間)で外部割り込
みが発生し、呼び出された割り込み処理の中からシステ
ムコールが呼び出され、システムコールの処理を開始す
る。まず、ステップS802において処理再開データ位
置記憶部702がリンクヘッダの次回処理対象データア
ドレス記憶領域105に格納されている次回処理対象デ
ータアドレスを再開対象として、処理再開データ位置記
憶領域710に格納する。それと共に、この再開対象の
優先度と、再開対象のリンク先とを処理再開データ位置
記憶領域710に保存する。
了し、一時的に割り込みの受け付けを許可した時点(ス
テップS407とステップS408の間)で外部割り込
みが発生し、呼び出された割り込み処理の中からシステ
ムコールが呼び出され、システムコールの処理を開始す
る。まず、ステップS802において処理再開データ位
置記憶部702がリンクヘッダの次回処理対象データア
ドレス記憶領域105に格納されている次回処理対象デ
ータアドレスを再開対象として、処理再開データ位置記
憶領域710に格納する。それと共に、この再開対象の
優先度と、再開対象のリンク先とを処理再開データ位置
記憶領域710に保存する。
【0085】次に、ステップS803では、データ処理
部703が今回処理対象データに関する処理を行う。こ
こでの処理では、リンクの任意な位置にデータを追加し
たり、リンク構造データ内のTCBをリンクから解除した
り、あるいはリンク構造データとは無関係の処理を実行
したりする。ステップS804においてデータ処理を行
った後、リンク構造データ変更判定部704によりデー
タ処理がリンク構造データのリンク情報を変更したか否
かを判定し、リンク情報が変更されていなければシステ
ムコール処理を終了し(804−変更無)、リンク情報
が変更されていれば処理を継続する(804−変更
有)。
部703が今回処理対象データに関する処理を行う。こ
こでの処理では、リンクの任意な位置にデータを追加し
たり、リンク構造データ内のTCBをリンクから解除した
り、あるいはリンク構造データとは無関係の処理を実行
したりする。ステップS804においてデータ処理を行
った後、リンク構造データ変更判定部704によりデー
タ処理がリンク構造データのリンク情報を変更したか否
かを判定し、リンク情報が変更されていなければシステ
ムコール処理を終了し(804−変更無)、リンク情報
が変更されていれば処理を継続する(804−変更
有)。
【0086】リンク情報が変更されていた場合、ステッ
プS805では、ステップS804のデータ処理におい
て再開対象がリンク構造データから解除されたかを判定
する。そうでないならステップS807に移行するが、
そうならばステップS806に移行する。ステップS8
06では、ステップS804のデータ処理において、タ
スクの事象成立待ち状態を解除する旨のシステムコール
が実行され、再開対象が解除された場合、保存されてい
た再開対象のリンク先を次回処理対象として設定する。
プS805では、ステップS804のデータ処理におい
て再開対象がリンク構造データから解除されたかを判定
する。そうでないならステップS807に移行するが、
そうならばステップS806に移行する。ステップS8
06では、ステップS804のデータ処理において、タ
スクの事象成立待ち状態を解除する旨のシステムコール
が実行され、再開対象が解除された場合、保存されてい
た再開対象のリンク先を次回処理対象として設定する。
【0087】ステップS807では、ステップS804
のデータ処理においてリンク構造データにタスクが挿入
されたかを判定する。ステップS808では、再開対象
と新たに挿入されたタスクの優先度のどちらが高いかを
判定する。再開対象の優先度が高いならステップS81
0に移行するが、新たに挿入されたタスクの優先度が高
いならばステップS809に移行する。
のデータ処理においてリンク構造データにタスクが挿入
されたかを判定する。ステップS808では、再開対象
と新たに挿入されたタスクの優先度のどちらが高いかを
判定する。再開対象の優先度が高いならステップS81
0に移行するが、新たに挿入されたタスクの優先度が高
いならばステップS809に移行する。
【0088】ステップS809では、新たに挿入された
タスクを次回処理対象として設定する。ステップS81
0では、再開対象を次回処理対象として設定する。続い
て図8のフローチャートにおける処理の一例について、
図11の説明図を参照しながら説明する。図11は、リ
ンク構造データが図8のフローチャートに示す処理によ
り変更される様子を示す図である。
タスクを次回処理対象として設定する。ステップS81
0では、再開対象を次回処理対象として設定する。続い
て図8のフローチャートにおける処理の一例について、
図11の説明図を参照しながら説明する。図11は、リ
ンク構造データが図8のフローチャートに示す処理によ
り変更される様子を示す図である。
【0089】(状態(c-1))図11に示すように、リン
ク構造データにはTCB1−TCB2−TCB3−TCB4が配置されて
おり、リンクヘッダ90には、TCB1が設定されている。
また事象フラグ値93には"1"が設定されている。また
次回処理対象データアドレス記憶領域105にはTCB1が
設定されている。TCB1、TCB2、TCB3、TCB4は、それぞれ
事象フラグが"2","2","1","3"に設定されるのを待って
いる。この状態で、set_flg(1)が発生して事象フラグ
が"1"に設定されたものとする。この場合、事象フラグ
が"1"に設定されるのを待っていたTCB4を事象成立待ち
状態から解除する必要がある。ステップS401〜ステ
ップS402により、TCB1が先ず今回処理対象となる。
このようにTCB1が今回処理対象に設定されると、リンク
構造データは状態(c-1)に示すようになる。
ク構造データにはTCB1−TCB2−TCB3−TCB4が配置されて
おり、リンクヘッダ90には、TCB1が設定されている。
また事象フラグ値93には"1"が設定されている。また
次回処理対象データアドレス記憶領域105にはTCB1が
設定されている。TCB1、TCB2、TCB3、TCB4は、それぞれ
事象フラグが"2","2","1","3"に設定されるのを待って
いる。この状態で、set_flg(1)が発生して事象フラグ
が"1"に設定されたものとする。この場合、事象フラグ
が"1"に設定されるのを待っていたTCB4を事象成立待ち
状態から解除する必要がある。ステップS401〜ステ
ップS402により、TCB1が先ず今回処理対象となる。
このようにTCB1が今回処理対象に設定されると、リンク
構造データは状態(c-1)に示すようになる。
【0090】今回処理対象が終了ではないので、ステッ
プS404はNoとなり、ステップS405に移行する。
ステップS405では、TCB1のリンク情報94に設定さ
れているTCB2を次回処理対象データアドレス記憶領域1
05にコピーする。これにより次回処理対象はTCB2とな
る。次回処理対象を設定した後、ステップS406にお
いてタスク1の処理を実行しようとする。ここでもし事
象フラグの値と、これから実行しようとしているタスク
の待ち条件解除情報95とが一致すれば、当該タスクの
事象成立待ち状態は解除される。しかしタスク1の待ち
条件解除情報95の値は"2"であり、事象フラグの値は"
1"なので、不一致となり、TCB1はリンク構造データから
解除されることなくリンク構造データに残存する。タス
ク1の実行をスキップした後、ステップS407に移行
する。ステップS407では割り込み処理を許可する。
このように割り込み処理を許可した時点の直後に割り込
み処理が発生したものとする。
プS404はNoとなり、ステップS405に移行する。
ステップS405では、TCB1のリンク情報94に設定さ
れているTCB2を次回処理対象データアドレス記憶領域1
05にコピーする。これにより次回処理対象はTCB2とな
る。次回処理対象を設定した後、ステップS406にお
いてタスク1の処理を実行しようとする。ここでもし事
象フラグの値と、これから実行しようとしているタスク
の待ち条件解除情報95とが一致すれば、当該タスクの
事象成立待ち状態は解除される。しかしタスク1の待ち
条件解除情報95の値は"2"であり、事象フラグの値は"
1"なので、不一致となり、TCB1はリンク構造データから
解除されることなくリンク構造データに残存する。タス
ク1の実行をスキップした後、ステップS407に移行
する。ステップS407では割り込み処理を許可する。
このように割り込み処理を許可した時点の直後に割り込
み処理が発生したものとする。
【0091】(状態(c-2))この割り込み処理の発生時
には、ステップS801の処理に移行する。ここでステ
ップS802において再開対象にTCB2を設定し、この再
開対象の優先度と、再開対象のリンク先となるTCB3とを
保存する。再開対象を設定し、再開対象の優先度及び再
開対象のリンク先の保存後、ステップS803において
割り込み処理を実行する。この割り込み処理実行時にお
いてシステムコールrel_wait(task2)が呼び出されたも
のとする。このrel_wait(task2)の実行により、TCB2が
リンク構造データから解除されてステップS804に移
行する。TCB2がリンク構造データから解除されたので、
リンク構造データに変更が生じたことになり、ステップ
S804がYesとなる。ステップS804がYesとなれ
ば、ステップS805に移行する。rel_wait(task2)に
より解除されたのはTCB2なので、rel_wait(task2)によ
り、再開時に次回処理対象となるTCBが消滅してしまっ
たことになる。そのため、ステップS805がYesとな
りステップS806に移行する。ここで再開対象は解除
されたが、この再開対象のリンク先であったTCB3は、ス
テップS802において保存されている。ステップS8
06では、このリンク先であるTCB3を次回処理対象とし
て矢印a1に示すように設定する。
には、ステップS801の処理に移行する。ここでステ
ップS802において再開対象にTCB2を設定し、この再
開対象の優先度と、再開対象のリンク先となるTCB3とを
保存する。再開対象を設定し、再開対象の優先度及び再
開対象のリンク先の保存後、ステップS803において
割り込み処理を実行する。この割り込み処理実行時にお
いてシステムコールrel_wait(task2)が呼び出されたも
のとする。このrel_wait(task2)の実行により、TCB2が
リンク構造データから解除されてステップS804に移
行する。TCB2がリンク構造データから解除されたので、
リンク構造データに変更が生じたことになり、ステップ
S804がYesとなる。ステップS804がYesとなれ
ば、ステップS805に移行する。rel_wait(task2)に
より解除されたのはTCB2なので、rel_wait(task2)によ
り、再開時に次回処理対象となるTCBが消滅してしまっ
たことになる。そのため、ステップS805がYesとな
りステップS806に移行する。ここで再開対象は解除
されたが、この再開対象のリンク先であったTCB3は、ス
テップS802において保存されている。ステップS8
06では、このリンク先であるTCB3を次回処理対象とし
て矢印a1に示すように設定する。
【0092】(状態(c-3))以上の処理で割り込み処理
が終了する。割り込み処理の終了により、set_flg(1)の
処理が再開される。割り込み処理が発生したのは、ステ
ップS407であるので、set_flg(1)の処理はステップ
S408から再開する。ここで割り込み処理におけるス
テップS408〜ステップS409により、TCB3が次回
処理対象に設定されたので、リンク構造データの処理を
TCB3からやり直す。即ち、ステップS404がYesにな
るまで、ステップS404〜ステップS409が繰り返
し行われる。
が終了する。割り込み処理の終了により、set_flg(1)の
処理が再開される。割り込み処理が発生したのは、ステ
ップS407であるので、set_flg(1)の処理はステップ
S408から再開する。ここで割り込み処理におけるス
テップS408〜ステップS409により、TCB3が次回
処理対象に設定されたので、リンク構造データの処理を
TCB3からやり直す。即ち、ステップS404がYesにな
るまで、ステップS404〜ステップS409が繰り返
し行われる。
【0093】尚、リンク構造データから解除されたTCB
が再開対象以外である場合、次回処理対象の設定は行わ
ない。続いて図12のフローチャートの処理の一例につ
いて、図12の説明図を参照しながら説明する。図12
は、リンク構造データが図8のフローチャートに示す処
理により変更される様子を示す図である。
が再開対象以外である場合、次回処理対象の設定は行わ
ない。続いて図12のフローチャートの処理の一例につ
いて、図12の説明図を参照しながら説明する。図12
は、リンク構造データが図8のフローチャートに示す処
理により変更される様子を示す図である。
【0094】(状態(d-1))リンク構造データにはTCB2
−TCB3−TCB4が配置されており、リンクヘッダ90のリ
ンク先頭データアドレス記憶領域92には、TCB2が設定
されている。また事象フラグ値93には"1"が設定され
ている。また次回処理対象データアドレス記憶領域10
5にはTCB3が設定されている。TCB2、TCB3、TCB4は、そ
れぞれ事象フラグが"2","1","3"に設定されるのを待っ
ている。この状態で、set_flg(1)が発生して事象フラグ
が(1)に設定されたものとする。この場合、事象フラグ
が"1"に設定されるのを待っていたTCB3を事象成立待ち
状態から解除する必要がある。ステップS401〜ステ
ップS402により、TCB1が先ず今回処理対象となる。
このようにTCB1が今回処理対象に設定されると、リンク
構造データは状態(d-1)に示すようになる。
−TCB3−TCB4が配置されており、リンクヘッダ90のリ
ンク先頭データアドレス記憶領域92には、TCB2が設定
されている。また事象フラグ値93には"1"が設定され
ている。また次回処理対象データアドレス記憶領域10
5にはTCB3が設定されている。TCB2、TCB3、TCB4は、そ
れぞれ事象フラグが"2","1","3"に設定されるのを待っ
ている。この状態で、set_flg(1)が発生して事象フラグ
が(1)に設定されたものとする。この場合、事象フラグ
が"1"に設定されるのを待っていたTCB3を事象成立待ち
状態から解除する必要がある。ステップS401〜ステ
ップS402により、TCB1が先ず今回処理対象となる。
このようにTCB1が今回処理対象に設定されると、リンク
構造データは状態(d-1)に示すようになる。
【0095】今回処理対象が終了ではないので、ステッ
プS404はNoとなり、ステップS405に移行する。
ステップS405では、TCB1のリンク情報94に設定さ
れているTCB2を次回処理対象データアドレス記憶領域1
05にコピーする。これにより、次回処理対象はTCB2と
なる。次回処理対象を設定した後、ステップS406に
おいてタスク2の処理を実行する。ここでもし事象フラ
グの値と、これから実行しようとしているタスクの待ち
条件解除情報95とが一致すれば、当該タスクの事象成
立待ち状態は解除される。しかしタスク2の待ち条件解
除情報95の値は"2"であり、事象フラグの値は"1"なの
で、不一致となり、TCB1はリンク構造データから解除さ
れることなくリンク構造データに残存する。タスク2の
実行をスキップした後、ステップS407に移行する。
ステップS407では割り込み処理を許可する。このよ
うに割り込み処理を許可した時点の直後に割り込み処理
が発生したものとする。
プS404はNoとなり、ステップS405に移行する。
ステップS405では、TCB1のリンク情報94に設定さ
れているTCB2を次回処理対象データアドレス記憶領域1
05にコピーする。これにより、次回処理対象はTCB2と
なる。次回処理対象を設定した後、ステップS406に
おいてタスク2の処理を実行する。ここでもし事象フラ
グの値と、これから実行しようとしているタスクの待ち
条件解除情報95とが一致すれば、当該タスクの事象成
立待ち状態は解除される。しかしタスク2の待ち条件解
除情報95の値は"2"であり、事象フラグの値は"1"なの
で、不一致となり、TCB1はリンク構造データから解除さ
れることなくリンク構造データに残存する。タスク2の
実行をスキップした後、ステップS407に移行する。
ステップS407では割り込み処理を許可する。このよ
うに割り込み処理を許可した時点の直後に割り込み処理
が発生したものとする。
【0096】(状態(d-2))この割り込み処理の発生時
には、ステップS801の処理に移行する。ここでステ
ップS802において再開対象にTCB2を設定し、この再
開対象の優先度と、リンク先(TCB3)とを保存する。再
開対象の設定及び再開対象のリンク先の保存後、ステッ
プS803において割り込み処理を実行する。この割り
込み処理実行時においてシステムコールwait_flg(task
1)が呼出されたものとする。このwait_flg(task1)の実
行により、TCB1がリンク構造データに追加されてステッ
プS804に移行する。TCB1が追加されたので、リンク
構造データに変更が生じたことになり、ステップS80
4がYesとなる。ステップS804がYesとなれば、ステ
ップS805に移行する。ここではTCBが挿入されたの
でステップS805はNoとなりステップS807に移行
する。ステップS807がYesとなってステップS80
8に移行する。ステップS808では、再開対象と、新
たに挿入されたタスクとの優先度を比較する。ここで、
新規に挿入されたTCB1の方が優先度が高いので、新規に
挿入されたTCBは再開対象以前に配置されたことがわか
る。優先度がより高いTCBが挿入されたので、リンク構
造データにおいて新規に挿入されたTCBから処理をやり
直すべく、ステップS809では、挿入対象であるTCB1
を次回処理対象として矢印a2に示すように設定する。
には、ステップS801の処理に移行する。ここでステ
ップS802において再開対象にTCB2を設定し、この再
開対象の優先度と、リンク先(TCB3)とを保存する。再
開対象の設定及び再開対象のリンク先の保存後、ステッ
プS803において割り込み処理を実行する。この割り
込み処理実行時においてシステムコールwait_flg(task
1)が呼出されたものとする。このwait_flg(task1)の実
行により、TCB1がリンク構造データに追加されてステッ
プS804に移行する。TCB1が追加されたので、リンク
構造データに変更が生じたことになり、ステップS80
4がYesとなる。ステップS804がYesとなれば、ステ
ップS805に移行する。ここではTCBが挿入されたの
でステップS805はNoとなりステップS807に移行
する。ステップS807がYesとなってステップS80
8に移行する。ステップS808では、再開対象と、新
たに挿入されたタスクとの優先度を比較する。ここで、
新規に挿入されたTCB1の方が優先度が高いので、新規に
挿入されたTCBは再開対象以前に配置されたことがわか
る。優先度がより高いTCBが挿入されたので、リンク構
造データにおいて新規に挿入されたTCBから処理をやり
直すべく、ステップS809では、挿入対象であるTCB1
を次回処理対象として矢印a2に示すように設定する。
【0097】(状態d-3)以上の処理で割り込み処理が終
了する。割り込み処理の終了により、割り込まれた側の
処理が再開される。割り込み処理が発生したのは、ステ
ップS407であるので、ステップS408から再開す
る。ここで割り込み処理におけるステップS408〜ス
テップS409により、TCB1が次回処理対象に設定され
たので、リンク構造データの処理をTCB1からやり直す。
即ち、ステップS404がYesになるまで、ステップS
404〜ステップS409が繰り返し行われる。
了する。割り込み処理の終了により、割り込まれた側の
処理が再開される。割り込み処理が発生したのは、ステ
ップS407であるので、ステップS408から再開す
る。ここで割り込み処理におけるステップS408〜ス
テップS409により、TCB1が次回処理対象に設定され
たので、リンク構造データの処理をTCB1からやり直す。
即ち、ステップS404がYesになるまで、ステップS
404〜ステップS409が繰り返し行われる。
【0098】上記の処理において、再開対象より前にTC
Bが挿入されたなら、その新たに挿入されたTCBが次回処
理対象に設定される。また、再開対象より後にTCBが挿
入されたなら、次回処理対象を変更する必要はない。以
上のように本実施形態によれば、割り込まれた側の処理
において最後に実行されていたTCBの次のTCBから、割り
込まれた側の処理を再開するので、割り込まれた側の処
理における処理の進捗を向上させることができる。
Bが挿入されたなら、その新たに挿入されたTCBが次回処
理対象に設定される。また、再開対象より後にTCBが挿
入されたなら、次回処理対象を変更する必要はない。以
上のように本実施形態によれば、割り込まれた側の処理
において最後に実行されていたTCBの次のTCBから、割り
込まれた側の処理を再開するので、割り込まれた側の処
理における処理の進捗を向上させることができる。
【0099】(第3実施形態)第2実施形態ではリンク
構造データにおいてTCBが結合されていたが、第3実施
形態ではメモリ管理ブロックがリンク構造データに結合
されている。ここでリンク構造データに結合されるメモ
リ管理ブロックは、タスクに割り当てられていないフリ
ーのメモリブロックを示すものである。即ち、フリーメ
モリブロックは、サイズが小さい順にリンク構造データ
において配置され、フリーブロックを示すものとして、
タスクに割り当てられるのを待つ。
構造データにおいてTCBが結合されていたが、第3実施
形態ではメモリ管理ブロックがリンク構造データに結合
されている。ここでリンク構造データに結合されるメモ
リ管理ブロックは、タスクに割り当てられていないフリ
ーのメモリブロックを示すものである。即ち、フリーメ
モリブロックは、サイズが小さい順にリンク構造データ
において配置され、フリーブロックを示すものとして、
タスクに割り当てられるのを待つ。
【0100】この状態で、何れかのタスクがget_blkを
発行すれば、このget_blkに示される要求を満たすサイ
ズのフリーメモリブロックのうち、最小のものをリンク
構造データから探索して、発行元のタスクに割り当て
る。図13(a)(b)は第3実施形態におけるメモリ
管理ブロックの割り当て処理の一例を示す図である。図
13(a)(b)は第3実施形態におけるメモリ管理ブ
ロックの割り当て処理の一例を示す図である。
発行すれば、このget_blkに示される要求を満たすサイ
ズのフリーメモリブロックのうち、最小のものをリンク
構造データから探索して、発行元のタスクに割り当て
る。図13(a)(b)は第3実施形態におけるメモリ
管理ブロックの割り当て処理の一例を示す図である。図
13(a)(b)は第3実施形態におけるメモリ管理ブ
ロックの割り当て処理の一例を示す図である。
【0101】図13(a)に示すようにサイズ"350"の
フリーメモリブロックを求めるget_blkが何れかのタス
クから発行された場合、メモリ管理ブロックBLK1→メモ
リ管理ブロックBLK2→メモリ管理ブロックBLK3→メモリ
管理ブロックBLK4の順で探索が行われ、メモリ管理ブロ
ックBLK4が割り当て対象となる。このようにメモリ管理
ブロックBLK4を割当対象とすることが確定した段階で割
り込み処理が発生したものとする。この割り込み処理に
おいて、rel_blk(350)が発行されたものとする。このre
l_blk(350)は、サイズ"350"のフリーメモリブロックを
開放する旨のシステムコールであり、このシステムコー
ルが実行されたことにより、リンク構造データは図13
(b)に示すものとなる。図13(b)を参照すると、
メモリ管理ブロックBLK3とメモリ管理ブロックBLK4との
間にメモリ管理ブロックBLK5が挿入されていることがわ
かる。このようにフリーメモリブロックが挿入されれ
ば、第2実施形態と同様、新規に挿入されたフリーメモ
リブロックと、再開対象として保存したフリーメモリブ
ロックとの優先度を比較し、再開対象を更新すべきか否
かを決定する。ここでメモリ管理ブロックBLK4のサイズ
は"400"であり、メモリ管理ブロックBLK5のサイズは"35
0"である。これらのサイズを優先度と考えて比較を行え
ば、メモリ管理ブロックBLK5の優先度が高いことがわか
る。そのため、ステップS809において、メモリ管理
ブロックBLK5を再開対象に設定して、割り込み処理を終
了し、割り込まれた側の処理を再開する。
フリーメモリブロックを求めるget_blkが何れかのタス
クから発行された場合、メモリ管理ブロックBLK1→メモ
リ管理ブロックBLK2→メモリ管理ブロックBLK3→メモリ
管理ブロックBLK4の順で探索が行われ、メモリ管理ブロ
ックBLK4が割り当て対象となる。このようにメモリ管理
ブロックBLK4を割当対象とすることが確定した段階で割
り込み処理が発生したものとする。この割り込み処理に
おいて、rel_blk(350)が発行されたものとする。このre
l_blk(350)は、サイズ"350"のフリーメモリブロックを
開放する旨のシステムコールであり、このシステムコー
ルが実行されたことにより、リンク構造データは図13
(b)に示すものとなる。図13(b)を参照すると、
メモリ管理ブロックBLK3とメモリ管理ブロックBLK4との
間にメモリ管理ブロックBLK5が挿入されていることがわ
かる。このようにフリーメモリブロックが挿入されれ
ば、第2実施形態と同様、新規に挿入されたフリーメモ
リブロックと、再開対象として保存したフリーメモリブ
ロックとの優先度を比較し、再開対象を更新すべきか否
かを決定する。ここでメモリ管理ブロックBLK4のサイズ
は"400"であり、メモリ管理ブロックBLK5のサイズは"35
0"である。これらのサイズを優先度と考えて比較を行え
ば、メモリ管理ブロックBLK5の優先度が高いことがわか
る。そのため、ステップS809において、メモリ管理
ブロックBLK5を再開対象に設定して、割り込み処理を終
了し、割り込まれた側の処理を再開する。
【0102】第2実施形態の手順で次回処理対象を設定
したが、第1実施形態同様、リンクヘッダ90のリンク
先頭データアドレス記憶領域92に設定されているフリ
ーメモリブロックを次回処理対象データアドレス記憶領
域105に設定してもよい。尚第1〜第3実施形態にお
いて説明したオペレーティングシステムをコンピュータ
読み取り可能な記録媒体に記録して流通・販売の対象に
しても良い。このような記録媒体には、ICカードや光デ
ィスク、フロッピーディスク等があるが、これらに記録
された機械語プログラムはプロセッサ、メモリを有する
機器にインストールされることにより利用に供される。
この機器は、インストールした機械語プログラムを逐次
実行して、本実施形態に示した制御ブロック処理装置の
機能を実現するのである。
したが、第1実施形態同様、リンクヘッダ90のリンク
先頭データアドレス記憶領域92に設定されているフリ
ーメモリブロックを次回処理対象データアドレス記憶領
域105に設定してもよい。尚第1〜第3実施形態にお
いて説明したオペレーティングシステムをコンピュータ
読み取り可能な記録媒体に記録して流通・販売の対象に
しても良い。このような記録媒体には、ICカードや光デ
ィスク、フロッピーディスク等があるが、これらに記録
された機械語プログラムはプロセッサ、メモリを有する
機器にインストールされることにより利用に供される。
この機器は、インストールした機械語プログラムを逐次
実行して、本実施形態に示した制御ブロック処理装置の
機能を実現するのである。
【0103】
【発明の効果】以上説明したように本発明は、リンク情
報を用いて結合されている複数の制御ブロックからなる
リンク構造データと、複数の制御ブロックのうち何れか
の制御ブロックのアドレスが書き込まれるアドレス記憶
領域と、アドレス記憶領域にアドレスが書き込まれてい
る制御ブロックを今回処理対象として確定する動作と、
その制御ブロックのリンク先の制御ブロックを次回処理
対象として確定して、当該次回処理対象のアドレスをア
ドレス記憶領域に書き込む動作とをリンク構造データに
おける全ての制御ブロックについて繰り返す処理対象確
定手段と、今回処理対象が確定される度に、この今回処
理対象についての処理を行う処理手段と、今回処理対象
についての処理が行われてから、次の今回処理対象が確
定されるまでの期間において割り込み処理の発生を許可
する許可手段とを備え、前記処理対象確定手段は、割り
込み処理を許可した期間において割り込み処理が発生し
た場合に起動され、リンク構造データにおける何れかの
制御ブロックを割り込み処理における今回処理対象とし
て確定すると共に、別の制御ブロックを割り込まれた側
の処理を再開する際に処理すべき次回処理対象として確
定して、当該次回処理対象のアドレスをアドレス記憶領
域に書き込むリエントラントルーチンを有し、割り込み
処理発生後割り込まれた側の処理を再開する場合、及
び、割り込み処理が発生しなかった場合において、アド
レス記憶領域に書き込まれている制御ブロックを今回処
理対象として確定するように構成されている。
報を用いて結合されている複数の制御ブロックからなる
リンク構造データと、複数の制御ブロックのうち何れか
の制御ブロックのアドレスが書き込まれるアドレス記憶
領域と、アドレス記憶領域にアドレスが書き込まれてい
る制御ブロックを今回処理対象として確定する動作と、
その制御ブロックのリンク先の制御ブロックを次回処理
対象として確定して、当該次回処理対象のアドレスをア
ドレス記憶領域に書き込む動作とをリンク構造データに
おける全ての制御ブロックについて繰り返す処理対象確
定手段と、今回処理対象が確定される度に、この今回処
理対象についての処理を行う処理手段と、今回処理対象
についての処理が行われてから、次の今回処理対象が確
定されるまでの期間において割り込み処理の発生を許可
する許可手段とを備え、前記処理対象確定手段は、割り
込み処理を許可した期間において割り込み処理が発生し
た場合に起動され、リンク構造データにおける何れかの
制御ブロックを割り込み処理における今回処理対象とし
て確定すると共に、別の制御ブロックを割り込まれた側
の処理を再開する際に処理すべき次回処理対象として確
定して、当該次回処理対象のアドレスをアドレス記憶領
域に書き込むリエントラントルーチンを有し、割り込み
処理発生後割り込まれた側の処理を再開する場合、及
び、割り込み処理が発生しなかった場合において、アド
レス記憶領域に書き込まれている制御ブロックを今回処
理対象として確定するように構成されている。
【0104】割り込み処理発生後割り込まれた側の処理
を再開する場合、割り込み処理が発生しなかった場合の
双方において共通の手順で次回処理対象を確定すること
ができる。次回処理対象の確定手順は共通化され、簡略
化されるので、特開平9-311794に記載された技術のよう
に、割り込まれた側の処理でフラグの監視を行う必要が
なくなる。よって、今回処理対象−次回処理対象の確定
に要する時間を最少限に留めることができる。次回処理
対象確定に要する時間が短縮されれば、制御ブロックに
対応するタスクに割り当て可能なシステム稼動時間が長
くなる。タスクに割り当てられたシステム稼動時間が長
くなれば、その分だけ、システム設計者の負担は軽減さ
れるので、アプリケーションプログラムを効率良く設計
することができる。
を再開する場合、割り込み処理が発生しなかった場合の
双方において共通の手順で次回処理対象を確定すること
ができる。次回処理対象の確定手順は共通化され、簡略
化されるので、特開平9-311794に記載された技術のよう
に、割り込まれた側の処理でフラグの監視を行う必要が
なくなる。よって、今回処理対象−次回処理対象の確定
に要する時間を最少限に留めることができる。次回処理
対象確定に要する時間が短縮されれば、制御ブロックに
対応するタスクに割り当て可能なシステム稼動時間が長
くなる。タスクに割り当てられたシステム稼動時間が長
くなれば、その分だけ、システム設計者の負担は軽減さ
れるので、アプリケーションプログラムを効率良く設計
することができる。
【0105】また上記装置において、前記複数の制御ブ
ロックのうち、何れかのものは、割り込み処理実行時に
おいて、リンク構造データから解除され、前記リエント
ラントルーチンは、解除されずにリンク構造データに残
った制御ブロックを次回処理対象として確定して、その
アドレスをアドレス記憶領域に書き込むように構成して
も良い。
ロックのうち、何れかのものは、割り込み処理実行時に
おいて、リンク構造データから解除され、前記リエント
ラントルーチンは、解除されずにリンク構造データに残
った制御ブロックを次回処理対象として確定して、その
アドレスをアドレス記憶領域に書き込むように構成して
も良い。
【0106】割り込み処理実行時において何れかの制御
ブロックがリンク構造データから解除された場合、割り
込んだ側の処理において次回処理対象が正常に設定され
るので、割り込まれた側の処理ではフラグを監視する必
要はない。割り込まれた側の処理におけるフラグの監視
負担が軽減するので、不要なフラグ監視による処理時間
の増加によりタスク切り換えまでの時間が軽減させるこ
とができ、アプリケーションに相当するタスクが優先度
どおり制御されない時間を減少させることができる。
ブロックがリンク構造データから解除された場合、割り
込んだ側の処理において次回処理対象が正常に設定され
るので、割り込まれた側の処理ではフラグを監視する必
要はない。割り込まれた側の処理におけるフラグの監視
負担が軽減するので、不要なフラグ監視による処理時間
の増加によりタスク切り換えまでの時間が軽減させるこ
とができ、アプリケーションに相当するタスクが優先度
どおり制御されない時間を減少させることができる。
【0107】また上記装置において、割り込み処理は複
数の事象のうち何れかが制御ブロック処理装置において
成立した際に発生し、制御ブロックのそれぞれには、タ
スクが対応しており、制御ブロックには、これに対応す
るタスクが成立を待っている事象を示す事象情報を有し
ており、前記複数の制御ブロックのうち、その事象情報
が割り込み処理において通知された事象と一致したもの
は、割り込み処理実行時において、実行された後にリン
ク構造データから解除され、前記リエントラントルーチ
ンは、解除されずにリンク構造データに残った制御ブロ
ックを次回処理対象として確定して、そのアドレスをア
ドレス記憶領域に書き込むように構成しても良い。この
ように構成されれば、事象が成立してから、即座に、そ
の事象の成立を待っていたタスクに対して制御を行うこ
とができ、即時応答性を向上させることができる。これ
により、リアルタイムシステムを簡易に構成することが
できる。
数の事象のうち何れかが制御ブロック処理装置において
成立した際に発生し、制御ブロックのそれぞれには、タ
スクが対応しており、制御ブロックには、これに対応す
るタスクが成立を待っている事象を示す事象情報を有し
ており、前記複数の制御ブロックのうち、その事象情報
が割り込み処理において通知された事象と一致したもの
は、割り込み処理実行時において、実行された後にリン
ク構造データから解除され、前記リエントラントルーチ
ンは、解除されずにリンク構造データに残った制御ブロ
ックを次回処理対象として確定して、そのアドレスをア
ドレス記憶領域に書き込むように構成しても良い。この
ように構成されれば、事象が成立してから、即座に、そ
の事象の成立を待っていたタスクに対して制御を行うこ
とができ、即時応答性を向上させることができる。これ
により、リアルタイムシステムを簡易に構成することが
できる。
【0108】また上記装置において、前記リエントラン
トルーチンは、リンク構造データにおいて解除された制
御ブロックのリンク先となる制御ブロックを次回処理対
象として確定して、そのアドレスをアドレス記憶領域に
書き込むように構成しても良い。特開平9-311794に記載
された技術のように、割り込まれたシステムコール処理
においてリンク構造データの先頭から再度処理を行う必
要がなくなるため、割り込みによるシステムコール処理
時間の増加を最少限に留めることができる。
トルーチンは、リンク構造データにおいて解除された制
御ブロックのリンク先となる制御ブロックを次回処理対
象として確定して、そのアドレスをアドレス記憶領域に
書き込むように構成しても良い。特開平9-311794に記載
された技術のように、割り込まれたシステムコール処理
においてリンク構造データの先頭から再度処理を行う必
要がなくなるため、割り込みによるシステムコール処理
時間の増加を最少限に留めることができる。
【0109】また上記装置において、割り込み処理実行
時において、リンク構造データには何れかのタスクに対
応する制御ブロックが挿入され、前記リエントラントル
ーチンは、割り込まれた側への再開時に実行すべき再開
対象の制御ブロック及び挿入された制御ブロックに対応
するタスクの何れかを先に実行すべきかを決定する決定
部を備え、決定部により決定された制御ブロックを次回
処理対象として確定して、そのアドレスをアドレス記憶
領域に書き込むように構成しても良い。
時において、リンク構造データには何れかのタスクに対
応する制御ブロックが挿入され、前記リエントラントル
ーチンは、割り込まれた側への再開時に実行すべき再開
対象の制御ブロック及び挿入された制御ブロックに対応
するタスクの何れかを先に実行すべきかを決定する決定
部を備え、決定部により決定された制御ブロックを次回
処理対象として確定して、そのアドレスをアドレス記憶
領域に書き込むように構成しても良い。
【0110】割り込まれた側の処理を再開する際に、割
り込んだ側の処理側でリンク構造データに挿入されたタ
スク制御ブロックを先に処理すべきか、割り込まれた側
の処理発生前に次に実行されるべきであったタスク制御
ブロックを先に処理すべきかが柔軟に決定されるので、
リアルタイムシステムにおける処理効率を向上させるこ
とができる。
り込んだ側の処理側でリンク構造データに挿入されたタ
スク制御ブロックを先に処理すべきか、割り込まれた側
の処理発生前に次に実行されるべきであったタスク制御
ブロックを先に処理すべきかが柔軟に決定されるので、
リアルタイムシステムにおける処理効率を向上させるこ
とができる。
【0111】また上記装置において、制御ブロックに
は、それに対応するタスクの優劣に基づいた優先度が付
与されており、前記決定部は、割り込まれた側への再開
時に実行すべき再開対象の制御ブロックと、挿入された
挿入対象の制御ブロックとで優先度を比較して、何れに
対応するタスクの何れを先に実行すべきかを決定するよ
うに構成しても良い。割り込まれた側の処理を再開する
際に、割り込んだ側の処理側でリンク構造データに挿入
されたタスク制御ブロックを先に処理すべきか、割り込
まれた側の処理発生前に次に実行されるべきであったタ
スク制御ブロックを先に処理すべきかを決定するに際し
て、予め定められた優先度が参照されるので、優先度通
りにシステムを動作させることができる。
は、それに対応するタスクの優劣に基づいた優先度が付
与されており、前記決定部は、割り込まれた側への再開
時に実行すべき再開対象の制御ブロックと、挿入された
挿入対象の制御ブロックとで優先度を比較して、何れに
対応するタスクの何れを先に実行すべきかを決定するよ
うに構成しても良い。割り込まれた側の処理を再開する
際に、割り込んだ側の処理側でリンク構造データに挿入
されたタスク制御ブロックを先に処理すべきか、割り込
まれた側の処理発生前に次に実行されるべきであったタ
スク制御ブロックを先に処理すべきかを決定するに際し
て、予め定められた優先度が参照されるので、優先度通
りにシステムを動作させることができる。
【0112】また上記装置において、リンク構造データ
は、複数のタスクのうち、最初に実行すべきタスクに対
応する制御ブロックを示すリンクヘッダを有しており、
リエントラントルーチンは、解除されずにリンク構造デ
ータに残った制御ブロックのうち、リンクヘッダに示さ
れる制御ブロックを次回処理対象として確定して、その
アドレスをアドレス記憶領域に書き込むように構成して
も良い。割り込み処理から呼び出されたシステムコール
処理においてリンク構造データの整合性を保つために必
要な前記外部参照可能なメモリに設定するデータの選定
処理が不要となるため、割り込み処理の高速化が図れ
る。
は、複数のタスクのうち、最初に実行すべきタスクに対
応する制御ブロックを示すリンクヘッダを有しており、
リエントラントルーチンは、解除されずにリンク構造デ
ータに残った制御ブロックのうち、リンクヘッダに示さ
れる制御ブロックを次回処理対象として確定して、その
アドレスをアドレス記憶領域に書き込むように構成して
も良い。割り込み処理から呼び出されたシステムコール
処理においてリンク構造データの整合性を保つために必
要な前記外部参照可能なメモリに設定するデータの選定
処理が不要となるため、割り込み処理の高速化が図れ
る。
【0113】また上記装置において、制御ブロック処理
装置は、複数のタスクと、空きのメモリブロックである
フリーメモリブロックとを有し、各制御ブロックは、複
数のフリーメモリブロックのそれぞれと対応しており、
前記処理手段は、今回処理対象となる制御ブロックに対
応するフリーメモリブロックを、何れかのタスクに割り
当てる割当部を備えるように構成しても良い。このよう
に構成した場合、フリーメモリブロックを何れかのタス
クに効率良く割り当てることができる。
装置は、複数のタスクと、空きのメモリブロックである
フリーメモリブロックとを有し、各制御ブロックは、複
数のフリーメモリブロックのそれぞれと対応しており、
前記処理手段は、今回処理対象となる制御ブロックに対
応するフリーメモリブロックを、何れかのタスクに割り
当てる割当部を備えるように構成しても良い。このよう
に構成した場合、フリーメモリブロックを何れかのタス
クに効率良く割り当てることができる。
【0114】また上記装置において、前記複数の制御ブ
ロックのうち、何れかのものは、割り込み処理実行時に
おいて、リンク構造データから解除され、前記リエント
ラントルーチンは、解除されずにリンク構造データに残
った制御ブロックを次回処理対象として確定して、その
アドレスをアドレス記憶領域に書き込むように構成して
も良い。割り込み処理実行時において何れかのメモリ制
御ブロックがリンク構造データから解除された場合、割
り込んだ側の処理において次回処理対象が正常に設定さ
れるので、割り込まれた側の処理はフラグ情報を監視す
る必要はない。割り込まれた側の処理におけるフラグ情
報の監視負担が軽減するので、不要なフラグ監視による
処理時間の増加によりタスク切り換えまでの時間が軽減
するので、アプリケーションに相当するタスクが優先度
どおり制御されない時間を減少させることができる。
ロックのうち、何れかのものは、割り込み処理実行時に
おいて、リンク構造データから解除され、前記リエント
ラントルーチンは、解除されずにリンク構造データに残
った制御ブロックを次回処理対象として確定して、その
アドレスをアドレス記憶領域に書き込むように構成して
も良い。割り込み処理実行時において何れかのメモリ制
御ブロックがリンク構造データから解除された場合、割
り込んだ側の処理において次回処理対象が正常に設定さ
れるので、割り込まれた側の処理はフラグ情報を監視す
る必要はない。割り込まれた側の処理におけるフラグ情
報の監視負担が軽減するので、不要なフラグ監視による
処理時間の増加によりタスク切り換えまでの時間が軽減
するので、アプリケーションに相当するタスクが優先度
どおり制御されない時間を減少させることができる。
【0115】また上記装置において、前記リエントラン
トルーチンは、リンク構造データにおいて解除された制
御ブロックのリンク先となる制御ブロックを次回処理対
象として確定して、そのアドレスをアドレス記憶領域に
書き込むように構成しても良い。特開平9-311794に記載
された技術のように、割り込まれたシステムコール処理
においてリンク構造データの先頭から再度処理を行う必
要がなくなるため、割り込みによるシステムコール処理
時間の増加を最少限に留めることができる。
トルーチンは、リンク構造データにおいて解除された制
御ブロックのリンク先となる制御ブロックを次回処理対
象として確定して、そのアドレスをアドレス記憶領域に
書き込むように構成しても良い。特開平9-311794に記載
された技術のように、割り込まれたシステムコール処理
においてリンク構造データの先頭から再度処理を行う必
要がなくなるため、割り込みによるシステムコール処理
時間の増加を最少限に留めることができる。
【0116】また上記装置において、前記割り込み処理
実行時において、リンク構造データには何れかのフリー
メモリブロックに対応する制御ブロックが挿入され、前
記リエントラントルーチンは、割り込まれた側の処理の
再開時に割り当てるべき再開対象の制御ブロック及び挿
入された制御ブロックに対応するフリーメモリブロック
の何れを先にタスクに割り当てるべきかを決定する決定
部を備え、決定部により決定された制御ブロックを次回
処理対象として確定して、そのアドレスをアドレス記憶
領域に書き込むように構成しても良い。割り込まれた側
の処理を再開する際に、割り込んだ側の処理側でリンク
構造データに挿入されたメモリ制御ブロックを先にタス
クに割り当てるべきか、割り込まれた側の処理発生前に
次に実行されるべきであったメモリ制御ブロックを先に
タスクに割り当てるべきかが柔軟に決定されるので、リ
アルタイムシステムにおける処理効率を向上させること
ができる。
実行時において、リンク構造データには何れかのフリー
メモリブロックに対応する制御ブロックが挿入され、前
記リエントラントルーチンは、割り込まれた側の処理の
再開時に割り当てるべき再開対象の制御ブロック及び挿
入された制御ブロックに対応するフリーメモリブロック
の何れを先にタスクに割り当てるべきかを決定する決定
部を備え、決定部により決定された制御ブロックを次回
処理対象として確定して、そのアドレスをアドレス記憶
領域に書き込むように構成しても良い。割り込まれた側
の処理を再開する際に、割り込んだ側の処理側でリンク
構造データに挿入されたメモリ制御ブロックを先にタス
クに割り当てるべきか、割り込まれた側の処理発生前に
次に実行されるべきであったメモリ制御ブロックを先に
タスクに割り当てるべきかが柔軟に決定されるので、リ
アルタイムシステムにおける処理効率を向上させること
ができる。
【0117】また上記装置において、制御ブロックに
は、それに対応するフリーメモリブロックのメモリサイ
ズに基づいた優先度が付与されており、前記決定部は、
割り込まれた側への再開時にタスクに割り当てるべき再
開対象の制御ブロックと、挿入された挿入対象の制御ブ
ロックとで優先度を比較して、何れに対応するフリーメ
モリブロックの何れを先にタスクに割り当てるべきかを
決定するように構成しても良い。割り込まれた側の処理
を再開する際に、割り込んだ側の処理側でリンク構造デ
ータに挿入されたメモリ制御ブロックを先にタスクに割
り当てるか、割り込まれた側の処理発生前に次にタスク
に割り当てるべきであったメモリ制御ブロックを先に処
理すべきかを決定するに際して、フリーメモリブロック
のサイズが参照されるので、サイズの順序でフリーメモ
リブロックを各タスクに割り当てることができる。
は、それに対応するフリーメモリブロックのメモリサイ
ズに基づいた優先度が付与されており、前記決定部は、
割り込まれた側への再開時にタスクに割り当てるべき再
開対象の制御ブロックと、挿入された挿入対象の制御ブ
ロックとで優先度を比較して、何れに対応するフリーメ
モリブロックの何れを先にタスクに割り当てるべきかを
決定するように構成しても良い。割り込まれた側の処理
を再開する際に、割り込んだ側の処理側でリンク構造デ
ータに挿入されたメモリ制御ブロックを先にタスクに割
り当てるか、割り込まれた側の処理発生前に次にタスク
に割り当てるべきであったメモリ制御ブロックを先に処
理すべきかを決定するに際して、フリーメモリブロック
のサイズが参照されるので、サイズの順序でフリーメモ
リブロックを各タスクに割り当てることができる。
【0118】また上記装置において、リンク構造データ
は、複数のフリーメモリブロックのうち、最初にタスク
に割り当てるべきフリーメモリブロックに対応する制御
ブロックのアドレスを示すリンクヘッダを有しており、
第1割当部は、解除されずにリンク構造データに残った
制御ブロックのうち、リンクヘッダに示される制御ブロ
ックのアドレスを大域的領域に書き込むように構成して
も良い。割り込み処理から呼び出されたシステムコール
処理においてリンク構造データの整合性を保つために必
要な前記外部参照可能なメモリに設定するデータの選定
処理が不要となるため、割り込み処理の高速化が図れ
る。
は、複数のフリーメモリブロックのうち、最初にタスク
に割り当てるべきフリーメモリブロックに対応する制御
ブロックのアドレスを示すリンクヘッダを有しており、
第1割当部は、解除されずにリンク構造データに残った
制御ブロックのうち、リンクヘッダに示される制御ブロ
ックのアドレスを大域的領域に書き込むように構成して
も良い。割り込み処理から呼び出されたシステムコール
処理においてリンク構造データの整合性を保つために必
要な前記外部参照可能なメモリに設定するデータの選定
処理が不要となるため、割り込み処理の高速化が図れ
る。
【図1】オペレーティングシステムを搭載したコンピュ
ータ装置の一例を示したブロック図である。
ータ装置の一例を示したブロック図である。
【図2】メモリ装置104の外部参照領域に配置されて
いるリンクヘッダ90、リンク構造データの一例を示す
図である。
いるリンクヘッダ90、リンク構造データの一例を示す
図である。
【図3】割り込み処理により割り込まれる側の処理にお
けるシステムコール処理部201の構成を機能的に示す
ブロック図である。
けるシステムコール処理部201の構成を機能的に示す
ブロック図である。
【図4】割り込み処理により割り込まれる側の処理にお
けるシステムコール処理部201の処理内容を示すフロ
ーチャートである。
けるシステムコール処理部201の処理内容を示すフロ
ーチャートである。
【図5】割り込み処理を行うシステムコール処理部20
1の機能を示すブロック図である。
1の機能を示すブロック図である。
【図6】図4に示す割り込まれた側の処理のフローチャ
ートに、システムコール処理中に割り込んだ他のシステ
ムコール処理のフローチャートを追加した図である。
ートに、システムコール処理中に割り込んだ他のシステ
ムコール処理のフローチャートを追加した図である。
【図7】割り込んだ側の処理におけるシステムコール処
理部201の構成を機能的に示すブロック図である。
理部201の構成を機能的に示すブロック図である。
【図8】図4に示した第1実施形態の割り込んだ側の処
理のフローチャートに、システムコール処理中に割り込
んだ他のシステムコール処理のフローチャートを追加し
た図である。
理のフローチャートに、システムコール処理中に割り込
んだ他のシステムコール処理のフローチャートを追加し
た図である。
【図9】次回処理対象データアドレス記憶領域105が
更新されてゆく様子状態(c-1)、状態(c-2)、状態(c-
3)、状態(c-4)を示す図である。
更新されてゆく様子状態(c-1)、状態(c-2)、状態(c-
3)、状態(c-4)を示す図である。
【図10】リンク構造データにはTCB2−TCB3−TCB4が配
置されており、リンクヘッダ90には、TCB1が設定され
ている状態を示す図である。
置されており、リンクヘッダ90には、TCB1が設定され
ている状態を示す図である。
【図11】リンク構造データが図8のフローチャートに
示す処理により変更される様子を示す図である。
示す処理により変更される様子を示す図である。
【図12】リンク構造データが図8のフローチャートに
示す処理により変更される様子を示す図である。
示す処理により変更される様子を示す図である。
【図13】第3実施形態におけるフリーメモリブロック
の割り当て処理の一例を示す図である。
の割り当て処理の一例を示す図である。
【図14】OSの基本機能を説明するためのブロック図で
あり、タスクの実行順序管理、フリーメモリブロックの
割当順序管理に直接関係する機能ブロックを示す図であ
る。
あり、タスクの実行順序管理、フリーメモリブロックの
割当順序管理に直接関係する機能ブロックを示す図であ
る。
【図15】リエントラントルーチンを説明するための図
である。
である。
【図16】リンクヘッダ90と、複数のTask Control B
lock(TCB)からなるリンク構造データの一例を示す図で
ある。
lock(TCB)からなるリンク構造データの一例を示す図で
ある。
【図17】図11に示したリンク構造データに基づい
て、今回処理対象記憶領域、次回処理対象記憶領域が更
新されてゆく様子(状態(a-1)、状態(a-2)、状態(a-
3)、状態(a-4)・・・・・・状態(a-7))を示す図である。
て、今回処理対象記憶領域、次回処理対象記憶領域が更
新されてゆく様子(状態(a-1)、状態(a-2)、状態(a-
3)、状態(a-4)・・・・・・状態(a-7))を示す図である。
【図18】リンク構造データに示される複数のタスクが
順次実行されてゆく様子を示す図である。
順次実行されてゆく様子を示す図である。
【図19】割り込み処理発生の許可区間、禁止区間を設
けた図である。
けた図である。
【図20】割り込み処理発生時のメモリ領域の割り当て
を示す図である。
を示す図である。
【図21】割り込み処理許可区間において割り込み処理
が発生し、この割り込み処理において事象フラグを"2"
に設定する旨のシステムコール"set_flg(2)"が呼び出さ
れた場合に今回処理対象記憶領域、次回処理対象記憶領
域がどのように変化するかを示す図である
が発生し、この割り込み処理において事象フラグを"2"
に設定する旨のシステムコール"set_flg(2)"が呼び出さ
れた場合に今回処理対象記憶領域、次回処理対象記憶領
域がどのように変化するかを示す図である
【図22】割り込み処理許可区間において割り込み処理
が発生し、この割り込み処理においてシステムコール"s
et_flg(2)"が呼び出された場合にリンク構造データがど
のように変化するかを示す図である。
が発生し、この割り込み処理においてシステムコール"s
et_flg(2)"が呼び出された場合にリンク構造データがど
のように変化するかを示す図である。
【図23】割り込み処理許可区間において割り込み処理
が発生し、この割り込み処理においてシステムコールサ
ービス set_flg(2)が呼び出された場合に今回処理対象
記憶領域、次回処理対象記憶領域がどのように変化する
かを示す図である。
が発生し、この割り込み処理においてシステムコールサ
ービス set_flg(2)が呼び出された場合に今回処理対象
記憶領域、次回処理対象記憶領域がどのように変化する
かを示す図である。
【図24】割り込み処理許可区間において割り込み処理
が発生し、この割り込み処理においてシステムコールサ
ービス set_flg(2)が呼び出された場合にリンク構造デ
ータと、フラグ情報とがどのように変化するかを示す図
である。
が発生し、この割り込み処理においてシステムコールサ
ービス set_flg(2)が呼び出された場合にリンク構造デ
ータと、フラグ情報とがどのように変化するかを示す図
である。
90 リンクヘッダ 92 リンク先頭データアドレス記憶領域 93 事象フラグ値 94 リンク情報 95 条件解除情報 101 プログラム制御装置 102 入力装置 103 出力装置 104 メモリ装置 105 次回処理対象データアドレス記憶領域 111 入出力制御 112 処理部 113 タスク 141 システムコールサービス 201 システムコール処理部 202 タスクスケジューラ 203 ディスパッチャ 301 メイン制御部 302 割り込み制御部 303 今回処理対象データアドレス取得部 304 データ処理終了判定部 305 次回処理対象データ決定部 306 データ処理部 310 今回処理対象データアドレス記憶領域 501 メイン制御部 502 データ処理部 503 リンク構造データ変更判定部 504 次回処理対象データアドレス初期化部 701 メイン制御部 702 処理再開データ位置記憶部 703 データ処理部 704 リンク構造データ変更判定部 705 処理再開データ位置決定部 710 処理再開データ位置記憶領域
Claims (26)
- 【請求項1】 リンク情報を用いて結合されている複数
の制御ブロックからなるリンク構造データと、 複数の制御ブロックのうち何れかの制御ブロックのアド
レスが書き込まれるアドレス記憶領域と、 アドレス記憶領域にアドレスが書き込まれている制御ブ
ロックを今回処理対象として決定する動作と、その制御
ブロックのリンク先の制御ブロックを次回処理対象とし
て決定して、当該次回処理対象のアドレスをアドレス記
憶領域に書き込む動作とをリンク構造データにおける全
ての制御ブロックについて繰り返す処理対象決定手段
と、 今回処理対象が決定される度に、この今回処理対象につ
いての処理を行う処理手段と、 今回処理対象についての処理が行われてから、今回処理
対象が次に決定されるまでの期間において割り込み処理
の発生を許可する許可手段とを備え、 前記処理対象決定手段は、 割り込み処理を許可した期間において割り込み処理が発
生した場合に起動され、リンク構造データにおける何れ
かの制御ブロックを割り込み処理における今回処理対象
として決定すると共に、別の制御ブロックを割り込まれ
た側の処理を再開する際に処理すべき次回処理対象とし
て決定して、当該次回処理対象のアドレスをアドレス記
憶領域に書き込むリエントラントルーチンを有し、 割り込み処理発生後割り込まれた側の処理を再開する場
合、及び、割り込み処理が発生しなかった場合におい
て、アドレス記憶領域にアドレスが書き込まれている制
御ブロックを今回処理対象として決定することを特徴と
する制御ブロック処理装置。 - 【請求項2】 前記複数の制御ブロックのうち、何れか
のものは、割り込み処理実行時において、リンク構造デ
ータから解除され、 前記リエントラントルーチンは、 解除されずにリンク構造データに残った制御ブロックを
次回処理対象として決定して、そのアドレスをアドレス
記憶領域に書き込むことを特徴とする請求項1記載の制
御ブロック処理装置。 - 【請求項3】 割り込み処理は複数の事象のうち何れか
が制御ブロック処理装置において成立した際に発生し、 制御ブロックのそれぞれには、タスクが対応しており、
制御ブロックには、これに対応するタスクが成立を待っ
ている事象を示す事象情報を有しており、 前記複数の制御ブロックのうち、その事象情報が割り込
み処理において通知された事象と一致したものは、割り
込み処理実行時において、実行された後にリンク構造デ
ータから解除され、 前記リエントラントルーチンは、 解除されずにリンク構造データに残った制御ブロックを
次回処理対象として決定して、そのアドレスをアドレス
記憶領域に書き込むことを特徴とする請求項2記載の制
御ブロック処理装置。 - 【請求項4】 前記リエントラントルーチンは、 リンク構造データにおいて解除された制御ブロックのリ
ンク先となる制御ブロックを次回処理対象として決定し
て、そのアドレスをアドレス記憶領域に書き込むことを
特徴とする請求項3記載の制御ブロック処理装置。 - 【請求項5】 割り込み処理実行時において、リンク構
造データには何れかのタスクに対応する制御ブロックが
挿入され、 前記リエントラントルーチンは、 割り込まれた側への再開時に実行すべき再開対象の制御
ブロック及び挿入された制御ブロックに対応するタスク
の何れかを先に実行すべきかを決定する決定部を備え、 決定部により決定された制御ブロックを次回処理対象と
して決定して、そのアドレスをアドレス記憶領域に書き
込むことを特徴とする請求項4記載の制御ブロック処理
装置。 - 【請求項6】 制御ブロックには、それに対応するタス
クの優劣に基づいた優先度が付与されており、 前記決定部は、 割り込まれた側への再開時に実行すべき再開対象の制御
ブロックと、挿入された挿入対象の制御ブロックとで優
先度を比較して、何れに対応するタスクの何れを先に実
行すべきかを決定することを特徴とする請求項1〜5の
何れかに記載の制御ブロック処理装置。 - 【請求項7】 リンク構造データは、複数のタスクのう
ち、最初に実行すべきタスクに対応する制御ブロックを
示すリンクヘッダを有しており、 リエントラントルーチンは、 解除されずにリンク構造データに残った制御ブロックの
うち、リンクヘッダに示される制御ブロックを次回処理
対象として決定して、そのアドレスをアドレス記憶領域
に書き込むことを特徴とする請求項6記載の制御ブロッ
ク処理装置。 - 【請求項8】 制御ブロック処理装置は、複数のタスク
と、空きのメモリブロックであるフリーメモリブロック
とを有し、 各制御ブロックは、複数のフリーメモリブロックのそれ
ぞれと対応しており、 前記処理手段は、 今回処理対象となる制御ブロックに対応するフリーメモ
リブロックを、何れかのタスクに割り当てる割当部を備
えることを特徴とする請求項1記載の制御ブロック処理
装置。 - 【請求項9】 前記複数の制御ブロックのうち、何れか
のものは、割り込み処理実行時において、リンク構造デ
ータから解除され、 前記リエントラントルーチンは、 解除されずにリンク構造データに残った制御ブロックを
次回処理対象として決定して、そのアドレスをアドレス
記憶領域に書き込むことを特徴とする請求項8記載の制
御ブロック処理装置。 - 【請求項10】 前記リエントラントルーチンは、 リンク構造データにおいて解除された制御ブロックのリ
ンク先となる制御ブロックを次回処理対象として決定し
て、そのアドレスをアドレス記憶領域に書き込むことを
特徴とする請求項9記載の制御ブロック処理装置。 - 【請求項11】 前記割り込み処理実行時において、リ
ンク構造データには何れかのフリーメモリブロックに対
応する制御ブロックが挿入され、 前記リエントラントルーチンは、 割り込まれた側の処理の再開時に割り当てるべき再開対
象の制御ブロック及び挿入された制御ブロックに対応す
るフリーメモリブロックの何れを先にタスクに割り当て
るべきかを決定する決定部を備え、 決定部により決定された制御ブロックを次回処理対象と
して決定して、そのアドレスをアドレス記憶領域に書き
込むことを特徴とする請求項8〜10の何れかに記載の
制御ブロック処理装置。 - 【請求項12】 制御ブロックには、それに対応するフ
リーメモリブロックのメモリサイズに基づいた優先度が
付与されており、 前記決定部は、 割り込まれた側への再開時にタスクに割り当てるべき再
開対象の制御ブロックと、挿入された挿入対象の制御ブ
ロックとで優先度を比較して、何れに対応するフリーメ
モリブロックの何れを先にタスクに割り当てるべきかを
決定することを特徴とする請求項11記載の制御ブロッ
ク処理装置。 - 【請求項13】 リンク構造データは、複数のフリーメ
モリブロックのうち、最初にタスクに割り当てるべきフ
リーメモリブロックに対応する制御ブロックのアドレス
を示すリンクヘッダを有しており、 第1割当部は、 解除されずにリンク構造データに残った制御ブロックの
うち、リンクヘッダに示される制御ブロックのアドレス
を大域的領域に書き込むことを特徴とする請求項12記
載の制御ブロック処理装置。 - 【請求項14】 制御ブロック処理プログラムを記録し
たコンピュータ読み取り可能な記録媒体であって、 前記コンピュータは、 リンク情報を用いて結合されている複数の制御ブロック
からなるリンク構造データと、 複数の制御ブロックのうち何れかの制御ブロックのアド
レスが書き込まれるアドレス記憶領域とを備え、 前記制御ブロック処理プログラムは、 アドレス記憶領域にアドレスが書き込まれている制御ブ
ロックを今回処理対象として決定する動作と、当該制御
ブロックのリンク先の制御ブロックを次回処理対象とし
て決定して、当該次回処理対象のアドレスをアドレス記
憶領域に書き込む動作とをリンク構造データにおける全
ての制御ブロックについて繰り返す処理対象決定ステッ
プと、 今回処理対象が決定される度に、この今回処理対象につ
いての処理を行う処理ステップと、 今回処理対象についての処理が行われてから、今回処理
対象が次に決定されるまでの期間において割り込み処理
の発生を許可する許可ステップとを備え、 前記処理対象決定ステップは、 割り込み処理を許可した期間において割り込み処理が発
生した場合に起動され、リンク構造データにおける何れ
かの制御ブロックを割り込み処理における今回処理対象
として決定すると共に、別の制御ブロックを割り込まれ
た側の処理を再開する際に処理すべき次回処理対象とし
て決定して、当該次回処理対象のアドレスをアドレス記
憶領域に書き込むリエントラントルーチンを有し、 割り込み処理発生後割り込まれた側の処理を再開する場
合、及び、割り込み処理が発生しなかった場合におい
て、アドレス記憶領域にアドレスが書き込まれている制
御ブロックを今回処理対象として決定することを特徴と
するコンピュータ読み取り可能な記録媒体。 - 【請求項15】 前記複数の制御ブロックのうち、何れ
かのものは、割り込み処理実行時において、リンク構造
データから解除され、 前記リエントラントルーチンは、 解除されずにリンク構造データに残った制御ブロックを
次回処理対象として決定して、そのアドレスをアドレス
記憶領域に書き込むことを特徴とする請求項14記載の
コンピュータ読み取り可能な記録媒体。 - 【請求項16】 割り込み処理は複数の事象のうち何れ
かが制御ブロック処理記録媒体のプログラムにおいて成
立した際に発生し、 制御ブロックのそれぞれには、タスクが対応しており、
制御ブロックには、これに対応するタスクが成立を待っ
ている事象を示す事象情報を有しており、 前記複数の制御ブロックのうち、その事象情報が割り込
み処理において通知された事象と一致したものは、割り
込み処理実行時において、実行された後にリンク構造デ
ータから解除され、 前記リエントラントルーチンは、 解除されずにリンク構造データに残った制御ブロックを
次回処理対象として決定して、そのアドレスをアドレス
記憶領域に書き込むことを特徴とする請求項15記載の
コンピュータ読み取り可能な記録媒体。 - 【請求項17】 前記リエントラントルーチンは、 リンク構造データにおいて解除された制御ブロックのリ
ンク先となる制御ブロックを次回処理対象として決定し
て、そのアドレスをアドレス記憶領域に書き込むことを
特徴とする請求項16記載のコンピュータ読み取り可能
な記録媒体。 - 【請求項18】 割り込み処理実行時において、リンク
構造データには何れかのタスクに対応する制御ブロック
が挿入され、 前記リエントラントルーチンは、 割り込まれた側への再開時に実行すべき再開対象の制御
ブロック及び挿入された制御ブロックに対応するタスク
の何れかを先に実行すべきかを決定する決定サブステッ
プを備え、 決定サブステップにより決定された制御ブロックを次回
処理対象として決定して、そのアドレスをアドレス記憶
領域に書き込むことを特徴とする請求項17記載のコン
ピュータ読み取り可能な記録媒体。 - 【請求項19】 制御ブロックには、それに対応するタ
スクの優劣に基づいた優先度が付与されており、 前記決定サブステップは、 割り込まれた側への再開時に実行すべき再開対象の制御
ブロックと、挿入された挿入対象の制御ブロックとで優
先度を比較して、何れに対応するタスクの何れを先に実
行すべきかを決定することを特徴とする請求項14〜1
8の何れかに記載のコンピュータ読み取り可能な記録媒
体。 - 【請求項20】 リンク構造データは、複数のタスクの
うち、最初に実行すべきタスクに対応する制御ブロック
を示すリンクヘッダを有しており、 リエントラントルーチンは、 解除されずにリンク構造データに残った制御ブロックの
うち、リンクヘッダに示される制御ブロックを次回処理
対象として決定して、そのアドレスをアドレス記憶領域
に書き込むことを特徴とする請求項19記載のコンピュ
ータ読み取り可能な記録媒体。 - 【請求項21】 コンピュータ読み取り可能な記録媒体
は、複数のタスクと、空きのメモリブロックであるフリ
ーメモリブロックとを有し、 各制御ブロックは、複数のフリーメモリブロックのそれ
ぞれと対応しており、 前記処理ステップは、 今回処理対象となる制御ブロックに対応するフリーメモ
リブロックを、何れかのタスクに割り当てる割当サブス
テップからなることを特徴とする請求項14記載のコン
ピュータ読み取り可能な記録媒体。 - 【請求項22】 前記複数の制御ブロックのうち、何れ
かのものは、割り込み処理実行時において、リンク構造
データから解除され、 前記リエントラントルーチンは、 解除されずにリンク構造データに残った制御ブロックを
次回処理対象として決定して、そのアドレスをアドレス
記憶領域に書き込むことを特徴とする請求項21記載の
コンピュータ読み取り可能な記録媒体。 - 【請求項23】 前記リエントラントルーチンは、 リンク構造データにおいて解除された制御ブロックのリ
ンク先となる制御ブロックを次回処理対象として決定し
て、そのアドレスをアドレス記憶領域に書き込むことを
特徴とする請求項22記載のコンピュータ読み取り可能
な記録媒体。 - 【請求項24】 前記割り込み処理実行時において、リ
ンク構造データには何れかのフリーメモリブロックに対
応する制御ブロックが挿入され、 前記リエントラントルーチンは、 割り込まれた側の処理の再開時に割り当てるべき再開対
象の制御ブロック及び挿入された制御ブロックに対応す
るフリーメモリブロックの何れを先にタスクに割り当て
るべきかを決定する決定サブステップを備え、 決定サブステップにより決定された制御ブロックを次回
処理対象として決定して、そのアドレスをアドレス記憶
領域に書き込むことを特徴とする請求項21〜23の何
れかに記載のコンピュータ読み取り可能な記録媒体。 - 【請求項25】 制御ブロックには、それに対応するフ
リーメモリブロックのメモリサイズに基づいた優先度が
付与されており、 前記決定サブステップは、 割り込まれた側への再開時にタスクに割り当てるべき再
開対象の制御ブロックと、挿入された挿入対象の制御ブ
ロックとで優先度を比較して、何れに対応するフリーメ
モリブロックの何れを先にタスクに割り当てるべきかを
決定することを特徴とする請求項24記載のコンピュー
タ読み取り可能な記録媒体。 - 【請求項26】 リンク構造データは、複数のフリーメ
モリブロックのうち、最初にタスクに割り当てるべきフ
リーメモリブロックに対応する制御ブロックのアドレス
を示すリンクヘッダを有しており、 第1割当サブステップは、 解除されずにリンク構造データに残った制御ブロックの
うち、リンクヘッダに示される制御ブロックのアドレス
を大域的領域に書き込むことを特徴とする請求項25記
載のコンピュータ読み取り可能な記録媒体。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP11123675A JP2000315162A (ja) | 1999-04-30 | 1999-04-30 | 制御ブロック処理装置及び制御ブロック処理プログラムを記録したコンピュータ読み取り可能な記録媒体 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP11123675A JP2000315162A (ja) | 1999-04-30 | 1999-04-30 | 制御ブロック処理装置及び制御ブロック処理プログラムを記録したコンピュータ読み取り可能な記録媒体 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2000315162A true JP2000315162A (ja) | 2000-11-14 |
Family
ID=14866527
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP11123675A Pending JP2000315162A (ja) | 1999-04-30 | 1999-04-30 | 制御ブロック処理装置及び制御ブロック処理プログラムを記録したコンピュータ読み取り可能な記録媒体 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2000315162A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8977651B2 (en) | 2004-04-14 | 2015-03-10 | Hewlett-Packard Development Company, L.P. | Method and apparatus for multi-process access to a linked-list |
-
1999
- 1999-04-30 JP JP11123675A patent/JP2000315162A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8977651B2 (en) | 2004-04-14 | 2015-03-10 | Hewlett-Packard Development Company, L.P. | Method and apparatus for multi-process access to a linked-list |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6006247A (en) | Method and system for scheduling threads and handling exceptions within a multiprocessor data processing system | |
| US12602251B2 (en) | Semiconductor device, control method for the same, and program | |
| US9798595B2 (en) | Transparent user mode scheduling on traditional threading systems | |
| US5748959A (en) | Method of conducting asynchronous distributed collective operations | |
| JP5212360B2 (ja) | 制御プログラム、制御システムおよび制御方法 | |
| US5825649A (en) | Kernel substitution method in multi-processor system and multi-processor system having kernel substitution function | |
| US9229765B2 (en) | Guarantee real time processing of soft real-time operating system by instructing core to enter a waiting period prior to transferring a high priority task | |
| GB2348306A (en) | Batch processing of tasks in data processing systems | |
| JP2009157542A (ja) | 情報処理装置及びそのスタックポインタ更新方法 | |
| US20040098722A1 (en) | System, method, and computer program product for operating-system task management | |
| JPH1153202A (ja) | 並列トランザクション処理システム | |
| US7032099B1 (en) | Parallel processor, parallel processing method, and storing medium | |
| JP3893136B2 (ja) | 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム | |
| KR20070090649A (ko) | 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법 | |
| JP5614699B2 (ja) | マルチコアシステムのためのタスク割り当て関連方法、その装置、そのシステム、及びそのプログラム | |
| JP4026667B2 (ja) | マルチos構成方法 | |
| JP2013522710A (ja) | Itシステムの構成方法、そのコンピュータプログラムおよびitシステム | |
| JP2008225641A (ja) | コンピュータシステム、割り込み制御方法及びプログラム | |
| JP7054688B2 (ja) | 同期制御システムおよび同期制御方法 | |
| US9619277B2 (en) | Computer with plurality of processors sharing process queue, and process dispatch processing method | |
| JP4017005B2 (ja) | 演算装置 | |
| JP3524961B2 (ja) | マルチプロセッサシステムおよび同システムにおけるタスクスケジューリング方法 | |
| JPH0895803A (ja) | タスクスケジュール方法 | |
| JP2009251681A (ja) | スタック領域の拡張方法及びプログラム | |
| JP2005284925A (ja) | コンピュータシステムおよびプログラム更新方法 |