JPH036654A - 相互排除方式 - Google Patents

相互排除方式

Info

Publication number
JPH036654A
JPH036654A JP13928489A JP13928489A JPH036654A JP H036654 A JPH036654 A JP H036654A JP 13928489 A JP13928489 A JP 13928489A JP 13928489 A JP13928489 A JP 13928489A JP H036654 A JPH036654 A JP H036654A
Authority
JP
Japan
Prior art keywords
mutual exclusion
processor
execution
semaphore
waiting
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
JP13928489A
Other languages
English (en)
Inventor
Naohisa Takahashi
直久 高橋
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.)
NTT Inc
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP13928489A priority Critical patent/JPH036654A/ja
Publication of JPH036654A publication Critical patent/JPH036654A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔発明の目的〕 (産業上の利用分野) 本発明は、マルチプロセッサシステムにおける共有資源
に対する相互排除方式に関する。
(従来の技術) マルチプロセッサシステムにおける共有資源に対する相
互排除の基本方式として、スピンロック方式、および、
2値セマフォ方式がある。以下に各方式の構成と欠点を
述べる。
(a)スピン口・ジク方式 (a−1)スピンロック方式の構成 第1図は、スピンロック方式を用いた相互排除を行なう
システムの構成例である。プロセッサ1゜2および、主
記憶装置3は一つのシステムバス4に接続されている。
各プロセッサは、主記憶装置3に格納された任意のデー
タの読みだし、書き込み、および、任意のプログラムの
実行が可能である。図に示すように、主記憶装置3には
、鍵、きわどい部分、1ock操作、un 1 ock
操作のプログラム等が格納される。きわどい部分とは、
一時には一つのプロセスしか実行することのできないプ
ログラムをさし、相互排除の対象である。
鍵の値は、1または0であり、「きわどい部分」の実行
権を所有するプロセスが存在しているか否かを示す。1
ock操作とunlock操作は、「きわどい部分」に
対する相互排除を行なうプログラムである。
第2図は、1 ock操作とun 1ock操作を用い
て相互排除を行なう操作手順である。複数のプロセスが
同時に1ock操作を実行した場合には、以下に述べる
1ock操作の機能により、ただ一つのプロセスが「き
わどい部分」を実行できる。このプロセスがunloc
k操作を行なうまで、他のプロセスは「きわどい部分」
に入れずに空転して待つ。
第3図は、1ock操作の実現例である。1Ock操作
は、次の手順で行なわれる。
■鍵を読み出す。読み出した値をXとする。次に鍵を1
にする。ここで、鍵に対する読み出し・書き込みはte
s t−and−set命令など、メモリの読み出しと
書き込みが細分化されない基本演算により行なわれる。
■XがOの場合には、1ock操作を終了する。
そうでない場合には、■に行き空転する。
第4図は、unlock操作の実現例である。
unlock操作は、鍵に0を書き込む。uniock
操作で鍵に0を書き込むと、上記1ock操作で空転し
ていたプロセスが0を鍵の値として読み出し、1ock
操作を終了して「きわどい部分」に入ることができるよ
うになる。
(a−2)スピンロック方式の欠点 プロセスが空転して鍵の状態を調べ、鍵がOになるまで
待っているので、「きわどい部分」のプログラムに対し
て次のような制約が課せられる。
・短いプログラムであること ・割り込み禁止状態にするなどして、「きわどい部分」
の実行途中でプロセッサを取り上げられないようにする
こと。
・入出力など待ち状態になる操作は行なわないこと。
・誤りを起こして例外処理プログラムにプロセッサを取
り上げられないこと。
上記の制約のため、スピンロック方式は、OSカーネル
など限られたプログラムの相互排除に用いられるのが一
般的であり、通常のユーザプログラムには適していない
という欠点があった。すなわち、ユーザプログラムでス
ピンロック方式を用いた場合には、次のような問題が生
じる。
■バグのため「きわどい部分」から出ないで割り込み禁
止状態を長時間作り出す可能性がある。
■1ock操作は「きわどい部分」の実行権を所有する
プロセスの状態変化を検出する機能を備えていない。こ
のため、「きわどい部分」の実行権を所有するプロセス
が待ち状態に入ったりプロセッサを取り上げられた場合
に、空転を続けるプロセスを実行するプロセッサは、そ
のまま空転を続けて多大に無駄な時間を費やす。
■1ock操作の使い方に関する簡単な誤りをおかすだ
けで容易にデッドロックに陥ってしまう。
しかし、1ock操作は、「きわどい部分」の実行権を
どのプロセスが所有しているか調べる機能を備えていな
いので、簡単なプログラム誤りが原因で「きわどい部分
」の実行権を決して得ることができないのに待っている
状態を検出し適切な処理を行なわせることができない。
■ユーザプロセスはプロセッサを取り上げられてもよい
状態でできる限り実行させたいというO8の一般的な目
標と相反する。
(b)2値セマフォ方式 (b−1)2値セマフォ方式の構成 第5図は、2値セマフォ方式を用いた相互排除を行なう
システムの構成例である。プロセッサ1゜2および、主
記憶装置3は一つのシステムバス4に接続されている。
各プロセッサは、主記憶装置3に格納された任意のデー
タの読みだし、書き込み、および、任意のプログラムの
実行が可能である。図に示すように、主記憶装置3には
、前記きわどい部分の他、セマフォS、セマフォSの待
ちプロセス行列、プロセッサ待ちプロセス行列、P操作
、■操作、プロセス切り替えプログラムが格納される。
きわどい部分は、前述したように一時には一つのプロセ
スしか実行することのできないプログラムであり、相互
排除の対象である。セマフォSは、0または1をとり、
それぞれ「きわどい部分」が使用中である、あるいは、
空いていることを表わす。セマフォSの待ちプロセス行
列は、「きわどい部分」の使用が終わるのを待っている
プロセスを整列させたO8の制御データである。
プロセッサ待ち行列は、プロセッサを割り付けると直ち
に実行可能なプロセスを整列させたO8の制御データで
ある。P操作とV操作は、「きわどい部分」に対する相
互排除を行なうプログラムである。
第6図は、P操作とV操作を用いて相互排除を行なう操
作手順である。複数のプロセスが同時にP操作を実行し
た場合には、以下に述べるP操作の機能により、ただ一
つのプロセスが「きわどい部分」を実行できる。このプ
ロセスがV操作を行なうまで、他のプロセスはセマフォ
Sの待ちプロセス行列で待たされる。
第7図は、P操作の実現例である。P操作は、次の手順
で行なわれる。
■セマフォSを読み出す。読み出した値をoldとする
。次にoldが1の場合には、Sを1減じて0にする。
ここで、セマフォに対する読み出しと書き込みはプロセ
スからは細分化されない基本演算として見えるものであ
る。
■oldが1の場合には、P操作を終了する。そうでな
い場合には、P操作を実行中のプロセスをセマフォ待ち
プロセス行列の最後尾に加え、プロセス切り替えプログ
ラムに制御を移す。
第8図は、■操作の実現例である。■操作は、セマフォ
待ちプロセス行列が空か調べ、空ならばセマフォSに1
を書き込み、操作を終了する。空でないならば、セマフ
ォSの待ち行列から先頭のプロセスを取り出し、プロセ
ッサ待ちプロセス行列の先頭に入れ、操作を終了する。
適当な時間経過の後、プロセス切り替えプログラムが実
行されると、プロセッサ待ちプロセス行列からプロセス
が取り出され、P操作の終了時点から処理を再開して、
「きわどい部分」を実行する。
(b−2)2値セマフォ方式の欠点 2値セマフォ方式では、複数のプロセスが同一の「きわ
どい部分」を実行しようとした場合に、P操作で1を減
じられなかったすべてのプロセスについて次のような操
作が行なわれ、相互排除においてプロセス切り替えが頻
繁に生じるという欠点がある。
・P操作の度にプロセスをセマフォSの待ちプロセス行
列に入れ、プロセス切り替えを行なつO ・V操作の度にセマフォSの待ちプロセス行列からプロ
セッサ割り付は待ちプロセス行列にプロセスを移す。■
操作の後に、プロセス切り替えが発生する。
上記操作に要する処理量はスピンロック方式での相互排
除に要する処理量に比べ極めて大きく、かつ、上記操作
は「きわどい部分」の実行権を所有するプロセスが既に
存在する場合には必須であるので、プロセスの処理で大
きなオーバヘッドとして現われるという欠点がある。特
に、2値セマフォ方式は、処理量の小さなプロセスが頻
繁に「きわどい部分」を実行するシステムでは、プロセ
ス全体の処理において相互排除のためのオーバヘッドが
占める割合が著しく大きくなるという欠点がある。また
、P操作は、「きわどい部分」の実行権を所有するプロ
セスの状態を読み出す機能を備えていないので、該実行
権の所有関係により生じるデッドロックなどの誤りを検
出し適切に処理することができないという欠点がある。
(発明が解決しようとする課題) 本発明において解決しようとする課題は、スピンロック
方式における「きわどい部分」のプログラムに課せられ
た制約が大きいのでユーザプログラムの相互排除に適さ
ないという欠点、および、2値セマフォ方式における相
互排除のためにプロセスが頻繁に切り替わることによる
オーバヘッドが大きいという欠点、および、両方式にお
いて相互排除手段が「きわどい部分」の実行権を所有す
るプロセスの状態を読み出す機能を備えていないので相
互排除に係わるプログラムの誤りを検出して処理するこ
とができないという欠点であり、これら欠点を解消し、
処理量の小さなユーザプロセスが頻繁に「きわどい部分
」を実行するシステムにおいて効率的な相互排除方式を
提供することが本発明の目的である。
〔発明の構成〕
(課題を解決するための手段) 本発明は、「きわどい部分」の実行権を所有するプロセ
スの実行状態を読み出す機能、および、実行権を新たに
得ることができない状態であることを検出する機能、お
よび、実行権を得るために待っているプロセスの実行を
制御する機能を相互排除手段に備えさせることにより、
「きわどい部分」の実行権を所有するプロセスの状態に
従って、その実行権を得るために待っているプロセスに
対して、プロセッサを割り付けたまま待たせる、あるい
は、プロセッサを取り上げる、あるいは、誤り処理を行
なわせるように実行を制御して相互排除することを最も
主要な特徴とする。
(作用) 前述した本発明の相互排除方式によれば、「きわどい部
分」の実行権を所有するプロセスの状態に従ってプロセ
スを待たせる方法を選択的に定め、プロセス切り替え、
および、誤り処理を選択的に行なうことになる。
(実施例) 以下、図面を使って本発明の一実施例を詳細に説明する
第9図は、本発明の一実施例のシステム構成図である。
プロセッサ1.2および、主記憶装置3は一つのシステ
ムバス4に接続されている。各プロセッサは、主記憶装
置3に格納された任意のデータの読みだし、書き込み、
および、任意のプログラムの実行が可能である。図に示
すように、主記憶装置3には、プロセス制御ブロック、
プロセッサ待ちプロセス行列、鍵、きわどい部分、入口
操作、出口操作、例外処理プログラム、プロセス切り替
えプログラムが格納される。
プロセス制御ブロック(PCB)は、O8によりプロセ
スごとに作られる制御データであり、プロセスの実行状
態やプロセスへの資源の割り付は状況などが書き込まれ
る。プロセッサ待ちプロセス行列は、プロセッサを割り
付けると直ちに実行可能なプロセスのPCBを整列させ
たO8の制御データである。鍵は、PCBアドレスとロ
ック変数からなる。PCBアドレスには、「きわどい部
分」の実行権を所有しているプロセスのPCBの先頭ア
ドレス、または、0が格納されている。ロック変数は「
きわどい部分」の実行権を所有するプロセスが存在する
か否かを示す。きわどい部分は、一時には一つのプロセ
スしか実行することのできないプログラムであり、相互
排除の対象である。入口操作と出口操作は、「きわどい
部分」に対する相互排除を行なうプログラムである。例
外処理プログラムは、相互排除に関する誤りを処理する
プログラムであり、プロセス切り替えプログラムはプロ
セッサをプロセスに割り付けるプログラムである。
第10図は、入口操作と出口操作を用いて相互排除を行
なう操作手順である。複数のプロセスが同時に人口操作
を実行した場合には、以下に述べる人口操作の機能によ
り、ただ一つのプロセスが「きわどい部分」を実行でき
る。このプロセスが出口操作を行なうまで、他のプロセ
スは「きわどい部分」に入ることができない。
第11図は、入口操作の一実施例である。第11図に従
って、入口操作の実現例を以下に詳細に述べる。鍵のP
CBアドレスとロック変数の初期値を0とし、入口操作
を実行しているプロセスをプロセスAとする。
■鍵のPCBアドレスを読み出す。読み出した値をaと
する。aがOの場合には、■に行く。aがプロセスA(
自プロセス)のPCBの先頭アドレスの場合には、プロ
セスAのプログラムに誤りがあり、「きわどい部分」の
実行権を新たに得ることができないことを意味するので
、例外処理プログラムに制御を移す。その他の場合には
、■に行く。
■鍵のロック変数を読み出す。読み出した値をXとする
。次に鍵のロック変数を1にする。ここで、ロック変数
に対する読み出し・書き込みはtest−and−se
t命令などにより不可分演算によりなされるものである
。Xが0の場合には、入口操作を実行中のプロセスのP
CBの先頭アドレスを鍵のPCBアドレスに書き込み、
入口操作を終了する。Xが0でない場合には、■に行く
■aを先頭アドレスとするプロセス制御ブロックからプ
ロセスの状態フィールドSを読み出す。プロセスが実行
中であることをSの値が示している場合には、■に行く
。Sの値が、プロセスが終了していることを示している
場合には、「きわどい部分」の実行権は決して返されな
いことを意味するので、例外処理プログラムに制御を移
す。その他の場合には、プロセッサ待ちプロセス行列の
最後尾にプロセスAのPCBを入れ、プロセス切り替え
プログラムに制御を移す。
第12図は、出口操作の一実現例である。出口操作では
、まず、鍵のPCBアドレスを0にし、次に鍵のロック
変数を0にする。
〔発明の効果〕
以上説明したように、本発明は、「きわどい部分」の実
行権を所有するプロセスの実行状態を読み出す機能、お
よび、実行権を新たに得ることができない状態であるこ
とを検出する機能、および、実行権を得るために待って
いるプロセスの実行を制御する機能を相互排除手段に備
えさせているので、「きわどい部分」の実行権を所有す
るプロセスの状態に従って、その実行権を得るために待
っているプロセスに対して、プロセッサを割り付けたま
ま待たせる、あるいは、プロセッサを取り上げる、ある
いは、誤りを検出して例外処理を行なわせるように実行
を制御し、処理量の小さなユザプロセスが頻繁に「きわ
どい部分」を実行するシステムにおいて効率的な相互排
除の制御を実現することができる。
さらに、本発明の相互排除方式において、「きわどい部
分」の実行権を所有するプロセスが実行状態にあるとき
、他のプロセスが空転して待つ手順の中にメモリへの書
き込み命令が存在しないという特徴がある。このことは
、キャシュを備えたメモリ共有型マルチプロセッサの場
合、前記の状態では、キャシュメモリ内のデータを参照
するだけであり、主記憶装置へのアクセスあるいは他の
プロセッサのキャシュへのデータ転送が生じないことを
意味し、空転のために他のプロセッサの性能を劣化させ
ないという利点がある。
【図面の簡単な説明】
第1図から第4図は従来の相互排除技術であるスピンロ
ック方式に関する図面であり、第1図はスピンロック方
式の実施例のシステム構成図、第2図は1ock操作と
unlock操作を用いて相互排除する操作手順のフロ
ーチャート、第3図は1ock操作の詳細手順のフロー
チャート、第4図はunlock操作の詳細手順のフロ
ーチャートである。 第5図から第8図は従来の相互排除技術である2値セマ
フォ方式に関する図面であり、第5図は2値セマフォ方
式の実施例のシステム構成図、第6図はP操作とV操作
を用いて相互排除する操作手順のフローチャート、第7
図はP操作の詳細手順のフローチャート、第8図はV操
作の詳細手順のフローチャートである。 第9図から第12図は本発明の実施例に関する図面であ
り、第9図は本発明の一実施例のシステム構成図、第1
0図は本発明の相互排除手段である入口操作と出口操作
を用いて相互排除する操作手順のフローチャート、第1
1図は入口操作の詳細手順のフローチャート、第12図
は出口操作の詳細手順のフローチャートである。

