モニタ (同期)

並行計算の分野におけるモニタ: monitor)とは、共有オブジェクトの状態が複数のスレッドから同時にアクセスされることを防ぎ、かつ状態が変化するまで待機させるような、同期のための構成概念である。モニタはスレッドに、排他アクセス権を再取得してタスク英語版を再開する前に、特定の条件が満たされるまで待機するために、排他アクセス権を一時的にあきらめさせるメカニズムを提供する。モニタはミューテックスロック)と、少なくとも1つの条件変数: condition variable)から成る。条件変数は、オブジェクトの状態が変化したときに明示的にシグナルされ、このときミューテックスは条件変数を待機している別のスレッドに一時的に明け渡されている。

モニタの別の定義として、ミューテックスをラップするスレッドセーフなクラスまたはオブジェクトのことを指す。

パー・ブリンチ=ハンセン英語版が発明し、Concurrent Pascal英語版 言語に最初に実装され、Solo Operating System でのプロセス間通信方式として使われた。

共有リソース(例えば変数ハードウェア機器などの計算資源)への同時アクセスを防止するための単純な排他制御にはミューテックスを使えばよいが、通常ミューテックスを獲得できるまでスレッドは待機し続けることになる。モニタは特定の条件が満たされるまでスレッドが効率的かつ柔軟に待機できる手段を提供する。

相互排他

モニタは以下のものから構成される:

モニタ・プロシージャは何かをする前にロックをかけ、処理が完了するか、ある条件を待つことになるまでそれをかけておく(条件については後述)。各プロシージャがロックを解放する際に不変条件が真であることを保証するなら、競合状態となるようなリソースの状態は各タスクからは見えないということになる。

単純な例として、銀行口座のトランザクションのためのモニタを考える。

monitor account {
  int balance := 0
  
  function withdraw(int amount) {
    if amount < 0 then error "Amount may not be negative"
    else if balance < amount then error "Insufficient funds"
    else balance := balance - amount
  }
  
  function deposit(int amount) {
    if amount < 0 then error "Amount may not be negative"
    else balance := balance + amount
  }
}

この場合のモニタ不変条件は、簡単に言えば「新たな操作を行う際にそれ以前の全操作が balance に反映されていなければならない」ということになる。これはコード自身には書かれていないが、通常コメントに記載されるだろう。例えばEiffelのような言語は不変条件のチェックを取り入れており、ロックはコンパイラによって追加される。これはプログラマがロックとアンロックをいちいち書かなければならない言語よりも安全で信頼性が高い。

条件変数

ビジーウェイト状態となるのを防ぐため、プロセスは互いにそのイベントを通知する手段を持っている必要がある。モニタはこれを条件変数(condition variable)で実現する。モニタが処理を進める際にある条件が真になっていなければならないとしたとき、対応する条件変数上で待つ。待つにあたってロックを解放し、そのプロセスは実行可能な状態ではなくなる。別のプロセスがその後その条件を真にした場合、条件変数を使ってその条件を待っているプロセスに通知する。通知されたプロセスは再度実行可能状態となってロックを獲得し、処理を続行できる。

以下のモニタは条件変数を使ってプロセス間通信チャンネルを実装している。この通信チャンネルは一度に1つの整数しか格納できない。

monitor channel {
  int contents
  boolean full := false
  condition snd
  condition rcv

  function send(int sent) {
    if full then wait(rcv)
    contents := sent
    full := true
    notify(snd)
  }

  function receive() {
    var int received

    if not full then wait(snd)
    received := contents
    full := false
    notify(rcv)
    return received
  }
}

ある条件上で待ち状態となる際にロックを解放させられるため、待とうとするプロセス(スレッド)は実際に待ち状態となる前にモニタ不変条件が真であることを保証しなければならない。上の例では通知する側にも同じことが言える。

初期のモニタの実装では、条件変数が真となったことを通知された待ち状態のプロセスは即座にロックを獲得して処理を再開するため、条件変数は真であり続けることが保証されていた。このような実装は非常に複雑でオーバーヘッドも大きい。また、任意のプロセスを中断できる一般的なスケジューリング方式とも相容れない。そのため、条件変数の実装や意味論が研究されてきた。

