私はStallingのオペレーティングシステム:宿題および設計主体から宿題問題に取り組んでいます。このように、私は答えを求めていませんが、これを理解する助けがあれば、私はこの頭の中で頭を包むのに苦労しています。この質問の最初の部分は、私はロジックをトレース何の問題もなかったこれ、印刷することができ、「xが10である」は、どのように尋ねオペレーティングシステムの設計競争条件
shared int x;
x = 10;
while (1)
{
x = x - 1;
x = x + 1;
if (x != 10)
printf(“x is %d”,x)
}
:
両方のプロセスは、次のコードを実行されています実行2つのプロセスがあります。ために。
しかし、第2部では「xが8」を印刷できるかどうか尋ねられます。さらに、それがヒントを与える:
「あなたがソース言語レベルでのインクリメント/デクリメントがアトミックに行われていないことを忘れてはならない、それは、アセンブリ言語コードです:」
LD r0,X
INCR r0
STO r0,X
「は、単一のCを実装します命令x = x + 1 "
ヒントにもかかわらず、プロセスがprintfセクションに到達する方法を見て、値を少なくとも9までインクリメントしなくても問題があります。何が欠けていますか?このよう
彼は具体的に答えを与えないように頼んだ。 –
ああ、もちろん、私は何かが精神的に欠けていたことを知っていました。私はすぐに受け入れて時間制限を待つのを待っている。 –
@HunterMcMillen - そうではありません。彼は彼が「答えを求めていない」と答えた - 彼は決して答えを与えないように要求した。 – Steve