Claims (1)

    【特許請求の範囲】
  1. 異なるプロセッサ上で動作する複数のプロセスが資源を
    共有する手段と、一時にはただ一つのプロセスでしか使
    用できない部分(きわどい部分と呼ぶ)の実行を開始す
    る権利(実行権と呼ぶ)を相互に排除する手段とを有す
    るマルチプロセッサシステムにおいて、前記相互排除手
    段は、実行権を所有するプロセスの実行状態を読み出す
    機能と、実行権を新たに得ることができない状態である
    ことを検出する機能と、実行権を得るために待っている
    プロセスの実行を制御する機能とを有し、「きわどい部
    分」の実行権を持つプロセスの状態に従って、その実行
    権を得るために待っているプロセスに対して、プロセッ
    サを割り付けたまま待たせる、あるいは、プロセッサを
    取り上げる、あるいは、誤り処理を行なわせるように実
    行を制御することを特徴とした相互排除方式。
JP13928489A 1989-06-02 1989-06-02 相互排除方式 Pending JPH036654A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP13928489A JPH036654A (ja) 1989-06-02 1989-06-02 相互排除方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP13928489A JPH036654A (ja) 1989-06-02 1989-06-02 相互排除方式

Publications (1)

Publication Number Publication Date
JPH036654A true JPH036654A (ja) 1991-01-14

