私は、Abraham Silberschatz らによるオペレーティング システムの概念という教科書を読んでいます。プロセスの同期の章で、同期が必要なすべてのプロセスに while(TRUE) ループをほとんど使用していることがわかりました。たとえば、哲学者は常に「考える」必要があるため、食事の哲学者の問題は while(TRUE) ループを使用するため、そのプロセスはこれをエミュレートするために while(TRUE) ループを実行する必要があります。しかし、それらのいくつかは私には意味がありません。例としてリーダー/ライターの問題を考えてみましょう。教科書にあるサンプル コードは、リーダーとライターの両方のプロセスを while ループに入れます。
なんで?リーダープロセスが前後に何かを読み取るのはなぜですか? 読みたいものを読んだ後、終了/終了しないのはなぜですか? 私の理解では、同時に複数の同じプロセスが実行されていることを単にエミュレートするためにこれを行っているのでしょうか?
// solution code of the textbook for first reader-writer problem
// writer process
do {
wait(wrt);
// writing is performed
signal(wrt);
}while(TRUE)
// reader process
do {
wait(mutex);
readCount++;
if(readCount==1)
wait(wrt);
signal(mutex);
//reading is performed
wait(mutex);
readCount--;
if(readCount==0)
singal(wrt);
signal(mutext);
}while(TRUE)