Schnelle vs. langsame Systemaufrufe: Wie Signale blockierte Systemaufrufe aufwecken
Dieser Artikel untersucht die grundlegenden Unterschiede zwischen schnellen und langsamen Systemaufrufen in Betriebssystemen. Schnelle Systemaufrufe (wie `getpid()`) liefern sofort ein Ergebnis, während langsame Systemaufrufe (wie `read()`) möglicherweise blockieren und auf externe Ereignisse warten. Der Artikel konzentriert sich darauf, wie Signale blockierte langsame Systemaufrufe unterbrechen, und demonstriert anhand von Codebeispielen, wie `EINTR`-Fehler behandelt und das `SA_RESTART`-Flag verwendet werden kann. Darüber hinaus werden die Nuancen der Festplatten-E/A und die Art und Weise, wie der Kernel verschiedene Arten von Systemaufrufen behandelt, untersucht, wobei die Stärken und Schwächen verschiedener E/A-Modelle (blockierende E/A, nicht blockierende E/A, E/A-Multiplexing, signalgesteuerte E/A, asynchrone E/A und I/O Uring) verglichen werden.
Mehr lesen