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
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.
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).
- 1. Was ist der Unterschied zwischen `==` und `ist`?
- 2. Was ist der Unterschied zwischen:.! und: r !?
- 3. Was ist der Unterschied zwischen Difftime und '-'?
- 4. Was ist der Unterschied zwischen $ und $$?
- 5. Was ist der Unterschied zwischen Verilog! und ~?
- 6. was ist der Unterschied zwischen [[], []] und [[]] * 2
- 7. Was ist der Unterschied zwischen/* ... */und/** ... */
- 8. Was ist der Unterschied zwischen strcpy und "="?
- 9. Was ist der Unterschied zwischen ⊕ und + hier?
- 10. Was ist der Unterschied zwischen `&` und `ref`?
- 11. Was ist der Unterschied zwischen $ (...) und `...`
- 12. Was ist der Unterschied zwischen .Equals und ==
- 13. Was ist der Unterschied zwischen "$^N" und "$ +"?
- 14. Was ist der Unterschied zwischen + = und = +?
- 15. Was ist der Unterschied zwischen? und ? = Nil
- 16. Was ist der Unterschied zwischen $ (()) und Ausdruck?
- 17. Was ist der Unterschied zwischen:
- 18. Was ist der ARM Thumb Befehlssatz?
- 19. Was ist der Unterschied zwischen der Variablenzuweisung und der Referenzübergabe?
- 20. Was ist der Unterschied zwischen der JSP und der JSTL?
- 21. Was ist der Unterschied zwischen NetFx45WebLink und NetFx45RedistLink ist
- 22. Was ist der Unterschied zwischen PS1 und PROMPT_COMMAND ist
- 23. Was ist der Unterschied zwischen x86 und x64 ist
- 24. Was ist der Unterschied zwischen _Application und Anwendung ist
- 25. Was ist der Unterschied zwischen „ist None“ und „== None“
- 26. Was ist der Unterschied zwischen DISPATCH_QUEUE_CONCURRENT und DISPATCH_QUEUE_SERIAL ist
- 27. Was ist der Unterschied zwischen Task.Run ist() und Task.Factory.StartNew()
- 28. Was ist der Unterschied zwischen computeScalingRotation und computeRotationScaling ist
- 29. ios Was ist der Unterschied zwischen objc_getClass und objc_lookUpClass ist
- 30. Was ist der Unterschied zwischen gradlew ist zusammenbauen und gradlew
Werden die Systemaufrufe in die Anweisungen des Befehlssatzes konvertiert? Oder kann ich sagen, dass Systemaufrufe eine Ebene über dem Befehlssatz sind –
Sie vergleichen Äpfel mit Orangen. Systemaufrufe sind eine vom Kernel bereitgestellte Abstraktion –
Gibt es keine Beziehung zwischen ihnen? Ich meine, Systemaufrufe müssen die Anweisungen des Befehlssatzes verwenden, um auf der Maschinenebene –