Family

ID=15241700

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13928489A Pending JPH036654A (ja) 1989-06-02 1989-06-02 相互排除方式

Country Status (1)

Country Link
JP (1) JPH036654A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007081029A1 (ja) * 2006-01-16 2007-07-19 Seiko Epson Corporation マルチプロセッサシステム及びマルチプロセッサシステムの割込み制御方法をコンピュータに実行させるためのプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007081029A1 (ja) * 2006-01-16 2007-07-19 Seiko Epson Corporation マルチプロセッサシステム及びマルチプロセッサシステムの割込み制御方法をコンピュータに実行させるためのプログラム
US7877753B2 (en) 2006-01-16 2011-01-25 Seiko Epson Corporation Multi-processor system and program for causing computer to execute controlling method of interruption of multi-processor system

Similar Documents

Publication Publication Date Title
JP4759273B2 (ja) データ処理装置及び共用資源へのアクセス制御方法
US5502840A (en) Method and apparatus for advising a requesting process of a contention scheme to employ to access a shared resource
EP0086601B1 (en) Multiprocessor system having mutual exclusion control function
US7653791B2 (en) Realtime-safe read copy update with per-processor read/write locks
US8020160B2 (en) User-level read-copy update that does not require disabling preemption or signal handling
US6785887B2 (en) Technique for using shared resources on a multi-threaded processor
US6792497B1 (en) System and method for hardware assisted spinlock
JPH0120466B2 (ja)
JPH0318935A (ja) データリストに対するアクセスの直列化方式
JPH01298440A (ja) 計算機システムおよびそのタスクスケジュール方法
Jayanti Adaptive and efficient abortable mutual exclusion
EP0230350B1 (en) Protection of data in a multiprogramming data processing system
US5708808A (en) Method and apparatus for concurrency with critical regions
EP1197857A2 (en) Method of controlling a computer
JPH036654A (ja) 相互排除方式
JPS6321941B2 (ja)
JPH01297760A (ja) タスク制御方式及びオンライン・トランザクション・システム
Dhoked Synchronization and Fault Tolerance Techniques in Concurrent Shared Memory Systems
EP1262870A1 (en) Use of an atomic swap instruction for a shared queue
CN113961364A (zh) 一种大规模锁系统实现方法、装置、存储介质和服务器
JP3422504B2 (ja) タスク間排他制御方法
JPH04343143A (ja) マルチプロセッサシステムにおける共有資源相互排除方式
JPH02171952A (ja) マルチプロセッサにおけるディスパッチ方式
JPH01195542A (ja) マルチプログラミング処理装置
Dhoked et al. Memory Reclamation for Recoverable Mutual Exclusion