Systemanruf

In der Computerwissenschaft besteht ein Systemanruf darin, wie ein Programm um einen Dienst von einem Kern eines Betriebssystems bittet. Das kann verwandte Dienstleistungen der Hardware einschließen (z.B auf die Festplatte zugreifend), schaffend und neue Prozesse durchführend, und mit integrierten Kerndienstleistungen (wie Terminplanung) kommunizierend. Systemanrufe stellen die Schnittstelle zwischen einem Prozess und dem Betriebssystem zur Verfügung.

Vorzüge

Das Design der Mikroprozessor-Architektur auf praktisch allen modernen Systemen (außer einigen eingebetteten Systemen) schließt ein Sicherheitsmodell ein (wie das Ringmodell), der vielfache Vorzug-Niveaus angibt, unter denen Software durchgeführt werden kann; zum Beispiel wird ein Programm gewöhnlich auf seinen eigenen Adressraum beschränkt, so dass es nicht zugreifen oder andere laufende Programme oder das Betriebssystem selbst modifizieren kann, und ein Programm gewöhnlich daran verhindert wird, Hardware-Geräte (z.B der Rahmenpuffer oder die Netzgeräte) direkt zu manipulieren.

Jedoch brauchen viele normale Anwendungen offensichtlich Zugang zu diesen Bestandteilen, so werden Systemanrufe durch das Betriebssystem bereitgestellt, um bestimmte, sichere Durchführungen für solche Operationen zur Verfügung zu stellen. Das Betriebssystem führt am höchsten Niveau des Vorzugs durch, und erlaubt Anwendungen, um Dienstleistungen über Systemanrufe zu bitten, die häufig über Unterbrechungen durchgeführt werden; eine Unterbrechung stellt automatisch die Zentraleinheit in ein erforderliches Vorzug-Niveau, und passiert dann Kontrolle zum Kern, der bestimmt, ob dem Benennen-Programm der gebetene Dienst gewährt werden sollte. Wenn der Dienst gewährt wird, führt der Kern einen spezifischen Satz von Instruktionen durch, über die das Benennen-Programm keine direkte Kontrolle hat, das Vorzug-Niveau in dieses des Benennen-Programms zurückgibt, und dann Kontrolle ins Benennen-Programm zurückgibt..

Die Bibliothek als ein Vermittler

Allgemein stellen Systeme eine Bibliothek oder API zur Verfügung, die zwischen normalen Programmen und dem Betriebssystem, gewöhnlich eine Durchführung der C Bibliothek (libc) wie glibc sitzt, der Streifband-Funktionen für die Systemanrufe, häufig genannt dasselbe als die Systemanrufe zur Verfügung stellt, die sie nennen. Die Streifband-Funktionen der Bibliothek stellen eine gewöhnliche Funktionsbenennen-Tagung (eine Unterprogramm-Aufforderung des Zusammenbau-Niveaus) aus, für den Systemanruf zu verwenden, sowie den Gebrauch des Systems mehr modular nennen zu lassen. Hier ist die primäre Funktion des Streifbandes, alle Argumente zu legen, die zum Systemanruf und auch Setzen eine einzigartige Systemstandortnummer für den Kern zu passieren sind, zu rufen. Auf diese Weise die Bibliothek, die zwischen dem OS und der Anwendung, Zunahme-Beweglichkeit besteht.

Der Anruf zur Bibliotheksfunktion selbst verursacht keinen Schalter zur Kernweise (wenn die Ausführung nicht bereits in der Kernweise war) und gewöhnlich ein normaler Unterprogramm-Anruf (das Verwenden, zum Beispiel, eine "ANRUF"-Montageanleitung in einem ISAs) ist. Der wirkliche Systemanruf überträgt wirklich Kontrolle dem Kern (und ist von der Durchführung abhängiger und von der Plattform abhängig als der Bibliotheksanruf, der es abstrahiert). Zum Beispiel, in Unix ähnlichen Systemen, sind "Gabel" und "execve" C Bibliotheksfunktionen, die der Reihe nach Instruktionen durchführen, die die "Gabel" und "execve" Systemanrufe anrufen. Das Lassen das System direkt den Anwendungscode herbeirufen ist mehr kompliziert und kann verlangen, dass eingebetteter Zusammenbau-Code (in C und C ++) sowie Kenntnisse der auf niedriger Stufe binären Schnittstelle für die Systemanruf-Operation verwendet wird, die unterworfen sein kann, um sich mit der Zeit zu ändern und so ein Teil der Anwendung binäre Schnittstelle nicht zu sein; die Bibliotheksfunktionen werden gemeint, um das weg zu abstrahieren.

Auf gestützten Systemen von exokernel ist die Bibliothek als ein Vermittler besonders wichtig. Auf exokernels beschirmen Bibliotheken Benutzeranwendungen vor der Kern-API der sehr niedrigen Stufe, und stellen Abstraktionen und Quellenmanagement zur Verfügung.

Beispiele und Werkzeuge

