JP2016004508A - 排他制御装置、排他制御方法、排他制御プログラム、及び、オペレーティングシステム - Google Patents

排他制御装置、排他制御方法、排他制御プログラム、及び、オペレーティングシステム Download PDF

Info

Publication number
JP2016004508A
JP2016004508A JP2014125990A JP2014125990A JP2016004508A JP 2016004508 A JP2016004508 A JP 2016004508A JP 2014125990 A JP2014125990 A JP 2014125990A JP 2014125990 A JP2014125990 A JP 2014125990A JP 2016004508 A JP2016004508 A JP 2016004508A
Authority
JP
Japan
Prior art keywords
period
exclusive control
lock
processing
interrupt
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
JP2014125990A
Other languages
English (en)
Inventor
純 田邉
Jun Tanabe
純 田邉
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 JP2014125990A priority Critical patent/JP2016004508A/ja
Publication of JP2016004508A publication Critical patent/JP2016004508A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Power Sources (AREA)

Abstract

【課題】高い並列処理性能を有する排他制御装置等を提供する。
【解決手段】
排他制御装置101は、排他制御命令に関連付けされた第2期間501を表す情報に基づき、排他制御命令に関する計算機リソースを使用しない第1期間を算出する算出部102と、第1期間に基づき、第1期間において実行する処理502を決める制御部103とを有する。
【選択図】 図1

Description

