JP2003131893A - 演算処理システム、コンピュータ・システム上でのタスク制御方法、並びに記憶媒体 - Google Patents
演算処理システム、コンピュータ・システム上でのタスク制御方法、並びに記憶媒体Info
- Publication number
- JP2003131893A JP2003131893A JP2001325357A JP2001325357A JP2003131893A JP 2003131893 A JP2003131893 A JP 2003131893A JP 2001325357 A JP2001325357 A JP 2001325357A JP 2001325357 A JP2001325357 A JP 2001325357A JP 2003131893 A JP2003131893 A JP 2003131893A
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- task
- data
- variable
- target 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
れが共通のデータを操作するときに、高い優先度の処理
を延期することなくデータの一貫性を保つ。 【解決手段】 操作対象となるデータ毎に有効トランザ
クション変数を用意して、トランザクションの開始時に
タスクIDを有効トランザクション変数に代入する。ま
た、トランザクション開始時にスタック上に更新記録を
割り当てる。タスクは、有効トランザクション変数に自
分のタスクIDが残っているか否かで、操作対象データ
に対する更新記録の有効性を判断し、有効と判断された
ときに、スタック上の更新記録を操作対象のデータに反
映させる。
Description
することにより所定の処理サービスを提供する演算処理
システム、コンピュータ・システム上でのタスク制御方
法、並びに記憶媒体に係り、特に、プログラム中に複数
の制御の流れ(例えば、割り込み処理プログラムと通常
処理プログラム、又は、複数のタスクなど)が存在する
タイプの演算処理システム、コンピュータ・システム上
でのタスク制御方法、並びに記憶媒体に関する。
れが存在するとともにそれぞれが共通のデータを操作す
る演算処理システム、コンピュータ・システム上でのタ
スク制御方法、並びに記憶媒体に係り、特に、データの
一貫性が保たれるようにそれぞれの制御の流れが共通の
データを操作する演算処理システム、コンピュータ・シ
ステム上でのタスク制御方法、並びに記憶媒体に関す
る。
n)技術における革新的な進歩とも相俟って、さまざま
なタイプの情報処理機器や情報通信機器が開発・市販さ
れ、日常生活に深く浸透するに至っている。この種の機
器では、CPU(Central Processing Unit)やその他
のプロセッサが所定のプログラム・コードを実行するこ
とによりさまざまな処理サービスを提供するようになっ
ている。
グラム中に制御の流れ(「タスク」とも呼ばれる)を複
数存在させることが有用な場合がある。ここで、複数の
制御の流れとは、図9に示すように、プログラムの処理
の流れすなわちフローチャート中に「現在実行中の地
点」が複数個あることを意味する。同図に示す例では、
ある時点T1では、流れIにおいてステップS1が、流
れIIにおいてステップS3が、それぞれ実行される。そ
して、これに対し、時間が経過して、次の時点T1で
は、流れIにおいてステップS2が、流れIIにおいてス
テップS3が、それぞれ実行されるようになる。
共通のデータを操作する場合、これらの間で同期をとら
なければデータの一貫性を保つことはできない。ここで
言う共通のデータには、タスク一覧や、条件変数などが
挙げられる。条件変数は、タスクが待っている条件を抽
象化した概念であり、タスクがいつ待ち状態に移行すべ
きか、又は、いつ実行可能状態に復帰すべきかをオペレ
ーティング・システムに伝える手段の1つとして用いら
れる。
する場合に、それぞれの制御の流れが以下の処理を行っ
た場合について考察してみる。
る。
を1度行うと、同じ処理が2度行われることになる。し
たがって、変数xの値は2だけ増加するはずである。と
ころが、流れBと流れCが以下のように重なり合った場
合、変数xの値は1しか増加しない。
る流れにおいて行われた一連の参照・更新操作(トラン
ザクション)の間に、他の流れからデータが参照・更新
されることを禁じる必要がある。
と手順2という一連の操作が完全に完了する前に、流れ
Cが変数xを参照・更新してしまったために、データの
一貫性が失われるという問題が生じた訳である。
に、既存のシステムでは「排他制御」と呼ばれる手法が
採用されている。すなわち、ある制御の流れにおいてあ
るデータに対して一連の処理が行われている間は、他の
制御の流れが同じデータへの操作を行うことを遅延す
る、すなわち特定のデータに対する操作を排他的に行う
ようになっている。
のような排他制御を行うために、割り込み要求を一時的
に無視することが行われている。また、タスク間の排他
制御のために「mutex機構」や「セマフォア機構」
が使用されている。
法には、高優先度の処理が低優先度の処理によって延期
される可能性、すなわち優先度逆転現象が発生する可能
性があるという問題がある。
る。同図に示す例では、優先度が低いタスクAがあるデ
ータを操作中に、優先度の高いタスクBが同じデータの
操作を開始しようとしても遅延を余儀なくされる。その
後、タスクBよりも低いがタスクAよりも高い優先度を
持つタスクCの実行が開始すると、タスクAは優先度が
より高いタスクによって実行が中断する。この結果、タ
スクAによるデータ操作を待機するタスクBはさらに遅
延する。すなわち、高優先度タスクが参照・更新しよう
としたデータを低優先度タスクがアクセス中だった場合
には、このデータの一貫性とは無関係な任意の中優先度
タスクの実行が、低優先度タスクのみならず、高優先度
タスクよりも優先されるという優先度の逆転現象が起き
てしまう。
めの手法として、優先度継承プロトコル(Lui Sha、Rag
unathan Rajkumar、及びJohn P. Lehoczky共著の論文"P
riority Inheritance Protocols:An Approach to Real
-Time Synchronization",IEEE Transactions on Compu
ters, Vol. 39, No. 9, pp. 1175-1185, September 199
0を参照のこと)などが提案されている。優先度継承プ
ロトコルとは、低優先度タスクが一連の操作を実行中に
高優先度タスクが同一データを操作しようとした場合に
は、低優先度タスクの操作が完了するまで、低優先度タ
スクの優先度を一時的に高優先度タスクと同一の優先度
へと上昇させるという手法である。
を図解している。この場合、優先度の低いタスクAがあ
るデータを操作中に、優先度の高いタスクBが同じデー
タの操作を開始しようとしても遅延を余儀なくされる。
このとき、タスクAの優先度を一時的にタスクBと同じ
レベルまで上昇させる。その後、タスクBよりも低いが
タスクAよりも高い優先度を持つタスクCの実行が開始
しても、タスクAの優先度はタスクCよりも上昇してい
るので、タスクAの実行が中断することはない。そし
て、タスクAの終了後に、タスクBは、データの一貫性
を維持しながら、自分よりも優先度の低いタスクCに割
り込まれることなくデータの操作を開始することができ
る。
においても、一連の操作が完了するまで高優先度の処理
が延期されるという問題は依然として残っている。例え
ば図12に示す例では、タスクAよりも高いがタスクB
よりも低い優先度を持つタスクは、自分よりも優先度が
低いタスクAのために遅延する。
いては、システムの応答時間に対して厳しい要求が課せ
られることが多いので、高優先度の処理が延期される時
間を一連の操作が完了する時間よりも短くできることが
望ましい。
御を必要とするデータを操作しないタスクの実行時間が
遅延される可能性があるという問題もある。これは、低
優先度タスクの優先度が一時的に上昇するためであり、
本来ならば低優先度タスクよりも優先されるべき中優先
度タスクの実行が延期されてしまう。
グラム中に複数の制御の流れ(例えば、割り込み処理プ
ログラムと通常処理プログラム、又は、複数のタスクな
ど)が存在するタイプの、優れた演算処理システム、コ
ンピュータ・システム上でのタスク制御方法、並びに記
憶媒体を提供することにある。
が存在するとともにそれぞれが共通のデータを操作する
ときに、データの一貫性を保つことができる、優れた演
算処理システム、コンピュータ・システム上でのタスク
制御方法、並びに記憶媒体を提供することにある。
が存在するとともにそれぞれが共通のデータを操作する
ときに、高い優先度の処理を延期することなくデータの
一貫性を保つことができる、優れた演算処理システム、
コンピュータ・システム上でのタスク制御方法、並びに
記憶媒体を提供することにある。
課題を参酌してなされたものであり、その第1の側面
は、操作対象データに対してトランザクションを行う複
数のタスクを管理する演算処理システムであって、1以
上のタスクによる操作対象となるデータ毎に有効トラン
ザクション変数が用意されており、各タスクは、操作対
象データに対してトランザクションを開始する直前に該
操作対象データの有効トランザクション変数にトランザ
クション間で固有となる変数を代入し、タスク毎又はト
ランザクションの実行毎に用意されたデータ領域に該操
作対象データの更新内容を記録し、操作対象データに対
するトランザクションが完了後に、有効トランザクショ
ン変数を参照して、その値が変化しなかったことに応答
して、該データ領域に記録しておいた更新内容を操作対
象データに反映させる、ことを特徴とする演算処理シス
テムである。
の装置(又は特定の機能を実現する機能モジュール)が
論理的に集合した物のことを言い、各装置や機能モジュ
ールが単一の筐体内にあるか否かは特に問わない。
数の参照、及び/又は、更新内容を操作対象データに反
映させる期間は、他のタスクによる割り込みを禁止す
る。
ションが完了後に、有効トランザクション変数に変化が
あった場合には、タスクは、自分がした更新内容が無効
であることが分かるので、操作対象データに対するトラ
ンザクションを再実行するようにすればよい。
有となる変数として、更新内容を記録したアドレス又は
タスク識別子を有効トランザクション変数に代入するこ
とができる。
ムによれば、操作対象となるデータ毎に有効トランザク
ション変数を用意して、トランザクションの開始時に更
新記録のアドレスやタスクIDなどのトランザクション
間でユニークな値を有効トランザクション変数に代入す
る。また、トランザクション開始時にスタック上にデー
タの更新記録を割り当てる。トランザクション終了時
に、タスクは、有効トランザクション変数を参照して自
分の更新記録アドレスやタスクIDが残っているか否か
で、操作対象データに対する更新記録の有効性を判断
し、有効と判断されたときに、スタック上の更新記録を
操作対象のデータに反映させるようにする。
とともにそれぞれが共通のデータを操作するときに、高
い優先度の処理を延期することなくデータの一貫性を保
つことができる。
スクによる操作対象となるデータ毎に設けられて、該操
作対象データに対する有効な操作を行っているトランザ
クションに固有となる変数を格納する有効トランザクシ
ョン変数と、タスク毎又はトランザクションの実行毎に
用意される、操作対象データに対する更新内容を記録す
るデータ領域と、操作対象データに対するトランザクシ
ョン完了後に、有効トランザクション変数を参照して、
その値が変化しなかったことに応答して、該トランザク
ションがデータ領域に記録しておいた更新内容を操作対
象データに反映させるデータ同期手段と、を具備するこ
とを特徴とする演算処理システムである。
ムは、前記データ同期手段が有効トランザクション変数
の参照及び/又は更新内容を捜査対象データに反映させ
ている期間は、データの一貫性を保つために、他のタス
クの割り込みを禁止する割り込み禁止手段をさらに備え
ることが好ましい。
ータに対するトランザクションが完了後に、有効トラン
ザクション変数に変化があった場合には、トランザクシ
ョンによる更新内容が無効となっているので、該トラン
ザクションを再実行させるようにすることが好ましい。
として更新内容を記録したアドレス又はタスク識別子を
有効トランザクション変数に格納することができる。
ムによれば、操作対象となるデータ毎に有効トランザク
ション変数を用意して、トランザクションの開始時に更
新記録のアドレスやタスクIDなどのトランザクション
間でユニークな値を有効トランザクション変数に代入す
る。また、トランザクション開始時にスタック上にデー
タの更新記録を割り当てる。トランザクション終了時
に、タスクは、有効トランザクション変数を参照して自
分の更新記録アドレスやタスクIDが残っているか否か
で、操作対象データに対する更新記録の有効性を判断
し、有効と判断されたときに、スタック上の更新記録を
操作対象のデータに反映させるようにする。
とともにそれぞれが共通のデータを操作するときに、高
い優先度の処理を延期することなくデータの一貫性を保
つことができる。
ータに対してトランザクションを行う複数のタスクが並
行して実行されるコンピュータ・システム上でのタスク
制御方法であって、操作対象データに対してトランザク
ションを開始する直前に該操作対象データに設けられた
有効トランザクション変数にトランザクション間で固有
となる変数を代入するステップと、タスク毎又はトラン
ザクションの実行毎に用意されたデータ領域に該操作対
象データの更新内容を記録するステップと、操作対象デ
ータに対するトランザクションが完了後に、有効トラン
ザクション変数を参照して、その値が変化しなかったこ
とに応答して、該データ領域に記録しておいた更新内容
を操作対象データに反映させるステップと、を具備する
ことを特徴とするコンピュータ・システム上でのタスク
制御方法である。
システム上でのタスク制御方法は、タスクが有効トラン
ザクション変数の参照、及び/又は、更新内容を操作対
象データに反映させる期間は割り込みを禁止するステッ
プをさらに備えるようにしてもよい。
ションが完了後に、有効トランザクション変数に変化が
あった場合には、タスクは操作対象データに対するトラ
ンザクションを再実行するステップをさらに備えるよう
にしてもよい。
数として、更新内容を記録したアドレス又はタスク識別
子を有効トランザクション変数に代入するようにしても
よい。
ータに対してトランザクションを行う複数のタスクの管
理をコンピュータ・システム上で実行するように記述さ
れたコンピュータ・ソフトウェアをコンピュータ可読形
式で物理的に格納した記憶媒体であって、前記コンピュ
ータ・ソフトウェアは、操作対象データに対してトラン
ザクションを開始する直前に該操作対象データに設けら
れた有効トランザクション変数にトランザクション間で
固有となる変数を代入するステップと、タスク毎又はト
ランザクションの実行毎に用意されたデータ領域に該操
作対象データの更新内容を記録するステップと、操作対
象データに対するトランザクションが完了後に、有効ト
ランザクション変数を参照して、その値が変化しなかっ
たことに応答して、該データ領域に記録しておいた更新
内容を操作対象データに反映させるステップと、を具備
することを特徴とする記憶媒体である。
えば、さまざまなプログラム・コードを実行可能な汎用
コンピュータ・システムに対して、コンピュータ・ソフ
トウェアをコンピュータ可読な形式で提供する媒体であ
る。このような媒体は、例えば、CD(Compact Disc)
やFD(Floppy Disk)、MO(Magneto-Optical dis
c)などの着脱自在で可搬性の記憶媒体である。あるい
は、ネットワーク(ネットワークは無線、有線の区別を
問わない)などの伝送媒体などを経由してコンピュータ
・ソフトウェアを特定のコンピュータ・システムに提供
することも技術的に可能である。
ステム上で所定のコンピュータ・ソフトウェアの機能を
実現するための、コンピュータ・ソフトウェアと記憶媒
体との構造上又は機能上の協働的関係を定義したもので
ある。換言すれば、本発明の第4の側面に係る記憶媒体
を介して所定のコンピュータ・ソフトウェアをコンピュ
ータ・システムにインストールすることによって、コン
ピュータ・システム上では協働的作用が発揮され、本発
明の第3の側面に係るコンピュータ・システム上でのタ
スク制御方法と同様の作用効果を得ることができる。
後述する本発明の実施例や添付する図面に基づくより詳
細な説明によって明らかになるであろう。
の実施形態について詳解する。
理システム10のハードウェア構成を模式的に示してい
る。同図に示すように、演算処理システム10は、プロ
セッサ11と、RAM(Random Access Memory)12
と、ROM(Read Only Memory)13と、複数の入出力
装置14−1,14−2…と、タイマ15とを含んでい
る。
のメイン・コントローラであり、オペレーティング・シ
ステム(OS)の制御下で、各種のプログラム・コード
を実行するようになっている。
実行を管理・制御する単位は、一般に「タスク」と呼ば
れる。本実施形態に係る演算処理システム10では、プ
ログラム中に複数のタスクが存在することを許容する。
したがって、実際に計算を進める実体であるプロセッサ
11の個数よりも多くのタスクが存在することになる。
オペレーティング・システムは、プロセッサ11により
処理されるタスクを頻繁に切り替えることにより、各タ
スクを擬似的に並列に実行させるようになっている。各
タスクには、他のタスクと識別可能なタスクIDが割り
振られている。また、各タスクは、スタック上のデータ
領域を用いてデータに対する一連の操作すなわちトラン
ザクションを行う。
機器類(後述)と相互接続されている。システム・バス
16上の各機器にはそれぞれ固有のメモリ・アドレス又
はI/Oアドレスが付与されており、プロセッサ11は
これらアドレスを指定することによって所定の機器への
アクセスが可能となっている。システム・バス16は、
アドレス・バス、データ・バス、コントロール・バスを
含む共通信号伝送路である。
り、プロセッサ11において実行されるプログラム・コ
ードをロードしたり、実行プログラムの作業データを一
時格納するために使用される。プログラム・コードに
は、例えば、BIOS(BasicInput/Output System:基
本入出力システム)、周辺機器をハードウェア操作する
ためのデバイス・ドライバ、オペレーティング・システ
ム、アプリケーションなどが挙げられる。
久的に記憶するための不揮発メモリであり、例えば、B
IOSや始動時の自己診断プログラム(Power On Self
Test:POST)などを格納している。
接続するためのディスプレイ・インターフェース14−
1、キーボード22やマウス23のようなユーザ入力装
置を接続するためのユーザ入力装置インターフェース1
4−2、ハード・ディスク24やメディア・ドライブ2
5などの外部記憶装置を接続するための外部記憶装置イ
ンターフェース14−3、外部ネットワークと接続する
ためのネットワーク・インターフェース・カード(NI
C)14−4などが含まれる。
は、プロセッサ11が発行する描画命令を実際に処理す
るための専用インターフェース・コントローラである。
ディスプレイ・インターフェース14−1において処理
された描画データは、例えばフレーム・バッファ(図示
しない)に一旦書き込まれた後、ディスプレイ21によ
って画面出力される。
スクを固定的に搭載した外部記憶装置であり(周知)、
記憶容量やデータ転送速度などの点で他の外部記憶装置
よりも優れている。通常、HDD24には、プロセッサ
11が実行すべきオペレーティング・システムのプログ
ラム・コードや、アプリケーション・プログラム、デバイ
ス・ドライバなどが不揮発的に格納されている。ソフト
ウェア・プログラムを実行可能な状態でHDD24上に
置くことをプログラムのシステムへの「インストール」
と呼ぶ。例えば、本発明を実現するオペレーティング・
システムや、複数のタスクが存在するように設計された
アプリケーション・プログラムをHDD24上にインス
トールすることができる。
Disc)やMO(Magneto-Optical disc)、DVD(Dig
ital Versatile Disc)などの可搬型メディアを装填し
て、そのデータ記録面にアクセスするための装置であ
る。
ア・プログラムやデータ・ファイルなどをコンピュータ可
読形式のデータとしてバックアップすることや、これら
をシステム間で移動(すなわち販売・流通・配布を含む)
する目的で使用される。例えば、本発明を実現するオペ
レーティング・システムや、複数のタスクが存在するよ
うに設計されたアプリケーション・プログラムを、これ
ら可搬型メディアを利用して複数の機器間で物理的に流
通・配布することができる。
は、Ethernetなどの所定の通信プロトコルに従
って、システム10をLAN(Local Area Network)な
どの局所的ネットワーク、さらにはインターネットのよ
うな広域ネットワークに接続することができる。
(図示しない)がトランスペアレントな状態で接続さ
れ、分散コンピューティング環境が構築されている。ネ
ットワーク上では、ソフトウェア・プログラムやデータ
・コンテンツなどの配信が行うことができる。例えば、
本発明を実現するオペレーティング・システムや、複数
のタスクが存在するように設計されたアプリケーション
・プログラムを、ネットワーク経由でダウンロードする
ことができる。
割り込みレベルが割り当てられており、所定のイベント
発生(例えばキーボード入力やマウス・クリックなどの
GUI処理や、ハード・ディスクにおけるデータ転送の
完了など)に応答して、割り込み要求信号線19を介し
てプロセッサ11に通知することができる。プロセッサ
11は、このような割り込み要求に応答して、対応する
割り込みハンドラを実行する。
生させる装置である。タイマ15にも割り込みレベルが
割り当てられており、割り込み要求信号線19を介して
プロセッサ11に対して周期的な割り込みを発生する。
10の一例は、米IBM社のパーソナル・コンピュータ"
PC/AT(Personal Computer/Advanced Technolog
y)"の互換機又は後継機である。勿論、他のアーキテク
チャを備えたコンピュータを、本実施形態に係る演算処
理システム10として適用することも可能である。
供するオペレーティング・システムは、複数の制御の流
れが存在するとともにそれぞれが共通のデータを操作す
るときに、高い優先度の処理を延期することなくデータ
の一貫性を保つ機能を備えている。データの同期をとる
ために、操作対象となるデータ毎に、並列に実行され得
るトランザンション間でユニークであることが保証され
ている値を代入するための変数「有効トランザクショ
ン」を用意する。そして、各タスクは、データの一貫性
を保つために、以下のような手順を実行する。
ション)の開始直前に、当該タスクが持つトランザンシ
ョン間でユニークな値を、有効トランザクション変数に
対して代入する。
象となる共通データに対して更新を行うのではなく、タ
スク毎あるいは操作の実行毎に用意されたデータ領域
(例えば、スタック中のデータ・ブロック)に更新内容
を記録しておく。
が完了した後に割り込みを禁止する。
ション変数に代入した値が引き続き有効トランザクショ
ン変数に格納されていた場合、スタックなどに記録して
おいた更新内容を操作対象となる共通データに反映さ
せ、割り込みを許可した後に処理を終了する。
ション変数に代入した値が有効トランザクション変数に
格納されていなかった場合、割り込みを許可した後に手
順(1)に戻って、共通データの更新処理を再実行す
る。
れる値は、以下の性質を備えている必要がある。
実行される可能性がある場合、これらトランザンション
の間で異なる値を使用する。 割り込み処理時に代入され得るどの値とも異なってい
る。
タスクIDやスタック上の更新記録のアドレスなどを有
効トランザクション変数に代入する値とし使用すること
ができる。
を保つための処理手順についてより詳細に説明する。
のタスクAとタスクBが存在し、タスクAよりもタスク
Bの方が高い優先度を持つというケースを考える。
には、図2に示すように、まず有効トランザクション変
数に自分のタスクIDを代入して、自分が有効なトラン
ザクションであることを示す。次いで、操作対象となる
共通データに対して更新を行うのではなく、自分が使用
するスタック中のデータ・ブロックに更新内容を記録す
る。
・ブロックに対して一連の参照・更新操作が完了する
と、割り込みを禁止して、有効トランザクション変数を
参照してまだ自分のタスクIDが記憶されているか否か
をチェックする。
IDが残っている場合には、図3に示すように、スタッ
ク中の更新内容を操作対象となる共通データaに反映さ
せ、割り込みを許可した後にタスクAの処理を終了す
る。
ン変数に自分のタスクIDを代入した後、同じく共通デ
ータaを操作するタスクBが起動すると、タスクBの方
が高優先度のためタスクAの実行が停止するとともに、
有効トランザクション変数にはタスクBのタスクIDが
上書きされ、その値が変化する(図4を参照のこと)。
対して更新を行うのではなく、自分が使用するスタック
中のデータ・ブロックに更新内容を記録する(同上)。
・ブロックに対して一連の参照・更新操作が完了する
と、割り込みを禁止して、有効トランザクション変数を
参照してまだ自分のタスクIDが記憶されていることを
確認してから、スタック中の更新内容を操作対象となる
共通データに反映させて(図5を参照のこと)、割り込
みを許可した後にタスクBの処理を終了する。
て実行を再開する。タスクAは、スタック中のデータ・
ブロックに対して一連の参照・更新操作が完了すると、
割り込みを禁止して、有効トランザクション変数を参照
してまだ自分のタスクIDが記憶されているか否かをチ
ェックする。しかしながら、有効トランザクション変数
には自分のタスクIDは残っていないので、タスクAの
更新内容は無効となっていることが分かる。このような
場合、割り込みを許可した後に、共通データの更新処理
を再実行する(図6を参照のこと)。
に有効トランザクション変数を用意する。そして、トラ
ンザクション(すなわち、各タスク又は割り込み処理プ
ログラムがデータに加える一連の操作)の開始時に、並
行に実行され得るトランザクション間でユニークなこと
が保証されている値を有効トランザクション変数に代入
する。
して、タスクIDを使用することができる。このとき、
割り込み処理プログラムが代入する値はタスクIDとし
て使用される可能性がない任意の値を選べばよい。ま
た、後述する更新記録のアドレスを用いることも可能で
ある。この場合には、割り込み処理プログラムが代入す
る値としてヌルポインタ値などを使用することも可能で
ある。
列を幾つか使用する。これらの配列を「更新記録」と呼
ぶ。実行期間が互いに重なり得るトランザクションに
は、それぞれ異なる更新記録を割り付ける必要がある。
この割り付けを簡易に行う手法として、トランザクショ
ン開始時にスタック上に更新記録を割り当てることが考
えられる。また、オペレーティング・システムがタスク
毎、あるいは割り込み発生源毎に用意する領域に更新記
録を格納することも考えられる。
ション変数に自分のタスクIDが残っているか否かで、
操作対象となるデータに対して自分が行った更新内容が
有効か無効かを判断することができる。また、有効と判
断されたときに、スタック上の更新記録を操作対象のデ
ータに反映させることによって、データの一貫性を保証
することができる。
データの一貫性を保つための処理手順をフローチャート
の形式で示している。この処理手順は、実際には、プロ
セッサ11が所定のプログラム・コードを実行するとい
う形態で実現する。以下、このフローチャートを参照し
ながら、共通データの一貫性を保つための処理について
説明する。
する一連の操作すなわちトランザクションを開始する
と、まず、更新記録の確保を行う(ステップS1)。更
新記録をスタック上に配置する場合には、其処でその処
理を行う。
ている有効トランザクション変数に、トランザクション
間でユニークなことが保証されている値を代入する(ス
テップS2)。代入する値としては、タスクIDやスタ
ック上の更新記録のアドレスなどを使用することができ
る。このフローチャートでは更新記録のアドレスを使用
することにしている。
代入された値は、他のタスクや割り込み処理プログラム
がデータに対して操作を加えない限り、変化しない。有
効トランザクション変数が変化していないかどうかをス
テップS7で検査するようになっている(後述)。
新である場合には(ステップS3)、スタック上でデー
タ更新を行うとともに、更新記録に更新対象アドレスと
値を追加する(ステップS4)。
参照である場合には(ステップS3)、操作対象のデー
タを読み出して、スタック上に書き込む(ステップS
5)。
了である場合には(ステップS3)、割り込みを禁止し
て(ステップS6)、有効トランザクション変数に更新
記録のアドレスが格納されているか否かを検査する(ス
テップS7)。
ドレスが格納されている場合には、ステップS8に進ん
で、スタック上の更新記録に格納されている更新内容
を、操作対象のデータに反映させ、その後、禁止してい
た割り込みを許可する(ステップS9)。
録のアドレスが格納されていない場合には、更新記録を
空にするとともに割り込みを許可した後(ステップS1
0)、ステップS2に戻って、有効トランザクション変
数に更新記録のアドレスを代入するとともに、操作対象
のデータに対する操作をやり直す。
ランザクション変数が変化していないかどうかを検査す
るが、ステップS6で割り込みを禁止しておくことによ
り、ステップS7の時点で有効トランザクション変数が
変化していなければ、ステップS2の完了時点からステ
ップS7の開始時点までの期間に他のトランザクション
が開始していなかったことが保証される。また、ステッ
プS9によって割り込みが再び許可されるまで、他のト
ランザクションが開始されないことが保証される。した
がって、ステップS5で読み出した値は、他のトランザ
クションの実行途中の結果ではなく、また、ステップS
8において更新内容を捜査対象のデータに反映させて
も、データの一貫性は損なわれない。
クション変数の値の変化が検出された場合には、割り込
みを許可した後に、トランザクションを再度実行するこ
とになる。この場合、データに対する更新操作はすべて
スタック上の更新記録中に保持されているだけで、操作
対象データに対する実際の更新は行われていない。した
がって、他のトランザクションへの悪影響を与えてデー
タの一貫性を損なうようなことはない。
2つの流れB及び流れCが並行して実行される場合を例
にとって、図7に示した処理手順についてより具体的に
説明する。
る。このため、図7に示したフローチャート中のステッ
プS1及びS2が流れBのために行われる。具体的に
は、流れBに割り当てられているスタック領域中に更新
記録のための領域が確保されるとともに、このアドレス
(仮に、0x40000000番地とする)が有効トラ
ンザクション変数に代入される。
る。そこで、図7に示したフローチャート中のステップ
S3及びS5が流れBのために実行される。このとき、
変数xの値として0が読み出されるとする。
始する。このため、図7に示したフローチャート中のス
テップS1及びS2が流れCのために行われる。具体的
には、流れCに割り当てられているスタック領域中に更
新記録のための領域が確保されるとともに、このアドレ
ス(仮に、0x60000000番地とする)が有効ト
ランザクション変数に代入される。これによって、有効
トランザクション変数の値は0x40000000から
0x60000000に変化して、流れBによるトラン
ザクションが無効化される。
は、上述した流れBによる読み出しと同様に0である。
を加えた値、すなわち1を代入しようとする。このた
め、図7に示したフローチャート中のステップS3及び
ステップS4が流れCのために行われる。この結果、流
れCに割り当てられているスタック領域中に確保されて
いる更新記録に数xのアドレスと値1が追記される。
ちトランザクションをすべて終了すると、フローチャー
ト中のステップS6以降の処理が流れCのために開始さ
れる。まずステップS7では有効トランザクション変数
が読み出されるが、この値は0x60000000であ
る。これは、流れCが最後に代入した値に等しいので、
後続のステップS8及びS9が流れCのために実行され
ることになる。すなわち、変数xに対して値1が代入さ
れることになる。ここまでの処理によって、流れCによ
る変数xの操作は成功裏に終わる。
えた値、すなわち、1を変数xに代入しようとする。こ
のため、図7に示したフローチャート中のステップS3
及びS4が流れBのために行われる。すなわち、流れB
に割り当てられているスタック領域中に確保されている
更新記録に変数xのアドレスと値1が追記される。
ているので、図7に示したフローチャート中のステップ
S6以降の処理が流れBのために開始される。ステップ
S7では有効トランザクション変数が読み出されるが、
この値は後に流れCによって更新されているため(上
述)、0x400000000からx60000000
に変化している。このため、ステップS10が実行され
て、更新記録が空にされるとともに割り込みを許可し
て、再びステップS2から実行を継続する。
3,S5,S3,S4,S6,S7と実行が進む。前回
とは異なり,変数xの値として読み出されるのは、流れ
CがステップS8で更新した値、すなわち1である。有
効トランザクション変数の値は0x40000000で
あるため、ステップS8及びS9へと実行が進む。ステ
ップS8では、値2が変数xに代入されることになる。
ャート中のステップS3が実行されるように説明してい
るが、現実の実装では、あらかじめ(すなわち,プログ
ラムのコーディング時に)ステップS4,S5,S6の
うちどの処理を行うべきかが分かっていることが多いの
で、ステップS3のような条件判断をプログラム・コー
ドから省略することも可能である。
スクAとタスクBが並行して実行される場合の処理動作
を図解している。但し、タスクBの方がタスクAよりも
優先度は高いものとする。
共通データの操作を開始し、次いで,タスクBが実行開
始して共通データの操作を開始したとする。
で、タスクAのために処理が停止したり中断することな
く、共通データの操作を完了して、タスクBの実行を終
了する。
ために処理が一時中断するが、タスクBの実行終了に応
答して,処理を開始する。
るので,タスクAがデータ操作を再開するも、これは無
駄なトランザクションとなる。
効トランザクション変数を参照することにより、自分の
データ操作が無効であることを検出することができる。
この結果、タスクAは、再度データ操作を行い、有効ト
ランザクション変数を基にトランザクションの有効性を
確認してから操作を完了することができる。
1に示した従来技術と比較することからも明らかである
ように、本発明に係るタスク処理によって行われるデー
タ操作の調停は、mutex機構などを採用した場合と
は相違し、低優先度処理がデータに対する操作を行って
いる間であっても、高優先度タスクがデータに対する操
作を開始することができる。
ら、本発明について詳解してきた。しかしながら、本発
明の要旨を逸脱しない範囲で当業者が該実施例の修正や
代用を成し得ることは自明である。すなわち、例示とい
う形態で本発明を開示してきたのであり、本明細書の記
載内容を限定的に解釈するべきではない。本発明の要旨
を判断するためには、冒頭に記載した特許請求の範囲の
欄を参酌すべきである。
プログラム中に複数の制御の流れ(例えば、割り込み処
理プログラムと通常処理プログラム、又は、複数のタス
クなど)が存在するタイプの、優れた演算処理システ
ム、コンピュータ・システム上でのタスク制御方法、並
びに記憶媒体を提供することができる。
が存在するとともにそれぞれが共通のデータを操作する
ときに、データの一貫性を保つことができる、優れた演
算処理システム、コンピュータ・システム上でのタスク
制御方法、並びに記憶媒体を提供することができる。
が存在するとともにそれぞれが共通のデータを操作する
ときに、高い優先度の処理を延期することなくデータの
一貫性を保つことができる、優れた演算処理システム、
コンピュータ・システム上でのタスク制御方法、並びに
記憶媒体を提供することができる。
することができる。すなわち、データ操作のうち更新操
作を実行する間だけ割り込みを禁止すればよいので、一
連のデータ操作を行う期間は割り込みを禁止するという
手法と比べて、割り込み禁止期間を短くすることができ
ることが多い。
行われず、更新操作だけが行われる場合と、多数の更新
が行われるためmutex機構などによる排他制御より
も割り込み禁止期間が長くなる場合を挙げることができ
る。但し、このような場合に限って従来の手法を用いる
ことによって、最悪の場合でも従来手法と同等の割り込
み禁止時間を達成することが可能である。
しないタスクの遅延時間を削減することができる。すな
わち、本発明では、共有データを操作しないタスクの実
行が遅延されるのは割り込みが禁止される期間だけであ
るので、この時間は一連のデータ操作が完了するまでに
要する時間よりも短くすることが可能である。
よって高優先度タスクの実行が延期される時間を削減す
ることができる(但し、割り込みが禁止されている期間
を除き、プロセッサは常に実行可能タスクの中で最も優
先度が高いタスクを実行するものとする)。
中断されるのは、より優先度の高いタスクの実行が開始
された場合だけである。このため、高優先度タスクのト
ランザクション処理中に低優先度タスクのトランザクシ
ョンが処理されることはない。したがって、高優先度タ
スクの実行が延期されるのは割り込み禁止期間だけであ
る。この時間は従来手法と比べて短くすることが可能で
ある。
のハードウェア構成を模式的に示した図である。
タスクBが存在し、タスクAよりもタスクBの方が高い
優先度を持つ場合を例にとって、データの一貫性を保つ
ための処理手順を示した図である。
タスクBが存在し、タスクAよりもタスクBの方が高い
優先度を持つ場合を例にとって、データの一貫性を保つ
ための処理手順を示した図である。
タスクBが存在し、タスクAよりもタスクBの方が高い
優先度を持つ場合を例にとって、データの一貫性を保つ
ための処理手順を示した図である。
タスクBが存在し、タスクAよりもタスクBの方が高い
優先度を持つ場合を例にとって、データの一貫性を保つ
ための処理手順を示した図である。
タスクBが存在し、タスクAよりもタスクBの方が高い
優先度を持つ場合を例にとって、データの一貫性を保つ
ための処理手順を示した図である。
理手順を示したフローチャートである。
Bが並行して実行される場合の処理動作を示したチャー
トである。
ャートを示した図である。
合に生じる優先度逆転現象を示した図である。
る。
Claims (13)
- 【請求項1】操作対象データに対してトランザクション
を行う複数のタスクを管理する演算処理システムであっ
て、 1以上のタスクによる操作対象となるデータ毎に有効ト
ランザクション変数が用意されており、 各タスクは、 操作対象データに対してトランザクションを開始する直
前に該操作対象データの有効トランザクション変数にト
ランザクション間で固有となる変数を代入し、 タスク毎又はトランザクションの実行毎に用意されたデ
ータ領域に該操作対象データの更新内容を記録し、 操作対象データに対するトランザクションが完了後に、
有効トランザクション変数を参照して、その値が変化し
なかったことに応答して、該データ領域に記録しておい
た更新内容を操作対象データに反映させる、ことを特徴
とする演算処理システム。 - 【請求項2】タスクが有効トランザクション変数の参
照、及び/又は、更新内容を操作対象データに反映させ
る期間は割り込みを禁止する、ことを特徴とする請求項
1に記載の演算処理システム。 - 【請求項3】操作対象データに対するトランザクション
が完了後に、有効トランザクション変数に変化があった
場合には、タスクは操作対象データに対するトランザク
ションを再実行する、ことを特徴とする請求項1に記載
の演算処理システム。 - 【請求項4】タスクは、トランザクション間で固有とな
る変数として、更新内容を記録したアドレス又はタスク
識別子を有効トランザクション変数に代入する、ことを
特徴とする請求項1に記載の演算処理システム。 - 【請求項5】操作対象データに対してトランザクション
を行う複数のタスクを管理する演算処理システムであっ
て、 1以上のタスクによる操作対象となるデータ毎に設けら
れて、該操作対象データに対する有効な操作を行ってい
るトランザクションに固有となる変数を格納する有効ト
ランザクション変数と、 タスク毎又はトランザクションの実行毎に用意される、
操作対象データに対する更新内容を記録するデータ領域
と、 操作対象データに対するトランザクション完了後に、有
効トランザクション変数を参照して、その値が変化しな
かったことに応答して、該トランザクションがデータ領
域に記録しておいた更新内容を操作対象データに反映さ
せるデータ同期手段と、を具備することを特徴とする演
算処理システム。 - 【請求項6】前記データ同期手段が有効トランザクショ
ン変数の参照及び/又は更新内容を捜査対象データに反
映させている期間は他のタスクの割り込みを禁止する割
り込み禁止手段をさらに備える、ことを特徴とする請求
項5に記載の演算処理システム。 - 【請求項7】前記データ同期手段は、操作対象データに
対するトランザクションが完了後に、有効トランザクシ
ョン変数に変化があった場合には、該トランザクション
を再実行させる、ことを特徴とする請求項5に記載の演
算処理システム。 - 【請求項8】トランザクションに固有となる変数として
更新内容を記録したアドレス又はタスク識別子を有効ト
ランザクション変数に格納する、ことを特徴とする請求
項5に記載の演算処理システム。 - 【請求項9】操作対象データに対してトランザクション
を行う複数のタスクが並行して実行されるコンピュータ
・システム上でのタスク制御方法であって、 操作対象データに対してトランザクションを開始する直
前に該操作対象データに設けられた有効トランザクショ
ン変数にトランザクション間で固有となる変数を代入す
るステップと、 タスク毎又はトランザクションの実行毎に用意されたデ
ータ領域に該操作対象データの更新内容を記録するステ
ップと、 操作対象データに対するトランザクションが完了後に、
有効トランザクション変数を参照して、その値が変化し
なかったことに応答して、該データ領域に記録しておい
た更新内容を操作対象データに反映させるステップと、
を具備することを特徴とするコンピュータ・システム上
でのタスク制御方法。 - 【請求項10】タスクが有効トランザクション変数の参
照、及び/又は、更新内容を操作対象データに反映させ
る期間は割り込みを禁止するステップをさらに備える、
ことを特徴とする請求項9に記載のコンピュータ・シス
テム上でのタスク制御方法。 - 【請求項11】操作対象データに対するトランザクショ
ンが完了後に、有効トランザクション変数に変化があっ
た場合には、タスクは操作対象データに対するトランザ
クションを再実行するステップをさらに備える、ことを
特徴とする請求項9に記載のコンピュータ・システム上
でのタスク制御方法。 - 【請求項12】トランザクション間で固有となる変数と
して、更新内容を記録したアドレス又はタスク識別子を
有効トランザクション変数に代入する、ことを特徴とす
る請求項9に記載のコンピュータ・システム上でのタス
ク制御方法。 - 【請求項13】操作対象データに対してトランザクショ
ンを行う複数のタスクの管理をコンピュータ・システム
上で実行するように記述されたコンピュータ・ソフトウ
ェアをコンピュータ可読形式で物理的に格納した記憶媒
体であって、前記コンピュータ・ソフトウェアは、 操作対象データに対してトランザクションを開始する直
前に該操作対象データに設けられた有効トランザクショ
ン変数にトランザクション間で固有となる変数を代入す
るステップと、 タスク毎又はトランザクションの実行毎に用意されたデ
ータ領域に該操作対象データの更新内容を記録するステ
ップと、 操作対象データに対するトランザクションが完了後に、
有効トランザクション変数を参照して、その値が変化し
なかったことに応答して、該データ領域に記録しておい
た更新内容を操作対象データに反映させるステップと、
を具備することを特徴とする記憶媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001325357A JP2003131893A (ja) | 2001-10-23 | 2001-10-23 | 演算処理システム、コンピュータ・システム上でのタスク制御方法、並びに記憶媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001325357A JP2003131893A (ja) | 2001-10-23 | 2001-10-23 | 演算処理システム、コンピュータ・システム上でのタスク制御方法、並びに記憶媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003131893A true JP2003131893A (ja) | 2003-05-09 |
JP2003131893A5 JP2003131893A5 (ja) | 2005-06-09 |
Family
ID=19141941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001325357A Pending JP2003131893A (ja) | 2001-10-23 | 2001-10-23 | 演算処理システム、コンピュータ・システム上でのタスク制御方法、並びに記憶媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2003131893A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011102207A1 (ja) * | 2010-02-18 | 2011-08-25 | 株式会社日立製作所 | 組込み制御装置 |
DE102015203695A1 (de) | 2014-03-07 | 2015-09-10 | Denso Corporation | Elektronische steuereinheit |
US11734250B2 (en) | 2019-12-12 | 2023-08-22 | Fujitsu Limited | Information processing apparatus, synchronization control method, and computer-readable recording medium recording synchronization control program |
-
2001
- 2001-10-23 JP JP2001325357A patent/JP2003131893A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011102207A1 (ja) * | 2010-02-18 | 2011-08-25 | 株式会社日立製作所 | 組込み制御装置 |
US8649939B2 (en) | 2010-02-18 | 2014-02-11 | Hitachi, Ltd. | Embedded control device |
DE102015203695A1 (de) | 2014-03-07 | 2015-09-10 | Denso Corporation | Elektronische steuereinheit |
US11734250B2 (en) | 2019-12-12 | 2023-08-22 | Fujitsu Limited | Information processing apparatus, synchronization control method, and computer-readable recording medium recording synchronization control program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3593241B2 (ja) | 計算機の再起動方法 | |
KR100934533B1 (ko) | 연산 처리 시스템, 컴퓨터 시스템 상에서의 태스크 제어 방법, 및 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 | |
CN100524223C (zh) | 基于pmi和smi的调度执行框架中用于并发处理程序执行的方法 | |
EP1035472A2 (en) | Loading configuration data | |
JP2009245405A (ja) | コンピュータおよびブート方法 | |
JP2009140489A (ja) | Vmmシステムにおけるユーザosがサービスosによって使用されている装置の電源を切らないようにするためのシステム及び方法 | |
US7200705B2 (en) | Method of checkpointing state of virtual memory for process | |
US9235426B2 (en) | Multicore processor system, computer product, and notification method for updating operating system | |
CN114238236A (zh) | 共享文件的访问方法、电子设备及计算机可读存储介质 | |
CN115981685A (zh) | 应用升级方法、装置、计算设备和芯片系统 | |
JP7425685B2 (ja) | 電子制御装置 | |
JP5578811B2 (ja) | 情報処理装置、情報処理装置の制御方法及びプログラム | |
US8732441B2 (en) | Multiprocessing system | |
US7797473B2 (en) | System for executing system management interrupts and methods thereof | |
JP2821345B2 (ja) | 非同期i/o制御方式 | |
JP2003131893A (ja) | 演算処理システム、コンピュータ・システム上でのタスク制御方法、並びに記憶媒体 | |
JPWO2006001051A1 (ja) | マルチプロセッサ装置及びその制御方法 | |
JP2011138401A (ja) | プロセッサシステム、プロセッサシステムの制御方法、及び制御回路 | |
JP4597032B2 (ja) | コンピュータシステム、それにおける基本プログラムの起動方法、及びローダプログラム | |
JP5699665B2 (ja) | サーバ装置、処理実行方法およびプログラム | |
US20080043734A1 (en) | Data processing system, data processing apparatus, and data processing method | |
US10592329B2 (en) | Method and electronic device for continuing executing procedure being aborted from physical address where error occurs | |
WO1996042056A1 (en) | A cache flush mechanism for a secondary cache memory | |
CN114579195B (zh) | 一种操作系统重启方法、系统及相关组件 | |
JP2004005113A (ja) | 複数の実計算機上で動作する仮想計算機システム及びその制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040825 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040825 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060905 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061031 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070313 |