Ich habe den Unterschied zwischen POSIX und System V Semaphoren gelesen, und ich habe ein paar Artikel auf dem gleichen gelesen. In jedem Artikel wird diese Anweisung geschrieben: "System V-Semaphore sind vorteilhaft, wenn Sie atomare Operationen mit mehreren Inkrementen-Dekrementen in einem einzigen Schritt implementieren müssen."System V Semaphor mehrere Inkremente/Dekremente
Meine Fragen sind:
1) Was ist die Notwendigkeit für mehrere Zunahme/Abnahme in einer einzigen atomaren Operation ist? Kannst du das bitte mit einem Beispiel erklären?
2) Warum lässt semop zu, dass der Wert um einen Wert kleiner als -1 und größer als +1 geändert wird? Gibt es eine praktische Verwendung/Beispiel für dasselbe?
(Ich weiß, daß mit der semop() Funktion in System V Semaphoren I die Semaphore Erhöhung oder Verminderung um einen bestimmten Wert haben kann als ein Semaphor in dem Semaphor Array &, dass dasselbe nicht mit sem_wait erfolgen() oder . sem_post() von POSIX Semaphore Aber was ist die Verwendung derselben)
die Artikel, die ich gelesen, für Ihre Referenz:
1) http://www.ibm.com/developerworks/library/l-semaphore/
2) Differences between System V and Posix semaphores
3) http://www.linuxdevcenter.com/pub/a/linux/2007/05/24/semaphores-in-linux.html?page=4
4) http://linuxtips.pbworks.com/w/page/29023300/SystemV%20vs%20Posix%20IPC
UPDATE:
ich die folgenden Artikel gelesen haben, die einige Erwähnung auf mehreren Erhöhen/Verringern eines Semaphore mit semop haben(), aber ich habe noch nicht in der Lage, ein Beispiel/praktische Verwendung derselben zu erhalten. Artikel für Ihre Referenz:
1) http://kaharris.org/teaching/51081/Assignments/Final/systemV.pdf
Ein Auszug aus dem Artikel: (unter dem Titel "Beispiel für Multiple Semaphore Operationen")
„Die Macht des System-V-Semaphore ist, dass sie kann verwendet werden, um mehrere Semaphore in einem Vorgang zu überprüfen und zu setzen. "
Er hat einen kleinen Ausschnitt davon gegeben, wie es auch geht. Aber keine praktische Verwendung desselben.
2) http://www.anirudhtom.com/2011/02/system-v-semaphores-for-babies.html
der Autor einen Code für mehr Inkrement/Dekrement von Semaphor in einer atomaren Operation unter dem Titel "Implementing A SET OF SEMAPHORE" geschrieben. Die praktische Verwendung derselben wird auch hier noch nicht erwähnt.
Ein Auszug aus dem Buch:
„In UNIX System V, macht der Semaphor-Mechanismus eine gewisse Anpassung Der Betrieb Atomarität beibehalten wird jedoch das addierte oder subtrahierte Wert von Operationen sein kann.. größer als eins. (Warum? Welchen Zweck?). Und noch mehr können Prozesse mehrere Semaphor-Operationen gleichzeitig ausführen, um Deadlock-Probleme zu vermeiden, wenn mehrere Prozesse gleichzeitig um eine Anzahl unterschiedlicher Ressourcen konkurrieren.(Wie? Beispiel?)“
Ich hoffe, das macht die Frage klarer.
Bitte kommentieren, wenn Sie irgendwelche Zweifel haben an der gestellten Frage.
Vielen Dank im Voraus!
Hallo Rein, vielen Dank für Ihre Antwort, aber ich habe noch folgende Zweifel: – Sahil
1) Wenn die Sitzung beendet wird, sollte es die Semaphore nicht ‚Zuwachs‘? (Wahrscheinlich ein Tippfehler, aber wollte es nur darauf hinweisen.) 2) Was ich von Ihrer Erklärung verstehen, dass die Unteilbarkeit der mehrere Erhöhen/Verringern einer Deadlock-Situation verhindern würde. aber kann man das nicht auch vermeiden, wenn man nacheinander zwei Semop-Operationen macht? (in der gleichen Reihenfolge - das heißt zuerst Audio dekrementieren und dann Video in jeder Sitzung dekrementieren). – Sahil
3) Ich habe wirklich nicht verstanden, wie wir den Lastausgleich mit Semaphoren erreichen können. Soweit ich weiß, sind Semaphore nicht mit irgendeiner Ressource verbunden. Bitte klären Sie und geben Sie einen programmatischen Beweis, wenn möglich. Vielen Dank :) – Sahil