[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Questions about translators
From: |
Hiran Watson |
Subject: |
Re: Questions about translators |
Date: |
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
http://www.gnu.org/software/hurd/hurd-paper.html):
"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
program.
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?
Thanks again.
God bless
Hiran
From: "Ciaran O'Riordan" <ciaran@member.fsf.org>
To: Hiran Watson <hw_stuckie@hotmail.com>
CC: help-hurd@gnu.org
Subject: Re: Questions about translators
Date: Mon, 24 Mar 2003 02:32:33 +0000
MIME-Version: 1.0
Received: from chewie.compsoc.com ([193.120.201.13]) 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-Message-Info: JGTYoYF78jEHjJx36Oi8+Q1OJDRSDidP
Message-ID: <20030324023233.GA25752@chewie.compsoc.com>
References: <BAY1-F231DfrwV0JmFS0000240e@hotmail.com>
In-Reply-To: <BAY1-F231DfrwV0JmFS0000240e@hotmail.com>
User-Agent: Mutt/1.4i
Return-Path: coriordan@chewie.compsoc.com
X-OriginalArrivalTime: 24 Mar 2003 02:32:35.0789 (UTC)
FILETIME=[A15147D0:01C2F1AD]
Hello Hiran,
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
clumsy.
> 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
userspace apps.
> (thereby
> making system calls to accomplish things like internally opening
> files/directoris as well as using the original port for information to
and
> 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
the
> 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
in userspace.
> 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
rest.
> They just seem like an extra
> layer (or "middle-man") between the user app-kernel-server connection
that
> 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?)
Ciaran O'Riordan
_________________________________________________________________
MSN 8 with e-mail virus protection service: 2 months FREE*
http://join.msn.com/?page=features/virus