Unterschied zwischen system-API und system-API-Aufruf
Habe ich gelesen, die "system-APIs aufrufen, sind für den user-space zugreifen und
system-APIs sind für die system-space access". Ich bin neu in Linux-OS-Konzepte, ich habe keine Kenntnisse über das System API. Kann mir jemand erklären den Unterschied zwischen diesen beiden?
- Wo hast du diesen Satz Lesen? Kannst du einen URL?
- Ich habe gelesen das aus einer pdf-Datei, die bereitgestellt wurde mein trainer. Ich denke, er hat es von der Charles Crowley ' s Buch.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein system call ist eine explizite Anfrage an den kernel erfolgt über einen software-interrupt. Es ist das niedrigste Niveau, was spricht für das Betriebssystem. System call wird beim Aufruf des Kernels. System-calls sind eigentlich gedacht sehr low-level-Schnittstellen, können Sie sagen, um eine ganz bestimmte Funktionalität, die Ihr Programm nicht leisten kann auf seine eigene.
In der Erwägung, dass ein System-API dienen zum aufrufen system-call
Lesen system call und linux-kernel wikipages ersten.
Als Rahul Triparhi beantwortet, system-Aufrufe sind die elementaren Operationen, wie ein Benutzer-Modus Anwendungs-software. Verwenden strace(1), um herauszufinden, welche syscalls werden von einigen Programm.
Ruft das system gut dokumentiert sind im Abschnitt 2 der
man
Seiten (geben Sie die erstenman man
in einem terminal auf Ihrem Linux-system). So Lesen intro(2) und dann syscalls(2).Stricto sensu, syscalls haben eine Schnittstelle, insbesondere angegeben in ABI Spezifikationen wie x86-64-ABI, definiert die niedrigste mögliche Maschine der Ebene - in Bezug auf die Maschinen-Instruktionen und-Register, etc... Die Funktionen, die in Abschnitt 2 sind kleine C-Wrapper über Ihnen. Siehe auch Linux Assembly HowTo
Bitte Lesen Sie auch Advanced Linux Programming, das erklärt ganz gut, viele von Ihnen.
BTW, ich bin nicht sicher, dass "System-API" hat eine gut definierte Bedeutung, auch wenn ich denke, was es sein könnte. Siehe auch mehrere Antworten zu diese Frage.
Wohl "System-API" bezieht sich auf die vielen Funktionen, die standardisiert durch POSIX, implementiert in der POSIX-C-Bibliothek wie GNU libc (aber man könnte einige andere
libc
auf Linux, wie MUSL libc, wenn Sie wirklich wollte). Ich denke da an Funktionen wie dlopen (dynamisch laden ein plugin) oder getaddrinfo(3) (zum abrufen von Informationen über einige Netzwerk-Sachen) etc... Die Linux-Implementierung (z.B. dlopen(3)) ist, bietet ein super-set davon.Allgemein der Abschnitt 3 der man-Seiten finden Sie intro(3), bietet viele library-Funktionen (die meisten von Ihnen gebaut über system calls, so
dlopen
ruft tatsächlich mmap(2) syscall, undgetaddrinfo
kann syscalls verwenden, um eine Verbindung zu einigen server - siehe nsswitch.conf(5), etc...). Aber einige library-Funktionen werden wahrscheinlich nicht tun, jede syscall, wie snprintf(3) oder sqrt(3) oder longjmp(3) .... (Sie nicht gerade dabei sind interne Berechnungen ohne zusätzliche kernel service).