Hey Jimen,

Sorry, should have been more specific, but when writing my initial email I was in the middle of a little margarita party.

The shell program was really a shell simulator that would provide basic shell functionality, parse the command line, find the command, redirect stdin/stdout, pipe output/input between commands/programs. It's just one of a dozen projects that are:

1. Observing Linux Behavior: understanding the /proc file system and what it represents, what's there and how to get at it 2. Shell Program: intro to UNIX-style shells, putting processes in the background, redirecting stdin/stdout, shell pipes. 3. Kernel Timers: how the kernel maintains time, slight intro to understanding user/kernel time. 4. Kernel Modules: how to write, compile, install, remove, as part of the /proc filesystem. 5. System Calls: how they're linked, write your own, printk(), building the kernel, cleaning up.
6. Shared Memory: the api, the implementation.
7. Virtual Memory: the virtual address space, memory areas, adress translation, etc.
8. Synchronization Mechanisms: blocking tasks, wait queus, etc.
9. The Scheduler: process management, states, implementation, fair-share scheduling.
10. Device Drivers: driver organization, more on modules, etc.
11. File systems: the virtual file system, directories, an ms-dos file system (why I don't know, maybe it's simpler). 12. File i/o: open and close operations, rd/wr ops, etc., what's really going on, how its implemented.

The projects look ok, they provide a brief intro into a lot of different topics that offer the student an opportunity to mess with the code, and they seem to complement the rest ( the majority) of the class, which is "theory". I just can't imagine the projects being as useful to someone who's going to graduate in the next year and is going to try getting a job. But maybe I'm just getting whiny in my old age.

-Charles


Jimen Ching wrote:

On Sun, 29 Sep 2002, Warren Togami wrote:
IMHO, it isn't that Linux is too hard... they just put almost zero effort
into giving resources to the students in getting them acclimated.

Have you looked at the Linux kernel sources?  I have.  There are a few
projects out there that are very hard to contribute to.  These projects
include the Linux kernel, GCC, Samba, X11 and a few others.  The reason is
that they are very COMPLEX systems and it is hard to wrap your head around
them in a short amount of time.  Students have about four months of study
time.  Not nearly enough time to learn about the Linux kernel internals
enough to make modifications to it.

Sure you can write a simple kernel module.  But I would imagine an OS
course would cover things like filesystems, scheduling, memory management,
and perhaps, networking.  These are not simple sub-systems of the Linux
kernel.  This is why, as Charles mentioned, Minix was used.  Minix is a
lot smaller, thus easier for a student to read the entire source tree and
remember it for class.  There is no way to do that with Linux.  There are
lots of features in Linux that will simply be overkill for an OS course.
Using a kernel with such features will only confuse the students.



Reply via email to