本発明は、プロセス等を制御する排他制御装置等に関する。
ハイパフォーマンスコンピューティング(HPC)等の分野においては、大規模かつ並列(あるいは、擬似並列)に処理を行うプログラムが実行される。該プログラムを効率よく、かつ、並列に処理するためには、同期待ちや、計算機資源(計算機リソース、リソース)が使用可能になるのを待つことを表すロック待ちに起因するオーバーヘッドを、可能な限り減らすことが必要である。
ここで、同期待ちは、たとえば、並列に処理するプロセス(スレッド等でもよい)が、お互いに、処理するタイミングに関して同期することを表す。また、ロック待ちは、たとえば、あるリソースに関する処理を排他的に実行する場合に、あるプロセスが該リソースに関する処理を完了するのを、他のプロセスが待つことを表す。このように、同期待ち、及び、ロック待ちは、並列処理に関する性能を低下する原因の一つである。
たとえば、排他的に処理する処理量(粒度、ロック粒度)を減らすことは、1回あたりの待ち時間を減らすことにつながる。しかし、ロックする処理自体(ロックプリミティブ、ロック機構)にも処理は必要である。このため、ロック粒度を小さくするにつれ、ロック機構に関する処理オーバーヘッドが顕著になる。
特許文献1乃至特許文献7は、効率よく並列処理を行う装置等を開示する。
特許文献1に開示された装置は、プロセスがリソースに関してロック及びアンロックするのに応じて、ロック粒度の大きさに関する情報を収集する。次に、該装置は、ロック待ちが生じる場合に、収集した情報に基づき、プロセスがビジーウェイトするのか、または、スリープウェイトするのかを決める。
特許文献2は、ビジーウェイトするプロセスの個数を制限する装置を開示する。ある個数個のプロセスがビジーウェイトする状況において、さらに、ロックが解放されるのを待つプロセスが生じる場合に、該装置は、該プロセスにスリープウェイトする命令を送信する。該装置がプロセスをスリープウェイトすることにより、中央演算処理装置(CPU)は、該ビジーウェイトに関する一部の処理を実行する必要がなくなる。この結果、該装置は、メモリアクセス等のオーバーヘッドを低減する。
特許文献3は、マルチプロセッサシステムに関する排他制御装置を開示する。該排他制御装置は、プロセスがリソースに関する処理を排他的に実行する期間(ロック期間)に関する履歴に基づき、プロセスがリソースに関する処理を排他的に開始するまでの期間を推定する。次に、該排他制御装置は、推定した期間と、該リソースに関する閾値とを比較し、比較した結果に基づき、プロセスがビジーウェイトするのか、または、スリープウェイトするのかを決める。たとえば、該排他制御装置は、推定した期間が、閾値(たとえば、ロック期間の平均)よりも短い場合に、ビジーウェイトを選択し、さもなければ、スリープウェイトを選択する。
特許文献4は、マルチプロセッサシステムにおける、排他制御方式を開示する。該排他制御方式は、リソースに関する処理を排他的に実行しているか否かを表す状態と、該リソースに関するロックが解放されるのを待つプロセスの数とに基づき、ビジーウェイトするのか、または、スリープウェイトするのかを決める。
特許文献5は、まず、ビジーウェイトすることによりロックが解放されるのを待ち、一定期間内に、ロックが解放されなければスリープウェイトするロック方式を開示する。
特許文献6は、送信プロセスから受信プロセスにデータを転送する際の待ち合わせ処理において、ビジーウェイトと、スリープウェイト(サスペンド)とを選択する通信システムを開示する。該通信システムは、プロセスごとに、待ち合わせ処理において生じる同期待ち間隔を測定し、測定した間隔に基づき、同期待ちが生じる頻度を算出する。該通信システムは、算出した頻度が、所定の閾値よりも小さければ、ビジーウェイト方式を選択し、そうでなければ、スリープウェイト方式を選択する。
特許文献7は、マルチプロセッサコンピュータシステムに関する、ロック排他制御方式を開示する。該ロック排他制御方式は、リソースに関する処理を排他的に実行できない場合に、原則、ビジーウェイトする。該ロック排他制御方式においては、リソースに関する処理を排他的に実行しているプロセスが、割り込み処理に応じて、該処理を中断する場合のみに、該プロセスをスリープウェイトする。
特開2001−84235号公報 特開平6−12394号公報 特開2010−191575号公報 特開平7−319716号公報 特開平5−225149号公報 特開2001−117787号公報 特開平1−261771号公報
マルチプロセッサを有するコンピュータシステムにおいて、オペレーティングシステムに関する処理性能は、上述したオーバーヘッドの影響を受ける。このため、高い処理性能を達成するためには、コンピュータシステムにおいて、オーバーヘッドを低減、または、隠蔽する必要がある。
しかし、たとえば、特許文献3に開示される排他制御装置は、履歴において、ロック期間のばらつき(分散)が大きな場合に、効率のよい処理方式を選択することができない。この理由は、分散が大きな場合に、必ずしも、平均値が適切な閾値を与えるとは限らないからである。すなわち、該排他制御装置は、ロック期間の履歴に基づき、ロック方式を決めるので、必ずしも、効率のよい処理方式を決めるとは限らない。
そこで、本発明の主たる目的は、高い並列処理性能を有する排他制御装置等を提供することである。
前述の目的を達成するために、本発明の一態様において、排他制御装置は、以下の構成を備える。
すなわち、排他制御装置は、
排他制御命令に関連付けされた第2期間を表す情報に基づき、前記排他制御命令に関する計算機リソースを使用しない第1期間を算出する算出手段と、
前記第1期間に基づき、前記第1期間において実行する処理を決める制御手段と
を備える。
また、本発明の他の見地として、排他制御方法は、
情報処理装置を用いて、排他制御命令に関連付けされた第2期間を表す情報に基づき、前記排他制御命令に関する計算機リソースを使用しない第1期間を算出し、前記第1期間に基づき、前記第1期間において実行する処理を決める。
さらに、同目的は、係る排他制御装置プログラム、および、そのプログラムを記録するコンピュータ読み取り可能な記録媒体によっても実現される。
本発明に係る排他制御装置等によれば、高い並列処理性能が得られる。
本発明の第1の実施形態に係る排他制御装置が有する構成を示すブロック図である。 第1の実施形態に係る排他制御装置における処理の流れを示すフローチャートである。 本発明の第2の実施形態に係るオペレーティングシステムを含むコンピュータシステムが有する構成を示すブロック図である。 ロック構造体が有する構造の一例を概念的に表す図である。 割り込み処理に関する構成の一例を概念的に表す図である。 コンピュータシステムにおける処理の流れの一例を表すシーケンス図である。 ロック命令を受信する場合における、第2の実施形態に係る排他制御装置における処理を表すフローチャートである。 アンロック命令を受信する場合における、第2の実施形態に係る排他制御装置における処理を表すフローチャートである。 アップデート命令を受信する場合における、第2の実施形態に係る排他制御装置における処理を表すフローチャートである。 格納命令を受信する場合における、第2の実施形態に係る排他制御装置における処理を表すフローチャートである。 実行命令を受信する場合における、第2の実施形態に係る排他制御装置における処理を表すフローチャートである。 アイドル命令を受信する場合における、第2の実施形態に係る排他制御装置における処理を表すフローチャートである。 本発明の各実施形態に係る排他制御装置等を実現可能な計算処理装置のハードウェア構成例を、概略的に示すブロック図である。 ビジーウェイト方式における処理の流れの一例を表すシーケンス図である。 スリープウェイト方式における処理の流れの一例を表すシーケンス図である。 併用方式における処理の流れの一例を表すシーケンス図である。
まず、発明の理解を容易にするため、本発明が解決しようとする課題を詳細に説明する。
上述したように、並列処理性能が低下する要因は、同期する待ち時間、及び、ロックが解放されるのを待つ待ち時間等である。したがって、待ち時間を減らしたり、または、プロセッサが待ち時間に他のプロセスを処理したりする(すなわち、待ち時間を隠蔽する)ことにより、高い並列処理性能を達成することができる。
まず、課題を説明するにあたり、本発明の各実施形態において用いる用語について説明する。
図14乃至図16を参照しながら、排他制御等において、ロックが解放される(すなわち、排他制御に関する計算機資源が使用可能になる)のを待つ方式について処理について説明する。図14は、ビジーウェイト方式における処理の流れの一例を表すシーケンス図である。図15は、スリープウェイト方式における処理の流れの一例を表すシーケンス図である。図16は、ビジーウェイト方式及びスリープウェイト方式を併用する方式(以降、「併用方式」と表す)における処理の流れの一例を表すシーケンス図である。図14乃至図16は、矢印の方向に時間が進むことを表す。
ビジーウェイト方式の場合に、プロセッサは、ロックが解放されるのを待つ期間に、たとえば、t1、t2、及び、t3にて、ビジーウェイトに応じた処理を実行する。プロセッサは、t4にて、ロックを取得することにより、t5にて、リソースに関する処理を排他的に開始する。その後、プロセッサは、t6にて、該処理を完了し、その後、ロックを解放する。
ここで、ロックは、セマフォ(semaphore)等において、計算機資源を排他的に使用する場合に使用され、計算機資源が使用されているのか否かを表す情報である。本願明細書において、「ロックを取得する」なる記載は、あるプロセッサが計算機資源を排他的に使用することが可能になることを表す。また、「ロックを解放する」なる記載は、計算機資源を使用しなくなるので、他のプロセッサが該計算機資源を使用することができることを表す。
ビジーウェイト命令は、たとえば、所定の間隔(ビジーウェイト間隔)にて、発せられる。この場合に、t1からt2までの時間と、t2からt3までの時間と、t3からt4までの時間とは、略同じである。
また、排他制御装置は、ビジーウェイト命令に応じて、メモリが記憶するロックワードを参照する。このため、ビジーウェイト命令に応じて、メモリアクセスが生じる。ここで、ロックワードは、たとえば、あるプロセッサが排他制御に係るリソースに関して、排他的に処理を行っているか否かに関する情報等を記憶することができる。
一方、スリープウェイト方式の場合に、プロセッサは、t8にてスリープ状態を設定する処理(スリープ処理)を開始し、t9にてスリープ状態を設定する処理を完了する。プロセッサは、t9からt10までの期間において、スリープ状態である。次に、プロセッサは、t10にて、実行待ち状態を設定する処理(ウェイクアップ処理)を開始し、t11にてウェイクアップ処理を完了する。次に、プロセッサは、t11にて、ロックを取得することにより、t12にて、リソースに関する処理を排他的に開始する。その後、プロセッサは、t13にて、該処理を完了し、その後、ロックを解放する。
スリープウェイト方式には、スリープ処理と、ウェイクアップ処理とが含まれる。これら2つの処理をまとめて、スリープコスト(以降、「準備期間」)と表す。さらに、スリープウェイト間隔は、上述した、スリープ処理を開始してから、ウェイクアップ処理を完了するまでの時間間隔を表すとする。
図15に示す例において、準備期間は、t8からt9までの時間と、t10からt11までの時間を合計した時間である。また、スリープウェイト間隔は、t8からt11までの時間である。
さらに、併用方式の場合に、プロセッサは、ビジーウェイト及びスリープウェイトを実行する。図16に示す例において、プロセッサは、t15、及び、t16にて、ビジーウェイト命令に応じた処理を実行し、t17からt20までの期間において、スリープウェイトする。次に、プロセッサは、t20にて、ロックを取得することにより、t21にて、リソースに関する処理を排他的に開始する。その後、プロセッサは、t22にて、該処理を完了し、その後、ロックを解放する。
以降、プロセッサが、ロックを取得するのを待ち始めてから、スリープウェイトに関する処理を開始するまでの期間を、「スリープに移行するまでの期間」と表す。図16に示す例において、スリープに移行するまでの期間は、t15からt17までの期間である。
次に、課題について説明する。
たとえば、特許文献2が開示する装置によれば、ある個数個のプロセスは、ビジーウェイトする可能性がある。したがって、該装置は、ビジーウェイトにおけるメモリアクセスに関する負荷は高いという問題を有する。
また、特許文献3が開示する装置は、メモリアクセスに関する負荷が高いという問題を有する。この理由は、推定した期間がロック期間の平均よりも短い場合に、該装置がビジーウェイトを選び続けるからである。さらに、該装置は、ビジーウェイト間隔を決める機能を有さないので、所定の間隔にてビジーウェイトすることを選ぶ。したがって、該装置によれば、所定の間隔が短い場合に、メモリアクセスが頻繁になる可能性がある。
さらに、特許文献4に開示される排他制御方式は、特許文献2に類似する方式であるので、ビジーウェイトにおけるメモリアクセスに関する負荷は高いという問題を有する。
また、特許文献5に開示されるロック方式は、メモリアクセスに関する負荷が高いという問題を有する。この理由は、特許文献5に開示される方式において、一定期間内にビジーウェイトを繰り返すのに応じて、メモリアクセスが必要となるからである。さらに、特許文献5に開示されるロック方式は、ロック粒度が多様な状況において、オーバーヘッドを低減するのが難しい。これは、該ロック方式において、一定期間が固定であるので、該方式がロック粒度に基づき処理を決めることができないからである。
特許文献7に開示されるロック排他制御方式は、原則ビジーウェイトするので、メモリアクセスに関する負荷が高いという問題を有する。
すなわち、上述した装置は、共通して、ビジーウェイトする処理に伴い、メモリアクセスに関する負荷が高いという問題を有する。
ここで、各ウェイト方式について、考察する。
また、ビジーウェイト方式においては、ビジーウェイト間隔を短く設定することにより、ロックが解放されるのを早く検知できるので、ロック待ち時間を低減することができる。しかし、ビジーウェイト間隔を短く設定することは、上述したように、頻繁なメモリアクセスの原因となる。逆に、ビジーウェイト方式においては、ビジーウェイト間隔を長く設定することにより、メモリアクセスに関する負荷を低減できるものの、ロックが解放されるのを検知できない期間が長くなる。これは、待ち時間を長くするので、中央演算処理装置(CPU)における処理効率が低下する原因となる。
一方、スリープウェイト方式においては、上述したように、スリープコストが存在する。したがって、ロックを確保するまでの時間が、スリープコストよりも短いにもかかわらず、スリープウェイトを選ぶことは、待ち時間を長くする原因となる。したがって、の場合には、CPUにおける処理時間が長くなるという問題がある。
また、たとえば、ロック粒度を小さくすることは、待ち時間を低減する。しかし、粒度を小さくするにつれ、排他制御における処理は、相対的に大きくなる。排他制御は、処理対象とは異なるため、オーバーヘッドである。したがって、ロック粒度を小さくする場合には、排他制御に関する処理のオーバーヘッドが大きくなるという問題がある。
さらに、ロック粒度の分散が大きい場合に、たとえば、ロック粒度に関する履歴に基づき、正確にロック粒度を予測することは難しい。ロック粒度の分散が大きい一例として、通信ネットワークや、入出力チャネル等のリソースがある。これらのリソースは、リソースの外部の影響を受ける。この結果、ロック粒度は、分散が大きくなる。この場合に、排他制御装置は、ロック粒度に基づき排他制御を実行する場合であっても、処理効率が低下するという問題を有する。
本出願人は、上述したような問題(課題)を見出すとともに、係る課題を解決する手段を導出するに至った。以降、このような課題を解決可能な、本発明を実施する実施形態について、図面を参照しながら詳細に説明する。
<第1の実施形態>
本発明の第1の実施形態に係る排他制御装置101が有する構成と、排他制御装置101が行う処理とについて、図1と図2とを参照しながら詳細に説明する。図1は、本発明の第1の実施形態に係る排他制御装置101が有する構成を示すブロック図である。図2は、第1の実施形態に係る排他制御装置101における処理の流れを示すフローチャートである。
第1の実施形態に係る排他制御装置101は、算出部102と、制御部103とを有する。
排他制御装置101は、さらに、ロック部151と、アンロック部152と、アップデート部153とを有してもよい。
たとえば、プロセスは、排他制御を実行する対象となる計算機リソース(資源、以降、「リソース」と表す)に関する制御を取得(確保)する命令(以降、「ロック命令」と表す)を、排他制御装置101に送信する。この場合に、ロック命令は、たとえば、該リソースを制御する期間501に関する情報を含む。すなわち、プロセスは、該ロック命令とともに、ロック命令に関連付けされた期間501(たとえば、リソースに関する処理を排他的に実行する時間)を、排他制御装置101に送信する。
まず、算出部102は、プロセス等から、ロック命令(すなわち、排他制御命令)とともに、排他制御命令に関連付けされた期間(時間、便宜上、「第2期間」とも表す)501を受信する。次に、算出部102は、受信した期間501を表す情報に基づき、該排他制御命令に関する計算機リソースを使用しない期間(便宜上、「第1期間」と表す)を算出する(ステップS101)。
ロック命令は、たとえば、「Lock(R,T)」と表される。すなわち、「Lock(R,T)」は、リソースRにするロックを取得する命令であるとともに、リソースRに関連付けされた期間Tを送信する命令である。たとえば、期間Tは、プロセッサがリソースRに関する処理を排他的に実行する期間、あるいは、該期間の推定値を表す。ロック命令は、必ずしも、上述したフォーマットに限定されない。
算出部102は、たとえば、期間501に関する情報を含むロック命令を受信し、期間501を表す情報に基づき、受信したロック命令に関するリソースを使用しない(使用できない)第1期間を算出する(ステップS101)。
たとえば、第1期間は、該プロセスが、受信したロック命令に関して、リソースに関する処理を排他的に実行することができない期間を表す。たとえば、算出部102は、複数のプロセスから受信した期間501に関して総和を取ることにより、第1期間を算出する。算出部102は、たとえば、受信した期間501を2倍することにより算出した値に関して総和を算出することにより、第1期間を算出してもよい。第1期間を算出する方法は、受信した期間501に関する総和を算出する手順を含んでいればよいので、上述した例に限定されない。
すなわち、算出部102は、たとえば、排他制御命令に関するリソースを使用しているプロセス、及び、排他制御命令に関するリソースが使用可能になるのを待つプロセスに関して、受信した期間501の総和を算出することにより、第1期間を算出する。
尚、排他制御装置101は、ロック命令を受信するのに応じて、上述した処理に加え、さらに、リソースRに関する排他制御に係る処理を実行する。排他制御装置101は、排他制御が可能であるプロセッサに、リソースRに関する処理を命じる。また、排他制御装置101は、排他制御が不可能であるプロセッサに、不可能である情報を送信する。すなわち、ロック命令を送信したプロセッサは、リソースRに関する処理を排他的に実行するプロセッサであるか、または、リソースRに関する排他的な処理が可能になるのを待つプロセッサである。
次に、制御部103は、算出部102が算出した第1期間に基づき、該第1期間において実行する処理502を決定する(ステップS102)。この場合に、処理502は、排他制御命令に関するリソースを使用しない処理である。
たとえば、制御部103は、第1期間が、プロセスをスリープする処理、及び、スリープしたプロセスをウェイクアップする処理に要する時間(以降、これらの処理を「準備期間」と表す)よりも短い場合に、ビジーウェイトする処理502を決める(決定する)。また、制御部103は、第1期間が、準備期間よりも長い場合に、スリープウェイトする処理502を決定する。
さらに、制御部103は、第1期間が、割り込み処理(スレッド)に関連付けされた時間(期間、便宜上、「第4期間」とも表す)よりも長い場合に、処理502として、該割り込み処理を選んでもよい。この場合に、該割り込み処理は、たとえば、該割り込み処理に要する時間(以降、「実行時間」と表す)に関連付けされている。または、制御部103は、複数の割り込み処理のうち、実行時間が最短の特定の割り込み処理を選び、第1期間が、該特定の割り込み処理に関連付けされた実行時間よりも長い場合に、該特定の割り込み処理を選んでもよい。
尚、上述した説明において、割り込み処理に関連付けされた時間は、実行時間であるとしたが、必ずしも、実行時間である必要はない。たとえば、割り込み処理に関連付けされた時間は、実行時間を推定した時間であってもよい。以降の説明においても、同様である。
たとえば、プロセッサ(または、中央演算処理装置、CPU)は、割り込み処理を記憶可能な割り込み記憶部に割り込み処理に関する情報を格納する命令(以降、「格納命令」と表す)を、排他制御装置101を含むオペレーティングシステムに送信する。たとえば、格納命令は、intq_set(i,iFunc,iT,iEPSB)と表すことができる。
該格納命令は、割り込み処理において実行する一連の処理iFuncと、割り込み処理に関連付けされた時間iT(たとえば、割り込み処理に要する時間)とに関する情報を含む。さらに、該格納命令は、上述した情報と、拡張コンテキスト退避領域iEPSBとを、割り込み処理iとして設定する命令である。それとともに、該格納命令は、設定した割り込み処理iに関する上述した情報を、割り込み記憶部に格納する命令である。格納命令は、必ずしも、上述したフォーマットに限定されない。
制御部103は、割り込み記憶部が記憶する割り込み処理の中から、特定の割り込み処理を、複数個、選んでもよい。この場合に、制御部103は、特定の割り込み処理に関連付けされた時間iTに関して総和を算出し、算出した値と、第1期間とを比較する。制御部103は、第1期間が、算出した値よりも長い場合に、特定の割り込み処理を、処理502として決める。
制御部103は、特定の割り込み処理を決めた後に、上述した処理を繰り返してもよい。この場合に、制御部103は、たとえば、第1期間から割り込み処理に要する時間を引き算することにより算出される値を、新たに、第1期間として記憶する。
次に、第1の実施形態に係る排他制御装置101に関する効果について説明する。
本実施形態に係る排他制御装置101によれば、たとえば、受信したロック命令に関して、排他制御命令に関するリソースを使用しない第1期間をより正確に推定できる。この結果、制御部103が、第1期間に実行する処理502を適切に決めることができるので、本実施形態に係る排他制御装置101によれば、高い並列処理性能を達成することができる。
この理由は、該排他制御に関連付けされた期間501が、該排他制御に関するリソースを使用する期間等を反映しているからである。算出部102は、プロセスが排他制御に関するリソースを使用する期間に基づき、排他制御に関するリソースを使用できない第1期間を算出する。したがって、算出される第1期間は、正確な値である。この結果、制御部103は、該第1期間に基づき、上述したように適切な処理502を決めることができる。すなわち、制御部103が、たとえば、処理502として特定の割り込み処理を決めることにより、プロセッサが排他制御に関するリソースが使用可能になるのを待つ時間を隠蔽することができる。
一方、特許文献1に開示された装置は、必ずしも、排他制御に関するリソースを使用できない期間を正確に推定するとは限らない。この理由は、該装置が、排他制御に関するリソースを使用する期間の平均に基づき、処理を選ぶからである。たとえば、該期間が、プロセスにより、大きく異なる場合に、該期間の平均は、必ずしも、排他制御に関するリソースを使用できない期間を推定する根拠として適切であるとは限らない。
また、特許文献2に開示された装置は、必ずしも、排他制御に関するリソースを使用できない期間を精緻に推定するとは限らない。この理由は、共有計算資源(リソース)が解放されるのを待つプロセスの個数が、必ずしも、排他制御に関するリソースを使用できない期間と高い相関関係があるとは限らないからである。
特許文献3に開示された排他制御装置101は、必ずしも、排他制御に関するリソースを使用できない期間を正確に推定するとは限らない。この理由は、排他制御に関するリソースを使用する期間に関する履歴が、必ずしも、新たに排他制御に関するリソースを使用する期間を推定する根拠とはならないからである。たとえば、履歴における期間と、新たに推定する対象である期間とが類似しない場合に、該推定は、誤差を含む推定である可能性が高い。
したがって、特許文献1乃至特許文献3等に開示された装置は、たとえば、ロック粒度がプロセスによって大きく異なる場合に、高い並列処理性能を得ることができない。
<第2の実施形態>
次に、上述した第1の実施形態を基本とする本発明の第2の実施形態について説明する。
以降の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第1の実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明を省略する。
図3を参照しながら、第2の実施形態に係るオペレーティングシステム(以降、「OS205」と表す)が有する構成と、OS205が行う処理とについて説明する。図3は、本発明の第2の実施形態に係るOS205を含むコンピュータシステムが有する構成を示すブロック図である。
コンピュータシステムは、システムタイマー203と、複数のプロセッサ201と、主記憶装置(以降、「メモリ」と表す)204とを有する。メモリ204は、本実施形態に係るOS205を記憶することができる。OS205は、排他制御装置101と、割り込み処理部206と、プロセススイッチ207と、アイドル処理部208とを有する。
以降において、プロセッサは、複数のプロセッサ201に含まれる特定のプロセッサを表すとする。
OS205は、単一のカーネルを含む。ここで、カーネルは、メモリ204において実行される処理を表す。また、カーネルは、ユーザプロセスを実行するメモリ空間と異なるカーネルメモリ空間において実行される。OS205は、カーネルに従い、複数のユーザプロセスを処理する。
ユーザプロセスは、該ユーザプロセスに固有のメモリ空間と、拡張コンテキストと含む。
OS205は、たとえば、プロセススイッチ207を用いて、プロセッサが処理するプロセスを他のプロセスに切り替える。また、OS205は、たとえば、ユーザプロセスに関する制御を実行する。OS205は、割り込み処理、システムコールに関する処理、及び、プロセスの生成及び終了に関する処理等の処理を実行する。また、OS205は、割り込み処理に関する制御、または、拡張コンテキストを切り替える処理、及び、メモリ空間を切り替える処理等を実行することにより、プロセッサが実行しているプロセスを切り替える。
さらに、OS205は、図4に例示するロック構造体に従い記述されるロック情報に基づき、リソースに関する排他制御を実行する。図4は、ロック構造体が有する構造の一例を概念的に表す図である。
ロック情報(ロック構造体)は、リソースに関連付けされた情報であり、ロックワードLWと、開始タイミングLTと、待ち時間Wと、ロック時間Dとに関する情報を含む。また、ロック情報は、さらに、経過時間Eに関する情報を含んでもよい。
ロックワードLWは、アトミックにアクセス(すなわち、一度に処理)され、プロセスがロックを取得しているか否かを表す情報(フラグ)である。開始タイミングLTは、ロックが取得される場合における、システムタイマー203が示す値を記憶することができる。ロック時間Dは、ロックに関連付けされた期間を記憶することができ、たとえば、プロセッサがロックし続ける期間を記憶することができる。該ロック時間Dにおける値は、推定値であってもよいし、実際にリソースに関する処理を排他的に実行する期間であってもよい。待ち時間Wは、たとえば、1つ以上のプロセッサに関するロック時間Dの総和を記憶することができる。待ち時間Wは、リソースが解放されるのを待つプロセッサがない場合に0を記憶する。
経過時間Eは、たとえば、プロセッサが排他制御を開始するタイミングから、システムタイマー203が示す時刻までの時間を記憶することができる。
また、OS205は、割り込み処理をプロセッサに命令する等、割り込み処理に関する制御等を実行する。
排他制御装置101は、上述した処理を行うことにより、リソースに関して排他制御を実行する。また、排他制御装置101は、上述した構成の他に、ロック部151と、アンロック部152と、アップデート部153とを有してもよい。
ロック部151は、プロセスからロック命令を受信し、受信したロック命令に応じて、ロック命令に記述されたリソースに関するロック情報を読み取る。次に、ロック部151は、読み取ったロック情報に基づき、他のプロセスがリソースを取得しているか否かを判定する。ロック部151は、他のプロセスがリソースを取得していないと判定する場合に、受信したロック命令に従い、ロックワードLWを更新する等の処理を実行することによりロック情報を更新する。これにより、プロセスは、該リソースに関する処理を排他的に実行することができる。
アンロック部152は、プロセスから受信するアンロック命令に応じて、ロック情報を更新する。これにより、アンロック部152は、リソースに関する処理を排他的に実行するプロセスから、ロックを解放する。この結果、該ロックは、解放される。
たとえば、アンロック命令は、「Unlock(R,T)」と表される。アンロック命令は、プロセッサがリソースRに関するロックを解放する命令である。たとえば、期間Tを指定する場合に、期間Tは、対応する「Lock(R,T)」において指定した期間Tと同じである必要がある。尚、アンロック命令は、リソースRに関するロックを解放する命令であればよいので、必ずしも、上述した例に限定されない。
アップデート部153は、プロセスから受信するアップデート命令に応じて、システムタイマー203を参照することにより、特定のプロセスがリソースに関する処理を排他的に実行する時間を表すロック時間Dを更新する。
たとえば、アップデート命令は、「Update(R,AT)」と表される。アップデート命令は、ロック時間Dを再設定する命令である。たとえば、プロセッサは、補正時間(正数または負数)ATを設定することにより、ロック時間Dを再設定する。すなわち、アップデート部153は、アップデート命令を受信するのに応じて、ロック時間Dに補正時間ATを加えることにより、リソースRに係るロック時間Dを再設定する。
アップデート部153が、アップデート命令に応じて期間Tを再設定することにより、第1期間を算出する基となるロック時間Dは、最新の値となる。この結果、算出部102は、さらに正確に、第1期間を算出することができる。
排他制御装置101における算出部102は、ロック部151が受信するロック命令に基づき、本発明の各実施形態に示す処理を実行する。
また、排他制御装置101における制御部103は、第1期間に実行する処理としてビジーウェイトを選ぶ場合に、プロセッサに、一定の期間ビジーループする命令を送信する。プロセッサは、該命令を受信し、受信した命令に応じて、一定の期間、ビジーループする。
割り込み処理部206は、割り込みが発生するのに応じて、該割り込みに関する割り込み処理に関して、ハンドリング(制御)を実行する。たとえば、ハンドリングは、割り込み処理に関する情報を割り込み記憶部(スレッドキュー、不図示)に格納する、割り込み処理を実行する、または、割り込み処理に関する情報を割り込み記憶部から消去する等処理を含む。
たとえば、割り込み処理部206は、上述した格納命令を受信するのに応じて、割り込み処理に関する情報を、割り込み記憶部に格納する。
また、割り込み処理部206は、割り込み処理を実行する実行命令を受信するのに応じて、該割り込み処理を実行する。
たとえば、実行命令は、たとえば、割り込み処理iを実行する命令を表す「intq_run(i)」と表される。
割り込み処理は、図5に例示するように、処理iFuncと、時間iTと、退避領域iEPSBとを含む。図5は、割り込み処理に関する構成の一例を概念的に表す図である。処理iFuncは、割り込みが発生するのに応じて実行する一連の処理である。時間iTは、割り込み処理に関連付けされた時間である。退避領域iEPSBは、割り込み処理に拡張コンテキストが必要な場合に、拡張コンテキストを格納する記憶領域として使用される。
割り込み処理部206は、実行命令を受信するのに応じて、割り込み処理iに関する情報を、割り込み記憶部から読み取り、読み取った情報を割り込み記憶部から削除する。次に、割り込み処理部206は、読み取った情報が退避領域iEPSBを含む場合に、拡張コンテキストを退避領域iEPSBに格納する。次に、割り込み処理部206は、処理iFuncに関する命令をプロセッサに送信する。プロセッサは、該命令を受信し、受信した命令に応じて、処理iFuncに応じた処理を実行する。さらに、割り込み処理部206は、読み取った情報が退避領域iEPSBを含む場合に、退避領域iEPSBに退避した情報を拡張コンテキストに格納する。
また、制御部103が、最短の処理時間である割り込み処理に関して判定する場合に、割り込み処理部206は、割り込み記憶部から、処理時間が最短の割り込み処理を選んでもよい。あるいは、割り込み処理部206は、割り込み記憶部から、処理時間が第1期間以下であり、かつ、最長である割り込み処理を選んでもよい。すなわち、割り込み処理部206は、割り込み記憶部から、特定の割り込み処理を選んでもよい。
アイドル処理部208は、実行する処理がない場合に処理を開始し、すなわち、処理が発生するのを待つ。
アイドル処理部208は、割り込み記憶部が割り込み処理を記憶するか否かを判定する。アイドル処理部208は、割り込み処理が存在する場合に、たとえば、最長の処理時間である割り込み処理を選ぶ。次に、アイドル処理部208は、割り込み処理部206に、選んだ割り込み処理を実行する実行命令を送信する。割り込み処理部206は、該実行命令を受信し、受信した実行命令に応じて、上述したような処理を実行する。
さらに、アイドル処理部208は、割り込み処理が存在しない場合に、ユーザプロセスの中から、実行待ち状態にあるプロセスを選び、選んだプロセスに関する情報を、プロセススイッチ207に送信する。プロセススイッチ207は、該情報を受信し、受信した情報に基づき、プロセッサに該プロセスを実行することを命令する。この処理により、プロセッサは、ユーザプロセスを実行する。また、アイドル処理部208は、ユーザプロセスが、実行可能なプロセスを含まない場合に、プロセッサを一定時間ウェイトする。その後、アイドル処理部208は、再度、上述した処理を繰り返す。
また、プロセススイッチ207は、プロセッサが処理しているプロセスを、別のプロセスに切り替える。プロセススイッチ207は、たとえば、プロセスをスリープ状態に設定する。アイドル処理部208は、上述したように、プロセスがスリープ状態に設定されるのに応じて、ユーザプロセスの中から、実行待ち状態に設定されたプロセスを探索する。アイドル処理部208が実行待ち状態に設定されたプロセスを見つける場合に、プロセススイッチ207は、プロセッサにおけるメモリ空間を、該プロセスに関するメモリ空間に切り替える。プロセススイッチ207は、ユーザプロセスに実行待ち状態に設定されたプロセスがない場合に、アイドル命令をプロセッサに送信することにより、プロセッサにおけるメモリ空間をアイドルプロセスに関するメモリ空間に切り替える。アイドル命令は、アイドルプロセスを実行する命令であり、たとえば、「idle_proc()」と表される。
プロセススイッチ207は、たとえば、スリープ状態に設定されたプロセスを、実行待ち状態に設定する。プロセススイッチ207は、アイドル状態にてリソースが解放されるのを待つプロセッサがあれば、プロセッサ間通信等を介して、該プロセッサを実行待ち状態に設定することにより、実行待ち状態にあるプロセスを実行する命令を送信する。ここで、アイドル状態にてリソースが解放されるのを待つプロセッサは、アイドルプロセスにおいて、ウェイト命令を実行しているプロセッサである。
プロセススイッチ207は、さらに、メモリ空間を切り替える処理を実行する。拡張コンテキストは、メモリ空間に配置される。このため、拡張コンテキストを退避・復帰する処理は、メモリ空間を切り替える機能の一部であると考えることもできる。さらに、プロセススイッチ207は、退避領域iEPSBに退避した情報を拡張コンテキストに格納する。
次に、図6を参照しながら、OS205及び排他制御装置101に係る処理について説明する。図6は、コンピュータシステムにおける処理の流れの一例を表すシーケンス図である。図6は、矢印の方向に時間が進むことを表す。
図6に示す例において、プロセッサP1乃至プロセッサP4は、リソースRに関する処理を排他的に実行するとする。また、この場合に、プロセッサP1乃至プロセッサP4は、それぞれ、プロセスを処理し、さらに、システムコール、または、割り込み処理を用いて、OS205に処理を命令するとする。
まず、図6に示す例においては、プロセッサP1は、たとえば、t51に、「Lock(R,T1)」を、ロック部151に送信することにより、リソースRに関する処理を排他的に実行することが可能になる。すなわち、プロセッサP1は、t51に、リソースRをロックする。ロック部151が、「Lock(R,T1)」を受信するのに応じて、算出部102は、開始タイミングLTにt51(すなわち、システムタイマーの値)を格納し、ロック時間DにT1を格納し、さらに、待ち時間Wに0を格納する。この場合に、算出部102は、経過時間Eに0(=T1−T1)を格納してもよい。また、ロック部151は、ロックワードLWにP1を格納する。
次に、プロセッサP2は、たとえば、t52に、「Lock(R,T2)」をロック部151に送信する。ロック部151は、プロセッサP2が送信した「Lock(R,T2)」を受信する。しかし、ロック部151は、リソースRに関するロックワードLWがP1を格納しているので、プロセッサP2にリソースRをロックできない情報を送信する。
次に、算出部102は、経過時間Eにt52−t51(=t52−LT)を格納し、第1期間として、たとえば、T1−t52+t51(=D+W−E)を算出する。すなわち、この例において、第1期間は、プロセッサP1が、t52以降に、リソースRに関する処理を排他的に実行する時間を表す。その後、算出部102は、プロセッサP2がリソースRをロックできないので、待ち時間WにT2を設定する。制御部103は、算出した第1期間に基づき、プロセッサP2が実行する処理を決める。
プロセッサP3は、たとえば、t53に、「Lock(R,T3)」をロック部151に送信する。ロック部151は、プロセッサP3が送信した「Lock(R,T3)」を受信する。しかし、ロック部151は、リソースRに関するロックワードLWがP1を格納しているので、プロセッサP3にリソースRをロックできない情報を送信する。
算出部102は、経過時間Eにt53−t51(=t53−LT)を格納し、第1期間として、たとえば、T1+T2−t53+t51(=D+W−E)を算出する。すなわち、この例において、第1期間は、プロセッサP1が、t53以降に、リソースRに関する処理を排他的に実行する時間と、プロセッサP2がリソースRに関する処理を排他的に実行する時間とを合わせた値である。その後、算出部102は、プロセッサP3がリソースRをロックできないので、待ち時間Wに(T2+T3)の値を格納する。制御部103は、算出した第1期間に基づき、プロセッサP3が実行する処理を決める。
その後、プロセッサP1は、t54に、「Unlock(R,T1)」をアンロック部152に送信する。アンロック部152は、「Unlock(R,T1)」を受信するのに応じて、ロックワードLWを0(すなわち、どのプロセッサもロックを取得していない)に設定する。この例において、アンロック部152は、待ち時間Wを読み取り、待ち時間Wが0よりも大きいと判定するので、スリープ状態にあるプロセスをウェイクアップしない。
説明の便宜上、t54において、「Lock(R,T2)」に関する処理が開始されるものとする。尚、必ずしも、あるプロセッサがリソースを解放するタイミングと、他のプロセッサがロックを確保するタイミングとが同じである必要はない。
ロック部151は、t54において、「Lock(R,T2)」に関する処理を開始する。算出部102は、開始タイミングLTにt54(すなわち、システムタイマーの値)を格納し、ロック時間DにT2を格納し、さらに、待ち時間WにT3(T2+T3−T2)を格納する。この場合に、算出部102は、経過時間Eに0を格納してもよい。また、ロック部151は、ロックワードLWにP2を格納する。
プロセッサP4は、たとえば、t55に、「Lock(R,T4)」をロック部151に送信する。ロック部151は、プロセッサP4が送信した「Lock(R,T4)」を受信する。しかし、ロック部151は、リソースRに関するロックワードLWがP2を格納しているので、プロセッサP4にリソースRをロックできない情報を送信する。
算出部102は、経過時間Eにt55−t54(=t55−LT)の値を格納し、第1期間として、たとえば、T2+T3−t55+t54(=D+W−E)を算出する。その後、算出部102は、プロセッサP4がリソースRをロックできないので、待ち時間Wに(T3+T4)の値を設定する。制御部103は、算出した第1期間に基づき、プロセッサP4が実行する処理を決める。
その後、プロセッサP2は、t56に、「Unlock(R,T2)」をアンロック部152に送信する。アンロック部152は、「Unlock(R,T2)」を受信するのに応じて、ロックワードLWを0(すなわち、どのプロセッサもロックを取得していない)に設定する。この例において、アンロック部152は、待ち時間Wを読み取り、待ち時間Wが0よりも大きいと判定するので、スリープ状態にあるプロセスをウェイクアップしない。
説明の便宜上、t56において、「Lock(R,T3)」に関する処理が開始されるものとする。尚、必ずしも、あるプロセッサがリソースを解放するタイミングと、他のプロセッサがロックを確保するタイミングとが同じである必要はない。
ロック部151は、t56において、「Lock(R,T3)」に関する処理を開始する。算出部102は、開始タイミングLTにt56(すなわち、システムタイマーの値)を格納し、ロック時間DにT3を格納し、さらに、待ち時間WにT4(T3+T4−T3)を格納する。この場合に、算出部102は、経過時間Eに0を格納してもよい。また、ロック部151は、ロックワードLWにP3を格納する。
その後、プロセッサP3は、t57に、「Unlock(R,T3)」をアンロック部152に送信する。アンロック部152は、「Unlock(R,T3)」を受信するのに応じて、ロックワードLWを0(すなわち、どのプロセッサもロックを取得していない)に設定する。この例において、アンロック部152は、待ち時間Wを読み取り、待ち時間Wが0よりも大きいと判定するので、スリープ状態にあるプロセスをウェイクアップしない。
説明の便宜上、t57において、「Lock(R,T4)」に関する処理が開始されるものとする。尚、必ずしも、あるプロセッサがリソースを解放するタイミングと、他のプロセッサがロックを確保するタイミングとが同じである必要はない。
ロック部151は、t57において、「Lock(R,T4)」に関する処理を開始する。算出部102は、開始タイミングLTにt57(すなわち、システムタイマーの値)を格納し、ロック時間DにT4を格納し、さらに、待ち時間Wに0(T4−T4)を格納する。この場合に、算出部102は、経過時間Eに0を格納してもよい。また、ロック部151は、ロックワードLWにP4を格納する。
その後、プロセッサP4は、「Unlock(R,T4)」をアンロック部152に送信する。アンロック部152は、「Unlock(R,T4)」を受信するのに応じて、ロックワードLWを0(すなわち、どのプロセッサもロックを取得していない)に設定する。この例において、アンロック部152は、待ち時間Wを読み取り、待ち時間Wが0であると判定するので、スリープ状態にあるプロセスをウェイクアップする。スリープ状態プロセスは、ウェイクアップシグナルを受信し、受信したウェイクアップシグナルに応じてウェイクアップする。すなわち、該プロセスは、スリープ状態から実行待ち状態に設定される。
ここで、プロセッサは、スリープ状態に設定される前に実行していたプロセスを、ウェイクアップ後に実行するとは限らない。
次に、ケース1及びケース2の場合において、制御部103が、第1期間に基づき、処理を選ぶ処理について説明する。以降の説明においては、制御部103は、第1期間、スリープウェイトするのに要する準備期間等に基づいて、プロセッサが第1期間において実行する処理を選ぶ。
ケース1:割り込み記憶部が割り込み処理を格納する場合。
割り込み処理部206は、割り込み記憶部が格納する割り込み処理のうち、割り込み処理に関連付けされた時間(たとえば、「実行時間」)iT2が最短の割り込み処理i2を選ぶ。
ここで、説明の便宜上、この例においては、第1期間が、時間iT2よりも長いと仮定する。
制御部103は、第1期間が、時間iT2よりも長いと判定するので、プロセッサに割り込み処理i2を実行する実行命令を送信する。プロセッサは、該実行命令を受信し、受信した命令に応じて、割り込み処理i2を実行する。
次に、割り込み処理部206は、割り込み記憶部が格納する割り込み処理のうち、時間iT1が最短の割り込み処理i1を選ぶ。制御部103は、時間iT1と、(第1期間−iT2)(新たに、第1期間とする)とを比較する。
ここで、説明の便宜上、この例においては、第1期間が、時間iT1よりも長いと仮定する。
制御部103は、第1期間が時間iT1よりも長いと判定するので、プロセッサに割り込み処理i1を実行する実行命令を送信する。
プロセッサは、該実行命令を受信する。
ここで、たとえば、割り込み処理i1は、拡張コンテキストを退避領域iEPSBに格納する処理を含むとする。
この場合に、割り込み処理部206は、拡張コンテキストを退避領域iEPSBに格納する。次に、プロセッサは、受信した実行命令に応じて、割り込み処理i1を実行する。次に、割り込み処理部206は、退避領域iEPSBから拡張コンテキストに格納する。
次に、割り込み処理部206は、割り込み記憶部が格納する割り込み処理のうち、時間iT3が最短の割り込み処理i3を選ぶ。制御部103は、時間iT3と、(第1期間−iT1)(新たに、第1期間とする)とを比較する。
ここで、説明の便宜上、この例においては、第1期間が、時間iT3よりも長いと仮定する。
制御部103は、第1期間が時間iT3よりも長いと判定するので、プロセッサに割り込み処理i3を実行する実行命令を送信する。
プロセッサは、該命令を受信し、受信した実行命令に応じて、割り込み処理i3を実行する。
次に、割り込み処理部206は、割り込み記憶部が格納する割り込み処理のうち、時間iT4が最短の割り込み処理i4を選ぶ。制御部103は、時間iT4と(、第1期間−iT3)(新たに、第1期間とする)とを比較する。
ここで、説明の便宜上、この例において、第1期間は、時間iT4よりも短いと仮定する。さらに、第1期間は、準備期間よりも短いと仮定する。
制御部103は、第1期間が時間iT4及び準備期間よりも短いと判定するので、プロセッサに、ビジーウェイトする命令を送信する。プロセッサは、該命令を受信し、受信した命令に応じて、ビジーウェイトする。
ケース2:割り込み記憶部が、第1期間に実行可能な割り込み処理を格納しない場合。
制御部103は、第1期間と、準備期間とを比較する。制御部103は、第1期間が準備期間よりも長いと判定する場合に、プロセッサにスリープウェイトする命令を送信する。プロセッサは、該命令を受信し、受信した命令に基づきスリープウェイトする。
プロセッサがスリープウェイトする場合に、プロセススイッチ207は、該プロセッサに、実行待ち状態にあるプロセスを実行する命令を送信する。プロセッサは、該命令を受信し、受信した命令に応じて、該プロセスを実行する。また、プロセススイッチ207は、実行待ち状態にあるプロセスがないと判定する場合に、プロセッサに、アイドルプロセスを実行する命令を送信する。プロセッサは、該命令を受信し、受信した命令に応じて、該アイドルプロセスを実行する。すなわち、プロセッサは、アイドル状態に設定される。
制御部103は、割り込み記憶部が第1期間において実行可能な割り込み処理を含まず、さらに、第1期間が準備期間よりも短い場合に、プロセッサに、ビジーウェイト間隔(たとえば、D+W−E)にてビジーウェイトする命令を送信する。プロセッサは、該命令を受信し、受信した命令に応じてビジーウェイトする。
次に、図7乃至図12を参照しながら、本実施形態に係る排他制御装置101における処理について説明する。図7は、ロック命令を受信する場合における、第2の実施形態に係る排他制御装置101における処理を表すフローチャートである。図8は、アンロック命令を受信する場合における、第2の実施形態に係る排他制御装置101における処理を表すフローチャートである。図9は、アップデート命令を受信する場合における、第2の実施形態に係る排他制御装置101における処理を表すフローチャートである。図10は、格納命令を受信する場合における、第2の実施形態に係る排他制御装置101における処理を表すフローチャートである。図11は、実行命令を受信する場合における、第2の実施形態に係る排他制御装置101における処理を表すフローチャートである。図12は、アイドル命令を受信する場合における、第2の実施形態に係る排他制御装置101における処理を表すフローチャートである。
まず、図7を参照しながら、排他制御装置101がロック命令に応じて行う処理について説明する。
ロック部151は、ロック命令を受信するのに応じて、あるプロセッサに対してロックワードLWを排他的にロック状態に設定できるか否かを判定する(ステップS701)。ロック部151は、設定できると判定する場合(ステップS701にてYESと判定)に、開始タイミングLTに、システムタイマー203が示す値を格納する(ステップS702)。ロック部151は、ロックワードLWを排他的にロック状態に設定できないと判定する場合に(ステップS701にてNOと判定)、該プロセッサをロック待ち状態に移行する。
次に、算出部102は、システムタイマー203が示す値から開始タイミングLTを引き、算出した結果を経過時間Eに格納する。算出部102は、さらに、ロック時間Dと経過時間Eとのうち大きな値を、ロック時間Dとして格納してもよい。
次に、算出部102は、式1に従い、第1期間を算出する(ステップS703)。
(第1期間)=D−E+W・・・(式1)。
すなわち、算出部102は、実行している排他制御に関して、ロック時間Dと、経過時間Eとを比較する。算出部102は、経過時間Eがロック時間Dよりも長いと判定する場合に、リソースが使用可能になるのを待つプロセスに関して、該排他制御に関連付けされた期間の総和し、算出した値を第1期間とする。また、算出部102は、経過時間Eがロック時間Dよりも短いと判定する場合に、リソースが使用可能になるのを待つプロセス及び排他制御に関する処理を実行するプロセスに関して、該期間の総和を算出する。次に、算出部102は、算出した総和から、経過時間Eを引くことにより、第1期間を算出する。
この処理により、排他制御に関するリソースを使用できない第1期間をさらに正確に推定できる。この理由は、算出部102が、たとえば、排他制御に関するリソースを使用する推定時間であるロック時間Dを、実際に該排他制御に関する処理を実行する経過時間Eに基づき修正した後に、第1期間を算出するからである。
次に、算出部102は、待ち時間Wに受信したロック命令に応じた期間を加え、算出した値を待ち時間Wに格納する(ステップS704)。
次に、制御部103は、割り込み記憶部に割り込み処理iが存在し、かつ、時間iTが最短の割り込み処理に関して、時間iTが第1期間よりも短い場合(ステップS705にてYESと判定)に、プロセッサに、割り込み処理iを命令する(ステップS707)。
次に、算出部102は、待ち時間Wから受信したロック命令に応じた期間を引き、算出した値を待ち時間Wに格納する(ステップS710)。次に、ロック部151は、ロックが取得できるか否かを調べる。以降、排他制御装置101は、ロックが取得できるまで上述した処理を繰り返し実行する。
また、制御部103は、割り込み記憶部が第1期間において実行可能な割り込み処理を記憶しない場合(ステップS705にてNOと判定)に、第1期間と、準備期間とを比較する(ステップS706)。制御部103は、第1期間が準備期間よりも長いと判定する場合(ステップS705にてYESと判定)に、プロセッサに、スリープウェイトする命令を送信する(ステップS708)。制御部103は、第1期間が準備期間よりも短いと判定する場合(ステップS705にてNOと判定)に、プロセッサに、ビジーウェイト間隔(たとえば、D+W−E)にてビジーウェイトする命令を送信する(ステップS709)。
次に、図8を参照しながら、排他制御装置101がアンロック命令に応じて行う処理について説明する。
算出部102は、ロック時間Dに0を格納する(ステップS801)。次に、アンロック部152は、ロックワードLWをアンロック状態に設定する(ステップS802)。次に、アンロック部152は、スリープ状態のプロセスが存在し、さらに、待ち時間Wが0であると判定する場合(ステップS803にてYESと判定)に、該プロセスにウェイクアップシグナルを送信することにより、該プロセスをウェイクアップする(ステップS804)。
上述した処理により、アンロック部152は、ロックが解放されるのを待つプロセスがない場合に、スリープしているプロセスをウェイクアップする。この結果、アンロック部152によれば、ウェイクアップする回数を低減することができる。
次に、図9を参照しながら、排他制御装置101がアップデート命令に応じて行う処理について説明する。
アップデート命令は、リソースRをロックしているプロセッサが、ロック時間Dを再設定する命令である。たとえば、プロセッサは、「Update(R,AT)」に、補正時間(正数または負数)ATを設定することにより、ロック時間Dを再設定する。アップデート部153は、アップデート命令を受信するのに応じて、(D+AT)を算出し、算出した結果をロック時間Dに格納する(ステップS901)。
次に、図10を参照しながら、排他制御装置101が格納命令に応じて行う処理について説明する。
格納命令は、処理iFuncと、割り込み処理に関連付けされた時間iT(たとえば、実行時間)と、退避領域iEPSBとを割り込み処理iとして設定し、設定した割り込み処理iに関する情報を、割り込み記憶部に格納する命令である。割り込み処理部206は、受信した格納命令に応じて、割り込み処理iに関する情報を割り込み記憶部に格納する(ステップS1001)。
次に、図11を参照しながら、排他制御装置101が実行命令に応じて行う処理について説明する。
実行命令は、割り込み処理iを実行する命令である。割り込み処理部206は、割り込み処理iに関する情報を、割り込み記憶部から読み取り、割り込み記憶部から読み取った情報を削除する(ステップS1101)。次に、割り込み処理部206は、読み取った情報が退避領域iEPSBを含む場合(ステップS1102にてYESと判定)に、プロセススイッチ207に信号を送信する。プロセススイッチ207は、該信号を受信し、受信した信号に基づき、拡張コンテキストを退避領域iEPSBに格納する(ステップS1105)。割り込み処理部206は、読み取った情報が退避領域iEPSBを含まない場合(ステップS1102にてNOと判定)に、上述した処理を実行しない。
次に、割り込み処理部206は、処理iFuncに関する命令をプロセッサに送信する。プロセッサは、該命令を受信し、受信した命令に応じて、処理iFuncに応じた処理を実行する(ステップS1103)。割り込み処理部206は、読み取った情報が退避領域iEPSBを含む場合(ステップS1104にてYESと判定)に、プロセススイッチ207に信号を送る。プロセススイッチ207は、該信号を受信し、受信した信号に基づき、退避領域iEPSBに退避した情報を拡張コンテキストに格納する(ステップS1106)。割り込み処理部206は、読み取った情報が退避領域iEPSBを含まない場合(ステップS1104にてNOと判定)に、上述した処理を実行しない。
次に、図12を参照しながら、排他制御装置101がアイドル命令に応じて行う処理について説明する。
割り込み処理部206は、まず、割り込み記憶部が割り込み処理を含むか否かを判定する(ステップS1201)。割り込み処理部206は、割り込み記憶部が割り込み処理を含むと判定する場合(ステップS1201にてYESと判定)に、割り込み記憶部に含まれる割り込み処理のうち、割り込み処理に関連付けされた時間が最長の割り込み処理を選ぶ(ステップS1204)。
割り込み処理部206が、割り込み記憶部が割り込み処理を含まないと判定する場合(ステップS1201にてNOと判定)に、アイドル処理部208は、ユーザプロセスに、実行待ち状態であるプロセスがあるか否かを判定する(ステップS1202)。アイドル処理部208は、実行待ち状態であるプロセスがあると判定する場合(ステップS1202にてYESと判定)に、該実行待ち状態であるプロセスのうち、最も高い優先度に関連付けされたプロセスに関する情報をプロセススイッチ207に送信する。プロセススイッチ207は、該情報を受信し、受信した情報に基づき、プロセッサに該プロセスを実行することを命じる(ステップS1205)。
アイドル処理部208は、ユーザプロセスに、実行待ち状態であるプロセスがないと判定する(ステップS1202にてNOと判定)場合に、プロセッサを一定時間ウェイトする(ステップS1203)。その後、該プロセッサは、上述した処理を繰り返してもよい。
尚、上述した説明において、アンロック部152、ロック部151、または、アップデート部153等の構成要素を用いて説明を行ったが、たとえば、算出部102、及び、制御部103が、上述した構成要素が実行する処理と同等の処理を行ってもよい。
次に、第2の実施形態に係るOS205に関する効果について説明する。
本実施形態に係るOS205によれば、第1の実施形態に係る排他制御装置101が有する効果に加え、さらに、排他制御に要する期間を短縮するという効果を有する。
この理由は、理由1及び理由2である。すなわち、
(理由1)第2の実施形態に係るOS205が有する構成は、第1の実施形態に係る排他制御装置101が有する構成を含むからである、
(理由2)算出部102は、第1の実施形態に係る排他制御装置101が有する算出部102よりも、簡便な手順に従い、第1期間を算出するからである。すなわち、第1の実施形態に係る算出部102は、命令において指示された期間(時間)に対して、様々な演算を適用したのに対し、本実施形態に係る算出部102は、該期間に関する総和を算出することにより第1期間を算出する。このため、演算数は、第1の実施形態に係る算出部102に比べ少ない。
本実施形態に係るOS205が有する効果は、後述のようにも説明することができる。
本実施形態に係るOS205によれば、排他制御に関するロック粒度が多様な場合であっても、高い並列処理性能を得ることができる。この理由は、リソースに関して、該リソースに関する排他制御に関連付けされた時間(期間)を指定することができるからである。排他制御装置101は、排他制御に関するロック粒度として、該時間を読み取る。これにより、排他制御装置101は、ロック粒度が多様な場合であっても、高い並列処理性能を得ることができる。
また、本実施形態に係るOS205によれば、排他制御において、メモリアクセスを低減することができる。この理由は、OS205が、上述した期間に基づき算出される第1期間に基づきロックワードLWを読み取るタイミングを算出する結果、ロックワードLWを読み取る回数が低減するからである。
また、本実施形態に係るOS205によれば、単位時間あたりに処理可能なスループットを改善できる。この理由は、割り込み処理において、該割り込み処理に関連付けされた時間(期間)を指定することができるからである。制御部103は、たとえば、該時間が短い割り込み処理から順にプロセッサに割り当てる。この結果、単位時間あたりに処理可能な処理数が増えるので、スループットは向上する。
尚、本発明は、上述したオペレーティングシステムの他に、共有並列プログラム内のユーザプロセス間における排他制御や同期制御、及び、大規模マルチノードシステムにおけるノード間の共有資源に対する排他制御や同期制御等に適用することができる。
(ハードウェア構成例)
上述した本発明の各実施形態における排他制御装置またはオペレーティングシステムを、1つの計算処理装置(情報処理装置、コンピュータ)を用いて実現するハードウェア資源の構成例について説明する。但し、係る排他制御装置またはオペレーティングシステムは、物理的または機能的に少なくとも2つの計算処理装置を用いて実現してもよい。また、係る排他制御装置及びオペレーティングシステムは、専用の装置として実現してもよい。
図13は、第1の実施形態及び第2の実施形態に係る排他制御装置またはオペレーティングシステムを実現可能な計算処理装置のハードウェア構成例を概略的に示す図である。計算処理装置20は、中央処理演算装置(Central_Processing_Unit、以降「CPU」と表す)21、メモリ22、ディスク23、及び、不揮発性記録媒体24を有する。計算処理装置20は、さらに、入力装置25、出力装置26、及び、通信インターフェース(以降、「通信IF」と表す。)27を有する。計算処理装置20は、通信IF27を介して、他の計算処理装置、及び、通信装置と情報を送受信することができる。
不揮発性記録媒体24は、コンピュータが読み取り可能な、たとえば、コンパクトディスク(Compact Disc)、デジタルバーサタイルディスク(Digital_Versatile_Disc)、ブルーレイディスク(Blu−ray Disc。登録商標)、ユニバーサルシリアルバスメモリ(USBメモリ)、ソリッドステートドライブ(Solid State Drive)等である。不揮発性記録媒体24は、電源を供給しなくても係るプログラムを保持し、持ち運びを可能にする。不揮発性記録媒体24は、上述した媒体に限定されない。また、不揮発性記録媒体24の代わりに、通信IF27を介して、通信ネットワークを介して係るプログラムを持ち運びしてもよい。
すなわち、CPU21は、ディスク23が記憶するソフトウェア・プログラム(コンピュータ・プログラム:以下、単に「プログラム」と称する)を、実行する際にメモリ22にコピーし、演算処理を実行する。CPU21は、プログラム実行に必要なデータをメモリ22から読み取る。表示が必要な場合には、CPU21は、出力装置26に出力結果を表示する。外部からプログラムを入力する場合、CPU21は、入力装置25からプログラムを読み取る。CPU21は、上述した図1、または、図3に示す各部が表す機能(処理)に対応するところのメモリ22にある処理プログラム(図2、または、図7乃至図12)を解釈し実行する。CPU21は、上述した本発明の各実施形態において説明した処理を順次行う。
すなわち、このような場合、本発明は、係る処理プログラムによっても成し得ると捉えることができる。更に、係る処理プログラムが記録されたコンピュータ読み取り可能な不揮発性の記録媒体によっても、本発明は成し得ると捉えることができる。
101 排他制御装置
102 算出部
103 制御部
151 ロック部
152 アンロック部
153 アップデート部
501 期間
502 処理
201 プロセッサ
203 システムタイマー
204 メモリ
205 OS
206 割り込み処理部
207 プロセススイッチ
208 アイドル処理部
20 計算処理装置
21 CPU
22 メモリ
23 ディスク
24 不揮発性記録媒体
25 入力装置
26 出力装置
27 通信IF

