On Thu, 19 Jan 2006, Olwe Bottorff wrote:

> Two questions:
> 1) What does it mean when Linux says on shutdown 
> "unmounting pipe file system"?

IIRC, it's a virtual filesystem.  Named pipes go into the normal file 
system, while unnamed pipes (such as those created with the pipe(2) system 
call) are put onto the pipefs.  This way, every descriptor has some file 
on some file system associated with it.

>
> 2) I found a neat book "Code Reading, The Open Source Perspective" by 
> Diomidis Spinellis which does a lot to explain the real-world details of 
> software development. Is there a similar book that would tell me such 
> fun facts as my first question about "pipe file system"?

Google is your friend.  It'll bring up:
http://cdrom.gnutemberg.org/LDP/guide/lki.pdf

Which has some discussion of the pipefs file system.  For more 
information, you probably want to google the linux kernel mailing list 
archive.  And then read the source code.

Lesson number one, from a professional device driver writer: the important 
information is never written down in the documentation.  The advantage of 
open source is that you don't have to disassemble the OS to figure things 
out (and yes, Virginia, I have have disassembled more than one OS).

>
> I'm starting compsci grad school and I'm supposed to help an instructor 
> put together a new operating system class. I'd like to find materials 
> that really goes into the nitty-gritty of a Linux or BSD box. Before, 
> they used Tannenbaum or Silberschatz which is fine for the theoretical 
> level, but not on-the-ground real world Linux or BSD. For example, what 
> would be a good real world Unix app to grab the source code for and 
> snoop/hack around? Any ideas?

You might want to consider "The Design and Implementation of BSD 4.X" for 
some X as a text book.  Tannenbaum's Minix book is also good for practical 
OS application.

Pretty much once you get past Tannenbaum and/or The Daemon Book, the next 
real step is to start writting real device drivers.  I'd be inclined to 
pick some not-too-complicated device, and write drivers for it for a 
couple of different OSs.  If I had the time (and hardware), I'd say 
Windows, Linux, Solaris, and AIX is a good spread.  That's certainly way 
too much for one course (heck, one device driver probably is).  And you 
don't have the fun of buggy hardware, and trying to figure out if it's a 
software bug or a hardware bug.  But those four OSs are a good spread of 
both what OSs do right, and what OSs do wrong, and what OSs just do 
differently.

Brian