Redirected from GNU Hurd
Unlike most Unix-like kernels, the Hurd builds on top of a microkernel which is responsible for providing the most basic kernel services – coordinating access to the hardware: the CPU (through multiprocessing), RAM (via memory management), and other various devices for sound, graphics, mass storage, etc. Currently GNU Mach is used as the microkernel, but efforts are underway to port the Hurd to other microkernels such as L4.
There are other Unix-like systems running on top of the Mach kernel, including OSF/1, NeXTSTEP, Mac OS X, Lites[?], and MkLinux[?]. These share one detail in common, in that they are implemented as a single so called server. In effect they replace the monolithic kernel from a traditional Unix system with two parts, the microkernel and Unix server.
The Hurd instead consists of multiple servers working together. Instead of a single large code base which includes everything from handling the clock to handling the networking, in the Hurd each of these are handled by a separate server. This makes developing the Hurd much easier (at least in theory) as making changes to one is less likely to have side-effects in others. This explains the mutually recursive acronym: "Hurd" stands for "Hird of Unix-Replacing Daemons", and "Hird" stands for "Hurd of Interfaces Representing Depth".
In the original Mach efforts this sort of "set of servers" was considered to be one of the main goals of the design, but the Hurd appears to be the first Mach-based system core to actually be implemented in this fashion (whereas QNX is similar but based on its own microkernel). It's not entirely clear why this happened, but it appears that groups working on Mach were too busy working on Mach to work on the operating system as a whole.
A number of traditional Unix concepts are replaced or extended in the Hurd:
Under Unix every program running has an associated user id[?], which normally corresponds to the user that started the process. This id largely dictates the action permitted to the program. No outside process can change the user id of a running program. A Hurd process, on the other hand, runs under a set of user ids, which can contain multiple ids, one, or none. A sufficiently privileged process can add and remove ids to another process. For example there is a password server that will hand out ids in return for a correct login password.
Regarding the filesystem, a suitable program can be designated as a translator for a single file or a whole directory hierarchy. Every access to the translated file, or files below a hierarchy in the second case, is in fact handled by the program. For example a file translator may simply redirect read and write operations to another file, not unlike a Unix symbolic link. What mounting is to Unix, the Hurd achieves by setting up a filesystem translator. Translators can also be used to provide services to the user. For example, the ftpfs translator allows a user to encapsulate remote FTP sites within a directory. Then, standard tools such as ls, cp, and rm can be used to manipulate files on the remote system. Even more powerful translators are ones such as shadowfs, which allows a user to shadow multiple directories into one; so that listing the shadowed directory reveals the contents of all the shadowed directories (a major missing feature in Unix).
Perhaps the most empowering aspect of the Hurd is the ability for any user to start their own system services. Any user can attach any translator to the filesystem for his own personal use. A user could even replace system servers, such as the auth server, with other servers of his own choosing. All this can be done without affecting other users, due to well defined scopes. Indeed, it is even possible for a user to run the Hurd within itself, which is known as a sub-Hurd.
The Hurd requires a multiboot-compliant bootloader, such as GRUB.
At this time, there is a single distribution of a Hurd-based GNU system in preparation, which has not yet been officially released outside of interested testers and developers. That distribution is Debian GNU/Hurd. Richard Stallman, of the GNU project, had announced that he expected the GNU OS (also known as GNU/Hurd) to be officially released before the end of 2002, but this was not acheived.
Currently, the Hurd has slow development and has major hardware limitations (eg the lack of sound support and support for partitions[?] larger than approximately 1.5 gigabyte.) Thanks to increasing support from the Debian project and others, these limitations are well on the way to being beaten and once they do, it will be a very functional kernel for the GNU system.
More info:
See also:
Search Encyclopedia
|
Featured Article
|