The current trends in hardware

An OS also takes care of sharing of a system by multiple users and also handle the various authentication issues in multiple user systems. The sharing of resources also forms a vital functionality of the OS in a multi user system. Conventionally all these functionalities of the OS are implemented in the kernel. And the kernel is accessible to all the programs that run in the system. Almost all systems use a system language or command to program the kernel. This is not modifiable by the user and remains outside his purview. Even if it needs to be modified, the complexity and the vastness is overwhelming and it requires heavy debugging and testing to ensure that the modification is bug free and it does not affect the rest of the functionalities. Also the pageability of kernels is extremely limited and even if it can be pages it takes a lot of work to decide what can be paged. All these restrictions and drawbacks of adding and modifying functionalities are slowly being eliminated and only those functionalities that are absolutely necessary are being added to the kernel. Innovative ideas to efficiently retrieving and handling information are thus being ignored because of the complexities involved in implementing them. Though Lisp Machine and Smalltalk managed to bring this user modifiable functionality in an easy to use language they failed to separate the user from the program. This principle of separation between the user and the program is one of the core principles of an operating system by definition. Another design method is the multi server system which attempts to break down the kernel into logical parts with interfaces between them. This makes it easier for the user to add more functionality separately to the specified block. Also the debugging phase becomes much easier since the code is less. This OS design addresses the users need to customize but the barrier between the user and the system still remains. I.e. the user still needs certain privileges to modify the system code. [9][2][16][17][3]
GNU Hurd
This new development seeks to address all the drawbacks mentioned till now and also to provide the dynamic user modifiable functionality to the OS. This new design seeks to achieve this goal by restricting the area of the system code. It makes the system code pertain to only specified basic areas and leaves the rest of the process to be defined by the user. The user can also add the remaining parts and can share these parts with other users without being bothered about the viability and the authenticity of the code and system.
Let us take a look at each of the mechanism that is part of the new design system called Hurd. In the Translator Mechanism, the Hurd is found to use the Mach ports as a method to communicate between the user and the server. Every mach port is different and it implements a certain set of protocols which identify the operations that it can do and also represents the object of the port. The protocols or rules of conduct specified by the Hurd are the input/output protocol, the file, the socket protocol, and the process protocol.
Each file can have a translator associated with it. Here the server executes the translator program associated with each file instead of each file returning its own port. The translator is allotted a port to the actual contents of the file,