Wie schützt das Betriebssystem vor der Interaktion der Treiber beim Multitasking?

2

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.

Vit
quelle

Antworten:

3

Antwort auf Ihre spezielle Frage (Browser mit Scanner). In jedem Betriebssystem, das ich kenne, verliert eine andere Anwendung die Konnektivität, wenn die WLAN-Karte in einen anderen Modus umgeschaltet wird (falls sie diesen Modus nicht zurückschalten kann, dies jedoch für einen Browser unwahrscheinlich ist). Die Konnektivität wird wiederhergestellt, wenn der Scan abgeschlossen ist.

Und abstraktere Antwort. In jedem vernünftigen Betriebssystem gibt es einen HAL - Hardware Abstration Layer . Selbst das Fenstersystem von X Server oder Windows ruft den Video- / Maus- / Tastaturtreiber nicht direkt auf. Jede Anforderung muss HAL durchlaufen (ein Dateisystem muss also beispielsweise nicht wissen, ob es sich bei einem bestimmten Gerät um ein Pendrive, eine Festplatte oder etwas anderes handelt, sondern nur um ein Blockgerät).

Ich bin mir ziemlich sicher, dass HAL eine Reihe von Anfragen verwaltet, die an einen bestimmten Fahrer weitergeleitet werden müssen. Grundsätzlich sind also nur durch Multithreading verursachte Probleme Race-Bedingungen, da diese Warteschlange FIFO ( First In First Out ) ist. In einer Situation mit einem Scanner und einem Browser gewinnt der Scanner, wenn er als erstes Programm / Thread auf die WLAN-Karte zugreift, und die reguläre Konnektivität geht verloren. Wenn ein Browser jedoch zuerst eine Anfrage stellt, kann er Daten empfangen und der Modus wird etwas später umgeschaltet.

Ich hoffe das klärt die Dinge auf.

Dr. McKay
quelle