2017-05-26 1 views
0

Iam verwirrt ob Systemaufrufe und Befehlssatz synonym sind? Fallen die Anweisungen wie MOV, LOAD, CALL, IN, OUT, ADD, SUB usw. in die Kategorie der Systemaufrufe? Systemaufrufanweisungen wie open(), close(), read(), write(). Wenn nicht, was ist die Beziehung zwischen ihnen? Kann jemand bitte die Verwirrung erklären und klären.Was ist der Unterschied zwischen Systemaufrufen und Befehlssatz

Antwort

0

Mehrere Bücher werden benötigt, um den Unterschied zu erklären. Ich empfehle insbesondere Operating Systems : Three Easy Pieces und ein Buch über Computerarchitektur, oder zumindest einige Folien auf dem fiktiven Y86 instruction Set.

Ein instruction set architecture definiert die machine code durch irgendeinen Prozessor verstehen und wie jeder Maschinenbefehl ändert die (beobachtbar) Zustand des Computers (zum Beispiel ändert sich der Inhalt der processor registers -einschließlich program counter und die call stack pointer, Speicher locations in virtual address space, etc ...)

Ein system call wird von einem Anwendungsprogramm ausgeführt, um Dienste vom Betriebssystemkernel anzufordern. Aus der Sicht des Anwendungsprogramms ist dies oft ein elementarer Maschinenbefehl (z. B. SYSENTER oder SYSCALL), aber der Kernel wird eine große Menge Code (innerhalb des Kernels) ausführen, bevor er zum Anwendungsprogramm zurückkehrt.

Mit anderen Worten, ein Betriebssystem kernel bietet den Anwendungsprozess die Illusion, daß der Prozessor von einem Systemaufruf-Primitive (Lage laufen einen des syscalls vom Kernel bereitgestellt Augmented gewöhnlichen unprivileged Maschinencode versteht, für Linux syscalls(2) siehe für eine erschöpfende Liste). Lesen Sie auch über SYSENTER in Linux und SYSENTER on OsDev.

Der Punkt ist, dass mit verschiedenen CPU modes einige privilegierte Maschinenanweisungen (z. B. die Zugriff auf Peripheriegeräte oder die MMU) nur für den Kernel zulässig sind. Wenn Ihr Anwendungscode sie ausprobiert, würde der Prozessor eine Ausnahme auslösen.

+0

Werden die Systemaufrufe in die Anweisungen des Befehlssatzes konvertiert? Oder kann ich sagen, dass Systemaufrufe eine Ebene über dem Befehlssatz sind –

+0

Sie vergleichen Äpfel mit Orangen. Systemaufrufe sind eine vom Kernel bereitgestellte Abstraktion –

+0

Gibt es keine Beziehung zwischen ihnen? Ich meine, Systemaufrufe müssen die Anweisungen des Befehlssatzes verwenden, um auf der Maschinenebene –

0

Die Funktionen, die wir vom Benutzerbereich in den Kernel aufrufen, sind Systemaufrufe.

Ein Befehlssatz eine Gruppe von Befehlen in Maschinencode ist, die von einer CPU erkannt und ausgeführt werden kann, (C entral P rocessing U NIT).

Verwandte Themen