Unlike most
Unix-like kernels, the Hurd uses a
server–client architecture, built on a
microkernel that is responsible for providing the most basic
kernel services – coordinating access to the
hardware: the
CPU (through
process management and
scheduling),
RAM (via
memory management), and other various
input/output devices (via
I/O scheduling) for sound, graphics, mass storage, etc. In theory, the microkernel design would allow for all device drivers to be built as servers working in
user space, but today most drivers of this kind are still contained in the
GNU Mach kernel space. From early on, the Hurd was developed to use
GNU Mach as the microkernel. This was a technical decision made by
Richard Stallman, who thought it would speed up the work by saving a large part of it. He has admitted that he was wrong about that. In 2007, Hurd developers Neal Walfield and Marcus Brinkmann gave a critique of the Hurd architecture, known as "the critique", •
fwd (forward server): Forwards requests to other servers, used by fifo and symlink servers. •
hostmux (host multiplexer server) •
ifsock (server for sockets interface): Helps with UNIX domain socket addresses. •
init (
init server): Basic system booting and configuration. •
magic (
magic server): Signals that a name lookup must be resolved internally by a process when the result involves the process's state. •
null (null server): Implements
/dev/null and /dev/zero. •
pfinet (pfinet server): Implements the PF_INET protocol family. •
pflocal (pflocal server): Implements
UNIX domain sockets. •
proc (process server): Assigns
PIDs and manages process-level actions. •
symlink (
symbolic link translator): Implements symbolic links for filesystems that do not support them. •
term (terminal server): A
POSIX terminal. •
usermux (user multiplexer server): Invokes user-specific translators.
Filesystem servers ;ext2fs :The
ext2 filesystem translator. It receives disk blocks from the microkernel and gives files and directories to the applications. ;isofs :The translator for the
ISO 9660 filesystem. Translates blocks of a CD or DVD to files and directories for the applications. ;nfs :See
Network File System. ;ftpfs :
File Transfer Protocol filesystem translator. ;storeio :The storage translator. The servers collectively implement the
POSIX API, with each server implementing a part of the interface. For instance, the various filesystem servers each implement the filesystem calls. The storage server will work as a wrapping layer, similar to the block layer of Linux. The equivalent of
VFS of
Linux is achieved by libdiskfs and libpager libraries. ==GNU distributions running Hurd==