Kapitel 8. Primitive Betriebssysteme

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Bisher haben wir uns hauptsächlich auf nicht-blockierende Operationen konzentriert. Wenn wir etwas wie eine Mutex oder eine Bedingungsvariable implementieren wollen, etwas, das darauf warten kann, dass ein anderer Thread es entsperrt oder benachrichtigt, brauchen wir eine Möglichkeit, den aktuellen Thread effizient zu blockieren.

Wie wir in Kapitel 4 gesehen haben, können wir das auch ohne die Hilfe des Betriebssystems selbst tun, indem wir etwas immer und immer wiederversuchen, was leicht eine Menge Prozessorzeit vergeuden kann. Wenn wir jedoch effizient blockieren wollen, brauchen wir die Hilfe des Kernels des Betriebssystems.

Der Kernel, genauer gesagt das Zeitplannungsprogramm, ist dafür zuständig, zu entscheiden, welcher Prozess oder Thread wann, wie lange und auf welchem Prozessorkern laufen darf. Während ein Thread auf etwas wartet, kann der Kernel ihm keine Prozessorzeit mehr geben und anderen Threads, die diese knappe Ressource besser nutzen können, den Vorrang geben.

Wir brauchen eine Möglichkeit, dem Kernel mitzuteilen, dass wir auf etwas warten und ihn zu bitten, unseren Thread in den Ruhezustand zu versetzen, bis etwas Wichtiges passiert.

Schnittstelle zum Kernel

Die Art und Weise, wie mit dem Kernel kommuniziert wird, hängt stark vom Betriebssystem und oft sogar von dessen Version ab. Normalerweise ...

Get Rust Atomics und Schlösser now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.