哲学者の食事問題

読み:てつがくしゃのしょくじもんだい
外語:dining philosophers 英語
品詞:名詞

並列プログラミングにおいて、各プロセスの協調をどうやって取るか、という問題に関する比喩。

並行処理の研究題材としてエドガー・ダイクストラ(Edsger Wybe Dijkstra)が提唱した。

目次

中央にスパゲッティが盛られた円卓の回りに5人の哲学者が座っており、それぞれの前に皿が1枚置かれ、その右側にフォークが1本置かれる。

各哲学者から見ると、左右に1本ずつフォークが置かれているように見えるが、テーブル全体では5本しかフォークはない。哲学者は普段は考え事をしているが、空腹になると、まず自分の右側にあるフォークを取り、次に自分の左にあるフォークを取ってスパゲティを自分の皿に盛り、左のフォークを元の場所に戻して右のフォークで食事し、食事が終わると右のフォークを置いてまた考え事に戻る。

もし自分の使いたいフォークを他の人が使っている場合には、それが空くまで待っている。

普段はこれで問題がないが、ある瞬間に哲学者が5人とも食事をしたいと思った場合を想定する。

全員が右のフォークを手に取り、左隣の哲学者が使用中の左のフォークが空くのを待つが、その左の哲学者も同じ状況になるので、結果としていつまでも食事ができなくなってしまう。これは「デッドロック」と呼ばれる。

これを避ける方法を考えるのが、哲学者の食事問題である。

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club