最近[いつ?]の実装では、通知してもいきなり制御が奪われることはなく、待ち状態のプロセスを単に実行可能状態にする。通知を行ったプロセスはロックを保持し続け、モニタ関数を抜けるときにロックを解放する。この方式の副作用として、通知を行う際にモニタ不変条件が真であることを保証する必要がなく(ロックを保持しており、他のプロセスは動けないため)、待っていたプロセスは再度条件が真であるかチェックしなければならない。特にモニタ関数に if test then wait(cv) という文があったとき、この wait(cv) から戻ってくるまでに別のプロセスが動作して条件変数を再び偽にする可能性がある。そのため、この文を while test do wait(cv) のように書き直して処理を続行する前に再度条件変数をチェックしなければならない。

ある条件変数で待っているプロセス群全てを実行可能状態にする実装もある。例えば、複数のプロセスが何らかの記憶装置に空きができるのを待っている場合などに有効である。というのも記憶装置上の領域を解放した場合、その解放したサイズと待っているサイズがどう対応するかはスケジューラにはわからないため、とりあえず全部を実行可能とする必要があるためである。

条件変数の実装例を以下に示す:

conditionVariable{
  int queueSize = 0;
  semaphore lock;
  semaphore waiting;
  
  wait(){
     lock.acquire();
     queueSize++;
     lock.release();
     waiting.down();
  }
  
  signal(){
     lock.acquire();
     if (queueSize > 0){
        waiting.up();
     }
     lock.release();
  }
}

歴史

Per Brinch Hansen はアントニー・ホーアのアイデアに基づいて最初にモニタを考案し実装した。その後ホーアが論理的フレームワークを構築し、本来のセマフォと能力的に等価であることを示した。

以下のようなプログラミング言語でモニタがサポートされている。

その他、多数の言語およびライブラリによってサポートされている。POSIXスレッドライブラリ (Pthreads) ではミューテックスと条件変数を表現する抽象オブジェクトpthread_mutex_tpthread_cond_tおよびそれらを操作する関数群[6]が用意されている。Boost C++ライブラリboost::mutexboost::condition_variable[7]の実装には、POSIX環境ではPthreadsが利用されている。これらの設計は、前述のC++11で標準化されたスレッドライブラリの原型にもなった。なお、Windows APIには条件変数の直接的なサポートが長らく存在しなかったため、BoostのWin32実装では匿名セマフォが使われている[8]Microsoft Windows VistaおよびMicrosoft Windows Server 2008以降で条件変数のネイティブAPIサポートが追加された[9]

脚注

注釈

  1. ^ .NETのMonitorは単純なミューテックスを実現するためのクラスでもあり、C#やVB.NETなどのlockステートメントは、コンパイラによって内部的にはMonitorクラスを使用したコードに展開される[2]

出典

外部リンク

Read other articles:

العلاقات الطاجيكستانية الميانمارية طاجيكستان ميانمار   طاجيكستان   ميانمار تعديل مصدري - تعديل   العلاقات الطاجيكستانية الميانمارية هي العلاقات الثنائية التي تجمع بين طاجيكستان وميانمار.[1][2][3][4][5] مقارنة بين البلدين هذه مقارنة عامة ومرج...

 

 

Baseball team Allentown Ambassadors Founded 1997 Ballpark Bicentennial Park Based in Allentown, Pennsylvania Team Colors Red, White, Blue (1997–2000) Red, White, Black (2001–2003) League Northeast League, 1997–1999, 2003 Northern League 2000–2002 Playoff Appearances 3: 1998, 1999, 2001 Owner Peter Karoly The Allentown Ambassadors were an independent baseball team that competed in the Northeast League and the Northern League from 1997 until 2003. They played their home games at Bicente...

 

 

v · mIntercommunalités de la Côte-d'Or Métropole Dijon Métropole Communauté d'agglomération Beaune Côte et Sud Communautés de communes Auxonne Pontailler Val de Saône Forêts, Seine et Suzon Gevrey-Chambertin et Nuits-Saint-Georges Mirebellois et Fontenois Montbardois Norge et Tille Ouche et Montagne Pays d'Alésia et de la Seine Pays d'Arnay Liernais Pays Châtillonais Plaine Dijonnaise Pouilly-en-Auxois - Bligny-sur-Ouche Rives de Saône Saulieu Terres d'Auxois Tille et Vene...

Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus. La mise en forme de cet article est à améliorer (mars 2023). La mise en forme du texte ne suit pas les recommandations de Wikipédia : il faut le « wikifier ». Note de bas de page notée entre parenthèse dans un ouvrage en français d'Alfred Fouillée paru en 1895. La note de bas de page ou note en bas de page, aussi appelée note infrapaginale, est une forme littéraire, consistant en une ou ...

 

 

