Linked by Werner "murphee" Schuster on Mon 1st Mar 2004 07:32 UTC
OSNews, Generic OSes You want to build a thread system? Experiment with an OS with memory protection and virtual memory? You want to do that without a lot of rebooting, Bochs/VMWaremagic and writing drivers? Well, then Nachos (Not Another Completely Heuristic Operating System) is for you. Nachos is an Operating System simulator. Hmm... . If you're a bit like me, you'll be wondering what in the world that is.
Order by: Score:

What a coincidence
by Can Sar on Mon 1st Mar 2004 08:01 UTC

I am currently working on the Nachos File Systems assignment for CS 140, a Stanford Operating Systems course. It if a great coincidence to find a fellow Austrian writing about the same exact topic on my favorite OS website. Does the TU Graz use Nachos for its classes?
I have enjoyed working with Nachos, because it makes it possible to do these very large projects in only 10 weeks of school, and it is a good first step into the world of OS programming. I only wished that Stanford also taught another practical OS course that uses a "real" Operating System.

1994?
by Linwood on Mon 1st Mar 2004 11:09 UTC

there page is dated 94 and most refrences are around the same time frame.. it's 2004 ... 10 years later, doesn't this count as 'outdated info'?

Terrible
by bile on Mon 1st Mar 2004 11:46 UTC

I had a graduate OS class once that tried to use this... and failed terribly. The code is old, unsupported on any modern system. I was able to find a precompiled binary for linux that some random student somewhere somehow hacked to get working. We ended up dropping the whole thing and had to write simulators from scratch. It also didnt help that my professor thought that there was good documentation for it and didnt do much research into actual use prior to introducing it.

Buenos
by tj on Mon 1st Mar 2004 12:16 UTC

If you're interested in this stuff, you might want to check out Buenos http://www.niksula.hut.fi/~buenos/buenos.html They used to use Nachos in the operating systems project course http://www.cs.hut.fi/Opinnot/T-106.435/project/ here at my school Helsinki University of Technology too but I guess the staff didn't feel quite comfortable with Nachos anymore due to the problems mentioned here so they wrote their own machine simulator (YAMS) and skeleton OS which (Buenos). Unfortunately there was not enough free time in my schedule for this spring to attend the course (only doing the lecturing course about operating systems at the moment, next year the project, perhaps) but they say Buenos is quite nice.

Hrmmm...
by Anonymous on Mon 1st Mar 2004 13:06 UTC

"Can NACHOS run on Windows?
--------------------------
No. Not at this time. We're planning to port but it turned out harder than it appeared; now that Win95 (finally, a real OS from Microsoft!) is out, maybe we'll try it again."

Quite dated, indeed... ;)

TaccOS
by Anonymous on Mon 1st Mar 2004 13:13 UTC

Error: 'NACHOS' Is not a valid Win32 application.

How do you use this ?

RE: What a coincidence
by murphee on Mon 1st Mar 2004 13:42 UTC

>It if a great coincidence to find a fellow Austrian writing
>about the same exact topic on my favorite OS website. Does
>the TU Graz use Nachos for its classes?

Yup, that's where I got to know it. They've been using
it for at least a couple of years, and they don't seem
to be changing that.
I like the realism that Nachos allows, even despite some
of the problem (crufty code, ...).

NachOS is a good learning experience
by Rambus on Mon 1st Mar 2004 14:25 UTC

I worked with Nachos in the Operating Systems Course at UCR (Universidad de Costa Rica) almost three years ago.

Terrible
I would say that there is enough documentation to get started with any of the proposed assignments, but it also helped that my teacher had worked with it previously, so he could answer many of our questions and already knew about the changes required to compile it (like 6 - 10 changes, including definining the boolean macros, a couple of missing inclides and some misc changes).

1994?
Well, may be it is not the most up to date code, but is simple enough for an OS introductory course. You can read the code and have a good overall knowledge in a couple of days or so working with. You have to remember that probably most students in that level probably learned how to code something just the semester before.

