Hi, On Tue, Dec 16, 2014 at 12:19:25AM -0500, Richard Stallman wrote:
> I never read the code of the Hurd, but from what the developers told > me, it does not directly implement POSIX interfaces. The C library > does substantial work in order to provide POSIX semantics on top of > Hurd interfaces. The Hurd part of glibc implements the POSIX system calls; the Hurd servers provide various underlying mechanisms, both for faciliating the system calls, and for providing the base for a UNIX-like environment in general. The Hurd servers do not expose POSIX interfaces directly, but they need to implement a lot of the necessary semantics to allow the client-side libc to provide POSIX compliance. Both the libc code and the Hurd servers (especially libports, which is the major underlying library for all Hurd servers) contain some pretty intricate code to implement the necessary semantics, such as cancellation of in-progress system calls during signal processing etc., on top of the existing Mach facilities. This code is responsible for quite a lot of complexity and bugs. A system constructed in the way the Mach creators envisioned (and not aiming at POSIX compliance) -- as demonstrated in their Mach-UX reference system -- is constructed in quite a different, much simpler fashion. A microkernel explicitly created as the base for a POSIX system on the other hand would provide different facilities than Mach. The latter is among the goals of Richard Braun's X15 project. -antrik-
