2010年5月10日月曜日

勉強: マルチタスクプログラミング

本格的なマルチタスクプログラミングは初めてだ。勉強した事を纏める。
1:セマフォー(Semaphore)とは
マルチタスク環境化で、どれだけのプログラムを並列にして走らせるかを決める為のもの。
P操作とV操作からなるらしく、initialize,finalizeとほぼ同義。ただし、initializeをする時に
セマフォー変数を1減算して、そんでもってfinalize時に1加算する。これによって、管理するんだが
何故、そんなことで管理できるかと言うと理論はとてもシンプルで。。。
 一回に定員3名まで実行できる人がいる。
  ここに対して、処理をやってくれとお願いに来る人が4人来る。
 始めの3人は全然問題ないので、一気に実行する。
 一人実行が開始される毎に、定員が1ずつ減っていくので3⇒2⇒1と減っていき、
 3人目の実行が開始された時点で0人の定員となる。4人目はやってきても、
 もう入る余地がないから、待つ。一人目の人が処理終了になった段階で、
 定員は1増える。この段階で待ち状態であった4人目の処理が開始され再び定員が0
 となる。
とまあ、こんな感じで部屋に対して入ったり出たりする最大数を定義するのがセマフォー変数。
この一連の処理のことをセマフォーと言うそうで。間違ってたら突っ込んでください。。。