The concepts of the GNU Hurd
Tags: gnuhurd
Published: 2021-10-15 01:10:24

There may many concepts need to know about the GNU Hurd, like what's the Gnu Hurd? How to understand the it? And the concepts could help us to understand this.


# What's the GNU Hurd?


The GNU projects replacement for UNIX, a popular operating system [kernel](https://dev.to/aisuko/the-concepts-of-microkernel-3i08)

It includes many parts:

* A collection of `protocols` formalising how different components may interact.
* A set of `servers` that implement these protocols.
* It provides compatibility layer such that compiling higher level programs is essentially transparent(`glibc`).
* It provides servers and infrastructure with microkernel itself has no business implementing, but required for high level programs and libraries to operate.


## The collection of protocols

### What's the protocols?

The protocols are designed to reduce the mutual `trust` requirements of the actors thereby permitting a more `extensible system`.

The protocols include three parts:

* interface definitions to manipulate file
* directories
* to resolve path names

And this allows any process to implement a file system. But there are requirements:
* it have access to its backing store
* principal starts it own the file system node to which it converts


### What's the mean of trust requirements of the actors?

When we say that a program trusts another, we mean that correctness of the former depends on the operation of the latter.

For example, when users use ssh login to the remote hosts that mean users trust in `ssh` binary.

In UNIX, a programs `tcb` consist not only of the kernel and all the devices, file systems, and protocol stacks that it contains.

But every program running under the same UID. It's impossible to protect against destructive interference from programs running under the same UID.


### What's the mean of `tcb`?

`tcb`: trusted computer base

* referrers to the set of components programs must trust to function correctly.
 

### What's the extensible operating system?(How to enables extensibility of operating system?)

* providing non-privileged mechanisms to extend existing objects and to introduce new objects.
* UNIX can not hook into the virtual file system.


## A set of servers that implement these protocols

The set of severs includes:
* file systems
* network protocols
* authentication

And those servers run on top of the Mach microkernel and use March is `IPC` mechanism to transfer information.


### What's the mean of `IPC`?

* Internal-process communicate


### What's the server(translator)?

> There is a concept need to know that `server==translator`

The translator is simply a normal program acting as an object server and participating in the Hurd's distributed virtual file system.


### Why call is as a translator?

* It typically exports a file system(although need not).
* It translates object invocations into calls appropriate for the backing store(e.g., ext2 file system, nfs server, etc.).

Another reason is that

* It translates from one representation of data structure into another representation.

A translator is usually registered with specific file system node by using the `strains` command, and it does not require any special privilege to run.

A translator is not different from other `user_space` application, it can be written in any programming language.


## Summary

We already knew the concepts like the GNU Hurd, protocols, `translator`, `tcb`,`IPC` and the architecture benefit of microkernel, and those concepts are not easy to understand and the mistakes of the article will be fixed in as depth as we learning.


## Reference articles:

https://www.gnu.org/software/hurd/hurd/what_is_the_gnu_hurd.html
https://www.gnu.org/software/hurd/extensibility.html
https://www.gnu.org/software/hurd/hurd/translator.html
https://www.gnu.org/software/hurd/microkernel/mach/ipc.html
https://www.gnu.org/software/hurd/trust.html