| Zeile 4: | Zeile 4: | ||
Der aufrufende Prozess füllt entweder die Syscall-Parameter in Prozessorregister oder legt sie auf den Stack. Meistens wird der Syscall, den der Prozess aufrufen will, über eine Nummer als Parameter, z.B. über das Register eax, übergeben. | Der aufrufende Prozess füllt entweder die Syscall-Parameter in Prozessorregister oder legt sie auf den Stack. Meistens wird der Syscall, den der Prozess aufrufen will, über eine Nummer als Parameter, z.B. über das Register eax, übergeben. | ||
| − | Anschließend | + | Anschließend löst der Prozess einen Syscall aus. |
== Auslösen des Syscalls == | == Auslösen des Syscalls == | ||
Meistens werden Syscalls mithilfe eines Software-[[Interrupt]]s realisiert. Der auszulösende Softwareinterrupt hat normalerweise eine fest kodierte Nummer. Linux verwendet beispielsweise den Interrupt 0x80. In manchen Prozessoren sind spezielle Instruktionen für ein performanteres Auslösen von Syscalls vorgesehen. Beispielsweise unterstützen neuere AMD-Prozessoren die ''syscall''-Instruktion und neuere Intel-Prozessoren die ''[[sysenter]]''-Instruktion. | Meistens werden Syscalls mithilfe eines Software-[[Interrupt]]s realisiert. Der auszulösende Softwareinterrupt hat normalerweise eine fest kodierte Nummer. Linux verwendet beispielsweise den Interrupt 0x80. In manchen Prozessoren sind spezielle Instruktionen für ein performanteres Auslösen von Syscalls vorgesehen. Beispielsweise unterstützen neuere AMD-Prozessoren die ''syscall''-Instruktion und neuere Intel-Prozessoren die ''[[sysenter]]''-Instruktion. | ||
| − | Anschließend befindet sich der Prozessor im Kernelmodus, und der Kernel übernimmt | + | Anschließend befindet sich der Prozessor im Kernelmodus, und der Kernel übernimmt. |
== Behandlung des Syscalls == | == Behandlung des Syscalls == | ||