Blockieren alle Systemaufrufe?

13

Ich habe einen Artikel gelesen , der den Wechsel zwischen User-Space und Kernel-Space beschreibt, der bei einem Systemaufruf auftritt. Der Artikel sagt

Eine Anwendung erwartet den Abschluss des Systemaufrufs, bevor die Ausführung im Benutzermodus fortgesetzt wird.

Bisher bin ich davon ausgegangen, dass es einige Systemaufrufe gibt blocking, während es andere sind non-blocking. Mit dem obigen Kommentar bin ich jetzt verwirrt. Bedeutet dies, dass alle Systemaufrufe blockiert werden, oder habe ich ein Konzept falsch verstanden?

Ankit
quelle
@Ankit Bitte erläutern Sie, warum Sie die Bearbeitung zurückgesetzt haben. Beachten Sie, dass die Bearbeitung zur Verbesserung der Details eines Posts eine Standardrichtlinie für SE ist und keine implizite Kritik impliziert.
Raphael
@ Raphael Entschuldigung, Bruder! Ich habe nur herumgespielt und das Rollback versehentlich verschoben und konnte dann die vorherige Version nicht finden. Tatsächlich hat mir deine Bearbeitung sehr gut gefallen. : P
Ankit
@ Raphael Habe es zurückbekommen. Eigentlich habe ich mich vom Revisionssystem täuschen lassen (habe nicht erkannt, dass "Artikel" ein Link war). Danke für die Änderungen.
Ankit
@Ankit: Ich bin froh, dass ich helfen konnte!
Raphael

Antworten:

15

Sie scheinen den Begriff "Sperren" zu überladen.

Wenn Sie einen Kontextwechsel zum Kernel vornehmen, müssen Sie warten, bis er wieder in den Benutzermodus wechselt, bevor Ihre Anwendung fortgesetzt werden kann. Dies wird normalerweise nicht als "Blockieren" bezeichnet.

Im aktuellen Kernel-Design sind blockierende Aufrufe Aufrufe, bei denen der Kernel nur zurückkehrt, wenn die Anforderung abgeschlossen ist (oder ein Fehler auftritt). Diese Anrufe dauern in der Regel länger und führen in der Regel dazu, dass Ihr Prozess terminiert wird. Beispielsweise blockieren viele E / A-Aufrufe.

Es gibt Systemaufrufe, die asynchrone E / A bereitstellen und die nicht blockieren. Beachten Sie, dass es hier immer noch eine Kontextumschaltung gibt. Nur die Anwendung muss sich um die Asynchronität des Aufrufs kümmern.

Das Papier scheint darauf abzuzielen, diesen Kontextwechsel (ausnahmelose Systemaufrufe) aufzuheben und alle Aufrufe asynchron zu machen.

Aryabhata
quelle
Es ist eigentlich eine Forschungsarbeit. Hier ist die URL: eecg.toronto.edu/~livio/papers/flexsc-osdi10.pdf
Ankit
2
@Ankit: Bitte bearbeiten Sie die Frage und fügen Sie sie dort ein.
Aryabhata