最近、私はオペレーティングシステムの概念を研究しながら厳密な交代を学びました。私たちはこのように行く二つのプロセスを競合状態の可能性を軽減し、処理するには:3つのプロセスの厳格な変更
プロセス0:
While (TRUE) {
while (turn != 0); // wait
critical_section();
turn = 1;
noncritical_section();}
}
プロセス1:
While (TRUE) {
while (turn != 1); // wait
critical_section();
turn = 0;
noncritical_section();
}
しかし、私は扱うことができますどのように思ったんだけど3競争状態をさらに減らすプロセス?
私のアプローチは、次のとおりです。 プロセス0:
while (turn != 0 && turn != 2); // wait
critical_section();
turn = 1;
noncritical_section();}
プロセス1:
while (turn != 1 && turn != 0); // wait
critical_section();
turn = 2;
noncritical_section();}
工程3:
while (turn != 1 && turn != 2); // wait
critical_section();
turn = 0;
noncritical_section();}
は私のアプローチは大丈夫ですか?あなたは何をお勧めしますか?そこに何か良い点がありますか?
おかげで、あなたが持っているもので
特に問題がありますか?何か動作していないのですか?あなたが尋ねている特定の技術的詳細はありますか?そうでない場合は、作業コードのフィードバックをhttps://codereview.stackexchange.com/ –
@FrançoisAndrieuxにリクエストしてください。これは理論的な質問です。私は2つのプロセスを処理するコードを学びました。厳格な交代を使用している3つのプロセスを処理する私のアプローチが有効かどうかを知りたいだけですか?またはこれに対するより良い解決策があれば。 – Painkiller
このような質問の問題は、「そこには何か良いことがありますか?」という答えがあります。ほぼ確実に "おそらく"です。改善の余地がない完璧なソリューションを考え出すことはまずありません。そして、満場一致で理想的なソリューションが存在するのは一般的な問題ではないので、正解が確定する可能性は低いです。それに加えて、別のものに対する解決策を正当化するのに役立つ文脈はありません。むしろ、この質問はあまりにも幅広く、主に意見に基づいています。 –