GeekOS

Uncategorized — Titus Barik on November 26, 2004 at 4:24 pm

When teaching operating system concepts, there are basically two prevalent approaches. The first is abstract, and uses a virtual machine or some other user space tool to simulate an operating system environment with the aid of a high-level language. The second approach is concrete, and uses a microkernel or toy operating system that can run on actual hardware.

Having recently graduated from Georgia Tech, I believe that I’m not alone in saying that I come from the first camp of non-happy campers, though allow me to digress for just a moment.

The first half of our operating systems and architecture course, ECE3055, is admittedly excellent. The course provides a spectacular introduction to hardware and the MIPS architecture through the use of Hennessy and Patterson. And unlike many other colleges, we use a combination of VHDL and Altera tools to work with actual, honest-to-god, FPGA processors. Finally, the SPIM simulator is used to experiment with assembly level programming for the MIPS.

Sadly, these qualities don’t carry through to the second half of the semester. Here, Georgia Tech uses higher-level languages in an ill-conceived attempt to introduce students to genuine operating systems concepts such as file systems, memory allocation, and scheduling. In my opinion, that’s not the way to go. The use of these languages results in a very ethereal experience. And there’s just something distant and not quite satisfying about implementing a FAT virtual file system in a simulation environment on top of Java. In fact, I would go as far as to say that such a pedagogy actually turns away students who might have otherwise taken an interest in operating system design.

As a result, it’s difficult to make the connection between how such an implementation might translate in a real-world operating system. Disappointed, students like myself graduate with a very brittle and fragmented idea of what an operating system is all about.

This time, I’d like to do it right. The obvious choice appears to be MINIX. It’s a fully complete operating system with excellent documentation and a modular design that seems well suited for an undergraduate curriculum. But at the same time, maybe it’s just a little too much to absorb at once.

That’s where GeekOS comes in. I recently learned about this peculiar operating system and found that GeekOS follows the concrete methodology, with a tiny operating system kernel for x86 PCs. It’s also about as bare bones as you can get. The operating system is currently being used at the University of Maryland with great success. Additionally, David Hovemeyer has some useful information on hacking the GeekOS. I think that it might be worthwhile to look at GeekOS while simultaneously working with MINIX.

4 Comments »

  1. I think two of the requirements posed by GeekOS are not satisfied in the Georgia Tech curriculum by the time a Computer Engineering major has reached ECE3055. That’s IF those requirements are ever satisfied ever. The first being a strong understanding of the C programming language. Trust me, I know plenty of people who couldn’t get themselves out of a for loop if they had to. The second would be the experience of programming at a system call level. Not enough emphasis is placed in the curriculum about programming in general, and this part is totally left out.

    Comment by Juan — November 28, 2004 @ 12:14 am
  2. Yes, but don’t you think that something like that should be addressed by the department? We don’t ever touch a real operating system, nor do we even look at one, in our entire undergraduate curriculum. It just seems to be getting worse these days, not better, now that the CS2130 requirement has been lifted.

    Comment by Titus Barik — November 28, 2004 @ 12:19 pm
  3. Yeah, using GeekOS is very helpful in understanding the concepts of Operating Systems, but it won’t be of any help if you want to write your own OS. What our department (CS dept IIT MADRAS) did was to have a computer organization and assembly programming lab in the semester before the OS course. The assembly programming lab doesn’t limit itself to basics, but introduces deeper concepts of the x86 architecture.

    Comment by Siva — October 24, 2006 @ 11:40 am
  4. Bummer. GeekOS is mad fun. I’m a student at UMD using it now, and I’ve learned a whole ton of stuff about operating systems.

    Comment by anton — November 9, 2006 @ 12:20 am

RSS feed for comments on this post. TrackBack URI

Leave a comment

Powered by WP Hashcash

titus@barik.net | The Weblog of Titus Barik