I am a student planning on starting a masters thesis project in the near
future and I'm looking for both some information and some advice.
I will be installing the latest distribution tomorrow in order to start
hacking and getting familiar with the system. If somebody could field
some of these philosophical questions, it might help me orient myself in
such a way to pick a topic that is most interesting with regard to HURD
* I am under the impression that HURD is a set of server threads running
on top of Mach that can be changed or at least accessed at the user level,
providing more flexibility. Is this the only advantage over other *nix
systems, such as Linux? Are there any performance advantages?
* How does the HURD design philosophy effect the operation of a typical
part of the system in such a way that it behaves differently or has
additional functionality to the same part in say, Linux? Is it simply
that under the normal interfaces, IPC is responsible for requesting
services and security is accomplished through some interface of the IPC
rather than by delimiting seperate privileged and user spaces for making
As for the advice, I'm looking for two suggestions:
1) I'm looking for a very short (ie, 1 week or less) programming project
to become acclimated to HURD development so that I can make an informed
decision as to what part of HURD to pursue for my thesis topic. Any
suggestions or would it suffice to look for something on the TODO pages
out there? Are they up to date? I think this question might help a lot
of people in a similar situation looking for a first coding step.
2) I'm also looking for suggestions for larger projects to take on
towards my masters thesis. This may be anything from a porting project
that might have interesting implications to the implementation of some as
yet unimplemented part of the system to a rewrite of some underdeveloped
part of the system. Hopefully this questions will also be helpful to
people other than me.
Here are some suggested topics and some ideas of my own. If you think of
anything, please feel free to add your ideas to the list, and/or comment
on these ideas:
1) Look into resource restrictions and determine ways to help the system
degrade more gracefully when it runs out of memory or disk space
2) Look into the area of character devices and designing a kernel
interface (perhaps tying in some interfaces necessary for such things as
sound devices to work? i thought somebody had mentioned in an earlier
thread that character device limitations make it difficult to work in
sound support, among lots of other difficulties?)
3) Access control lists for HURD servers (don't know much about this)
4) Brainstorm ways to exploit the network transparency of HURD (don't
know much about this either -- what is meant by network transparency?)
5) Look into multiprocessor issues. (Does SMP support still exist to
some degree?) I'm going to go way out on a limb here making assumptions I
can't substantiate, correct me if I'm wrong: Assuming HURD server daemons
(which are all Mach threads?) block until they receive requests, blocks
the calling processes while they process the requests, and block again,
waking the calling process when the action is finished... might there be
some value in experimenting with the idea of making certain system calls
non-blocking by default, and perhaps introduce some parallelism? If this
logic isn't flawed somehow or otherwise completely off base (or assumed
for all I know!) might this help improve performance?
6) are there any implementation projects people are waiting on as
dependencies for other projects? For example, a lot of people seem to be
waiting on POSIX threads -- what is the status of that project? Are there
any other such packages whose implementation might help make the porting
of other packages a bit easier?
7) It has been suggested that there might be some parts of Mach (and
OSkit?) that might need some work?
If you have any ideas, I'd love to hear them. Also, any advice as to what
areas might be mostly complete and what areas have a lot of open areas
would be helpful. Also, remember if you have any suggestions for short (
< 1 week) projects for getting started, let me know.
Thanks so much!