Claims (10)

  1. 排他制御命令に関連付けされた第2期間を表す情報に基づき、前記排他制御命令に関する計算機リソースを使用しない第1期間を算出する算出手段と、
    前記第1期間に基づき、前記第1期間において実行する処理を決める制御手段と
    を備えることを特徴とする排他制御装置。
  2. 前記制御手段は、割り込み処理に関連付けされた第4期間と、前記第1期間とに基づき、前記処理を決める
    ことを特徴とする請求項1に記載の排他制御装置。
  3. 前記算出手段は、前記排他制御命令に関する計算機リソースを使用する第1処理、及び、前記排他制御命令に関する計算機リソースが使用可能になるのを待つ第2処理に関して、前記第2期間の総和を算出することにより、前記第1期間を算出する
    ことを特徴とする請求項1または請求項2に記載の排他制御装置。
  4. 前記算出手段は、前記排他制御命令に関する計算機リソースを使用する経過時間が、前記第2期間よりも長いと判定する場合に、前記第2処理に関して、前記第2期間の総和を算出し、前記経過時間が、前記第2処理よりも短いと判定する場合に、前記第1処理及び前記第2処理に関して、前記第2期間の総和を算出し、算出した総和から前記経過時間を引くことにより、前記第1期間を算出する
    ことを特徴とする請求項1乃至請求項3のいずれかに記載の排他制御装置。
  5. 前記制御手段は、前記第1期間において実行する処理として、前記第1期間が前記第4期間よりも長いと判定する場合に、前記割り込み処理を実行し、前記第1期間が前記第4期間よりも短く、さらに、スリープウェイトに要する第3期間よりも長い場合に、前記スリープウェイトする処理を実行し、前記第1期間が、前記第3期間よりも短い場合に、ビジーウェイトする処理を実行することを決める選択処理を実行する
    ことを特徴とする請求項2乃至請求項4のいずれかに記載の排他制御装置。
  6. 前記制御手段は、複数の前記割り込み処理のうち、前記処理期間が最短の割り込み処理に関連付けされた前記第4期間に基づき、前記選択処理を実行する
    ことを特徴とする請求項5に記載の排他制御装置。
  7. 実行待ち状態である第3処理がある場合に、前記スリープウェイトに応じてスリープ状態となったプロセッサに、前記第3処理に関する処理を命令し、前記第3処理がない場合に、前記プロセッサに、前記第4期間が最長の前記割り込み処理を命令する第2制御部
    をさらに備えることを特徴とする請求項2乃至請求項6のいずれかに記載の排他制御装置。
  8. 請求項1乃至請求項7のいずれかに記載の排他制御装置と、
    前記排他制御装置が決める処理に従い、コンピュータシステムを制御する処理手段と
    を備えることを特徴とするオペレーティングシステム。
  9. 情報処理装置を用いて、排他制御命令に関連付けされた第2期間を表す情報に基づき、前記排他制御命令に関する計算機リソースを使用しない第1期間を算出し、前記第1期間に基づき、前記第1期間において実行する処理を決めることを特徴とする排他制御方法。
  10. 排他制御命令に関連付けされた第2期間を表す情報に基づき、前記排他制御命令に関する計算機リソースを使用しない第1期間を算出する算出機能と、
    前記第1期間に基づき、前記第1期間において実行する処理を決める制御機能と
    をコンピュータに実現させることを特徴とする排他制御プログラム。
