一个简单的关于进程同步的有关问题,小弟我实在没地方问了

一个简单的关于进程同步的问题,我实在没地方问了。
两个并发的进程,大概是这样
Var mutex:semaphore:=1;
  begin
  parbegin
  process 1:begin
  repeat
  wait(mutex);
  critical section
  signal(mutex);
  remainder section
  until false;
  end

  process 2:begin
  repeat
  wait(mutex);
  critical section
  signal(mutex);
  remainder section
  until false;
  end
  parend
我就有件事不明白,为什么加上repeat...until false阿?这是指死循环阿,难道一旦执行1个进程,就需要不断的循环执行吗?应该不会这样啊,比如读者进程和写者进程,我觉得来1个读者顺序执行
wait(mutex);
critical section
signal(mutex);
remainder section
就可以了
再来一个读者,才会再次进入,执行 
wait(mutex);
critical section
signal(mutex);
remainder section
可是为什么操作系统的教程上在进程里面总是要加上repeat...until false呢?

------解决方案--------------------
进程当然是无限循环的,要不然每次都要重新建立线程多麻烦!

同步的话不是有wait(mutex)么?
------解决方案--------------------
因为进程的终结是由操作系统来管理的,而不是由应用程序说了算。所以程序的结尾是一个永真的循环