JPH09319601A - セマフォに関するプロセス制御方法 - Google Patents

セマフォに関するプロセス制御方法

Info

Publication number
JPH09319601A
JPH09319601A JP15761696A JP15761696A JPH09319601A JP H09319601 A JPH09319601 A JP H09319601A JP 15761696 A JP15761696 A JP 15761696A JP 15761696 A JP15761696 A JP 15761696A JP H09319601 A JPH09319601 A JP H09319601A
Authority
JP
Japan
Prior art keywords
semaphore
queue
link
unused
links
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.)
Granted
Application number
JP15761696A
Other languages
English (en)
Other versions
JP2861943B2 (ja
Inventor
Kazuhiro Mori
一浩 森
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP15761696A priority Critical patent/JP2861943B2/ja
Publication of JPH09319601A publication Critical patent/JPH09319601A/ja
Application granted granted Critical
Publication of JP2861943B2 publication Critical patent/JP2861943B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 未使用状態のプロセスリンクの待ち行列のロ
ック取得による競合を減らして、ロック取得待ち時間を
低減し、性能低下を防ぐ。 【解決手段】 セマフォを介してプロセスの同期をとる
OSを有するマルチプロセッサシステムにおいて、セマ
フォ15-2の生成時に、複数のプロセッサ40-1,40-2 で共
有している未使用状態のプロセスリンクの待ち行列3か
ら幾つかの未使用状態のプロセスリンクを取り出し、セ
マフォ15-2で専用に使用する未使用状態のプロセスリン
クの待ち行列9-2 につなげておく。セマフォ15-2に対し
てP命令を発行したプロセス20を当該セマフォ15-2で待
機中にする場合、セマフォ15-2で専用に使用する未使用
状態のプロセスリンクの待ち行列9-2 から未使用状態の
プロセスリンク103 を1つ取り出し、この取り出したプ
ロセスリンク103 にプロセス20の名前を設定して、セマ
フォ15-2を介して事象を待っているプロセスの待ち行列
4-2 につなぐ。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はセマフォに関するプ
ロセス制御方法に関し、特にセマフォを介してプロセス
の同期や排他制御を行うオペレーティング・システムを
有するマルチプロセッサシステムに好適な制御方法に関
する。
【0002】
【従来の技術】一般に計算機のソフトウェアシステム
は、互いにほとんど独立に動く多数のプロセスの集まり
として実現される。しかし、他のプロセスに仕事を依頼
する場合や、複数のプロセスが逐次再使用可能な資源を
共用する場合には、相互に連絡を取り合う必要がある。
そこで、計算機では、プロセス間の連絡に関する基本的
な機能と共に、その機能を各プロセスが使えるような同
期基本命令を提供しており、その一種に、セマフォとそ
れを使用したP命令,V命令がある。
【0003】図11は従来のプロセス制御方法で使用さ
れるセマフォとセグメントの構成を示す。セマフォ5は
主記憶上にあり、図13に示すように、負の値もとりう
るセマフォカウンタSCTと、このセマフォ5を介して
事象を待っているプロセスの待ち行列の先頭アドレスP
QHPとを含んでいる。なお、一般にセマフォカウンタ
SCTの初期値が0の場合はプロセス間の同期に使用さ
れ、正の場合は共用資源の排他制御に使用される。
【0004】セグメント1も主記憶上にあり、複数(図
11の例では9個)のプロセスリンク6と2つのポイン
タ7,8とが格納されている。各々のプロセスリンク6
は、図12に示すようにプロセス名と他のプロセスリン
クとの連結用のリンクアドレスとを格納する。従来のプ
ロセス制御方法では、各々のプロセスリンク6は以下の
3種類の待ち行列の何れかにつなげられて管理される。
【0005】複数のプロセッサで共有している未使用
状態のプロセスリンクの待ち行列(Q/PL/FLSと
も言う) セマフォを介して事象を待っているプロセスの待ち行
列(Q/PR/Sとも言う) 実行可能状態のプロセスの待ち行列(Q/PR/RD
Yとも言う)
【0006】即ち、初期の状態においては全てのプロセ
スリンク6は未使用状態であるため、それらのリンクア
ドレスによって一つなぎに連結されての待ち行列で管
理され、この待ち行列の先頭のプロセスリンクのアドレ
スをセグメント1のポインタ7が指し示す。また、セマ
フォを介して事象を待つプロセスが出現すると、そのプ
ロセスのために未使用状態のプロセスリンクがの待ち
行列から1つ取り出され、このプロセスリンクにそのプ
ロセスのプロセス名等が設定されて、の待ち行列につ
ながれ、この待ち行列の先頭のプロセスリンクのアドレ
スをセマフォ5の先頭アドレスPQHPが指し示す。さ
らに、セマフォで事象を待っていたプロセスが実行可能
状態に遷移すると、の待ち行列からそのプロセスのプ
ロセスリンクが取り出されて、の待ち行列につなが
れ、この待ち行列の先頭のプロセスリンクのアドレスを
セグメント1のポインタ8が指し示す。そして、実行可
能状態のプロセスが実行状態に遷移するのに伴って、そ
のプロセスが使用していたプロセスリンクが未使用状態
になると、の待ち行列に戻される。
【0007】図11の例では、9個のプロセスリンク6
のうち、4個のプロセスリンクが使用中であり、そのう
ちの1個のプロセスリンクは、セマフォ5を介して事象
を待っているプロセスの待ち行列4につなげられてお
り、3個のプロセスリンクは、実行可能状態のプロセス
の待ち行列2につなげられている。そして、残り5個の
未使用状態のプロセスリンクは、未使用状態のプロセス
リンクの待ち行列3につなげられている。
【0008】図14はセマフォに対するP命令実行の従
来の処理の流れを示す。P命令は引数としてセマフォを
一意に識別し得る識別子であるセマフォ番号(セマフォ
名)をもつ。実行中の或るプロセスからセマフォ5のセ
マフォ番号を引数としてP命令が発行されると、プロセ
ッサのハードウェアやファームウェア(以下、単にファ
ームウェアと称す)は、セマフォ5のロックを取得し
(A−1)、セマフォ5のセマフォカウンタSCTの値
から1を減じ(A−2)、その値が負であるか否かを調
べる(A−3)。
【0009】セマフォカウンタSCTの値が負であれ
ば、P命令を発行したプロセスを待機状態とすべく、プ
ロセッサのファームウェアは、未使用状態のプロセスリ
ンクの待ち行列3のロックを取得してこの待ち行列3か
ら未使用状態のプロセスリンクを1つ取り出し(A−
4)、現在実行中のプロセス(P命令を発行したプロセ
ス)を閉塞し、上記未使用状態のプロセスリンクにその
プロセスのプロセス名等の情報を書き込んでセマフォ5
を介して事象を待っているプロセスの待ち行列4につな
げた後、未使用状態のプロセスリンクの待ち行列3のア
ンロックを行う(A−5)。そして、セマフォ5のアン
ロックを行い(A−6)、命令を終了する。その後にデ
ィスパッチャに制御を移し、後述するように実行可能状
態のプロセスの待ち行列2から実行待ちのプロセスを取
り出し実行する。
【0010】他方、セマフォカウンタSCTの値が負で
ない場合(0以上の場合)、セマフォ5のアンロックを
行い、命令を終了して、そのままそのプロセスの処理を
継続する(A−7)。
【0011】図15にセマフォに対するV命令実行の従
来の処理の流れを示す。V命令も引数としてセマフォ番
号をもつ。実行中の或るプロセスからセマフォ5のセマ
フォ番号を引数としてV命令が発行されると、プロセッ
サのファームウェアは、セマフォ5のロックを取得し
(B−1)、セマフォ5のセマフォカウンタSCTの値
に1を加え(B−2)、その値が正であるか否かを調べ
る(B−3)。
【0012】セマフォカウンタSCTの値が正であれ
ば、セマフォ5のアンロックを行って、命令を終了し、
そのままそのプロセスの処理を継続する(B−6)。
【0013】他方、セマフォカウンタSCTの値が正で
なければ(0以下であれば)、セマフォ5を介して事象
を待っているプロセスの待ち行列4の中から1つのプロ
セスリンクを取り出し、実行可能状態のプロセスの待ち
行列2のロックを取得し、前記取り出したプロセスリン
クを実行可能状態のプロセスの待ち行列2につなげて当
該プロセスリンクにかかるプロセスを実行可能状態と
し、実行可能状態のプロセスの待ち行列2のアンロック
を行う(B−4)。そして、セマフォ5のアンロックを
行い(B−5)、命令を終了し、ディスパッチャへ制御
を移す。
【0014】図16はディスパッチャによりプロセスが
実行可能状態のプロセスの待ち行列2から実行状態に遷
移する場合の従来の処理の流れの一部を示す。まず、実
行可能状態のプロセスの待ち行列2と未使用状態のプロ
セスリンクの待ち行列3のロックを取得し(C−1)、
実行可能状態のプロセスの待ち行列2から実行状態に遷
移するプロセスのプロセスリンクを取り外し、プロセス
の情報をプロセッサに取り込んだ後、未使用状態になっ
たプロセスリンクを未使用状態のプロセスリンクの待ち
行列3につなげる(C−2)。そして、実行可能状態の
プロセスの待ち行列2及び未使用状態のプロセスリンク
の待ち行列3をアンロックする(C−3)。
【0015】ここで、複数のプロセッサが存在するマル
チプロセッサシステムの場合、実行可能状態のプロセス
の待ち行列2,未使用状態のプロセスリンクの待ち行列
3およびセマフォ5は複数のプロセッサから同時にアク
セスされる可能性があるため、プロセスの状態遷移のた
めにプロセスリンクを操作する際には、上述したように
該当する待ち行列及びセマフォのロックを取得し排他的
にプロセスリンクを操作する必要がある。
【0016】
【発明が解決しようとする課題】セマフォに関するプロ
セス制御に関し従来は上述したような方法を採用してい
たが、その構成上、ロック取得による競合が発生し易
く、そのためにロック取得待ちによる性能低下が発生す
るという問題点があった。その理由は、未使用状態のプ
ロセスリンクの待ち行列が複数のプロセッサで共用され
るため、その待ち行列を共有するプロセッサの数が多く
存在すると、そのプロセッサ台数に比例して未使用状態
のプロセスリンクの待ち行列にアクセスする頻度が増
え、その待ち行列のロック取得による競合が発生する割
合も増え、このためロック取得待ちによる性能低下が発
生するからである。
【0017】そこで本発明の目的は、未使用状態のプロ
セスリンクの待ち行列のロック取得による競合を減らす
ことにより、ロック取得待ち時間を減らし、性能低下を
防ぐことにある。
【0018】
【課題を解決するための手段】本発明は、セマフォを介
してプロセスの同期や排他制御を行うオペレーティング
・システムを有するマルチプロセッサシステムにおい
て、セマフォの生成時に、複数のプロセッサで共有して
いる未使用状態のプロセスリンクの待ち行列から幾つか
の未使用状態のプロセスリンクを取り出し、前記生成し
たセマフォで専用に使用する未使用状態のプロセスリン
クの待ち行列につなげる第1のステップと、セマフォに
対してP命令を発行したプロセスを当該セマフォで待機
中にする場合、当該セマフォで専用に使用する未使用状
態のプロセスリンクの待ち行列から未使用のプロセスリ
ンクを1つ取り出し、この取り出したプロセスリンクに
当該プロセスの名前を設定して、当該セマフォを介して
事象を待っているプロセスの待ち行列につなぐ第2のス
テップとを含むことを特徴とする。
【0019】また本発明は、前記第1のステップにおい
て、セマフォで専用に使用する未使用状態のプロセスリ
ンクの待ち行列につなげる未使用状態のプロセスリンク
の数をソフトウェアから指定可能とすることを特徴とす
る。
【0020】さらに本発明は、前記第1のステップにお
いて、セマフォで専用に使用する未使用状態のプロセス
リンクの待ち行列につなげた各々のプロセスリンクに当
該セマフォの識別子を設定し、前記第2のステップにお
いて、セマフォで専用に使用する未使用状態のプロセス
リンクの待ち行列に1つも未使用状態のプロセスリンク
が存在しない場合には、複数のプロセッサで共有してい
る未使用状態のプロセスリンクの待ち行列から未使用状
態のプロセスリンクを1つ取り出し、この取り出したプ
ロセスリンクに当該プロセスの名前を設定して、当該セ
マフォを介して事象を待っているプロセスの待ち行列に
つなぐようにし、且つ、セマフォを介して事象を待って
いるプロセスの待ち行列につながれたプロセスリンクを
そのプロセスの実行状態への遷移に伴って未使用状態の
プロセスリンクとする際、そのプロセスリンクにセマフ
ォの識別子が設定されているときは設定された識別子の
セマフォで専用に使用する未使用状態のプロセスリンク
の待ち行列に戻し、セマフォの識別子が設定されていな
いときは複数のプロセッサで共有している未使用状態の
プロセスリンクの待ち行列に戻す第3のステップを含む
ことを特徴とする。
【0021】複数のプロセッサで共有している未使用状
態のプロセスリンクの待ち行列から未使用状態のプロセ
ッサリンクを取り出す場合、複数のプロセッサが同時に
取得する可能性があることを考えるとその待ち行列のロ
ックを取得する必要がある。しかし、セマフォの生成時
に、複数のプロセッサで共有している未使用状態のプロ
セスリンクの待ち行列から幾つかの未使用状態のプロセ
スリンクを取り出して、そのセマフォで専用に使用する
未使用状態のプロセスリンクの待ち行列につなげておく
と、この待ち行列に対するアクセスはそのセマフォのロ
ックを取得したプロセッサに限られるため、その待ち行
列から未使用状態のプロセスリンクを取り出す際にその
待ち行列のロックをあえて行う必要がなくなり、ロック
取得による競合を減らすことができる。
【0022】
【発明の実施の形態】次に本発明の実施の形態の例につ
いて図面を参照して詳細に説明する。
【0023】図1は本発明を実施するマルチプロセッサ
システムの一例を示すブロック図である。同図に示すマ
ルチプロセッサシステムは、プログラム制御により動作
する複数個のプロセッサ40−1,…,40−nと、こ
れらのプロセッサで共有される主記憶45とを含んでい
る。また、プロセッサ40−1〜40−nは、各種の待
ち行列(実行可能状態のプロセスの待ち行列,未使用状
態のプロセスリンクの待ち行列,セマフォを介して事象
を待っているプロセスの待ち行列,セマフォで専用に使
用する未使用状態のプロセスリンクの待ち行列)を操作
する手段,V命令,P命令を実行する手段,ユーザプロ
セス等のソフトウェアから指示された数のプロセスリン
クを未使用状態のプロセスリンクの待ち行列から取り出
してセマフォで専用に使用する未使用状態のプロセスリ
ンクの待ち行列につなげる手段,セマフォを作成する手
段およびディスパッチャ手段といった各手段をファーム
ウェアの機能として備えている。
【0024】図2は本発明の方法で使用するセマフォと
セグメントの構成例を示す。セマフォ15は図1の主記
憶45上にあり、図3に示すように、負の値もとりうる
セマフォカウンタSCTと、このセマフォ15を介して
事象を待っているプロセスの待ち行列の先頭アドレスP
QHP(1つもプロセスがないときは値0)と、更にこ
のセマフォ15で専用に使用する未使用状態のプロセス
リンクの待ち行列の先頭アドレスFLQP(1つもプロ
セスリンクがないときは値0)とを含んでいる。
【0025】セグメント1も主記憶45上にあり、複数
(図2の例では合計9個)のプロセスリンク16と2つ
のポインタ7,8とが格納されている。各々のプロセス
リンク16は、図4に示すように、プロセス名と他のプ
ロセスリンクとの連結用のリンクアドレス(リンク先が
ないときは値0)と更にセマフォを一意に識別するセマ
フォ名とを格納する。本実施の形態では、各々のプロセ
スリンク16は以下の4種類の待ち行列の何れかにつな
げられて管理される。
【0026】複数のプロセッサで共有している未使用
状態のプロセスリンクの待ち行列(Q/PL/FLSと
も言う) セマフォを介して事象を待っているプロセスの待ち行
列(Q/PR/Sとも言う) 実行可能状態のプロセスの待ち行列(Q/PR/RD
Yとも言う) セマフォで専用に使用する未使用状態のプロセスリン
クの待ち行列(Q/S/FPLとも言う)
【0027】即ち、初期の状態においては全てのプロセ
スリンク16は未使用状態であるため、それらのリンク
アドレスによって一つなぎに連結されての待ち行列で
管理され、この待ち行列の先頭のプロセスリンクのアド
レスをセグメント1のポインタ7が指し示す。そして、
セマフォの生成時には、複数のプロセッサで共有してい
る未使用状態のプロセスリンクの待ち行列から幾つか
の未使用状態のプロセスリンクを取り出して、その生成
したセマフォで専用に使用する未使用状態のプロセスリ
ンクの待ち行列につなぎかえられ、この待ち行列の先
頭のプロセスリンクのアドレスをセマフォ内の先頭アド
レスFLQPが指し示す。また、セマフォを介して事象
を待つプロセスが出現すると、そのプロセスのために未
使用状態の1つのプロセスリンクがそのセマフォで専用
に使用するの待ち行列から、若しその待ち行列に未
使用状態のプロセスリンクが1つもなければの待ち行
列から確保され、このプロセスリンクにそのプロセスの
プロセス名等が設定されて、の待ち行列につながれ、
この待ち行列の先頭のプロセスリンクのアドレスをセマ
フォの先頭アドレスPQHPが指し示す。さらに、事象
を待っていたプロセスが実行可能状態に遷移すると、
の待ち行列からそのプロセスのプロセスリンクが取り出
されて、の待ち行列につながれ、この待ち行列の先頭
のプロセスリンクのアドレスをセグメント1のポインタ
8が指し示す。そして、実行可能状態のプロセスが実行
状態に遷移するのに伴って、そのプロセスが使用してい
たプロセスリンクが未使用状態になると、やの元々
つながっていた待ち行列に戻される。
【0028】図2の例では、9個のプロセスリンク16
(各々のリンクアドレスは1〜9)のうち、3個の未使
用状態のプロセスリンクは、セマフォ15で専用に使用
する未使用状態のプロセスリンクの待ち行列9につなげ
られており、1個のプロセスリンクは、セマフォ15を
介して事象を待っているプロセスの待ち行列4につなげ
られており、3個のプロセスリンクは、実行可能状態の
プロセスの待ち行列2につなげられている。そして、残
り2個の未使用状態のプロセスリンクは、未使用状態の
プロセスリンクの待ち行列3につなげられている。な
お、プロセスリンク16の総数は本例では9個である
が、これは説明の便宜上に過ぎず、不足する事態が生じ
ない程度に十分な数が確保されていることは言うまでも
ない。
【0029】次に本実施の形態の動作について説明す
る。
【0030】(1)セマフォ作成時 ユーザプロセス等から発行されたシステムマクロに従っ
てプロセッサ40−1〜40−nのファームウェアが新
たなセマフォを作成したとき、ファームウェアは、その
ユーザプロセス等のソフトウェアから指定された数の未
使用状態のプロセスリンクを、未使用状態のプロセスリ
ンクの待ち行列3から取り出し、作成されたセマフォで
専用に使用する未使用状態のプロセスリンクの待ち行列
9につなぐ。すなわち、未使用状態のプロセスリンクの
待ち行列3から取り出した未使用状態の各プロセスリン
クを図4に示したリンクアドレスで一つなぎに連結し
(最後尾のプロセスリンク中のリンクアドレスは0)、
その先頭のリンクアドレスのアドレスをセマフォの先頭
アドレスFLQPに設定する。また、各プロセスリンク
の図4に示したセマフォ名に、作成されたセマフォのセ
マフォ名を登録しておく。また、ソフトウェアから上述
した指定がない場合には、セマフォで専用に使用する未
使用状態のプロセスリンクの待ち行列9へは未使用状態
のプロセスリンクはつながない。なお、未使用状態のプ
ロセスリンクの数の指定をソフトウェアから行う以外
に、固定的な数をハードウェアに設定しておく方法も採
用可能である。
【0031】(2)P命令実行時 図5はセマフォに対するP命令の本実施の形態の処理の
流れを示す。P命令は引数として各セマフォを一意に識
別し得る識別子であるセマフォ番号をもつ。或るプロセ
ッサ上で実行中の或るプロセスからセマフォ15のセマ
フォ番号を引数としてP命令が発行されると、そのプロ
セッサのファームウェアは、セマフォ15のロックを取
得し(A−11)、セマフォ15のセマフォカウンタS
CTの値から1を減じ(A−12)、その値が負である
か否かを調べる(A−13)。
【0032】セマフォカウンタSCTの値が負であれ
ば、P命令を発行したプロセスを待機状態とすべく、以
下の処理を行う。先ず、セマフォ15のFLQPの値が
0であるか否かを調べる(A−14)。FLQPの値が
0でなければ、セマフォ15で専用に使用する未使用状
態のプロセスリンクの待ち行列9に1以上のプロセスリ
ンクが存在するので、この待ち行列9から未使用状態の
プロセスリンクを1つ取り出し(A−18)。ここで、
待ち行列9はセマフォ15で専用に使用する待ち行列で
あり、このステップA−18に進むためにはセマフォ1
5のロック取得が必要なため、セマフォ15とは別に待
ち行列9のロックを行う処理は不要である。次に、現在
実行中のプロセス(P命令を発行したプロセス)を閉塞
し、ステップA−18で取り出した未使用状態のプロセ
スリンクにそのプロセスのプロセス名とリンクアドレス
の情報を書き込んでセマフォ15を介して事象を待って
いるプロセスの待ち行列4につなげる(A−19)。そ
して、セマフォ15をアンロックし(A−17)、命令
を終了し、ディスパッチャへ制御を移す。
【0033】他方、セマフォ15のFLQPの値が0で
あれば、セマフォ15で専用に使用する未使用状態のプ
ロセスリンクの待ち行列9に1つもプロセスリンクが存
在しないので、従来と同様に、未使用状態のプロセスリ
ンクの待ち行列3のロックを取得してこの待ち行列3か
ら未使用状態のプロセスリンクを1つ取り出し(A−1
5)、現在実行中のプロセス(P命令を発行したプロセ
ス)を閉塞し、上記未使用状態のプロセスリンクにその
プロセスのプロセス名およびリンクアドレスの情報を書
き込んでセマフォ15を介して事象を待っているプロセ
スの待ち行列4につなげた後、未使用状態のプロセスリ
ンクの待ち行列3のアンロックを行う(A−16)。そ
して、セマフォ15のアンロックを行い(A−17)、
命令を終了し、ディスパッチャに制御を移する。
【0034】更に、ステップA−13において、セマフ
ォ15のセマフォカウンタSCTの値が負でないと判定
された場合(0以上の場合)、セマフォ15のアンロッ
クを行い(A−20)、そのままそのプロセスの処理を
継続する。
【0035】(3)V命令実行時 V命令実行時の処理の流れは図15に示した従来の処理
と同じである。即ち、或るプロセッサで実行中の或るプ
ロセスからセマフォ15のセマフォ番号を引数としてV
命令が発行されると、そのプロセッサのファームウェア
は、セマフォ15のロックを取得し(B−1)、セマフ
ォ15のセマフォカウンタSCTの値に1を加え(B−
2)、その値が正であるか否かを調べ(B−3)、セマ
フォカウンタSCTの値が正であれば、セマフォ15の
アンロックを行ってそのまま処理を継続する(B−
6)。他方、セマフォカウンタSCTの値が正でなけれ
ば(0以下であれば)、このセマフォ15を介して事象
を待っているプロセスの待ち行列4の中から1つのプロ
セスリンクを取り出し、実行可能状態のプロセスの待ち
行列2のロックを取得し、前記取り出したプロセスリン
クを実行可能状態のプロセスの待ち行列2につなげて当
該プロセスリンクにかかるプロセスを実行可能状態と
し、実行可能状態のプロセスの待ち行列2のアンロック
を行う(B−4)。そして、セマフォ15のアンロック
を行い(B−5)、命令を終了し、制御をディスパッチ
ャへ移す。
【0036】(4)ディスパッチャの処理 図6にディスパッチャによりプロセスが実行可能状態の
プロセスの待ち行列2から実行状態に遷移する場合の処
理の流れを示す。ディスパッチャによりプロセスが実行
可能状態のプロセスの待ち行列2から実行状態に遷移す
る場合、実行可能状態のプロセスの待ち行列2から実行
状態に遷移するプロセスのプロセスリンクにおけるセマ
フォ名のエリアを読み出し、セマフォ名が設定されてい
るか否かを調べる(C−11)。
【0037】セマフォ名が設定されていれば、当該プロ
セスリンクは、元々、そのセマフォ名のセマフォで専用
に使用する未使用状態のプロセスリンクの待ち行列9か
ら取り出されたものである。そこで、実行可能状態のプ
ロセスの待ち行列2のロックと上記セマフォ名のセマフ
ォのロックを取得し(C−12)、実行可能状態のプロ
セスの待ち行列2から実行状態に遷移するプロセスのプ
ロセスリンクを取り外して当該プロセスの情報をプロセ
ッサへ取り込み、未使用状態になったプロセスリンクを
そのセマフォで専用に使用する未使用状態のプロセスリ
ンクの待ち行列9につなげる(C−13)。そして、実
行可能状態のプロセスの待ち行列2のアンロックとセマ
フォのアンロックとを行い(C−14)、プロセスを実
行する。
【0038】他方、セマフォ名が設定されていなけれ
ば、当該プロセスリンクは、元々、未使用状態のプロセ
スリンクの待ち行列3から取り出されたものである。そ
こで、従来と同様に、実行可能状態のプロセスの待ち行
列2と未使用状態のプロセスリンクの待ち行列3のロッ
クを取得し(C−15)、実行可能状態のプロセスの待
ち行列2から実行状態に遷移するプロセスのプロセスリ
ンクを取り外して当該プロセスの情報をプロセッサへ取
り込み、未使用状態になったプロセスリンクを未使用状
態のプロセスリンクの待ち行列3につなげる(C−1
6)。そして、実行可能状態のプロセスの待ち行列2及
び未使用状態のプロセスリンクの待ち行列3をアンロッ
クし(C−17)、プロセスを実行する。
【0039】
【実施例】次に各図を参照して本発明の実施の形態の一
実施例の動作について詳細に説明する。
【0040】今、図7に示すように、リンクアドレスが
それぞれ1〜9である9つのプロセスリンク100〜1
08を含むセグメント1があり、実行可能状態のプロセ
スの待ち行列2にはプロセス名30,31,32とセマ
フォ名S1を含むプロセスリンク100,101,10
2がつながれ、未使用状態のプロセスリンクの待ち行列
3には未使用状態のプロセスリンク103〜108がつ
ながれているとする。また、対象とするマルチプロセッ
サシステムは、2つのプロセッサ40−1,40−2と
主記憶45とを含み、プロセッサ40−1ではプロセス
名20のプロセスが、プロセッサ40−2ではプロセス
名21のプロセスが実行中であるとする。さらに、プロ
セスのプライオリティ(優先順位)は20,21,3
0,31,32の順に低くなっているものとする。ま
た、1つのセマフォ15−1があって、そのセマフォカ
ウンタSCTの初期値は0、セマフォ名はS1で、作成
時にプロセスリンク100,101,102を3つ確保
していたが、プロセス名30,31,32のプロセスに
よってそれらのプロセスリンクがセマフォ15−1で使
用中であるとする。
【0041】このような状況において、図8に示すよう
に、プロセス20からの要求に従ってプロセッサ40−
1のファームウェアがセマフォカウンタSCTの初期値
として0を持つセマフォ15−2(セマフォ名はS2と
する)を作成すると、そのファームウェアは、セマフォ
作成時にプロセス20から指示された数(例えば4つと
する)のプロセスリンク103〜106を未使用状態の
プロセスリンクの待ち行列3から取り外し、それらのプ
ロセスリンク103〜106を一つなぎに連結すると共
にセマフォ名S2を格納し、セマフォ15−2で専用に
使用する未使用状態のプロセスリンクの待ち行列9−2
につなげるべく、セマフォ15−2の先頭アドレスFL
QPに先頭のプロセスリンク103のリンクアドレス
(4)を格納する。
【0042】次いでプロセス20でセマフォ15−2に
対しP命令が発行されると、プロセッサ40−1のファ
ームウェアは図5のP命令実行フローに従って動作し、
まずセマフォ15−2のロックを取得し、セマフォカウ
ンタSCTから1を減じる。この結果、図9に示すよう
に、SCTの値は−1になるため、セマフォ15−2で
専用に使用する未使用状態のプロセスリンクの待ち行列
9−2から未使用状態のプロセスリンク103を取り出
し、プロセス20の情報を書き込んでセマフォ15−2
を介して事象を待っているプロセスの待ち行列4−2に
接続し、セマフォ15−2の先頭アドレスPQHPにプ
ロセスリンク103のリンクアドレス(4)を格納す
る。こうしてプロセス20はセマフォ15−2で待機の
状態となる。
【0043】次いでディスパッチャは実行可能状態のプ
ロセスの待ち行列2から最もプライオリティの高いプロ
セス30をプロセッサ40−1で実行するよう図6に従
い制御する。このとき、プロセス30のプロセスリンク
100に格納されているセマフォ名がS1であることか
ら、図10に示すように、実行可能状態のプロセスの待
ち行列2からプロセス30のプロセスリンク100を取
り出し、プロセス30の情報をプロセッサ40−1に取
り込んだ後、空きになったプロセスリンク100をセマ
フォ15−1で専用に使用する未使用状態のプロセスリ
ンクの待ち行列9−1に接続し、セマフォ15−1の先
頭アドレスFLQPにプロセスリンク100のリンクア
ドレス(1)を書き込む。
【0044】
【発明の効果】以上説明したように本発明によれば、セ
マフォの生成時に、複数のプロセッサで共有している未
使用状態のプロセスリンクの待ち行列から幾つかの未使
用状態のプロセスリンクを取り出して前記生成したセマ
フォで専用に使用する未使用状態のプロセスリンクの待
ち行列につなげておき、セマフォに対してP命令を発行
したプロセスを当該セマフォで待機中にするために使う
プロセスリンクを、そのセマフォ専用の未使用状態のプ
ロセスリンクの待ち行列から取り出すようにしたので、
複数のプロセッサで共有している未使用状態のプロセス
リンクの待ち行列から常にプロセスリンクを取り出して
いた従来方法に比べて、待ち行列のロック取得による競
合が減り、ロック取得待ち時間が減って性能を向上させ
ることができる。
【0045】また、セマフォ専用の未使用状態のプロセ
スリンクの数はソフトウェアによって指定できるため、
効率的な運用が可能となる。その理由は、どの程度のプ
ロセスリンクを必要とするかはセマフォの作成を指示し
たユーザプロセス等のソフトウェアが一番良く把握して
いるため、過不足のない数の未使用状態のプロセスリン
クが確保できるからである。
【0046】さらに、セマフォ専用の未使用状態のプロ
セスリンクが作成されなかった場合や、それが使い果た
された場合には、従来と同様に複数のプロセッサで共有
している未使用状態のプロセスリンクの待ち行列から自
動的に未使用状態のプロセスリンクが取得されるため、
セマフォ作成時にソフトウェアから指定された未使用状
態のプロセスリンクの数が少なすぎた場合や、そもそも
そのような指定を行わない古いバージョンのプロセスの
動作環境においても、支障なくプロセス制御を実施する
ことができる。
【図面の簡単な説明】
【図1】本発明を実施するマルチプロセッサシステムの
一例を示すブロック図である。
【図2】本発明で使用するセマフォとセグメントの構成
例を示す図である。
【図3】本発明で使用するセマフォの構成例を示す図で
ある。
【図4】本発明で使用するプロセスリンクの構成例を示
す図である。
【図5】本発明におけるP命令実行処理の一例を示すフ
ローチャートである。
【図6】本発明におけるディスパッチャの処理例を示す
フローチャートである。
【図7】本発明の一実施例の動作説明に用いるマルチプ
ロセッサシステムとセグメントとセマフォの或る時点の
状態を示す図である。
【図8】図7の状態において新たなセマフォが生成され
た時点の各部の状態を示す図である。
【図9】図8の状態においてP命令を発行したプロセス
が待機状態となった時点の各部の状態を示す図である。
【図10】図9の状態においてプロセスが実行状態とな
ったことにより未使用状態のプロセスリンクがセマフォ
で専用に使用する未使用状態のプロセスリンクの待ち行
列に戻された時点の各部の状態を示す図である。
【図11】従来技術で使用されるセマフォとセグメント
の構成図である。
【図12】従来技術で使用されるプロセスリンクの構成
図である。
【図13】従来技術で使用されるセマフォの構成図であ
る。
【図14】従来技術におけるP命令実行処理のフローチ
ャートである。
【図15】従来技術におけるV命令実行処理のフローチ
ャートである。
【図16】従来技術におけるディスパッチャの処理のフ
ローチャートである。
【符号の説明】
1…セグメント 2…実行可能状態のプロセスの待ち行列(Q/PR/R
DY) 3…未使用状態のプロセスリンクの待ち行列(Q/PL
/FLS) 4…セマフォを介して事象を待っているプロセスの待ち
行列(Q/PR/S) 5,15…セマフォ 6,16…プロセスリンク 7…未使用状態のプロセスリンクの待ち行列の先頭のプ
ロセスリンクを指し示すポインタ 8…実行可能状態のプロセスの待ち行列の先頭のプロセ
スリンクを指し示すポインタ 9…セマフォで専用に使用する未使用状態のプロセスリ
ンクの待ち行列(Q/S/FPL)

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 セマフォを介してプロセスの同期や排他
    制御を行うオペレーティング・システムを有するマルチ
    プロセッサシステムにおいて、 セマフォの生成時に、複数のプロセッサで共有している
    未使用状態のプロセスリンクの待ち行列から幾つかの未
    使用状態のプロセスリンクを取り出し、前記生成したセ
    マフォで専用に使用する未使用状態のプロセスリンクの
    待ち行列につなげる第1のステップと、 セマフォに対してP命令を発行したプロセスを当該セマ
    フォで待機中にする場合、当該セマフォで専用に使用す
    る未使用状態のプロセスリンクの待ち行列から未使用の
    プロセスリンクを1つ取り出し、この取り出したプロセ
    スリンクに当該プロセスの名前を設定して、当該セマフ
    ォを介して事象を待っているプロセスの待ち行列につな
    ぐ第2のステップとを含むことを特徴とするセマフォに
    関するプロセス制御方法。
  2. 【請求項2】 前記第1のステップにおいて、セマフォ
    で専用に使用する未使用状態のプロセスリンクの待ち行
    列につなげる未使用状態のプロセスリンクの数をソフト
    ウェアから指定可能とすることを特徴とする請求項1記
    載のセマフォに関するプロセス制御方法。
  3. 【請求項3】 前記第1のステップにおいて、セマフォ
    で専用に使用する未使用状態のプロセスリンクの待ち行
    列につなげた各々のプロセスリンクに当該セマフォの識
    別子を設定し、 前記第2のステップにおいて、セマフォで専用に使用す
    る未使用状態のプロセスリンクの待ち行列に1つも未使
    用状態のプロセスリンクが存在しない場合には、複数の
    プロセッサで共有している未使用状態のプロセスリンク
    の待ち行列から未使用状態のプロセスリンクを1つ取り
    出し、この取り出したプロセスリンクに当該プロセスの
    名前を設定して、当該セマフォを介して事象を待ってい
    るプロセスの待ち行列につなぐようにし、且つ、 セマフォを介して事象を待っているプロセスの待ち行列
    につながれたプロセスリンクをそのプロセスの実行状態
    への遷移に伴って未使用状態のプロセスリンクとする
    際、そのプロセスリンクにセマフォの識別子が設定され
    ているときは設定された識別子のセマフォで専用に使用
    する未使用状態のプロセスリンクの待ち行列に戻し、セ
    マフォの識別子が設定されていないときは複数のプロセ
    ッサで共有している未使用状態のプロセスリンクの待ち
    行列に戻す第3のステップを含むことを特徴とする請求
    項2記載のセマフォに関するプロセス制御方法。
JP15761696A 1996-05-29 1996-05-29 セマフォに関するプロセス制御方法 Expired - Lifetime JP2861943B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP15761696A JP2861943B2 (ja) 1996-05-29 1996-05-29 セマフォに関するプロセス制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP15761696A JP2861943B2 (ja) 1996-05-29 1996-05-29 セマフォに関するプロセス制御方法

Publications (2)

Publication Number Publication Date
JPH09319601A true JPH09319601A (ja) 1997-12-12
JP2861943B2 JP2861943B2 (ja) 1999-02-24

Family

ID=15653629

Family Applications (1)

Application Number Title Priority Date Filing Date
JP15761696A Expired - Lifetime JP2861943B2 (ja) 1996-05-29 1996-05-29 セマフォに関するプロセス制御方法

Country Status (1)

Country Link
JP (1) JP2861943B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8522250B2 (en) 2010-09-29 2013-08-27 International Business Machines Corporation Managing access to a shared resource in a data processing system
JP2015530679A (ja) * 2012-10-04 2015-10-15 クゥアルコム・インコーポレイテッドQualcomm Incorporated 高効率アトミック演算を使用した方法および装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8522250B2 (en) 2010-09-29 2013-08-27 International Business Machines Corporation Managing access to a shared resource in a data processing system
US8539501B2 (en) 2010-09-29 2013-09-17 International Business Machines Corporation Managing access to a shared resource in a data processing system
JP2015530679A (ja) * 2012-10-04 2015-10-15 クゥアルコム・インコーポレイテッドQualcomm Incorporated 高効率アトミック演算を使用した方法および装置

Also Published As

Publication number Publication date
JP2861943B2 (ja) 1999-02-24

Similar Documents

Publication Publication Date Title
DE4104781C2 (de) Speicherzugriffssteuerung
US4847754A (en) Extended atomic operations
US8694997B2 (en) Deterministic serialization in a transactional memory system based on thread creation order
US5257372A (en) Methods for efficient distribution of parallel tasks to slave processes in a multiprocessing system
US5867702A (en) Method and apparatus for initializing a multiprocessor system
JP2650965B2 (ja) 計算機システムおよびそのタスクスケジュール方法
JPH10301834A (ja) 共用メモリの管理方法
US20040199927A1 (en) Enhanced runtime hosting
JPH08137707A (ja) 分散トランザクション処理システム
JPH1165863A (ja) 共有資源管理方法
EP2266026A1 (en) Efficient deterministic multiprocessing
CN109614220A (zh) 一种多核系统处理器和数据更新方法
US7770177B2 (en) System for memory reclamation based on thread entry and release request times
JP3113841B2 (ja) 並列トランザクション処理システム
CN109308213B (zh) 基于改进任务调度机制的多任务断点调试方法
CN110297661A (zh) 基于amp构架dsp操作系统的并行计算方法、系统及介质
JPH09319601A (ja) セマフォに関するプロセス制御方法
CN112346835A (zh) 一种基于协程的调度处理方法及系统
JP3621433B2 (ja) データベース排他制御方法
US20080250412A1 (en) Cooperative process-wide synchronization
JP2973480B2 (ja) 通信レジスタ多重化方式
JPH07120302B2 (ja) タスクデバッグ方式
JPH07120301B2 (ja) タスクデバッグ方法
CN111124697A (zh) 面向分布式平台的任务同步和执行方法
JPH10161985A (ja) プロセッサ割付方法およびマルチプロセッサ計算機システム