JPH1139178A - 計算機システム及び計算機システムにおけるチェックポイントスレッド方法 - Google Patents

計算機システム及び計算機システムにおけるチェックポイントスレッド方法

Info

Publication number
JPH1139178A
JPH1139178A JP9195669A JP19566997A JPH1139178A JP H1139178 A JPH1139178 A JP H1139178A JP 9195669 A JP9195669 A JP 9195669A JP 19566997 A JP19566997 A JP 19566997A JP H1139178 A JPH1139178 A JP H1139178A
Authority
JP
Japan
Prior art keywords
checkpoint
thread
computer system
processing
acquisition
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
Application number
JP9195669A
Other languages
English (en)
Inventor
Haruo Tomita
治男 冨田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP9195669A priority Critical patent/JPH1139178A/ja
Publication of JPH1139178A publication Critical patent/JPH1139178A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Retry When Errors Occur (AREA)

Abstract

(57)【要約】 【課題】 リスタート時のロックランアウト処理を不要
とすることによって構築コストを大幅に低減させる耐障
害性の計算機システム及び計算機システムにおけるチェ
ックポイントスレッド方法を提供すること。 【解決手段】 チェックポイントを取得するチェックポ
イント処理専用スレッド21をプロセッサ10それぞれ
に対応して設け、チェックポイント取得時にウェイクア
ップ部23によりチェックポイント処理専用スレッド2
1を実行可能状態とし、チェックポイント取得禁止状態
の場合はその時点で実行されていたスレッドを実行した
後にチェックポイント取得可能状態とし、チェックポイ
ント処理専用スレッド21がチェックポイントを取得す
る。その後、スリープ部22によりチェックポイント処
理専用スレッド21を再度待機状態とする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、チェックポイント
リスタート機能を備えた計算機システムに係り、特にリ
スタート時のロックランアウト処理を不要とすることに
よって構築コストを大幅に低減させる計算機システム、
及び計算機システムにおけるチェックポイントスレッド
方法に関する。
【0002】
【従来の技術】従来、通常稼働中にシステムのチェック
ポイントを取得しながら処理を進めていき、故障などが
発生した場合に、その取得してあったチェックポイント
からシステムを再実行させることによって、故障からの
回復を可能にしているタイプのコンピュータシステムに
おいては、以下のような場合に、チェックポイントの取
得を行なっている。
【0003】(1)コード中にチェックポイントの取得
が明示的に指示されている場合。
【0004】(2)最後にチェックポイントを取得して
以来、一定時間が経過した場合。
【0005】(3)チェックポイントの取得を促すイベ
ント(割り込み)が発生した場合。
【0006】これらの条件は、プログラム実行中の任意
の時点で発生しうる。そして従来では、その条件が発生
した時点で、すなわち、プログラム実行中の任意の時点
で、即座に実行状態のチェックポイントの取得を行なっ
ていた。
【0007】図13は、プロセッサが通常の処理を実行
している途中で、チェックポイント処理を実行している
様子を示している。時刻t1では、チェックポイントの
取得を促すようなイベントの発生に伴なう割り込み処理
(図13の(1))の中で、チェックポイント処理(図
13の(2))を行なっている。また、時刻t2では、
チェックポイントの取得が明示的に指示されて(図13
の(3))、チェックポイント処理がサブルーチンコー
ルされている(図13の(4))。すなわちチェックポ
イントは、任意のスレッド実行中に取得されていた。
【0008】図14は、チェックポイントを取得しなが
ら処理を進めていく途中で故障が発生し、最終チェック
ポイントから再実行している様子を示している。時刻t
1およびt2でチェックポイントを取得した後に故障が
発生すると(図14の(1))、最後に取得したチェッ
クポイント(t2)から再実行が行なわれる(図14の
(2))。
【0009】しかし、一般に、故障が発生した場合の再
実行を考慮すると、通常、処理の中には、「あるまとま
った単位で扱わなければならない処理」が存在する。こ
のような処理部分をロックランアウト領域と呼ぶ。
【0010】ロックランアウト領域とは、この間にチェ
ックポイントを取得しても構わないが、この間に取得さ
れたチェックポイントから再実行する場合には、正常状
態に復帰する前に、故障回復処理の中で「走り切らせ
る」必要がある区間のことを示す。通常はスピンロック
を獲得している区間のことである。
【0011】スピンロックとは、そのロックを獲得した
状態ではスリープすることができず、そのプロセッサ上
でスピンし続けなければならないロックのことである。
このスピンロックを獲得する際には、デッドロックが発
生しないように注意する必要がある。通常は各スピンロ
ックにレベル付けされたロッククラスを付加し、すでに
スピンロックを獲得している状態でさらに別のスピンロ
ックを獲得する場合には、たとえば現在獲得しているス
ピンロックのロッククラスのレベルの中で最も低いレベ
ルよりも、さらに低いレベルのロッククラスのスピンロ
ックしか獲得できないように便宜的に設計している。ま
た、スピンロックのロッククラスはプロセッサの割り込
みレベルとも密接に関連している。このようにスピンロ
ックを管理することにより、各プロセッサでのロック獲
得の順序性を保証する。
【0012】たとえば、図15に示すようにロッククラ
スのレベルが設定され、ロック操作の伴なう「処理A」
と「処理D」とを実行する場合であって、その双方のロ
ックを同時期に重複して獲得しなければならない場合、
各プロセッサは、必ず「処理D」のロック(レベルL
5)を獲得してから「処理A」のロック(レベルL3)
を獲得するといった順序を辿らなければならない。
【0013】ここでロックをランアウトさせる必要があ
る理由を、図16および図17を参照して説明する。
【0014】図16には、ロックランアウトを実施しな
いためにデットロックを発生させてしまう例が示されて
いる。
【0015】いま、プロセッサ(0)ではスレッドT0
が、プロセッサ(1)ではスレッドT1が、それぞれ実
行されており、スレッドT0はスピンロックL5とL3
を、スレッドT1はスピンロックL4を獲得した状態で
チェックポイントが取得されたものとする。
【0016】そして、この後、プロセッサ(0)で固定
故障が発生した場合を考える。この場合、正常に稼働す
るプロセッサは、プロセッサ(1)のみになってしまう
ので、プロセッサ(1)でスレッドT0とスレッドT1
を実行しなければならない。スレッドT0およびスレッ
ドT1が現在獲得しているスピンロックは認識可能だ
が、スレッドT0およびスレッドT1がこれからどのよ
うな挙動を示すか、すなわち、これからどのようなスピ
ンロックの獲得を試みるかは予測することができない。
【0017】そこで、リカバリを実行した後、プロセッ
サ(1)には現在低い方のレベルのスピンロックを獲得
しているスレッドT0がディスパッチされたとする。さ
らにこのスレッドT0は、すでに獲得しているスピンロ
ックL3を解放した後、スピンロックL4を新たに獲得
しにいったとする。ところがこのスピンロックL4は、
故障発生前はプロセッサ(1)で実行されていたスレッ
ドT1が獲得しているため、スレッドT0はいつまでた
ってもこのスピンロックを獲得できない。すなわち、デ
ットロックの発生である。この問題は、故障前には2つ
のプロセッサでスピンロック獲得の順序性を保証してい
たにも拘らず、1個のプロセッサが故障してしまったた
めに、各プロセッサで保証していたスピンロック獲得の
順序性が崩れてしまったということである。
【0018】この問題を解決するための手法として、ロ
ックのランアウト機能が知られている。この機能は、チ
ェックポイントからの再実行前に、チェックポイント取
得時に獲得していたすべてのスピンロックを解放させ、
全てのスレッドを特定のプロセッサに依存しない状態に
するものであり、以下の手順を踏む。
【0019】(1)チェックポイント取得時に獲得中だ
ったスピンロックの中で、最も低いレベルのスピンロッ
クを獲得しているスレッドを選択する。
【0020】(2)プロセッサを、選択されたスレッド
を実行していたプロセッサにみせかけて、そのスピンロ
ックを解放するまで実行する。
【0021】(3)スピンロックの解放処理の中で、ス
ピンロックを獲得しているスレッドがまだ存在するかど
うか調べる。
【0022】(4)もし存在すれば、(1)の処埋から
繰り返す。もし存在しなければ、ロックランアウトの処
理を終える。
【0023】すなわち、たとえば図17(a)に示すよ
うにスピンロックが獲得されていた場合、まずスレッド
T0が選択され(L3が最もレベルが低い)、このスレ
ッドT0は、スピンロックL3が解放されるまで実行さ
れる。
【0024】次に、最もレベルが低いL4を獲得してい
るスレッドT1が選択され(図17(b))、さらに、
その解放後にL5を獲得しているスレッドT0が選択さ
れて(図17(c))、ロックランアウトが完了する。
そしてこのロックランアウトが完了した後に、システム
はリスタートを実施する。
【0025】このような手順で実行されるロックランア
ウト処理を実現するためには、スピンロックの解放処理
が、ロックランアウト中は特殊なディスパッチ機構を呼
び出すようにする必要がある。
【0026】このように、従来のチェックポイントの取
得方法では、ソフトウェア(OS:オペレーティングシ
ステム)において、ロックランアウト領域といった処理
部分を抽出し、それらの「まとまった単位」を保護する
ために、前述したような特殊な機構を実装しなければな
らなかった。
【0027】また、従来の計算機システムでは、カーネ
ルモードにて実行中はプリエンプトされることはない。
そのため、高い優先度を持つスレッドが存在しても、既
存のカーネルモードにて実行されるスレッドがユーザー
モードに戻るまで、実行がブロックされる。したがっ
て、リアルタイム処理のようにある決められた時間以内
に応答を要求されるアプリケーションには従来の計算機
システムは不向きであるとされてきた。
【0028】この問題を解決する方法として、カーネル
内部をフリープリエンプションプティブにした計算機シ
ステムが開発されている。このタイプの計算機システム
では、スレッド間の排他制御を行うロックにスピンロッ
クではなく、特殊なスリープロックを使用することでス
レッド間のデッドロックが発生しないようになってい
る。このロックの特徴はロックを獲得する場合に従来か
ら行なわれていた割り込みレベル制御を行わないこと
で、カーネル内部をフリープリエンプテイブな構造を実
現している。これとは別に、カーネル内部にプリエンプ
ションポイントを設けている計算機システムもある。
【0029】スリープロックを用いてスレッド間の競合
を排他する場合には、優先度の低いスレッドが、ロック
を保持することによって、そのロックを獲得しようとし
た優先度の高いスレッドがブロックされてしまうことが
考えられる。この問題を解決するために、異なるスレッ
ド間で優先度が継承される。
【0030】このような計算機システムでは、プロセッ
サ上でスリープロックを保持した状態でチェックポイン
ト取得専用スレッドが、ディスパッチャにより選択さ
れ、チェックポイントが採取される可能性がある。この
場合にも、スピンロックと同様にに何らかの手段により
ロックの階層を設計して、ロックランアウト処理を行う
必要がある。
【0031】
【発明が解決しようとする課題】このように、従来のチ
ェックポイントの取得方法では、ソフトウェア(OS)
において、ロックランアウト領域といった処理部分を抽
出し、それらの「まとまった単位」を保護するために、
上記に示したような特殊な機構を実装しなければなら
ず、コストアップを余儀無くされてしまうといった問題
があった。
【0032】また、スリープロックに関するロックラン
アウト領域といった処理部分の抽出にはオペレーティン
グシステム全体を詳細に調査し、如何なる場合にも矛盾
が発生しないようにロック階層を実装しなければならず
コストアップを余儀なくされてしまう。
【0033】この発明はこのような実情に鑑みてなされ
たものであり、リスタート時のロックランアウト処理を
不要とすることによって構築コストを大幅に低減させる
計算機システム、及び計算機システムにおけるチェック
ポイントスレッド方法を提供することを目的とする。
【0034】
【課題を解決するための手段】この本発明は、故障など
によって処理が中断された場合に備え、その中断された
処理を再開始するためのチェックポイントを定期的に取
得しながら処理を進めていく耐障害性の計算機システム
において、前記チェックポイントを取得するチェックポ
イント取得スレッドを前記計算機システムのもつ複数の
プロセッサそれぞれに対応して設け、前記チェックポイ
ントの取得時に、前記チェックポイント取得スレッドを
実行可能状態とし、そのチェックポイント取得スレッド
が前記チェックポイントを取得した後に、そのチェック
ポイント取得スレッドを再度待機状態とするスレッド制
御手段と、スレッド間での優先度に基づきスリープロッ
クにより優先度の低いスレッドをブロックしてスレッド
間の競合を排他する場合、チェックポイント取得可能な
状態とチェックポイント取得禁止状態を設定する手段を
具備してなることを特徴とする。
【0035】また、本発明は、故障などによって処理が
中断された場合に備え、その中断された処理を再開始す
るためのチェックポイントを定期的に取得しながら処理
を進めていく耐障害性の計算機システムにおいて、前記
計算機システムを制御するオペレーティングシステムの
ディスパッチャに、前記計算機システムのもつ複数のプ
ロセッサそれぞれで実行中である処理すべてが完結した
際でかつ、スリープロックを保持していない際に前記チ
ェックポイントを取得する手段を具備したことを特徴と
する計算機システム。とすることを特徴とする。
【0036】この発明によれば、チェックポイントは、
必ずチェックポイント取得スレッドの実行中、あるいは
プロセッサがいずれの処理も実行していない状態でのデ
ィスパッチャ中でのみ取得されることになり、従来のチ
ェックポイントの取得方式では考慮する必要のあった、
ロックランアウト機構が不要になり、チェックポイント
採取機能を含むオペレーティングシステムが大幅に簡単
化できる。
【0037】たとえば、プロセッサが任意のスレッドを
実行している時に、チェックポイントの取得要求である
割込みスレッドを処理する場合を考える。この場合、割
り込みスレッドでは、スリープロックを獲得する前に、
チェックポイント取得禁止状態とする。スリープロック
を獲得しようとしてブロックされると、優先度がロック
を保持しているスレッドに継承される。このスレッドが
実行され、ロックが解放されたら、チェックポイント処
理専用スレッドを実行可能状態とし、チェックポイント
禁止状態を解除し、チェックポイントの取得を実行す
る。
【0038】また、このチェックポイント処理専用スレ
ッドの役割をディスパッチャが代行しても、同様の動作
が行なわれる。
【0039】すなわち、これによってリスタート時のロ
ックランアウト処理が不要となり、その構築コストを大
幅に低減させることが可能となる。
【0040】
【発明の実施の形態】以下、図面を参照してこの発明の
実施の形態を説明する。
【0041】(第1の実施形態)図1は、この発明の第
1の実施形態に係る計算機システムの概略構成を示す図
である。
【0042】10はプロセッサであり、20に示された
オペレーティングシステムを含めたソフトウェアを実行
する。
【0043】21はチェックポイント処理専用スレッド
で、通常は、22に示されたスリープ部によって、待機
状態になっている。
【0044】また、チェックポイント取得条件が成立し
た場合には、23に示されたウェイクアップ部を用い
て、待機状態になっているチェックポイント処理専用ス
レッド21を実行可能状態とする。
【0045】実行可能状態となったチェックポイント処
理専用スレッド21は、ディスパッチャにより選択さ
れ、すなわち実行状態となることにより、チェックポイ
ントの取得を行なう。
【0046】チェックポイント取得条件が成立した場合
には、なるべく早くチェックポイントを取得するため
に、チェックポイント処理専用スレッド21のプライオ
リティ(実行優先度)を高くし、故障通知などの特殊な
割り込み以外は受け付けないようにしておくことが望ま
しい。
【0047】チェックポイント取得条件が成り立つ旨の
割り込み要求を処理する割り込みスレッドはカーネルに
登録する必要がある。これらの処理は、ドライバまたは
カーネルモードで動作するモジュールとして登録してお
けばよい。
【0048】リスタート時にチェックポイントで取得さ
れたメモリ状態に戻ってしまっては困る処理を実行する
場合には、チェックポイント取得禁止の処理を行う必要
がある。この処理は上記で登録したドライバまたはモジ
ュールの機能として簡単に実現できる。
【0049】図6を使用して、チェックポイント取得禁
止区間に関して説明する。プロセッサが任意のスレッド
を実行している最中に、なんらかの割り込みが発生する
と(図6の(1))、割り込み処理ルーチンとして登録
してある割り込みスレッドが動作する(図6の
(2))。
【0050】割り込みスレッドではスリープロックの獲
得をする前にチェックポイント取得禁止状態を設定する
(図6の(3))。スリープロックを獲得しようとして
ブロックされると(図6の(4))、割り込みスレッド
の高い優先度がロックを保持しているスレッドに継承さ
れ、ウェイクアップを要求し、ディスパッチャが呼び出
される。
【0051】この時、ロックを保持しているスレッドの
優先度よりチェックポイント取得スレッドの優先度が高
い場合にはチェックポイントスレッドがスケジューリン
グされる(図6の(5))。
【0052】チェックポイント取得専用スレッドでは、
チェックポイント取得禁止であった場合にはチェックポ
イント取得を実行しないで(図6の(6))、再び待機
状態になり(図6の(7))、ディスパッチャが呼び出
される。
【0053】ディスパッチャは、ロック待ちにより優先
度があがっているスレッドを選択し(図6の(8))、
そのプロセッサ上で実行される。実行中のスレッドでロ
ックが開放された時に、割り込みスレッドにウェイクア
ップ要求がされ、優先度が元に戻る(図6の(10))
(図6の(11))。
【0054】次に何らかのスレッドを選択するディスパ
ッチャは、優先度が高い割り込みスレッドを選択する
(図6の(12))。スリープロックの獲得から復帰し
た時に、チェックポイント取得に失敗していた場合に
は、チェックポイント取得専用スレッドにウェイクアッ
プ要求をし(図6の(14))、チェックポイント取得
禁止区間を解除する(図6の(13))。
【0055】次に、図2乃至図4を参照して本実施形態
の動作手順を説明する。
【0056】図2は、チェックポイント処理専用スレッ
ド21の処理の流れを示すフローチャートである。
【0057】チェックポイント処理専用スレッド21
は、通常は待機状態にあるが(ステップA1)、チェッ
クポイント取得条件が成立するとウェイクアップされ、
チェックポイントを取得して(ステップA2)、それが
終わると、再び待機状態に戻される。
【0058】図3は、チェックポイント取得条件の成立
を通知し、待機状態にあるチェックポイント処理専用ス
レッド21をウェイクアップさせる処理の流れを示すフ
ローチャートである。
【0059】図3で示すように、チェックポイント取得
条件が成立すると、割り込み処理あるいはサブルーチン
コールによって、チェックポイント取得条件の成立を通
知する処理を実行する(ステップB1)。ここでは待機
状態にあるチェックポイント処理専用スレッド21を実
行可能状態とする。
【0060】チェックポイント処理専用スレッド21の
待機状態への移行や、実行可能状態への移行において
は、特定のスレッドのみについて行なうため、たとえば
UNIXでは、ウェイクアップさせるスレッドの特定化
のために、特定のウェイトチャンネル(この場合はS)
を使用する。
【0061】図4は、チェックポイント処理専用スレッ
ド21によって取得されたチェックポイントから、再実
行を行なう場合の処理の流れを示すフローチャートであ
る。この場合、最後に取得されたチェックポイントの状
態をまず復元し(ステップC1)、続いてチェックポイ
ント処理専用スレッド21をカレントスレッドとして、
その先頭から処埋を実行させる(ステップC2)。
【0062】ここで、図5を参照して本実施形態の動作
原理を説明する。プロセッサが任意のスレッドを実行し
ている最中に、チェックポイント取得条件が成立した旨
の割込みが発生すると(図5の(1))、割り込み処理
ルーチンとして登録しておいた割り込みスレッドに制御
が渡る。
【0063】割り込みスレッドでは、待機中にあるチェ
ックポイント処理専用スレッド21を実行可能にし、チ
ェックポイント取得条件が成立した旨の割込み以下の割
り込みが発生しないようにプロセッサの割り込みレベル
をマスクする(図5の2)。この後、元のスレッドに制
御が戻り、このスレッドの実行単位が終了すると、続い
てディスパッチャが呼び出される(図5の(3))。こ
の場合、プロセッサ上はチェックポイント取得条件が成
立した旨の割込み以下の割り込みが発生しないようにな
っているので、割り込みスレッドが選択されることな
く、優先度の高いチェックポイント処理専用スレッド2
1がウェイクアップされているので、ディスパッチャ
は、チェックポイント処理専用スレッド21を選択し
て、プロセッサに実行させる(図5(4)。そして、チ
ェックポイント取得禁止の状態でない場合には、チェッ
クポイントの取得を行う。チェックポイント取得が終了
すると、チェックポイント処理専用スレッドは、プロセ
ッサ上でマスクしていた割り込みレベルを通常に戻し、
再び待機状態になり(図5の(5))、ディスパッチャ
が呼び出されて、割り込みスレッドを含む再び任意のス
レッドが選択される(図5の(6))。
【0064】このように、チェックポイント処理専用ス
レッド21を用いた場合には、チェックポイントの取得
は常にチェックポイント処理専用スレッド21の中での
み実行されるため、リスタート時のロックランアウトが
不要となり、チェックポイント取得機能を含むオペレー
ティングシステムを大幅に簡単化できる結果、構築コス
トを大幅に低減することが可能となる。
【0065】また、このような構成とすることにより、
次に示すような効果も得ることができる。
【0066】図7は、マルチプロセッサシステム中の特
定のプロセッサが固定故障を発生させた際の処理を示す
ものである。この例では、プロセッサ(0)〜プロセッ
サ(3)の4つのプロセッサを有したマルチプロセッサ
システムを前提としており、各プロセッサ10は、チェ
ックポイントを取得する際、各々チェックポイント処理
専用スレッド21をディスパッチして行なっている(図
7(a))。このことは、チェックポイント取得時にお
いて実行中であるスレッドはチェックポイント処理専用
スレッド21のみであり、他のいかなるスレッドも実行
状態にはないことを示している。
【0067】ここで、たとえば特定のプロセッサ10が
間欠故障を発生させた場合を考える。この場合、故障回
復処理では、最後に取得したチェックポイントまでシス
テムの状態をロールバックし、後は各プロセッサがチェ
ックポイント取得時に実行していたチェックポイント処
理専用スレッド21をリジュームすればよい。
【0068】次に、たとえば特定のプロセッサ10が固
定故障を発生させた場合を考える。この場合、故障処理
では、最後に取得したチェックポイントまでシステムの
状態をロールバックし、後は各プロセッサがチェックポ
イント取得時に実行していたチェックポイント処理専用
スレッド21をリジュームする。ただし、固定故障を発
生させたプロセッサ10(図7(b)ではプロセッサ
(1))は処理を実行できない。これにより、その固定
故障を発生させたプロセッサで実行されていたチェック
ポイント処理専用スレッド21は、いかなるプロセッサ
からも実行されなくなり、かつ他のいずれの通常スレッ
ドも故障したプロセッサにディスパッチされることがな
いため、固定故障を発生させたプロセッサの縮退が容易
に実現されることとなる。
【0069】(第2の実施形態)図8は、この発明の第
2の実施形態に係る計算機システムの概略構成を示す図
である。
【0070】10はプロセッサであり、20に示された
オペレーティングシステムを含めたソフトウェアを実行
する。
【0071】24はディスパッチャで、25に示された
チェックポイント処理部を有している。
【0072】ディスパッチャ24は、常にチェックポイ
ント処理部25を呼び出すわけではなく、26に示され
たチェックポイント処理実行指示部がチェックポイント
処理の実行を指示している場合にだけ呼び出す。そし
て、チェックポイント取得条件が成立した場合には、こ
のチェックポイント処理実行指示部26によってチェッ
クポイント処理の実行が指示される。
【0073】チェックポイント処理実行指示部26によ
ってチェックポイント処理の実行が指示されると、ディ
スパッチャ24は、チェックポイント処理部25を呼び
出す。
【0074】このチェックポイント処理の実行指示は、
たとえばソフトウェアにおける変数をフラグとして用
い、チェックポイント処理の実行を指示する場合にフラ
グをセット(1)する。したがって、ディスパッチャ2
4は、このフラグがセット(1)されている場合にの
み、チェックポイント処理部25を呼び出せば艮い。
【0075】次に、図9乃至図10を参照して本実施形
態の動作手順を説明する。
【0076】図9は、チェックポイント処理部25を備
えたたディスパッチャ24の処理の流れを示すフローチ
ャートである。
【0077】チェックポイント処理部25を備えたディ
スパッチャ24は、チェックポイント処理実行指示部2
6からの指示が通知されているか否かを監視し(ステッ
プD1)、チェックポイント処理部25の実行が指示さ
れている場合には(ステップD1のY)、チェックポイ
ント処理部25の実行指示をクリアした後(ステップD
2)、チェックポイントの採取を行なう(ステップD
3)。
【0078】そして、このチェックポイントの採取が完
了すると、通常のディスパッチャの処理を実行する(ス
テップD4)。すなわち、優先度の高いスレッドを選択
してプロセッサにそのスレッドを実行させる。
【0079】図10は、チェックポイント取得条件の成
立を通知し、ディスパッチャ24にチェックポイント処
理部26の実行を指示する処理の流れを示すフローチャ
ートである。
【0080】図10で示すように、チェックポイント取
得条件が成立すると、割り込み処理あるいはサブルーチ
ンコールによって、チェックポイント取得条件の成立を
通知する処理を実行する(ステップE1)。ここではチ
ェックポイント処理部25の実行を指示する。
【0081】このチェックポイント処理部25の実行指
示は、前述したように、たとえばソフトウェアにおける
変数をフラグとして用い、チェックポイント処理部25
の実行を指示する場合にフラグをセット(1)する。し
たがって、ディスパッチャ24は、このフラグがセット
(1)されている場合にのみ、チェックポイント処理部
25を呼び出せば良い。
【0082】図11は、チェックポイント処理部25に
よって取得されたチェックポイントから、再実行を行な
う場合の処理の流れを示すフローチャートである。
【0083】この場合、最後に取得されたチェックポイ
ントの状態をまず復元し(ステップF1)、続いてディ
スパッチャ24を先頭から呼び出す(ステップF2)。
【0084】ここで、図12を参照して本実施形態の動
作原理を説明する。
【0085】プロセッサが任意のスレッドを実行してい
る最中に、チェックポイント取得条件が成立した旨の割
り込みが発生すると(図12の(1))、チェックポイ
ント処理実行指示部26を介してチェックポイント処理
部25の実行を指示する(図12の(2))。
【0086】この後、元のスレッドに制御が戻り、この
スレッドの一実行単位が終了すると、続いてディスパッ
チャが呼び出されるが、すでにチェックポイント処理部
25の実行が指示されているので、ディスパッチャ24
は、チェックポイントの取得を行なう(図12の
(3))。
【0087】このチェックポイントの取得が終了する
と、ディスパッチャ24は、優先度の高いスレッドを選
択し、プロセッサ10にそのスレッドを実行させるとい
う、通常のディスパッチャの処理に戻る(図12の
(4))。
【0088】このように、チェックポイント処理部25
を備えたディスパッチャ24を用いた場合には、チェッ
クポイントの取得は、常にディスパッチャの中でのみ実
行されるため、リスタート時のロックランアウトが不要
となり、チェックポイント取得機能を含むオペレーティ
ングシステムを大幅に簡単化できる結果、構築コストを
大幅に低減することが可能となる。
【0089】
【発明の効果】従来のチェックポイントの取得方法で
は、ソフトウェア(OS)に於いて、ロックランアウト
領域といった処理部分を抽出し、それらの「まとまった
単位」を保護するために、特殊な機構を実装しなければ
ならなかったが、本発明を適用することにより、チェッ
クポイントは常に、チェックポイント処理専用スレッド
の中か、デイスパッチャの中でしか採られることはなく
なる。これにより、チェックポイント採取時に、他のス
レッドが実行されている事は一切なくなり、従来のチェ
ックポイントの取得方法では考慮する必要のあった、上
記に示した様な「まとまった単位」を考慮する事が不要
になり、ソフトウェア(OS)開発が大幅に容易になっ
た。
【図面の簡単な説明】
【図1】本発明の第1の実施形態に係る計算機システム
の概略構成を示す図。
【図2】同実施の形態に係わり、チェックポイント処理
専用スレッドの処理の流れを示すフローチャート。
【図3】同実施の形態に係わり、チェックポイント取得
条件の成立を通知し、待機状態にあるチェックポイント
処理専用スレッドをウェイクアップさせる処理の流れを
示すフローチャート。
【図4】同実施の形態に係わり、チェックポイント処理
専用スレッドによって取得されたチェックポイントか
ら、再実行を行なう場合の処理の流れを示すフローチャ
ート。
【図5】同実施の形態に係わる動作原理を説明する図。
【図6】同実施の形態に係わり、チェックポイント取得
禁止期間を説明する図。
【図7】同実施の形態に係わり、マルチプロセッサシス
テム中の特定のプロセッサが固定故障を発生させた際の
処理をホす図。
【図8】本発明の第2の実施形態に係わる計算機システ
ムの概略構成を示す図。
【図9】同実施形態に係わり、チェックポイント処理部
を備えたディスパッチャの処理の流れを示すフローチャ
ート。
【図10】同実施の形態に係わり、チェックポイント取
得条件の成立を通知し、ディスパッチャにチェックポイ
ント処理部の実行を指示する処理の流れを示すフローチ
ャート。
【図11】同実施の形態に係わり、チェックポイント処
理部によって取得されたチェックポイントから、再実行
を行なう場合の処理の流れを示すフローチャート。
【図12】同実施形態に係わる動作原理を説明する図。
【図13】従来のプロセッサが通常の処理を実行してい
る途中で、チェックポイント処理を実行している様子を
示す図。
【図14】従来のチェックポイントを取得しながら処理
を進めていく途中で故障が発生し、最終チェックポイン
トから再実行している様子を示す図。
【図15】従来のロッククラスのレベルの設定例を示す
図。
【図16】従来のロックランアウトを実施しないために
デットロックを発生させてしまう例を示す図。
【図17】従来のロックランアウト処理を説明する図。
【符号の説明】
10…プロセッサ、20…オペレーティングシステム、
21…チェックポイント処理専用スレッド、22…スリ
ープ部、23…ウェイクアップ部、24…ディスパッチ
ャ、25…チェックポイント処理部、26…チェックポ
イント処理実行指示部。

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 故障などによって処理が中断された場合
    に備え、その中断された処理を再開始するためのチェッ
    クポイントを定期的に取得しながら処理を進めていく耐
    障害性の計算機システムにおいて、 前記チェックポイントを取得するチェックポイント取得
    スレッドを前記計算機システムのもつ複数のプロセッサ
    のそれぞれに対応して設け、 前記チェックポイントの取得時に、前記チェックポイン
    ト取得スレッドを実行可能状態とし、そのチェックポイ
    ント取得スレッドが前記チェックポイントを取得した後
    に、そのチェックポイント取得スレッドを再度待機状態
    とするスレッド制御手段と、 スレッド間での優先度に基づき優先度の高いスレッドが
    スリープロックを獲得してスレッド間の競合を排他する
    場合、チェックポイント取得可能な状態とチェックポイ
    ント取得禁止状態を設定する手段を具備してなることを
    特徴とする計算機システム。
  2. 【請求項2】 前記チェックポイント取得禁止状態であ
    った場合には、前記チェックポイントの取得時にはチェ
    ックポイント取得を行うかわり、その時点でスリープロ
    ックを保持しているスレッドに制御を渡すスレッド制御
    手段を具備したことを特徴とする請求項1記載の計算機
    システム。
  3. 【請求項3】 前記チェックポイントの取得がチェック
    ポイント禁止状態であった場合には、チェックポイント
    可能状態になった直後に、前記チェックポイント取得ス
    レッドを実行可能な状態にするスレッド制御手段を具備
    したことを特徴とする請求項1記載の計算機システム。
  4. 【請求項4】 故障などによって処理が中断された場合
    に備え、その中断された処理を再開始するためのチェッ
    クポイントを定期的に取得しながら処理を進めていく耐
    障害性の計算機システムにおいて、 前記計算機システムを制御するオペレーティングシステ
    ムのディスパッチャに、前記計算機システムのもつ複数
    のプロセッサそれぞれで実行中である処理すべてが完結
    した際でかつ、スリープロックを保持していない際に前
    記チェックポイントを取得する手段を具備したことを特
    徴とする計算機システム。
  5. 【請求項5】 故障などによって処理が中断された場合
    に備え、その中断された処理を再開始するためのチェッ
    クポイントを定期的に取得しながら処理を進めていく耐
    障害性の計算機システムにおいて、 前記チェックポイントを取得するチェックポイント取得
    スレッドを前記計算機システムのもつ複数のプロセッサ
    それぞれに対応して設け、 前記チェックポイントの取得時に、前記チェックポイン
    ト取得スレッドを実行可能状態とし、 そのチェックポイント取得スレッドが前記チェックポイ
    ントを取得した後に、そのチェックポイント取得スレッ
    ドを再度待機状態とし、 スレッド間での優先度に基づき優先度の高いスレッドが
    スリープロックを獲得してスレッド間の競合を排他する
    場合、チェックポイント取得可能な状態とチェックポイ
    ント取得禁止状態を設定するようにしたことを特徴とす
    る計算機システムにおけるチェックポイントスレッド方
    法。
  6. 【請求項6】 前記チェックポイント取得禁止状態であ
    った場合には、前記チェックポイントの取得時にはチェ
    ックポイント取得を行うかわり、その時点でスリープロ
    ックを保持しているスレッドに制御を渡すようにしたこ
    とを特徴とする請求項5記載の計算機システムにおける
    チェックポイントスレッド方法。
  7. 【請求項7】 前記チェックポイントの取得がチェック
    ポイント禁止状態であった場合には、チェックポイント
    可能状態になった直後に、前記チェックポイント取得ス
    レッドを実行可能な状態にするようにしたことを特徴と
    する請求項5記載の計算機システムにおけるチェックポ
    イントスレッド方法。
  8. 【請求項8】 故障などによって処理が中断された場合
    に備え、その中断された処理を再開始するためのチェッ
    クポイントを定期的に取得しながら処理を進めていく耐
    障害性の計算機システムにおいて、 前記計算機システムを制御するオペレーティングシステ
    ムのディスパッチャに、前記計算機システムのもつ複数
    のプロセッサそれぞれで実行中である処理すべてが完結
    した際で、且つスリープロックを保持していない際に前
    記チェックポイントを取得するようにしたことを特徴と
    する計算機システムにおけるチェックポイントスレッド
    方法。
JP9195669A 1997-07-22 1997-07-22 計算機システム及び計算機システムにおけるチェックポイントスレッド方法 Pending JPH1139178A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9195669A JPH1139178A (ja) 1997-07-22 1997-07-22 計算機システム及び計算機システムにおけるチェックポイントスレッド方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9195669A JPH1139178A (ja) 1997-07-22 1997-07-22 計算機システム及び計算機システムにおけるチェックポイントスレッド方法

Publications (1)

Publication Number Publication Date
JPH1139178A true JPH1139178A (ja) 1999-02-12

Family

ID=16345035

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9195669A Pending JPH1139178A (ja) 1997-07-22 1997-07-22 計算機システム及び計算機システムにおけるチェックポイントスレッド方法

Country Status (1)

Country Link
JP (1) JPH1139178A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011044078A (ja) * 2009-08-24 2011-03-03 Internatl Business Mach Corp <Ibm> フォールト・トレラント・コンピュータ・システム、方法及びプログラム
US8566539B2 (en) 2009-01-14 2013-10-22 International Business Machines Corporation Managing thermal condition of a memory
US8694821B2 (en) 2010-12-03 2014-04-08 International Business Machines Corporation Generation of standby images of applications
US8713362B2 (en) 2010-12-01 2014-04-29 International Business Machines Corporation Obviation of recovery of data store consistency for application I/O errors

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566539B2 (en) 2009-01-14 2013-10-22 International Business Machines Corporation Managing thermal condition of a memory
JP2011044078A (ja) * 2009-08-24 2011-03-03 Internatl Business Mach Corp <Ibm> フォールト・トレラント・コンピュータ・システム、方法及びプログラム
US9032190B2 (en) 2009-08-24 2015-05-12 International Business Machines Corporation Recovering from an error in a fault tolerant computer system
US8713362B2 (en) 2010-12-01 2014-04-29 International Business Machines Corporation Obviation of recovery of data store consistency for application I/O errors
US8694821B2 (en) 2010-12-03 2014-04-08 International Business Machines Corporation Generation of standby images of applications

Similar Documents

Publication Publication Date Title
JP3072048B2 (ja) 計算機システムおよび計算機システムのソフトウェア故障回復方法
US8584138B2 (en) Direct switching of software threads by selectively bypassing run queue based on selection criteria
EP0351536B1 (en) Systematic recovery of excessive spin loops in an n-way mp environment
US8176489B2 (en) Use of rollback RCU with read-side modifications to RCU-protected data structures
US7178062B1 (en) Methods and apparatus for executing code while avoiding interference
US5815651A (en) Method and apparatus for CPU failure recovery in symmetric multi-processing systems
CN101203831B (zh) 用于对存储器更新进行缓存的装置、方法和系统
US5991790A (en) Generation and delivery of signals in a two-level, multithreaded system
RU2437144C2 (ru) Способ устранения исключительной ситуации в одном из ядер многоядерной системы
JP2001154885A (ja) コンピュータシステムのロックアップ防止方法及びコンピュータシステムをモニターする方法
KR100246120B1 (ko) 컴퓨터 시스템
JPH07311749A (ja) マルチプロセッサシステム及びカーネル置換方法
JPH1139178A (ja) 計算機システム及び計算機システムにおけるチェックポイントスレッド方法
US20080313652A1 (en) Notifying user mode scheduler of blocking events
JP2965075B2 (ja) プログラム実行状態監視方法
JP3122371B2 (ja) 計算機システム
JP3919274B2 (ja) 状態記録再現機能を有する計算機システム及び状態記録再現プログラムを記録したコンピュータ読み取り可能な記録媒体
JPH117431A (ja) 複数コンピュータで実行する業務の障害回復システム
JP2005182594A (ja) コンピュータ及びプログラム
JPH09251393A (ja) 計算機システム
JP6637450B2 (ja) トランザクションにおけるレジスタの動的なセーブ
JP3604171B2 (ja) プロセス自動再起動処理方式
JPH10269110A (ja) 計算機システムのハングアップ回避方法並びにこの方法を用いた計算機システム。
JP2008077388A (ja) マルチプロセッサ制御システム、方法、およびプログラム
JPH03138753A (ja) マルチプロセッサシステムのブートロード装置