セマフォ
① 物語性を取り入れた説明
昔々、小さな町に一軒の図書室がありました。
この図書室には、ある魔法の本があり、その本には町の歴史と未来が書かれていて、町の子どもたちは誰もが一度はその本を手に取りたいと願っていました。
しかし、この魔法の本には一つの厳しいルールがありました。一度に一人しか読むことができないというものです。もしルールを破り二人以上で読もうとすると、魔法の力が混ざり合い、本はその魔力を失ってしまいます。
このルールは、コンピュータの世界で「クリティカルセクション」と呼ばれる概念に似ています。
クリティカルセクションは、一度に一つのプロセスのみが実行できるコードの区域であり、同時に複数のプロセスがアクセスすると問題が発生します。
この問題を解決するために、図書室の司書は「魔法のしおり(セマフォ変数)」というシステムを考案しました。このしおりは、排他制御の鍵となり、しおりを持つ子どもだけが魔法の本を読む権利を得ました。しおりがなければ、本を手にすることはできず、自分の番が来るまで待たなければなりませんでした。この魔法のしおりがセマフォの原理を表しています。
実際のITシステムにおけるセマフォ変数は、資源へのアクセスを制御するカウンターを持っており、特定のリソースが利用可能かどうかを管理します。
利用可能な場合は、プロセスはそのリソースを安全に使用することができ、利用中の場合は他のプロセスは待たなければなりません。これによって、リソースの一貫性と安全性が保たれます。
セマフォの定義: セマフォとは、複数のプロセスが共有リソースへのアクセスを要求した際に、排他制御を可能にするための仕組みです。特にクリティカルセクションへの同時アクセスを制御し、一度に一つのプロセスのみがそのセクションに入れるようにすることで、データの競合や不整合を防ぎます。セマフォ変数は、リソースが利用可能な状態かどうかを示す信号として機能し、その値に基づいてプロセスがリソースを使用できるか、または待機する必要があるかが決まります。
セマフォの命令の仕方(P操作・V操作)はコチラの記事