Basilika Bunda Para PengungsiBasilika Minor Bunda Para PengungsiBasilika Bunda Para PengungsiLokasiCiudad VictoriaNegaraMeksikoDenominasiGereja Katolik RomaArsitekturStatusBasilika minorStatus fungsionalAktif Basilika Bunda Para Pengungsi adalah sebuah gereja basilika minor Katolik yang terletak di Ciudad Victoria, Meksiko. Basilika ini didedikasikan kepada Gelar Maria yaitu Bunda Para Pengungsi. Basilika ini diberikan statusnya pada tahun 1990.[1] Lihat juga Gereja Katolik Roma Gerej...

 

 

River mentioned in the Vedas and ancient Indian epics For other rivers of the same name, see Saraswati River (disambiguation). Vedic and present-day Gagghar-Hakra river-course, with Aryavarta/Kuru Kingdom, and (pre-)Harappan Hakkra/Sutlej-Yamuna paleochannels as proposed by Clift et al. (2012) and Khonde et al. (2017).[a] See also this satellite image. 1 = ancient river 2 = today's river 3 = today's Thar desert 4 = ancient shore 5 = today's shore 6 = today's town 7 = dried-up Harappan...

American politician Timothy FullerMember of the U.S. House of Representativesfrom Massachusetts's 4th districtIn officeMarch 4, 1817 – March 3, 1825Preceded byAsahel StearnsSucceeded byEdward EverettMember of the Massachusetts SenateIn office1813-1816 Personal detailsBorn(1778-07-11)July 11, 1778Chilmark, MassachusettsDiedOctober 1, 1835(1835-10-01) (aged 57)Groton, MassachusettsPolitical partyDemocratic-RepublicanAlma materHarvard UniversityOccupationLawyer, schoo...

 

 

Pour les articles homonymes, voir Jiménez. Jiménez Sastre est un nom espagnol. Le premier nom de famille, paternel, est Jiménez ; le second, maternel, souvent omis, est Sastre. José María JiménezInformationsNom de naissance José María Jiménez SastreSurnom El ChavaNaissance 6 février 1971El BarracoDécès 6 décembre 2003 (à 32 ans)MadridNationalité espagnoleSpécialité grimpeurÉquipes professionnelles 09.1992-12.1992Banesto (stagiaire)1993-2000Banesto2001-2002iBanesto...

 

 

سفارة السويد في باكستان السويد باكستان الإحداثيات 33°44′10″N 73°04′32″E / 33.73612°N 73.07549°E / 33.73612; 73.07549   البلد باكستان  المكان إسلام آباد الاختصاص باكستان  الموقع الالكتروني الموقع الرسمي  تعديل مصدري - تعديل   سفارة السويد في باكستان هي أرفع تمثيل دبلوما�...

