読者です 読者をやめる 読者になる 読者になる

ナイフの缶詰

心は少年、身は中年。常に好奇心を持ち、全てのものに感謝しながら、気づいた事を書いていきたい。

何もしていないとき、何をしているのか? その3

コンピュータの世界では「デットロック」という問題がある、

・Aを処理するためにBが必要なのでAをキープしてBの空きを待つ

・Bを処理するためにAが必要なのでBをキープしてAの空きを待つ

二人の子供が互いに、「はさみ」と「のり」を占有し貸しっこできない状態。これでは先に進まないし何も作れない。こういうのをデットロックという。お互いがお互いのリソースを求め合い先に進まない。堂々巡りに似ていますよね。

 ではデットロックが起きたとき、コンピューターはどうするのだろうか?

こういう問題の時、どうするべきか?というのはコンピューターにとっては、割と高度な問題になる。のりをもっているA君とはさみをもっているB君どっちも悪くはない。悪いのはリソースを競合させてしまった「せんせい」にある。かといってほったらかしておいても、にらみ合いは続く。人間の世界であれば30分もすれば均衡は崩れ、どちらかが根負けすることになるが、残念ながらコンピュータの世界に根負けという言葉はない。ひたすら相手のリソースが空くのをにらみ続けることになる。一昔前のコンピューターでは「せんせい」にあたる仕組みが仲裁に入る。でもいちいち仲裁に入ると色々な問題が出てくるという別の問題もあります。

Windowsではこの問題を解決するために、今までとは全く違う方法が用いられた。Windowsではにらみ合いが起きると、そのうちの1人をえこひいきする。せんせいは出てこない。代わりに年長者にものすごい権力を与えて、ほかの人が握っている「のり」を取り上げる力を一瞬だけ分け与えるのです。こうして力の均衡をあえて崩すことで、デッドロックを回避しているのです。では人間はどうやって堂々巡りを回避すればいいのだろうか?

つづく