1

私は、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)
4

1 に答える 1