JP2014125990A 2014-06-19 2014-06-19 排他制御装置、排他制御方法、排他制御プログラム、及び、オペレーティングシステム Pending JP2016004508A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014125990A JP2016004508A (ja) 2014-06-19 2014-06-19 排他制御装置、排他制御方法、排他制御プログラム、及び、オペレーティングシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014125990A JP2016004508A (ja) 2014-06-19 2014-06-19 排他制御装置、排他制御方法、排他制御プログラム、及び、オペレーティングシステム

Publications (1)

Publication Number Publication Date
JP2016004508A true JP2016004508A (ja) 2016-01-12

Family

ID=55223714

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014125990A Pending JP2016004508A (ja) 2014-06-19 2014-06-19 排他制御装置、排他制御方法、排他制御プログラム、及び、オペレーティングシステム

Country Status (1)

Country Link
JP (1) JP2016004508A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110784855A (zh) * 2018-07-31 2020-02-11 佳能株式会社 通信装置和控制方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110784855A (zh) * 2018-07-31 2020-02-11 佳能株式会社 通信装置和控制方法
US11589409B2 (en) 2018-07-31 2023-02-21 Canon Kabushiki Kaisha Communication apparatus and control method
CN110784855B (zh) * 2018-07-31 2023-07-04 佳能株式会社 通信装置和控制方法

