Custom Kernels Used In Comp. Sci Programs? 161
pdowner asks: "I've just finished and handed in my latest Operating Systems Inmternals assignment for my degree in Computer Studies. It involved writing/modifying a timer module for a Microkernel implemented in modula 2, which is written by one of my lectures and is available from here. I am interested in finding out what microkernels other universities use to teach their students the insides of Operating Systems."
Re:Can you imagine... (Score:1)
[BeginPrejudice]
You forgot that most (if not all) professors don't memorize people's names (unless they are around them alot).
[EndPrejudice]
Here at Cornell (Score:1)
Re:Here at Cornell (Score:1)
Canterbury university, chch NZ (Score:1)
It uses the solaris calls for context switching. The year I did the course we traced through a system call. For a trivial call (getpid() off the top of my head) we went through the minix user mode libraries that effectively trapped to the solaris kernel and out into the interrupt handler for minix (which was a wrapper for SIGUSR1) up into the kernel, through several context switches into the memory manager and back, etc.
It worked well as a teaching system (after all, that's what Minix was designed for) and has the advantage of running hosted in user mode and not taking out an entire computer to run it. Emulating things like a MMU involved some rather hacky solutions, but all the basic functions of an OS could be implemented in user mode. In fact, examining some of the emulation techniques used was quite educational.
Here's a candadate! (Score:1)
Georgia Tech (Score:1)
UT Austin (Score:1)
Re:Carnegie Mellon University (Score:1)
Supposedly it's pronounced y'all nix in respect for its Texas origins.
elwing
(from CMU and Texas)
Re:University of Washington OS (Score:1)
Re:Your Lectures Must Be Amazing! (Score:1)
--
Re:Docs still available (Score:1)
Re:Carnegie Mellon University (Score:1)
Re:U of Copenhagen has it (Score:1)
Any clue as to when they'll be implementing the local digital version of Halloween? Just think, perfect reproductions of your hardware-bashing bananza!
U of Copenhagen has it (Score:1)
Now back in the old days of '91 when I took the course, we actually implemented a whole kernel in 68000 assembler on old eurocard-based Motorola machines named after dead greek philosophers... but those machines have by now sadly passed away. One was auctioned off as parts at a party, one went to the internal museum of ancient computer parts and one was used as the Danish analog to a piñata at our local analog to Halloween
Re:Carnegie Mellon University (Score:1)
- avatar - (noy)
Re:Nachos (Score:1)
Re:Linux lab at Worcester Polytechnic Institute (Score:1)
A small rant... (Score:1)
Ever since "computers" and "technology" has become more prominent and all these agencies scrounging for IT workers, a new trend has developed. I look around my class and see people who are not so much interested in technology as much as the jobs that they will find. They are not interested or curious in even the slightest sense and take the joy out of playing with computer technology. It saddens me to see our instructors to teach to the LCD and not even TRY to encourage people to branch out and THINK for themselves.
Maybe I chose the wrong place to study so I would like to ask the
Bah. end-of-rant.
Why the LCD matters... (Score:1)
You're right: if they make it easier, more people pass. More people passing means more money for the school. Sadly, this perpetuates (ugh) the problem of un-interested parties and removes the challenge from the course.
Life should be a challenge... if it was all easy then what would the point be?
Re:A small rant... (Score:1)
Sorry for being a dreamer; someone who, for some fucked up reason, thinks that the world could be more than it is. A scary thing may be that I believe in text-book socalisim (a dream that can never be realized) and dream of world peace. No, I'm no tree-hugging flower child, but I wouldn't mind a bit of peace now and then.
I do tech-support. I do it because it makes me happy and makes me feel like I contribute something. Too bad most people seem to be stuck in that "take-take", "me-me," mode. Bah, but I don't let them get to me.
Freedom exists in your mind; you just have to know where to look.
bah... whatever... enough happy shit for one day.
We write our own... (Score:1)
The coding is done in C, and I don't think I've ever spent as much time in a programming class or learned more about software engineering in a semester.
University of Waterloo Computer Engineering (Score:1)
Instead, the project is to design (from scratch, including a design document) and implement a real-time operating system on an embedded system (currently Motorola [motorola.ca] Coldfires [mot-sps.com]).
One should note that QNX [qnx.com] came out of the UW CS real-time course, not the OS course.
Re:M.I.T (Score:1)
Re:University of Washington OS (Score:1)
I just had to point out how ridiculous it is that the Linux Operating Systems course website was created in Microsoft Frontpage.
I hate our CS department. So Microsoft-ish. Bleh.
*sigh*
Re:Can you imagine... (Score:1)
Our class worked on modifiying NACHOS.
The current class is working on modifying Linux.
Re:Nachos (Score:1)
Spoonz
Lehigh University OS Class (Score:1)
Linux
Win32 (NT/98)
Minix
For filesystem calls Minix. Linux make a good study, but difficult for assignments. MS does not seem to share its code for study. We used win32 and Linux to learn networking calls (a few people used Solaris instead of Linux, left about 20 hung processes on our main Solaris server).
Re:XINU (Score:1)
there is also tcp/ip stuff for it, and i understand a networking course uses xinu for that... not sure exactly.
the copyright is 1988, but its still in print.
Re:Carnegie Mellon University (Score:1)
--------------------------
Re:Minix (Score:1)
Why have popcorn when you can eat NACHOS (Score:1)
Not Another Completely Heuristic Operating System (N.A.C.H.O.S.) was our OS training ground at USC. From the memory that I haven't repressed, it was a big steaming pile of stuff distributed by Berkely as a learning OS.
Not much fun.
Mach is used (Score:1)
Re:Modula-2? Yuk. (Score:1)
Obviously, I didn't buy the book, and get a better Modern Operating Systems, by Tanenbaum. The book was about 8 years older, but still covered 90% of the course content.
Sometimes you just can't beat the oldies, like Tanenbaum or Stevens... ahh...
Re:(OT) What campus? (Score:1)
University of Melbourne - Australia (Score:1)
For my final year project we worked with RT-Linux (in 1998, when it was just shaping up). We basically replaced a RTOS called UNOS (developed by University of New South Wales) with RT-Linux. I think UNOS is dead now (or very limited use)
But again I was an undergrad, so may be post grads do muck with the real thing.
LinuxLover
Re:OSP is used at EIVD (Score:1)
I'm not sure if it's still used, but when I took Operating Systems (CSC 370) at UNLV [unlv.edu], OSP was the framework within which we wrote a memory manager and a process scheduler. As I recall, documentation for OSP was a thin staple-bound book in a dark blue cover; it couldn't have been much more than 50 or 60 pages. Since I took this course back in '92 or '93, it's definitely a fairly old product by now. I don't know if there ever would've been a website associated with it as almost nobody had heard of the Web or was using it in any serious way at the time.
Re:Nachos (Score:1)
It's certainly not a microkernel though. It's a monolithic kernel running on a MIPS emulator that doesn't have any real device driver system. Granted device drivers aren't really worth teaching in an OS internals class.
Re:Carnegie Mellon University (Score:1)
Clarkson University (Score:1)
old skool.
Dont forget about L4 and Mach. (Score:1)
http://www.cse.unsw.edu.au/~cs9242/intro/intro.ht
The textbook that the University of Colorado has a good deal of information about the Mach microkernel (orginally derived from BSD), (although most implementations of Mach are somewhat old and/or abandoned). Mach had its hayday a few (like 8 or more) years ago (with Digital's OSF/1 and the NextSTEP system using the Mach2.5 implementation), but is currently pretty obsolete. The Hurd uses the GnuMach implementation (based on Mach3, i think), but is moving toward a better microkernel abstraction and to the L4 microkernel specifically.
There is a small OS that was build on top of the L4Ka implementation for a class project, called ChacmOS, and the authors graciously GPL'd the source. This is a wonderful source of information regarding the L4:
http://www.l4ka.org/projects/ChacmOS/ [l4ka.org]
And a page dedicated to L4:
http://www.cse.unsw.edu.au/~disy/L4/ [unsw.edu.au]
Once again... (Score:1)
Re:Jing? EXTREMELY OFF TOPIC (Score:1)
Email me at slowping@yahoo.com.
Re:CalPoly SLO (Score:1)
As a first timer, I learned a lot working at such a simple low level with a simulator I could modify and beat heck out of.
CalPoly SLO (Score:1)
Cal Poly SLO [calpoly.edu]'s CSC [calpoly.edu] department uses the 2.0 Linux kernel for our OS classes.
Why use 2.0 and not something bleeding edge? Documentation and commentaries are more available for the 2.0 series. We used David A Rusling's The Linux Kernel [calpoly.edu] online book, Linux Kernel Internals [fatbrain.com] edited by Michael Beck and Tanenbaum's Modern Operating Systems [fatbrain.com].
Re:Nachos (Score:1)
Re:Nachos (Score:1)
Virginia Tech (Score:1)
The interested reader is referred to our project list [vt.edu]
OSP is used at EIVD (Score:1)
CU.
Zeiram
at RIT we write our own. (Score:1)
pretty cool really, the first 3 weeks of the class are a team effort led by the prof to get a basic kernel up with threads and a serial port driver(no easy thing on SGI hardware, it's pretty fscked up)
then the rest of the class was spent in 3 person teams hacking 24/7 to add features (no porting of existing stuff from linux, had to be ground up)
we added dynamic memory, a VFS, a GUI, and attempted a scsi driver, but a wonky scsi floppy drive stopped that.
at least that was what they did when I was there.
I heard that some cheese head was trying to make them start using nachos..
Lego (Score:1)
For the Advanced Operating Systems course and Distributed Systems course at Saint Mary's University [stmarys.ca] in Nova Scotia (Can.), we used a custom kernel called Lego. Unfortunately, it has nothing to do with the toy -- it is based on the fact that it is a microkernel with modularity similar to Lego building blocks (insert/reuse/replace).
For more information, you can see Dr. Hughes' work (and students') on Lego here [www.dal.ca].Re:University of Queensland (Score:1)
I just finished an embedded systems subject that used uCOS/ii, a little RTOS, to make a network "phone".
--zaugg
University of Waterloo & QNX (Score:1)
Re:Minix (Score:1)
Re:Columbia uses Linux (Score:1)
Re:Modula-2? Yuk. (Score:1)
In Waterloo, our first year CS courses used to be in Pascal when I took it. Now they're in Java. Onto the second year stuffs - used to be Modula-3 only. Now people can choose to work on M-3 or Java (M-3 is superior language-wise, thus more suitable for teaching). 3rd-4th year courses use C, C++, Java, Scheme, Tcl...and, in some courses you are free to choose your tools. Perl, Python, Matlab, Ruby aren't uncommon.
What if 6 years from now C++ isn't the tool of choice anymore? People using a variety of tools tend to switch faster. And, C++ is not a good OO language -
And Java? Hm...I haven't seen a fast and stable JVM yet. There aren't many good native Java compilers either. And we're talking about microkernels here...do you think Java is the right tool for an OS kernel, before a good native compiler exists?
Well, everything said, you've made your own choice. So all the best with it.
Georgia Tech.... (Score:1)
UWaterloo Computer Eng (Score:1)
It's the project component [uwaterloo.ca] in this RTOS (Real Time OS) course. The hardware is the Motorola Coldfire board, interfaced to a PC or to a remote linux server (to compile on sparc, dl to Coldfire remotely - the prefered method). We write it all in C (and a small requisite amount of assembler for manipulating the stack).
We got knee deep in the stuff real quick. Working in groups of four (God help those with only 3 members - there were 4 project courses that term!), our group managed to do all the writing, testing, and demoing in 7 days of near around-the-clock group work. We basically went home only to shower during the coding. *Sigh* probably all Comp Eng's get wistful thinking of that course (or have near mental breakdowns).
Anyhow, we had to demonstrate working timer functions, interrupts, serial ports, scheduler, memory management, etc. The kernel was given to us as a skeleton, we put the guts into it.... some groups even wrote a game.
Re:Carnegie Mellon University (Score:1)
What are all these fancy OSes? (Score:1)
The best OS class will simply tell us how SJF or RR scheduling works... no code really...
Peace out.
Good, very small OS... (Score:1)
Just wondering...
The GNU HURD would be good. (Score:2)
Plus it's Mach-based, and thus gets the "trendy" sticker on it for using a microkernel! Woohoo!
OS Programming (Score:2)
The first one (CSC202) is basically threads and stuff. Maybe you'll get to modify a fake scheduler; woo hoo.
The one I just took (CSC451) is pretty cool. Everything we did was usermode, but still... The course is taught in C. We wrote a typical utility (sortuniq -- roughly equivalent to 'sort | uniq -c', but as one command; I just used a binary tree), a simple file system ("MiniMinix"; it's the Minix filesystem with stuff taken out), a shell (implements pipes and redirection, but no other real metacharacters or built-ins) and a tftp client-server (that should work with real tftp; the server is threaded).
The next class, CSC452, is being discontinued in favor of CSC492, I think. This basically gets students working on projects with industry. However, I don't know what kinds of OS projects we're going to find; it should be interesting...
---
pb Reply or e-mail; don't vaguely moderate [ncsu.edu].
Re:OSP is used at EIVD (Score:2)
Based on existing code? Bah! (Score:2)
The kernel is actually fairly similar to Linux (or any UNIX for that matter). It used to be a C++ object-oriented microkernel, but obviously that was changed. (I think it was because of student interest, actually)
Admittedly, about all it does is boot and run programs on a System V filesystem with simple virtual memory (no swap even, unless you do extra credit), but it's still a pretty cool project
Daniel
Yeah, I agree... (Score:2)
Minix (Score:2)
Re:BSD (Score:2)
Why? Just because they created it doesn't mean they're stuck with it. If it wasn't for Berkeley, we wouldn't really have Unix either, it'd still be a buggy stripped down bastardized commercial OS
--
Re:Modula-2? Yuk. (Score:2)
>written in Modula-2?
Technically I don't know of any microkernels written in M-2, but the AS400 operating system is written Modula-2. It might not be anymore, but it was originally. I know because I interviewed with IBM Rochester in 1988 and that's what they were doing. The AS/400 was new back then and they were selling like hotcakes. I had Modula-2 experience so that's why they considered me.
Re:Modula-2? Yuk. (Score:2)
Re:Modula-2? Yuk. (Score:2)
When I went to university, the first CS class was Pascal. That was a primo decision on their part. I learned how to program instead of how to fiddle with syntax. Today, Pascal would still be a good choice for CS101, but I would also add Java and Python. After that, the next class was assember (PDP-8).
Then, to our horror of horrors, we were thrust into "real" programming. "This is Unix, this is C, you know nothing of them, but the first assignment is due this friday". It was rough those first five days, but since we were firmly grounded in programming as opposed to syntax, we made the transition with flying colors.
Re:Carnegie Mellon University (Score:2)
I hope Satya still runs it at CMU. He is truely the best of the best, a brilliant OS expert and among the best professors I've ever worked with, he can take difficult concepts and make them into very easy to understand ones and do it completely and in a nearly poetic way. If you can take his course, take it. Anyhow, when I did yalnix they gave you a virtual machine and told you how to compile code for it and that was it. I believe we did 5 projects, 1) was the standard freeby, had to debug a multithreaded queue application. 2) was a serial terminal driver, only difficult if you didn't know how it was supposed to work and had to grapple with understand that as well as writing the code. 3) Was where it hit the fan, we implemented the kernel here, 5 or 6 weeks, we implemented the syscalls, the scheduler, and the memory managment. 4) Kind of a lob, you made yalnix run arbitrary ELF-sparc code, I don't remember if this was intended to be a project of if they did some resheduling and gave us another freeby because of the difficulty of the first. This project essentially meant adding a few syscalls and pluging in some ELF code that they gave us. 5) we implemented the yalnixfs, this was a (bitch**bitch) yalnix wasn't multithreaded so we needed to invent a technique for dealing with it (lot's of goto's and a state tracker) Part 3 was the scariest and part 5 was the hardest. At the end Juan Leon, the TA that year, was talking about figuring out ways to reduce the pain/knowledge gained ratio, he thought it was way too hard for what we learned. It was one of the few projects at CMU I was really proud of, I always learned stuff in classes but that class kicked my ass at times and I was very happy to do as well as I did and I felt like I learned a lot.
I think Nachos and Minix are potentially harder projects, the class I did Nachos with had it pretty easy. Minix works on real hardware and the development cycle and tool chain can be a problem as well as just understanding your hardware, I know sparc and alpha well but I'm not an x86 guru and it's not the most logical architecture, there are lot's of special rules that you only learn from experience. It may be bias but I think yalnix was the best one of the three, CMU made it very hard but it was doable and you really learned the concepts by implementing them. Further, the OS class at CMU is the best I have seen. Again, my hat is off to Satya and Leon, I think the class was a good balance between real world implementation and concept; Satya pretty much taught the state of the art concepts in lecture even though the Yalnix OS is very primitive in a lot of ways. I think the OS class in general is a difficult one, they could give you Linux and ask you to screw around with various components, that could be incredibly easy or incredibly difficult. They could give you most of a kernel and ask you to implement a few syscalls and change the MM stuff. They could give you disk space and an editor and make you do the whole thing. Dialing in a good pain/signal ratio is hard. I would expect CMU to possibly make it easier, the general theme when I was there was that the school promoted a geek and hacker culture and not enough of an entrepreneural one and that there were 3 girls in SCS and 200+ guys and that wasn't right. (there were more female professors in SCS than students) The compiler class was similar, both OS and compiler pretty much took a semester of my undivided attention to get A's.
XINU (Score:2)
The size and simplicity makes it possible for a student to understand it in a single term course, so I can understand why they went with a non-real life os like xinu vs BSD or Linux.
University of Washington OS (Score:2)
Check out some of the funky pictures of penguins. ;)
http://www.cs.washington.edu/451 [washington.edu]
Re:Modula-2? Yuk. (Score:2)
Let's try this question: Would you be able to kick the ass of your present self if you went thru a full CS curriculum?
Columbia uses Linux (Score:2)
Re:Brown University (Score:2)
U. Illinois(UC) & Col. William and Mary (Score:2)
NACHOS provides basically everything you need to do a meaningful OS academic implementation. And its writen in C++ (with a hair of assembly), whose features make it easier to write the OS in than plain old C. NACHOS runs on top of the SPIM simulator (which simulates the MIPS instruction set), so you can run NACHOS on linux or unix w/o having to recompile your programs which run under NACHOS.
Georgia Tech (Score:2)
Of course, the school didn't want us messing up the kernels on computers in the school labs for our tinkering... but Compaq Research Labs was kind enough to loan out some single-board computers that they've been developing (in exchange for free 'field testing').
The operating system being used for these computers? Linux, in Debian flavor. I'm no Linux expert, I've yet to have a Linux machine of my own (though when I've got money enough for a New System, it will be Linux), but I was glad to learn the ins and outs of Linux in this class.
---
Re:Linux lab at Worcester Polytechnic Institute (Score:2)
If instead you modified an OS and ran it in a virtual machine, the OS dying in the virtual machine wouldn't need to be fully-rebooted - you just restore the image, patch in the new kernel, and try again. You'd still have to boot, but you'd gain the ability to debug the kernel in the virtual machine with better control than attempting to debug the kernel while running it on the actual machine (which mostly consisted of printk statements to the kernel log). The first assignment was a killer because messing up the scheduler basically meant a reboot followed by a fsck.
Although it was definately cool to learn about the differences between Linux and other OSes and why the Linux scheduler sucks and the Windows one does too but in different ways. (Linux could use preemptive multitasking, where a process that should have the CPU gets it as soon as possible, while Windows needs some work to prevent it from starving processes.) It also gave me a new appreciation for kernel modules and just how cool that technology was. (So, is Linux really a monolithic kernel? The kernel modules put it into this nice limbo between monolithic and micro.)
Modula-2? Yuk. (Score:2)
I hate how CS programs force pinko, academic tools like Modula-2 onto students. This is the reason that I took a quickie little 2-year college program instead of a full CS degree. Even then, I ended up with 3 or 4 classes that were based on Modula-2 (on VMS, just for more fun).
I realize that Modula-2 is a great teaching languge, but c'mon -- how many commercial-grade microkernels out there are written in Modula-2?
UWaterloo CS452: Write your our own microkernel (Score:2)
We start with some basic tools (a loader, C (or C++) compiler, some printf code and a frame-buffer driver. Then we write a message-passing real-time kernel. The kernel does very little - actually only starts a couple of initial processes, passes messages between processes and provides an interface to interrupts. Everything else is performed in a separate process. During the course, this kernel is developed and then each group (of 1 or 2 memebers) also has to write a system to control a train set or a robot. The real-time program is more work than the kernel creation, but every group ends up with a working nanokernel in about 5 or 6 weeks.
Each group is given alot of freedom to do what they would like, with only some basic guidelines to follow. The kernel must be message-passing and it must support real-time operation. By real-time, this means the scheduler is predicatable. The system setup loaded the kernel and programs into RAM directly so disk I/O was avoided. There is a serial terminal attached to a PC and the PC had a frame-buffer. Part of the requirements of the final project were to use the frame-buffer to display some graphics relating to the real-time actions being controlled (position of trains on the track showning movement for example).
Re:Can you imagine... (Score:2)
Hello? (Score:2)
"I realize that Modula-2 is a great teaching language, but... I hate how CS programs force pinko, academic tools like Modula-2 onto students."
Regardless of your contradiction, a full CS degree should be teaching language *independent* stuff, for the most part, such that it is irrelevant that "pinko, academic" tools are forced onto you.
With a decent grounding in predicate calculus, semaphores, locks, synchronization, threads, etc... you can forget Modula2 the minute class is over, and still be doing cool things.
To rephrase, the class should be teaching you things at a level abstract from reality. You should be able to grab, say, C++ from a *one* term class at a local college, or if you're really masochistic, out of one of those 21 day books ^^
Geek dating! [bunnyhop.com]
uCOS (Score:3)
Back in 1993-1994 at the University of South Alabama, we used uCOS. You can see more about it here [ucos-ii.com]. It's a very small RTOS kernel -- small enough and well enough documented that you can actually master the whole thing in a short while. It (or at least the version available back then) isn't a world-class OS, but it's excellent for a hands-on introduction to the internals of IPC, scheduling, etc.
Linux is an excellent learning tool as well, and some of us at USA used it in projects in later courses, but its very complete feature set, size and complexity, and not-always-clear documentation makes it a bit challenging for novices. Sometimes smaller is better...
Re:Carnegie Mellon University (Score:3)
Re:Carnegie Mellon is great... (Score:3)
Look, I knew a couple of guys (one CS, one Mech E) that transferred from my school (Rice) to MIT. They both said their workloads dropped considerably, while their grades rose. They were very aware of the fact that they weren't getting the same education that they were getting at Rice. But, MIT has the name.
And one thing I've realized since I've graduated. There are only two other schools I've come across where the grads are as competent as my peers at Rice (truth be told, most of us Rice guys are complete goons socially, though). One is CMU. The other is Harvey Mudd College.
Just my $.02
Re:Columbia uses Linux (Score:3)
Writing new system calls, device drivers, schedulers... Mention to an interviewer that you know how to do this and they drool.
Great investment for VMWare, too - they give free licenses to the class, and in return, 150 VMWare-loving kids a year are pumped out and into influential software development positions.
--
At Rice, we built the whole thing. (Score:3)
We also had to write a few sample apps to work in it, and I think we were given some apps as well that had to run within our system. It may also have had to integrate with the multiuser file system we had to build earlier in the semester, but I can't say for sure if that is true.
Though a lot of work, that was one of my favorite clases ever. Later on for a grad class we were to use the Mach kernel for some research, but that fell through and I never did get to do the project.
Linux lab at Worcester Polytechnic Institute (Score:3)
Re:Linux lab at Worcester Polytechnic Institute (Score:3)
Nachos (Score:3)
Nice things: it is microkernel based (unlike Linux), and it is written in an OO language.
Bad things: the OO language is C++.
Re:Carnegie Mellon University (Score:3)
The course involves 4 projects: You write a shell that runs on Solaris, then you write a terminal driver, a kernel, and a filesystem for the kernel, all of which runs on a virtual machine that you link as a library to the executable. I'm assuming this is what the original poster meant by "codebase", because you get nothing beyond the
hardware and prototypes for functions to interface
with the hardware.
The course is a *lot* of work, but it is definately worth it. I doubt I'd understand filesystems and kernels as well if I hadn't had to write them from the ground up
Re:At UNB we use Linux of Course! (Score:3)
Our instructor wrote ours (Score:3)
http://www.cse.ucsc.edu/~elm
Anyway, the obvious plus was that the instructor could answer any questions you needed answered about it. The minus was that it was still a bit buggy, and a bug in the custom gcc compiler about stove in our heads on one of the assignments. We implemented monitors, traps for input and output to a user program, a keyboard buffer, a shell, 2-level page tables, virtual memory, and a custom filesystem. The preexisting code wasn't always as self-explanatory or well-commented as it could have been, but it was nice to be actually writing this stuff and not just plugging the holes like we would have been in NACHOS. And it was in C, whiche we were plenty comfortable with.
Your Lectures Must Be Amazing! (Score:3)
So what software do you use (Powerpoint?) to create your lectures that gives them the capability and AI features to create kernels and microkernels? Please reply with the link
______________________________
Eric Krout
Re:Columbia uses Linux (Score:3)
Let me add to this posting. I was in the same class, but I took it last year when it was first offered in this style (Columbia used to use Nachos for the OS class). As was said, we used Linux in virtual machines (VMware). The VMware itself runs on Linux. One good thing about this is more than one groups can use the same machine; you just have to create VMware disk for each group. There is an article [ddj.com] about the class at DDJ [ddj.com]. I found this approach very good, because you don't crash machines when something goes wrong in the kernel. You just crash the VMs, and this won't affect other people doing other unrelated things on the machines running the VMs (good utilization of resources).
Even worse... (Score:3)
Microsoft releases SP2 for Windows98 SE as part of IE5.01 release
Geek dating! [bunnyhop.com]
Re:Carnegie Mellon University (Score:5)
The codebase is only really
- Standard Solaris functions for manipulating process contexts. Solaris is a great environment for all this, since everything is provided for you
- Special memory tricks. Rather than deal with the real SPARC pagetable structure, their support library uses a memory mapped file (mapped based on a simple 1-level page table provided by the kernel we write). This makes writing the paging code much easier.
- Signal handlers for things like SIGSEGV and all, as well as a timer that goes off. These are translated by the support library into kernel traps (which we write). So when a user program gets a SEGV for a memory access somewhere in the memmapped file, we change the page table some, the support library remaps things approrpriately, and we continue running. The timer is much slower than a real OS's timer, so a process's timeslice is slow enough a human can watch it go by (maybe 1/2 second or so).
So yeah. For all you people who thought you were doing everything, there really was a support library behind the curtain pulling the wool over your eyes. Norm and I cought the little man in there a couple of times doing funky things a couple of times (ever notice how you never have to worry about page table addresses when you switch from realmode to virtual memory? in theory you should have to be very careful to keep your page table from, say, falling across a physical page boundry when you allocate it with VM enabled. the support library ignores such details
Basically this ends up giving us a real kernel that's very very close to the Sun hardware. I actually asked Greg (professor this semester) why they didn't use Nachos. The answer had to do with the oversimplifications Nachos makes. Yalnix is a much more complete environment.
Actually, Greg says he's planning on redoing project 3 for next semester. He wants to take DR-DOS (or possible his own little minimalist DOS-like OS. This project would be on Intel intead of Sun hardware) and replace interrupt handlers one by one until you have UNIX. Since the DOS disk stuff would still be in place, he could then add demand paging to the project. He said this was the Clemson graduate OS project. For CMU undergrads, he'd write the asm utility functions, and also we'd have the advantage of VMWare or Plex86 (so when we crash ourselves all is not lost; this is a major advantage of Yalnix -- when you crash the OS, you get a core dump). The cool thing would be, when you were done, you could boot your OS for real on the hardware.
A note to people who aren't familiar with the CMU OS course: it's considered the hardest undergrad CS course (18 units, that's 6 credits). The last two projects are a month long each, easily 30-50 hours a week in the cluster. But when you're done and can say to recruiters, "Yeah I've taken OS and I got an A" they offer to hire you on the spot.
Ok, enough wasted time. I need to go back to my filesystem (project 4, due Friday at midnight. eep!)
Can you imagine... (Score:5)
"Today class, our good friend Mr. Gates has given us some of the Windows 98 SE kernel to use as an example. We're to modify this fine example of coding and add some new features to it."
(A horrifying silence ensues)
(After a long two minutes, one of the students, Craig, raises his hand.)
"Yes, Craig?"
(Craig clears his throat, and tries to speak as slowly and clearly as possible)
"Sir, um, did we do something wrong to deserve this?"
Carnegie Mellon University (Score:5)