wie kann ich umwandeln nicht atomic operation, atomic

Ich versuche zu verstehen, Atomare und nicht Atomare Operationen.Mit Bezug auf das Betriebssystem und auch mit Bezug auf C.
Gemäß der wikipedia-Seite hier

Betrachten Sie einen einfachen Zähler, der die verschiedenen Prozesse erhöhen.
Nicht-atomaren

Den naiven, nicht-Atomare Umsetzung:
liest den Wert in der Speicherstelle;
fügt man den Wert;
schreibt den neuen Wert zurück in den Speicher.

Nun, stellen Sie sich zwei Prozesse, die ausgeführt werden Inkrementieren eines einzelnen shared memory location:
der erste Prozess liest den Wert in Speicherstelle;
der erste Prozess fügt man den Wert;
aber bevor Sie können, schreiben Sie den neuen Wert zurück auf die memory location, in der es ausgesetzt ist, und der zweite Prozess ausgeführt werden darf:
der zweite Prozess liest den Wert im Speicher, der denselben Wert wie der erste Prozess Lesen;
der zweite Prozess fügt man den Wert;
der zweite Prozess schreibt den neuen Wert in den Speicherbereich.

Wie kann die obige operation ein atmoic Betrieb.
Mein Verständnis atomarer Vorgang ist, dass jede Sache, die ausgeführt wird, ohne Unterbrechung atomar ist.
So zum Beispiel

int b=1000;
  b+=1000;

Sollte eine Atomare operation sein gemäß meinem Verständnis, da sowohl die Anweisungen ausgeführt, ohne eine Unterbrechung,wie auch immer, ich habe von jemandem, der in C ist nichts bekannt, die als Atomare operation, also über beide Aussagen sind nicht atomic.
Also, was ich verstehen will ist, was ist die Atomarität ist anders, wenn es um Programmier-Sprachen Betriebssysteme?

asm ist die Antwort hier, aber das ist der Pfad zur dunklen Seite
warum ist asm die Antwort?
Heffernan, wenn Sie wissen wollen, und die Kontrolle der Ausführung, die Sie verwenden müssen, asm, sonst werden bei den Compilern Barmherzigkeit.
die meisten Menschen nutzen die Bibliotheken in der Tat
Heffernan geht hier -1 für die klare Einsicht

InformationsquelleAutor Registered User | 2011-07-10

Schreibe einen Kommentar