JPH0675252B2 - 多重処理コンピュータ・システム及び方法 - Google Patents

多重処理コンピュータ・システム及び方法

Info

Publication number
JPH0675252B2
JPH0675252B2 JP1211539A JP21153989A JPH0675252B2 JP H0675252 B2 JPH0675252 B2 JP H0675252B2 JP 1211539 A JP1211539 A JP 1211539A JP 21153989 A JP21153989 A JP 21153989A JP H0675252 B2 JPH0675252 B2 JP H0675252B2
Authority
JP
Japan
Prior art keywords
global
local
read
resource
count
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.)
Expired - Lifetime
Application number
JP1211539A
Other languages
English (en)
Other versions
JPH0383154A (ja
Inventor
グレゴリイ・ピイーター・ロートン
Original Assignee
インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン
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 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン filed Critical インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン
Publication of JPH0383154A publication Critical patent/JPH0383154A/ja
Publication of JPH0675252B2 publication Critical patent/JPH0675252B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying

Description

【発明の詳細な説明】 以下の順序で本発明を説明する。
A.産業上の利用分野 B.従来技術 C.発明が解決しようとする問題点 D.問題点を解決するための手段 E.実施例 E1 本発明が具体化されるコンピュータ・システム及び
ソフトウェア(第1及び第2図) E2 要求、終了論理の一部の流れ図(第3A乃至第3E図) E3 多重処理コンピュータ・システムの動作の流れ図
(第4A図乃至第4C図) E4 従来の、第4C図に対応する処理(第4D図) F.発明の効果 A.産業上の利用分野 本発明は、複数の処理の各々が、少なくとも1つのシス
テム・リソースにアクセスする多重処理コンピュータ・
システムに関する。
B.従来技術 複数の処理が、メモリ・ユニットもしくはレジスタもし
くはシステム・ハードウェアの特定の部分であるシステ
ム・リソースにアクセスする多重処理コンピュータ・シ
ステムでは、アクセスの競合及びリソースの完全性を解
決しなければならないという問題がある。たとえば、リ
ソースがメモリ・ユニットであり、1つの処理がメモリ
の内容を変更中の時は、他の処理は最初の処理が終る迄
は、リソースにアクセスできない。
多重タスク・オペレーティング・システスの下で動作し
ている従来技術のコンピュータ・システムでは、任意の
時期にリソースに多重読取りアクセスを行うか、排他的
書込みアクセスを行うことは知られている。このような
動作は、リソースへの読取りアクセス許可の大局的な数
をカウントするための大局リソース・カウント及び局所
リソース・カウント(即ち、夫々すべての処理について
の、そのリソースへの読取りクセス許可の総数)、並び
に各処理のそのリソースへのアクセスの読取りアクセス
許可の局所的な数を使用することによって達成されてい
る。個々の処理のための局所リソース・カウントが大局
リソース・カウントの外に必要なのは、各処理にスレッ
ドと呼ばれる複数の“部分処理”を含むことがあり、そ
の各々がリソースに独立したアクセスを必要とするため
である。リソースへの書込み動作は、そのリソースへの
すべての読取りアクセス・カウントが0になった時にだ
け許可される。読取りアクセス・カウントへの順次アク
セスは、良く知られているようにセマフォ(semaphore
s)を使用することによって保証され、このようにし
て、カウントに関して起り得る競合と完全性の問題が避
けられている。
上述のシステムの複雑な問題は、打ち切り命令に応答し
て、多重タスク・オペレーテング・システムによって、
処理が早めに中止される場合に生ずる。処理が早めに打
ち切られるということは、打ち切りの時点でその処理の
ためのある読取りアクセスが保留されていて、従って上
述のカウントが、システムの完全性を保つためにリセッ
トされなければならないことを意味する。処理の中止
は、代表的な場合、処理が中止される度に、オペレーテ
ィング・システムによって呼び出される出口処理論理に
よって制御されている。
従って、複数の処理が少なくとも1つのシステム・リソ
ースをアクセスできる。次のものより成る多重処理コン
ピュータ・システムが知られている。
(イ)その処理がリソースにアクセスするための許可カ
ウントを保持するための、各処理ごとの局所カウント装
置、 (ロ)リソースにアクセスするすべての処理のための許
可カウントを保持するための大域カウント装置、 (ハ)処理がリソースの使用を要求し、もしくは放棄す
る度に、適切な局所カウント装置及び大域カウント装置
をこの順番に更新するための更新論理装置、 (ニ)大域カウント装置をリセットするための処理を中
止する出口論理装置。
処理の中止を処理するための、これ迄に知られている機
構は局所要求カウントと大域要求カウントの更新間で、
処理が異常に中止した場合に、潜在的な弱さを有する。
それはこれ等の動作が別個の機械命令によって遂行され
るからであるが、この結果カウントの一貫性が保持され
なくなる。難点は、処理が中止した時に、出口論理に適
切な処置を行わせるため、この処理がこの損傷を受けや
すい期間中にあるかどうかを判断することにある。
C.発明が解決しようとする問題点 本発明の目的は、上述のタイプに属し、異常な処理中止
を効果的に処理できる多重処理システムを与えることに
ある。
D.問題点を解決するための手段 本発明の第1の態様に従えば、上述のタイプの多重処理
コンピュータ・システムはさらに次のことによって特徴
付けられる。
(イ)更新論理装置はさらに、適切な局所カウント装置
もしくは大域カウント装置が更新される前に、予想され
る局所カウント値及び大域カウント値を夫々第1及び第
2のメモリ装置に記憶するための論理装置を有する。
(ロ)出口論理装置はさらに、第1のメモリ装置の内容
を適切な局所カウント装置の内容と比較し、第2のメモ
リ装置の内容を適切な大域カウント装置の内容と比較
し、比較の結果に依存して、処理が局所カウント装置と
大域カウント装置の更新間で中止されたかどうかを判断
する論理装置を有する。
セマフォを与えて、大域カウント装置は一時に1つの処
理だけによってアクセスされることを保証することが望
ましい。
以下説明する本発明の実施例では、局所及び大域カウン
ト装置がリソースを読取るための許可カウントを保持し
ている。この実施例では、第1のメモリ装置に記憶され
る局所カウントの予想値は現在の局所のカウントに、意
図されている局所カウント・インクレメントを加えたも
のであり、第2のメモリ装置に記憶される大域カウント
の予想値は現在の大域カウントに、意図されている大域
カウント・インクレメントを加えたものである。ここで
“インクレメント”は正数もしくは負数であることに注
意されたい。
上述の実施例では、更新論理装置は大域カウント装置の
前に局所カウント装置を更新し、処理が中断した時に、
第1のメモリ装置の内容が局所カウント装置の内容と同
じであるかどうか、第2のメモリ装置の内容が大域カウ
ントの内容と異なるかどうかを、出口論理装置がテスト
して、もし両方の条件を満足すると、局所カウント装置
の内容が第2のメモリ装置の内容と、大域カウント装置
の内容の差だけデクレメントされる。たとえば第2のメ
モリ装置の内容が大域カウント装置の内容よりも1だけ
小さい時は、局所カウント装置の内容は−1だけデクレ
メントされる(即ち1だけ増加される)。ここでデクレ
メントは第1のメモリ装置から大域カウント装置の減算
の計算結果に依存して任意の数を加算もしくは減算する
ことを意味することに注意されたい。
以下説明する実施例では、更新論理装置は大域カウント
の予想値の前に局所カウントの予想値を記憶するが、代
替実施例として、更新論理装置は、局所カウント装置の
前に大域カウント装置を更新できる。この場合には、出
口論理装置は第2のメモリ装置の内容が大域カウント装
置の内容と同じであるかどうか、第1のメモリ装置の内
容が局所カウント装置の内容と異なるかどうかをテスト
し、もし両条件を満足すると、大域カウント装置の内容
が、第1のメモリ装置の内容と、局所カウント装置の内
容間の数値差だけデクレメントされる。
更新論理装置で、局所及び大域カウント装置を更新する
のと同じ時間的順序で、夫々第1及び第2のメモリ装置
の予想値を記憶する時は、制御が簡単になる。このよう
にすると、予想カウント及び実際のカウントを比較する
だけで、局所カウントと大域カウントの更新間に中止が
発生したかどうかを判断するに十分である。しかしなが
ら、もしこのテストだけを、中止点の判断に使用したい
場合には、更新論理装置は、値が汚染されないことを保
証する手段として、第1及び第2のメモリ装置の内容を
無効値にセットしなければならない。
しかしながら、更新論理装置はさらに、局所及び大域カ
ウント装置を更新するためのセクションを含む論理のセ
クションをブラケティングする(一括する)論理装置を
有し、出口論理装置はさらに、処理が論理のブラケット
されたセクションの実行中に中止したかどうかをテスト
する論理を有することが好ましい。もし、予想値をセッ
トする時間的順序が、カウント値を更新する順序と同じ
でない時は、このブラケテイングは、セットされる第1
及び第2のメモリ装置のうち第2のメモリ装置をセット
し、局所及び大域カウント装置を更新するという、3つ
のセット動作だけをブラケットすればよい。
ブラケテイング論理の一つの形は、第1及び第2のメモ
リ装置の少なくとも1つの内容を、その中に上記予想値
が記憶される前に無効値はセットし、局所及び大域カウ
ント装置が更新された後に、第1及び第2のメモリ装置
の上記少なくとも1つの内容を無効値にリセットする。
この論理のブラケットされたセクションをテストするた
めの論理装置は、従って上記第1及び第2のテスト装置
の少なくとも1つの内容が有効値を有するかどうかをテ
ストする。
しかしながら、以下に説明する実施例では、予想値を記
憶した後に、第3のメモリ装置の内容をリソースのため
の一意的な識別子の値にリセットし、局所及び大域変数
の更新の後に、第3のメモリ装置を無効値にリセットす
るブラケテイング論理装置が使用される。ブラケットさ
れた論理セクションをテストするための論理装置は、第
3のメモリ装置の内容が有効な識別子の値に対応するか
どうかをテストする。この技術は中止が生じた時点の表
示を与えるだけでなく、中止されつつある処理によって
現在アクセスされているリソースの識別子を明らかにす
るという利点を有する。このように第3のメモリ装置を
使用すると、第1及び第2のメモリ装置を最初及びその
後に無効値にセットする必要はなくなるが、このような
セットを行う論理装置も与えることができる。
本発明の第2の態様に従うと、多重処理コンピュータ・
システム中でリソースの完全性を保持する方法が与えら
れる。この方法では単一の処理によってアクセス可能な
虚苦変数及び複数の処理によってアクセス可能であり、
局所変数に依存する大域変数が順次に更新されて、処理
は局所及び大域変数の更新間で中止できる。この方法は
次の段階より成る。
(a)局所変数の予想値を第1のメモリ装置に、大域変
数の予想値を第2のメモリ装置に記憶する。
(b)上記局所変数及び上記大域変数をこの順番に更新
する。
(c)もし上記処理が中止されると、第1のメモリ装置
の内容と局所変数の内容とを比較し、第2のメモリ装置
の内容と大域変数の内容とを比較することによって、上
記局所及び大域変数を更新する間に処理が中止されたか
どうかを判断し、必要ならば、変数の値を修正するため
の回復処置を行う。
E.実施例 E1 本発明が具体化されるコンピュータ・システム及び
ソフトウェア 第1図は、本発明が具体化されるパーソナル・コンピュ
ータ・システムの代表的なハードウェアの組織を示した
ブロック図である。このコンピュータ・システムは、シ
ステム・バス2に接続されたマイクロプロセッサ1を有
する。システム・バスはデータ、アドレス及び制御線よ
り成る。ユーザ入力装置(たとえば、キーボード及びマ
ウス)3、表示装置4、媒体(たとえば、ディスク・ド
ライブ)5、ランダム・アクセス・メモリ、読取り専用
メモリ7及び他の出力装置(たとえば、プリンタもしく
はモデム)8が夫々のアダプタ9乃至14を介して、バス
2に接続されている。
第2図は、現存の多重タスク・オペレーティング・シス
テム(以下ベース・オペレーティング・システム20と参
照する)、拡張オペレーティング・システム21及びアプ
リケーション・プログラム22、23、24の形の複数の処理
間の論理関係を示す概略的ブロック図である。これ等の
処理の各々が複数のリソース(図示せず)にアクセスす
る。
ベース・オペレーティング・システム20は第1図に示さ
れたパーソナル・コンピュータのハードウエア上で実行
され、拡張オペレーティング・システム21を支援し、シ
ステム21がアプリケーション22、23、24を支援してい
る。本発明の好ましい実施例では、ベース・オペレーテ
ィング・システム20、拡張オペレーティング・システム
21及びアプリケーション22、23、24は、すべて媒体5か
らソフトウエアの形で与えられ、使用するために、ラン
ダム・アクセス・メモリ6中に記憶さえる。しかしなが
ら、このことは本発明にとって絶対的なことではなく、
論理の少なくとも一部は以下説明するように、通信リン
クを介してダウン・ロードされるか、ROM中に記憶され
るか、もしくはハード・ワイアード専用論理の形で与え
られる。第2図で、実線は階層中のコール(呼び出し)
・ダウンを示し、破線は階層を上に向って通過する制御
情報を示している。
拡張オペレーティング・システム21は、ベース・オペレ
ーティング・システムと組合されて、新しい増強オペレ
ーティング・システムを構成することができる。換言す
ると、ベース・オペレーティング・システムと拡張オペ
レーティング・システム21間に示される論理的分離は、
ここでは存在しない。しかしながら、代替的に、拡張オ
ペレーティング・システム21を従来技術のベース・オペ
レーティング・システム20上で実行される多重タスキン
グ・アプリケーションとして与えて、それ自体で複数の
ユーザ・アプリケーション22、23、24を支援できる。
ベース・オペレーティング・システム20は、セマフォ支
援及び機能を有する多重タスキング環境を与え、拡張オ
ペレーティング・システム21を介して、処理22、23、24
に、これらが中止中であることを知らせることができ
る。この環境は又、処理及びスレッドを、夫々所有者の
主題及び実行として定義できる。処理は、部分処理とも
考えることのできる多くのスレッドを持つことができる
が、スレッドは唯一つの処理にしか所属できない。処理
及びスレッドは、この技術分野で良く知られている用語
である。
E2 要求、終了論理の一部の流れ図 第3A図乃至第3E図は、本発明の機能を与えるために、拡
張オペレーティング・システム21中に与えられる論理の
一部を示す。本発明の理解にとって重要なシステムの論
理の部分だけが、これ等の図に示されている。拡張オペ
レーティング・システムは、オブジェクトをベースとす
る環境、ウインドーイング機能、等の他の機能を与える
こともできる。しかしながら、これ等は本発明に関係な
いので、ここでは説明されない。
処理によるシステム・リソースへのアクセスを管理する
ために、本発明に従う多重処理コンピュータ・システム
はこの分野で知られているリソース・アクセス制限を使
用する。即ち、任意の一時期には、リソースには多重読
取りアクセスもしくは単一の、排他的書込みのいずれか
があるだけである。これによって、スレッドがリソース
を変更している時は、変更が終了する迄すべての他のア
クセスは禁止される。この結果、リソースにアクセスし
ているスレッドは、そのアクセス期間中はそれ自身のな
した変更以外にリソース中の何物も変更されなかったこ
とを推定することができる。この制限は第2の利点を有
する。リソースは1つの原子的命令では変更できない多
くの項目より成る。しかしながら、これ等の項目は、1
つの項目の値が他の項目の意味ある値を制限するものと
して解釈されてよいであろう。従って、第1の項目の変
更と他の項目の変更間には或る期間があり、この期間、
リソースは意味を持たず、この期間中はリソースを変更
しているもの以外は、どのスレッドもリソースを読取る
ことを許可すべきではない。
代表的な場合、この制限はリソース当りの読取りアクセ
スの現在数を大域的に(即ちすべての処理について)及
び局所的に(即ち各処理のカウントについて)トラック
し、且そのリソースに関連する読取りカウントへのアク
セスを直列化するためのセマフォを使用することによっ
て具体化されている。リソースへの書込み動作は、その
リソースのすべての読取りカウントが0である時にだけ
許可される。
要するに、4つの機能、即ち読取りアクセスの獲得、読
取りアクセスの終了、書込みアクセスの獲得、及び読取
りアクセスの終了を与える必要がある。これ等の機能に
ついては、以下詳細に説明されるが、夫々以下読取り開
始、読取り終了、書込み開始及び書込み終了と呼ぶこと
にする。これ等の機能の各々は、従来はシステム・オペ
レーティング・システムによって動作しているアプリケ
ーション・プログラムによって与えられていた。
読取り開始は、処理にリソースへの読取りアクセスを多
重タスク・オペレーティング・システム要求する機能で
あり、読取り終了は、読取り動作が完了した時に、処理
にリソースを放棄させる機能である。書込み開始及び書
込み終了は、同じく処理に、リソースへの書込みアクセ
スをオペレーティング・システムに要求させ、書込み動
作が完了した時にリソースを放棄する機能である。処理
による読取りもしくは書込み要求が許可されると、この
処理は、以下説明するように、許可が放棄される迄読取
りもしくは書込み許可を保持していると呼ばれる。リソ
ースのセマフォは読取り開始機能の終りと読取り終了機
能の開始前では“待て(保持)”状態にはなく、他の読
取りアクセスもリソースにアクセスできるが、書込み開
始動作と書込み終了動間は“待て”状態にあって、書込
み期間中の排他的アクセスが保証される。各リソースの
ための、セマフォと大域読取りカウントの両方は、その
リソースにアクセスできる任意のスレッドに利用可能で
なくてはならない。従ってこれ等はリソース自体の一部
として保持されている。しかしながら、局所読取りカウ
ントは、これが属する処理以外の処理によってアクセス
する必要はない。従って、局所読取りカウントは処理の
一部として保持される。
読取りカウントのトラッキングは、打ち切り命令に応答
して、多重タスク・オペレーティング・システムによっ
て処理が早めに中止されることがあると云う事実によっ
て複雑になる。処理の早めの打ち切りとは、その処理に
対する読取り要求もしくは現存の読取り許可が、打ち切
り時に保留されており、その結果、上述のカウントはリ
セットして、システムの完全性を保持しなければならな
いことを意味している。この状況に対処するために、従
来このアプリケーションにとっては、処理が中止する度
に、オペレーションによって呼び出すことのできる出口
処理論理と呼ばれるものを与えることが必要であった。
中止した時に、処理がリソースを使用するという要求を
出していない時には、セマフォ及びアクセス・カウント
に関する特定の処置は必要でない。処理があるアクセス
要求を行っていて、この要求がまだ処理されていない時
には、ある回復動作を遂行しなければならない。この回
復動作が、すべてのアクセス要求を元に戻し(undo)、
リソースを他の処理が使用するのに適した状態に残す
(この状態は、他の処理が使用を禁止され、メモリを占
有していない、削除された状態を考えることができる)
ことを伝統的に行ってきたアプリケーションの処理の出
口処理論理である。
処理中止の通知は、従来はオペレーティング・システム
を呼び出し、出口リストへの追加を要求する処理によっ
て達成されていた。処理がこの要求を行う時は、処理が
まさに中止されようとしている時に実行されるルーチン
のアドレスを与える。出口リストは処理が中止する時に
実行されなければならないルーチンへの入口点のリスト
であり、オペレーティング・システムによって1処理当
り1リストが保持されている。このルーチンは処理のス
レッドの任意の1つによって実行でき、実行時間がかな
り短いものでなければならない。このルーチンを実行す
るスレッドは出口リスト・プロセッサと呼ばれる。換言
すれば、従来技術では、出口リスト・プロセッサは、オ
ペレーティング・システムを使用する各処理によって与
えられていた。
出口リスト・プロセッサは、どのリソースに対してどの
ようなアクセス許可が保持されているかを識別できなけ
ればならず、読取りアクセスの場合は、どれだけの数が
保持されているかを識別できなくてはならない。ある処
理の有するいくつかのスレッドは、同じリソースに対し
て読取りアクセス許可を保有することができる。関連す
るリソースの識別は、処理ごとに、書込み許可が保持さ
れている各リソースの識別子を記録することによって達
成される。読取り許可の場合には、識別子だけでなく、
リソース当りに保持されている許可数が記録されなけれ
ばならない。これはさらに2つのリスト、1つは処理が
書込みアクセスを有するリソースの識別子のためのもの
(即ち、書込みリスト)、他は読取りアクセスが許可さ
れているリソースの識別子のためのもの(即ち、読取り
リスト)を保持することによって行われる。読取りリス
ト上の各識別子に関連して、この特定の処理によって、
このリソースに対して現在保持されている読取り許可の
数のカウントが存在する。これ等の追加のリストは、従
ってその処理によってのみアクセスできるメモリ中に保
持される。
同じ処理のすべてのスレッドは、同じデータをアクセス
できるが、これ等は単なるスタックを有する等の意味で
各々独立している。このことは、読取り及び書込みリス
トが処理のすべてのスレッドによって検索できることが
できることを意味し、従って、リストへの直列化アクセ
スの手段が使用されなければならないことを意味してい
る。この直列化を達成する1つの良く知られた方法は、
オペレーティング・システムがスレッドのための所謂
“クリティカル・セクション”を指定し、最初のスレッ
ドがクリティカル・セクションを出る迄、処理のすべて
の他のスレッドが実行できないようにするものである。
追加のセマフォを使用することによって、代替方法も使
用できる。ここではベース・オペレーティング・システ
ムがクリティカル・セクションを指定し、その限界は、
クリティカル・セクション入口及びクリティカル・セク
ション出口と呼ばれる、オペレーティング・システムの
機能によって決定される。
処理の中止に関連して、呼び出された出口リスト・プロ
セッサによって与えられる基本的な機能は、 (a)書込みリスト中で識別された各リソースのセマフ
ォを解放する、 (b)中止された読取りリスト中で識別される各リソー
スの大域読取りカウンタを、このリソースに関連する局
所読取りカウントだけデクレメントして、読取りリスト
の項目によって保持された任意のセマフォを解放するこ
とである。
従来技術で採用された、すべての予防策にもかかわら
ず、処理の中止を処理する一般的な機構は、処理が局所
読取りカウントの更新と大域読取りカウントの更新間で
異常に中止すると、傷を受けやすいことが認識される。
これ等の更新動作は、従来のシステムでは、別個の機械
命令によって遂行されているが、この結果処理の中止が
これ等の更新間で生ずることが考えられる。困難な点
は、処理がこの間で中止したかどうかを検出し、もしそ
うならば、出口処理論理によってどのような回復処置を
取るべきかを判断することである。
たとえば、読取り開始機能中に、スレッドは処理の読取
りリスト中の局所読取りカウントを修正してリソースの
大域読取りカウントをインクレメントする間に、中止で
きる。この場合、出口リスト・プロセッサが、この処理
が大域読取りカウントをインクレメントした値よりも1
だけ多くデクレメントするので、システムの完全性が失
われる。読取り終了機能を遂行する時も、この処理がリ
ソースの大域カウントを、インクレメントした値よりも
1だけ少なくデクレメントする点を除き、類似の問題が
生ずる。
出口リスト・プロセッサにとっての難点は、読取りリス
ト中に保持された読取りカウントが正しい値でなく、こ
の値分リソースの大域読取りカウントがデクレメントさ
れる場合にこの場合を識別して正しい値を決定すること
である。この問題は、従来は認識されておらず、認識さ
れていたとしても、無視されていた。従来技術でどのよ
うにして誤りが発生するかの例を、第4D図に関して後に
説明する。
本発明に従って、多重処理システムに組込まれた、この
問題への解決法を、第3A図、第3B図、第3C図、第3D図及
び第3E図を参照して説明する。
この問題への解決法は、処理の読取りリスト中の局所読
取りカウントとリソースの大域読取りカウントの予想値
を、読取り開始及び読取り終了機能の遂行中の変更の直
前に記録して、出口リスト・プロセッサに実際の値が意
図されている値と一致するかどうかをテストさせる段階
より成る。局所及び大域カウントのこれ等の予想値は夫
々のレジスタ中に記録される。レジスタは別個のハード
ウエア・レジスタでよい。しかしながら、大域カウント
のためにはM個のレジスタが、局所カウントのために必
要であるから(M個のリソース及びN個の処理が存在す
るものと仮定される)、レジスタは普通、処理及び拡張
オペレーティング・システムにアクセス可能なメモリ中
に構成できる。この技術は、この介在期間には変数は変
更できず、リソースがセマフォによってロックされてい
るので、変数は正しいと仮定している。実際値と意図値
の比較によって、差がある時は、割込み動作がインクレ
メントもしくはデクレメント動作であるかどうか、局所
読取りカウントが多過ぎるか、少な過ぎるかどうかを識
別する。出口リスト・プロセッサは従って中止された処
理によって大域カウントが何回インクレメントされた
か、従って何回デクレメントされるかを正確に判断でき
る。
以下の説明で、所定のリソースのすべての処理の読取り
許可の読取りカウントは用語“大域読取りカウント”
(第3図では“G"と省略されている)処理の読取りカウ
ント中に保持され、所与のリソースに対しこの処理によ
って保持されている読取り許可の数を示すカウントは用
語“局所読取りカウント”(第3図では“L"と省略され
ている)と呼ばれる。“一時局所”(第3図“TL)及び
“一時大域”(第3図“TG"は新しい読取りカウント値
の計算中にだけ意味を有する。この特定の例では、変数
“クリティカルID"(第3図“CID")が、どのリソース
が変更されつつあるかを識別するのに使用される。“リ
ソース識別子”(第3図“RID")はそのリソースの一意
的識別子である。以下の説明では、ただ1つの局所読取
りカウントについて言及されるが、各処理には、その処
理によってアクセスされる各リソース毎に1つの局所読
取りカウントが関連していることに注意されたい。同じ
く、唯一つの大域読み取りカウントについて説明される
が、各リソース毎に1つ当て存在する。これ等のカウン
トは、大域カウントがすべての処理によってアクセスさ
れ、局所カウントが適切な処理によってアクセスできる
ように、拡張オペレーティングによってメモリに保持さ
れる。以下、第3A、第3B、第3C、第3D図を参照して、夫
々読取り開始、読取り終了、書込み開始及び書込み終了
呼び出しの論理について説明する。以下に示す段階の番
号は図面に論理機能ボックスを識別する参照番号に対応
している。次の論理機能の各々は通常、拡散オペレーテ
ィングの部分をなし、アプリケーション処理からの呼び
出しに応答して実行可能である。コードの部分をなして
いる。
読取り開始機能を遂行する際に含まれるフェイズを以下
第3A図に関連して説明する。
(1)クリティカル・セクションに導入せよ−段階30 これはオペレーティング・システムへの呼び出しであ
り、完了すると、同じ処理からの他のスレッドをロック
・アウトする。
(2)出口リスト・ルーチンに加えよ−段階31、32 段階31のテストは、出口リスト・ルーチンが段階32で出
口リストに一度だけ加えられるようになされる。
(3)リソース識別子を読取りアクセス・リストに加え
る−段階33、34 段階33のテストは、リソース識別子が段階34中で、一度
だけ加えられるようになされる。
(4)セマフォを求めよ−段階35、36 もし、段階36中で、リソースのセマフォをアクセスする
試みに失敗したことがわかると、段階37中で局所読取り
カウントLが0でなければ(即ち、この処理によるリソ
ースの読取り動作が残っている)、段階38でリソース識
別子が読取りリストから除去され、そうでない時は、リ
ソース識別子はリスト中に保持され、次に段階39でクリ
ティカル・セクションが終了し、段階40で読取りアクセ
スを要求する試みが不成功であったことを示して、読取
り開始論理によって制御が戻される。
(5)もし段階36でリソースのセマフォをアクセスする
試みに成功すると、次の動作が行われる。
段階41:一時局所:=局所読取りカウント+X 段階42:一時大域:=大域読取りカウント+X 段階43:クリティカルID:=リソースID 段階44:局所読取りカウント:局所読取りカウント+X 段階45:大域読取りカウント:=大域読取りカウント+
X 段階46::クリティカルID:=無効 段階47:一時局所:=無効 段階48:一時局所:=無効 段階49:リソースセマフォを解放せよ 段階50:クリティカル・セクションを出よ 段階51:読取りアクセスを要求した試みが成功したこと
を示して、制御を戻せ段階41及び段階42で、局所読取り
カウントと大域読取りカウントの予想値が夫々一時メモ
リ位置、一時局所及び一時大域に記憶される。“X"のイ
ンクレメントが段階41、42(段階44及び45)に示されて
いる。画面では、“X"は“1"であるものとして示されて
いるが、遂行される読取り動作の数に依存する他の数で
もよい。段階43中で、リソースの識別子が変数クリティ
カルID中に記憶される。段階44及び45で、局所読取りカ
ウントが先ず更新され、次に大域読取りカウントが更新
される。段階46、47及び48で、クリティカルID、一時局
所及び一時大域値はリセットされる(註:ここでは示さ
れていないが、一時局所及び一時大域は既に説明したよ
うに、段階41の直前に0にリセットできる)。クリティ
カルIDの場合は、このリセット値はたとえば、0でよい
が、一時大域及び一時局所の場合には、−1でよい。段
階49で、リソースのセマフォが解放される。段階50で、
クリティカル・セクションを出て、処理の他のスレッド
に解放される。段階51で、制御は読取りアクセス要求の
試みが成功したこと(即ち問題にしているリソースのた
めの読取り許可が処理の読取りリスト上に置かれたこ
と)を示す表示とともに、元の点に戻される。
読取り開始機能が成功裡に終了すると、セマフォが解放
されているので、他の処理が読取りカウンタにアクセス
できる。このように、読取り開始機能を開始した処理
は、これが読取り終了機能を開始するか、中止される迄
読取りができる。
読取り終了機能を遂行するための段階を、以下直ちに第
3B図を参照して説明する。
(1)クリティカル・セクションに導入せよ−段階52 これはオペレーション・システムへの呼び出しであり、
完了すると同じ処理からの他のスレッドがロック・アウ
トされる。
(2)セマフォを求めよ−段階53、54 もし、段階53中のリソースセマフォをアクセスする試み
が成功しないと(段階54)、段階55でクリティカル・セ
クションが終了し、段階56で、読取り許可を放棄する試
みが失敗したことを示して読取り終了論理によって制御
が戻される。
(3)もし段階54で、リソースのセマフォをアクセスす
る試みに成功すると、次の動作が行われる。
段階57:一時局所:=局所読取りカウント−X 段階58:一時大域:=大域読取りカウント−X 段階59:クリティカルID:=リソースID 段階60:局所読取りカウント:=局所読取りカウント−
X 段階61:大域読取りカウント:=大域読取りカウント−
X 段階62:クリティカルID:=無効 段階63:一時局所:=無効 段階64:一時大域:=無効 段階65:リソースセマフォを解放せよ 段階57及び58で、局所読取カウント及び大域読取りカウ
ント予想値が、夫々一時メモリ位置、即ち一時局所及び
一時大域に記憶される。この場合も値“X"は図では1で
あるが、他の値でもよい。段階59で、リソースの識別子
が変数のクリティカルID中に記憶される。段階60で、局
所読取りカウントが先ず更新され、次に段階61で大域カ
ウントが更新される。段階62、63及び64で、クリティカ
ルID、一時局所及び一時大域が、読取り開始機能の場合
と同じように無効値にリセットされる(註:ここには示
されていないが、一時局所及び一時大域は既に説明した
とおり、段階57の直前に0にリセットできる。)段階65
で、リソースのセマフォが解放される。
(4)処理の読取りリストからリソース識別子を除去せ
よ−段階66、67 リソース識別子は、そのリソースに読取り許可がないこ
とを意味して局所読取りカウントが0ならば(段階6
6)、段階67で処理の読取りリストから除去できる。
(5)クリティカル・セクションを出て、戻れ−段階6
8、69 段階68で、クリティカル・セクションを出て、処理の他
のスレッドに解放される。段階51で、制御は読取り許可
の放棄の試みが成功したことを示す表示とともに、元の
点に戻される。
書込み開始機能を遂行する際に含まれるフエイズを以下
第3C図を参照して説明する。
(1)クリティカル・セクションに導入せよ−段階70 これは、オペレーティング・システムに対する呼び出し
であり、完了すると同じ処理の他のスレッドがロック・
アウトされる。
(2)出口リスト・ルーチンを出口リストに加えよ−段
階71、72 段階71のテストは、出口リスト・ルーチンが1度だけ段
階72で出口リストに加えられるように行われる。
(3)書込みアクセス・リストにリソース識別子を加え
よ−段階73、76 もし、段階73で、リスト識別子がすでに書込みリスト上
に存在することが確認されると、任意の一時期には、唯
一つの書込みの要求が可能であるために、現在の要求に
は応じられない。この場合は段階74でクリティカル・セ
クションを出て、段階75で制御は、書込み要求が失敗し
たという表示とともに戻される。段階73で、リソース識
別子が書込みリスト上に存在しないことが判ると、段階
76でリソース識別子がこのリストに加えられる。
(4)セマフォを求めよ−段階77,78 段階77で、リソースセマフォをアクセスする試みに失敗
すると、リソース識別子が段階79で書込みリストから除
去され、クリティカル・セクションが段階74で中止さ
れ、段階75で書込み要求が失敗したことの表示とともに
書込み開始論理によって制御が戻される。
(5)段階78で、リソースのセマフォへのアクセスの試
みに成功すると、段階80で大域読取りカウントが0であ
るかどうかのテストが行われる。
大域読取りカウントが0でない時は、少なくとも1つの
読取り許可が保留中であるので、そのリソースへの書込
みはできない。従って段階80′で、リソースセマフォが
解放され、段階79でリソース識別子が書込みリストから
除去され、段階74でクリティカル・セクションが中止さ
れ、段階75で書込み開始論理によって、書込み要求が失
敗したという表示とともに制御が戻される。
段階80で、大域読取りカウントが0であることがわかる
と、このリソースに対して保留中の読取り許可がないの
で、書込みが許可される。従って段階81でクリティカル
・セクションを出て、段階82で書込み要求が成功したこ
との表示とともに、制御が戻される。
書込み開始機能が成功裡に段階82で終了しても、セマフ
ォは解放されていないことに注意されたい。この結果、
他の処理は読取りカウンタにアクセスできない。従って
書込み開始機能を開始した処理は、これが書込み終了機
能を開始するか、もしくは中止する迄は、そのリソース
に排他的にアクセスできない。書込み終了機能を遂行す
る際 (1)クリティカル・セクションに導入せよ−段階83 これはオペレーティング・システムへの呼び出しであ
り、完了すると同一処理からの他のスレッドをロック・
アウトする。
(2)リソースのセマフォを解放せよ−段階84 (3)書込みリストからリソース識別子を除去せよ−段
階85 (4)クリティカル・セクションを出て、戻れ−段階8
6、87 段階86において、クリティカル・セクションを出て処理
のスレッドに解放される。段階86で、制御が元の点に戻
される。
次に出口リスト論理について、第3E図を参照して説明す
る。本発明の好ましい実施例では、この論理は拡張オペ
レーティング・システムの一部をなすコードの形で与え
られ、アプリケーション処理からの呼び出しに応答して
実行される。
(1)段階88で、クリティカルIDがリソース識別子の値
と異なる値、即ち無効値を有するかどうかのテストがな
される。クリティカルIDの値が無効な時は、関連する処
理はコードの傷を受けやすい領域では中止されていな
い。コードの傷を受けやすい領域とは、クリティカルID
が関連するリソースの値にセットされた、第3A図及び第
3B図に関して説明された論理中の位置間のことである。
従って、出口リスト・プロセッサは、局所及び大域読取
りカウントが正確であるから、段階89に示された通常の
出口リスト処理が遂行できる。
(2)段階88で、クリティカルIDが有効なIDであること
がわかると、カウントが正確でなくなるような、局所読
取りカウントと大域読取りカウントの更新の間で処理の
中止が生じたかどうかを示すテストが段階91で行われ
る。もし“一時大域<>大域読取りカウントで、一時局
所=局所読取りカウント”ならば、この時期に中止が生
じたこと判断される。
(3)段階91のテスト結果がNO(N)ならば、中止は局
所及び大域カウントの更新間で生ぜず、従って局所及び
大域カウントが正確であると判断される。従って出口リ
スト・プロセッサは段階89に示された通常の出口リスト
処理を行い、段階90で戻りがなされる。
(4)段階91のテストがYES(Y)ならば、局所読取り
カウントの値は一時大域と大域読取りカウントの間の差
だけデクレメントされる。第3E図でこの動作は、さらに
段階92で“一時大域>大域読取りカウント”であるかど
うかを判断することによって行われる。もし“一時大域
>大域読取りカウント”ならば、段階94で局所読取りカ
ウントは局所読取りカウント−1にされる。そうでない
時は局所読取りカウントは段階93で局所読取り+1に等
しくされる。第3E図では第3A及び第3B図に関して説明さ
れた値Xは+1にされている。
(5)段階93もしくは段階94に続いて、段階89で通常の
出口リスト処理が行われ、段階90で制御が戻される。通
常の出口リスト処理は、書込みリスト中の各リストにつ
いて、セマフォを解放し、読取りリスト中の各リソース
について、(i)中止中の処理について、大域読取りカ
ウントを局所読取りカウント分デクレメントし、(ii)
中止中の処理によって依然保持されている任意のセマフ
ォを解放する。
第3E図を参照して上述された論理によって、出口リスト
プロセッサは、クリティカルIDの値をチェックすること
によって、読取りカウントの誤った値を識別できる。も
し読取りカウントの値が無効でなければ、変数は処理が
中止を知らされた時に変更された大域読取りカウントを
有していたリソースの識別子を保持している。このよう
な場合は、スレッドは読取り開始及び読取り終了段階の
各3つの6段階の1つに達する。興味ある場合は、局所
読取りカウントは更新されたが、大域読取りカウントが
更新されていない時、即ち一時局所=局所読取りカウン
トで一時大域<>大域読取りカウントの時である。従っ
て一時大域>大域読取りカウントの時は、スレッドはカ
ウンタをインクレメントし、一時大域<大域読取りカウ
ントの時は、スレッドは読取りカウンタをデクレメント
した。従って局所カウンタはこれを大域読取りカウント
からデクレメントする前に調整できる。モし処理が中止
されたことを示す他の手段があれば、クリティカルIDを
使用する必要はない。一時局所と一時大域値のセットが
カウント自体の更新と同じ順序で行われる限り、段階91
に示したテストするに十分である。クリティカルIDを使
用する時は、一時局所及び大域値がカウント自体と同し
順序で更新されたかどうかは問題でない。段階89では、
その時に処理が実際にセマフォを保持していない処理の
ためのセマフォの解放動作は行われないことを仮定して
いる。
E3 多重処理コンピュータ・システムの動作の流れ図 第4A図乃至第4C図は、ベース・オペレーティング20、拡
張オペレーティング・システム21及び3つのアプリケー
ション22、23、24間で行われる本発明に従う多重処理コ
ンピュータ・システムの動作の流れ図である。この例で
は、唯一つのリソースに関して説明がなされる。同じく
各アプリケーション処理について、単一の大域読取りカ
ウント及び単一の局所読取りカウントについて言及され
る。実際には、各リソースに大域読取りカウントが、及
び各リソースに対し、各処理毎に、局所読取りカウント
が関連している。
(a)最初の動作は、アプリケーション1が拡張オペレ
ーティング・システムを呼び出して、リソースを作成す
ることにある。拡張オペレーティング・システムはベー
ス・オペレーティング・システムを呼び出して、リソー
スの一部を割当てさせる。割当てが終ると、制御は拡張
オペレーティング・システムを介してアプリケーション
1に戻される。
(b)アプリケーション1が他のアプリケーションに、
リソースの存在を知らせる。
(c)アプリケーション2が拡張オペレーティング・シ
ステムを呼び出して、読取りが要求を開始する。拡張オ
ペレーティング・システムは第3A図に示した論理を呼び
込んで、段階51を成功裡に完了し、ここで大域読取りカ
ウントは1に、アプリケーション2のための局所読取り
カウントは1にされる。
(d)アプリケーション3が拡張オペレーティング・シ
ステムを呼び出して、読取り要求を開始する。拡張オペ
レーティング・システムが第3A図に示した論理を呼び込
んで、段階51を成功裡に完了し、ここで大域読取りカウ
ントは2に、アプリケーション3の局所読取りカウント
は1になる。アプリケーション2の局所読取りカウント
は1に留まっている(これはアプリケーション3からは
アクセスできない)。
(e)アプリケーション2の読取り動作が正常に終了
し、第3B図に示した読取り終了論理が呼び出されて、読
取り動作を完結する。第3B図に示した論理が段階69で成
功裡に完了し、大域読取りカウントを1に、アプリケー
ション2のための局所読取りカウントを0に戻す。
(f)アプリケーション3の読取り動作が正常に終了
し、第3B図に示した読取り終了論理が読取り動作を完結
する。第3B図に示した論理が段階69で成功裡に完了し、
大域読取りカウントを0に、アプリケーション3の局所
読取りカウントを0に戻す。
第4B図は、アプリケーション2が読取り中オペレーティ
ング・システムによって、、第4A図の段階(d)及び
(e)の間で中止された点を除き、総括的には第4A図と
同じ事象のシーケンスを示す。
(a)乃至(d)第4B図のこれ等の段階は、第4A図の段
階(a)乃至(d)に対応する。
(e)アプリケーション2の読取り動作を完了する前
に、ベース・オペレーティング・システムがアプリケー
ション2を中止し、出口リスト論理が呼び出され、処理
が中止される。出口リスト論理が呼び出された段階で
は、アプリケーション2の局所読取りカウントは1にあ
り、大域読取りカウントは依然2にある。
出口リスト論理の段階88で、処理はコードのブラケット
されたセクションの外側にあるので、クリティカルIDは
無効ID値を有する。従って、通常の出口リスト処理が出
口リスト論理の段階89で遂行され、この結果、大域読取
りカウント(現在値2)はアプリケーション2の局所読
取りカウント分(現在値1)だけデクレメントされ、値
1にされる。次にアプリケーション2の局所読取りカウ
ントは0にセットできるが、処理が中止する時のこの段
階は重要ではない。
(f)第4B図のこの段階は、第4A図の段階(f)に対応
する。
第4A図に示したシーケンスの場合と同じように、段階
(f)の終了時には、リソースのための大域読取りカウ
ントは0であるが、このことはリソースが他の処理によ
って、読取り及び書込み動作の両方についてアクセスが
可能なことを意味している。
第4C図は、第4A図及び第4B図に示されたシーケンスと総
括的には似ている事象の第3のシーケンスである。しか
しながら、第4C図のシーケンスと、第4A及び第4B図のシ
ーケンスでは重要な差がある。具体的に説明すると、第
4C図のシーケンスでは、アプリケーション2は読取り終
了論理の実行中の局所及び大域読取りカウントの更新間
で中止されている。
(a)乃至(d)第4C図中のこれ等の段階は、第4A図の
段階(a)乃至(d)に対応している。
(e)アプリケーション2の読取り動作が完了すると、
第3B図中に示した読取り終了論理が示される。第3B図に
示された読取り終了論理が呼び出されて、読取り動作を
完結する。しかしながら、第3B図に示した読取り終了論
理中の段階60乃至61の実行の間で、ベース・オペレーテ
ィング・システムがアプリケーション2を中止さて、出
口リスト論理が呼び出され、処理が中止されている。出
口リスト論理が呼び出された段階では、局所読取りカウ
ントは0にあり、大域読取りカウントは依然2にある。
出口リスト論理の段階88で、クリティカルIDは有効なID
であることがわかり、このことは処理がブラケットされ
たセクションで中止されたことを意味している。段階91
で、式“一時大域<>大域読取り及び一時局所=局所読
取りカウント”が成立つかどうかが判断される。段階92
で一時大域が大域読取りカウントよりも小さいことがわ
かると、局所読取りカウントは段階94で1だけデクレメ
ントされる(即ち、局所読取りカウント:=局所読取り
カウント−1)。これ等の動作は局所読取りカウントの
値を修正し、従ってその後通常の出口リスト処理が、出
口リスト論理の段階89で遂行され、この結果、大域読取
りカウント(現在値2)が修正されたアプリケーション
2の局所読取りカウント(現在値2)だけディクレメン
トされ、1の値が残される。
(f)第4C図のこの段階は、第4A図に対応している。
第4A図及び第4B図に示したシーケンスの場合と同様にし
て、リソースの大域読取りカウントは段階(f)の終り
に0になる。このことは、他の処理が読取りもしくは書
込み動作の両方について、リソースをアクセスできるこ
とを意味している。本発明に従って、コンピュータ・シ
ステムに他の論理を付加することなく、システムは異常
な中止状態から回復できる。
E4 従来の第4C図に対応する処理 第4D図には、従来処理されていた、総括的に第4C図に対
応する事象のシーケンスを示している。第4C図との比較
を容易にするために、第4D図でも同じ形式が採用されて
いる。
(a)最初の動作で、アプリケーション1がベース・オ
ペレーティング・システムを呼び出して、リソースが作
成される。
(b)次にアプリケーション1が他のアプリケーション
にリソースの存在を知らせる。
(c)アプリケーション2がリソースの読取りアクセス
の要求のための読取り開始論理を呼び込む。この読取り
開始論理は、段階41、42、43、46、47及び48が存在しな
いことを除いて第3A図に示した読取り開始論理に総括的
に対応している。読取り開始論理が成功裡に完了して、
大域読取りカウントが1に、局所読取りアプリケーショ
ン2のための局所読取りカウントが1にされる。
(d)アプリケーション3が読取り開始論理を呼び出し
て、リソースへの読取りアクセスを要求する。この読取
り開始論理は、繰返しになるが、段階41、42、43、46、
47及び48が存在しないことを除いて、第3A図に示された
読取り開始論理に対応している。この読取り開始論理が
成功裡に完了し、大域読取りカウントは2に、アプリケ
ーション3のための局所読取りカウントは1にされる。
アプリケーション2のための局所読取りカウントは1の
ままである(このカウントはアプリケーション3によっ
てはアクセスできない)。
(e)アプリケーション2の読取り動作が完了すると、
読取り終了論理が呼び出されて、読取り動作を完結す
る。ここでの読取り終了論理は、第3B図の段階57、58、
59、62、63及び64が存在しないことを除いて第3B図の論
理に対応している。しかしながら、局所読取りカウント
及び大域読取りカウントの間(第3B図の段階60及び61に
対応する)で、オペレーティング・システムはアプリケ
ーション2を中止し、出口リスト論理が呼び込まれ、処
理が中止する。出口リスト論理が呼び込まれた段階で
は、局所読取りカウントは0であり、大域読取り論理は
依然2である。この出口リスト論理は、第3E図に示され
た段階89及び90だけから成るものと仮定している。従っ
て出口リスト論理の段階89で、通常の出口リスト処理だ
けが行われ、この結果大域読取りカウント(現在値2)
がアプリケーション2の局所読取りカウント(現在値
0)分だけデクレメントされ、2の値が残される。次に
アプリケーション2の局所読取りカウントが0にリセッ
トされる。
(f)アプリケーション3の読取り動作が完了すると、
読取り終了論理が呼び出されて読取り動作が終了する。
この読取り終了論理も、第3B図の段階57、58、59、62、
63及び64が存在しないことを除いて、第3B図のこの論理
に対応している。読取り終了論理は、アプリケーション
2のための局所読取りカウントを1だけデクレメントし
て0にし、大域読取りカウントを2から1だけデクレメ
ントして、1のカウントを残して終了する。
従って、従来技術は、読取り終了論理を出る際に、1と
いう大域読取りカウントが残され、これがリソースに留
まって、リソースへの書込みを防げる。本発明を使用し
ない場合は、処理がリソースの読取りを終了しない前に
大域読取りカウントが0にセットされる可能性がある。
このことは、この段階で書込みアクセスが不正に許容さ
れ、この結果リソースが破壊されることを意味してい
る。
以上、本発明の特定の実施例について説明されたが、こ
れには追加もしくは修正が可能なことが明らかであろ
う。たとえば、本発明は多重処理コンピュータ・システ
ムにおいて、単一の処理によってアクセス可能な局所変
数、及び複数の処理によってアクセス可能であり、局所
変数に依存する大域変数がこの順番に変更され、処理が
局所及び大域変数の更新が行われる場合に、局所及び大
域変数の予想値を、局所変数及び大域変数自体が更新さ
れる前に夫々第1及び第2のメモリ中に記憶してリソー
スの完全性を保持するのに使用できる。従って処理が中
止されても、処理が上記局所変数及び大域変数の更新間
で処理が中止されたかどうかの判断が、第1のメモリ装
置の内容と局所変数の内容を比較し、且第2のメモリ装
置の内容と、大域変数の内容を比較して行われ、必要が
あれば、これ等の値を修正するための、回復処置が行わ
れる。
F.発明の効果 本発明に従えば、異常な処理中止を効果的に処理でき
る、多重処理オペレーティング・システムが与えられ
る。
【図面の簡単な説明】
第1図は、本発明が組込まれる、コンピュータ・システ
ムのハードウェアの概略図である。 第2図は、本発明に従う多重処理システムの論理構造の
態様を示した概略ブロック図である。 第3A図乃至第3E図は、本発明の特定の実施例の論理の一
部を示した流れ図である。 第4A図乃至第4C図は、、第2図の多重処理コンピュータ
・システム中の情報の流れを示した図である。 第4D図は、従来の多重処理コンピュータ・システム中の
可能な情報の流れを示した図である。 1……マイクロプロセッサ、2……バス、3……入力装
置、4……表示装置、5……媒体、6……メモリ、7…
…ROM、8……他の出力装置、9、10、11、12、13、14
……アダプタ、20……ベース・オペレーティング・シス
テム、21……拡張オペレーティング・システム、22、2
3、24……アプリケーション1、2、3

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】複数の処理の各々が、少なくとも1つのシ
    ステム・リソースにアクセスでき、 (イ)各処理のための上記リソースへのアクセスの許可
    のカウントを保持する各処理毎の局所カウント装置と、 (ロ)すべての処理のための上記リソースへのアクセス
    の許可を保持する大域カウント装置と、 (ハ)リソースの使用を処理が要求するかもしくは放棄
    する度に、適切な局所カウント装置及び大域カウント装
    置をこの順番に更新する更新論理手段と、 (ニ)上記大域カウント装置をリセットするための装置
    を含む、処理を中止するための出口論理手段とを有する
    多重処理コンピュータ・システムであって、 (ホ)上記更新論理手段はさらに、適切な局所カウント
    装置もしくは大域カウント装置の両方が更新される前
    に、夫々第1及び第2のメモリ装置中に予想局所カウン
    ト値及び大域カウント値を記憶するための論理手段を有
    し、 (ヘ)上記出口論理装置はさらに、第1のメモリ装置の
    内容を適切な局所カウント装置の内容と比較し、第2の
    メモリ装置の内容を大域カウント装置の内容と比較し、
    比較の結果に依存して、局所カウント装置と大域カウン
    ト装置の更新間で処理が中止されたかどうかを判断する
    ための論理手段を有することを特徴とする、 多重処理コンピュータ・システム。
  2. 【請求項2】単一の処理によってアクセス可能な局所変
    数及び複数の処理によってアクセス可能であり、局所変
    数に依存する大域変数がこの順番に更新され、処理が局
    所変数と大域変数の更新間で中止される可能のある多重
    処理コンピュータ・システム中のリソースの完全性を保
    持する方法であって、 (イ)第1のメモリ装置中に局所変数の予想値を、第2
    のメモリ装置中に大域変数の予想値を記憶し、 (ロ)局所変数及び大域変数をこの順番に更新し、 (ハ)上記処理が中止された時に、該処理が局所及び大
    域変域の更新間で中止されたかどうかを、第1のメモリ
    装置の内容と局所変数の内容とを比較し、第2のメモリ
    装置の内容と大域変数の内容とを比較することによって
    決定し、もし必要ならば、回復処置を行って、変数の値
    を修正する段階を有する、 多重処理コンピュータ・システム中のリソースの完全性
    を保持する方法。
JP1211539A 1988-10-28 1989-08-18 多重処理コンピュータ・システム及び方法 Expired - Lifetime JPH0675252B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP88310187.5 1988-10-28
EP88310187A EP0365728B1 (en) 1988-10-28 1988-10-28 Resource access for a multiprocessing computer system

Publications (2)

Publication Number Publication Date
JPH0383154A JPH0383154A (ja) 1991-04-09
JPH0675252B2 true JPH0675252B2 (ja) 1994-09-21

Family

ID=8200266

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1211539A Expired - Lifetime JPH0675252B2 (ja) 1988-10-28 1989-08-18 多重処理コンピュータ・システム及び方法

Country Status (4)

Country Link
US (1) US5138713A (ja)
EP (1) EP0365728B1 (ja)
JP (1) JPH0675252B2 (ja)
DE (1) DE3886756T2 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0318935A (ja) * 1989-06-15 1991-01-28 Hitachi Ltd データリストに対するアクセスの直列化方式
GB9123264D0 (en) * 1991-11-01 1991-12-18 Int Computers Ltd Semaphone arrangement for a data processing system
EP0559222A2 (en) * 1992-03-06 1993-09-08 Microsoft Corporation Improved method for loading programs
US5375229A (en) * 1992-04-13 1994-12-20 Motorola, Inc. System and method for adding a control function to a semiconductor equipment system
US5394545A (en) * 1992-08-07 1995-02-28 International Business Machines Corporation System for determination and display of memory used, dedicated, and shared by a process at a particular time
JP2963298B2 (ja) * 1993-03-26 1999-10-18 富士通株式会社 二重化共有メモリにおける排他制御命令のリカバリ方法および計算機システム
US5586318A (en) * 1993-12-23 1996-12-17 Microsoft Corporation Method and system for managing ownership of a released synchronization mechanism
US6519623B1 (en) * 1996-10-31 2003-02-11 International Business Machines Corporation Generic semaphore for concurrent access by multiple operating systems
FI106988B (fi) * 1997-05-16 2001-05-15 Nokia Networks Oy Palveluriippumattomien rakenneosien toteutus
DE19728971C2 (de) * 1997-07-07 2003-10-09 Bosch Gmbh Robert Datenverarbeitungsvorrichtung und -verfahren
US6785888B1 (en) * 1997-08-29 2004-08-31 International Business Machines Corporation Memory allocator for a multiprocessor computer system
JP2002520686A (ja) * 1998-07-03 2002-07-09 シーメンス アクチエンゲゼルシヤフト 全体プロセスに対する制御を設計するための方法および装置
US6366946B1 (en) * 1998-12-16 2002-04-02 Microsoft Corporation Critical code processing management
GB0002174D0 (en) 2000-01-31 2000-03-22 Sgs Thomson Microelectronics Design flow checker
US6430659B1 (en) * 2000-09-22 2002-08-06 International Business Machines Corporation Method and means for increasing performance of multiprocessor computer systems by reducing accesses to global memory locations through the use of quanta
DE10056046A1 (de) * 2000-11-11 2002-05-23 Bosch Gmbh Robert Verfahren zur Realisierung einer Intertask-Kommunikation in einem Multitasking-Betriebssystem
US6966062B2 (en) * 2001-04-20 2005-11-15 International Business Machines Corporation Method and apparatus for allocating use of an access device between host and guest operating systems
US10834109B2 (en) 2014-12-23 2020-11-10 Mcafee, Llc Determining a reputation for a process
CN109783230A (zh) * 2018-12-17 2019-05-21 平安普惠企业管理有限公司 基于信号量的流量控制方法、装置、计算机设备和存储介质
US11048549B2 (en) * 2019-04-04 2021-06-29 Google Llc Transferral of process state and/or components in computing environments

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS605024B2 (ja) * 1979-09-04 1985-02-07 ファナック株式会社 情報処理方式
US4819154A (en) * 1982-12-09 1989-04-04 Sequoia Systems, Inc. Memory back up system with one cache memory and two physically separated main memories
US4658351A (en) * 1984-10-09 1987-04-14 Wang Laboratories, Inc. Task control means for a multi-tasking data processing system
US4860228A (en) * 1987-02-24 1989-08-22 Motorola, Inc. Non-volatile memory incremental counting system
US4922456A (en) * 1988-04-29 1990-05-01 Scientific-Atlanta, Inc. Method of reducing wearout in a non-volatile memory with double buffer

Also Published As

Publication number Publication date
EP0365728B1 (en) 1993-12-29
DE3886756D1 (de) 1994-02-10
EP0365728A1 (en) 1990-05-02
JPH0383154A (ja) 1991-04-09
DE3886756T2 (de) 1994-06-23
US5138713A (en) 1992-08-11

Similar Documents

Publication Publication Date Title
JPH0675252B2 (ja) 多重処理コンピュータ・システム及び方法
US4949251A (en) Exactly-once semantics in a TP queuing system
US8209692B2 (en) Deallocation of computer data in a multithreaded computer
JP3054775B2 (ja) コンピュータシステム、および多重プロセッサシステム最小単位動作の実行方法
US7720891B2 (en) Synchronized objects for software transactional memory
US8140497B2 (en) System and method for implementing nonblocking zero-indirection transactional memory
US8468526B2 (en) Concurrent thread execution using user-level asynchronous signaling
US5742785A (en) Posting multiple reservations with a conditional store atomic operations in a multiprocessing environment
US5579505A (en) Memory access system and method for granting or preventing atomic or nonatomic memory access requests to shared memory regions
US20020138483A1 (en) Selective pessimistic locking for a concurrently updateable database
US5893157A (en) Blocking symbol control in a computer system to serialize accessing a data resource by simultaneous processor requests
US20020161954A1 (en) Locking of computer resources
KR101063604B1 (ko) 멀티프로세서 시스템 상에서 멀티스레드 프로그램으로부터의 메모리 액세스를 관리하기 위한 방법 및 시스템
JPH0533410B2 (ja)
WO1996029650A1 (en) Computer backup system operable with open files
JPH07120299B2 (ja) マルチプロセッサシステムの試験方法
JP2005063435A (ja) ソフトウェアフォールトを封じ込める方法およびシステム
JP4196414B2 (ja) コンピュータリソースのロック処理
US20130014123A1 (en) Determination of running status of logical processor
JP2002157132A (ja) コンピュータ、その制御方法及びその制御方法を記録した記録媒体
EP0297895B1 (en) Apparatus and method using lockout for synchronization of access to main memory signal groups in a multiprocessor data processing system
JPH04127261A (ja) マルチプロセッサシステム
JP2024016681A (ja) 演算処理装置及び演算処理方法
JPH0391055A (ja) ハードウエアロックのセット方法、ハードウエアロック制御装置、ハードウエアロックの検出方法と装置
WO1988007720A1 (en) Dynamically assignable shared register sets