若纳斯·萨文比Jonas Savimbi若纳斯·萨文比,摄于1990年出生(1934-08-03)1934年8月3日 葡屬西非比耶省Munhango(葡萄牙語:Munhango)逝世2002年2月22日(2002歲—02—22)(67歲) 安哥拉莫希科省卢库塞效命 安哥拉民族解放阵线 (1964–1966) 争取安哥拉彻底独立全国联盟 (1966–2002)服役年份1964 – 2002军衔将军参与战争安哥拉独立战争安哥拉內戰 若纳斯·马列罗·萨文比(Jonas Malheiro Savimbi,1...

 

 

2001 studio album by Joe Lynn TurnerSlamStudio album by Joe Lynn TurnerReleased8 October 2001 [1]GenreRockLength53:50LabelMTMProducerBob Held & Joe Lynn TurnerJoe Lynn Turner chronology Holy Man(2000) Slam(2001) JLT(2003) Slam is the 7th solo album of Joe Lynn Turner released in 2001. In 2006, the album was reissued with a bonus track 'Challenge Them All' which replaced the track 'Cover Up'.[2] Track listing Bloodsucker (Held/Kajiyama/Turner) - 4:17 Eye for an Eye ...

 

 

Військово-музичне управління Збройних сил України Тип військове формуванняЗасновано 1992Країна  Україна Емблема управління Військово-музичне управління Збройних сил України — структурний підрозділ Генерального штабу Збройних сил України призначений для планува...

一中同表,是台灣处理海峡两岸关系问题的一种主張,認為中华人民共和国與中華民國皆是“整個中國”的一部份,二者因為兩岸現狀,在各自领域有完整的管辖权,互不隶属,同时主張,二者合作便可以搁置对“整个中國”的主权的争议,共同承認雙方皆是中國的一部份,在此基礎上走向終極統一。最早是在2004年由台灣大學政治学教授張亞中所提出,希望兩岸由一中各表�...

 

 

Australian rules football club Belconnen MagpiesNamesFull nameBelconnen Magpies Football ClubClub songWe're a Happy Team Belconnen (to the tune of Yankee Doodle Boy)Club detailsFounded1987; 37 years ago (1987)Colours     CompetitionAFL CanberraPresidentScott ReidCoachJames BennettCaptain(s)Jack BakerGround(s)The Adero Law Nest (Kippax Oval)Uniforms Home Other informationOfficial websitebelconnenfc.com.au The Belconnen Magpies Football Club is an Australian ru...

 

 

مجرة الطوقان القزمة جزء من المجموعة المحلية  الكوكبة الطوقان رمز الفهرس PGC 69519 (فهرس المجرات الرئيسية)[1]SGC 223828-6440.9 (كتالوج جنوب غالاكسي)LEDA 69519 (ليون-ميودون قاعدة بيانات خارج المجرة)  تاريخ الاكتشاف 1990  المطلع المستقيم 22سا 41د 49.0ث[2] الميل −64° 25′ 1...

العلاقات الغيانية اللاوسية غيانا لاوس   غيانا   لاوس تعديل مصدري - تعديل   العلاقات الغيانية اللاوسية هي العلاقات الثنائية التي تجمع بين غيانا ولاوس.[1][2][3][4][5] مقارنة بين البلدين هذه مقارنة عامة ومرجعية للدولتين: وجه المقارنة غيانا لاوس ال�...

 

 

1348 هـمعلومات عامةجزء من تقويم هجري تاريخ البدء 8 يونيو 1929[1] تاريخ الانتهاء 28 مايو 1930[1]29 مايو 1930 المواليد قائمة مواليد 1348 هـ الوفيات قائمة وفيات 1348 هـ لديه جزء أو أجزاء محرم 1348 هـصفر 1348 هـربيع الأول 1348 هـ 1347 هـ 1349 هـ تعديل - تعديل مصدري - تعديل ويكي بيانات قرن: قرن 13 - قرن...

 

 

Buku kode Departemen Luar Negeri AS yang dikeluarkan pada tahun 1899, contoh kode satu bagian, di Museum Kriptologi Nasional Buku kode adalah jenis dokumen yang digunakan untuk mengumpulkan dan menyimpan kode. Awalnya buku kode sering kali secara harfiah diartikan seperti buku biasa lainnya, tetapi saat ini buku kode adalah buku catatan lengkap dari serangkaian kode, terlepas dari format fisiknya yang seperti buku biasa. Dalam kriptografi, buku kode adalah dokumen yang digunakan untuk membant...

American politician (1860–1943) This article relies largely or entirely on a single source. Relevant discussion may be found on the talk page. Please help improve this article by introducing citations to additional sources.Find sources: James W. Dunbar – news · newspapers · books · scholar · JSTOR (May 2020) James Whitson DunbarMember of the U.S. House of Representativesfrom Indiana's 3rd districtIn office1919–1923Preceded byWilliam E. ...

 

 

American semiconductor manufacturer National SemiconductorCompany typeSubsidiaryIndustrySemiconductorsFoundedMay 27, 1959; 65 years ago (1959-05-27) in Danbury, Connecticut, United StatesDefunctSeptember 23, 2011; 12 years ago (2011-09-23)FateAcquired by Texas Instruments[1]HeadquartersSanta Clara, California,United StatesKey peopleDonald Macleod, Chairman & CEOProductsSemiconductorsRevenue $1.42 billion USD (2010)Operating income $325.8 million...