diff options
-rw-r--r-- | microkernel/mach/gnumach/interface/syscall.mdwn | 2 | ||||
-rw-r--r-- | rpc.mdwn | 14 | ||||
-rw-r--r-- | system_call.mdwn | 8 |
3 files changed, 20 insertions, 4 deletions
diff --git a/microkernel/mach/gnumach/interface/syscall.mdwn b/microkernel/mach/gnumach/interface/syscall.mdwn index d5fc542b..f470754b 100644 --- a/microkernel/mach/gnumach/interface/syscall.mdwn +++ b/microkernel/mach/gnumach/interface/syscall.mdwn @@ -14,3 +14,5 @@ License|/fdl]]."]]"""]] [[!map pages="microkernel/mach/gnumach/interface/syscall/* and !microkernel/mach/gnumach/interface/syscall/*/*" show=title]] + +- [[mach_msg|https://www.gnu.org/software/hurd/gnumach-doc/Mach-Message-Call.html#Mach-Message-Call]] @@ -9,7 +9,19 @@ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] -RPC stands for remote procedure call. +RPC stands for remote procedure call. It is generally one userspace processes +communicating with another userspace process. For example, a user may use +emacs to open a text file for editing. On the Hurd, glibc turns the C function +call into appropriate RPC calls to ext2fs. It is important to remember that +gnumach's IPC facilitates this communication between emacs and ext2fs (with +the gnumach mach_msg () syscall). + +It is also important to distinguish an RPC from a [[system call|system_call]]. +A system call is always a userspace process requesting something from the kernel. +An RPC is generally one userspace process requesting something from another +userspace process, but it can also be from the kernel. Devices, for instance, can live both in the kernel or in userspace processes, RPCs are used to discuss with them in both cases. + + # See Also diff --git a/system_call.mdwn b/system_call.mdwn index 45ed9dbe..d8a465b4 100644 --- a/system_call.mdwn +++ b/system_call.mdwn @@ -10,11 +10,13 @@ is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] In an [[UNIX]]-like system, a *system call* (*syscall*) is used to request all -kinds of functionality from the operating system kernel. +kinds of functionality from the operating system kernel. On GNU/Linux, glibc +translates function calls to system calls by packing arguments appropriately +and using that trap or syscall instruction. A [[microkernel]]-based system typically won't offer a lot of system calls -- -apart from one central one, and that is *send message* -- but instead [[RPC]]s -will be used instead. +apart from one central one, and that is *send message* (mach_msg) -- but +instead [[RPC]]s will be used instead. See [[GNU Mach's system calls|microkernel/mach/gnumach/interface/syscall]]. In the [[GNU Hurd|hurd]], a lot of what is traditionlly considered to be a UNIX |