並行処理

記事数:(2)

アルゴリズム

セマフォとは?意味・仕組み・活用例をわかりやすく解説

複数の処理が同じ資源を使いたい時に、順番を守らせて取り合いを防ぐ仕組み、それが信号機です。この信号機は、コンピュータの中の大切な資源を、複数のプログラムが同時に使うことで起こる問題を防ぐためにあります。 たとえば、みんなで使う印刷機や、情報の保管庫を想像してみてください。複数のプログラムが同時に印刷しようとすると、印刷物が混ざってしまったり、印刷機が壊れてしまうかもしれません。情報の保管庫でも、同時に書き込もうとすると、情報がぐちゃぐちゃになってしまう可能性があります。 このような混乱を防ぐために、信号機は資源への入り口を守っています。信号機は、数取り器のような働きをします。この数取り器は、資源に入れるプログラムの数を表します。資源に入れる時には、数取り器の数を一つ減らし、使い終わったら一つ増やします。 もし数取り器がゼロになったら、それは資源が満員で、誰も入れないことを示します。後から来たプログラムは、数取り器に空きができるまで待たなければなりません。 このように、信号機は資源の利用を順番に管理することで、複数のプログラムが安全に資源を使えるように調整します。プログラム同士の衝突を防ぎ、スムーズな動作を実現する重要な役割を担っているのです。まるで交通整理をするように、プログラムのアクセスを制御し、コンピュータ内の秩序を守っているのです。
アルゴリズム

プログラムを複数で使う:再入可能とは?

何度も使えるという考え方は、複数の利用者や複数の処理の流れが同時に同じプログラムを呼び出しても、それぞれが正しく動くことを意味します。まるで各利用者ごとに専用のプログラムがあるかのように、お互いに邪魔することなく、それぞれの処理を進めることができます。 この性質を「再入可能」と言い、再入可能なプログラムは資源を有効に使えるため、現代の計算機システムにとって重要です。 たとえば、よく使われる例として、計算機の動作全体を管理する基本部分(オペレーティングシステムのカーネル)や、様々なプログラムで共通して使われる部品のようなプログラム(ライブラリ関数)があります。これらは多くが再入可能になるように作られています。 なぜ再入可能であることが重要なのかというと、複数のプログラムが同時にシステムの資源を使えるようにすることで、システム全体の性能を上げることができるからです。もしプログラムが再入可能でないと、ある利用者がプログラムを使っている間、他の利用者は待たなければなりません。これは、計算機の資源を有効に使えていない状態と言えます。 再入可能にするためには、プログラムの中で値を保存する場所の使い方に注意深く配慮する必要があります。それぞれの利用者や処理の流れが、自分専用の保存場所を持っているように設計することで、他の利用者や処理の流れによる変更の影響を受けないようにします。 このような工夫によって、プログラムは複数の利用者から同時に使われても、それぞれが正しく動作し、システム全体の効率を高めることに貢献します。