Similar Documents

Publication Publication Date Title
JP4580845B2 (ja) タスク実行装置
JP6713906B2 (ja) ソリッドステートドライブ及びその動作方法
JP4707603B2 (ja) リアルタイムosにおける処理時間配分方法
US9465675B2 (en) Communication control device, information processing apparatus, parallel computer system, and control method for parallel computer system
JP5347451B2 (ja) マルチプロセッサシステム、競合回避プログラム及び競合回避方法
JP2007207026A (ja) Dma転送装置
WO2007028807A1 (en) Managing a resource lock
WO2013185571A1 (zh) 多线程虚拟流水线处理器的线程控制和调用方法及其处理器
JP5660149B2 (ja) 情報処理装置、ジョブスケジューリング方法およびジョブスケジューリングプログラム
US20150026694A1 (en) Method of processing information, storage medium, and information processing apparatus
US9740530B2 (en) Decreasing the priority of a user based on an allocation ratio
JP7306966B2 (ja) 平均オブジェクト参照に基づいた、コピー・ガベージ・コレクションのためのワーク・スティーリングにおけるスピン・カウントの削減
CN112799696A (zh) 固件升级方法和相关设备
US20130125131A1 (en) Multi-core processor system, thread control method, and computer product
US9213511B2 (en) Changing order of print jobs in a print queue
JP4523910B2 (ja) 並列処理装置及び並列処理方法及び並列処理プログラム
US20170262310A1 (en) Method for executing and managing distributed processing, and control apparatus
JP2016004508A (ja) 排他制御装置、排他制御方法、排他制御プログラム、及び、オペレーティングシステム
JP2017535853A (ja) 計算の非決定性の下でのリカバリ及び耐障害
JP2006085428A (ja) 並列処理システム、インタコネクションネットワーク、ノード及びネットワーク制御プログラム
JP6368452B2 (ja) 非同期のデバイスによって実行されるタスクのスケジューリングの向上
JP2017016219A (ja) 電子機器および給電制御プログラム
EP3340011A1 (en) Electronic devices and operation methods of the same
JP6264803B2 (ja) ジョブ抽出プログラム、ジョブ抽出装置、及びジョブ抽出方法
JP2014182507A (ja) 計算機及び排他制御方法及び排他制御プログラム