Auf Unix, Unix ähnlichen und anderen POSIX-vereinbaren Betriebssystemen, sind populäre Systemanrufe, und. Viele heutige Betriebssysteme haben Hunderte von Systemanrufen. Zum Beispiel hat Linux mehr als 300 verschiedene Anrufe, FreeBSD hat mehr als 500, während Plan 9 51 hat.

Werkzeuge wie strace und Bruchband erlauben einem Prozess, vom Anfang durchzuführen und zu berichten, dass das ganze System ruft, ruft der Prozess an, oder kann einem bereits Laufen anhaften bearbeiten und fangen jeden durch den gesagten Prozess gemachten Systemanruf ab, wenn die Operation die Erlaubnis des Benutzers nicht verletzt. Diese spezielle Fähigkeit des Programms wird gewöhnlich auch mit einem Systemanruf durchgeführt, z.B wird strace mit ptrace durchgeführt, oder System fordert Dateien in procfs auf.

Typische Durchführungen

Das Einführen von Systemanrufen verlangt eine Kontrollübertragung, die mit einer Art mit der Architektur spezifischer Eigenschaft verbunden ist. Eine typische Weise, das durchzuführen, ist, eine Softwareunterbrechung oder Falle zu verwenden. Die Unterbrechungsübertragungskontrolle zum Betriebssystemkern so Software muss einfach ein Register mit der Systemstandortnummer erforderlich aufstellen, und die Softwareunterbrechung durchführen.

Für viele RISC Verarbeiter ist das die einzige Technik, vorausgesetzt dass, aber CISC Architekturen wie x86 unterstützen zusätzliche Techniken. Ein Beispiel ist SYSCALL/SYSENTER, SYSRET/SYSEXIT (wurden die zwei Mechanismen durch AMD und Intel beziehungsweise unabhängig geschaffen, aber machen hauptsächlich dasselbe). Das sind "schnelle" Kontrollübertragungsinstruktionen, die entworfen werden, um Kontrolle dem OS für einen Systemanruf ohne die Gemeinkosten einer Unterbrechung schnell zu übertragen. Linux 2.5 hat begonnen, das auf dem x86, wo verfügbar zu verwenden; früher hat es die INT Instruktion verwendet, wohin die Systemstandortnummer ins EAX-Register gelegt wurde, bevor Unterbrechung 0x80 durchgeführt wurde.

Ein älterer x86 Mechanismus wird ein Anruf-Tor genannt und ist ein Weg für ein Programm, um eine Kernfunktion direkt mit einem sicheren Kontrollübertragungsmechanismus wörtlich zu nennen, den der OS im Voraus aufstellt. Diese Annäherung ist vermutlich wegen der Voraussetzung eines weiten Anrufs unpopulär gewesen, der x86 Speichersegmentation und den resultierenden Mangel an der Beweglichkeit verwendet, die es, und Existenz der schnelleren Instruktionen verursacht, die oben erwähnt sind.

Für die IA-64 Architektur EPC (Gehen in Privilegierte Weise Ein), wird Instruktion verwendet. Die ersten acht Systemanruf-Argumente werden in Registern passiert, und der Rest wird auf dem Stapel passiert.

Systemanrufe können in fünf Hauptkategorien grob gruppiert werden:

  1. Prozesssteuerung.
  2. * laden
  3. * führen durch
  4. * schaffen Prozess
  5. * begrenzen Prozess
  6. * bekommen Prozess-Attribute/setzen
  7. * warten für die Zeit, warten auf Ereignis, Signalereignis
  8. *, teilen freies Gedächtnis zu
  9. Dateimanagement.
  10. * schaffen Datei, löschen Datei
  11. * offener, naher
  12. * gelesen, schreiben Sie Wiederposition
  13. * bekommen Dateiattribute/setzen
  14. Gerät-Management.
  15. * bitten um Gerät, Ausgabe-Gerät
* gelesen, schreiben Sie Wiederposition
  1. * bekommen Gerät-Attribute/setzen
  2. * fügen logisch bei oder machen Geräte los
  3. Informationswartung.
  4. * bekommen Zeit oder Datum/setzen
  5. * bekommen Systemdaten/setzen
  6. * bekommen Prozess, Datei/setzen, oder Gerät schreibt zu
  7. Kommunikation.
  8. * schaffen, löschen Nachrichtenverbindung
  9. * senden, erhalten Nachrichten
  10. * übertragen Zustandsinformation
  11. * fügen bei oder machen entfernte Geräte los

Verarbeiter-Weise und Zusammenhang-Schaltung

Ein syscall wird in der Kernweise bearbeitet, die durch das Ändern der Verarbeiter-Ausführungsweise zu einer privilegierteren vollbracht wird, aber kein Prozess-Zusammenhang-Schalter ist notwendig. Die Hardware sieht die Welt in Bezug auf die Ausführungsweise gemäß dem Verarbeiter-Statusregister, und Prozesse sind eine durch das Betriebssystem zur Verfügung gestellte Abstraktion. Ein syscall verlangt keinen Zusammenhang-Schalter zu einem anderen Prozess, er wird im Zusammenhang dessen bearbeitet, welch auch immer Prozess es angerufen hat.

Außenverbindungen


Eastend (Begriffserklärung) / Steve Martin
Impressum & Datenschutz