[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Questions about translators
Re: Questions about translators
Sun, 23 Mar 2003 23:03:32 -0500
Thanks first off! Secondly, I wrote all those questions with the view that
translators and servers were different things. Now that I know they are not,
it makes more sense. But I still do have some more questions then.
First, I'm confused then about the meaning of the following from the white
paper "Towards a New Strategy of OS Design" (found at
"Most servers are accessed by opening files. Normally, when you open a file,
you create a port associated with that file that is owned by the server that
owns the directory containing the file. For example, a disk-based filesystem
will normally serve a large number of ports, each of which represents an
open file or directory. When a file is opened, the server creates a new
port, associates it with the file, and returns the port to the calling
However, a file can have a translator associated with it. In this case,
rather than return its own port which refers to the contents of the file,
the server executes a translator program associated with that file. This
translator is given a port to the actual contents of the file, and is then
asked to return a port to the original user to complete the open operation."
I understand the first paragraph. But then the second one gives the
impression that the translator is started as another layer between the
end-user app and the server. Is it that the server just starts another
server? Or are they talking about server threads? So the main server thread
spawns a subthread that connects with the main thread through the port
decided by the server (main thread) and on the other end connects with the
end-user app through another port?
Secondly, what happens when an end-user app makes a system call (ie, open
some file, or read, or write, etc.)? Does the call get caught by the kernel
which passes it onto the appropriate server? If so, then the layers would be
end-user apps on top; they're connected to the kernel; and the kernel is
connected to the servers; and finally the servers are connected to physical
hardware? If so, what about servers that don't actually mess with hardware?
From: "Ciaran O'Riordan" <email@example.com>
To: Hiran Watson <firstname.lastname@example.org>
Subject: Re: Questions about translators
Date: Mon, 24 Mar 2003 02:32:33 +0000
Received: from chewie.compsoc.com ([126.96.36.199]) by
mc8-f20.law1.hotmail.com with Microsoft SMTPSVC(5.0.2195.5600); Sun, 23 Mar
2003 18:32:35 -0800
Received: (from coriordan@localhost)by chewie.compsoc.com (8.11.6/8.11.6) id
h2O2WYo26363;Mon, 24 Mar 2003 02:32:34 GMT
X-OriginalArrivalTime: 24 Mar 2003 02:32:35.0789 (UTC)
They're three big questions ;)
On Sun, Mar 23, 2003 at 07:50:07PM -0500, Hiran Watson wrote:
> I have three questions about translators.
> The first is what happens when a server executes a translator?
"translators" and "servers" are two names for the same thing. The
name "translator" is very fitting sometimes but sometimes it's
> That is, is
> the translator run as a layer between the kernel and user app
Usually, yes. Everything on your system is an app, the kernel
(GNU Mach) runs as a kernel process, everything else is a user
app. There's nothing special about translators, they're just
> making system calls to accomplish things like internally opening
> files/directoris as well as using the original port for information to
> from the user app and server)? Or is it run as a layer between the server
> and kernel (thereby making server-specific function calls to accomplish
> same things mentioned above)?
With the knowledge that translators and servers are the same
thing, could you ask this bit again?
> Secondly, are the servers and translators run as user processes or system
> processes? What about the kernel?
only the kernel is kernelspace. Everything else is userspace.
Some applications are persistent, we usually call them servers.
Apache is a HTTP server, it handles HTTP commands.
One of the servers which makes up the GNU Hurd is called 'ext2fs'.
It is an "Ext2fs server", it handles Ext2fs commands.
Linux provides built-in support for ext2fs and can handle these
requests without the need for a userspace app. GNU Mach does not
contain support for Ext2fs, it contains the bare minimum
funtionality to allow ext2fs and other filesystems to be handled
> Thirdly, why is there a need for translators?
It depends on how you want to design your kernel. Monolithic
kernels like Linux consist of a scheduler, memory pager, device
drivers, filesystems, etc.
Microkernel architecture aims to have a kernel which does the bare
minium and provide a bunch of userspace apps that provide the
> They just seem like an extra
> layer (or "middle-man") between the user app-kernel-server connection
> would otherwise occur.
It comes down to a trade-off. Microkernel architecture offers
much greater possibilities for security an stability since the
kernel exists as five or ten seperate apps, only one of which is
running in kernelspace. It is also possible to write faster apps
for microkernel systems by making use of the low level kernel API
that is exposed that doesn't exist in monoliths.
The GNU Hurd isn't the greatest kernel in the world yet but it's
definitly one of the most interesting. It's needs a few more
developers but it is usable as-is right now.
I'm sure this info will create as many questions as it answers,
please mail the list again.
a quick note: I used to be confused about translators because I
read somewhere that "translators can be embedded in file systems".
This is not true, a reference (i.e. the name) to a translator can
be stored (as "meta data") in most file systems.
(can someone on the list let me know if my info is correct?)
MSN 8 with e-mail virus protection service: 2 months FREE*