RE: TaccOS
by Roosevelt Anderson on Mon 1st Mar 2004 14:30 UTC

When Nachos was taught on my OS course the TA got it to work under Cygwin.

Using it in University
by pixelmonkey on Mon 1st Mar 2004 16:08 UTC

I'm a sophomore in undergrad CS and we are using Nachos for our "Intro Operating Systems" course (CS 202 here).

I think Nachos is a great project to learn OS concepts on. It's true that some of the Nachos code is hackish (particularly with regards to not utilizing all OO features of C++, but still being a C++ program). The only bad thing about Nachos is that most of my class runs Windows, and Nachos only really runs well on Linux and Solaris. So, they end up having to use Putty to connect to a Solaris server we have here to do their development (which I assume sucks pretty bad because they don't even get X11 forwarding!).

If you are running Linux and are used to seeing hackish code, Nachos is great. I disagree that not enough documentation exists. Thomas Narten wrote a "roadmap to Nachos" guide that gives LOTS of documentation. The comments are pretty clear, and even point out hackish lines. And the "Nachos Project Guides" that float around and have the standard "lab" assignments are pretty clear as well.

Overall, this course is turning out to be pretty challenging and time-consuming, but altogether worth it. If you plan on learning OS concepts on your own by using Nachos, I reccomend you also do a little research on the general concepts behind the implementation (for example, when implementing Locks and Conditional Variables, I'd google how Locks and Conditional Variables are implemented "in the abstract," i.e. with pseudocode). We use an overpriced textbook called "Operating Systems Concepts," so maybe if you could borrow that from the library you'd be okay.

GeekOS
by Niels Sandholt Busch on Mon 1st Mar 2004 16:18 UTC

GeekOS ( http://geekos.sf.net ) is preparing an educational release of their OS, which is supposedly aimed at university courses on operating systems. The code is well commented and builds on Linux/i386, FreeBSD, Windows, and Unix platforms.

It has to be said
by Sandwich Boy on Mon 1st Mar 2004 18:21 UTC

Mmmmm...nachos.

RE: Buenos
by Anonymous on Mon 1st Mar 2004 20:32 UTC

Since Buenos itself is compiled to MIPS machine language and runs on top YAMS, you can't use gdb the way you can with Nachos where the kernel and the machine are both parts of the same host platform process.

With Nachos you can just disable interrupts when you have a critical section. With Buenos, the excercises are done with 4 (simulated) CPUs, so you have to learn how the synchronization stuff works on a multi-CPU machine.

Java Nachos
by Jon on Tue 2nd Mar 2004 02:25 UTC

AT UC Berkeley, CS162, the OS Course, uses a java version of nachos. You might want to check that out. I think it only runs on java 1.1.3 though, and maybe even a modified version at that.

Jon

Also, check out oskit
by Anonymous on Tue 2nd Mar 2004 03:58 UTC

When I was picking around with operating systems a while ago, I used http://www.cs.utah.edu/flux/oskit/ it's basically a real operating system but extremely modular so that you could easily, for example, implement just a file system. Last update in 2002, but last time I played with it, it worked perfectly. It also allows coding in a number of different languages inside the os. I didnt play with that but it sounds very cool.

RE: Buenos
by Anonymous on Tue 2nd Mar 2004 07:03 UTC

I consider Buenos + Yams a fine replacement for Nachos. If you are interested to take a closer look, you should keep in mind it's rather new and has some rough edges - there are actually couple hundred mostly very minor fixes that aren't included in the distribution sources and documentation. There are also areas where it still lacks intended functionality, for instance symbolic kernel debugging.

Buenos and Yams are much more realistic than Nachos as a platform for introduction in kernel programming. The system isn't a model of any physical machine, though. For simplicity, hardware devices are as simple as they can be (but yet realistic), and for instance, the system doesn't model CPU caches (which can be complex issue to deal in SMP environment, and also excess burden to model in virtual machine). As a proof of practicality, I did port NetBSD on Yams before Buenos was actually written. ;)