Systemaufruf im Betriebssystem (Operating-System): Was ist, Typen und Beispiele
⚡ Intelligente Zusammenfassung
Der Systemaufruf ist die kontrollierte Schnittstelle, über die ein Prozess Kernel-Dienste wie Dateizugriff, Prozesssteuerung und Gerätekommunikation anfordert und dabei die CPU sicher vom Benutzermodus in den privilegierten Kernelmodus umschaltet.
Was ist ein Systemaufruf? Operating-System?
A Systemaufruf ist ein Mechanismus, der die Schnittstelle zwischen einem Prozess und dem Betriebssystem bereitstellt. Es handelt sich um eine programmgesteuerte Methode, bei der ein Computerprogramm einen Dienst vom Kernel des Betriebssystems anfordert.
Systemaufrufe bieten den Benutzerprogrammen die Dienste des Betriebssystems über API (Application Programming Interface) an. Systemaufrufe sind die einzigen Einstiegspunkte für das Kernelsystem.
System ruft ein Operating-System
Beispiel eines Systemaufrufs
Um beispielsweise ein Programm zu schreiben, das Daten aus einer Datei liest und in eine andere kopiert, benötigt das Programm zunächst die Namen der beiden Dateien: der Eingabe- und der Ausgabedatei.
In einem interaktiven System erfordert diese Art der Programmausführung einige Systemaufrufe des Betriebssystems.
- Der erste Schritt besteht darin, eine Aufforderungsnachricht auf dem Bildschirm anzuzeigen.
- Der zweite Schritt besteht darin, die Zeichen, die die beiden Dateien definieren, von der Tastatur einzulesen.
Wie funktioniert ein Systemaufruf?
Hier sind die Schritte für einen Systemaufruf im Betriebssystem:
ArchiStruktur des Systemaufrufs
Wie Sie dem obigen Systemaufrufdiagramm entnehmen können:
Schritt 1) Die Prozesse werden im Benutzermodus ausgeführt, bis sie durch einen Systemaufruf unterbrochen werden.
Schritt 2) Anschließend wird der Systemaufruf im Kernelmodus prioritätsbasiert ausgeführt.
Schritt 3) Sobald die Ausführung des Systemaufrufs abgeschlossen ist, kehrt die Steuerung in den Benutzermodus zurück.
Schritt 4) Die Ausführung von Benutzerprozessen wird fortgesetzt, wobei zwischen Benutzermodus und Modus gewechselt wird. Kernelmodus nach Bedarf.
Warum benötigen Sie Systemaufrufe im Betriebssystem?
Folgende Situationen erfordern Systemaufrufe im Betriebssystem:
- Das Lesen und Schreiben von Dateien erfordert Systemaufrufe.
- Wenn ein Dateisystem Dateien erstellen oder löschen möchte, sind Systemaufrufe erforderlich.
- Systemaufrufe werden für die Erstellung und Verwaltung neuer Prozesse verwendet.
- Netzwerkverbindungen benötigen Systemaufrufe zum Senden und Empfangen von Paketen.
- Für den Zugriff auf Hardwaregeräte wie Scanner oder Drucker ist ein Systemaufruf erforderlich.
Arten von Systemaufrufen
Hier sind die fünf Arten von Systemaufrufen im Betriebssystem:
- Steuerung &
- Dokumentenverwaltung
- Device Management
- Informationspflege
- Kommunikation
Arten von Systemaufrufen im Betriebssystem
Steuerung &
Diese Systemaufrufe führen Aufgaben wie die Erstellung und Beendigung von Prozessen usw. aus.
Funktionen:
- Beenden und Abbrechen
- Laden und ausführen
- Prozess erstellen und Prozess beenden
- Warten Sie und Signal Event
- Speicher zuweisen und freigeben
Dokumentenverwaltung
Dateiverwaltungssystemaufrufe verarbeiten Dateimanipulationsaufgaben wie das Erstellen einer Datei, Lesen und Schreiben usw.
Funktionen:
- Erstellen Sie eine Datei
- Datei löschen
- Datei öffnen und schließen
- Lesen, schreiben und neu positionieren
- Dateiattribute abrufen und festlegen
Device Management
Die Geräteverwaltung übernimmt die Gerätemanipulation, etwa das Lesen aus Gerätepuffern, das Schreiben in Gerätepuffer usw.
Funktionen:
- Gerät anfordern und freigeben
- Geräte logisch an- oder abkoppeln
- Geräteattribute abrufen und festlegen
Informationspflege
Es kümmert sich um Informationen und deren Übertragung zwischen dem Betriebssystem und dem Benutzerprogramm.
Funktionen:
- Uhrzeit und Datum abrufen oder festlegen
- Prozess- und Geräteattribute abrufen
Kommunikation
Diese Art von Systemaufrufen wird speziell für die Interprozesskommunikation verwendet.
Funktionen:
- Kommunikationsverbindungen erstellen und löschen
- Senden und Empfangen von Nachrichten
- Helfen Sie dem Betriebssystem, Informationen zum Übertragungsstatus zu erhalten.
- Anschließen oder Trennen von Remote-Geräten
Regeln für die Übergabe von Parametern für Systemaufrufe
Hier sind die allgemeinen Regeln für die Übergabe von Parametern an den Systemaufruf:
- Parameter sollten vom Betriebssystem auf den Stack gelegt oder von ihm entfernt werden.
- Parameter können in Registern übergeben werden.
- Wenn es mehr Parameter als Register gibt, sollten diese in einem Block gespeichert und die Blockadresse in einem Register übergeben werden.
Wichtige Systemaufrufe, die im Betriebssystem verwendet werden
warten()
In manchen Systemen muss ein Prozess warten, bis ein anderer abgeschlossen ist. Dies tritt auf, wenn ein Elternprozess einen Kindprozess erzeugt und der Elternprozess so lange angehalten wird, bis der Kindprozess beendet ist.
Die Ausführung des Elternprozesses wird automatisch durch einen wait()-Systemaufruf unterbrochen. Sobald die Ausführung des Kindprozesses beendet ist, kehrt die Kontrolle zum Elternprozess zurück.
Gabel()
Prozesse nutzen diesen Systemaufruf, um Prozesse zu erzeugen, die Kopien von sich selbst sind. Mithilfe von `fork()` erzeugt ein Elternprozess einen Kindprozess, und der Elternprozess wird angehalten, bis der Kindprozess ausgeführt wird.
exec ()
Dieser Systemaufruf startet eine ausführbare Datei innerhalb eines bereits laufenden Prozesses und ersetzt den älteren Prozess. Die ursprüngliche Prozesskennung bleibt erhalten, da kein neuer Prozess erstellt wird, jedoch werden Stack, Daten, Heap usw. durch den neuen Prozess ersetzt.
töten()
Der Systemaufruf `kill()` wird vom Betriebssystem verwendet, um einem Prozess ein Beendigungssignal zu senden und ihn zum Beenden aufzufordern. Ein `kill`-Systemaufruf bedeutet jedoch nicht zwangsläufig das Beenden des Prozesses und kann verschiedene Bedeutungen haben.
Ausfahrt()
Der Systemaufruf `exit()` dient zum Beenden der Programmausführung. Insbesondere in einer Multithread-Umgebung signalisiert dieser Aufruf das Ende der Thread-Ausführung. Das Betriebssystem gibt die vom Prozess nach dem Aufruf von `exit()` verwendeten Ressourcen frei.





