Ich habe nachgedacht. Betrachten wir dieses Beispiel: Wir haben 2 Programme, die auf dem PC ausgeführt werden. Erstens zum Beispiel einen Internetbrowser und zweitens eine WiFi-Scan-Software. Jetzt möchte der Browser die Internetverbindung über WLAN nutzen, aber der WLAN-Scanner muss den WLAN-Adapter in den Scan-Modus versetzen ...
OK, welche Seite in einer modernen Betriebssystemarchitektur ist für den Umgang mit solchen Kollisionen verantwortlich? Eine Betriebssystemschicht, ein Gerätetreiber oder das Programm selbst?
Denn zum Beispiel hat der WLAN-Scanner den WLAN-Adapter in den Scan-Modus geschaltet. Nun wurde der Browser gestartet. Das Betriebssystem schaltet also die CPU-Zeit auf den Browser um. Es ruft eine abstrakte Betriebssystemschicht für das Netzwerk auf, die den WiFi-Treiber aufruft und Daten von diesem empfangen möchte.
Grundsätzlich möchte ich wissen, wie diese Situationen gelöst werden. Ich habe viel darüber herumgebastelt, aber ich habe es nie herausgefunden. Es gibt verschiedene Möglichkeiten:
Beispielsweise können in das Betriebssystem integrierte API-Funktionen, wie z. B. die Basis-API zum Drucken von Text auf der Konsole oder zum Zeichnen auf Windows, den eigentlichen Frame auf dem Bildschirm verarbeiten und den GPU-Treiber selbst aufrufen, sodass dort keine Kollisionen auftreten.
Sie können jedoch eigene Treiber schreiben, die nicht unter einer schweren OS-API liegen. Und dann können 2 Anwendungen diesen Treiber für zwei entgegengesetzte Funktionen verwenden. Mein Hauptproblem beim Verständnis ist die Multitasking-Umgebung. Denn wie kann Prozess 2 eine Treiberfunktion aufrufen, wenn Prozess 1 sie zuvor aufgerufen hat und sie vor Abschluss der Treiberanforderung auf Prozess 2 umgestellt wurde? Vielen Dank.